Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. ;@ Reesy's Z80 Emulator Version 0.001
  2.  
  3. ;@ (c) Copyright 2004 Reesy, All rights reserved
  4. ;@ DrZ80 is free for non-commercial use.
  5.  
  6. ;@ For commercial use, separate licencing terms must be obtained.
  7.  
  8.       .data
  9.       .align 4
  10.  
  11.       .global DrZ80Run
  12.       .global DrZ80Ver
  13.  
  14.       .equiv INTERRUPT_MODE,        0   ;@0 = Use internal int handler, 1 = Use Mames int handler
  15.       .equiv FAST_Z80SP,            1   ;@0 = Use mem functions for stack pointer, 1 = Use direct mem pointer
  16.       .equiv UPDATE_CONTEXT,        1
  17.       .equiv DRZ80_FOR_PICODRIVE,   0
  18.  
  19. .if INTERRUPT_MODE
  20.       .extern Interrupt
  21. .endif
  22.  
  23. .if DRZ80_FOR_PICODRIVE
  24.       .extern PicoRead8
  25.       .extern Pico
  26.       .extern z80_write
  27.       .extern ym2612_st
  28. .endif
  29.  
  30. DrZ80Ver: .long 0x0001
  31.  
  32. ;@ --------------------------- Defines ----------------------------
  33. ;@ Make sure that regs/pointers for z80pc to z80sp match up!
  34.  
  35.         opcodes    .req r3
  36.         z80_icount .req r4
  37.         cpucontext .req r5
  38.         z80pc      .req r6
  39.         z80a       .req r7
  40.         z80f       .req r8
  41.         z80bc      .req r9
  42.         z80de      .req r10
  43.         z80hl      .req r11
  44.         z80sp      .req r12    
  45.         z80xx      .req lr
  46.  
  47.         .equ z80pc_pointer,           0                  ;@  0
  48.         .equ z80a_pointer,            z80pc_pointer+4    ;@  4
  49.         .equ z80f_pointer,            z80a_pointer+4     ;@  8
  50.         .equ z80bc_pointer,           z80f_pointer+4     ;@  
  51.         .equ z80de_pointer,           z80bc_pointer+4
  52.         .equ z80hl_pointer,           z80de_pointer+4
  53.         .equ z80sp_pointer,           z80hl_pointer+4
  54.         .equ z80pc_base,              z80sp_pointer+4
  55.         .equ z80sp_base,              z80pc_base+4
  56.         .equ z80ix,                   z80sp_base+4
  57.         .equ z80iy,                   z80ix+4
  58.         .equ z80i,                    z80iy+4
  59.         .equ z80a2,                   z80i+4
  60.         .equ z80f2,                   z80a2+4
  61.         .equ z80bc2,                  z80f2+4
  62.         .equ z80de2,                  z80bc2+4
  63.         .equ z80hl2,                  z80de2+4
  64.         .equ cycles_pointer,          z80hl2+4    
  65.         .equ previouspc,              cycles_pointer+4    
  66.         .equ z80irq,                  previouspc+4
  67.         .equ z80if,                   z80irq+1
  68.         .equ z80im,                   z80if+1
  69.         .equ z80r,                    z80im+1
  70.         .equ z80irqvector,            z80r+1
  71.         .equ z80irqcallback,          z80irqvector+4
  72.         .equ z80_write8,              z80irqcallback+4
  73.         .equ z80_write16,             z80_write8+4
  74.         .equ z80_in,                  z80_write16+4
  75.         .equ z80_out,                 z80_in+4
  76.         .equ z80_read8,               z80_out+4
  77.         .equ z80_read16,              z80_read8+4
  78.         .equ z80_rebaseSP,            z80_read16+4
  79.         .equ z80_rebasePC,            z80_rebaseSP+4
  80.  
  81.         .equ VFlag, 0
  82.         .equ CFlag, 1
  83.         .equ ZFlag, 2
  84.         .equ SFlag, 3
  85.         .equ HFlag, 4
  86.         .equ NFlag, 5
  87.         .equ Flag3, 6
  88.         .equ Flag5, 7
  89.  
  90.         .equ Z80_CFlag, 0
  91.         .equ Z80_NFlag, 1
  92.         .equ Z80_VFlag, 2
  93.         .equ Z80_Flag3, 3
  94.         .equ Z80_HFlag, 4
  95.         .equ Z80_Flag5, 5
  96.         .equ Z80_ZFlag, 6
  97.         .equ Z80_SFlag, 7
  98.  
  99.         .equ Z80_IF1, 1<<0
  100.         .equ Z80_IF2, 1<<1
  101.         .equ Z80_HALT, 1<<2
  102.  
  103. ;@---------------------------------------
  104.  
  105. .text
  106.  
  107. .if DRZ80_FOR_PICODRIVE
  108.  
  109. .macro YM2612Read_and_ret8
  110.     ldr r0, =ym2612_st
  111.     ldr r0, [r0]
  112.     ldrb r0, [r0, #0x11]   ;@ ym2612_st->status
  113.     bx lr
  114. .endm
  115.  
  116. .macro YM2612Read_and_ret16
  117.     ldr r0, =ym2612_st
  118.     ldr r0, [r0]
  119.     ldrb r0, [r0, #0x11]   ;@ ym2612_st->status
  120.     orr r0,r0,r0,lsl #8
  121.     bx lr
  122. .endm
  123.  
  124. pico_z80_read8: @ addr
  125.     cmp r0,#0x2000         @ Z80 RAM
  126.     ldrlt r1,[cpucontext,#z80sp_base]
  127.     ldrltb r0,[r1,r0]
  128.     bxlt lr
  129.  
  130.     cmp r0,#0x8000         @ 68k bank
  131.     blt 1f
  132.     ldr r2,=(Pico+0x22212)
  133.     ldrh r1,[r2]
  134.     bic r0,r0,#0x3f8000
  135.     orr r0,r0,r1,lsl #15
  136.     ldr r1,[r2,#-0xe]      @ ROM size
  137.     cmp r0,r1
  138.     ldrlt r1,[r2,#-0x12]   @ ROM
  139.     eorlt r0,r0,#1         @ our ROM is byteswapped
  140.     ldrltb r0,[r1,r0]
  141.     bxlt lr
  142.         stmfd sp!,{r3,r12,lr}
  143.     bl PicoRead8
  144.         ldmfd sp!,{r3,r12,pc}
  145. 1:
  146.     mov r1,r0,lsr #13
  147.     cmp r1,#2              @ YM2612 (0x4000-0x5fff)
  148.     bne 0f
  149.     and r0,r0,#3
  150.     YM2612Read_and_ret8
  151. 0:
  152.     cmp r0,#0x4000
  153.     movge r0,#0xff
  154.     bxge lr
  155.     ldr r1,[cpucontext,#z80sp_base]
  156.     bic r0,r0,#0x0fe000    @ Z80 RAM (mirror)
  157.     ldrb r0,[r1,r0]
  158.     bx lr
  159.  
  160. pico_z80_read16: @ addr
  161.     cmp r0,#0x2000         @ Z80 RAM
  162.     bge 2f
  163.     ldr r1,[cpucontext,#z80sp_base]
  164.     ldrb r0,[r1,r0]!
  165.     ldrb r1,[r1,#1]
  166.     orr r0,r0,r1,lsl #8
  167.     bx lr
  168.  
  169. 2:
  170.     cmp r0,#0x8000         @ 68k bank
  171.     blt 1f
  172.     ldr r2,=(Pico+0x22212)
  173.     ldrh r1,[r2]
  174.     bic r0,r0,#0x1f8000
  175.     orr r0,r0,r1,lsl #15
  176.     ldr r1,[r2,#-0xe]      @ ROM size
  177.     cmp r0,r1
  178.     ldr r1,[r2,#-0x12]     @ ROM
  179.     tst r0,#1
  180.     eor r0,r0,#1
  181.     ldrb r0,[r1,r0]!
  182.     ldreqb r1,[r1,#-1]
  183.     ldrneb r1,[r1,#3]      @ this is due to byteswapped ROM
  184.     orr r0,r0,r1,lsl #8
  185.     bx lr
  186. 3:
  187.     stmfd sp!,{r3-r5,r12,lr}
  188.     mov r4,r0
  189.     bl PicoRead8
  190.     mov r5,r0
  191.     add r0,r4,#1
  192.     bl PicoRead8
  193.     orr r0,r5,r0,lsl #8
  194.     ldmfd sp!,{r3-r5,r12,pc}
  195. 1:
  196.     mov r1,r0,lsr #13
  197.     cmp r1,#2              @ YM2612 (0x4000-0x5fff)
  198.     bne 0f
  199.     and r0,r0,#3
  200.     YM2612Read_and_ret16
  201. 0:
  202.     cmp r0,#0x4000
  203.     movge r0,#0xff
  204.     bxge lr
  205.     ldr r1,[cpucontext,#z80sp_base]
  206.     bic r0,r0,#0x0fe000    @ Z80 RAM (mirror)
  207.     ldrb r0,[r1,r0]!
  208.     ldrb r1,[r1,#1]
  209.     orr r0,r0,r1,lsl #8
  210.     bx lr
  211.  
  212. pico_z80_write8: @ data, addr
  213.     cmp r1,#0x4000
  214.     bge 1f
  215.     ldr r2,[cpucontext,#z80sp_base]
  216.     bic r1,r1,#0x0fe000    @ Z80 RAM
  217.     strb r0,[r2,r1]
  218.     bx lr
  219. 1:
  220.     stmfd sp!,{r3,r12,lr}
  221.     bl z80_write
  222.     ldmfd sp!,{r3,r12,pc}
  223.  
  224. pico_z80_write16: @ data, addr
  225.     cmp r1,#0x4000
  226.     bge 1f
  227.     ldr r2,[cpucontext,#z80sp_base]
  228.     bic r1,r1,#0x0fe000    @ Z80 RAM
  229.     strb r0,[r2,r1]!
  230.     mov r0,r0,lsr #8
  231.     strb r0,[r2,#1]
  232.     bx lr
  233. 1:
  234.         stmfd sp!,{r3-r5,r12,lr}
  235.     mov r4,r0
  236.     mov r5,r1
  237.         bl z80_write
  238.     mov r0,r4,lsr #8
  239.     add r1,r5,#1
  240.         bl z80_write
  241.         ldmfd sp!,{r3-r5,r12,pc}
  242.  
  243.     .pool
  244. .endif
  245.  
  246. .macro fetch cycs
  247.         subs z80_icount,z80_icount,#\cycs
  248. .if UPDATE_CONTEXT
  249.     str z80pc,[cpucontext,#z80pc_pointer]
  250.         str z80_icount,[cpucontext,#cycles_pointer]
  251.         ldr r1,[cpucontext,#z80pc_base]
  252.         sub r2,z80pc,r1
  253.         str r2,[cpucontext,#previouspc]
  254. .endif
  255.         ldrplb r0,[z80pc],#1
  256.         ldrpl pc,[opcodes,r0, lsl #2]
  257.         bmi z80_execute_end
  258. .endm
  259.  
  260. .macro eatcycles cycs
  261.         sub z80_icount,z80_icount,#\cycs
  262. .if UPDATE_CONTEXT
  263.         str z80_icount,[cpucontext,#cycles_pointer]
  264. .endif
  265. .endm
  266.  
  267. .macro readmem8
  268. .if UPDATE_CONTEXT
  269.     str z80pc,[cpucontext,#z80pc_pointer]
  270. .endif
  271. .if DRZ80_FOR_PICODRIVE
  272.     bl pico_z80_read8
  273. .else
  274.     stmfd sp!,{r3,r12}
  275.         mov lr,pc
  276.         ldr pc,[cpucontext,#z80_read8]                  ;@ r0 = addr - data returned in r0
  277.         ldmfd sp!,{r3,r12}
  278. .endif
  279. .endm
  280.  
  281. .macro readmem8HL
  282.         mov r0,z80hl, lsr #16
  283.         readmem8
  284. .endm
  285.  
  286. .macro readmem16
  287. .if UPDATE_CONTEXT
  288.      str z80pc,[cpucontext,#z80pc_pointer]
  289. .endif
  290. .if DRZ80_FOR_PICODRIVE
  291.     bl pico_z80_read16
  292. .else
  293.         stmfd sp!,{r3,r12}
  294.         mov lr,pc
  295.         ldr pc,[cpucontext,#z80_read16]
  296.         ldmfd sp!,{r3,r12}
  297. .endif
  298. .endm
  299.  
  300. .macro writemem8
  301. .if UPDATE_CONTEXT
  302.      str z80pc,[cpucontext,#z80pc_pointer]
  303. .endif
  304. .if DRZ80_FOR_PICODRIVE
  305.     bl pico_z80_write8
  306. .else
  307.         stmfd sp!,{r3,r12}
  308.         mov lr,pc
  309.         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr
  310.         ldmfd sp!,{r3,r12}
  311. .endif
  312. .endm
  313.  
  314. .macro writemem8DE
  315.         mov r1,z80de, lsr #16
  316.         writemem8
  317. .endm
  318.  
  319. .macro writemem8HL
  320.         mov r1,z80hl, lsr #16
  321.         writemem8
  322. .endm
  323.  
  324. .macro writemem16
  325. .if UPDATE_CONTEXT
  326.      str z80pc,[cpucontext,#z80pc_pointer]
  327. .endif
  328. .if DRZ80_FOR_PICODRIVE
  329.     bl pico_z80_write16
  330. .else
  331.         stmfd sp!,{r3,r12}
  332.         mov lr,pc
  333.         ldr pc,[cpucontext,#z80_write16]                ;@ r0=data r1=addr
  334.         ldmfd sp!,{r3,r12}
  335. .endif
  336. .endm
  337.  
  338. .macro copymem8HL_DE
  339. .if UPDATE_CONTEXT
  340.      str z80pc,[cpucontext,#z80pc_pointer]
  341. .endif
  342.         mov r0,z80hl, lsr #16
  343. .if DRZ80_FOR_PICODRIVE
  344.     bl pico_z80_read8
  345. .else
  346.     stmfd sp!,{r3,r12}
  347.         mov lr,pc
  348.         ldr pc,[cpucontext,#z80_read8]                  ;@ r0 = addr - data returned in r0
  349. .endif
  350. .if UPDATE_CONTEXT
  351.      str z80pc,[cpucontext,#z80pc_pointer]
  352. .endif
  353.         mov r1,z80de, lsr #16
  354. .if DRZ80_FOR_PICODRIVE
  355.     bl pico_z80_write8
  356. .else
  357.         mov lr,pc
  358.         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr
  359.         ldmfd sp!,{r3,r12}
  360. .endif
  361. .endm
  362. ;@---------------------------------------
  363.  
  364. .macro rebasepc
  365. .if UPDATE_CONTEXT
  366.      str z80pc,[cpucontext,#z80pc_pointer]
  367. .endif
  368. .if DRZ80_FOR_PICODRIVE
  369.     bic r0,r0,#0xfe000
  370.     ldr r1,[cpucontext,#z80pc_base]
  371.     add z80pc,r1,r0
  372. .else
  373.     stmfd sp!,{r3,r12}
  374.         mov lr,pc
  375.         ldr pc,[cpucontext,#z80_rebasePC]               ;@ r0=new pc - external function sets z80pc_base and returns new z80pc in r0
  376.         ldmfd sp!,{r3,r12}
  377.         mov z80pc,r0
  378. .endif
  379. .endm
  380.  
  381. .macro rebasesp
  382. .if UPDATE_CONTEXT
  383.      str z80pc,[cpucontext,#z80pc_pointer]
  384. .endif
  385. .if DRZ80_FOR_PICODRIVE
  386.     bic r0,r0,#0xfe000
  387.     ldr r1,[cpucontext,#z80sp_base]
  388.     add r0,r1,r0
  389. .else
  390.         stmfd sp!,{r3,r12}
  391.         mov lr,pc
  392.         ldr pc,[cpucontext,#z80_rebaseSP]               ;@ external function must rebase sp
  393.         ldmfd sp!,{r3,r12}
  394. .endif
  395. .endm
  396. ;@----------------------------------------------------------------------------
  397.  
  398. .macro opADC
  399.         movs z80f,z80f,lsr#2                                    ;@ get C
  400.         subcs r0,r0,#0x100
  401.         eor z80f,r0,z80a,lsr#24                                 ;@ prepare for check of half carry
  402.         adcs z80a,z80a,r0,ror#8
  403.         mrs r0,cpsr                                                             ;@ S,Z,V&C
  404.         eor z80f,z80f,z80a,lsr#24
  405.         and z80f,z80f,#1<<HFlag                                 ;@ H, correct
  406.         orr z80f,z80f,r0,lsr#28
  407. .endm
  408.  
  409. .macro opADCA
  410.         movs z80f,z80f,lsr#2                                    ;@ get C
  411.         orrcs z80a,z80a,#0x00800000
  412.         adds z80a,z80a,z80a
  413.         mrs z80f,cpsr                                                   ;@ S,Z,V&C
  414.         mov z80f,z80f,lsr#28
  415.         tst z80a,#0x10000000                                    ;@ H, correct
  416.         orrne z80f,z80f,#1<<HFlag
  417.         fetch 4
  418. .endm
  419.  
  420. .macro opADCH reg
  421.         mov r0,\reg,lsr#24
  422.         opADC
  423.         fetch 4
  424. .endm
  425.  
  426. .macro opADCL reg
  427.         movs z80f,z80f,lsr#2                                    ;@ get C
  428.         adc r0,\reg,\reg,lsr#15
  429.         orrcs z80a,z80a,#0x00800000
  430.         mov r1,z80a,lsl#4                                               ;@ Prepare for check of half carry
  431.         adds z80a,z80a,r0,lsl#23
  432.         mrs z80f,cpsr                                                   ;@ S,Z,V&C
  433.         mov z80f,z80f,lsr#28
  434.         cmn r1,r0,lsl#27
  435.         orrcs z80f,z80f,#1<<HFlag                               ;@ H, correct
  436.         fetch 4
  437. .endm
  438.  
  439. .macro opADCb
  440.         opADC
  441. .endm
  442. ;@---------------------------------------
  443.  
  444. .macro opADD reg shift
  445.         mov r1,z80a,lsl#4                                               ;@ Prepare for check of half carry
  446.         adds z80a,z80a,\reg,lsl#\shift
  447.         mrs z80f,cpsr                                                   ;@ S,Z,V&C
  448.         mov z80f,z80f,lsr#28
  449.         cmn r1,\reg,lsl#\shift+4
  450.         orrcs z80f,z80f,#1<<HFlag
  451. .endm
  452.  
  453. .macro opADDA
  454.         adds z80a,z80a,z80a
  455.         mrs z80f,cpsr                                                   ;@ S,Z,V&C
  456.         mov z80f,z80f,lsr#28
  457.         tst z80a,#0x10000000                                    ;@ H, correct
  458.         orrne z80f,z80f,#1<<HFlag
  459.         fetch 4
  460. .endm
  461.  
  462. .macro opADDH reg
  463.         and r0,\reg,#0xFF000000
  464.         opADD r0 0
  465.         fetch 4
  466. .endm
  467.  
  468. .macro opADDL reg
  469.         opADD \reg 8
  470.         fetch 4
  471. .endm
  472.  
  473. .macro opADDb
  474.         opADD r0 24
  475. .endm
  476. ;@---------------------------------------
  477.  
  478. .macro opADC16 reg
  479.         movs z80f,z80f,lsr#2                                    ;@ get C
  480.         adc r0,z80a,\reg,lsr#15
  481.         orrcs z80hl,z80hl,#0x00008000
  482.         mov r1,z80hl,lsl#4
  483.         adds z80hl,z80hl,r0,lsl#15
  484.         mrs z80f,cpsr                                                   ;@ S, Z, V & C
  485.         mov z80f,z80f,lsr#28
  486.         cmn r1,r0,lsl#19
  487.         orrcs z80f,z80f,#1<<HFlag
  488.         fetch 15
  489. .endm
  490.  
  491. .macro opADC16HL
  492.         movs z80f,z80f,lsr#2                                    ;@ get C
  493.         orrcs z80hl,z80hl,#0x00008000
  494.         adds z80hl,z80hl,z80hl
  495.         mrs z80f,cpsr                                                   ;@ S, Z, V & C
  496.         mov z80f,z80f,lsr#28
  497.         tst z80hl,#0x10000000                                   ;@ H, correct.
  498.         orrne z80f,z80f,#1<<HFlag
  499.         fetch 15
  500. .endm
  501.  
  502. .macro opADD16 reg1 reg2
  503.         mov r1,\reg1,lsl#4                                              ;@ Prepare for check of half carry
  504.         adds \reg1,\reg1,\reg2
  505.         bic z80f,z80f,#(1<<CFlag)|(1<<HFlag)|(1<<NFlag)
  506.         orrcs z80f,z80f,#1<<CFlag
  507.         cmn r1,\reg2,lsl#4
  508.         orrcs z80f,z80f,#1<<HFlag
  509. .endm
  510.  
  511. .macro opADD16s reg1 reg2 shift
  512.         mov r1,\reg1,lsl#4                                              ;@ Prepare for check of half carry
  513.         adds \reg1,\reg1,\reg2,lsl#\shift
  514.         bic z80f,z80f,#(1<<CFlag)|(1<<HFlag)|(1<<NFlag)
  515.         orrcs z80f,z80f,#1<<CFlag
  516.         cmn r1,\reg2,lsl#4+\shift
  517.         orrcs z80f,z80f,#1<<HFlag
  518. .endm
  519.  
  520. .macro opADD16_2 reg
  521.         adds \reg,\reg,\reg
  522.         bic z80f,z80f,#(1<<CFlag)|(1<<HFlag)|(1<<NFlag)
  523.         orrcs z80f,z80f,#1<<CFlag
  524.         tst \reg,#0x10000000                                    ;@ H, correct.
  525.         orrne z80f,z80f,#1<<HFlag
  526. .endm
  527. ;@---------------------------------------
  528.  
  529. .macro opAND reg shift
  530.         and z80a,z80a,\reg,lsl#\shift
  531.         sub r0,opcodes,#0x100
  532.         ldrb z80f,[r0,z80a, lsr #24]
  533.         orr z80f,z80f,#1<<HFlag
  534. .endm
  535.  
  536. .macro opANDA
  537.         sub r0,opcodes,#0x100
  538.         ldrb z80f,[r0,z80a, lsr #24]
  539.         orr z80f,z80f,#1<<HFlag
  540.         fetch 4
  541. .endm
  542.  
  543. .macro opANDH reg
  544.         opAND \reg 0
  545.         fetch 4
  546. .endm
  547.  
  548. .macro opANDL reg
  549.         opAND \reg 8
  550.         fetch 4
  551. .endm
  552.  
  553. .macro opANDb
  554.         opAND r0 24
  555. .endm
  556. ;@---------------------------------------
  557.  
  558. .macro opBITH reg bit
  559.         and z80f,z80f,#1<<CFlag
  560.         tst \reg,#1<<(24+\bit)
  561.         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)
  562.         orrne z80f,z80f,#(1<<HFlag)
  563.         fetch 8
  564. .endm
  565.  
  566. .macro opBIT7H reg
  567.         and z80f,z80f,#1<<CFlag
  568.         tst \reg,#1<<(24+7)
  569.         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)
  570.         orrne z80f,z80f,#(1<<HFlag)|(1<<SFlag)
  571.         fetch 8
  572. .endm
  573.  
  574. .macro opBITL reg bit
  575.         and z80f,z80f,#1<<CFlag
  576.         tst \reg,#1<<(16+\bit)
  577.         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)
  578.         orrne z80f,z80f,#(1<<HFlag)
  579.         fetch 8
  580. .endm
  581.  
  582. .macro opBIT7L reg
  583.         and z80f,z80f,#1<<CFlag
  584.         tst \reg,#1<<(16+7)
  585.         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)
  586.         orrne z80f,z80f,#(1<<HFlag)|(1<<SFlag)
  587.         fetch 8
  588. .endm
  589.  
  590. .macro opBITb bit
  591.         and z80f,z80f,#1<<CFlag
  592.         tst r0,#1<<\bit
  593.         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)
  594.         orrne z80f,z80f,#(1<<HFlag)
  595. .endm
  596.  
  597. .macro opBIT7b
  598.         and z80f,z80f,#1<<CFlag
  599.         tst r0,#1<<7
  600.         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)
  601.         orrne z80f,z80f,#(1<<HFlag)|(1<<SFlag)
  602. .endm
  603. ;@---------------------------------------
  604.  
  605. .macro opCP reg shift
  606.         mov r1,z80a,lsl#4                                               ;@ prepare for check of half carry
  607.         cmp z80a,\reg,lsl#\shift
  608.         mrs z80f,cpsr
  609.         mov z80f,z80f,lsr#28                                    ;@ S,Z,V&C
  610.         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n
  611.         cmp r1,\reg,lsl#\shift+4
  612.         orrcc z80f,z80f,#1<<HFlag
  613. .endm
  614.  
  615. .macro opCPA
  616.         mov z80f,#(1<<ZFlag)|(1<<NFlag)                 ;@ set Z & n
  617.         fetch 4
  618. .endm
  619.  
  620. .macro opCPH reg
  621.         and r0,\reg,#0xFF000000
  622.         opCP r0 0
  623.         fetch 4
  624. .endm
  625.  
  626. .macro opCPL reg
  627.         opCP \reg 8
  628.         fetch 4
  629. .endm
  630.  
  631. .macro opCPb
  632.         opCP r0 24
  633. .endm
  634. ;@---------------------------------------
  635.  
  636. .macro opDEC8 reg                                                       ;@for A and memory
  637.         and z80f,z80f,#1<<CFlag                                 ;@save carry
  638.         orr z80f,z80f,#1<<NFlag                                 ;@set n
  639.         tst \reg,#0x0f000000
  640.         orreq z80f,z80f,#1<<HFlag
  641.         subs \reg,\reg,#0x01000000
  642.         orrmi z80f,z80f,#1<<SFlag
  643.         orrvs z80f,z80f,#1<<VFlag
  644.         orreq z80f,z80f,#1<<ZFlag
  645. .endm
  646.  
  647. .macro opDEC8H reg                                                      ;@for B, D & H
  648.         and z80f,z80f,#1<<CFlag                                 ;@save carry
  649.         orr z80f,z80f,#1<<NFlag                                 ;@set n
  650.         tst \reg,#0x0f000000
  651.         orreq z80f,z80f,#1<<HFlag
  652.         subs \reg,\reg,#0x01000000
  653.         orrmi z80f,z80f,#1<<SFlag
  654.         orrvs z80f,z80f,#1<<VFlag
  655.         tst \reg,#0xff000000                                    ;@Z
  656.         orreq z80f,z80f,#1<<ZFlag
  657. .endm
  658.  
  659. .macro opDEC8L reg                                                      ;@for C, E & L
  660.         mov \reg,\reg,ror#24
  661.         opDEC8H \reg
  662.         mov \reg,\reg,ror#8
  663. .endm
  664.  
  665. .macro opDEC8b                                                          ;@for memory
  666.         mov r0,r0,lsl#24
  667.         opDEC8 r0
  668.         mov r0,r0,lsr#24
  669. .endm
  670. ;@---------------------------------------
  671.  
  672. .macro opIN
  673.         stmfd sp!,{r3,r12}
  674.         mov lr,pc
  675.         ldr pc,[cpucontext,#z80_in]                             ;@ r0=port - data returned in r0
  676.         ldmfd sp!,{r3,r12}
  677. .endm
  678.  
  679. .macro opIN_C
  680.         mov r0,z80bc, lsr #16
  681.         opIN
  682. .endm
  683. ;@---------------------------------------
  684.  
  685. .macro opINC8 reg                                                       ;@for A and memory
  686.         and z80f,z80f,#1<<CFlag                                 ;@save carry, clear n
  687.         adds \reg,\reg,#0x01000000
  688.         orrmi z80f,z80f,#1<<SFlag
  689.         orrvs z80f,z80f,#1<<VFlag
  690.         orrcs z80f,z80f,#1<<ZFlag                               ;@cs when going from 0xFF to 0x00
  691.         tst \reg,#0x0f000000
  692.         orreq z80f,z80f,#1<<HFlag
  693. .endm
  694.  
  695. .macro opINC8H reg                                                      ;@for B, D & H
  696.         opINC8 \reg
  697. .endm
  698.  
  699. .macro opINC8L reg                                                      ;@for C, E & L
  700.         mov \reg,\reg,ror#24
  701.         opINC8 \reg
  702.         mov \reg,\reg,ror#8
  703. .endm
  704.  
  705. .macro opINC8b                                                          ;@for memory
  706.         mov r0,r0,lsl#24
  707.         opINC8 r0
  708.         mov r0,r0,lsr#24
  709. .endm
  710. ;@---------------------------------------
  711.  
  712. .macro opOR reg shift
  713.         orr z80a,z80a,\reg,lsl#\shift
  714.         sub r0,opcodes,#0x100
  715.         ldrb z80f,[r0,z80a, lsr #24]
  716. .endm
  717.  
  718. .macro opORA
  719.         sub r0,opcodes,#0x100
  720.         ldrb z80f,[r0,z80a, lsr #24]
  721.         fetch 4
  722. .endm
  723.  
  724. .macro opORH reg
  725.         and r0,\reg,#0xFF000000
  726.         opOR r0 0
  727.         fetch 4
  728. .endm
  729.  
  730. .macro opORL reg
  731.         opOR \reg 8
  732.         fetch 4
  733. .endm
  734.  
  735. .macro opORb
  736.         opOR r0 24
  737. .endm
  738. ;@---------------------------------------
  739.  
  740. .macro opOUT
  741.         stmfd sp!,{r3,r12}
  742.         mov lr,pc
  743.         ldr pc,[cpucontext,#z80_out]                    ;@ r0=port r1=data
  744.         ldmfd sp!,{r3,r12}
  745. .endm
  746.  
  747. .macro opOUT_C
  748.         mov r0,z80bc, lsr #16
  749.         opOUT
  750. .endm
  751. ;@---------------------------------------
  752.  
  753. .macro opPOP
  754. .if FAST_Z80SP
  755. .if DRZ80_FOR_PICODRIVE
  756.     @ notaz: try to protect against stack overflows, which tend to happen in Picodrive because of poor timing
  757.     ldr r2,[cpucontext,#z80sp_base]
  758.         ldrb r0,[z80sp],#1
  759.     add r2,r2,#0x2000
  760.     cmp z80sp,r2
  761. @    subge z80sp,z80sp,#0x2000 @ unstable?
  762.         ldrb r1,[z80sp],#1
  763.     cmp z80sp,r2
  764. @    subge z80sp,z80sp,#0x2000
  765.         orr r0,r0,r1, lsl #8
  766. .else
  767.         ldrb r0,[z80sp],#1
  768.         ldrb r1,[z80sp],#1
  769.         orr r0,r0,r1, lsl #8
  770. .endif
  771. .else
  772.         mov r0,z80sp
  773.         readmem16
  774.         add z80sp,z80sp,#2
  775. .endif
  776. .endm
  777.  
  778. .macro opPOPreg reg
  779.         opPOP
  780.         mov \reg,r0, lsl #16
  781.         fetch 10
  782. .endm
  783. ;@---------------------------------------
  784.  
  785. .macro opPUSHareg reg @ reg > r1
  786. .if FAST_Z80SP
  787. .if DRZ80_FOR_PICODRIVE
  788.     @ notaz: try to protect against stack overflows, which tend to happen in Picodrive because of poor timing
  789.     ldr r0,[cpucontext,#z80sp_base]
  790.     cmp z80sp,r0
  791.     addle z80sp,z80sp,#0x2000
  792.     mov r1,\reg, lsr #8
  793.         strb r1,[z80sp,#-1]!
  794.     cmp z80sp,r0
  795.     addle z80sp,z80sp,#0x2000
  796.         strb \reg,[z80sp,#-1]!
  797. .else
  798.         mov r1,\reg, lsr #8
  799.         strb r1,[z80sp,#-1]!
  800.         strb \reg,[z80sp,#-1]!
  801. .endif
  802. .else
  803.     mov r0,\reg
  804.         sub z80sp,z80sp,#2
  805.         mov r1,z80sp
  806.         writemem16
  807. .endif
  808. .endm
  809.  
  810. .macro opPUSHreg reg
  811. .if FAST_Z80SP
  812. .if DRZ80_FOR_PICODRIVE
  813.     ldr r0,[cpucontext,#z80sp_base]
  814.     cmp z80sp,r0
  815.     addle z80sp,z80sp,#0x2000
  816.     mov r1,\reg, lsr #24
  817.         strb r1,[z80sp,#-1]!
  818.     cmp z80sp,r0
  819.     addle z80sp,z80sp,#0x2000
  820.         mov r1,\reg, lsr #16
  821.         strb r1,[z80sp,#-1]!
  822. .else
  823.     mov r1,\reg, lsr #24
  824.         strb r1,[z80sp,#-1]!
  825.         mov r1,\reg, lsr #16
  826.         strb r1,[z80sp,#-1]!
  827. .endif
  828. .else
  829.         mov r0,\reg,lsr #16
  830.         sub z80sp,z80sp,#2
  831.         mov r1,z80sp
  832.         writemem16
  833. .endif
  834. .endm
  835. ;@---------------------------------------
  836.  
  837. .macro opRESmemHL bit
  838. .if DRZ80_FOR_PICODRIVE
  839.         mov r0,z80hl, lsr #16
  840.     bl pico_z80_read8
  841.         bic r0,r0,#1<<\bit
  842.         mov r1,z80hl, lsr #16
  843.     bl pico_z80_write8
  844. .else
  845.         mov r0,z80hl, lsr #16
  846.         stmfd sp!,{r3,r12}
  847.         mov lr,pc
  848.         ldr pc,[cpucontext,#z80_read8]                  ;@ r0 = addr - data returned in r0
  849.         bic r0,r0,#1<<\bit
  850.         mov r1,z80hl, lsr #16
  851.         mov lr,pc
  852.         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr
  853.         ldmfd sp!,{r3,r12}
  854. .endif
  855.     fetch 15
  856. .endm
  857. ;@---------------------------------------
  858.  
  859. .macro opRESmem bit
  860. .if DRZ80_FOR_PICODRIVE
  861.         stmfd sp!,{r0}                                                  ;@ save addr as well
  862.     bl pico_z80_read8
  863.         bic r0,r0,#1<<\bit
  864.         ldmfd sp!,{r1}                                                  ;@ restore addr into r1
  865.     bl pico_z80_write8
  866. .else
  867.         stmfd sp!,{r3,r12}
  868.         stmfd sp!,{r0}                                                  ;@ save addr as well
  869.         mov lr,pc
  870.         ldr pc,[cpucontext,#z80_read8]                  ;@ r0=addr - data returned in r0
  871.         bic r0,r0,#1<<\bit
  872.         ldmfd sp!,{r1}                                                  ;@ restore addr into r1
  873.         mov lr,pc
  874.         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr
  875.         ldmfd sp!,{r3,r12}
  876. .endif
  877.         fetch 23
  878. .endm
  879. ;@---------------------------------------
  880.  
  881. .macro opRL reg1 reg2 shift
  882.         movs \reg1,\reg2,lsl \shift
  883.         tst z80f,#1<<CFlag                                              ;@doesn't affect ARM carry, as long as the imidiate value is < 0x100. Watch out!
  884.         orrne \reg1,\reg1,#0x01000000
  885. ;@      and r2,z80f,#1<<CFlag
  886. ;@      orr $x,$x,r2,lsl#23
  887.         sub r1,opcodes,#0x100
  888.         ldrb z80f,[r1,\reg1,lsr#24]                             ;@get PZS
  889.         orrcs z80f,z80f,#1<<CFlag
  890. .endm
  891.  
  892. .macro opRLA
  893.         opRL z80a, z80a, #1
  894.         fetch 8
  895. .endm
  896.  
  897. .macro opRLH reg
  898.         and r0,\reg,#0xFF000000                                 ;@mask high to r0
  899.         adds \reg,\reg,r0
  900.         tst z80f,#1<<CFlag                                              ;@doesn't affect ARM carry, as long as the imidiate value is < 0x100. Watch out!
  901.         orrne \reg,\reg,#0x01000000
  902.         sub r1,opcodes,#0x100
  903.         ldrb z80f,[r1,\reg,lsr#24]                              ;@get PZS
  904.         orrcs z80f,z80f,#1<<CFlag
  905.         fetch 8
  906. .endm
  907.  
  908. .macro opRLL reg
  909.         opRL r0, \reg, #9
  910.         and \reg,\reg,#0xFF000000                               ;@mask out high
  911.         orr \reg,\reg,r0,lsr#8
  912.         fetch 8
  913. .endm
  914.  
  915. .macro opRLb
  916.         opRL r0, r0, #25
  917.         mov r0,r0,lsr#24
  918. .endm
  919. ;@---------------------------------------
  920.  
  921. .macro opRLC reg1 reg2 shift
  922.         movs \reg1,\reg2,lsl#\shift
  923.         orrcs \reg1,\reg1,#0x01000000
  924.         sub r1,opcodes,#0x100
  925.         ldrb z80f,[r1,\reg1,lsr#24]
  926.         orrcs z80f,z80f,#1<<CFlag
  927. .endm
  928.  
  929. .macro opRLCA
  930.         opRLC z80a, z80a, 1
  931.         fetch 8
  932. .endm
  933.  
  934. .macro opRLCH reg
  935.         and r0,\reg,#0xFF000000                                 ;@mask high to r0
  936.         adds \reg,\reg,r0
  937.         orrcs \reg,\reg,#0x01000000
  938.         sub r1,opcodes,#0x100
  939.         ldrb z80f,[r1,\reg,lsr#24]
  940.         orrcs z80f,z80f,#1<<CFlag
  941.         fetch 8
  942. .endm
  943.  
  944. .macro opRLCL reg
  945.         opRLC r0, \reg, 9
  946.         and \reg,\reg,#0xFF000000                               ;@mask out high
  947.         orr \reg,\reg,r0,lsr#8
  948.         fetch 8
  949. .endm
  950.  
  951. .macro opRLCb
  952.         opRLC r0, r0, 25
  953.         mov r0,r0,lsr#24
  954. .endm
  955. ;@---------------------------------------
  956.  
  957. .macro opRR reg1 reg2 shift
  958.         movs \reg1,\reg2,lsr#\shift
  959.         tst z80f,#1<<CFlag                                              ;@doesn't affect ARM carry, as long as the imidiate value is < 0x100. Watch out!
  960.         orrne \reg1,\reg1,#0x00000080
  961. ;@      and r2,z80_f,#PSR_C
  962. ;@      orr \reg1,\reg1,r2,lsl#6
  963.         sub r1,opcodes,#0x100
  964.         ldrb z80f,[r1,\reg1]
  965.         orrcs z80f,z80f,#1<<CFlag
  966. .endm
  967.  
  968. .macro opRRA
  969.         orr z80a,z80a,z80f,lsr#1                                ;@get C
  970.         movs z80a,z80a,ror#25
  971.         mov z80a,z80a,lsl#24
  972.         sub r1,opcodes,#0x100
  973.         ldrb z80f,[r1,z80a,lsr#24]
  974.         orrcs z80f,z80f,#1<<CFlag
  975.         fetch 8
  976. .endm
  977.  
  978. .macro opRRH reg
  979.         orr r0,\reg,z80f,lsr#1                                  ;@get C
  980.         movs r0,r0,ror#25
  981.         and \reg,\reg,#0x00FF0000                               ;@mask out low
  982.         orr \reg,\reg,r0,lsl#24
  983.         sub r1,opcodes,#0x100
  984.         ldrb z80f,[r1,\reg,lsr#24]
  985.         orrcs z80f,z80f,#1<<CFlag
  986.         fetch 8
  987. .endm
  988.  
  989. .macro opRRL reg
  990.         and r0,\reg,#0x00FF0000                                 ;@mask out low to r0
  991.         opRR r0 r0 17
  992.         and \reg,\reg,#0xFF000000                               ;@mask out high
  993.         orr \reg,\reg,r0,lsl#16
  994.         fetch 8
  995. .endm
  996.  
  997. .macro opRRb
  998.         opRR r0 r0 1
  999. .endm
  1000. ;@---------------------------------------
  1001.  
  1002. .macro opRRC reg1 reg2 shift
  1003.         movs \reg1,\reg2,lsr#\shift
  1004.         orrcs \reg1,\reg1,#0x00000080
  1005.         sub r1,opcodes,#0x100
  1006.         ldrb z80f,[r1,\reg1]
  1007.         orrcs z80f,z80f,#1<<CFlag
  1008. .endm
  1009.  
  1010. .macro opRRCA
  1011.         opRRC z80a, z80a, 25
  1012.         mov z80a,z80a,lsl#24
  1013.         fetch 8
  1014. .endm
  1015.  
  1016. .macro opRRCH reg
  1017.         opRRC r0, \reg, 25
  1018.         and \reg,\reg,#0x00FF0000                               ;@mask out low
  1019.         orr \reg,\reg,r0,lsl#24
  1020.         fetch 8
  1021. .endm
  1022.  
  1023. .macro opRRCL reg
  1024.         and r0,\reg,#0x00FF0000                                 ;@mask low to r0
  1025.         opRRC r0, r0, 17
  1026.         and \reg,\reg,#0xFF000000                               ;@mask out high
  1027.         orr \reg,\reg,r0,lsl#16
  1028.         fetch 8
  1029. .endm
  1030.  
  1031. .macro opRRCb
  1032.         opRRC r0, r0, 1
  1033. .endm
  1034. ;@---------------------------------------
  1035.  
  1036. .macro opRST addr
  1037.         ldr r0,[cpucontext,#z80pc_base]
  1038.         sub r2,z80pc,r0
  1039.     opPUSHareg r2
  1040.         mov r0,#\addr
  1041.         rebasepc
  1042.         fetch 11
  1043. .endm
  1044. ;@---------------------------------------
  1045.  
  1046. .macro opSBC
  1047.         eor z80f,z80f,#1<<CFlag                                 ;@ invert C
  1048.         movs z80f,z80f,lsr#2                                    ;@ get C
  1049.         subcc r0,r0,#0x100
  1050.         eor z80f,r0,z80a,lsr#24                                 ;@ prepare for check of H
  1051.         sbcs z80a,z80a,r0,ror#8
  1052.         mrs r0,cpsr
  1053.         eor z80f,z80f,z80a,lsr#24
  1054.         and z80f,z80f,#1<<HFlag                                 ;@ H, correct
  1055.         orr z80f,z80f,r0,lsr#28                                 ;@ S,Z,V&C
  1056.         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n.
  1057. .endm
  1058.  
  1059. .macro opSBCA
  1060.         movs z80f,z80f,lsr#2                                    ;@ get C
  1061.         movcc z80a,#0x00000000
  1062.         movcs z80a,#0xFF000000
  1063.         movcc z80f,#(1<<NFlag)|(1<<ZFlag)
  1064.         movcs z80f,#(1<<NFlag)|(1<<SFlag)|(1<<CFlag)|(1<<HFlag)
  1065.         fetch 4
  1066. .endm
  1067.  
  1068. .macro opSBCH reg
  1069.         mov r0,\reg,lsr#24
  1070.         opSBC
  1071.         fetch 4
  1072. .endm
  1073.  
  1074. .macro opSBCL reg
  1075.         mov r0,\reg,lsl#8
  1076.         eor z80f,z80f,#1<<CFlag                                 ;@ invert C
  1077.         movs z80f,z80f,lsr#2                                    ;@ get C
  1078.         sbccc r0,r0,#0xFF000000
  1079.         mov r1,z80a,lsl#4                                               ;@ prepare for check of H
  1080.         sbcs z80a,z80a,r0
  1081.         mrs z80f,cpsr
  1082.         mov z80f,z80f,lsr#28                                    ;@ S,Z,V&C
  1083.         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n.
  1084.         cmp r1,r0,lsl#4
  1085.         orrcc z80f,z80f,#1<<HFlag                               ;@ H, correct
  1086.         fetch 4
  1087. .endm
  1088.  
  1089. .macro opSBCb
  1090.         opSBC
  1091. .endm
  1092. ;@---------------------------------------
  1093.  
  1094. .macro opSBC16 reg
  1095.         eor z80f,z80f,#1<<CFlag                                 ;@ invert C
  1096.         movs z80f,z80f,lsr#2                                    ;@ get C
  1097.         sbc r1,r1,r1                                                    ;@ set r1 to -1 or 0.
  1098.         orr r0,\reg,r1,lsr#16
  1099.         mov r1,z80hl,lsl#4                                              ;@ prepare for check of H
  1100.         sbcs z80hl,z80hl,r0
  1101.         mrs z80f,cpsr
  1102.         mov z80f,z80f,lsr#28                                    ;@ S,Z,V&C
  1103.         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n.
  1104.         cmp r1,r0,lsl#4
  1105.         orrcc z80f,z80f,#1<<HFlag                               ;@ H, correct
  1106.         fetch 15
  1107. .endm
  1108.  
  1109. .macro opSBC16HL
  1110.         movs z80f,z80f,lsr#2                                    ;@ get C
  1111.         mov z80hl,#0x00000000
  1112.         subcs z80hl,z80hl,#0x00010000
  1113.         movcc z80f,#(1<<NFlag)|(1<<ZFlag)
  1114.         movcs z80f,#(1<<NFlag)|(1<<SFlag)|(1<<CFlag)|(1<<HFlag)
  1115.         fetch 15
  1116. .endm
  1117. ;@---------------------------------------
  1118.  
  1119. .macro opSETmemHL bit
  1120. .if DRZ80_FOR_PICODRIVE
  1121.         mov r0,z80hl, lsr #16
  1122.     bl pico_z80_read8
  1123.         orr r0,r0,#1<<\bit
  1124.         mov r1,z80hl, lsr #16
  1125.     bl pico_z80_write8
  1126. .else
  1127.         mov r0,z80hl, lsr #16
  1128.         stmfd sp!,{r3,r12}
  1129.         mov lr,pc
  1130.         ldr pc,[cpucontext,#z80_read8]                  ;@ r0 = addr - data returned in r0
  1131.         orr r0,r0,#1<<\bit
  1132.         mov r1,z80hl, lsr #16
  1133.         mov lr,pc
  1134.         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr
  1135.         ldmfd sp!,{r3,r12}
  1136. .endif
  1137.     fetch 15
  1138. .endm
  1139. ;@---------------------------------------
  1140.  
  1141. .macro opSETmem bit
  1142. .if DRZ80_FOR_PICODRIVE
  1143.         stmfd sp!,{r0}  ;@ save addr as well
  1144.     bl pico_z80_read8
  1145.         orr r0,r0,#1<<\bit
  1146.         ldmfd sp!,{r1}  ;@ restore addr into r1
  1147.     bl pico_z80_write8
  1148. .else
  1149.         stmfd sp!,{r3,r12}
  1150.         stmfd sp!,{r0}  ;@ save addr as well
  1151.         mov lr,pc
  1152.         ldr pc,[cpucontext,#z80_read8]                  ;@ r0=addr - data returned in r0
  1153.         orr r0,r0,#1<<\bit
  1154.         ldmfd sp!,{r1}  ;@ restore addr into r1
  1155.         mov lr,pc
  1156.         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr
  1157.         ldmfd sp!,{r3,r12}
  1158. .endif
  1159.         fetch 23
  1160. .endm
  1161. ;@---------------------------------------
  1162.  
  1163. .macro opSLA reg1 reg2 shift
  1164.         movs \reg1,\reg2,lsl#\shift
  1165.         sub r1,opcodes,#0x100
  1166.         ldrb z80f,[r1,\reg1,lsr#24]
  1167.         orrcs z80f,z80f,#1<<CFlag
  1168. .endm
  1169.  
  1170. .macro opSLAA
  1171.         opSLA z80a, z80a, 1
  1172.         fetch 8
  1173. .endm
  1174.  
  1175. .macro opSLAH reg
  1176.         and r0,\reg,#0xFF000000                                 ;@mask high to r0
  1177.         adds \reg,\reg,r0
  1178.         sub r1,opcodes,#0x100
  1179.         ldrb z80f,[r1,\reg,lsr#24]
  1180.         orrcs z80f,z80f,#1<<CFlag
  1181.         fetch 8
  1182. .endm
  1183.  
  1184. .macro opSLAL reg
  1185.         opSLA r0, \reg, 9
  1186.         and \reg,\reg,#0xFF000000                               ;@mask out high
  1187.         orr \reg,\reg,r0,lsr#8
  1188.         fetch 8
  1189. .endm
  1190.  
  1191. .macro opSLAb
  1192.         opSLA r0, r0, 25
  1193.         mov r0,r0,lsr#24
  1194. .endm
  1195. ;@---------------------------------------
  1196.  
  1197. .macro opSLL reg1 reg2 shift
  1198.         movs \reg1,\reg2,lsl#\shift
  1199.         orr \reg1,\reg1,#0x01000000
  1200.         sub r1,opcodes,#0x100
  1201.         ldrb z80f,[r1,\reg1,lsr#24]
  1202.         orrcs z80f,z80f,#1<<CFlag
  1203. .endm
  1204.  
  1205. .macro opSLLA
  1206.         opSLL z80a, z80a, 1
  1207.         fetch 8
  1208. .endm
  1209.  
  1210. .macro opSLLH reg
  1211.         and r0,\reg,#0xFF000000                                 ;@mask high to r0
  1212.         adds \reg,\reg,r0
  1213.         orr \reg,\reg,#0x01000000
  1214.         sub r1,opcodes,#0x100
  1215.         ldrb z80f,[r1,\reg,lsr#24]
  1216.         orrcs z80f,z80f,#1<<CFlag
  1217.         fetch 8
  1218. .endm
  1219.  
  1220. .macro opSLLL reg
  1221.         opSLL r0, \reg, 9
  1222.         and \reg,\reg,#0xFF000000                               ;@mask out high
  1223.         orr \reg,\reg,r0,lsr#8
  1224.         fetch 8
  1225. .endm
  1226.  
  1227. .macro opSLLb
  1228.         opSLL r0, r0, 25
  1229.         mov r0,r0,lsr#24
  1230. .endm
  1231. ;@---------------------------------------
  1232.  
  1233. .macro opSRA reg1 reg2
  1234.         movs \reg1,\reg2,asr#25
  1235.         and \reg1,\reg1,#0xFF
  1236.         sub r1,opcodes,#0x100
  1237.         ldrb z80f,[r1,\reg1]
  1238.         orrcs z80f,z80f,#1<<CFlag
  1239. .endm
  1240.  
  1241. .macro opSRAA
  1242.         movs r0,z80a,asr#25
  1243.         mov z80a,r0,lsl#24
  1244.         sub r1,opcodes,#0x100
  1245.         ldrb z80f,[r1,z80a,lsr#24]
  1246.         orrcs z80f,z80f,#1<<CFlag
  1247.         fetch 8
  1248. .endm
  1249.  
  1250. .macro opSRAH reg
  1251.         movs r0,\reg,asr#25
  1252.         and \reg,\reg,#0x00FF0000                               ;@mask out low
  1253.         orr \reg,\reg,r0,lsl#24
  1254.         sub r1,opcodes,#0x100
  1255.         ldrb z80f,[r1,\reg,lsr#24]
  1256.         orrcs z80f,z80f,#1<<CFlag
  1257.         fetch 8
  1258. .endm
  1259.  
  1260. .macro opSRAL reg
  1261.         mov r0,\reg,lsl#8
  1262.         opSRA r0, r0
  1263.         and \reg,\reg,#0xFF000000                               ;@mask out high
  1264.         orr \reg,\reg,r0,lsl#16
  1265.         fetch 8
  1266. .endm
  1267.  
  1268. .macro opSRAb
  1269.         mov r0,r0,lsl#24
  1270.         opSRA r0, r0
  1271. .endm
  1272. ;@---------------------------------------
  1273.  
  1274. .macro opSRL reg1 reg2 shift
  1275.         movs \reg1,\reg2,lsr#\shift
  1276.         sub r1,opcodes,#0x100
  1277.         ldrb z80f,[r1,\reg1]
  1278.         orrcs z80f,z80f,#1<<CFlag
  1279. .endm
  1280.  
  1281. .macro opSRLA
  1282.         opSRL z80a, z80a, 25
  1283.         mov z80a,z80a,lsl#24
  1284.         fetch 8
  1285. .endm
  1286.  
  1287. .macro opSRLH reg
  1288.         opSRL r0, \reg, 25
  1289.         and \reg,\reg,#0x00FF0000                               ;@mask out low
  1290.         orr \reg,\reg,r0,lsl#24
  1291.         fetch 8
  1292. .endm
  1293.  
  1294. .macro opSRLL reg
  1295.         mov r0,\reg,lsl#8
  1296.         opSRL r0, r0, 25
  1297.         and \reg,\reg,#0xFF000000                               ;@mask out high
  1298.         orr \reg,\reg,r0,lsl#16
  1299.         fetch 8
  1300. .endm
  1301.  
  1302. .macro opSRLb
  1303.         opSRL r0, r0, 1
  1304. .endm
  1305. ;@---------------------------------------
  1306.  
  1307. .macro opSUB reg shift
  1308.         mov r1,z80a,lsl#4                                               ;@ Prepare for check of half carry
  1309.         subs z80a,z80a,\reg,lsl#\shift
  1310.         mrs z80f,cpsr
  1311.         mov z80f,z80f,lsr#28                                    ;@ S,Z,V&C
  1312.         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n
  1313.         cmp r1,\reg,lsl#\shift+4
  1314.         orrcc z80f,z80f,#1<<HFlag
  1315. .endm
  1316.  
  1317. .macro opSUBA
  1318.         mov z80a,#0
  1319.         mov z80f,#(1<<ZFlag)|(1<<NFlag)                 ;@ set Z & n
  1320.         fetch 4
  1321. .endm
  1322.  
  1323. .macro opSUBH reg
  1324.         and r0,\reg,#0xFF000000
  1325.         opSUB r0, 0
  1326.         fetch 4
  1327. .endm
  1328.  
  1329. .macro opSUBL reg
  1330.         opSUB \reg, 8
  1331.         fetch 4
  1332. .endm
  1333.  
  1334. .macro opSUBb
  1335.         opSUB r0, 24
  1336. .endm
  1337. ;@---------------------------------------
  1338.  
  1339. .macro opXOR reg shift
  1340.         eor z80a,z80a,\reg,lsl#\shift
  1341.         sub r0,opcodes,#0x100
  1342.         ldrb z80f,[r0,z80a, lsr #24]
  1343. .endm
  1344.  
  1345. .macro opXORA
  1346.         mov z80a,#0
  1347.         mov z80f,#(1<<ZFlag)|(1<<VFlag)
  1348.         fetch 4
  1349. .endm
  1350.  
  1351. .macro opXORH reg
  1352.         and r0,\reg,#0xFF000000
  1353.         opXOR r0, 0
  1354.         fetch 4
  1355. .endm
  1356.  
  1357. .macro opXORL reg
  1358.         opXOR \reg, 8
  1359.         fetch 4
  1360. .endm
  1361.  
  1362. .macro opXORb
  1363.         opXOR r0, 24
  1364. .endm
  1365. ;@---------------------------------------
  1366.  
  1367.  
  1368. ;@ --------------------------- Framework --------------------------
  1369.    
  1370. .text
  1371.  
  1372. DrZ80Run:
  1373.         ;@ r0 = pointer to cpu context
  1374.         ;@ r1 = ISTATES to execute  
  1375.         ;@#########################################  
  1376.         stmdb sp!,{r4-r12,lr}                                   ;@ save registers on stack
  1377.         mov cpucontext,r0                                               ;@ setup main memory pointer
  1378.         mov z80_icount,r1                                               ;@ setup number of Tstates to execute
  1379.  
  1380. .if INTERRUPT_MODE == 0
  1381.         ldrh r0,[cpucontext,#z80irq] @ 0x4C
  1382. .endif
  1383.         ldmia cpucontext,{z80pc-z80sp}                  ;@ load Z80 registers
  1384.  
  1385. .if INTERRUPT_MODE == 0
  1386.         ;@ check ints
  1387.         tst r0,#1
  1388.         movnes r0,r0,lsr #8
  1389.     blne DoInterrupt
  1390. .endif
  1391.  
  1392.         ldrb r0,[z80pc],#1    ;@ get first op code
  1393.         ldr opcodes,MAIN_opcodes_POINTER2
  1394.         ldr pc,[opcodes,r0, lsl #2]  ;@ execute op code
  1395.  
  1396. MAIN_opcodes_POINTER2: .word MAIN_opcodes
  1397.  
  1398.  
  1399. z80_execute_end:
  1400.         ;@ save registers in CPU context
  1401.         stmia cpucontext,{z80pc-z80sp}                  ;@ save Z80 registers
  1402.     mov r0,z80_icount
  1403.         ldmia sp!,{r4-r12,pc}                                   ;@ restore registers from stack and return to C code
  1404.  
  1405. .if INTERRUPT_MODE
  1406. Interrupt_local: .word Interrupt
  1407. .endif
  1408.  
  1409. DoInterrupt:
  1410. .if INTERRUPT_MODE
  1411.         ;@ Don't do own int handler, call mames instead
  1412.  
  1413.         ;@ save everything back into DrZ80 context
  1414.         stmia cpucontext,{z80pc-z80sp}                  ;@ save Z80 registers
  1415.         stmfd sp!,{r3,r4,r5,lr}                                 ;@ save rest of regs on stack
  1416.         mov lr,pc
  1417.         ldr pc,Interrupt_local
  1418.         ldmfd sp!,{r3,r4,r5,lr}                                 ;@ load regs from stack
  1419.         ;@ reload regs from DrZ80 context
  1420.         ldmia cpucontext,{z80pc-z80sp}                  ;@ load Z80 registers
  1421.         mov pc,lr ;@ return
  1422. .else
  1423.         stmfd sp!,{lr}
  1424.  
  1425.         tst r0,#4 ;@ check halt
  1426.         addne z80pc,z80pc,#1
  1427.  
  1428.         ldrb r1,[cpucontext,#z80im]
  1429.  
  1430.     ;@ clear halt and int flags
  1431.         eor r0,r0,r0
  1432.         strb r0,[cpucontext,#z80if]
  1433.  
  1434.         ;@ now check int mode
  1435.     tst r1,#1
  1436.     bne DoInterrupt_mode1
  1437.     tst r1,#2
  1438.     bne DoInterrupt_mode2
  1439.  
  1440. DoInterrupt_mode0:
  1441.         ;@ get 3 byte vector
  1442.         ldr r2,[cpucontext, #z80irqvector]
  1443.         and r1,r2,#0xFF0000
  1444.         cmp r1,#0xCD0000  ;@ call
  1445.         bne 1f
  1446.         ;@ ########
  1447.         ;@ # call
  1448.         ;@ ########
  1449.         ;@ save current pc on stack
  1450.         ldr r0,[cpucontext,#z80pc_base]
  1451.         sub r0,z80pc,r0
  1452. .if FAST_Z80SP
  1453.         mov r1,r0, lsr #8
  1454.         strb r1,[z80sp,#-1]!
  1455.         strb r0,[z80sp,#-1]!
  1456. .else
  1457.         sub z80sp,z80sp,#2
  1458.         mov r1,z80sp
  1459.         writemem16
  1460.         ldr r2,[cpucontext, #z80irqvector]
  1461. .endif
  1462.         ;@ jump to vector
  1463.         mov r2,r2,lsl#16
  1464.         mov r0,r2,lsr#16
  1465.         ;@ rebase new pc
  1466.         rebasepc
  1467.  
  1468.         b DoInterrupt_end
  1469.  
  1470. 1:
  1471.         cmp r1,#0xC30000  ;@ jump
  1472.         bne DoInterrupt_mode1    ;@ rst
  1473.         ;@ #######
  1474.         ;@ # jump
  1475.         ;@ #######
  1476.         ;@ jump to vector
  1477.         mov r2,r2,lsl#16
  1478.         mov r0,r2,lsr#16
  1479.         ;@ rebase new pc
  1480.         rebasepc
  1481.  
  1482.         b DoInterrupt_end
  1483.  
  1484. DoInterrupt_mode1:
  1485.         ldr r0,[cpucontext,#z80pc_base]
  1486.         sub r2,z80pc,r0
  1487.     opPUSHareg r2
  1488.         mov r0,#0x38
  1489.         rebasepc
  1490.  
  1491.         b DoInterrupt_end
  1492.  
  1493. DoInterrupt_mode2:
  1494.         ;@ push pc on stack
  1495.         ldr r0,[cpucontext,#z80pc_base]
  1496.         sub r2,z80pc,r0
  1497.     opPUSHareg r2
  1498.  
  1499.         ;@ get 1 byte vector address
  1500.         ldrb r0,[cpucontext, #z80irqvector]
  1501.         ldr r1,[cpucontext, #z80i]
  1502.         orr r0,r0,r1,lsr#16
  1503.  
  1504.         ;@ read new pc from vector address
  1505. .if DRZ80_FOR_PICODRIVE
  1506.     bl pico_z80_read16
  1507.     bic r0,r0,#0xfe000
  1508.     ldr r1,[cpucontext,#z80pc_base]
  1509.     add z80pc,r1,r0
  1510. .if UPDATE_CONTEXT
  1511.      str z80pc,[cpucontext,#z80pc_pointer]
  1512. .endif
  1513. .else
  1514.         stmfd sp!,{r3,r12}
  1515.         mov lr,pc
  1516.         ldr pc,[cpucontext,#z80_read16]
  1517.  
  1518.         ;@ rebase new pc
  1519. .if UPDATE_CONTEXT
  1520.      str z80pc,[cpucontext,#z80pc_pointer]
  1521. .endif
  1522.         mov lr,pc
  1523.         ldr pc,[cpucontext,#z80_rebasePC] ;@ r0=new pc - external function sets z80pc_base and returns new z80pc in r0
  1524.         ldmfd sp!,{r3,r12}
  1525.         mov z80pc,r0   
  1526. .endif
  1527.  
  1528. DoInterrupt_end:
  1529.         ;@ interupt accepted so callback irq interface
  1530.         ldr r0,[cpucontext, #z80irqcallback]
  1531.         tst r0,r0
  1532.         ldmeqfd sp!,{pc}
  1533.         stmfd sp!,{r3,r12}
  1534.         mov lr,pc
  1535.         mov pc,r0    ;@ call callback function
  1536.         ldmfd sp!,{r3,r12}
  1537.         ldmfd sp!,{pc} ;@ return
  1538.  
  1539. .endif
  1540.  
  1541. .data
  1542. .align 4
  1543.  
  1544. DAATable: .hword  (0x00<<8)|(1<<ZFlag)|(1<<VFlag)
  1545.          .hword  (0x01<<8)                  
  1546.          .hword  (0x02<<8)                  
  1547.          .hword  (0x03<<8)               |(1<<VFlag)
  1548.          .hword  (0x04<<8)                  
  1549.          .hword  (0x05<<8)               |(1<<VFlag)
  1550.          .hword  (0x06<<8)               |(1<<VFlag)
  1551.          .hword  (0x07<<8)                  
  1552.          .hword  (0x08<<8)              
  1553.          .hword  (0x09<<8)            |(1<<VFlag)
  1554.          .hword  (0x10<<8)         |(1<<HFlag)      
  1555.          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)
  1556.          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)
  1557.          .hword  (0x13<<8)         |(1<<HFlag)      
  1558.          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)
  1559.          .hword  (0x15<<8)         |(1<<HFlag)      
  1560.          .hword  (0x10<<8)                  
  1561.          .hword  (0x11<<8)               |(1<<VFlag)
  1562.          .hword  (0x12<<8)               |(1<<VFlag)
  1563.          .hword  (0x13<<8)                  
  1564.          .hword  (0x14<<8)               |(1<<VFlag)
  1565.          .hword  (0x15<<8)                  
  1566.          .hword  (0x16<<8)                  
  1567.          .hword  (0x17<<8)               |(1<<VFlag)
  1568.          .hword  (0x18<<8)            |(1<<VFlag)
  1569.          .hword  (0x19<<8)              
  1570.          .hword  (0x20<<8)      |(1<<HFlag)      
  1571.          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)
  1572.          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)
  1573.          .hword  (0x23<<8)      |(1<<HFlag)      
  1574.          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)
  1575.          .hword  (0x25<<8)      |(1<<HFlag)      
  1576.          .hword  (0x20<<8)              
  1577.          .hword  (0x21<<8)            |(1<<VFlag)
  1578.          .hword  (0x22<<8)            |(1<<VFlag)
  1579.          .hword  (0x23<<8)              
  1580.          .hword  (0x24<<8)            |(1<<VFlag)
  1581.          .hword  (0x25<<8)              
  1582.          .hword  (0x26<<8)              
  1583.          .hword  (0x27<<8)            |(1<<VFlag)
  1584.          .hword  (0x28<<8)         |(1<<VFlag)
  1585.          .hword  (0x29<<8)            
  1586.          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)
  1587.          .hword  (0x31<<8)      |(1<<HFlag)      
  1588.          .hword  (0x32<<8)      |(1<<HFlag)      
  1589.          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)
  1590.          .hword  (0x34<<8)      |(1<<HFlag)      
  1591.          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)
  1592.          .hword  (0x30<<8)            |(1<<VFlag)
  1593.          .hword  (0x31<<8)              
  1594.          .hword  (0x32<<8)              
  1595.          .hword  (0x33<<8)            |(1<<VFlag)
  1596.          .hword  (0x34<<8)              
  1597.          .hword  (0x35<<8)            |(1<<VFlag)
  1598.          .hword  (0x36<<8)            |(1<<VFlag)
  1599.          .hword  (0x37<<8)              
  1600.          .hword  (0x38<<8)            
  1601.          .hword  (0x39<<8)         |(1<<VFlag)
  1602.          .hword  (0x40<<8)         |(1<<HFlag)      
  1603.          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)
  1604.          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)
  1605.          .hword  (0x43<<8)         |(1<<HFlag)      
  1606.          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)
  1607.          .hword  (0x45<<8)         |(1<<HFlag)      
  1608.          .hword  (0x40<<8)                  
  1609.          .hword  (0x41<<8)               |(1<<VFlag)
  1610.          .hword  (0x42<<8)               |(1<<VFlag)
  1611.          .hword  (0x43<<8)                  
  1612.          .hword  (0x44<<8)               |(1<<VFlag)
  1613.          .hword  (0x45<<8)                  
  1614.          .hword  (0x46<<8)                  
  1615.          .hword  (0x47<<8)               |(1<<VFlag)
  1616.          .hword  (0x48<<8)            |(1<<VFlag)
  1617.          .hword  (0x49<<8)              
  1618.          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)
  1619.          .hword  (0x51<<8)         |(1<<HFlag)      
  1620.          .hword  (0x52<<8)         |(1<<HFlag)      
  1621.          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)
  1622.          .hword  (0x54<<8)         |(1<<HFlag)      
  1623.          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)
  1624.          .hword  (0x50<<8)               |(1<<VFlag)
  1625.          .hword  (0x51<<8)                  
  1626.          .hword  (0x52<<8)                  
  1627.          .hword  (0x53<<8)               |(1<<VFlag)
  1628.          .hword  (0x54<<8)                  
  1629.          .hword  (0x55<<8)               |(1<<VFlag)
  1630.          .hword  (0x56<<8)               |(1<<VFlag)
  1631.          .hword  (0x57<<8)                  
  1632.          .hword  (0x58<<8)              
  1633.          .hword  (0x59<<8)            |(1<<VFlag)
  1634.          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)
  1635.          .hword  (0x61<<8)      |(1<<HFlag)      
  1636.          .hword  (0x62<<8)      |(1<<HFlag)      
  1637.          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)
  1638.          .hword  (0x64<<8)      |(1<<HFlag)      
  1639.          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)
  1640.          .hword  (0x60<<8)            |(1<<VFlag)
  1641.          .hword  (0x61<<8)              
  1642.          .hword  (0x62<<8)              
  1643.          .hword  (0x63<<8)            |(1<<VFlag)
  1644.          .hword  (0x64<<8)              
  1645.          .hword  (0x65<<8)            |(1<<VFlag)
  1646.          .hword  (0x66<<8)            |(1<<VFlag)
  1647.          .hword  (0x67<<8)              
  1648.          .hword  (0x68<<8)            
  1649.          .hword  (0x69<<8)         |(1<<VFlag)
  1650.          .hword  (0x70<<8)      |(1<<HFlag)      
  1651.          .hword  (0x71<<8)      |(1<<HFlag)   |(1<<VFlag)
  1652.          .hword  (0x72<<8)      |(1<<HFlag)   |(1<<VFlag)
  1653.          .hword  (0x73<<8)      |(1<<HFlag)      
  1654.          .hword  (0x74<<8)      |(1<<HFlag)   |(1<<VFlag)
  1655.          .hword  (0x75<<8)      |(1<<HFlag)      
  1656.          .hword  (0x70<<8)              
  1657.          .hword  (0x71<<8)            |(1<<VFlag)
  1658.          .hword  (0x72<<8)            |(1<<VFlag)
  1659.          .hword  (0x73<<8)              
  1660.          .hword  (0x74<<8)            |(1<<VFlag)
  1661.          .hword  (0x75<<8)              
  1662.          .hword  (0x76<<8)              
  1663.          .hword  (0x77<<8)            |(1<<VFlag)
  1664.          .hword  (0x78<<8)         |(1<<VFlag)
  1665.          .hword  (0x79<<8)            
  1666.          .hword  (0x80<<8)|(1<<SFlag)      |(1<<HFlag)      
  1667.          .hword  (0x81<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)
  1668.          .hword  (0x82<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)
  1669.          .hword  (0x83<<8)|(1<<SFlag)      |(1<<HFlag)      
  1670.          .hword  (0x84<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)
  1671.          .hword  (0x85<<8)|(1<<SFlag)      |(1<<HFlag)      
  1672.          .hword  (0x80<<8)|(1<<SFlag)              
  1673.          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)
  1674.          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)
  1675.          .hword  (0x83<<8)|(1<<SFlag)              
  1676.          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)
  1677.          .hword  (0x85<<8)|(1<<SFlag)              
  1678.          .hword  (0x86<<8)|(1<<SFlag)              
  1679.          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)
  1680.          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)
  1681.          .hword  (0x89<<8)|(1<<SFlag)            
  1682.          .hword  (0x90<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)
  1683.          .hword  (0x91<<8)|(1<<SFlag)      |(1<<HFlag)      
  1684.          .hword  (0x92<<8)|(1<<SFlag)      |(1<<HFlag)      
  1685.          .hword  (0x93<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)
  1686.          .hword  (0x94<<8)|(1<<SFlag)      |(1<<HFlag)      
  1687.          .hword  (0x95<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)
  1688.          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)
  1689.          .hword  (0x91<<8)|(1<<SFlag)              
  1690.          .hword  (0x92<<8)|(1<<SFlag)              
  1691.          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)
  1692.          .hword  (0x94<<8)|(1<<SFlag)              
  1693.          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)
  1694.          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)
  1695.          .hword  (0x97<<8)|(1<<SFlag)              
  1696.          .hword  (0x98<<8)|(1<<SFlag)            
  1697.          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)
  1698.          .hword  (0x00<<8)   |(1<<ZFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1699.          .hword  (0x01<<8)         |(1<<HFlag)         |(1<<CFlag)
  1700.          .hword  (0x02<<8)         |(1<<HFlag)         |(1<<CFlag)
  1701.          .hword  (0x03<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1702.          .hword  (0x04<<8)         |(1<<HFlag)         |(1<<CFlag)
  1703.          .hword  (0x05<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1704.          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)   |(1<<CFlag)
  1705.          .hword  (0x01<<8)                     |(1<<CFlag)
  1706.          .hword  (0x02<<8)                     |(1<<CFlag)
  1707.          .hword  (0x03<<8)               |(1<<VFlag)   |(1<<CFlag)
  1708.          .hword  (0x04<<8)                     |(1<<CFlag)
  1709.          .hword  (0x05<<8)               |(1<<VFlag)   |(1<<CFlag)
  1710.          .hword  (0x06<<8)               |(1<<VFlag)   |(1<<CFlag)
  1711.          .hword  (0x07<<8)                     |(1<<CFlag)
  1712.          .hword  (0x08<<8)                  |(1<<CFlag)
  1713.          .hword  (0x09<<8)            |(1<<VFlag)   |(1<<CFlag)
  1714.          .hword  (0x10<<8)         |(1<<HFlag)         |(1<<CFlag)
  1715.          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1716.          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1717.          .hword  (0x13<<8)         |(1<<HFlag)         |(1<<CFlag)
  1718.          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1719.          .hword  (0x15<<8)         |(1<<HFlag)         |(1<<CFlag)
  1720.          .hword  (0x10<<8)                     |(1<<CFlag)
  1721.          .hword  (0x11<<8)               |(1<<VFlag)   |(1<<CFlag)
  1722.          .hword  (0x12<<8)               |(1<<VFlag)   |(1<<CFlag)
  1723.          .hword  (0x13<<8)                     |(1<<CFlag)
  1724.          .hword  (0x14<<8)               |(1<<VFlag)   |(1<<CFlag)
  1725.          .hword  (0x15<<8)                     |(1<<CFlag)
  1726.          .hword  (0x16<<8)                     |(1<<CFlag)
  1727.          .hword  (0x17<<8)               |(1<<VFlag)   |(1<<CFlag)
  1728.          .hword  (0x18<<8)            |(1<<VFlag)   |(1<<CFlag)
  1729.          .hword  (0x19<<8)                  |(1<<CFlag)
  1730.          .hword  (0x20<<8)      |(1<<HFlag)         |(1<<CFlag)
  1731.          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1732.          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1733.          .hword  (0x23<<8)      |(1<<HFlag)         |(1<<CFlag)
  1734.          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1735.          .hword  (0x25<<8)      |(1<<HFlag)         |(1<<CFlag)
  1736.          .hword  (0x20<<8)                  |(1<<CFlag)
  1737.          .hword  (0x21<<8)            |(1<<VFlag)   |(1<<CFlag)
  1738.          .hword  (0x22<<8)            |(1<<VFlag)   |(1<<CFlag)
  1739.          .hword  (0x23<<8)                  |(1<<CFlag)
  1740.          .hword  (0x24<<8)            |(1<<VFlag)   |(1<<CFlag)
  1741.          .hword  (0x25<<8)                  |(1<<CFlag)
  1742.          .hword  (0x26<<8)                  |(1<<CFlag)
  1743.          .hword  (0x27<<8)            |(1<<VFlag)   |(1<<CFlag)
  1744.          .hword  (0x28<<8)         |(1<<VFlag)   |(1<<CFlag)
  1745.          .hword  (0x29<<8)               |(1<<CFlag)
  1746.          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1747.          .hword  (0x31<<8)      |(1<<HFlag)         |(1<<CFlag)
  1748.          .hword  (0x32<<8)      |(1<<HFlag)         |(1<<CFlag)
  1749.          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1750.          .hword  (0x34<<8)      |(1<<HFlag)         |(1<<CFlag)
  1751.          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1752.          .hword  (0x30<<8)            |(1<<VFlag)   |(1<<CFlag)
  1753.          .hword  (0x31<<8)                  |(1<<CFlag)
  1754.          .hword  (0x32<<8)                  |(1<<CFlag)
  1755.          .hword  (0x33<<8)            |(1<<VFlag)   |(1<<CFlag)
  1756.          .hword  (0x34<<8)                  |(1<<CFlag)
  1757.          .hword  (0x35<<8)            |(1<<VFlag)   |(1<<CFlag)
  1758.          .hword  (0x36<<8)            |(1<<VFlag)   |(1<<CFlag)
  1759.          .hword  (0x37<<8)                  |(1<<CFlag)
  1760.          .hword  (0x38<<8)               |(1<<CFlag)
  1761.          .hword  (0x39<<8)         |(1<<VFlag)   |(1<<CFlag)
  1762.          .hword  (0x40<<8)         |(1<<HFlag)         |(1<<CFlag)
  1763.          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1764.          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1765.          .hword  (0x43<<8)         |(1<<HFlag)         |(1<<CFlag)
  1766.          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1767.          .hword  (0x45<<8)         |(1<<HFlag)         |(1<<CFlag)
  1768.          .hword  (0x40<<8)                     |(1<<CFlag)
  1769.          .hword  (0x41<<8)               |(1<<VFlag)   |(1<<CFlag)
  1770.          .hword  (0x42<<8)               |(1<<VFlag)   |(1<<CFlag)
  1771.          .hword  (0x43<<8)                     |(1<<CFlag)
  1772.          .hword  (0x44<<8)               |(1<<VFlag)   |(1<<CFlag)
  1773.          .hword  (0x45<<8)                     |(1<<CFlag)
  1774.          .hword  (0x46<<8)                     |(1<<CFlag)
  1775.          .hword  (0x47<<8)               |(1<<VFlag)   |(1<<CFlag)
  1776.          .hword  (0x48<<8)            |(1<<VFlag)   |(1<<CFlag)
  1777.          .hword  (0x49<<8)                  |(1<<CFlag)
  1778.          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1779.          .hword  (0x51<<8)         |(1<<HFlag)         |(1<<CFlag)
  1780.          .hword  (0x52<<8)         |(1<<HFlag)         |(1<<CFlag)
  1781.          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1782.          .hword  (0x54<<8)         |(1<<HFlag)         |(1<<CFlag)
  1783.          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1784.          .hword  (0x50<<8)               |(1<<VFlag)   |(1<<CFlag)
  1785.          .hword  (0x51<<8)                     |(1<<CFlag)
  1786.          .hword  (0x52<<8)                     |(1<<CFlag)
  1787.          .hword  (0x53<<8)               |(1<<VFlag)   |(1<<CFlag)
  1788.          .hword  (0x54<<8)                     |(1<<CFlag)
  1789.          .hword  (0x55<<8)               |(1<<VFlag)   |(1<<CFlag)
  1790.          .hword  (0x56<<8)               |(1<<VFlag)   |(1<<CFlag)
  1791.          .hword  (0x57<<8)                     |(1<<CFlag)
  1792.          .hword  (0x58<<8)                  |(1<<CFlag)
  1793.          .hword  (0x59<<8)            |(1<<VFlag)   |(1<<CFlag)
  1794.          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1795.          .hword  (0x61<<8)      |(1<<HFlag)         |(1<<CFlag)
  1796.          .hword  (0x62<<8)      |(1<<HFlag)         |(1<<CFlag)
  1797.          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1798.          .hword  (0x64<<8)      |(1<<HFlag)         |(1<<CFlag)
  1799.          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1800.          .hword  (0x60<<8)            |(1<<VFlag)   |(1<<CFlag)
  1801.          .hword  (0x61<<8)                  |(1<<CFlag)
  1802.          .hword  (0x62<<8)                  |(1<<CFlag)
  1803.          .hword  (0x63<<8)            |(1<<VFlag)   |(1<<CFlag)
  1804.          .hword  (0x64<<8)                  |(1<<CFlag)
  1805.          .hword  (0x65<<8)            |(1<<VFlag)   |(1<<CFlag)
  1806.          .hword  (0x66<<8)            |(1<<VFlag)   |(1<<CFlag)
  1807.          .hword  (0x67<<8)                  |(1<<CFlag)
  1808.          .hword  (0x68<<8)               |(1<<CFlag)
  1809.          .hword  (0x69<<8)         |(1<<VFlag)   |(1<<CFlag)
  1810.          .hword  (0x70<<8)      |(1<<HFlag)         |(1<<CFlag)
  1811.          .hword  (0x71<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1812.          .hword  (0x72<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1813.          .hword  (0x73<<8)      |(1<<HFlag)         |(1<<CFlag)
  1814.          .hword  (0x74<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1815.          .hword  (0x75<<8)      |(1<<HFlag)         |(1<<CFlag)
  1816.          .hword  (0x70<<8)                  |(1<<CFlag)
  1817.          .hword  (0x71<<8)            |(1<<VFlag)   |(1<<CFlag)
  1818.          .hword  (0x72<<8)            |(1<<VFlag)   |(1<<CFlag)
  1819.          .hword  (0x73<<8)                  |(1<<CFlag)
  1820.          .hword  (0x74<<8)            |(1<<VFlag)   |(1<<CFlag)
  1821.          .hword  (0x75<<8)                  |(1<<CFlag)
  1822.          .hword  (0x76<<8)                  |(1<<CFlag)
  1823.          .hword  (0x77<<8)            |(1<<VFlag)   |(1<<CFlag)
  1824.          .hword  (0x78<<8)         |(1<<VFlag)   |(1<<CFlag)
  1825.          .hword  (0x79<<8)               |(1<<CFlag)
  1826.          .hword  (0x80<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)
  1827.          .hword  (0x81<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1828.          .hword  (0x82<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1829.          .hword  (0x83<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)
  1830.          .hword  (0x84<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1831.          .hword  (0x85<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)
  1832.          .hword  (0x80<<8)|(1<<SFlag)                  |(1<<CFlag)
  1833.          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)
  1834.          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)
  1835.          .hword  (0x83<<8)|(1<<SFlag)                  |(1<<CFlag)
  1836.          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)
  1837.          .hword  (0x85<<8)|(1<<SFlag)                  |(1<<CFlag)
  1838.          .hword  (0x86<<8)|(1<<SFlag)                  |(1<<CFlag)
  1839.          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)
  1840.          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  1841.          .hword  (0x89<<8)|(1<<SFlag)               |(1<<CFlag)
  1842.          .hword  (0x90<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1843.          .hword  (0x91<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)
  1844.          .hword  (0x92<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)
  1845.          .hword  (0x93<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1846.          .hword  (0x94<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)
  1847.          .hword  (0x95<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1848.          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)
  1849.          .hword  (0x91<<8)|(1<<SFlag)                  |(1<<CFlag)
  1850.          .hword  (0x92<<8)|(1<<SFlag)                  |(1<<CFlag)
  1851.          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)
  1852.          .hword  (0x94<<8)|(1<<SFlag)                  |(1<<CFlag)
  1853.          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)
  1854.          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)
  1855.          .hword  (0x97<<8)|(1<<SFlag)                  |(1<<CFlag)
  1856.          .hword  (0x98<<8)|(1<<SFlag)               |(1<<CFlag)
  1857.          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  1858.          .hword  (0xA0<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1859.          .hword  (0xA1<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)
  1860.          .hword  (0xA2<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)
  1861.          .hword  (0xA3<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1862.          .hword  (0xA4<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)
  1863.          .hword  (0xA5<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1864.          .hword  (0xA0<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  1865.          .hword  (0xA1<<8)|(1<<SFlag)               |(1<<CFlag)
  1866.          .hword  (0xA2<<8)|(1<<SFlag)               |(1<<CFlag)
  1867.          .hword  (0xA3<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  1868.          .hword  (0xA4<<8)|(1<<SFlag)               |(1<<CFlag)
  1869.          .hword  (0xA5<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  1870.          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  1871.          .hword  (0xA7<<8)|(1<<SFlag)               |(1<<CFlag)
  1872.          .hword  (0xA8<<8)|(1<<SFlag)            |(1<<CFlag)
  1873.          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)
  1874.          .hword  (0xB0<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)
  1875.          .hword  (0xB1<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1876.          .hword  (0xB2<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1877.          .hword  (0xB3<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)
  1878.          .hword  (0xB4<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1879.          .hword  (0xB5<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)
  1880.          .hword  (0xB0<<8)|(1<<SFlag)               |(1<<CFlag)
  1881.          .hword  (0xB1<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  1882.          .hword  (0xB2<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  1883.          .hword  (0xB3<<8)|(1<<SFlag)               |(1<<CFlag)
  1884.          .hword  (0xB4<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  1885.          .hword  (0xB5<<8)|(1<<SFlag)               |(1<<CFlag)
  1886.          .hword  (0xB6<<8)|(1<<SFlag)               |(1<<CFlag)
  1887.          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  1888.          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)
  1889.          .hword  (0xB9<<8)|(1<<SFlag)            |(1<<CFlag)
  1890.          .hword  (0xC0<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1891.          .hword  (0xC1<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)
  1892.          .hword  (0xC2<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)
  1893.          .hword  (0xC3<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1894.          .hword  (0xC4<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)
  1895.          .hword  (0xC5<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1896.          .hword  (0xC0<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)
  1897.          .hword  (0xC1<<8)|(1<<SFlag)                  |(1<<CFlag)
  1898.          .hword  (0xC2<<8)|(1<<SFlag)                  |(1<<CFlag)
  1899.          .hword  (0xC3<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)
  1900.          .hword  (0xC4<<8)|(1<<SFlag)                  |(1<<CFlag)
  1901.          .hword  (0xC5<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)
  1902.          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)
  1903.          .hword  (0xC7<<8)|(1<<SFlag)                  |(1<<CFlag)
  1904.          .hword  (0xC8<<8)|(1<<SFlag)               |(1<<CFlag)
  1905.          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  1906.          .hword  (0xD0<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)
  1907.          .hword  (0xD1<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1908.          .hword  (0xD2<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1909.          .hword  (0xD3<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)
  1910.          .hword  (0xD4<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1911.          .hword  (0xD5<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)
  1912.          .hword  (0xD0<<8)|(1<<SFlag)                  |(1<<CFlag)
  1913.          .hword  (0xD1<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)
  1914.          .hword  (0xD2<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)
  1915.          .hword  (0xD3<<8)|(1<<SFlag)                  |(1<<CFlag)
  1916.          .hword  (0xD4<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)
  1917.          .hword  (0xD5<<8)|(1<<SFlag)                  |(1<<CFlag)
  1918.          .hword  (0xD6<<8)|(1<<SFlag)                  |(1<<CFlag)
  1919.          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)
  1920.          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  1921.          .hword  (0xD9<<8)|(1<<SFlag)               |(1<<CFlag)
  1922.          .hword  (0xE0<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)
  1923.          .hword  (0xE1<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1924.          .hword  (0xE2<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1925.          .hword  (0xE3<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)
  1926.          .hword  (0xE4<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1927.          .hword  (0xE5<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)
  1928.          .hword  (0xE0<<8)|(1<<SFlag)               |(1<<CFlag)
  1929.          .hword  (0xE1<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  1930.          .hword  (0xE2<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  1931.          .hword  (0xE3<<8)|(1<<SFlag)               |(1<<CFlag)
  1932.          .hword  (0xE4<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  1933.          .hword  (0xE5<<8)|(1<<SFlag)               |(1<<CFlag)
  1934.          .hword  (0xE6<<8)|(1<<SFlag)               |(1<<CFlag)
  1935.          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  1936.          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)
  1937.          .hword  (0xE9<<8)|(1<<SFlag)            |(1<<CFlag)
  1938.          .hword  (0xF0<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1939.          .hword  (0xF1<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)
  1940.          .hword  (0xF2<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)
  1941.          .hword  (0xF3<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1942.          .hword  (0xF4<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)
  1943.          .hword  (0xF5<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1944.          .hword  (0xF0<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  1945.          .hword  (0xF1<<8)|(1<<SFlag)               |(1<<CFlag)
  1946.          .hword  (0xF2<<8)|(1<<SFlag)               |(1<<CFlag)
  1947.          .hword  (0xF3<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  1948.          .hword  (0xF4<<8)|(1<<SFlag)               |(1<<CFlag)
  1949.          .hword  (0xF5<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  1950.          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  1951.          .hword  (0xF7<<8)|(1<<SFlag)               |(1<<CFlag)
  1952.          .hword  (0xF8<<8)|(1<<SFlag)            |(1<<CFlag)
  1953.          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)
  1954.          .hword  (0x00<<8)   |(1<<ZFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1955.          .hword  (0x01<<8)         |(1<<HFlag)         |(1<<CFlag)
  1956.          .hword  (0x02<<8)         |(1<<HFlag)         |(1<<CFlag)
  1957.          .hword  (0x03<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1958.          .hword  (0x04<<8)         |(1<<HFlag)         |(1<<CFlag)
  1959.          .hword  (0x05<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1960.          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)   |(1<<CFlag)
  1961.          .hword  (0x01<<8)                     |(1<<CFlag)
  1962.          .hword  (0x02<<8)                     |(1<<CFlag)
  1963.          .hword  (0x03<<8)               |(1<<VFlag)   |(1<<CFlag)
  1964.          .hword  (0x04<<8)                     |(1<<CFlag)
  1965.          .hword  (0x05<<8)               |(1<<VFlag)   |(1<<CFlag)
  1966.          .hword  (0x06<<8)               |(1<<VFlag)   |(1<<CFlag)
  1967.          .hword  (0x07<<8)                     |(1<<CFlag)
  1968.          .hword  (0x08<<8)                  |(1<<CFlag)
  1969.          .hword  (0x09<<8)            |(1<<VFlag)   |(1<<CFlag)
  1970.          .hword  (0x10<<8)         |(1<<HFlag)         |(1<<CFlag)
  1971.          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1972.          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1973.          .hword  (0x13<<8)         |(1<<HFlag)         |(1<<CFlag)
  1974.          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1975.          .hword  (0x15<<8)         |(1<<HFlag)         |(1<<CFlag)
  1976.          .hword  (0x10<<8)                     |(1<<CFlag)
  1977.          .hword  (0x11<<8)               |(1<<VFlag)   |(1<<CFlag)
  1978.          .hword  (0x12<<8)               |(1<<VFlag)   |(1<<CFlag)
  1979.          .hword  (0x13<<8)                     |(1<<CFlag)
  1980.          .hword  (0x14<<8)               |(1<<VFlag)   |(1<<CFlag)
  1981.          .hword  (0x15<<8)                     |(1<<CFlag)
  1982.          .hword  (0x16<<8)                     |(1<<CFlag)
  1983.          .hword  (0x17<<8)               |(1<<VFlag)   |(1<<CFlag)
  1984.          .hword  (0x18<<8)            |(1<<VFlag)   |(1<<CFlag)
  1985.          .hword  (0x19<<8)                  |(1<<CFlag)
  1986.          .hword  (0x20<<8)      |(1<<HFlag)         |(1<<CFlag)
  1987.          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1988.          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1989.          .hword  (0x23<<8)      |(1<<HFlag)         |(1<<CFlag)
  1990.          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  1991.          .hword  (0x25<<8)      |(1<<HFlag)         |(1<<CFlag)
  1992.          .hword  (0x20<<8)                  |(1<<CFlag)
  1993.          .hword  (0x21<<8)            |(1<<VFlag)   |(1<<CFlag)
  1994.          .hword  (0x22<<8)            |(1<<VFlag)   |(1<<CFlag)
  1995.          .hword  (0x23<<8)                  |(1<<CFlag)
  1996.          .hword  (0x24<<8)            |(1<<VFlag)   |(1<<CFlag)
  1997.          .hword  (0x25<<8)                  |(1<<CFlag)
  1998.          .hword  (0x26<<8)                  |(1<<CFlag)
  1999.          .hword  (0x27<<8)            |(1<<VFlag)   |(1<<CFlag)
  2000.          .hword  (0x28<<8)         |(1<<VFlag)   |(1<<CFlag)
  2001.          .hword  (0x29<<8)               |(1<<CFlag)
  2002.          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2003.          .hword  (0x31<<8)      |(1<<HFlag)         |(1<<CFlag)
  2004.          .hword  (0x32<<8)      |(1<<HFlag)         |(1<<CFlag)
  2005.          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2006.          .hword  (0x34<<8)      |(1<<HFlag)         |(1<<CFlag)
  2007.          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2008.          .hword  (0x30<<8)            |(1<<VFlag)   |(1<<CFlag)
  2009.          .hword  (0x31<<8)                  |(1<<CFlag)
  2010.          .hword  (0x32<<8)                  |(1<<CFlag)
  2011.          .hword  (0x33<<8)            |(1<<VFlag)   |(1<<CFlag)
  2012.          .hword  (0x34<<8)                  |(1<<CFlag)
  2013.          .hword  (0x35<<8)            |(1<<VFlag)   |(1<<CFlag)
  2014.          .hword  (0x36<<8)            |(1<<VFlag)   |(1<<CFlag)
  2015.          .hword  (0x37<<8)                  |(1<<CFlag)
  2016.          .hword  (0x38<<8)               |(1<<CFlag)
  2017.          .hword  (0x39<<8)         |(1<<VFlag)   |(1<<CFlag)
  2018.          .hword  (0x40<<8)         |(1<<HFlag)         |(1<<CFlag)
  2019.          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2020.          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2021.          .hword  (0x43<<8)         |(1<<HFlag)         |(1<<CFlag)
  2022.          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2023.          .hword  (0x45<<8)         |(1<<HFlag)         |(1<<CFlag)
  2024.          .hword  (0x40<<8)                     |(1<<CFlag)
  2025.          .hword  (0x41<<8)               |(1<<VFlag)   |(1<<CFlag)
  2026.          .hword  (0x42<<8)               |(1<<VFlag)   |(1<<CFlag)
  2027.          .hword  (0x43<<8)                     |(1<<CFlag)
  2028.          .hword  (0x44<<8)               |(1<<VFlag)   |(1<<CFlag)
  2029.          .hword  (0x45<<8)                     |(1<<CFlag)
  2030.          .hword  (0x46<<8)                     |(1<<CFlag)
  2031.          .hword  (0x47<<8)               |(1<<VFlag)   |(1<<CFlag)
  2032.          .hword  (0x48<<8)            |(1<<VFlag)   |(1<<CFlag)
  2033.          .hword  (0x49<<8)                  |(1<<CFlag)
  2034.          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2035.          .hword  (0x51<<8)         |(1<<HFlag)         |(1<<CFlag)
  2036.          .hword  (0x52<<8)         |(1<<HFlag)         |(1<<CFlag)
  2037.          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2038.          .hword  (0x54<<8)         |(1<<HFlag)         |(1<<CFlag)
  2039.          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2040.          .hword  (0x50<<8)               |(1<<VFlag)   |(1<<CFlag)
  2041.          .hword  (0x51<<8)                     |(1<<CFlag)
  2042.          .hword  (0x52<<8)                     |(1<<CFlag)
  2043.          .hword  (0x53<<8)               |(1<<VFlag)   |(1<<CFlag)
  2044.          .hword  (0x54<<8)                     |(1<<CFlag)
  2045.          .hword  (0x55<<8)               |(1<<VFlag)   |(1<<CFlag)
  2046.          .hword  (0x56<<8)               |(1<<VFlag)   |(1<<CFlag)
  2047.          .hword  (0x57<<8)                     |(1<<CFlag)
  2048.          .hword  (0x58<<8)                  |(1<<CFlag)
  2049.          .hword  (0x59<<8)            |(1<<VFlag)   |(1<<CFlag)
  2050.          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2051.          .hword  (0x61<<8)      |(1<<HFlag)         |(1<<CFlag)
  2052.          .hword  (0x62<<8)      |(1<<HFlag)         |(1<<CFlag)
  2053.          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2054.          .hword  (0x64<<8)      |(1<<HFlag)         |(1<<CFlag)
  2055.          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2056.          .hword  (0x06<<8)               |(1<<VFlag)
  2057.          .hword  (0x07<<8)                  
  2058.          .hword  (0x08<<8)              
  2059.          .hword  (0x09<<8)            |(1<<VFlag)
  2060.          .hword  (0x0A<<8)            |(1<<VFlag)
  2061.          .hword  (0x0B<<8)              
  2062.          .hword  (0x0C<<8)            |(1<<VFlag)
  2063.          .hword  (0x0D<<8)              
  2064.          .hword  (0x0E<<8)              
  2065.          .hword  (0x0F<<8)            |(1<<VFlag)
  2066.          .hword  (0x10<<8)         |(1<<HFlag)      
  2067.          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)
  2068.          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)
  2069.          .hword  (0x13<<8)         |(1<<HFlag)      
  2070.          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)
  2071.          .hword  (0x15<<8)         |(1<<HFlag)      
  2072.          .hword  (0x16<<8)                  
  2073.          .hword  (0x17<<8)               |(1<<VFlag)
  2074.          .hword  (0x18<<8)            |(1<<VFlag)
  2075.          .hword  (0x19<<8)              
  2076.          .hword  (0x1A<<8)              
  2077.          .hword  (0x1B<<8)            |(1<<VFlag)
  2078.          .hword  (0x1C<<8)              
  2079.          .hword  (0x1D<<8)            |(1<<VFlag)
  2080.          .hword  (0x1E<<8)            |(1<<VFlag)
  2081.          .hword  (0x1F<<8)              
  2082.          .hword  (0x20<<8)      |(1<<HFlag)      
  2083.          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)
  2084.          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)
  2085.          .hword  (0x23<<8)      |(1<<HFlag)      
  2086.          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)
  2087.          .hword  (0x25<<8)      |(1<<HFlag)      
  2088.          .hword  (0x26<<8)              
  2089.          .hword  (0x27<<8)            |(1<<VFlag)
  2090.          .hword  (0x28<<8)         |(1<<VFlag)
  2091.          .hword  (0x29<<8)            
  2092.          .hword  (0x2A<<8)            
  2093.          .hword  (0x2B<<8)         |(1<<VFlag)
  2094.          .hword  (0x2C<<8)            
  2095.          .hword  (0x2D<<8)         |(1<<VFlag)
  2096.          .hword  (0x2E<<8)         |(1<<VFlag)
  2097.          .hword  (0x2F<<8)            
  2098.          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)
  2099.          .hword  (0x31<<8)      |(1<<HFlag)      
  2100.          .hword  (0x32<<8)      |(1<<HFlag)      
  2101.          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)
  2102.          .hword  (0x34<<8)      |(1<<HFlag)      
  2103.          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)
  2104.          .hword  (0x36<<8)            |(1<<VFlag)
  2105.          .hword  (0x37<<8)              
  2106.          .hword  (0x38<<8)            
  2107.          .hword  (0x39<<8)         |(1<<VFlag)
  2108.          .hword  (0x3A<<8)         |(1<<VFlag)
  2109.          .hword  (0x3B<<8)            
  2110.          .hword  (0x3C<<8)         |(1<<VFlag)
  2111.          .hword  (0x3D<<8)            
  2112.          .hword  (0x3E<<8)            
  2113.          .hword  (0x3F<<8)         |(1<<VFlag)
  2114.          .hword  (0x40<<8)         |(1<<HFlag)      
  2115.          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)
  2116.          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)
  2117.          .hword  (0x43<<8)         |(1<<HFlag)      
  2118.          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)
  2119.          .hword  (0x45<<8)         |(1<<HFlag)      
  2120.          .hword  (0x46<<8)                  
  2121.          .hword  (0x47<<8)               |(1<<VFlag)
  2122.          .hword  (0x48<<8)            |(1<<VFlag)
  2123.          .hword  (0x49<<8)              
  2124.          .hword  (0x4A<<8)              
  2125.          .hword  (0x4B<<8)            |(1<<VFlag)
  2126.          .hword  (0x4C<<8)              
  2127.          .hword  (0x4D<<8)            |(1<<VFlag)
  2128.          .hword  (0x4E<<8)            |(1<<VFlag)
  2129.          .hword  (0x4F<<8)              
  2130.          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)
  2131.          .hword  (0x51<<8)         |(1<<HFlag)      
  2132.          .hword  (0x52<<8)         |(1<<HFlag)      
  2133.          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)
  2134.          .hword  (0x54<<8)         |(1<<HFlag)      
  2135.          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)
  2136.          .hword  (0x56<<8)               |(1<<VFlag)
  2137.          .hword  (0x57<<8)                  
  2138.          .hword  (0x58<<8)              
  2139.          .hword  (0x59<<8)            |(1<<VFlag)
  2140.          .hword  (0x5A<<8)            |(1<<VFlag)
  2141.          .hword  (0x5B<<8)              
  2142.          .hword  (0x5C<<8)            |(1<<VFlag)
  2143.          .hword  (0x5D<<8)              
  2144.          .hword  (0x5E<<8)              
  2145.          .hword  (0x5F<<8)            |(1<<VFlag)
  2146.          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)
  2147.          .hword  (0x61<<8)      |(1<<HFlag)      
  2148.          .hword  (0x62<<8)      |(1<<HFlag)      
  2149.          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)
  2150.          .hword  (0x64<<8)      |(1<<HFlag)      
  2151.          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)
  2152.          .hword  (0x66<<8)            |(1<<VFlag)
  2153.          .hword  (0x67<<8)              
  2154.          .hword  (0x68<<8)            
  2155.          .hword  (0x69<<8)         |(1<<VFlag)
  2156.          .hword  (0x6A<<8)         |(1<<VFlag)
  2157.          .hword  (0x6B<<8)            
  2158.          .hword  (0x6C<<8)         |(1<<VFlag)
  2159.          .hword  (0x6D<<8)            
  2160.          .hword  (0x6E<<8)            
  2161.          .hword  (0x6F<<8)         |(1<<VFlag)
  2162.          .hword  (0x70<<8)      |(1<<HFlag)      
  2163.          .hword  (0x71<<8)      |(1<<HFlag)   |(1<<VFlag)
  2164.          .hword  (0x72<<8)      |(1<<HFlag)   |(1<<VFlag)
  2165.          .hword  (0x73<<8)      |(1<<HFlag)      
  2166.          .hword  (0x74<<8)      |(1<<HFlag)   |(1<<VFlag)
  2167.          .hword  (0x75<<8)      |(1<<HFlag)      
  2168.          .hword  (0x76<<8)              
  2169.          .hword  (0x77<<8)            |(1<<VFlag)
  2170.          .hword  (0x78<<8)         |(1<<VFlag)
  2171.          .hword  (0x79<<8)            
  2172.          .hword  (0x7A<<8)            
  2173.          .hword  (0x7B<<8)         |(1<<VFlag)
  2174.          .hword  (0x7C<<8)            
  2175.          .hword  (0x7D<<8)         |(1<<VFlag)
  2176.          .hword  (0x7E<<8)         |(1<<VFlag)
  2177.          .hword  (0x7F<<8)            
  2178.          .hword  (0x80<<8)|(1<<SFlag)      |(1<<HFlag)      
  2179.          .hword  (0x81<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)
  2180.          .hword  (0x82<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)
  2181.          .hword  (0x83<<8)|(1<<SFlag)      |(1<<HFlag)      
  2182.          .hword  (0x84<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)
  2183.          .hword  (0x85<<8)|(1<<SFlag)      |(1<<HFlag)      
  2184.          .hword  (0x86<<8)|(1<<SFlag)              
  2185.          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)
  2186.          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)
  2187.          .hword  (0x89<<8)|(1<<SFlag)            
  2188.          .hword  (0x8A<<8)|(1<<SFlag)            
  2189.          .hword  (0x8B<<8)|(1<<SFlag)         |(1<<VFlag)
  2190.          .hword  (0x8C<<8)|(1<<SFlag)            
  2191.          .hword  (0x8D<<8)|(1<<SFlag)         |(1<<VFlag)
  2192.          .hword  (0x8E<<8)|(1<<SFlag)         |(1<<VFlag)
  2193.          .hword  (0x8F<<8)|(1<<SFlag)            
  2194.          .hword  (0x90<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)
  2195.          .hword  (0x91<<8)|(1<<SFlag)      |(1<<HFlag)      
  2196.          .hword  (0x92<<8)|(1<<SFlag)      |(1<<HFlag)      
  2197.          .hword  (0x93<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)
  2198.          .hword  (0x94<<8)|(1<<SFlag)      |(1<<HFlag)      
  2199.          .hword  (0x95<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)
  2200.          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)
  2201.          .hword  (0x97<<8)|(1<<SFlag)              
  2202.          .hword  (0x98<<8)|(1<<SFlag)            
  2203.          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)
  2204.          .hword  (0x9A<<8)|(1<<SFlag)         |(1<<VFlag)
  2205.          .hword  (0x9B<<8)|(1<<SFlag)            
  2206.          .hword  (0x9C<<8)|(1<<SFlag)         |(1<<VFlag)
  2207.          .hword  (0x9D<<8)|(1<<SFlag)            
  2208.          .hword  (0x9E<<8)|(1<<SFlag)            
  2209.          .hword  (0x9F<<8)|(1<<SFlag)         |(1<<VFlag)
  2210.          .hword  (0x00<<8)   |(1<<ZFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2211.          .hword  (0x01<<8)         |(1<<HFlag)         |(1<<CFlag)
  2212.          .hword  (0x02<<8)         |(1<<HFlag)         |(1<<CFlag)
  2213.          .hword  (0x03<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2214.          .hword  (0x04<<8)         |(1<<HFlag)         |(1<<CFlag)
  2215.          .hword  (0x05<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2216.          .hword  (0x06<<8)               |(1<<VFlag)   |(1<<CFlag)
  2217.          .hword  (0x07<<8)                     |(1<<CFlag)
  2218.          .hword  (0x08<<8)                  |(1<<CFlag)
  2219.          .hword  (0x09<<8)            |(1<<VFlag)   |(1<<CFlag)
  2220.          .hword  (0x0A<<8)            |(1<<VFlag)   |(1<<CFlag)
  2221.          .hword  (0x0B<<8)                  |(1<<CFlag)
  2222.          .hword  (0x0C<<8)            |(1<<VFlag)   |(1<<CFlag)
  2223.          .hword  (0x0D<<8)                  |(1<<CFlag)
  2224.          .hword  (0x0E<<8)                  |(1<<CFlag)
  2225.          .hword  (0x0F<<8)            |(1<<VFlag)   |(1<<CFlag)
  2226.          .hword  (0x10<<8)         |(1<<HFlag)         |(1<<CFlag)
  2227.          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2228.          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2229.          .hword  (0x13<<8)         |(1<<HFlag)         |(1<<CFlag)
  2230.          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2231.          .hword  (0x15<<8)         |(1<<HFlag)         |(1<<CFlag)
  2232.          .hword  (0x16<<8)                     |(1<<CFlag)
  2233.          .hword  (0x17<<8)               |(1<<VFlag)   |(1<<CFlag)
  2234.          .hword  (0x18<<8)            |(1<<VFlag)   |(1<<CFlag)
  2235.          .hword  (0x19<<8)                  |(1<<CFlag)
  2236.          .hword  (0x1A<<8)                  |(1<<CFlag)
  2237.          .hword  (0x1B<<8)            |(1<<VFlag)   |(1<<CFlag)
  2238.          .hword  (0x1C<<8)                  |(1<<CFlag)
  2239.          .hword  (0x1D<<8)            |(1<<VFlag)   |(1<<CFlag)
  2240.          .hword  (0x1E<<8)            |(1<<VFlag)   |(1<<CFlag)
  2241.          .hword  (0x1F<<8)                  |(1<<CFlag)
  2242.          .hword  (0x20<<8)      |(1<<HFlag)         |(1<<CFlag)
  2243.          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2244.          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2245.          .hword  (0x23<<8)      |(1<<HFlag)         |(1<<CFlag)
  2246.          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2247.          .hword  (0x25<<8)      |(1<<HFlag)         |(1<<CFlag)
  2248.          .hword  (0x26<<8)                  |(1<<CFlag)
  2249.          .hword  (0x27<<8)            |(1<<VFlag)   |(1<<CFlag)
  2250.          .hword  (0x28<<8)         |(1<<VFlag)   |(1<<CFlag)
  2251.          .hword  (0x29<<8)               |(1<<CFlag)
  2252.          .hword  (0x2A<<8)               |(1<<CFlag)
  2253.          .hword  (0x2B<<8)         |(1<<VFlag)   |(1<<CFlag)
  2254.          .hword  (0x2C<<8)               |(1<<CFlag)
  2255.          .hword  (0x2D<<8)         |(1<<VFlag)   |(1<<CFlag)
  2256.          .hword  (0x2E<<8)         |(1<<VFlag)   |(1<<CFlag)
  2257.          .hword  (0x2F<<8)               |(1<<CFlag)
  2258.          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2259.          .hword  (0x31<<8)      |(1<<HFlag)         |(1<<CFlag)
  2260.          .hword  (0x32<<8)      |(1<<HFlag)         |(1<<CFlag)
  2261.          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2262.          .hword  (0x34<<8)      |(1<<HFlag)         |(1<<CFlag)
  2263.          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2264.          .hword  (0x36<<8)            |(1<<VFlag)   |(1<<CFlag)
  2265.          .hword  (0x37<<8)                  |(1<<CFlag)
  2266.          .hword  (0x38<<8)               |(1<<CFlag)
  2267.          .hword  (0x39<<8)         |(1<<VFlag)   |(1<<CFlag)
  2268.          .hword  (0x3A<<8)         |(1<<VFlag)   |(1<<CFlag)
  2269.          .hword  (0x3B<<8)               |(1<<CFlag)
  2270.          .hword  (0x3C<<8)         |(1<<VFlag)   |(1<<CFlag)
  2271.          .hword  (0x3D<<8)               |(1<<CFlag)
  2272.          .hword  (0x3E<<8)               |(1<<CFlag)
  2273.          .hword  (0x3F<<8)         |(1<<VFlag)   |(1<<CFlag)
  2274.          .hword  (0x40<<8)         |(1<<HFlag)         |(1<<CFlag)
  2275.          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2276.          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2277.          .hword  (0x43<<8)         |(1<<HFlag)         |(1<<CFlag)
  2278.          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2279.          .hword  (0x45<<8)         |(1<<HFlag)         |(1<<CFlag)
  2280.          .hword  (0x46<<8)                     |(1<<CFlag)
  2281.          .hword  (0x47<<8)               |(1<<VFlag)   |(1<<CFlag)
  2282.          .hword  (0x48<<8)            |(1<<VFlag)   |(1<<CFlag)
  2283.          .hword  (0x49<<8)                  |(1<<CFlag)
  2284.          .hword  (0x4A<<8)                  |(1<<CFlag)
  2285.          .hword  (0x4B<<8)            |(1<<VFlag)   |(1<<CFlag)
  2286.          .hword  (0x4C<<8)                  |(1<<CFlag)
  2287.          .hword  (0x4D<<8)            |(1<<VFlag)   |(1<<CFlag)
  2288.          .hword  (0x4E<<8)            |(1<<VFlag)   |(1<<CFlag)
  2289.          .hword  (0x4F<<8)                  |(1<<CFlag)
  2290.          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2291.          .hword  (0x51<<8)         |(1<<HFlag)         |(1<<CFlag)
  2292.          .hword  (0x52<<8)         |(1<<HFlag)         |(1<<CFlag)
  2293.          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2294.          .hword  (0x54<<8)         |(1<<HFlag)         |(1<<CFlag)
  2295.          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2296.          .hword  (0x56<<8)               |(1<<VFlag)   |(1<<CFlag)
  2297.          .hword  (0x57<<8)                     |(1<<CFlag)
  2298.          .hword  (0x58<<8)                  |(1<<CFlag)
  2299.          .hword  (0x59<<8)            |(1<<VFlag)   |(1<<CFlag)
  2300.          .hword  (0x5A<<8)            |(1<<VFlag)   |(1<<CFlag)
  2301.          .hword  (0x5B<<8)                  |(1<<CFlag)
  2302.          .hword  (0x5C<<8)            |(1<<VFlag)   |(1<<CFlag)
  2303.          .hword  (0x5D<<8)                  |(1<<CFlag)
  2304.          .hword  (0x5E<<8)                  |(1<<CFlag)
  2305.          .hword  (0x5F<<8)            |(1<<VFlag)   |(1<<CFlag)
  2306.          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2307.          .hword  (0x61<<8)      |(1<<HFlag)         |(1<<CFlag)
  2308.          .hword  (0x62<<8)      |(1<<HFlag)         |(1<<CFlag)
  2309.          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2310.          .hword  (0x64<<8)      |(1<<HFlag)         |(1<<CFlag)
  2311.          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2312.          .hword  (0x66<<8)            |(1<<VFlag)   |(1<<CFlag)
  2313.          .hword  (0x67<<8)                  |(1<<CFlag)
  2314.          .hword  (0x68<<8)               |(1<<CFlag)
  2315.          .hword  (0x69<<8)         |(1<<VFlag)   |(1<<CFlag)
  2316.          .hword  (0x6A<<8)         |(1<<VFlag)   |(1<<CFlag)
  2317.          .hword  (0x6B<<8)               |(1<<CFlag)
  2318.          .hword  (0x6C<<8)         |(1<<VFlag)   |(1<<CFlag)
  2319.          .hword  (0x6D<<8)               |(1<<CFlag)
  2320.          .hword  (0x6E<<8)               |(1<<CFlag)
  2321.          .hword  (0x6F<<8)         |(1<<VFlag)   |(1<<CFlag)
  2322.          .hword  (0x70<<8)      |(1<<HFlag)         |(1<<CFlag)
  2323.          .hword  (0x71<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2324.          .hword  (0x72<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2325.          .hword  (0x73<<8)      |(1<<HFlag)         |(1<<CFlag)
  2326.          .hword  (0x74<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2327.          .hword  (0x75<<8)      |(1<<HFlag)         |(1<<CFlag)
  2328.          .hword  (0x76<<8)                  |(1<<CFlag)
  2329.          .hword  (0x77<<8)            |(1<<VFlag)   |(1<<CFlag)
  2330.          .hword  (0x78<<8)         |(1<<VFlag)   |(1<<CFlag)
  2331.          .hword  (0x79<<8)               |(1<<CFlag)
  2332.          .hword  (0x7A<<8)               |(1<<CFlag)
  2333.          .hword  (0x7B<<8)         |(1<<VFlag)   |(1<<CFlag)
  2334.          .hword  (0x7C<<8)               |(1<<CFlag)
  2335.          .hword  (0x7D<<8)         |(1<<VFlag)   |(1<<CFlag)
  2336.          .hword  (0x7E<<8)         |(1<<VFlag)   |(1<<CFlag)
  2337.          .hword  (0x7F<<8)               |(1<<CFlag)
  2338.          .hword  (0x80<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)
  2339.          .hword  (0x81<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2340.          .hword  (0x82<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2341.          .hword  (0x83<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)
  2342.          .hword  (0x84<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2343.          .hword  (0x85<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)
  2344.          .hword  (0x86<<8)|(1<<SFlag)                  |(1<<CFlag)
  2345.          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)
  2346.          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  2347.          .hword  (0x89<<8)|(1<<SFlag)               |(1<<CFlag)
  2348.          .hword  (0x8A<<8)|(1<<SFlag)               |(1<<CFlag)
  2349.          .hword  (0x8B<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  2350.          .hword  (0x8C<<8)|(1<<SFlag)               |(1<<CFlag)
  2351.          .hword  (0x8D<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  2352.          .hword  (0x8E<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  2353.          .hword  (0x8F<<8)|(1<<SFlag)               |(1<<CFlag)
  2354.          .hword  (0x90<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2355.          .hword  (0x91<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)
  2356.          .hword  (0x92<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)
  2357.          .hword  (0x93<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2358.          .hword  (0x94<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)
  2359.          .hword  (0x95<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2360.          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)
  2361.          .hword  (0x97<<8)|(1<<SFlag)                  |(1<<CFlag)
  2362.          .hword  (0x98<<8)|(1<<SFlag)               |(1<<CFlag)
  2363.          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  2364.          .hword  (0x9A<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  2365.          .hword  (0x9B<<8)|(1<<SFlag)               |(1<<CFlag)
  2366.          .hword  (0x9C<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  2367.          .hword  (0x9D<<8)|(1<<SFlag)               |(1<<CFlag)
  2368.          .hword  (0x9E<<8)|(1<<SFlag)               |(1<<CFlag)
  2369.          .hword  (0x9F<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  2370.          .hword  (0xA0<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2371.          .hword  (0xA1<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)
  2372.          .hword  (0xA2<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)
  2373.          .hword  (0xA3<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2374.          .hword  (0xA4<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)
  2375.          .hword  (0xA5<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2376.          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  2377.          .hword  (0xA7<<8)|(1<<SFlag)               |(1<<CFlag)
  2378.          .hword  (0xA8<<8)|(1<<SFlag)            |(1<<CFlag)
  2379.          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)
  2380.          .hword  (0xAA<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)
  2381.          .hword  (0xAB<<8)|(1<<SFlag)            |(1<<CFlag)
  2382.          .hword  (0xAC<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)
  2383.          .hword  (0xAD<<8)|(1<<SFlag)            |(1<<CFlag)
  2384.          .hword  (0xAE<<8)|(1<<SFlag)            |(1<<CFlag)
  2385.          .hword  (0xAF<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)
  2386.          .hword  (0xB0<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)
  2387.          .hword  (0xB1<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2388.          .hword  (0xB2<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2389.          .hword  (0xB3<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)
  2390.          .hword  (0xB4<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2391.          .hword  (0xB5<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)
  2392.          .hword  (0xB6<<8)|(1<<SFlag)               |(1<<CFlag)
  2393.          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  2394.          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)
  2395.          .hword  (0xB9<<8)|(1<<SFlag)            |(1<<CFlag)
  2396.          .hword  (0xBA<<8)|(1<<SFlag)            |(1<<CFlag)
  2397.          .hword  (0xBB<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)
  2398.          .hword  (0xBC<<8)|(1<<SFlag)            |(1<<CFlag)
  2399.          .hword  (0xBD<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)
  2400.          .hword  (0xBE<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)
  2401.          .hword  (0xBF<<8)|(1<<SFlag)            |(1<<CFlag)
  2402.          .hword  (0xC0<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2403.          .hword  (0xC1<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)
  2404.          .hword  (0xC2<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)
  2405.          .hword  (0xC3<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2406.          .hword  (0xC4<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)
  2407.          .hword  (0xC5<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2408.          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)
  2409.          .hword  (0xC7<<8)|(1<<SFlag)                  |(1<<CFlag)
  2410.          .hword  (0xC8<<8)|(1<<SFlag)               |(1<<CFlag)
  2411.          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  2412.          .hword  (0xCA<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  2413.          .hword  (0xCB<<8)|(1<<SFlag)               |(1<<CFlag)
  2414.          .hword  (0xCC<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  2415.          .hword  (0xCD<<8)|(1<<SFlag)               |(1<<CFlag)
  2416.          .hword  (0xCE<<8)|(1<<SFlag)               |(1<<CFlag)
  2417.          .hword  (0xCF<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  2418.          .hword  (0xD0<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)
  2419.          .hword  (0xD1<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2420.          .hword  (0xD2<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2421.          .hword  (0xD3<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)
  2422.          .hword  (0xD4<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2423.          .hword  (0xD5<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)
  2424.          .hword  (0xD6<<8)|(1<<SFlag)                  |(1<<CFlag)
  2425.          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)
  2426.          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  2427.          .hword  (0xD9<<8)|(1<<SFlag)               |(1<<CFlag)
  2428.          .hword  (0xDA<<8)|(1<<SFlag)               |(1<<CFlag)
  2429.          .hword  (0xDB<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  2430.          .hword  (0xDC<<8)|(1<<SFlag)               |(1<<CFlag)
  2431.          .hword  (0xDD<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  2432.          .hword  (0xDE<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  2433.          .hword  (0xDF<<8)|(1<<SFlag)               |(1<<CFlag)
  2434.          .hword  (0xE0<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)
  2435.          .hword  (0xE1<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2436.          .hword  (0xE2<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2437.          .hword  (0xE3<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)
  2438.          .hword  (0xE4<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2439.          .hword  (0xE5<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)
  2440.          .hword  (0xE6<<8)|(1<<SFlag)               |(1<<CFlag)
  2441.          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  2442.          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)
  2443.          .hword  (0xE9<<8)|(1<<SFlag)            |(1<<CFlag)
  2444.          .hword  (0xEA<<8)|(1<<SFlag)            |(1<<CFlag)
  2445.          .hword  (0xEB<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)
  2446.          .hword  (0xEC<<8)|(1<<SFlag)            |(1<<CFlag)
  2447.          .hword  (0xED<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)
  2448.          .hword  (0xEE<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)
  2449.          .hword  (0xEF<<8)|(1<<SFlag)            |(1<<CFlag)
  2450.          .hword  (0xF0<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2451.          .hword  (0xF1<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)
  2452.          .hword  (0xF2<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)
  2453.          .hword  (0xF3<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2454.          .hword  (0xF4<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)
  2455.          .hword  (0xF5<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2456.          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)
  2457.          .hword  (0xF7<<8)|(1<<SFlag)               |(1<<CFlag)
  2458.          .hword  (0xF8<<8)|(1<<SFlag)            |(1<<CFlag)
  2459.          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)
  2460.          .hword  (0xFA<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)
  2461.          .hword  (0xFB<<8)|(1<<SFlag)            |(1<<CFlag)
  2462.          .hword  (0xFC<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)
  2463.          .hword  (0xFD<<8)|(1<<SFlag)            |(1<<CFlag)
  2464.          .hword  (0xFE<<8)|(1<<SFlag)            |(1<<CFlag)
  2465.          .hword  (0xFF<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)
  2466.          .hword  (0x00<<8)   |(1<<ZFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2467.          .hword  (0x01<<8)         |(1<<HFlag)         |(1<<CFlag)
  2468.          .hword  (0x02<<8)         |(1<<HFlag)         |(1<<CFlag)
  2469.          .hword  (0x03<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2470.          .hword  (0x04<<8)         |(1<<HFlag)         |(1<<CFlag)
  2471.          .hword  (0x05<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2472.          .hword  (0x06<<8)               |(1<<VFlag)   |(1<<CFlag)
  2473.          .hword  (0x07<<8)                     |(1<<CFlag)
  2474.          .hword  (0x08<<8)                  |(1<<CFlag)
  2475.          .hword  (0x09<<8)            |(1<<VFlag)   |(1<<CFlag)
  2476.          .hword  (0x0A<<8)            |(1<<VFlag)   |(1<<CFlag)
  2477.          .hword  (0x0B<<8)                  |(1<<CFlag)
  2478.          .hword  (0x0C<<8)            |(1<<VFlag)   |(1<<CFlag)
  2479.          .hword  (0x0D<<8)                  |(1<<CFlag)
  2480.          .hword  (0x0E<<8)                  |(1<<CFlag)
  2481.          .hword  (0x0F<<8)            |(1<<VFlag)   |(1<<CFlag)
  2482.          .hword  (0x10<<8)         |(1<<HFlag)         |(1<<CFlag)
  2483.          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2484.          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2485.          .hword  (0x13<<8)         |(1<<HFlag)         |(1<<CFlag)
  2486.          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2487.          .hword  (0x15<<8)         |(1<<HFlag)         |(1<<CFlag)
  2488.          .hword  (0x16<<8)                     |(1<<CFlag)
  2489.          .hword  (0x17<<8)               |(1<<VFlag)   |(1<<CFlag)
  2490.          .hword  (0x18<<8)            |(1<<VFlag)   |(1<<CFlag)
  2491.          .hword  (0x19<<8)                  |(1<<CFlag)
  2492.          .hword  (0x1A<<8)                  |(1<<CFlag)
  2493.          .hword  (0x1B<<8)            |(1<<VFlag)   |(1<<CFlag)
  2494.          .hword  (0x1C<<8)                  |(1<<CFlag)
  2495.          .hword  (0x1D<<8)            |(1<<VFlag)   |(1<<CFlag)
  2496.          .hword  (0x1E<<8)            |(1<<VFlag)   |(1<<CFlag)
  2497.          .hword  (0x1F<<8)                  |(1<<CFlag)
  2498.          .hword  (0x20<<8)      |(1<<HFlag)         |(1<<CFlag)
  2499.          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2500.          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2501.          .hword  (0x23<<8)      |(1<<HFlag)         |(1<<CFlag)
  2502.          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2503.          .hword  (0x25<<8)      |(1<<HFlag)         |(1<<CFlag)
  2504.          .hword  (0x26<<8)                  |(1<<CFlag)
  2505.          .hword  (0x27<<8)            |(1<<VFlag)   |(1<<CFlag)
  2506.          .hword  (0x28<<8)         |(1<<VFlag)   |(1<<CFlag)
  2507.          .hword  (0x29<<8)               |(1<<CFlag)
  2508.          .hword  (0x2A<<8)               |(1<<CFlag)
  2509.          .hword  (0x2B<<8)         |(1<<VFlag)   |(1<<CFlag)
  2510.          .hword  (0x2C<<8)               |(1<<CFlag)
  2511.          .hword  (0x2D<<8)         |(1<<VFlag)   |(1<<CFlag)
  2512.          .hword  (0x2E<<8)         |(1<<VFlag)   |(1<<CFlag)
  2513.          .hword  (0x2F<<8)               |(1<<CFlag)
  2514.          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2515.          .hword  (0x31<<8)      |(1<<HFlag)         |(1<<CFlag)
  2516.          .hword  (0x32<<8)      |(1<<HFlag)         |(1<<CFlag)
  2517.          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2518.          .hword  (0x34<<8)      |(1<<HFlag)         |(1<<CFlag)
  2519.          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2520.          .hword  (0x36<<8)            |(1<<VFlag)   |(1<<CFlag)
  2521.          .hword  (0x37<<8)                  |(1<<CFlag)
  2522.          .hword  (0x38<<8)               |(1<<CFlag)
  2523.          .hword  (0x39<<8)         |(1<<VFlag)   |(1<<CFlag)
  2524.          .hword  (0x3A<<8)         |(1<<VFlag)   |(1<<CFlag)
  2525.          .hword  (0x3B<<8)               |(1<<CFlag)
  2526.          .hword  (0x3C<<8)         |(1<<VFlag)   |(1<<CFlag)
  2527.          .hword  (0x3D<<8)               |(1<<CFlag)
  2528.          .hword  (0x3E<<8)               |(1<<CFlag)
  2529.          .hword  (0x3F<<8)         |(1<<VFlag)   |(1<<CFlag)
  2530.          .hword  (0x40<<8)         |(1<<HFlag)         |(1<<CFlag)
  2531.          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2532.          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2533.          .hword  (0x43<<8)         |(1<<HFlag)         |(1<<CFlag)
  2534.          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2535.          .hword  (0x45<<8)         |(1<<HFlag)         |(1<<CFlag)
  2536.          .hword  (0x46<<8)                     |(1<<CFlag)
  2537.          .hword  (0x47<<8)               |(1<<VFlag)   |(1<<CFlag)
  2538.          .hword  (0x48<<8)            |(1<<VFlag)   |(1<<CFlag)
  2539.          .hword  (0x49<<8)                  |(1<<CFlag)
  2540.          .hword  (0x4A<<8)                  |(1<<CFlag)
  2541.          .hword  (0x4B<<8)            |(1<<VFlag)   |(1<<CFlag)
  2542.          .hword  (0x4C<<8)                  |(1<<CFlag)
  2543.          .hword  (0x4D<<8)            |(1<<VFlag)   |(1<<CFlag)
  2544.          .hword  (0x4E<<8)            |(1<<VFlag)   |(1<<CFlag)
  2545.          .hword  (0x4F<<8)                  |(1<<CFlag)
  2546.          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2547.          .hword  (0x51<<8)         |(1<<HFlag)         |(1<<CFlag)
  2548.          .hword  (0x52<<8)         |(1<<HFlag)         |(1<<CFlag)
  2549.          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2550.          .hword  (0x54<<8)         |(1<<HFlag)         |(1<<CFlag)
  2551.          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2552.          .hword  (0x56<<8)               |(1<<VFlag)   |(1<<CFlag)
  2553.          .hword  (0x57<<8)                     |(1<<CFlag)
  2554.          .hword  (0x58<<8)                  |(1<<CFlag)
  2555.          .hword  (0x59<<8)            |(1<<VFlag)   |(1<<CFlag)
  2556.          .hword  (0x5A<<8)            |(1<<VFlag)   |(1<<CFlag)
  2557.          .hword  (0x5B<<8)                  |(1<<CFlag)
  2558.          .hword  (0x5C<<8)            |(1<<VFlag)   |(1<<CFlag)
  2559.          .hword  (0x5D<<8)                  |(1<<CFlag)
  2560.          .hword  (0x5E<<8)                  |(1<<CFlag)
  2561.          .hword  (0x5F<<8)            |(1<<VFlag)   |(1<<CFlag)
  2562.          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2563.          .hword  (0x61<<8)      |(1<<HFlag)         |(1<<CFlag)
  2564.          .hword  (0x62<<8)      |(1<<HFlag)         |(1<<CFlag)
  2565.          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2566.          .hword  (0x64<<8)      |(1<<HFlag)         |(1<<CFlag)
  2567.          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)
  2568.          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)|(1<<NFlag)  
  2569.          .hword  (0x01<<8)                  |(1<<NFlag)  
  2570.          .hword  (0x02<<8)                  |(1<<NFlag)  
  2571.          .hword  (0x03<<8)               |(1<<VFlag)|(1<<NFlag)  
  2572.          .hword  (0x04<<8)                  |(1<<NFlag)  
  2573.          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)  
  2574.          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)  
  2575.          .hword  (0x07<<8)                  |(1<<NFlag)  
  2576.          .hword  (0x08<<8)               |(1<<NFlag)  
  2577.          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)  
  2578.          .hword  (0x04<<8)                  |(1<<NFlag)  
  2579.          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)  
  2580.          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)  
  2581.          .hword  (0x07<<8)                  |(1<<NFlag)  
  2582.          .hword  (0x08<<8)               |(1<<NFlag)  
  2583.          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)  
  2584.          .hword  (0x10<<8)                  |(1<<NFlag)  
  2585.          .hword  (0x11<<8)               |(1<<VFlag)|(1<<NFlag)  
  2586.          .hword  (0x12<<8)               |(1<<VFlag)|(1<<NFlag)  
  2587.          .hword  (0x13<<8)                  |(1<<NFlag)  
  2588.          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)  
  2589.          .hword  (0x15<<8)                  |(1<<NFlag)  
  2590.          .hword  (0x16<<8)                  |(1<<NFlag)  
  2591.          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)  
  2592.          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)  
  2593.          .hword  (0x19<<8)               |(1<<NFlag)  
  2594.          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)  
  2595.          .hword  (0x15<<8)                  |(1<<NFlag)  
  2596.          .hword  (0x16<<8)                  |(1<<NFlag)  
  2597.          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)  
  2598.          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)  
  2599.          .hword  (0x19<<8)               |(1<<NFlag)  
  2600.          .hword  (0x20<<8)               |(1<<NFlag)  
  2601.          .hword  (0x21<<8)            |(1<<VFlag)|(1<<NFlag)  
  2602.          .hword  (0x22<<8)            |(1<<VFlag)|(1<<NFlag)  
  2603.          .hword  (0x23<<8)               |(1<<NFlag)  
  2604.          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)  
  2605.          .hword  (0x25<<8)               |(1<<NFlag)  
  2606.          .hword  (0x26<<8)               |(1<<NFlag)  
  2607.          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)  
  2608.          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)  
  2609.          .hword  (0x29<<8)            |(1<<NFlag)  
  2610.          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)  
  2611.          .hword  (0x25<<8)               |(1<<NFlag)  
  2612.          .hword  (0x26<<8)               |(1<<NFlag)  
  2613.          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)  
  2614.          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)  
  2615.          .hword  (0x29<<8)            |(1<<NFlag)  
  2616.          .hword  (0x30<<8)            |(1<<VFlag)|(1<<NFlag)  
  2617.          .hword  (0x31<<8)               |(1<<NFlag)  
  2618.          .hword  (0x32<<8)               |(1<<NFlag)  
  2619.          .hword  (0x33<<8)            |(1<<VFlag)|(1<<NFlag)  
  2620.          .hword  (0x34<<8)               |(1<<NFlag)  
  2621.          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)  
  2622.          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)  
  2623.          .hword  (0x37<<8)               |(1<<NFlag)  
  2624.          .hword  (0x38<<8)            |(1<<NFlag)  
  2625.          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)  
  2626.          .hword  (0x34<<8)               |(1<<NFlag)  
  2627.          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)  
  2628.          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)  
  2629.          .hword  (0x37<<8)               |(1<<NFlag)  
  2630.          .hword  (0x38<<8)            |(1<<NFlag)  
  2631.          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)  
  2632.          .hword  (0x40<<8)                  |(1<<NFlag)  
  2633.          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)  
  2634.          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)  
  2635.          .hword  (0x43<<8)                  |(1<<NFlag)  
  2636.          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)  
  2637.          .hword  (0x45<<8)                  |(1<<NFlag)  
  2638.          .hword  (0x46<<8)                  |(1<<NFlag)  
  2639.          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)  
  2640.          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)  
  2641.          .hword  (0x49<<8)               |(1<<NFlag)  
  2642.          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)  
  2643.          .hword  (0x45<<8)                  |(1<<NFlag)  
  2644.          .hword  (0x46<<8)                  |(1<<NFlag)  
  2645.          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)  
  2646.          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)  
  2647.          .hword  (0x49<<8)               |(1<<NFlag)  
  2648.          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)  
  2649.          .hword  (0x51<<8)                  |(1<<NFlag)  
  2650.          .hword  (0x52<<8)                  |(1<<NFlag)  
  2651.          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)  
  2652.          .hword  (0x54<<8)                  |(1<<NFlag)  
  2653.          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)  
  2654.          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)  
  2655.          .hword  (0x57<<8)                  |(1<<NFlag)  
  2656.          .hword  (0x58<<8)               |(1<<NFlag)  
  2657.          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)  
  2658.          .hword  (0x54<<8)                  |(1<<NFlag)  
  2659.          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)  
  2660.          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)  
  2661.          .hword  (0x57<<8)                  |(1<<NFlag)  
  2662.          .hword  (0x58<<8)               |(1<<NFlag)  
  2663.          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)  
  2664.          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)  
  2665.          .hword  (0x61<<8)               |(1<<NFlag)  
  2666.          .hword  (0x62<<8)               |(1<<NFlag)  
  2667.          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)  
  2668.          .hword  (0x64<<8)               |(1<<NFlag)  
  2669.          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)  
  2670.          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)  
  2671.          .hword  (0x67<<8)               |(1<<NFlag)  
  2672.          .hword  (0x68<<8)            |(1<<NFlag)  
  2673.          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)  
  2674.          .hword  (0x64<<8)               |(1<<NFlag)  
  2675.          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)  
  2676.          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)  
  2677.          .hword  (0x67<<8)               |(1<<NFlag)  
  2678.          .hword  (0x68<<8)            |(1<<NFlag)  
  2679.          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)  
  2680.          .hword  (0x70<<8)               |(1<<NFlag)  
  2681.          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)  
  2682.          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)  
  2683.          .hword  (0x73<<8)               |(1<<NFlag)  
  2684.          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)  
  2685.          .hword  (0x75<<8)               |(1<<NFlag)  
  2686.          .hword  (0x76<<8)               |(1<<NFlag)  
  2687.          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)  
  2688.          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)  
  2689.          .hword  (0x79<<8)            |(1<<NFlag)  
  2690.          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)  
  2691.          .hword  (0x75<<8)               |(1<<NFlag)  
  2692.          .hword  (0x76<<8)               |(1<<NFlag)  
  2693.          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)  
  2694.          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)  
  2695.          .hword  (0x79<<8)            |(1<<NFlag)  
  2696.          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)  
  2697.          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)  
  2698.          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)  
  2699.          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)  
  2700.          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)  
  2701.          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)  
  2702.          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)  
  2703.          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)  
  2704.          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)  
  2705.          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)  
  2706.          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)  
  2707.          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)  
  2708.          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)  
  2709.          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)  
  2710.          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)  
  2711.          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)  
  2712.          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)  
  2713.          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)  
  2714.          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)  
  2715.          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)  
  2716.          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)  
  2717.          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)  
  2718.          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)  
  2719.          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)  
  2720.          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)  
  2721.          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)  
  2722.          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)
  2723.          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2724.          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2725.          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)
  2726.          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)
  2727.          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2728.          .hword  (0x40<<8)                  |(1<<NFlag)|(1<<CFlag)
  2729.          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2730.          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2731.          .hword  (0x43<<8)                  |(1<<NFlag)|(1<<CFlag)
  2732.          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2733.          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)
  2734.          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)
  2735.          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2736.          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2737.          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)
  2738.          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2739.          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)
  2740.          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)
  2741.          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2742.          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2743.          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)
  2744.          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2745.          .hword  (0x51<<8)                  |(1<<NFlag)|(1<<CFlag)
  2746.          .hword  (0x52<<8)                  |(1<<NFlag)|(1<<CFlag)
  2747.          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2748.          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)
  2749.          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2750.          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2751.          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)
  2752.          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)
  2753.          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2754.          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)
  2755.          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2756.          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2757.          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)
  2758.          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)
  2759.          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2760.          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2761.          .hword  (0x61<<8)               |(1<<NFlag)|(1<<CFlag)
  2762.          .hword  (0x62<<8)               |(1<<NFlag)|(1<<CFlag)
  2763.          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2764.          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)
  2765.          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2766.          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2767.          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)
  2768.          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)
  2769.          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2770.          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)
  2771.          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2772.          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2773.          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)
  2774.          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)
  2775.          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2776.          .hword  (0x70<<8)               |(1<<NFlag)|(1<<CFlag)
  2777.          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2778.          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2779.          .hword  (0x73<<8)               |(1<<NFlag)|(1<<CFlag)
  2780.          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2781.          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)
  2782.          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)
  2783.          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2784.          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2785.          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)
  2786.          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2787.          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)
  2788.          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)
  2789.          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2790.          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2791.          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)
  2792.          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  2793.          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2794.          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2795.          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  2796.          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2797.          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  2798.          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  2799.          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2800.          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2801.          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  2802.          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2803.          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  2804.          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  2805.          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2806.          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2807.          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  2808.          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2809.          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  2810.          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  2811.          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2812.          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  2813.          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2814.          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2815.          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  2816.          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  2817.          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2818.          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  2819.          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2820.          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2821.          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  2822.          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  2823.          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2824.          .hword  (0xA0<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2825.          .hword  (0xA1<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  2826.          .hword  (0xA2<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  2827.          .hword  (0xA3<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2828.          .hword  (0xA4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  2829.          .hword  (0xA5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2830.          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2831.          .hword  (0xA7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  2832.          .hword  (0xA8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)
  2833.          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2834.          .hword  (0xA4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  2835.          .hword  (0xA5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2836.          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2837.          .hword  (0xA7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  2838.          .hword  (0xA8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)
  2839.          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2840.          .hword  (0xB0<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  2841.          .hword  (0xB1<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2842.          .hword  (0xB2<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2843.          .hword  (0xB3<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  2844.          .hword  (0xB4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2845.          .hword  (0xB5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  2846.          .hword  (0xB6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  2847.          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2848.          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2849.          .hword  (0xB9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)
  2850.          .hword  (0xB4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2851.          .hword  (0xB5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  2852.          .hword  (0xB6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  2853.          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2854.          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2855.          .hword  (0xB9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)
  2856.          .hword  (0xC0<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2857.          .hword  (0xC1<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  2858.          .hword  (0xC2<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  2859.          .hword  (0xC3<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2860.          .hword  (0xC4<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  2861.          .hword  (0xC5<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2862.          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2863.          .hword  (0xC7<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  2864.          .hword  (0xC8<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  2865.          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2866.          .hword  (0xC4<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  2867.          .hword  (0xC5<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2868.          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2869.          .hword  (0xC7<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  2870.          .hword  (0xC8<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  2871.          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2872.          .hword  (0xD0<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  2873.          .hword  (0xD1<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2874.          .hword  (0xD2<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2875.          .hword  (0xD3<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  2876.          .hword  (0xD4<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2877.          .hword  (0xD5<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  2878.          .hword  (0xD6<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  2879.          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2880.          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2881.          .hword  (0xD9<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  2882.          .hword  (0xD4<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2883.          .hword  (0xD5<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  2884.          .hword  (0xD6<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  2885.          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2886.          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2887.          .hword  (0xD9<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  2888.          .hword  (0xE0<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  2889.          .hword  (0xE1<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2890.          .hword  (0xE2<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2891.          .hword  (0xE3<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  2892.          .hword  (0xE4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2893.          .hword  (0xE5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  2894.          .hword  (0xE6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  2895.          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2896.          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2897.          .hword  (0xE9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)
  2898.          .hword  (0xE4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2899.          .hword  (0xE5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  2900.          .hword  (0xE6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  2901.          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2902.          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2903.          .hword  (0xE9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)
  2904.          .hword  (0xF0<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2905.          .hword  (0xF1<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  2906.          .hword  (0xF2<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  2907.          .hword  (0xF3<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2908.          .hword  (0xF4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  2909.          .hword  (0xF5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2910.          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2911.          .hword  (0xF7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  2912.          .hword  (0xF8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)
  2913.          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2914.          .hword  (0xF4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  2915.          .hword  (0xF5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2916.          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2917.          .hword  (0xF7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  2918.          .hword  (0xF8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)
  2919.          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2920.          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2921.          .hword  (0x01<<8)                  |(1<<NFlag)|(1<<CFlag)
  2922.          .hword  (0x02<<8)                  |(1<<NFlag)|(1<<CFlag)
  2923.          .hword  (0x03<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2924.          .hword  (0x04<<8)                  |(1<<NFlag)|(1<<CFlag)
  2925.          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2926.          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2927.          .hword  (0x07<<8)                  |(1<<NFlag)|(1<<CFlag)
  2928.          .hword  (0x08<<8)               |(1<<NFlag)|(1<<CFlag)
  2929.          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2930.          .hword  (0x04<<8)                  |(1<<NFlag)|(1<<CFlag)
  2931.          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2932.          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2933.          .hword  (0x07<<8)                  |(1<<NFlag)|(1<<CFlag)
  2934.          .hword  (0x08<<8)               |(1<<NFlag)|(1<<CFlag)
  2935.          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2936.          .hword  (0x10<<8)                  |(1<<NFlag)|(1<<CFlag)
  2937.          .hword  (0x11<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2938.          .hword  (0x12<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2939.          .hword  (0x13<<8)                  |(1<<NFlag)|(1<<CFlag)
  2940.          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2941.          .hword  (0x15<<8)                  |(1<<NFlag)|(1<<CFlag)
  2942.          .hword  (0x16<<8)                  |(1<<NFlag)|(1<<CFlag)
  2943.          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2944.          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2945.          .hword  (0x19<<8)               |(1<<NFlag)|(1<<CFlag)
  2946.          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2947.          .hword  (0x15<<8)                  |(1<<NFlag)|(1<<CFlag)
  2948.          .hword  (0x16<<8)                  |(1<<NFlag)|(1<<CFlag)
  2949.          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2950.          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2951.          .hword  (0x19<<8)               |(1<<NFlag)|(1<<CFlag)
  2952.          .hword  (0x20<<8)               |(1<<NFlag)|(1<<CFlag)
  2953.          .hword  (0x21<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2954.          .hword  (0x22<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2955.          .hword  (0x23<<8)               |(1<<NFlag)|(1<<CFlag)
  2956.          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2957.          .hword  (0x25<<8)               |(1<<NFlag)|(1<<CFlag)
  2958.          .hword  (0x26<<8)               |(1<<NFlag)|(1<<CFlag)
  2959.          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2960.          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2961.          .hword  (0x29<<8)            |(1<<NFlag)|(1<<CFlag)
  2962.          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2963.          .hword  (0x25<<8)               |(1<<NFlag)|(1<<CFlag)
  2964.          .hword  (0x26<<8)               |(1<<NFlag)|(1<<CFlag)
  2965.          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2966.          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2967.          .hword  (0x29<<8)            |(1<<NFlag)|(1<<CFlag)
  2968.          .hword  (0x30<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2969.          .hword  (0x31<<8)               |(1<<NFlag)|(1<<CFlag)
  2970.          .hword  (0x32<<8)               |(1<<NFlag)|(1<<CFlag)
  2971.          .hword  (0x33<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2972.          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)
  2973.          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2974.          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2975.          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)
  2976.          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)
  2977.          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2978.          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)
  2979.          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2980.          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2981.          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)
  2982.          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)
  2983.          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2984.          .hword  (0x40<<8)                  |(1<<NFlag)|(1<<CFlag)
  2985.          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2986.          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2987.          .hword  (0x43<<8)                  |(1<<NFlag)|(1<<CFlag)
  2988.          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2989.          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)
  2990.          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)
  2991.          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2992.          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2993.          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)
  2994.          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2995.          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)
  2996.          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)
  2997.          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2998.          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  2999.          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)
  3000.          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3001.          .hword  (0x51<<8)                  |(1<<NFlag)|(1<<CFlag)
  3002.          .hword  (0x52<<8)                  |(1<<NFlag)|(1<<CFlag)
  3003.          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3004.          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)
  3005.          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3006.          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3007.          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)
  3008.          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)
  3009.          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3010.          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)
  3011.          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3012.          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3013.          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)
  3014.          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)
  3015.          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3016.          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3017.          .hword  (0x61<<8)               |(1<<NFlag)|(1<<CFlag)
  3018.          .hword  (0x62<<8)               |(1<<NFlag)|(1<<CFlag)
  3019.          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3020.          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)
  3021.          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3022.          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3023.          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)
  3024.          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)
  3025.          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3026.          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)
  3027.          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3028.          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3029.          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)
  3030.          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)
  3031.          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3032.          .hword  (0x70<<8)               |(1<<NFlag)|(1<<CFlag)
  3033.          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3034.          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3035.          .hword  (0x73<<8)               |(1<<NFlag)|(1<<CFlag)
  3036.          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3037.          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)
  3038.          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)
  3039.          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3040.          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3041.          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)
  3042.          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3043.          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)
  3044.          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)
  3045.          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3046.          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3047.          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)
  3048.          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3049.          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3050.          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3051.          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3052.          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3053.          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3054.          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3055.          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3056.          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3057.          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  3058.          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3059.          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3060.          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3061.          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3062.          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3063.          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  3064.          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3065.          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3066.          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3067.          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3068.          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3069.          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3070.          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3071.          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3072.          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  3073.          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3074.          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3075.          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3076.          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3077.          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3078.          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  3079.          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3080.          .hword  (0xFA<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)  
  3081.          .hword  (0xFB<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)  
  3082.          .hword  (0xFC<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)  
  3083.          .hword  (0xFD<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)  
  3084.          .hword  (0xFE<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)  
  3085.          .hword  (0xFF<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)  
  3086.          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)|(1<<NFlag)  
  3087.          .hword  (0x01<<8)                  |(1<<NFlag)  
  3088.          .hword  (0x02<<8)                  |(1<<NFlag)  
  3089.          .hword  (0x03<<8)               |(1<<VFlag)|(1<<NFlag)  
  3090.          .hword  (0x04<<8)                  |(1<<NFlag)  
  3091.          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)  
  3092.          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)  
  3093.          .hword  (0x07<<8)                  |(1<<NFlag)  
  3094.          .hword  (0x08<<8)               |(1<<NFlag)  
  3095.          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)  
  3096.          .hword  (0x0A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)  
  3097.          .hword  (0x0B<<8)         |(1<<HFlag)   |(1<<NFlag)  
  3098.          .hword  (0x0C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)  
  3099.          .hword  (0x0D<<8)         |(1<<HFlag)   |(1<<NFlag)  
  3100.          .hword  (0x0E<<8)         |(1<<HFlag)   |(1<<NFlag)  
  3101.          .hword  (0x0F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)  
  3102.          .hword  (0x10<<8)                  |(1<<NFlag)  
  3103.          .hword  (0x11<<8)               |(1<<VFlag)|(1<<NFlag)  
  3104.          .hword  (0x12<<8)               |(1<<VFlag)|(1<<NFlag)  
  3105.          .hword  (0x13<<8)                  |(1<<NFlag)  
  3106.          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)  
  3107.          .hword  (0x15<<8)                  |(1<<NFlag)  
  3108.          .hword  (0x16<<8)                  |(1<<NFlag)  
  3109.          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)  
  3110.          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)  
  3111.          .hword  (0x19<<8)               |(1<<NFlag)  
  3112.          .hword  (0x1A<<8)         |(1<<HFlag)   |(1<<NFlag)  
  3113.          .hword  (0x1B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)  
  3114.          .hword  (0x1C<<8)         |(1<<HFlag)   |(1<<NFlag)  
  3115.          .hword  (0x1D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)  
  3116.          .hword  (0x1E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)  
  3117.          .hword  (0x1F<<8)         |(1<<HFlag)   |(1<<NFlag)  
  3118.          .hword  (0x20<<8)               |(1<<NFlag)  
  3119.          .hword  (0x21<<8)            |(1<<VFlag)|(1<<NFlag)  
  3120.          .hword  (0x22<<8)            |(1<<VFlag)|(1<<NFlag)  
  3121.          .hword  (0x23<<8)               |(1<<NFlag)  
  3122.          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)  
  3123.          .hword  (0x25<<8)               |(1<<NFlag)  
  3124.          .hword  (0x26<<8)               |(1<<NFlag)  
  3125.          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)  
  3126.          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)  
  3127.          .hword  (0x29<<8)            |(1<<NFlag)  
  3128.          .hword  (0x2A<<8)      |(1<<HFlag)   |(1<<NFlag)  
  3129.          .hword  (0x2B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)  
  3130.          .hword  (0x2C<<8)      |(1<<HFlag)   |(1<<NFlag)  
  3131.          .hword  (0x2D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)  
  3132.          .hword  (0x2E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)  
  3133.          .hword  (0x2F<<8)      |(1<<HFlag)   |(1<<NFlag)  
  3134.          .hword  (0x30<<8)            |(1<<VFlag)|(1<<NFlag)  
  3135.          .hword  (0x31<<8)               |(1<<NFlag)  
  3136.          .hword  (0x32<<8)               |(1<<NFlag)  
  3137.          .hword  (0x33<<8)            |(1<<VFlag)|(1<<NFlag)  
  3138.          .hword  (0x34<<8)               |(1<<NFlag)  
  3139.          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)  
  3140.          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)  
  3141.          .hword  (0x37<<8)               |(1<<NFlag)  
  3142.          .hword  (0x38<<8)            |(1<<NFlag)  
  3143.          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)  
  3144.          .hword  (0x3A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)  
  3145.          .hword  (0x3B<<8)      |(1<<HFlag)   |(1<<NFlag)  
  3146.          .hword  (0x3C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)  
  3147.          .hword  (0x3D<<8)      |(1<<HFlag)   |(1<<NFlag)  
  3148.          .hword  (0x3E<<8)      |(1<<HFlag)   |(1<<NFlag)  
  3149.          .hword  (0x3F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)  
  3150.          .hword  (0x40<<8)                  |(1<<NFlag)  
  3151.          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)  
  3152.          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)  
  3153.          .hword  (0x43<<8)                  |(1<<NFlag)  
  3154.          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)  
  3155.          .hword  (0x45<<8)                  |(1<<NFlag)  
  3156.          .hword  (0x46<<8)                  |(1<<NFlag)  
  3157.          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)  
  3158.          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)  
  3159.          .hword  (0x49<<8)               |(1<<NFlag)  
  3160.          .hword  (0x4A<<8)         |(1<<HFlag)   |(1<<NFlag)  
  3161.          .hword  (0x4B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)  
  3162.          .hword  (0x4C<<8)         |(1<<HFlag)   |(1<<NFlag)  
  3163.          .hword  (0x4D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)  
  3164.          .hword  (0x4E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)  
  3165.          .hword  (0x4F<<8)         |(1<<HFlag)   |(1<<NFlag)  
  3166.          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)  
  3167.          .hword  (0x51<<8)                  |(1<<NFlag)  
  3168.          .hword  (0x52<<8)                  |(1<<NFlag)  
  3169.          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)  
  3170.          .hword  (0x54<<8)                  |(1<<NFlag)  
  3171.          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)  
  3172.          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)  
  3173.          .hword  (0x57<<8)                  |(1<<NFlag)  
  3174.          .hword  (0x58<<8)               |(1<<NFlag)  
  3175.          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)  
  3176.          .hword  (0x5A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)  
  3177.          .hword  (0x5B<<8)         |(1<<HFlag)   |(1<<NFlag)  
  3178.          .hword  (0x5C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)  
  3179.          .hword  (0x5D<<8)         |(1<<HFlag)   |(1<<NFlag)  
  3180.          .hword  (0x5E<<8)         |(1<<HFlag)   |(1<<NFlag)  
  3181.          .hword  (0x5F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)  
  3182.          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)  
  3183.          .hword  (0x61<<8)               |(1<<NFlag)  
  3184.          .hword  (0x62<<8)               |(1<<NFlag)  
  3185.          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)  
  3186.          .hword  (0x64<<8)               |(1<<NFlag)  
  3187.          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)  
  3188.          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)  
  3189.          .hword  (0x67<<8)               |(1<<NFlag)  
  3190.          .hword  (0x68<<8)            |(1<<NFlag)  
  3191.          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)  
  3192.          .hword  (0x6A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)  
  3193.          .hword  (0x6B<<8)      |(1<<HFlag)   |(1<<NFlag)  
  3194.          .hword  (0x6C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)  
  3195.          .hword  (0x6D<<8)      |(1<<HFlag)   |(1<<NFlag)  
  3196.          .hword  (0x6E<<8)      |(1<<HFlag)   |(1<<NFlag)  
  3197.          .hword  (0x6F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)  
  3198.          .hword  (0x70<<8)               |(1<<NFlag)  
  3199.          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)  
  3200.          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)  
  3201.          .hword  (0x73<<8)               |(1<<NFlag)  
  3202.          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)  
  3203.          .hword  (0x75<<8)               |(1<<NFlag)  
  3204.          .hword  (0x76<<8)               |(1<<NFlag)  
  3205.          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)  
  3206.          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)  
  3207.          .hword  (0x79<<8)            |(1<<NFlag)  
  3208.          .hword  (0x7A<<8)      |(1<<HFlag)   |(1<<NFlag)  
  3209.          .hword  (0x7B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)  
  3210.          .hword  (0x7C<<8)      |(1<<HFlag)   |(1<<NFlag)  
  3211.          .hword  (0x7D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)  
  3212.          .hword  (0x7E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)  
  3213.          .hword  (0x7F<<8)      |(1<<HFlag)   |(1<<NFlag)  
  3214.          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)  
  3215.          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)  
  3216.          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)  
  3217.          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)  
  3218.          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)  
  3219.          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)  
  3220.          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)  
  3221.          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)  
  3222.          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)  
  3223.          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)  
  3224.          .hword  (0x8A<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)  
  3225.          .hword  (0x8B<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)  
  3226.          .hword  (0x8C<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)  
  3227.          .hword  (0x8D<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)  
  3228.          .hword  (0x8E<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)  
  3229.          .hword  (0x8F<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)  
  3230.          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)  
  3231.          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)  
  3232.          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)  
  3233.          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)  
  3234.          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)
  3235.          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3236.          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3237.          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)
  3238.          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)
  3239.          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3240.          .hword  (0x3A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3241.          .hword  (0x3B<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3242.          .hword  (0x3C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3243.          .hword  (0x3D<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3244.          .hword  (0x3E<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3245.          .hword  (0x3F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3246.          .hword  (0x40<<8)                  |(1<<NFlag)|(1<<CFlag)
  3247.          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3248.          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3249.          .hword  (0x43<<8)                  |(1<<NFlag)|(1<<CFlag)
  3250.          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3251.          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)
  3252.          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)
  3253.          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3254.          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3255.          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)
  3256.          .hword  (0x4A<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3257.          .hword  (0x4B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3258.          .hword  (0x4C<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3259.          .hword  (0x4D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3260.          .hword  (0x4E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3261.          .hword  (0x4F<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3262.          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3263.          .hword  (0x51<<8)                  |(1<<NFlag)|(1<<CFlag)
  3264.          .hword  (0x52<<8)                  |(1<<NFlag)|(1<<CFlag)
  3265.          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3266.          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)
  3267.          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3268.          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3269.          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)
  3270.          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)
  3271.          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3272.          .hword  (0x5A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3273.          .hword  (0x5B<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3274.          .hword  (0x5C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3275.          .hword  (0x5D<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3276.          .hword  (0x5E<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3277.          .hword  (0x5F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3278.          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3279.          .hword  (0x61<<8)               |(1<<NFlag)|(1<<CFlag)
  3280.          .hword  (0x62<<8)               |(1<<NFlag)|(1<<CFlag)
  3281.          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3282.          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)
  3283.          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3284.          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3285.          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)
  3286.          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)
  3287.          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3288.          .hword  (0x6A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3289.          .hword  (0x6B<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3290.          .hword  (0x6C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3291.          .hword  (0x6D<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3292.          .hword  (0x6E<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3293.          .hword  (0x6F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3294.          .hword  (0x70<<8)               |(1<<NFlag)|(1<<CFlag)
  3295.          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3296.          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3297.          .hword  (0x73<<8)               |(1<<NFlag)|(1<<CFlag)
  3298.          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3299.          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)
  3300.          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)
  3301.          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3302.          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3303.          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)
  3304.          .hword  (0x7A<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3305.          .hword  (0x7B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3306.          .hword  (0x7C<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3307.          .hword  (0x7D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3308.          .hword  (0x7E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3309.          .hword  (0x7F<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3310.          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3311.          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3312.          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3313.          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3314.          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3315.          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3316.          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3317.          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3318.          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3319.          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  3320.          .hword  (0x8A<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3321.          .hword  (0x8B<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3322.          .hword  (0x8C<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3323.          .hword  (0x8D<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3324.          .hword  (0x8E<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3325.          .hword  (0x8F<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3326.          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3327.          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3328.          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3329.          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3330.          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3331.          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3332.          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3333.          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3334.          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  3335.          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3336.          .hword  (0x9A<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3337.          .hword  (0x9B<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3338.          .hword  (0x9C<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3339.          .hword  (0x9D<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3340.          .hword  (0x9E<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3341.          .hword  (0x9F<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3342.          .hword  (0xA0<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3343.          .hword  (0xA1<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  3344.          .hword  (0xA2<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  3345.          .hword  (0xA3<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3346.          .hword  (0xA4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  3347.          .hword  (0xA5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3348.          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3349.          .hword  (0xA7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  3350.          .hword  (0xA8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)
  3351.          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3352.          .hword  (0xAA<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3353.          .hword  (0xAB<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3354.          .hword  (0xAC<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3355.          .hword  (0xAD<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3356.          .hword  (0xAE<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3357.          .hword  (0xAF<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3358.          .hword  (0xB0<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  3359.          .hword  (0xB1<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3360.          .hword  (0xB2<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3361.          .hword  (0xB3<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  3362.          .hword  (0xB4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3363.          .hword  (0xB5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  3364.          .hword  (0xB6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  3365.          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3366.          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3367.          .hword  (0xB9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)
  3368.          .hword  (0xBA<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3369.          .hword  (0xBB<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3370.          .hword  (0xBC<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3371.          .hword  (0xBD<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3372.          .hword  (0xBE<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3373.          .hword  (0xBF<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3374.          .hword  (0xC0<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3375.          .hword  (0xC1<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3376.          .hword  (0xC2<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3377.          .hword  (0xC3<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3378.          .hword  (0xC4<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3379.          .hword  (0xC5<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3380.          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3381.          .hword  (0xC7<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3382.          .hword  (0xC8<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  3383.          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3384.          .hword  (0xCA<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3385.          .hword  (0xCB<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3386.          .hword  (0xCC<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3387.          .hword  (0xCD<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3388.          .hword  (0xCE<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3389.          .hword  (0xCF<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3390.          .hword  (0xD0<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3391.          .hword  (0xD1<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3392.          .hword  (0xD2<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3393.          .hword  (0xD3<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3394.          .hword  (0xD4<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3395.          .hword  (0xD5<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3396.          .hword  (0xD6<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3397.          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3398.          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3399.          .hword  (0xD9<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  3400.          .hword  (0xDA<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3401.          .hword  (0xDB<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3402.          .hword  (0xDC<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3403.          .hword  (0xDD<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3404.          .hword  (0xDE<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3405.          .hword  (0xDF<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3406.          .hword  (0xE0<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  3407.          .hword  (0xE1<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3408.          .hword  (0xE2<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3409.          .hword  (0xE3<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  3410.          .hword  (0xE4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3411.          .hword  (0xE5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  3412.          .hword  (0xE6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  3413.          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3414.          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3415.          .hword  (0xE9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)
  3416.          .hword  (0xEA<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3417.          .hword  (0xEB<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3418.          .hword  (0xEC<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3419.          .hword  (0xED<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3420.          .hword  (0xEE<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3421.          .hword  (0xEF<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3422.          .hword  (0xF0<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3423.          .hword  (0xF1<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  3424.          .hword  (0xF2<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  3425.          .hword  (0xF3<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3426.          .hword  (0xF4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  3427.          .hword  (0xF5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3428.          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3429.          .hword  (0xF7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  3430.          .hword  (0xF8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)
  3431.          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3432.          .hword  (0xFA<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3433.          .hword  (0xFB<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3434.          .hword  (0xFC<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3435.          .hword  (0xFD<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3436.          .hword  (0xFE<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3437.          .hword  (0xFF<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3438.          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3439.          .hword  (0x01<<8)                  |(1<<NFlag)|(1<<CFlag)
  3440.          .hword  (0x02<<8)                  |(1<<NFlag)|(1<<CFlag)
  3441.          .hword  (0x03<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3442.          .hword  (0x04<<8)                  |(1<<NFlag)|(1<<CFlag)
  3443.          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3444.          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3445.          .hword  (0x07<<8)                  |(1<<NFlag)|(1<<CFlag)
  3446.          .hword  (0x08<<8)               |(1<<NFlag)|(1<<CFlag)
  3447.          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3448.          .hword  (0x0A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3449.          .hword  (0x0B<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3450.          .hword  (0x0C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3451.          .hword  (0x0D<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3452.          .hword  (0x0E<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3453.          .hword  (0x0F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3454.          .hword  (0x10<<8)                  |(1<<NFlag)|(1<<CFlag)
  3455.          .hword  (0x11<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3456.          .hword  (0x12<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3457.          .hword  (0x13<<8)                  |(1<<NFlag)|(1<<CFlag)
  3458.          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3459.          .hword  (0x15<<8)                  |(1<<NFlag)|(1<<CFlag)
  3460.          .hword  (0x16<<8)                  |(1<<NFlag)|(1<<CFlag)
  3461.          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3462.          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3463.          .hword  (0x19<<8)               |(1<<NFlag)|(1<<CFlag)
  3464.          .hword  (0x1A<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3465.          .hword  (0x1B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3466.          .hword  (0x1C<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3467.          .hword  (0x1D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3468.          .hword  (0x1E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3469.          .hword  (0x1F<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3470.          .hword  (0x20<<8)               |(1<<NFlag)|(1<<CFlag)
  3471.          .hword  (0x21<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3472.          .hword  (0x22<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3473.          .hword  (0x23<<8)               |(1<<NFlag)|(1<<CFlag)
  3474.          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3475.          .hword  (0x25<<8)               |(1<<NFlag)|(1<<CFlag)
  3476.          .hword  (0x26<<8)               |(1<<NFlag)|(1<<CFlag)
  3477.          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3478.          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3479.          .hword  (0x29<<8)            |(1<<NFlag)|(1<<CFlag)
  3480.          .hword  (0x2A<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3481.          .hword  (0x2B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3482.          .hword  (0x2C<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3483.          .hword  (0x2D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3484.          .hword  (0x2E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3485.          .hword  (0x2F<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3486.          .hword  (0x30<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3487.          .hword  (0x31<<8)               |(1<<NFlag)|(1<<CFlag)
  3488.          .hword  (0x32<<8)               |(1<<NFlag)|(1<<CFlag)
  3489.          .hword  (0x33<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3490.          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)
  3491.          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3492.          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3493.          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)
  3494.          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)
  3495.          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3496.          .hword  (0x3A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3497.          .hword  (0x3B<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3498.          .hword  (0x3C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3499.          .hword  (0x3D<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3500.          .hword  (0x3E<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3501.          .hword  (0x3F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3502.          .hword  (0x40<<8)                  |(1<<NFlag)|(1<<CFlag)
  3503.          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3504.          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3505.          .hword  (0x43<<8)                  |(1<<NFlag)|(1<<CFlag)
  3506.          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3507.          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)
  3508.          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)
  3509.          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3510.          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3511.          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)
  3512.          .hword  (0x4A<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3513.          .hword  (0x4B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3514.          .hword  (0x4C<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3515.          .hword  (0x4D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3516.          .hword  (0x4E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3517.          .hword  (0x4F<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3518.          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3519.          .hword  (0x51<<8)                  |(1<<NFlag)|(1<<CFlag)
  3520.          .hword  (0x52<<8)                  |(1<<NFlag)|(1<<CFlag)
  3521.          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3522.          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)
  3523.          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3524.          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3525.          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)
  3526.          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)
  3527.          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3528.          .hword  (0x5A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3529.          .hword  (0x5B<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3530.          .hword  (0x5C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3531.          .hword  (0x5D<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3532.          .hword  (0x5E<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3533.          .hword  (0x5F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3534.          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3535.          .hword  (0x61<<8)               |(1<<NFlag)|(1<<CFlag)
  3536.          .hword  (0x62<<8)               |(1<<NFlag)|(1<<CFlag)
  3537.          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3538.          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)
  3539.          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3540.          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3541.          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)
  3542.          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)
  3543.          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3544.          .hword  (0x6A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3545.          .hword  (0x6B<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3546.          .hword  (0x6C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3547.          .hword  (0x6D<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3548.          .hword  (0x6E<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3549.          .hword  (0x6F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3550.          .hword  (0x70<<8)               |(1<<NFlag)|(1<<CFlag)
  3551.          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3552.          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3553.          .hword  (0x73<<8)               |(1<<NFlag)|(1<<CFlag)
  3554.          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3555.          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)
  3556.          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)
  3557.          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3558.          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3559.          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)
  3560.          .hword  (0x7A<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3561.          .hword  (0x7B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3562.          .hword  (0x7C<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3563.          .hword  (0x7D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3564.          .hword  (0x7E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3565.          .hword  (0x7F<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3566.          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3567.          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3568.          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3569.          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3570.          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3571.          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3572.          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3573.          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3574.          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3575.          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  3576.          .hword  (0x8A<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3577.          .hword  (0x8B<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3578.          .hword  (0x8C<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3579.          .hword  (0x8D<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3580.          .hword  (0x8E<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3581.          .hword  (0x8F<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)
  3582.          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3583.          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3584.          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3585.          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3586.          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3587.          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3588.          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3589.          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)
  3590.          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)
  3591.          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
  3592.          
  3593. .align 4
  3594.  
  3595. AF_Z80:  .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 0
  3596.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 1
  3597.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 2
  3598.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 3
  3599.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 4
  3600.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 5
  3601.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 6
  3602.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 7
  3603.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 8
  3604.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 9
  3605.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 10
  3606.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 11
  3607.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 12
  3608.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 13
  3609.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 14
  3610.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 15
  3611.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 16
  3612.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 17
  3613.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 18
  3614.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 19
  3615.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 20
  3616.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 21
  3617.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 22
  3618.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 23
  3619.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 24
  3620.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 25
  3621.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 26
  3622.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 27
  3623.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 28
  3624.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 29
  3625.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 30
  3626.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 31
  3627.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 32
  3628.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 33
  3629.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 34
  3630.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 35
  3631.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 36
  3632.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 37
  3633.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 38
  3634.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 39
  3635.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 40
  3636.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 41
  3637.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 42
  3638.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 43
  3639.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 44
  3640.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 45
  3641.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 46
  3642.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 47
  3643.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 48
  3644.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 49
  3645.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 50
  3646.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 51
  3647.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 52
  3648.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 53
  3649.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 54
  3650.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 55
  3651.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 56
  3652.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 57
  3653.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 58
  3654.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 59
  3655.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 60
  3656.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 61
  3657.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 62
  3658.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 63
  3659.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 64
  3660.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 65
  3661.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 66
  3662.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 67
  3663.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 68
  3664.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 69
  3665.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 70
  3666.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 71
  3667.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 72
  3668.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 73
  3669.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 74
  3670.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 75
  3671.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 76
  3672.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 77
  3673.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 78
  3674.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 79
  3675.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 80
  3676.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 81
  3677.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 82
  3678.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 83
  3679.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 84
  3680.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 85
  3681.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 86
  3682.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 87
  3683.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 88
  3684.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 89
  3685.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 90
  3686.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 91
  3687.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 92
  3688.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 93
  3689.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 94
  3690.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 95
  3691.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 96
  3692.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 97
  3693.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 98
  3694.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 99
  3695.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 100
  3696.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 101
  3697.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 102
  3698.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 103
  3699.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 104
  3700.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 105
  3701.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 106
  3702.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 107
  3703.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 108
  3704.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 109
  3705.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 110
  3706.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 111
  3707.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 112
  3708.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 113
  3709.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 114
  3710.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 115
  3711.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 116
  3712.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 117
  3713.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 118
  3714.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 119
  3715.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 120
  3716.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 121
  3717.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 122
  3718.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 123
  3719.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 124
  3720.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 125
  3721.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 126
  3722.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 127
  3723.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 128
  3724.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 129
  3725.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 130
  3726.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 131
  3727.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 132
  3728.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 133
  3729.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 134
  3730.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 135
  3731.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 136
  3732.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 137
  3733.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 138
  3734.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 139
  3735.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 140
  3736.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 141
  3737.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 142
  3738.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 143
  3739.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 144
  3740.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 145
  3741.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 146
  3742.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 147
  3743.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 148
  3744.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 149
  3745.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 150
  3746.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 151
  3747.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 152
  3748.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 153
  3749.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 154
  3750.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 155
  3751.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 156
  3752.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 157
  3753.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 158
  3754.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 159
  3755.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 160
  3756.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 161
  3757.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 162
  3758.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 163
  3759.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 164
  3760.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 165
  3761.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 166
  3762.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 167
  3763.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 168
  3764.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 169
  3765.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 170
  3766.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 171
  3767.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 172
  3768.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 173
  3769.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 174
  3770.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 175
  3771.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 176
  3772.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 177
  3773.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 178
  3774.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 179
  3775.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 180
  3776.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 181
  3777.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 182
  3778.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 183
  3779.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 184
  3780.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 185
  3781.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 186
  3782.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 187
  3783.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 188
  3784.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 189
  3785.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 190
  3786.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 191
  3787.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 192
  3788.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 193
  3789.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 194
  3790.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 195
  3791.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 196
  3792.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 197
  3793.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 198
  3794.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 199
  3795.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 200
  3796.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 201
  3797.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 202
  3798.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 203
  3799.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 204
  3800.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 205
  3801.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 206
  3802.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 207
  3803.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 208
  3804.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 209
  3805.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 210
  3806.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 211
  3807.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 212
  3808.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 213
  3809.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 214
  3810.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 215
  3811.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 216
  3812.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 217
  3813.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 218
  3814.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 219
  3815.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 220
  3816.          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 221
  3817.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 222
  3818.          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 223
  3819.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 224
  3820.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 225
  3821.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 226
  3822.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 227
  3823.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 228
  3824.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 229
  3825.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 230
  3826.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 231
  3827.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 232
  3828.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 233
  3829.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 234
  3830.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 235
  3831.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 236
  3832.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 237
  3833.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 238
  3834.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 239
  3835.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 240
  3836.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 241
  3837.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 242
  3838.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 243
  3839.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 244
  3840.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 245
  3841.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 246
  3842.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 247
  3843.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 248
  3844.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 249
  3845.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 250
  3846.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 251
  3847.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 252
  3848.          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 253
  3849.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 254
  3850.          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 255
  3851.  
  3852. .align 4
  3853.  
  3854. AF_ARM:  .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 0
  3855.          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 1
  3856.          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 2
  3857.          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 3
  3858.          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 4
  3859.          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 5
  3860.          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 6
  3861.          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 7
  3862.          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 8
  3863.          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 9
  3864.          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 10
  3865.          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 11
  3866.          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 12
  3867.          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 13
  3868.          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 14
  3869.          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 15
  3870.          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 16
  3871.          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 17
  3872.          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 18
  3873.          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 19
  3874.          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 20
  3875.          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 21
  3876.          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 22
  3877.          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 23
  3878.          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 24
  3879.          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 25
  3880.          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 26
  3881.          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 27
  3882.          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 28
  3883.          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 29
  3884.          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 30
  3885.          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 31
  3886.          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 32
  3887.          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 33
  3888.          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 34
  3889.          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 35
  3890.          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 36
  3891.          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 37
  3892.          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 38
  3893.          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 39
  3894.          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 40
  3895.          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 41
  3896.          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 42
  3897.          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 43
  3898.          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 44
  3899.          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 45
  3900.          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 46
  3901.          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 47
  3902.          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 48
  3903.          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 49
  3904.          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 50
  3905.          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 51
  3906.          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 52
  3907.          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 53
  3908.          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 54
  3909.          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 55
  3910.          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 56
  3911.          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 57
  3912.          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 58
  3913.          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 59
  3914.          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 60
  3915.          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 61
  3916.          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 62
  3917.          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 63
  3918.          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 64
  3919.          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 65
  3920.          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 66
  3921.          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 67
  3922.          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 68
  3923.          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 69
  3924.          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 70
  3925.          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 71
  3926.          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 72
  3927.          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 73
  3928.          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 74
  3929.          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 75
  3930.          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 76
  3931.          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 77
  3932.          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 78
  3933.          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 79
  3934.          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 80
  3935.          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 81
  3936.          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 82
  3937.          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 83
  3938.          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 84
  3939.          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 85
  3940.          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 86
  3941.          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 87
  3942.          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 88
  3943.          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 89
  3944.          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 90
  3945.          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 91
  3946.          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 92
  3947.          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 93
  3948.          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 94
  3949.          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 95
  3950.          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 96
  3951.          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 97
  3952.          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 98
  3953.          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 99
  3954.          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 100
  3955.          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 101
  3956.          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 102
  3957.          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 103
  3958.          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 104
  3959.          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 105
  3960.          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 106
  3961.          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 107
  3962.          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 108
  3963.          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 109
  3964.          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 110
  3965.          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 111
  3966.          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 112
  3967.          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 113
  3968.          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 114
  3969.          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 115
  3970.          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 116
  3971.          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 117
  3972.          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 118
  3973.          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 119
  3974.          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 120
  3975.          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 121
  3976.          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 122
  3977.          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 123
  3978.          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 124
  3979.          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 125
  3980.          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 126
  3981.          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 127
  3982.          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 128
  3983.          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 129
  3984.          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 130
  3985.          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 131
  3986.          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 132
  3987.          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 133
  3988.          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 134
  3989.          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 135
  3990.          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 136
  3991.          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 137
  3992.          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 138
  3993.          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 139
  3994.          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 140
  3995.          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 141
  3996.          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 142
  3997.          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 143
  3998.          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 144
  3999.          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 145
  4000.          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 146
  4001.          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 147
  4002.          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 148
  4003.          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 149
  4004.          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 150
  4005.          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 151
  4006.          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 152
  4007.          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 153
  4008.          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 154
  4009.          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 155
  4010.          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 156
  4011.          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 157
  4012.          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 158
  4013.          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 159
  4014.          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 160
  4015.          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 161
  4016.          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 162
  4017.          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 163
  4018.          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 164
  4019.          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 165
  4020.          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 166
  4021.          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 167
  4022.          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 168
  4023.          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 169
  4024.          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 170
  4025.          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 171
  4026.          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 172
  4027.          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 173
  4028.          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 174
  4029.          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 175
  4030.          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 176
  4031.          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 177
  4032.          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 178
  4033.          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 179
  4034.          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 180
  4035.          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 181
  4036.          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 182
  4037.          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 183
  4038.          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 184
  4039.          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 185
  4040.          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 186
  4041.          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 187
  4042.          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 188
  4043.          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 189
  4044.          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 190
  4045.          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 191
  4046.          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 192
  4047.          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 193
  4048.          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 194
  4049.          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 195
  4050.          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 196
  4051.          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 197
  4052.          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 198
  4053.          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 199
  4054.          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 200
  4055.          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 201
  4056.          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 202
  4057.          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 203
  4058.          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 204
  4059.          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 205
  4060.          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 206
  4061.          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 207
  4062.          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 208
  4063.          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 209
  4064.          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 210
  4065.          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 211
  4066.          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 212
  4067.          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 213
  4068.          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 214
  4069.          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 215
  4070.          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 216
  4071.          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 217
  4072.          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 218
  4073.          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 219
  4074.          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 220
  4075.          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 221
  4076.          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 222
  4077.          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 223
  4078.          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 224
  4079.          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 225
  4080.          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 226
  4081.          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 227
  4082.          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 228
  4083.          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 229
  4084.          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 230
  4085.          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 231
  4086.          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 232
  4087.          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 233
  4088.          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 234
  4089.          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 235
  4090.          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 236
  4091.          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 237
  4092.          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 238
  4093.          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 239
  4094.          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 240
  4095.          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 241
  4096.          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 242
  4097.          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 243
  4098.          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 244
  4099.          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 245
  4100.          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 246
  4101.          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 247
  4102.          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 248
  4103.          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 249
  4104.          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 250
  4105.          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 251
  4106.          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 252
  4107.          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 253
  4108.          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 254
  4109.          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 255
  4110.  
  4111. .align 4
  4112.  
  4113. PZSTable_data: .byte (1<<ZFlag)|(1<<VFlag),0,0,(1<<VFlag),0,(1<<VFlag),(1<<VFlag),0
  4114.         .byte  0,(1<<VFlag),(1<<VFlag),0,(1<<VFlag),0,0,(1<<VFlag)
  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
  4116.         .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
  4117.         .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)
  4118.         .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
  4119.         .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)
  4120.         .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)
  4121.         .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
  4122.         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)
  4123.         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)
  4124.         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)
  4125.         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)
  4126.         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)
  4127.         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)
  4128.         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)
  4129.         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)
  4130.         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)
  4131.         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)
  4132.         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)
  4133.         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)
  4134.         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)
  4135.         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)
  4136.         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)
  4137.         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)
  4138.         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)
  4139.         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)
  4140.         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)
  4141.         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)
  4142.         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)
  4143.         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)
  4144.         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)
  4145.         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)
  4146.         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)
  4147.         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)
  4148.         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)
  4149.         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)
  4150.         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)
  4151.         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)
  4152.         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)
  4153.         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)      
  4154.  
  4155. .align 4
  4156.  
  4157. MAIN_opcodes:  
  4158.         .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
  4159.         .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
  4160.         .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
  4161.         .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
  4162.         .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
  4163.         .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
  4164.         .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
  4165.         .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
  4166.         .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
  4167.         .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
  4168.         .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
  4169.         .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
  4170.         .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
  4171.         .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
  4172.         .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
  4173.         .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
  4174.         .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
  4175.         .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
  4176.         .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
  4177.         .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
  4178.         .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
  4179.         .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
  4180.         .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
  4181.         .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
  4182.         .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
  4183.         .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
  4184.         .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
  4185.         .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
  4186.         .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
  4187.         .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
  4188.         .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
  4189.         .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
  4190.  
  4191. .align 4
  4192.  
  4193. EI_DUMMY_opcodes:
  4194.         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@0
  4195.         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@0
  4196.         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@1
  4197.         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@1
  4198.         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@2
  4199.         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@2
  4200.         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@3
  4201.         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@3
  4202.         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@4
  4203.         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@4
  4204.         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@5
  4205.         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@5
  4206.         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@6
  4207.         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@6
  4208.         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@7
  4209.         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@7
  4210.         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@8
  4211.         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@8
  4212.         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@9
  4213.         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@9
  4214.         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@A
  4215.         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@A
  4216.         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@B
  4217.         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@B
  4218.         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@C
  4219.         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@C
  4220.         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@D
  4221.         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@D
  4222.         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@E
  4223.         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@E
  4224.         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@F
  4225.         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@F
  4226.  
  4227. .text
  4228. .align 4
  4229.  
  4230. ;@NOP
  4231. opcode_0_0:
  4232. ;@LD B,B
  4233. opcode_4_0:
  4234. ;@LD C,C
  4235. opcode_4_9:
  4236. ;@LD D,D
  4237. opcode_5_2:
  4238. ;@LD E,E
  4239. opcode_5_B:
  4240. ;@LD H,H
  4241. opcode_6_4:
  4242. ;@LD L,L
  4243. opcode_6_D:
  4244. ;@LD A,A
  4245. opcode_7_F:
  4246.         fetch 4
  4247. ;@LD BC,NN
  4248. opcode_0_1:
  4249.         ldrb r0,[z80pc],#1
  4250.         ldrb r1,[z80pc],#1
  4251.         orr r0,r0,r1, lsl #8
  4252.         mov z80bc,r0, lsl #16
  4253.         fetch 10
  4254. ;@LD (BC),A
  4255. opcode_0_2:
  4256.         mov r0,z80a, lsr #24
  4257.         mov r1,z80bc, lsr #16
  4258.         writemem8
  4259.         fetch 7
  4260. ;@INC BC
  4261. opcode_0_3:
  4262.         add z80bc,z80bc,#1<<16
  4263.         fetch 6
  4264. ;@INC B
  4265. opcode_0_4:
  4266.         opINC8H z80bc
  4267.         fetch 4
  4268. ;@DEC B
  4269. opcode_0_5:
  4270.         opDEC8H z80bc
  4271.         fetch 4
  4272. ;@LD B,N
  4273. opcode_0_6:
  4274.         ldrb r1,[z80pc],#1
  4275.         and z80bc,z80bc,#0xFF<<16
  4276.         orr z80bc,z80bc,r1, lsl #24
  4277.         fetch 7
  4278. ;@RLCA
  4279. opcode_0_7:
  4280.         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)
  4281.         movs z80a,z80a, lsl #1
  4282.         orrcs z80a,z80a,#1<<24
  4283.         orrcs z80f,z80f,#1<<CFlag
  4284.         fetch 4
  4285. ;@EX AF,AF'
  4286. opcode_0_8:
  4287.         add r1,cpucontext,#z80a2
  4288.         swp z80a,z80a,[r1]
  4289.         add r1,cpucontext,#z80f2
  4290.         swp z80f,z80f,[r1]
  4291.         fetch 4
  4292. ;@ADD HL,BC
  4293. opcode_0_9:
  4294.         opADD16 z80hl z80bc
  4295.         fetch 11
  4296. ;@LD A,(BC)
  4297. opcode_0_A:
  4298.         mov r0,z80bc, lsr #16
  4299.         readmem8
  4300.         mov z80a,r0, lsl #24
  4301.         fetch 7
  4302. ;@DEC BC
  4303. opcode_0_B:
  4304.         sub z80bc,z80bc,#1<<16
  4305.         fetch 6
  4306. ;@INC C
  4307. opcode_0_C:
  4308.         opINC8L z80bc
  4309.         fetch 4
  4310. ;@DEC C
  4311. opcode_0_D:
  4312.         opDEC8L z80bc
  4313.         fetch 4
  4314. ;@LD C,N
  4315. opcode_0_E:
  4316.         ldrb r1,[z80pc],#1
  4317.         and z80bc,z80bc,#0xFF<<24
  4318.         orr z80bc,z80bc,r1, lsl #16
  4319.         fetch 7
  4320. ;@RRCA
  4321. opcode_0_F:
  4322.         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)
  4323.         movs z80a,z80a, lsr #25
  4324.         orrcs z80a,z80a,#1<<7
  4325.         orrcs z80f,z80f,#1<<CFlag
  4326.         mov z80a,z80a, lsl #24
  4327.         fetch 4
  4328. ;@DJNZ $+2
  4329. opcode_1_0:
  4330.         sub z80bc,z80bc,#1<<24
  4331.         tst z80bc,#0xFF<<24
  4332.         ldrsb r1,[z80pc],#1
  4333.         addne z80pc,z80pc,r1
  4334.         subne z80_icount,z80_icount,#5
  4335.         fetch 8
  4336.  
  4337. ;@LD DE,NN
  4338. opcode_1_1:
  4339.         ldrb r0,[z80pc],#1
  4340.         ldrb r1,[z80pc],#1
  4341.         orr r0,r0,r1, lsl #8
  4342.         mov z80de,r0, lsl #16
  4343.         fetch 10
  4344. ;@LD (DE),A
  4345. opcode_1_2:
  4346.         mov r0,z80a, lsr #24
  4347.         writemem8DE
  4348.         fetch 7
  4349. ;@INC DE
  4350. opcode_1_3:
  4351.         add z80de,z80de,#1<<16
  4352.         fetch 6
  4353. ;@INC D
  4354. opcode_1_4:
  4355.         opINC8H z80de
  4356.         fetch 4
  4357. ;@DEC D
  4358. opcode_1_5:
  4359.         opDEC8H z80de
  4360.         fetch 4
  4361. ;@LD D,N
  4362. opcode_1_6:
  4363.         ldrb r1,[z80pc],#1
  4364.         and z80de,z80de,#0xFF<<16
  4365.         orr z80de,z80de,r1, lsl #24
  4366.         fetch 7
  4367. ;@RLA
  4368. opcode_1_7:
  4369.         tst z80f,#1<<CFlag
  4370.         orrne z80a,z80a,#1<<23
  4371.         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)
  4372.         movs z80a,z80a, lsl #1
  4373.         orrcs z80f,z80f,#1<<CFlag
  4374.         fetch 4
  4375. ;@JR $+2
  4376. opcode_1_8:
  4377.         ldrsb r1,[z80pc],#1
  4378.         add z80pc,z80pc,r1
  4379.         fetch 12
  4380. ;@ADD HL,DE
  4381. opcode_1_9:
  4382.         opADD16 z80hl z80de
  4383.         fetch 11
  4384. ;@LD A,(DE)
  4385. opcode_1_A:
  4386.         mov r0,z80de, lsr #16
  4387.         readmem8
  4388.         mov z80a,r0, lsl #24
  4389.         fetch 7
  4390. ;@DEC DE
  4391. opcode_1_B:
  4392.         sub z80de,z80de,#1<<16
  4393.         fetch 6
  4394. ;@INC E
  4395. opcode_1_C:
  4396.         opINC8L z80de
  4397.         fetch 4
  4398. ;@DEC E
  4399. opcode_1_D:
  4400.         opDEC8L z80de
  4401.         fetch 4
  4402. ;@LD E,N
  4403. opcode_1_E:
  4404.         ldrb r0,[z80pc],#1
  4405.         and z80de,z80de,#0xFF<<24
  4406.         orr z80de,z80de,r0, lsl #16
  4407.         fetch 7
  4408. ;@RRA
  4409. opcode_1_F:
  4410.         orr z80a,z80a,z80f,lsr#1                ;@get C
  4411.         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)
  4412.         movs z80a,z80a,ror#25
  4413.         orrcs z80f,z80f,#1<<CFlag
  4414.         mov z80a,z80a,lsl#24
  4415.         fetch 4
  4416. ;@JR NZ,$+2
  4417. opcode_2_0:
  4418.         tst z80f,#1<<ZFlag
  4419.         beq opcode_1_8
  4420.         add z80pc,z80pc,#1
  4421.         fetch 7
  4422. ;@LD HL,NN
  4423. opcode_2_1:
  4424.         ldrb r0,[z80pc],#1
  4425.         ldrb r1,[z80pc],#1
  4426.         orr r0,r0,r1, lsl #8
  4427.         mov z80hl,r0, lsl #16
  4428.         fetch 10
  4429. ;@LD (NN),HL
  4430. opcode_ED_63:
  4431.         eatcycles 4
  4432. ;@LD (NN),HL
  4433. opcode_2_2:
  4434.         ldrb r0,[z80pc],#1
  4435.         ldrb r1,[z80pc],#1
  4436.         orr r1,r0,r1, lsl #8
  4437.         mov r0,z80hl, lsr #16
  4438.         writemem16
  4439.         fetch 16
  4440. ;@INC HL
  4441. opcode_2_3:
  4442.         add z80hl,z80hl,#1<<16
  4443.         fetch 6
  4444. ;@INC H
  4445. opcode_2_4:
  4446.         opINC8H z80hl
  4447.         fetch 4
  4448. ;@DEC H
  4449. opcode_2_5:
  4450.         opDEC8H z80hl
  4451.         fetch 4
  4452. ;@LD H,N
  4453. opcode_2_6:
  4454.         ldrb r1,[z80pc],#1
  4455.         and z80hl,z80hl,#0xFF<<16
  4456.         orr z80hl,z80hl,r1, lsl #24
  4457.         fetch 7
  4458. DAATABLE_LOCAL: .word DAATable
  4459. ;@DAA
  4460. opcode_2_7:
  4461.         mov r1,z80a, lsr #24
  4462.         tst z80f,#1<<CFlag
  4463.         orrne r1,r1,#256
  4464.         tst z80f,#1<<HFlag
  4465.         orrne r1,r1,#512
  4466.         tst z80f,#1<<NFlag
  4467.         orrne r1,r1,#1024
  4468.         ldr r2,DAATABLE_LOCAL
  4469.         add r2,r2,r1, lsl #1
  4470.         ldrh r1,[r2]
  4471.         and z80f,r1,#0xFF
  4472.         and r2,r1,#0xFF<<8
  4473.         mov z80a,r2, lsl #16
  4474.         fetch 4
  4475. ;@JR Z,$+2
  4476. opcode_2_8:
  4477.         tst z80f,#1<<ZFlag
  4478.         bne opcode_1_8
  4479.         add z80pc,z80pc,#1
  4480.         fetch 7
  4481. ;@ADD HL,HL
  4482. opcode_2_9:
  4483.         opADD16_2 z80hl
  4484.         fetch 11
  4485. ;@LD HL,(NN)
  4486. opcode_ED_6B:
  4487.         eatcycles 4
  4488. ;@LD HL,(NN)
  4489. opcode_2_A:
  4490.         ldrb r0,[z80pc],#1
  4491.         ldrb r1,[z80pc],#1
  4492.         orr r0,r0,r1, lsl #8
  4493.         readmem16
  4494.         mov z80hl,r0, lsl #16
  4495.         fetch 16
  4496. ;@DEC HL
  4497. opcode_2_B:
  4498.         sub z80hl,z80hl,#1<<16
  4499.         fetch 6
  4500. ;@INC L
  4501. opcode_2_C:
  4502.         opINC8L z80hl
  4503.         fetch 4
  4504. ;@DEC L
  4505. opcode_2_D:
  4506.         opDEC8L z80hl
  4507.         fetch 4
  4508. ;@LD L,N
  4509. opcode_2_E:
  4510.         ldrb r0,[z80pc],#1
  4511.         and z80hl,z80hl,#0xFF<<24
  4512.         orr z80hl,z80hl,r0, lsl #16
  4513.         fetch 7
  4514. ;@CPL
  4515. opcode_2_F:
  4516.         eor z80a,z80a,#0xFF<<24
  4517.         orr z80f,z80f,#(1<<NFlag)|(1<<HFlag)
  4518.         fetch 4
  4519. ;@JR NC,$+2
  4520. opcode_3_0:
  4521.         tst z80f,#1<<CFlag
  4522.         beq opcode_1_8
  4523.         add z80pc,z80pc,#1
  4524.         fetch 7
  4525. ;@LD SP,NN
  4526. opcode_3_1:
  4527.         ldrb r0,[z80pc],#1
  4528.         ldrb r1,[z80pc],#1
  4529.  
  4530. .if FAST_Z80SP
  4531.         orr r0,r0,r1, lsl #8
  4532.         rebasesp
  4533.         mov z80sp,r0
  4534. .else
  4535.         orr z80sp,r0,r1, lsl #8
  4536. .endif
  4537.         fetch 10
  4538. ;@LD (NN),A
  4539. opcode_3_2:
  4540.         ldrb r0,[z80pc],#1
  4541.         ldrb r1,[z80pc],#1
  4542.         orr r1,r0,r1, lsl #8
  4543.         mov r0,z80a, lsr #24
  4544.         writemem8
  4545.         fetch 13
  4546. ;@INC SP
  4547. opcode_3_3:
  4548.         add z80sp,z80sp,#1
  4549.         fetch 6
  4550. ;@INC (HL)
  4551. opcode_3_4:
  4552.         readmem8HL
  4553.         opINC8b
  4554.         writemem8HL
  4555.         fetch 11
  4556. ;@DEC (HL)
  4557. opcode_3_5:
  4558.         readmem8HL
  4559.         opDEC8b
  4560.         writemem8HL
  4561.         fetch 11
  4562. ;@LD (HL),N
  4563. opcode_3_6:
  4564.         ldrb r0,[z80pc],#1
  4565.         writemem8HL
  4566.         fetch 10
  4567. ;@SCF
  4568. opcode_3_7:
  4569.         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)
  4570.         orr z80f,z80f,#1<<CFlag
  4571.         fetch 4
  4572. ;@JR C,$+2
  4573. opcode_3_8:
  4574.         tst z80f,#1<<CFlag
  4575.         bne opcode_1_8
  4576.         add z80pc,z80pc,#1
  4577.         fetch 8
  4578. ;@ADD HL,SP
  4579. opcode_3_9:
  4580. .if FAST_Z80SP
  4581.         ldr r0,[cpucontext,#z80sp_base]
  4582.         sub r0,z80sp,r0
  4583.         opADD16s z80hl r0 16
  4584. .else
  4585.         opADD16s z80hl z80sp 16
  4586. .endif
  4587.         fetch 11
  4588. ;@LD A,(NN)
  4589. opcode_3_A:
  4590.         ldrb r0,[z80pc],#1
  4591.         ldrb r1,[z80pc],#1
  4592.         orr r0,r0,r1, lsl #8
  4593.         readmem8
  4594.         mov z80a,r0, lsl #24
  4595.         fetch 11
  4596. ;@DEC SP
  4597. opcode_3_B:
  4598.         sub z80sp,z80sp,#1
  4599.         fetch 6
  4600. ;@INC A
  4601. opcode_3_C:
  4602.         opINC8 z80a
  4603.         fetch 4
  4604. ;@DEC A
  4605. opcode_3_D:
  4606.         opDEC8 z80a
  4607.         fetch 4
  4608. ;@LD A,N
  4609. opcode_3_E:
  4610.         ldrb r0,[z80pc],#1
  4611.         mov z80a,r0, lsl #24
  4612.         fetch 7
  4613. ;@CCF
  4614. opcode_3_F:
  4615.         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)
  4616.         tst z80f,#1<<CFlag
  4617.         orrne z80f,z80f,#1<<HFlag
  4618.         eor z80f,z80f,#1<<CFlag
  4619.         fetch 4
  4620.  
  4621. ;@LD B,C
  4622. opcode_4_1:
  4623.         and z80bc,z80bc,#0xFF<<16
  4624.         orr z80bc,z80bc,z80bc, lsl #8
  4625.         fetch 4
  4626. ;@LD B,D
  4627. opcode_4_2:
  4628.         and z80bc,z80bc,#0xFF<<16
  4629.         and r1,z80de,#0xFF<<24
  4630.         orr z80bc,z80bc,r1
  4631.         fetch 4
  4632. ;@LD B,E
  4633. opcode_4_3:
  4634.         and z80bc,z80bc,#0xFF<<16
  4635.         and r1,z80de,#0xFF<<16
  4636.         orr z80bc,z80bc,r1, lsl #8
  4637.         fetch 4
  4638. ;@LD B,H
  4639. opcode_4_4:
  4640.         and z80bc,z80bc,#0xFF<<16
  4641.         and r1,z80hl,#0xFF<<24
  4642.         orr z80bc,z80bc,r1
  4643.         fetch 4
  4644. ;@LD B,L
  4645. opcode_4_5:
  4646.         and z80bc,z80bc,#0xFF<<16
  4647.         and r1,z80hl,#0xFF<<16
  4648.         orr z80bc,z80bc,r1, lsl #8
  4649.         fetch 4
  4650. ;@LD B,(HL)
  4651. opcode_4_6:
  4652.         readmem8HL
  4653.         and z80bc,z80bc,#0xFF<<16
  4654.         orr z80bc,z80bc,r0, lsl #24
  4655.         fetch 7
  4656. ;@LD B,A
  4657. opcode_4_7:
  4658.         and z80bc,z80bc,#0xFF<<16
  4659.         orr z80bc,z80bc,z80a
  4660.         fetch 4
  4661. ;@LD C,B
  4662. opcode_4_8:
  4663.         and z80bc,z80bc,#0xFF<<24
  4664.         orr z80bc,z80bc,z80bc, lsr #8
  4665.         fetch 4
  4666. ;@LD C,D
  4667. opcode_4_A:
  4668.         and z80bc,z80bc,#0xFF<<24
  4669.         and r1,z80de,#0xFF<<24
  4670.         orr z80bc,z80bc,r1, lsr #8
  4671.         fetch 4
  4672. ;@LD C,E
  4673. opcode_4_B:
  4674.         and z80bc,z80bc,#0xFF<<24
  4675.         and r1,z80de,#0xFF<<16
  4676.         orr z80bc,z80bc,r1
  4677.         fetch 4
  4678. ;@LD C,H
  4679. opcode_4_C:
  4680.         and z80bc,z80bc,#0xFF<<24
  4681.         and r1,z80hl,#0xFF<<24
  4682.         orr z80bc,z80bc,r1, lsr #8
  4683.         fetch 4
  4684. ;@LD C,L
  4685. opcode_4_D:
  4686.         and z80bc,z80bc,#0xFF<<24
  4687.         and r1,z80hl,#0xFF<<16
  4688.         orr z80bc,z80bc,r1
  4689.         fetch 4
  4690. ;@LD C,(HL)
  4691. opcode_4_E:
  4692.         readmem8HL
  4693.         and z80bc,z80bc,#0xFF<<24
  4694.         orr z80bc,z80bc,r0, lsl #16
  4695.         fetch 7
  4696. ;@LD C,A
  4697. opcode_4_F:
  4698.         and z80bc,z80bc,#0xFF<<24
  4699.         orr z80bc,z80bc,z80a, lsr #8
  4700.         fetch 4
  4701. ;@LD D,B
  4702. opcode_5_0:
  4703.         and z80de,z80de,#0xFF<<16
  4704.         and r1,z80bc,#0xFF<<24
  4705.         orr z80de,z80de,r1
  4706.         fetch 4
  4707. ;@LD D,C
  4708. opcode_5_1:
  4709.         and z80de,z80de,#0xFF<<16
  4710.         orr z80de,z80de,z80bc, lsl #8
  4711.         fetch 4
  4712. ;@LD D,E
  4713. opcode_5_3:
  4714.         and z80de,z80de,#0xFF<<16
  4715.         orr z80de,z80de,z80de, lsl #8
  4716.         fetch 4
  4717. ;@LD D,H
  4718. opcode_5_4:
  4719.         and z80de,z80de,#0xFF<<16
  4720.         and r1,z80hl,#0xFF<<24
  4721.         orr z80de,z80de,r1
  4722.         fetch 4
  4723. ;@LD D,L
  4724. opcode_5_5:
  4725.         and z80de,z80de,#0xFF<<16
  4726.         orr z80de,z80de,z80hl, lsl #8
  4727.         fetch 4
  4728. ;@LD D,(HL)
  4729. opcode_5_6:
  4730.         readmem8HL
  4731.         and z80de,z80de,#0xFF<<16
  4732.         orr z80de,z80de,r0, lsl #24
  4733.         fetch 7
  4734. ;@LD D,A
  4735. opcode_5_7:
  4736.         and z80de,z80de,#0xFF<<16
  4737.         orr z80de,z80de,z80a
  4738.         fetch 4
  4739. ;@LD E,B
  4740. opcode_5_8:
  4741.         and z80de,z80de,#0xFF<<24
  4742.         and r1,z80bc,#0xFF<<24
  4743.         orr z80de,z80de,r1, lsr #8
  4744.         fetch 4
  4745. ;@LD E,C
  4746. opcode_5_9:
  4747.         and z80de,z80de,#0xFF<<24
  4748.         and r1,z80bc,#0xFF<<16
  4749.         orr z80de,z80de,r1
  4750.         fetch 4
  4751. ;@LD E,D
  4752. opcode_5_A:
  4753.         and z80de,z80de,#0xFF<<24
  4754.         orr z80de,z80de,z80de, lsr #8
  4755.         fetch 4
  4756. ;@LD E,H
  4757. opcode_5_C:
  4758.         and z80de,z80de,#0xFF<<24
  4759.         and r1,z80hl,#0xFF<<24
  4760.         orr z80de,z80de,r1, lsr #8
  4761.         fetch 4
  4762. ;@LD E,L
  4763. opcode_5_D:
  4764.         and z80de,z80de,#0xFF<<24
  4765.         and r1,z80hl,#0xFF<<16
  4766.         orr z80de,z80de,r1
  4767.         fetch 4
  4768. ;@LD E,(HL)
  4769. opcode_5_E:
  4770.         readmem8HL
  4771.         and z80de,z80de,#0xFF<<24
  4772.         orr z80de,z80de,r0, lsl #16
  4773.         fetch 7
  4774. ;@LD E,A
  4775. opcode_5_F:
  4776.         and z80de,z80de,#0xFF<<24
  4777.         orr z80de,z80de,z80a, lsr #8
  4778.         fetch 4
  4779.  
  4780. ;@LD H,B
  4781. opcode_6_0:
  4782.         and z80hl,z80hl,#0xFF<<16
  4783.         and r1,z80bc,#0xFF<<24
  4784.         orr z80hl,z80hl,r1
  4785.         fetch 4
  4786. ;@LD H,C
  4787. opcode_6_1:
  4788.         and z80hl,z80hl,#0xFF<<16
  4789.         orr z80hl,z80hl,z80bc, lsl #8
  4790.         fetch 4
  4791. ;@LD H,D
  4792. opcode_6_2:
  4793.         and z80hl,z80hl,#0xFF<<16
  4794.         and r1,z80de,#0xFF<<24
  4795.         orr z80hl,z80hl,r1
  4796.         fetch 4
  4797. ;@LD H,E
  4798. opcode_6_3:
  4799.         and z80hl,z80hl,#0xFF<<16
  4800.         orr z80hl,z80hl,z80de, lsl #8
  4801.         fetch 4
  4802. ;@LD H,L
  4803. opcode_6_5:
  4804.         and z80hl,z80hl,#0xFF<<16
  4805.         orr z80hl,z80hl,z80hl, lsl #8
  4806.         fetch 4
  4807. ;@LD H,(HL)
  4808. opcode_6_6:
  4809.         readmem8HL
  4810.         and z80hl,z80hl,#0xFF<<16
  4811.         orr z80hl,z80hl,r0, lsl #24
  4812.         fetch 7
  4813. ;@LD H,A
  4814. opcode_6_7:
  4815.         and z80hl,z80hl,#0xFF<<16
  4816.         orr z80hl,z80hl,z80a
  4817.         fetch 4
  4818.  
  4819. ;@LD L,B
  4820. opcode_6_8:
  4821.         and z80hl,z80hl,#0xFF<<24
  4822.         and r1,z80bc,#0xFF<<24
  4823.         orr z80hl,z80hl,r1, lsr #8
  4824.         fetch 4
  4825. ;@LD L,C
  4826. opcode_6_9:
  4827.         and z80hl,z80hl,#0xFF<<24
  4828.         and r1,z80bc,#0xFF<<16
  4829.         orr z80hl,z80hl,r1
  4830.         fetch 4
  4831. ;@LD L,D
  4832. opcode_6_A:
  4833.         and z80hl,z80hl,#0xFF<<24
  4834.         and r1,z80de,#0xFF<<24
  4835.         orr z80hl,z80hl,r1, lsr #8
  4836.         fetch 4
  4837. ;@LD L,E
  4838. opcode_6_B:
  4839.         and z80hl,z80hl,#0xFF<<24
  4840.         and r1,z80de,#0xFF<<16
  4841.         orr z80hl,z80hl,r1
  4842.         fetch 4
  4843. ;@LD L,H
  4844. opcode_6_C:
  4845.         and z80hl,z80hl,#0xFF<<24
  4846.         orr z80hl,z80hl,z80hl, lsr #8
  4847.         fetch 4
  4848. ;@LD L,(HL)
  4849. opcode_6_E:
  4850.         readmem8HL
  4851.         and z80hl,z80hl,#0xFF<<24
  4852.         orr z80hl,z80hl,r0, lsl #16
  4853.         fetch 7
  4854. ;@LD L,A
  4855. opcode_6_F:
  4856.         and z80hl,z80hl,#0xFF<<24
  4857.         orr z80hl,z80hl,z80a, lsr #8
  4858.         fetch 4
  4859.  
  4860. ;@LD (HL),B
  4861. opcode_7_0:
  4862.         mov r0,z80bc, lsr #24
  4863.         writemem8HL
  4864.         fetch 7
  4865. ;@LD (HL),C
  4866. opcode_7_1:
  4867.         mov r0,z80bc, lsr #16
  4868.         and r0,r0,#0xFF
  4869.         writemem8HL
  4870.         fetch 7
  4871. ;@LD (HL),D
  4872. opcode_7_2:
  4873.         mov r0,z80de, lsr #24
  4874.         writemem8HL
  4875.         fetch 7
  4876. ;@LD (HL),E
  4877. opcode_7_3:
  4878.         mov r0,z80de, lsr #16
  4879.         and r0,r0,#0xFF
  4880.         writemem8HL
  4881.         fetch 7
  4882. ;@LD (HL),H
  4883. opcode_7_4:
  4884.         mov r0,z80hl, lsr #24
  4885.         writemem8HL
  4886.         fetch 7
  4887. ;@LD (HL),L
  4888. opcode_7_5:
  4889.         mov r1,z80hl, lsr #16
  4890.         and r0,r1,#0xFF
  4891.         writemem8
  4892.         fetch 7
  4893. ;@HALT
  4894. opcode_7_6:
  4895.         sub z80pc,z80pc,#1
  4896.         ldrb r0,[cpucontext,#z80if]
  4897.         orr r0,r0,#Z80_HALT
  4898.         strb r0,[cpucontext,#z80if]
  4899.         b z80_execute_end
  4900. ;@LD (HL),A
  4901. opcode_7_7:
  4902.         mov r0,z80a, lsr #24
  4903.         writemem8HL
  4904.         fetch 7
  4905.  
  4906. ;@LD A,B
  4907. opcode_7_8:
  4908.         and z80a,z80bc,#0xFF<<24
  4909.         fetch 4
  4910. ;@LD A,C
  4911. opcode_7_9:
  4912.         mov z80a,z80bc, lsl #8
  4913.         fetch 4
  4914. ;@LD A,D
  4915. opcode_7_A:
  4916.         and z80a,z80de,#0xFF<<24
  4917.         fetch 4
  4918. ;@LD A,E
  4919. opcode_7_B:
  4920.         mov z80a,z80de, lsl #8
  4921.         fetch 4
  4922. ;@LD A,H
  4923. opcode_7_C:
  4924.         and z80a,z80hl,#0xFF<<24
  4925.         fetch 4
  4926. ;@LD A,L
  4927. opcode_7_D:
  4928.         mov z80a,z80hl, lsl #8
  4929.         fetch 4
  4930. ;@LD A,(HL)
  4931. opcode_7_E:
  4932.         readmem8HL
  4933.         mov z80a,r0, lsl #24
  4934.         fetch 7
  4935.  
  4936. ;@ADD A,B
  4937. opcode_8_0:
  4938.         opADDH z80bc
  4939. ;@ADD A,C
  4940. opcode_8_1:
  4941.         opADDL z80bc
  4942. ;@ADD A,D
  4943. opcode_8_2:
  4944.         opADDH z80de
  4945. ;@ADD A,E
  4946. opcode_8_3:
  4947.         opADDL z80de
  4948. ;@ADD A,H
  4949. opcode_8_4:
  4950.         opADDH z80hl
  4951. ;@ADD A,L
  4952. opcode_8_5:
  4953.         opADDL z80hl
  4954. ;@ADD A,(HL)
  4955. opcode_8_6:
  4956.         readmem8HL
  4957.         opADDb
  4958.         fetch 7
  4959. ;@ADD A,A
  4960. opcode_8_7:
  4961.         opADDA
  4962.  
  4963. ;@ADC A,B
  4964. opcode_8_8:
  4965.         opADCH z80bc
  4966. ;@ADC A,C
  4967. opcode_8_9:
  4968.         opADCL z80bc
  4969. ;@ADC A,D
  4970. opcode_8_A:
  4971.         opADCH z80de
  4972. ;@ADC A,E
  4973. opcode_8_B:
  4974.         opADCL z80de
  4975. ;@ADC A,H
  4976. opcode_8_C:
  4977.         opADCH z80hl
  4978. ;@ADC A,L
  4979. opcode_8_D:
  4980.         opADCL z80hl
  4981. ;@ADC A,(HL)
  4982. opcode_8_E:
  4983.         readmem8HL
  4984.         opADCb
  4985.         fetch 7
  4986. ;@ADC A,A
  4987. opcode_8_F:
  4988.         opADCA
  4989.  
  4990. ;@SUB B
  4991. opcode_9_0:
  4992.         opSUBH z80bc
  4993. ;@SUB C
  4994. opcode_9_1:
  4995.         opSUBL z80bc
  4996. ;@SUB D
  4997. opcode_9_2:
  4998.         opSUBH z80de
  4999. ;@SUB E
  5000. opcode_9_3:
  5001.         opSUBL z80de
  5002. ;@SUB H
  5003. opcode_9_4:
  5004.         opSUBH z80hl
  5005. ;@SUB L
  5006. opcode_9_5:
  5007.         opSUBL z80hl
  5008. ;@SUB (HL)
  5009. opcode_9_6:
  5010.         readmem8HL
  5011.         opSUBb
  5012.         fetch 7
  5013. ;@SUB A
  5014. opcode_9_7:
  5015.         opSUBA
  5016.  
  5017. ;@SBC B
  5018. opcode_9_8:
  5019.         opSBCH z80bc
  5020. ;@SBC C
  5021. opcode_9_9:
  5022.         opSBCL z80bc
  5023. ;@SBC D
  5024. opcode_9_A:
  5025.         opSBCH z80de
  5026. ;@SBC E
  5027. opcode_9_B:
  5028.         opSBCL z80de
  5029. ;@SBC H
  5030. opcode_9_C:
  5031.         opSBCH z80hl
  5032. ;@SBC L
  5033. opcode_9_D:
  5034.         opSBCL z80hl
  5035. ;@SBC (HL)
  5036. opcode_9_E:
  5037.         readmem8HL
  5038.         opSBCb
  5039.         fetch 7
  5040. ;@SBC A
  5041. opcode_9_F:
  5042.         opSBCA
  5043.  
  5044. ;@AND B
  5045. opcode_A_0:
  5046.         opANDH z80bc
  5047. ;@AND C
  5048. opcode_A_1:
  5049.         opANDL z80bc
  5050. ;@AND D
  5051. opcode_A_2:
  5052.         opANDH z80de
  5053. ;@AND E
  5054. opcode_A_3:
  5055.         opANDL z80de
  5056. ;@AND H
  5057. opcode_A_4:
  5058.         opANDH z80hl
  5059. ;@AND L
  5060. opcode_A_5:
  5061.         opANDL z80hl
  5062. ;@AND (HL)
  5063. opcode_A_6:
  5064.         readmem8HL
  5065.         opANDb
  5066.         fetch 7
  5067. ;@AND A
  5068. opcode_A_7:
  5069.         opANDA
  5070.  
  5071. ;@XOR B
  5072. opcode_A_8:
  5073.         opXORH z80bc
  5074. ;@XOR C
  5075. opcode_A_9:
  5076.         opXORL z80bc
  5077. ;@XOR D
  5078. opcode_A_A:
  5079.         opXORH z80de
  5080. ;@XOR E
  5081. opcode_A_B:
  5082.         opXORL z80de
  5083. ;@XOR H
  5084. opcode_A_C:
  5085.         opXORH z80hl
  5086. ;@XOR L
  5087. opcode_A_D:
  5088.         opXORL z80hl
  5089. ;@XOR (HL)
  5090. opcode_A_E:
  5091.         readmem8HL
  5092.         opXORb
  5093.         fetch 7
  5094. ;@XOR A
  5095. opcode_A_F:
  5096.         opXORA
  5097.  
  5098. ;@OR B
  5099. opcode_B_0:
  5100.         opORH z80bc
  5101. ;@OR C
  5102. opcode_B_1:
  5103.         opORL z80bc
  5104. ;@OR D
  5105. opcode_B_2:
  5106.         opORH z80de
  5107. ;@OR E
  5108. opcode_B_3:
  5109.         opORL z80de
  5110. ;@OR H
  5111. opcode_B_4:
  5112.         opORH z80hl
  5113. ;@OR L
  5114. opcode_B_5:
  5115.         opORL z80hl
  5116. ;@OR (HL)
  5117. opcode_B_6:
  5118.         readmem8HL
  5119.         opORb
  5120.         fetch 7
  5121. ;@OR A
  5122. opcode_B_7:
  5123.         opORA
  5124.  
  5125. ;@CP B
  5126. opcode_B_8:
  5127.         opCPH z80bc
  5128. ;@CP C
  5129. opcode_B_9:
  5130.         opCPL z80bc
  5131. ;@CP D
  5132. opcode_B_A:
  5133.         opCPH z80de
  5134. ;@CP E
  5135. opcode_B_B:
  5136.         opCPL z80de
  5137. ;@CP H
  5138. opcode_B_C:
  5139.         opCPH z80hl
  5140. ;@CP L
  5141. opcode_B_D:
  5142.         opCPL z80hl
  5143. ;@CP (HL)
  5144. opcode_B_E:
  5145.         readmem8HL
  5146.         opCPb
  5147.         fetch 7
  5148. ;@CP A
  5149. opcode_B_F:
  5150.         opCPA
  5151.  
  5152. ;@RET NZ
  5153. opcode_C_0:
  5154.         tst z80f,#1<<ZFlag
  5155.         beq opcode_C_9          ;@unconditional RET
  5156.         fetch 5
  5157.  
  5158. ;@POP BC
  5159. opcode_C_1:
  5160.         opPOPreg z80bc
  5161.  
  5162. ;@JP NZ,$+3
  5163. opcode_C_2:
  5164.         tst z80f,#1<<ZFlag
  5165.         beq opcode_C_3          ;@unconditional JP
  5166.         add z80pc,z80pc,#2
  5167.         fetch 10
  5168. ;@JP $+3
  5169. opcode_C_3:
  5170.         ldrb r0,[z80pc],#1
  5171.         ldrb r1,[z80pc],#1
  5172.         orr r0,r0,r1, lsl #8
  5173.         rebasepc
  5174.         fetch 10
  5175. ;@CALL NZ,NN
  5176. opcode_C_4:
  5177.         tst z80f,#1<<ZFlag
  5178.         beq opcode_C_D          ;@unconditional CALL
  5179.         add z80pc,z80pc,#2
  5180.         fetch 10
  5181.  
  5182. ;@PUSH BC
  5183. opcode_C_5:
  5184.         opPUSHreg z80bc
  5185.         fetch 11
  5186. ;@ADD A,N
  5187. opcode_C_6:
  5188.         ldrb r0,[z80pc],#1
  5189.         opADDb
  5190.         fetch 7
  5191. ;@RST 0
  5192. opcode_C_7:
  5193.         opRST 0x00
  5194.  
  5195. ;@RET Z
  5196. opcode_C_8:
  5197.         tst z80f,#1<<ZFlag
  5198.         bne opcode_C_9          ;@unconditional RET
  5199.         fetch 5
  5200. ;@RET
  5201. opcode_C_9:
  5202.     opPOP
  5203.         rebasepc
  5204.         fetch 10
  5205. ;@JP Z,$+3
  5206. opcode_C_A:
  5207.         tst z80f,#1<<ZFlag
  5208.         bne opcode_C_3  ;@unconditional JP
  5209.         add z80pc,z80pc,#2
  5210.         fetch 10
  5211.  
  5212. ;@This reads this opcodes_CB lookup table to find the location of
  5213. ;@the CB sub for the intruction and then branches to that location
  5214. opcode_C_B:
  5215.         ldrb r0,[z80pc],#1
  5216.         ldr pc,[pc,r0, lsl #2]
  5217. opcodes_CB:     .word 0x00000000
  5218.                         .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
  5219.                         .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
  5220.                         .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
  5221.                         .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
  5222.                         .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
  5223.                         .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
  5224.                         .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
  5225.                         .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
  5226.                         .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
  5227.                         .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
  5228.                         .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
  5229.                         .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
  5230.                         .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
  5231.                         .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
  5232.                         .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
  5233.                         .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
  5234.                         .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
  5235.                         .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
  5236.                         .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
  5237.                         .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
  5238.                         .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
  5239.                         .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
  5240.                         .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
  5241.                         .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
  5242.                         .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
  5243.                         .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
  5244.                         .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
  5245.                         .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
  5246.                         .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
  5247.                         .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
  5248.                         .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
  5249.                         .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
  5250.  
  5251. ;@CALL Z,NN
  5252. opcode_C_C:
  5253.         tst z80f,#1<<ZFlag
  5254.         bne opcode_C_D          ;@unconditional CALL
  5255.         add z80pc,z80pc,#2
  5256.         fetch 10
  5257. ;@CALL NN
  5258. opcode_C_D:
  5259.         ldrb r0,[z80pc],#1
  5260.         ldrb r1,[z80pc],#1
  5261.         ldr r2,[cpucontext,#z80pc_base]
  5262.         sub r2,z80pc,r2
  5263.         orr z80pc,r0,r1, lsl #8
  5264.     opPUSHareg r2
  5265.     mov r0,z80pc
  5266.         rebasepc
  5267.         fetch 17
  5268. ;@ADC A,N
  5269. opcode_C_E:
  5270.         ldrb r0,[z80pc],#1
  5271.         opADCb
  5272.         fetch 7
  5273. ;@RST 8H
  5274. opcode_C_F:
  5275.         opRST 0x08
  5276.  
  5277. ;@RET NC
  5278. opcode_D_0:
  5279.         tst z80f,#1<<CFlag
  5280.         beq opcode_C_9          ;@unconditional RET
  5281.         fetch 5
  5282. ;@POP DE
  5283. opcode_D_1:
  5284.         opPOPreg z80de
  5285.  
  5286. ;@JP NC, $+3
  5287. opcode_D_2 :
  5288.         tst z80f,#1<<CFlag
  5289.         beq opcode_C_3          ;@unconditional JP
  5290.         add z80pc,z80pc,#2
  5291.         fetch 10
  5292. ;@OUT (N),A
  5293. opcode_D_3:
  5294.         ldrb r0,[z80pc],#1
  5295.         orr r0,r0,z80a,lsr#16
  5296.         mov r1,z80a, lsr #24
  5297.         opOUT
  5298.         fetch 11
  5299. ;@CALL NC,NN
  5300. opcode_D_4:
  5301.         tst z80f,#1<<CFlag
  5302.         beq opcode_C_D          ;@unconditional CALL
  5303.         add z80pc,z80pc,#2
  5304.         fetch 10
  5305. ;@PUSH DE
  5306. opcode_D_5:
  5307.         opPUSHreg z80de
  5308.         fetch 11
  5309. ;@SUB N
  5310. opcode_D_6:
  5311.         ldrb r0,[z80pc],#1
  5312.         opSUBb
  5313.         fetch 7
  5314.  
  5315. ;@RST 10H
  5316. opcode_D_7:
  5317.         opRST 0x10
  5318.  
  5319. ;@RET C
  5320. opcode_D_8:
  5321.         tst z80f,#1<<CFlag
  5322.         bne opcode_C_9          ;@unconditional RET
  5323.         fetch 5
  5324. ;@EXX
  5325. opcode_D_9:
  5326.         add r1,cpucontext,#z80bc2
  5327.         swp z80bc,z80bc,[r1]
  5328.         add r1,cpucontext,#z80de2
  5329.         swp z80de,z80de,[r1]
  5330.         add r1,cpucontext,#z80hl2
  5331.         swp z80hl,z80hl,[r1]
  5332.         fetch 4
  5333. ;@JP C,$+3
  5334. opcode_D_A:
  5335.         tst z80f,#1<<CFlag
  5336.         bne opcode_C_3          ;@unconditional JP
  5337.         add z80pc,z80pc,#2
  5338.         fetch 10
  5339. ;@IN A,(N)
  5340. opcode_D_B:
  5341.         ldrb r0,[z80pc],#1
  5342.         orr r0,r0,z80a,lsr#16
  5343.         opIN
  5344.         mov z80a,r0, lsl #24    ;@ r0 = data read
  5345.         fetch 11
  5346. ;@CALL C,NN
  5347. opcode_D_C:
  5348.         tst z80f,#1<<CFlag
  5349.         bne opcode_C_D          ;@unconditional CALL
  5350.         add z80pc,z80pc,#2
  5351.         fetch 10
  5352.  
  5353. ;@opcodes_DD
  5354. opcode_D_D:
  5355.         add z80xx,cpucontext,#z80ix
  5356.         b opcode_D_D_F_D
  5357. opcode_F_D:
  5358.         add z80xx,cpucontext,#z80iy
  5359. opcode_D_D_F_D:
  5360.         ldrb r0,[z80pc],#1
  5361.         ldr pc,[pc,r0, lsl #2]
  5362. opcodes_DD:     .word 0x00000000
  5363.                         .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
  5364.                         .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
  5365.                         .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
  5366.                         .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
  5367.                         .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
  5368.                         .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
  5369.                         .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
  5370.                         .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
  5371.                         .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
  5372.                         .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
  5373.                         .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
  5374.                         .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
  5375.                         .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
  5376.                         .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
  5377.                         .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
  5378.                         .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
  5379.                         .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
  5380.                         .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
  5381.                         .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
  5382.                         .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
  5383.                         .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
  5384.                         .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
  5385.                         .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
  5386.                         .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
  5387.                         .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
  5388.                         .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
  5389.                         .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
  5390.                         .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
  5391.                         .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
  5392.                         .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
  5393.                         .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
  5394.                         .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
  5395.  
  5396. ;@SBC A,N
  5397. opcode_D_E:
  5398.         ldrb r0,[z80pc],#1
  5399.         opSBCb
  5400.         fetch 7
  5401. ;@RST 18H
  5402. opcode_D_F:
  5403.         opRST 0x18
  5404.  
  5405. ;@RET PO
  5406. opcode_E_0:
  5407.         tst z80f,#1<<VFlag
  5408.         beq opcode_C_9          ;@unconditional RET
  5409.         fetch 5
  5410. ;@POP HL
  5411. opcode_E_1:
  5412.         opPOPreg z80hl
  5413.  
  5414. ;@JP PO,$+3
  5415. opcode_E_2:
  5416.         tst z80f,#1<<VFlag
  5417.         beq opcode_C_3          ;@unconditional JP
  5418.         add z80pc,z80pc,#2
  5419.         fetch 10
  5420. ;@EX (SP),HL
  5421. opcode_E_3:
  5422. .if FAST_Z80SP
  5423.         ldrb r0,[z80sp]
  5424.         ldrb r1,[z80sp,#1]
  5425.         orr r0,r0,r1, lsl #8
  5426.         mov r1,z80hl, lsr #24
  5427.         strb r1,[z80sp,#1]
  5428.         mov r1,z80hl, lsr #16
  5429.         strb r1,[z80sp]
  5430.         mov z80hl,r0, lsl #16
  5431. .else
  5432.         mov r0,z80sp
  5433.         readmem16
  5434.         mov r1,r0
  5435.         mov r0,z80hl,lsr#16
  5436.         mov z80hl,r1,lsl#16
  5437.         mov r1,z80sp
  5438.         writemem16
  5439. .endif
  5440.         fetch 19
  5441. ;@CALL PO,NN
  5442. opcode_E_4:
  5443.         tst z80f,#1<<VFlag
  5444.         beq opcode_C_D          ;@unconditional CALL
  5445.         add z80pc,z80pc,#2
  5446.         fetch 10
  5447. ;@PUSH HL
  5448. opcode_E_5:
  5449.         opPUSHreg z80hl
  5450.         fetch 11
  5451. ;@AND N
  5452. opcode_E_6:
  5453.         ldrb r0,[z80pc],#1
  5454.         opANDb
  5455.         fetch 7
  5456. ;@RST 20H
  5457. opcode_E_7:
  5458.         opRST 0x20
  5459.  
  5460. ;@RET PE
  5461. opcode_E_8:
  5462.         tst z80f,#1<<VFlag
  5463.         bne opcode_C_9          ;@unconditional RET
  5464.         fetch 5
  5465. ;@JP (HL)
  5466. opcode_E_9:
  5467.         mov r0,z80hl, lsr #16
  5468.         rebasepc
  5469.         fetch 4
  5470. ;@JP PE,$+3
  5471. opcode_E_A:
  5472.         tst z80f,#1<<VFlag
  5473.         bne opcode_C_3          ;@unconditional JP
  5474.         add z80pc,z80pc,#2
  5475.         fetch 10
  5476. ;@EX DE,HL
  5477. opcode_E_B:
  5478.         mov r1,z80de
  5479.         mov z80de,z80hl
  5480.         mov z80hl,r1
  5481.         fetch 4
  5482. ;@CALL PE,NN
  5483. opcode_E_C:
  5484.         tst z80f,#1<<VFlag
  5485.         bne opcode_C_D          ;@unconditional CALL
  5486.         add z80pc,z80pc,#2
  5487.         fetch 10
  5488.  
  5489. ;@This should be caught at start
  5490. opcode_E_D:
  5491.         ldrb r1,[z80pc],#1
  5492.         ldr pc,[pc,r1, lsl #2]
  5493. opcodes_ED:     .word 0x00000000
  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
  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
  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
  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
  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
  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
  5500.                         .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
  5501.                         .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
  5502.                         .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
  5503.                         .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
  5504.                         .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
  5505.                         .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
  5506.                         .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
  5507.                         .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
  5508.                         .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
  5509.                         .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
  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
  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
  5512.                         .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
  5513.                         .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
  5514.                         .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
  5515.                         .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
  5516.                         .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
  5517.                         .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
  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
  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
  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
  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
  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
  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
  5524.                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF
  5525.                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF
  5526.  
  5527. ;@XOR N
  5528. opcode_E_E:
  5529.         ldrb r0,[z80pc],#1
  5530.         opXORb
  5531.         fetch 7
  5532. ;@RST 28H
  5533. opcode_E_F:
  5534.         opRST 0x28
  5535.  
  5536. ;@RET P
  5537. opcode_F_0:
  5538.         tst z80f,#1<<SFlag
  5539.         beq opcode_C_9          ;@unconditional RET
  5540.         fetch 5
  5541. ;@POP AF
  5542. opcode_F_1:
  5543. .if FAST_Z80SP
  5544.         ldrb z80f,[z80sp],#1
  5545.         sub r0,opcodes,#0x200
  5546.         ldrb z80f,[r0,z80f]
  5547.         ldrb z80a,[z80sp],#1
  5548.         mov z80a,z80a, lsl #24
  5549. .else
  5550.         mov r0,z80sp
  5551.         readmem16
  5552.         add z80sp,z80sp,#2
  5553.         and z80a,r0,#0xFF00
  5554.         mov z80a,z80a,lsl#16
  5555.         and z80f,r0,#0xFF
  5556.         sub r0,opcodes,#0x200
  5557.         ldrb z80f,[r0,z80f]
  5558. .endif
  5559.         fetch 10
  5560. ;@JP P,$+3
  5561. opcode_F_2:
  5562.         tst z80f,#1<<SFlag
  5563.         beq opcode_C_3          ;@unconditional JP
  5564.         add z80pc,z80pc,#2
  5565.         fetch 10
  5566. ;@DI
  5567. opcode_F_3:
  5568.         ldrb r1,[cpucontext,#z80if]
  5569.         bic r1,r1,#(Z80_IF1)|(Z80_IF2)
  5570.         strb r1,[cpucontext,#z80if]
  5571.         fetch 4
  5572. ;@CALL P,NN
  5573. opcode_F_4:
  5574.         tst z80f,#1<<SFlag
  5575.         beq opcode_C_D          ;@unconditional CALL
  5576.         add z80pc,z80pc,#2
  5577.         fetch 10
  5578. ;@PUSH AF
  5579. opcode_F_5:
  5580.         sub r0,opcodes,#0x300
  5581.         ldrb r0,[r0,z80f]
  5582.         orr r2,r0,z80a,lsr#16
  5583.     opPUSHareg r2
  5584.         fetch 11
  5585. ;@OR N
  5586. opcode_F_6:
  5587.         ldrb r0,[z80pc],#1
  5588.         opORb
  5589.         fetch 7
  5590. ;@RST 30H
  5591. opcode_F_7:
  5592.         opRST 0x30
  5593.  
  5594. ;@RET M
  5595. opcode_F_8:
  5596.         tst z80f,#1<<SFlag
  5597.         bne opcode_C_9          ;@unconditional RET
  5598.         fetch 5
  5599. ;@LD SP,HL
  5600. opcode_F_9:
  5601. .if FAST_Z80SP
  5602.         mov r0,z80hl, lsr #16
  5603.         rebasesp
  5604.         mov z80sp,r0
  5605. .else
  5606.         mov z80sp,z80hl, lsr #16
  5607. .endif
  5608.         fetch 4
  5609. ;@JP M,$+3
  5610. opcode_F_A:
  5611.         tst z80f,#1<<SFlag
  5612.         bne opcode_C_3          ;@unconditional JP
  5613.         add z80pc,z80pc,#2
  5614.         fetch 10
  5615. MAIN_opcodes_POINTER: .word MAIN_opcodes
  5616. EI_DUMMY_opcodes_POINTER: .word EI_DUMMY_opcodes
  5617. ;@EI
  5618. opcode_F_B:
  5619.         ldrb r1,[cpucontext,#z80if]
  5620.         tst r1,#Z80_IF1
  5621.         bne ei_return_exit
  5622.  
  5623.         orr r1,r1,#(Z80_IF1)|(Z80_IF2)
  5624.         strb r1,[cpucontext,#z80if]
  5625.  
  5626.         mov r2,opcodes
  5627.         ldr opcodes,EI_DUMMY_opcodes_POINTER
  5628.         ldr pc,[r2,r0, lsl #2]
  5629.  
  5630. ei_return:
  5631.         ;@point that program returns from EI to check interupts
  5632.         ;@an interupt can not be taken directly after a EI opcode
  5633.         ;@ reset z80pc and opcode pointer
  5634.         ldrh r0,[cpucontext,#z80irq] @ 0x4C
  5635.         sub z80pc,z80pc,#1
  5636.         ldr opcodes,MAIN_opcodes_POINTER
  5637.         ;@ check ints
  5638.         tst r0,#1
  5639.         movnes r0,r0,lsr #8
  5640.     blne DoInterrupt
  5641.         ;@ continue
  5642. ei_return_exit:
  5643.         fetch 4
  5644.  
  5645. ;@CALL M,NN
  5646. opcode_F_C:
  5647.         tst z80f,#1<<SFlag
  5648.         bne opcode_C_D          ;@unconditional CALL
  5649.         add z80pc,z80pc,#2
  5650.         fetch 10
  5651.  
  5652. ;@SHOULD BE CAUGHT AT START - FD SECTION
  5653.  
  5654. ;@CP N
  5655. opcode_F_E:
  5656.         ldrb r0,[z80pc],#1
  5657.         opCPb
  5658.         fetch 7
  5659. ;@RST 38H
  5660. opcode_F_F:
  5661.         opRST 0x38
  5662.  
  5663.  
  5664. ;@##################################
  5665. ;@##################################
  5666. ;@###  opcodes CB  #########################
  5667. ;@##################################
  5668. ;@##################################
  5669.  
  5670.  
  5671. ;@RLC B
  5672. opcode_CB_00:
  5673.         opRLCH z80bc
  5674. ;@RLC C
  5675. opcode_CB_01:
  5676.         opRLCL z80bc
  5677. ;@RLC D
  5678. opcode_CB_02:
  5679.         opRLCH z80de
  5680. ;@RLC E
  5681. opcode_CB_03:
  5682.         opRLCL z80de
  5683. ;@RLC H
  5684. opcode_CB_04:
  5685.         opRLCH z80hl
  5686. ;@RLC L
  5687. opcode_CB_05:
  5688.         opRLCL z80hl
  5689. ;@RLC (HL)
  5690. opcode_CB_06:
  5691.         readmem8HL
  5692.         opRLCb
  5693.         writemem8HL
  5694.         fetch 15
  5695. ;@RLC A
  5696. opcode_CB_07:
  5697.         opRLCA
  5698.  
  5699. ;@RRC B
  5700. opcode_CB_08:
  5701.         opRRCH z80bc
  5702. ;@RRC C
  5703. opcode_CB_09:
  5704.         opRRCL z80bc
  5705. ;@RRC D
  5706. opcode_CB_0A:
  5707.         opRRCH z80de
  5708. ;@RRC E
  5709. opcode_CB_0B:
  5710.         opRRCL z80de
  5711. ;@RRC H
  5712. opcode_CB_0C:
  5713.         opRRCH z80hl
  5714. ;@RRC L
  5715. opcode_CB_0D:
  5716.         opRRCL z80hl
  5717. ;@RRC (HL)
  5718. opcode_CB_0E :
  5719.         readmem8HL
  5720.         opRRCb
  5721.         writemem8HL
  5722.         fetch 15
  5723. ;@RRC A
  5724. opcode_CB_0F:
  5725.         opRRCA
  5726.  
  5727. ;@RL B
  5728. opcode_CB_10:
  5729.         opRLH z80bc
  5730. ;@RL C
  5731. opcode_CB_11:
  5732.         opRLL z80bc
  5733. ;@RL D
  5734. opcode_CB_12:
  5735.         opRLH z80de
  5736. ;@RL E
  5737. opcode_CB_13:
  5738.         opRLL z80de
  5739. ;@RL H
  5740. opcode_CB_14:
  5741.         opRLH z80hl
  5742. ;@RL L
  5743. opcode_CB_15:
  5744.         opRLL z80hl
  5745. ;@RL (HL)
  5746. opcode_CB_16:
  5747.         readmem8HL
  5748.         opRLb
  5749.         writemem8HL
  5750.         fetch 15
  5751. ;@RL A
  5752. opcode_CB_17:
  5753.         opRLA
  5754.  
  5755. ;@RR B
  5756. opcode_CB_18:
  5757.         opRRH z80bc
  5758. ;@RR C
  5759. opcode_CB_19:
  5760.         opRRL z80bc
  5761. ;@RR D
  5762. opcode_CB_1A:
  5763.         opRRH z80de
  5764. ;@RR E
  5765. opcode_CB_1B:
  5766.         opRRL z80de
  5767. ;@RR H
  5768. opcode_CB_1C:
  5769.         opRRH z80hl
  5770. ;@RR L
  5771. opcode_CB_1D:
  5772.         opRRL z80hl
  5773. ;@RR (HL)
  5774. opcode_CB_1E:
  5775.         readmem8HL
  5776.         opRRb
  5777.         writemem8HL
  5778.         fetch 15
  5779. ;@RR A
  5780. opcode_CB_1F:
  5781.         opRRA
  5782.  
  5783. ;@SLA B
  5784. opcode_CB_20:
  5785.         opSLAH z80bc
  5786. ;@SLA C
  5787. opcode_CB_21:
  5788.         opSLAL z80bc
  5789. ;@SLA D
  5790. opcode_CB_22:
  5791.         opSLAH z80de
  5792. ;@SLA E
  5793. opcode_CB_23:
  5794.         opSLAL z80de
  5795. ;@SLA H
  5796. opcode_CB_24:
  5797.         opSLAH z80hl
  5798. ;@SLA L
  5799. opcode_CB_25:
  5800.         opSLAL z80hl
  5801. ;@SLA (HL)
  5802. opcode_CB_26:
  5803.         readmem8HL
  5804.         opSLAb
  5805.         writemem8HL
  5806.         fetch 15
  5807. ;@SLA A
  5808. opcode_CB_27:
  5809.         opSLAA
  5810.  
  5811. ;@SRA B
  5812. opcode_CB_28:
  5813.         opSRAH z80bc
  5814. ;@SRA C
  5815. opcode_CB_29:
  5816.         opSRAL z80bc
  5817. ;@SRA D
  5818. opcode_CB_2A:
  5819.         opSRAH z80de
  5820. ;@SRA E
  5821. opcode_CB_2B:
  5822.         opSRAL z80de
  5823. ;@SRA H
  5824. opcode_CB_2C:
  5825.         opSRAH z80hl
  5826. ;@SRA L
  5827. opcode_CB_2D:
  5828.         opSRAL z80hl
  5829. ;@SRA (HL)
  5830. opcode_CB_2E:
  5831.         readmem8HL
  5832.         opSRAb
  5833.         writemem8HL
  5834.         fetch 15
  5835. ;@SRA A
  5836. opcode_CB_2F:
  5837.         opSRAA
  5838.  
  5839. ;@SLL B
  5840. opcode_CB_30:
  5841.         opSLLH z80bc
  5842. ;@SLL C
  5843. opcode_CB_31:
  5844.         opSLLL z80bc
  5845. ;@SLL D
  5846. opcode_CB_32:
  5847.         opSLLH z80de
  5848. ;@SLL E
  5849. opcode_CB_33:
  5850.         opSLLL z80de
  5851. ;@SLL H
  5852. opcode_CB_34:
  5853.         opSLLH z80hl
  5854. ;@SLL L
  5855. opcode_CB_35:
  5856.         opSLLL z80hl
  5857. ;@SLL (HL)
  5858. opcode_CB_36:
  5859.         readmem8HL
  5860.         opSLLb
  5861.         writemem8HL
  5862.         fetch 15
  5863. ;@SLL A
  5864. opcode_CB_37:
  5865.         opSLLA
  5866.  
  5867. ;@SRL B
  5868. opcode_CB_38:
  5869.         opSRLH z80bc
  5870. ;@SRL C
  5871. opcode_CB_39:
  5872.         opSRLL z80bc
  5873. ;@SRL D
  5874. opcode_CB_3A:
  5875.         opSRLH z80de
  5876. ;@SRL E
  5877. opcode_CB_3B:
  5878.         opSRLL z80de
  5879. ;@SRL H
  5880. opcode_CB_3C:
  5881.         opSRLH z80hl
  5882. ;@SRL L
  5883. opcode_CB_3D:
  5884.         opSRLL z80hl
  5885. ;@SRL (HL)
  5886. opcode_CB_3E:
  5887.         readmem8HL
  5888.         opSRLb
  5889.         writemem8HL
  5890.         fetch 15
  5891. ;@SRL A
  5892. opcode_CB_3F:
  5893.         opSRLA
  5894.  
  5895.  
  5896. ;@BIT 0,B
  5897. opcode_CB_40:
  5898.         opBITH z80bc 0
  5899. ;@BIT 0,C
  5900. opcode_CB_41:
  5901.         opBITL z80bc 0
  5902. ;@BIT 0,D
  5903. opcode_CB_42:
  5904.         opBITH z80de 0
  5905. ;@BIT 0,E
  5906. opcode_CB_43:
  5907.         opBITL z80de 0
  5908. ;@BIT 0,H
  5909. opcode_CB_44:
  5910.         opBITH z80hl 0
  5911. ;@BIT 0,L
  5912. opcode_CB_45:
  5913.         opBITL z80hl 0
  5914. ;@BIT 0,(HL)
  5915. opcode_CB_46:
  5916.         readmem8HL
  5917.         opBITb 0
  5918.         fetch 12
  5919. ;@BIT 0,A
  5920. opcode_CB_47:
  5921.         opBITH z80a 0
  5922.  
  5923. ;@BIT 1,B
  5924. opcode_CB_48:
  5925.         opBITH z80bc 1
  5926. ;@BIT 1,C
  5927. opcode_CB_49:
  5928.         opBITL z80bc 1
  5929. ;@BIT 1,D
  5930. opcode_CB_4A:
  5931.         opBITH z80de 1
  5932. ;@BIT 1,E
  5933. opcode_CB_4B:
  5934.         opBITL z80de 1
  5935. ;@BIT 1,H
  5936. opcode_CB_4C:
  5937.         opBITH z80hl 1
  5938. ;@BIT 1,L
  5939. opcode_CB_4D:
  5940.         opBITL z80hl 1
  5941. ;@BIT 1,(HL)
  5942. opcode_CB_4E:
  5943.         readmem8HL
  5944.         opBITb 1
  5945.         fetch 12
  5946. ;@BIT 1,A
  5947. opcode_CB_4F:
  5948.         opBITH z80a 1
  5949.  
  5950. ;@BIT 2,B
  5951. opcode_CB_50:
  5952.         opBITH z80bc 2
  5953. ;@BIT 2,C
  5954. opcode_CB_51:
  5955.         opBITL z80bc 2
  5956. ;@BIT 2,D
  5957. opcode_CB_52:
  5958.         opBITH z80de 2
  5959. ;@BIT 2,E
  5960. opcode_CB_53:
  5961.         opBITL z80de 2
  5962. ;@BIT 2,H
  5963. opcode_CB_54:
  5964.         opBITH z80hl 2
  5965. ;@BIT 2,L
  5966. opcode_CB_55:
  5967.         opBITL z80hl 2
  5968. ;@BIT 2,(HL)
  5969. opcode_CB_56:
  5970.         readmem8HL
  5971.         opBITb 2
  5972.         fetch 12
  5973. ;@BIT 2,A
  5974. opcode_CB_57:
  5975.         opBITH z80a 2
  5976.  
  5977. ;@BIT 3,B
  5978. opcode_CB_58:
  5979.         opBITH z80bc 3
  5980. ;@BIT 3,C
  5981. opcode_CB_59:
  5982.         opBITL z80bc 3
  5983. ;@BIT 3,D
  5984. opcode_CB_5A:
  5985.         opBITH z80de 3
  5986. ;@BIT 3,E
  5987. opcode_CB_5B:
  5988.         opBITL z80de 3
  5989. ;@BIT 3,H
  5990. opcode_CB_5C:
  5991.         opBITH z80hl 3
  5992. ;@BIT 3,L
  5993. opcode_CB_5D:
  5994.         opBITL z80hl 3
  5995. ;@BIT 3,(HL)
  5996. opcode_CB_5E:
  5997.         readmem8HL
  5998.         opBITb 3
  5999.         fetch 12
  6000. ;@BIT 3,A
  6001. opcode_CB_5F:
  6002.         opBITH z80a 3
  6003.  
  6004. ;@BIT 4,B
  6005. opcode_CB_60:
  6006.         opBITH z80bc 4
  6007. ;@BIT 4,C
  6008. opcode_CB_61:
  6009.         opBITL z80bc 4
  6010. ;@BIT 4,D
  6011. opcode_CB_62:
  6012.         opBITH z80de 4
  6013. ;@BIT 4,E
  6014. opcode_CB_63:
  6015.         opBITL z80de 4
  6016. ;@BIT 4,H
  6017. opcode_CB_64:
  6018.         opBITH z80hl 4
  6019. ;@BIT 4,L
  6020. opcode_CB_65:
  6021.         opBITL z80hl 4
  6022. ;@BIT 4,(HL)
  6023. opcode_CB_66:
  6024.         readmem8HL
  6025.         opBITb 4
  6026.         fetch 12
  6027. ;@BIT 4,A
  6028. opcode_CB_67:
  6029.         opBITH z80a 4
  6030.  
  6031. ;@BIT 5,B
  6032. opcode_CB_68:
  6033.         opBITH z80bc 5
  6034. ;@BIT 5,C
  6035. opcode_CB_69:
  6036.         opBITL z80bc 5
  6037. ;@BIT 5,D
  6038. opcode_CB_6A:
  6039.         opBITH z80de 5
  6040. ;@BIT 5,E
  6041. opcode_CB_6B:
  6042.         opBITL z80de 5
  6043. ;@BIT 5,H
  6044. opcode_CB_6C:
  6045.         opBITH z80hl 5
  6046. ;@BIT 5,L
  6047. opcode_CB_6D:
  6048.         opBITL z80hl 5
  6049. ;@BIT 5,(HL)
  6050. opcode_CB_6E:
  6051.         readmem8HL
  6052.         opBITb 5
  6053.         fetch 12
  6054. ;@BIT 5,A
  6055. opcode_CB_6F:
  6056.         opBITH z80a 5
  6057.  
  6058. ;@BIT 6,B
  6059. opcode_CB_70:
  6060.         opBITH z80bc 6
  6061. ;@BIT 6,C
  6062. opcode_CB_71:
  6063.         opBITL z80bc 6
  6064. ;@BIT 6,D
  6065. opcode_CB_72:
  6066.         opBITH z80de 6
  6067. ;@BIT 6,E
  6068. opcode_CB_73:
  6069.         opBITL z80de 6
  6070. ;@BIT 6,H
  6071. opcode_CB_74:
  6072.         opBITH z80hl 6
  6073. ;@BIT 6,L
  6074. opcode_CB_75:
  6075.         opBITL z80hl 6
  6076. ;@BIT 6,(HL)
  6077. opcode_CB_76:
  6078.         readmem8HL
  6079.         opBITb 6
  6080.         fetch 12
  6081. ;@BIT 6,A
  6082. opcode_CB_77:
  6083.         opBITH z80a 6
  6084.  
  6085. ;@BIT 7,B
  6086. opcode_CB_78:
  6087.         opBIT7H z80bc
  6088. ;@BIT 7,C
  6089. opcode_CB_79:
  6090.         opBIT7L z80bc
  6091. ;@BIT 7,D
  6092. opcode_CB_7A:
  6093.         opBIT7H z80de
  6094. ;@BIT 7,E
  6095. opcode_CB_7B:
  6096.         opBIT7L z80de
  6097. ;@BIT 7,H
  6098. opcode_CB_7C:
  6099.         opBIT7H z80hl
  6100. ;@BIT 7,L
  6101. opcode_CB_7D:
  6102.         opBIT7L z80hl
  6103. ;@BIT 7,(HL)
  6104. opcode_CB_7E:
  6105.         readmem8HL
  6106.         opBIT7b
  6107.         fetch 12
  6108. ;@BIT 7,A
  6109. opcode_CB_7F:
  6110.         opBIT7H z80a
  6111.  
  6112. ;@RES 0,B
  6113. opcode_CB_80:
  6114.         bic z80bc,z80bc,#1<<24
  6115.         fetch 8
  6116. ;@RES 0,C
  6117. opcode_CB_81:
  6118.         bic z80bc,z80bc,#1<<16
  6119.         fetch 8
  6120. ;@RES 0,D
  6121. opcode_CB_82:
  6122.         bic z80de,z80de,#1<<24
  6123.         fetch 8
  6124. ;@RES 0,E
  6125. opcode_CB_83:
  6126.         bic z80de,z80de,#1<<16
  6127.         fetch 8
  6128. ;@RES 0,H
  6129. opcode_CB_84:
  6130.         bic z80hl,z80hl,#1<<24
  6131.         fetch 8
  6132. ;@RES 0,L
  6133. opcode_CB_85:
  6134.         bic z80hl,z80hl,#1<<16
  6135.         fetch 8
  6136. ;@RES 0,(HL)
  6137. opcode_CB_86:
  6138.         opRESmemHL 0
  6139. ;@RES 0,A
  6140. opcode_CB_87:
  6141.         bic z80a,z80a,#1<<24
  6142.         fetch 8
  6143.  
  6144. ;@RES 1,B
  6145. opcode_CB_88:
  6146.         bic z80bc,z80bc,#1<<25
  6147.         fetch 8
  6148. ;@RES 1,C
  6149. opcode_CB_89:
  6150.         bic z80bc,z80bc,#1<<17
  6151.         fetch 8
  6152. ;@RES 1,D
  6153. opcode_CB_8A:
  6154.         bic z80de,z80de,#1<<25
  6155.         fetch 8
  6156. ;@RES 1,E
  6157. opcode_CB_8B:
  6158.         bic z80de,z80de,#1<<17
  6159.         fetch 8
  6160. ;@RES 1,H
  6161. opcode_CB_8C:
  6162.         bic z80hl,z80hl,#1<<25
  6163.         fetch 8
  6164. ;@RES 1,L
  6165. opcode_CB_8D:
  6166.         bic z80hl,z80hl,#1<<17
  6167.         fetch 8
  6168. ;@RES 1,(HL)
  6169. opcode_CB_8E:
  6170.         opRESmemHL 1
  6171. ;@RES 1,A
  6172. opcode_CB_8F:
  6173.         bic z80a,z80a,#1<<25
  6174.         fetch 8
  6175.  
  6176. ;@RES 2,B
  6177. opcode_CB_90:
  6178.         bic z80bc,z80bc,#1<<26
  6179.         fetch 8
  6180. ;@RES 2,C
  6181. opcode_CB_91:
  6182.         bic z80bc,z80bc,#1<<18
  6183.         fetch 8
  6184. ;@RES 2,D
  6185. opcode_CB_92:
  6186.         bic z80de,z80de,#1<<26
  6187.         fetch 8
  6188. ;@RES 2,E
  6189. opcode_CB_93:
  6190.         bic z80de,z80de,#1<<18
  6191.         fetch 8
  6192. ;@RES 2,H
  6193. opcode_CB_94:
  6194.         bic z80hl,z80hl,#1<<26
  6195.         fetch 8
  6196. ;@RES 2,L
  6197. opcode_CB_95:
  6198.         bic z80hl,z80hl,#1<<18
  6199.         fetch 8
  6200. ;@RES 2,(HL)
  6201. opcode_CB_96:
  6202.         opRESmemHL 2
  6203. ;@RES 2,A
  6204. opcode_CB_97:
  6205.         bic z80a,z80a,#1<<26
  6206.         fetch 8
  6207.  
  6208. ;@RES 3,B
  6209. opcode_CB_98:
  6210.         bic z80bc,z80bc,#1<<27
  6211.         fetch 8
  6212. ;@RES 3,C
  6213. opcode_CB_99:
  6214.         bic z80bc,z80bc,#1<<19
  6215.         fetch 8
  6216. ;@RES 3,D
  6217. opcode_CB_9A:
  6218.         bic z80de,z80de,#1<<27
  6219.         fetch 8
  6220. ;@RES 3,E
  6221. opcode_CB_9B:
  6222.         bic z80de,z80de,#1<<19
  6223.         fetch 8
  6224. ;@RES 3,H
  6225. opcode_CB_9C:
  6226.         bic z80hl,z80hl,#1<<27
  6227.         fetch 8
  6228. ;@RES 3,L
  6229. opcode_CB_9D:
  6230.         bic z80hl,z80hl,#1<<19
  6231.         fetch 8
  6232. ;@RES 3,(HL)
  6233. opcode_CB_9E:
  6234.         opRESmemHL 3
  6235. ;@RES 3,A
  6236. opcode_CB_9F:
  6237.         bic z80a,z80a,#1<<27
  6238.         fetch 8
  6239.  
  6240. ;@RES 4,B
  6241. opcode_CB_A0:
  6242.         bic z80bc,z80bc,#1<<28
  6243.         fetch 8
  6244. ;@RES 4,C
  6245. opcode_CB_A1:
  6246.         bic z80bc,z80bc,#1<<20
  6247.         fetch 8
  6248. ;@RES 4,D
  6249. opcode_CB_A2:
  6250.         bic z80de,z80de,#1<<28
  6251.         fetch 8
  6252. ;@RES 4,E
  6253. opcode_CB_A3:
  6254.         bic z80de,z80de,#1<<20
  6255.         fetch 8
  6256. ;@RES 4,H
  6257. opcode_CB_A4:
  6258.         bic z80hl,z80hl,#1<<28
  6259.         fetch 8
  6260. ;@RES 4,L
  6261. opcode_CB_A5:
  6262.         bic z80hl,z80hl,#1<<20
  6263.         fetch 8
  6264. ;@RES 4,(HL)
  6265. opcode_CB_A6:
  6266.         opRESmemHL 4
  6267. ;@RES 4,A
  6268. opcode_CB_A7:
  6269.         bic z80a,z80a,#1<<28
  6270.         fetch 8
  6271.  
  6272. ;@RES 5,B
  6273. opcode_CB_A8:
  6274.         bic z80bc,z80bc,#1<<29
  6275.         fetch 8
  6276. ;@RES 5,C
  6277. opcode_CB_A9:
  6278.         bic z80bc,z80bc,#1<<21
  6279.         fetch 8
  6280. ;@RES 5,D
  6281. opcode_CB_AA:
  6282.         bic z80de,z80de,#1<<29
  6283.         fetch 8
  6284. ;@RES 5,E
  6285. opcode_CB_AB:
  6286.         bic z80de,z80de,#1<<21
  6287.         fetch 8
  6288. ;@RES 5,H
  6289. opcode_CB_AC:
  6290.         bic z80hl,z80hl,#1<<29
  6291.         fetch 8
  6292. ;@RES 5,L
  6293. opcode_CB_AD:
  6294.         bic z80hl,z80hl,#1<<21
  6295.         fetch 8
  6296. ;@RES 5,(HL)
  6297. opcode_CB_AE:
  6298.         opRESmemHL 5
  6299. ;@RES 5,A
  6300. opcode_CB_AF:
  6301.         bic z80a,z80a,#1<<29
  6302.         fetch 8
  6303.  
  6304. ;@RES 6,B
  6305. opcode_CB_B0:
  6306.         bic z80bc,z80bc,#1<<30
  6307.         fetch 8
  6308. ;@RES 6,C
  6309. opcode_CB_B1:
  6310.         bic z80bc,z80bc,#1<<22
  6311.         fetch 8
  6312. ;@RES 6,D
  6313. opcode_CB_B2:
  6314.         bic z80de,z80de,#1<<30
  6315.         fetch 8
  6316. ;@RES 6,E
  6317. opcode_CB_B3:
  6318.         bic z80de,z80de,#1<<22
  6319.         fetch 8
  6320. ;@RES 6,H
  6321. opcode_CB_B4:
  6322.         bic z80hl,z80hl,#1<<30
  6323.         fetch 8
  6324. ;@RES 6,L
  6325. opcode_CB_B5:
  6326.         bic z80hl,z80hl,#1<<22
  6327.         fetch 8
  6328. ;@RES 6,(HL)
  6329. opcode_CB_B6:
  6330.         opRESmemHL 6
  6331. ;@RES 6,A
  6332. opcode_CB_B7:
  6333.         bic z80a,z80a,#1<<30
  6334.         fetch 8
  6335.  
  6336. ;@RES 7,B
  6337. opcode_CB_B8:
  6338.         bic z80bc,z80bc,#1<<31
  6339.         fetch 8
  6340. ;@RES 7,C
  6341. opcode_CB_B9:
  6342.         bic z80bc,z80bc,#1<<23
  6343.         fetch 8
  6344. ;@RES 7,D
  6345. opcode_CB_BA:
  6346.         bic z80de,z80de,#1<<31
  6347.         fetch 8
  6348. ;@RES 7,E
  6349. opcode_CB_BB:
  6350.         bic z80de,z80de,#1<<23
  6351.         fetch 8
  6352. ;@RES 7,H
  6353. opcode_CB_BC:
  6354.         bic z80hl,z80hl,#1<<31
  6355.         fetch 8
  6356. ;@RES 7,L
  6357. opcode_CB_BD:
  6358.         bic z80hl,z80hl,#1<<23
  6359.         fetch 8
  6360. ;@RES 7,(HL)
  6361. opcode_CB_BE:
  6362.         opRESmemHL 7
  6363. ;@RES 7,A
  6364. opcode_CB_BF:
  6365.         bic z80a,z80a,#1<<31
  6366.         fetch 8
  6367.  
  6368. ;@SET 0,B
  6369. opcode_CB_C0:
  6370.         orr z80bc,z80bc,#1<<24
  6371.         fetch 8
  6372. ;@SET 0,C
  6373. opcode_CB_C1:
  6374.         orr z80bc,z80bc,#1<<16
  6375.         fetch 8
  6376. ;@SET 0,D
  6377. opcode_CB_C2:
  6378.         orr z80de,z80de,#1<<24
  6379.         fetch 8
  6380. ;@SET 0,E
  6381. opcode_CB_C3:
  6382.         orr z80de,z80de,#1<<16
  6383.         fetch 8
  6384. ;@SET 0,H
  6385. opcode_CB_C4:
  6386.         orr z80hl,z80hl,#1<<24
  6387.         fetch 8
  6388. ;@SET 0,L
  6389. opcode_CB_C5:
  6390.         orr z80hl,z80hl,#1<<16
  6391.         fetch 8
  6392. ;@SET 0,(HL)
  6393. opcode_CB_C6:
  6394.         opSETmemHL 0
  6395. ;@SET 0,A
  6396. opcode_CB_C7:
  6397.         orr z80a,z80a,#1<<24
  6398.         fetch 8
  6399.  
  6400. ;@SET 1,B
  6401. opcode_CB_C8:
  6402.         orr z80bc,z80bc,#1<<25
  6403.         fetch 8
  6404. ;@SET 1,C
  6405. opcode_CB_C9:
  6406.         orr z80bc,z80bc,#1<<17
  6407.         fetch 8
  6408. ;@SET 1,D
  6409. opcode_CB_CA:
  6410.         orr z80de,z80de,#1<<25
  6411.         fetch 8
  6412. ;@SET 1,E
  6413. opcode_CB_CB:
  6414.         orr z80de,z80de,#1<<17
  6415.         fetch 8
  6416. ;@SET 1,H
  6417. opcode_CB_CC:
  6418.         orr z80hl,z80hl,#1<<25
  6419.         fetch 8
  6420. ;@SET 1,L
  6421. opcode_CB_CD:
  6422.         orr z80hl,z80hl,#1<<17
  6423.         fetch 8
  6424. ;@SET 1,(HL)
  6425. opcode_CB_CE:
  6426.         opSETmemHL 1
  6427. ;@SET 1,A
  6428. opcode_CB_CF:
  6429.         orr z80a,z80a,#1<<25
  6430.         fetch 8
  6431.  
  6432. ;@SET 2,B
  6433. opcode_CB_D0:
  6434.         orr z80bc,z80bc,#1<<26
  6435.         fetch 8
  6436. ;@SET 2,C
  6437. opcode_CB_D1:
  6438.         orr z80bc,z80bc,#1<<18
  6439.         fetch 8
  6440. ;@SET 2,D
  6441. opcode_CB_D2:
  6442.         orr z80de,z80de,#1<<26
  6443.         fetch 8
  6444. ;@SET 2,E
  6445. opcode_CB_D3:
  6446.         orr z80de,z80de,#1<<18
  6447.         fetch 8
  6448. ;@SET 2,H
  6449. opcode_CB_D4:
  6450.         orr z80hl,z80hl,#1<<26
  6451.         fetch 8
  6452. ;@SET 2,L
  6453. opcode_CB_D5:
  6454.         orr z80hl,z80hl,#1<<18
  6455.         fetch 8
  6456. ;@SET 2,(HL)
  6457. opcode_CB_D6:
  6458.         opSETmemHL 2
  6459. ;@SET 2,A
  6460. opcode_CB_D7:
  6461.         orr z80a,z80a,#1<<26
  6462.         fetch 8
  6463.  
  6464. ;@SET 3,B
  6465. opcode_CB_D8:
  6466.         orr z80bc,z80bc,#1<<27
  6467.         fetch 8
  6468. ;@SET 3,C
  6469. opcode_CB_D9:
  6470.         orr z80bc,z80bc,#1<<19
  6471.         fetch 8
  6472. ;@SET 3,D
  6473. opcode_CB_DA:
  6474.         orr z80de,z80de,#1<<27
  6475.         fetch 8
  6476. ;@SET 3,E
  6477. opcode_CB_DB:
  6478.         orr z80de,z80de,#1<<19
  6479.         fetch 8
  6480. ;@SET 3,H
  6481. opcode_CB_DC:
  6482.         orr z80hl,z80hl,#1<<27
  6483.         fetch 8
  6484. ;@SET 3,L
  6485. opcode_CB_DD:
  6486.         orr z80hl,z80hl,#1<<19
  6487.         fetch 8
  6488. ;@SET 3,(HL)
  6489. opcode_CB_DE:
  6490.         opSETmemHL 3
  6491. ;@SET 3,A
  6492. opcode_CB_DF:
  6493.         orr z80a,z80a,#1<<27
  6494.         fetch 8
  6495.  
  6496. ;@SET 4,B
  6497. opcode_CB_E0:
  6498.         orr z80bc,z80bc,#1<<28
  6499.         fetch 8
  6500. ;@SET 4,C
  6501. opcode_CB_E1:
  6502.         orr z80bc,z80bc,#1<<20
  6503.         fetch 8
  6504. ;@SET 4,D
  6505. opcode_CB_E2:
  6506.         orr z80de,z80de,#1<<28
  6507.         fetch 8
  6508. ;@SET 4,E
  6509. opcode_CB_E3:
  6510.         orr z80de,z80de,#1<<20
  6511.         fetch 8
  6512. ;@SET 4,H
  6513. opcode_CB_E4:
  6514.         orr z80hl,z80hl,#1<<28
  6515.         fetch 8
  6516. ;@SET 4,L
  6517. opcode_CB_E5:
  6518.         orr z80hl,z80hl,#1<<20
  6519.         fetch 8
  6520. ;@SET 4,(HL)
  6521. opcode_CB_E6:
  6522.         opSETmemHL 4
  6523. ;@SET 4,A
  6524. opcode_CB_E7:
  6525.         orr z80a,z80a,#1<<28
  6526.         fetch 8
  6527.  
  6528. ;@SET 5,B
  6529. opcode_CB_E8:
  6530.         orr z80bc,z80bc,#1<<29
  6531.         fetch 8
  6532. ;@SET 5,C
  6533. opcode_CB_E9:
  6534.         orr z80bc,z80bc,#1<<21
  6535.         fetch 8
  6536. ;@SET 5,D
  6537. opcode_CB_EA:
  6538.         orr z80de,z80de,#1<<29
  6539.         fetch 8
  6540. ;@SET 5,E
  6541. opcode_CB_EB:
  6542.         orr z80de,z80de,#1<<21
  6543.         fetch 8
  6544. ;@SET 5,H
  6545. opcode_CB_EC:
  6546.         orr z80hl,z80hl,#1<<29
  6547.         fetch 8
  6548. ;@SET 5,L
  6549. opcode_CB_ED:
  6550.         orr z80hl,z80hl,#1<<21
  6551.         fetch 8
  6552. ;@SET 5,(HL)
  6553. opcode_CB_EE:
  6554.         opSETmemHL 5
  6555. ;@SET 5,A
  6556. opcode_CB_EF:
  6557.         orr z80a,z80a,#1<<29
  6558.         fetch 8
  6559.  
  6560. ;@SET 6,B
  6561. opcode_CB_F0:
  6562.         orr z80bc,z80bc,#1<<30
  6563.         fetch 8
  6564. ;@SET 6,C
  6565. opcode_CB_F1:
  6566.         orr z80bc,z80bc,#1<<22
  6567.         fetch 8
  6568. ;@SET 6,D
  6569. opcode_CB_F2:
  6570.         orr z80de,z80de,#1<<30
  6571.         fetch 8
  6572. ;@SET 6,E
  6573. opcode_CB_F3:
  6574.         orr z80de,z80de,#1<<22
  6575.         fetch 8
  6576. ;@SET 6,H
  6577. opcode_CB_F4:
  6578.         orr z80hl,z80hl,#1<<30
  6579.         fetch 8
  6580. ;@SET 6,L
  6581. opcode_CB_F5:
  6582.         orr z80hl,z80hl,#1<<22
  6583.         fetch 8
  6584. ;@SET 6,(HL)
  6585. opcode_CB_F6:
  6586.         opSETmemHL 6
  6587. ;@SET 6,A
  6588. opcode_CB_F7:
  6589.         orr z80a,z80a,#1<<30
  6590.         fetch 8
  6591.  
  6592. ;@SET 7,B
  6593. opcode_CB_F8:
  6594.         orr z80bc,z80bc,#1<<31
  6595.         fetch 8
  6596. ;@SET 7,C
  6597. opcode_CB_F9:
  6598.         orr z80bc,z80bc,#1<<23
  6599.         fetch 8
  6600. ;@SET 7,D
  6601. opcode_CB_FA:
  6602.         orr z80de,z80de,#1<<31
  6603.         fetch 8
  6604. ;@SET 7,E
  6605. opcode_CB_FB:
  6606.         orr z80de,z80de,#1<<23
  6607.         fetch 8
  6608. ;@SET 7,H
  6609. opcode_CB_FC:
  6610.         orr z80hl,z80hl,#1<<31
  6611.         fetch 8
  6612. ;@SET 7,L
  6613. opcode_CB_FD:
  6614.         orr z80hl,z80hl,#1<<23
  6615.         fetch 8
  6616. ;@SET 7,(HL)
  6617. opcode_CB_FE:
  6618.         opSETmemHL 7
  6619. ;@SET 7,A
  6620. opcode_CB_FF:
  6621.         orr z80a,z80a,#1<<31
  6622.         fetch 8
  6623.  
  6624.  
  6625.  
  6626. ;@##################################
  6627. ;@##################################
  6628. ;@###  opcodes DD  #########################
  6629. ;@##################################
  6630. ;@##################################
  6631. ;@Because the DD opcodes are not a complete range from 00-FF I have
  6632. ;@created this sub routine that will catch any undocumented ops
  6633. ;@halt the emulator and mov the current instruction to r0
  6634. ;@at a later stage I may change to display a text message on the screen
  6635. opcode_DD_NF:
  6636.         eatcycles 4
  6637.         ldr pc,[opcodes,r0, lsl #2]
  6638. ;@      mov r2,#0x10*4
  6639. ;@      cmp r2,z80xx
  6640. ;@      bne opcode_FD_NF
  6641. ;@      mov r0,#0xDD00
  6642. ;@      orr r0,r0,r1
  6643. ;@      b end_loop
  6644. ;@opcode_FD_NF:
  6645. ;@      mov r0,#0xFD00
  6646. ;@      orr r0,r0,r1
  6647. ;@      b end_loop
  6648.  
  6649. opcode_DD_NF2:
  6650.         fetch 15
  6651. ;@ notaz: we don't want to deadlock here
  6652. ;@      mov r0,#0xDD0000
  6653. ;@      orr r0,r0,#0xCB00
  6654. ;@      orr r0,r0,r1
  6655. ;@      b end_loop
  6656.  
  6657. ;@ADD IX,BC
  6658. opcode_DD_09:
  6659.         ldr r0,[z80xx]
  6660.         opADD16 r0 z80bc
  6661.         str r0,[z80xx]
  6662.         fetch 15
  6663. ;@ADD IX,DE
  6664. opcode_DD_19:
  6665.         ldr r0,[z80xx]
  6666.         opADD16 r0 z80de
  6667.         str r0,[z80xx]
  6668.         fetch 15
  6669. ;@LD IX,NN
  6670. opcode_DD_21:
  6671.         ldrb r0,[z80pc],#1
  6672.         ldrb r1,[z80pc],#1
  6673.         orr r0,r0,r1, lsl #8
  6674.         strh r0,[z80xx,#2]
  6675.         fetch 14
  6676. ;@LD (NN),IX
  6677. opcode_DD_22:
  6678.         ldrb r0,[z80pc],#1
  6679.         ldrb r1,[z80pc],#1
  6680.         orr r1,r0,r1, lsl #8
  6681.         ldrh r0,[z80xx,#2]
  6682.         writemem16
  6683.         fetch 20
  6684. ;@INC IX
  6685. opcode_DD_23:
  6686.         ldr r0,[z80xx]
  6687.         add r0,r0,#1<<16
  6688.         str r0,[z80xx]
  6689.         fetch 10
  6690. ;@INC I  (IX)
  6691. opcode_DD_24:
  6692.         ldr r0,[z80xx]
  6693.         opINC8H r0
  6694.         str r0,[z80xx]
  6695.         fetch 8
  6696. ;@DEC I  (IX)
  6697. opcode_DD_25:
  6698.         ldr r0,[z80xx]
  6699.         opDEC8H r0
  6700.         str r0,[z80xx]
  6701.         fetch 8
  6702. ;@LD I,N  (IX)
  6703. opcode_DD_26:
  6704.         ldrb r0,[z80pc],#1
  6705.         strb r0,[z80xx,#3]
  6706.         fetch 11
  6707. ;@ADD IX,IX
  6708. opcode_DD_29:
  6709.         ldr r0,[z80xx]
  6710.         opADD16_2 r0
  6711.         str r0,[z80xx]
  6712.         fetch 15
  6713. ;@LD IX,(NN)
  6714. opcode_DD_2A:
  6715.         ldrb r0,[z80pc],#1
  6716.         ldrb r1,[z80pc],#1
  6717.         orr r0,r0,r1, lsl #8
  6718.         stmfd sp!,{z80xx}
  6719.         readmem16
  6720.         ldmfd sp!,{z80xx}
  6721.         strh r0,[z80xx,#2]
  6722.         fetch 20
  6723. ;@DEC IX
  6724. opcode_DD_2B:
  6725.         ldr r0,[z80xx]
  6726.         sub r0,r0,#1<<16
  6727.         str r0,[z80xx]
  6728.         fetch 10
  6729. ;@INC X  (IX)
  6730. opcode_DD_2C:
  6731.         ldr r0,[z80xx]
  6732.         opINC8L r0
  6733.         str r0,[z80xx]
  6734.         fetch 8
  6735. ;@DEC X  (IX)
  6736. opcode_DD_2D:
  6737.         ldr r0,[z80xx]
  6738.         opDEC8L r0
  6739.         str r0,[z80xx]
  6740.         fetch 8
  6741. ;@LD X,N  (IX)
  6742. opcode_DD_2E:
  6743.         ldrb r0,[z80pc],#1
  6744.         strb r0,[z80xx,#2]
  6745.         fetch 11
  6746. ;@INC (IX+N)
  6747. opcode_DD_34:
  6748.         ldrsb r0,[z80pc],#1
  6749.         ldr r1,[z80xx]
  6750.         add r0,r0,r1, lsr #16
  6751.         stmfd sp!,{r0}  ;@ save addr
  6752.         readmem8
  6753.         opINC8b
  6754.         ldmfd sp!,{r1}  ;@ restore addr into r1
  6755.         writemem8
  6756.         fetch 23
  6757. ;@DEC (IX+N)
  6758. opcode_DD_35:
  6759.         ldrsb r0,[z80pc],#1
  6760.         ldr r1,[z80xx]
  6761.         add r0,r0,r1, lsr #16
  6762.         stmfd sp!,{r0}  ;@ save addr
  6763.         readmem8
  6764.         opDEC8b
  6765.         ldmfd sp!,{r1}  ;@ restore addr into r1
  6766.         writemem8
  6767.         fetch 23
  6768. ;@LD (IX+N),N
  6769. opcode_DD_36:
  6770.         ldrsb r2,[z80pc],#1
  6771.         ldrb r0,[z80pc],#1
  6772.         ldr r1,[z80xx]
  6773.         add r1,r2,r1, lsr #16
  6774.         writemem8
  6775.         fetch 19
  6776. ;@ADD IX,SP
  6777. opcode_DD_39:
  6778.         ldr r0,[z80xx]
  6779. .if FAST_Z80SP
  6780.         ldr r2,[cpucontext,#z80sp_base]
  6781.         sub r2,z80sp,r2
  6782.         opADD16s r0 r2 16
  6783. .else
  6784.         opADD16s r0 z80sp 16
  6785. .endif
  6786.         str r0,[z80xx]
  6787.         fetch 15
  6788. ;@LD B,I ( IX )
  6789. opcode_DD_44:
  6790.         ldrb r0,[z80xx,#3]
  6791.         and z80bc,z80bc,#0xFF<<16
  6792.         orr z80bc,z80bc,r0, lsl #24
  6793.         fetch 8
  6794. ;@LD B,X ( IX )
  6795. opcode_DD_45:
  6796.         ldrb r0,[z80xx,#2]
  6797.         and z80bc,z80bc,#0xFF<<16
  6798.         orr z80bc,z80bc,r0, lsl #24
  6799.         fetch 8
  6800. ;@LD B,(IX,N)
  6801. opcode_DD_46:
  6802.         ldrsb r0,[z80pc],#1
  6803.         ldr r1,[z80xx]
  6804.         add r0,r0,r1, lsr #16
  6805.         readmem8
  6806.         and z80bc,z80bc,#0xFF<<16
  6807.         orr z80bc,z80bc,r0, lsl #24
  6808.         fetch 19
  6809. ;@LD C,I  (IX)
  6810. opcode_DD_4C:
  6811.         ldrb r0,[z80xx,#3]
  6812.         and z80bc,z80bc,#0xFF<<24
  6813.         orr z80bc,z80bc,r0, lsl #16
  6814.         fetch 8
  6815. ;@LD C,X  (IX)
  6816. opcode_DD_4D:
  6817.         ldrb r0,[z80xx,#2]
  6818.         and z80bc,z80bc,#0xFF<<24
  6819.         orr z80bc,z80bc,r0, lsl #16
  6820.         fetch 8
  6821. ;@LD C,(IX,N)
  6822. opcode_DD_4E:
  6823.         ldrsb r0,[z80pc],#1
  6824.         ldr r1,[z80xx]
  6825.         add r0,r0,r1, lsr #16
  6826.         readmem8
  6827.         and z80bc,z80bc,#0xFF<<24
  6828.         orr z80bc,z80bc,r0, lsl #16
  6829.         fetch 19
  6830.  
  6831. ;@LD D,I  (IX)
  6832. opcode_DD_54:
  6833.         ldrb r0,[z80xx,#3]
  6834.         and z80de,z80de,#0xFF<<16
  6835.         orr z80de,z80de,r0, lsl #24
  6836.         fetch 8
  6837. ;@LD D,X  (IX)
  6838. opcode_DD_55:
  6839.         ldrb r0,[z80xx,#2]
  6840.         and z80de,z80de,#0xFF<<16
  6841.         orr z80de,z80de,r0, lsl #24
  6842.         fetch 8
  6843. ;@LD D,(IX,N)
  6844. opcode_DD_56:
  6845.         ldrsb r0,[z80pc],#1
  6846.         ldr r1,[z80xx]
  6847.         add r0,r0,r1, lsr #16
  6848.         readmem8
  6849.         and z80de,z80de,#0xFF<<16
  6850.         orr z80de,z80de,r0, lsl #24
  6851.         fetch 19
  6852. ;@LD E,I  (IX)
  6853. opcode_DD_5C:
  6854.         ldrb r0,[z80xx,#3]
  6855.         and z80de,z80de,#0xFF<<24
  6856.         orr z80de,z80de,r0, lsl #16
  6857.         fetch 8
  6858. ;@LD E,X  (IX)
  6859. opcode_DD_5D:
  6860.         ldrb r0,[z80xx,#2]
  6861.         and z80de,z80de,#0xFF<<24
  6862.         orr z80de,z80de,r0, lsl #16
  6863.         fetch 8
  6864. ;@LD E,(IX,N)
  6865. opcode_DD_5E:
  6866.         ldrsb r0,[z80pc],#1
  6867.         ldr r1,[z80xx]
  6868.         add r0,r0,r1, lsr #16
  6869.         readmem8
  6870.         and z80de,z80de,#0xFF<<24
  6871.         orr z80de,z80de,r0, lsl #16
  6872.         fetch 19
  6873. ;@LD I,B  (IX)
  6874. opcode_DD_60:
  6875.         mov r0,z80bc,lsr#24
  6876.         strb r0,[z80xx,#3]
  6877.         fetch 8
  6878. ;@LD I,C  (IX)
  6879. opcode_DD_61:
  6880.         mov r0,z80bc,lsr#16
  6881.         strb r0,[z80xx,#3]
  6882.         fetch 8
  6883. ;@LD I,D  (IX)
  6884. opcode_DD_62:
  6885.         mov r0,z80de,lsr#24
  6886.         strb r0,[z80xx,#3]
  6887.         fetch 8
  6888. ;@LD I,E  (IX)
  6889. opcode_DD_63:
  6890.         mov r0,z80de,lsr#16
  6891.         strb r0,[z80xx,#3]
  6892.         fetch 8
  6893. ;@LD I,I  (IX)
  6894. opcode_DD_64:
  6895.         fetch 8
  6896. ;@LD I,X  (IX)
  6897. opcode_DD_65:
  6898.         ldrb r0,[z80xx,#2]
  6899.         strb r0,[z80xx,#3]
  6900.         fetch 8
  6901. ;@LD H,(IX,N)
  6902. opcode_DD_66:
  6903.         ldrsb r0,[z80pc],#1
  6904.         ldr r1,[z80xx]
  6905.         add r0,r0,r1, lsr #16
  6906.         readmem8
  6907.         and z80hl,z80hl,#0xFF<<16
  6908.         orr z80hl,z80hl,r0, lsl #24
  6909.         fetch 19
  6910. ;@LD I,A  (IX)
  6911. opcode_DD_67:
  6912.         mov r0,z80a,lsr#24
  6913.         strb r0,[z80xx,#3]
  6914.         fetch 8
  6915. ;@LD X,B  (IX)
  6916. opcode_DD_68:
  6917.         mov r0,z80bc,lsr#24
  6918.         strb r0,[z80xx,#2]
  6919.         fetch 8
  6920. ;@LD X,C  (IX)
  6921. opcode_DD_69:
  6922.         mov r0,z80bc,lsr#16
  6923.         strb r0,[z80xx,#2]
  6924.         fetch 8
  6925. ;@LD X,D  (IX)
  6926. opcode_DD_6A:
  6927.         mov r0,z80de,lsr#24
  6928.         strb r0,[z80xx,#2]
  6929.         fetch 8
  6930. ;@LD X,E  (IX)
  6931. opcode_DD_6B:
  6932.         mov r0,z80de,lsr#16
  6933.         strb r0,[z80xx,#2]
  6934.         fetch 8
  6935. ;@LD X,I  (IX)
  6936. opcode_DD_6C:
  6937.         ldrb r0,[z80xx,#3]
  6938.         strb r0,[z80xx,#2]
  6939.         fetch 8
  6940. ;@LD X,X  (IX)
  6941. opcode_DD_6D:
  6942.         fetch 8
  6943. ;@LD L,(IX,N)
  6944. opcode_DD_6E:
  6945.         ldrsb r0,[z80pc],#1
  6946.         ldr r1,[z80xx]
  6947.         add r0,r0,r1, lsr #16
  6948.         readmem8
  6949.         and z80hl,z80hl,#0xFF<<24
  6950.         orr z80hl,z80hl,r0, lsl #16
  6951.         fetch 19
  6952. ;@LD X,A  (IX)
  6953. opcode_DD_6F:
  6954.         mov r0,z80a,lsr#24
  6955.         strb r0,[z80xx,#2]
  6956.         fetch 8
  6957.  
  6958. ;@LD (IX,N),B
  6959. opcode_DD_70:
  6960.         ldrsb r0,[z80pc],#1
  6961.         ldr r1,[z80xx]
  6962.         add r1,r0,r1, lsr #16
  6963.         mov r0,z80bc, lsr #24
  6964.         writemem8
  6965.         fetch 19
  6966. ;@LD (IX,N),C
  6967. opcode_DD_71:
  6968.         ldrsb r0,[z80pc],#1
  6969.         ldr r1,[z80xx]
  6970.         add r1,r0,r1, lsr #16
  6971.         mov r0,z80bc, lsr #16
  6972.         and r0,r0,#0xFF
  6973.         writemem8
  6974.         fetch 19
  6975. ;@LD (IX,N),D
  6976. opcode_DD_72:
  6977.         ldrsb r0,[z80pc],#1
  6978.         ldr r1,[z80xx]
  6979.         add r1,r0,r1, lsr #16
  6980.         mov r0,z80de, lsr #24
  6981.         writemem8
  6982.         fetch 19
  6983. ;@LD (IX,N),E
  6984. opcode_DD_73:
  6985.         ldrsb r0,[z80pc],#1
  6986.         ldr r1,[z80xx]
  6987.         add r1,r0,r1, lsr #16
  6988.         mov r0,z80de, lsr #16
  6989.         and r0,r0,#0xFF
  6990.         writemem8
  6991.         fetch 19
  6992. ;@LD (IX,N),H
  6993. opcode_DD_74:
  6994.         ldrsb r0,[z80pc],#1
  6995.         ldr r1,[z80xx]
  6996.         add r1,r0,r1, lsr #16
  6997.         mov r0,z80hl, lsr #24
  6998.         writemem8
  6999.         fetch 19
  7000. ;@LD (IX,N),L
  7001. opcode_DD_75:
  7002.         ldrsb r0,[z80pc],#1
  7003.         ldr r1,[z80xx]
  7004.         add r1,r0,r1, lsr #16
  7005.         mov r0,z80hl, lsr #16
  7006.         and r0,r0,#0xFF
  7007.         writemem8
  7008.         fetch 19
  7009. ;@LD (IX,N),A
  7010. opcode_DD_77:
  7011.         ldrsb r0,[z80pc],#1
  7012.         ldr r1,[z80xx]
  7013.         add r1,r0,r1, lsr #16
  7014.         mov r0,z80a, lsr #24
  7015.         writemem8
  7016.         fetch 19
  7017.  
  7018. ;@LD A,I  from (IX)
  7019. opcode_DD_7C:
  7020.         ldrb r0,[z80xx,#3]
  7021.         mov z80a,r0, lsl #24
  7022.         fetch 8
  7023. ;@LD A,X  from (IX)
  7024. opcode_DD_7D:
  7025.         ldrb r0,[z80xx,#2]
  7026.         mov z80a,r0, lsl #24
  7027.         fetch 8
  7028. ;@LD A,(IX,N)
  7029. opcode_DD_7E:
  7030.         ldrsb r0,[z80pc],#1
  7031.         ldr r1,[z80xx]
  7032.         add r0,r0,r1, lsr #16
  7033.         readmem8
  7034.         mov z80a,r0, lsl #24
  7035.         fetch 19
  7036.  
  7037. ;@ADD A,I  ( IX)
  7038. opcode_DD_84:
  7039.         ldrb r0,[z80xx,#3]
  7040.         opADDb
  7041.         fetch 8
  7042. ;@ADD A,X  ( IX)
  7043. opcode_DD_85:
  7044.         ldrb r0,[z80xx,#2]
  7045.         opADDb
  7046.         fetch 8
  7047. ;@ADD A,(IX+N)
  7048. opcode_DD_86:
  7049.         ldrsb r0,[z80pc],#1
  7050.         ldr r1,[z80xx]
  7051.         add r0,r0,r1, lsr #16
  7052.         readmem8
  7053.         opADDb
  7054.         fetch 19
  7055.  
  7056. ;@ADC A,I  (IX)
  7057. opcode_DD_8C:
  7058.         ldrb r0,[z80xx,#3]
  7059.         opADCb
  7060.         fetch 8
  7061. ;@ADC A,X  (IX)
  7062. opcode_DD_8D:
  7063.         ldrb r0,[z80xx,#2]
  7064.         opADCb
  7065.         fetch 8
  7066. ;@ADC A,(IX+N)
  7067. opcode_DD_8E:
  7068.         ldrsb r0,[z80pc],#1
  7069.         ldr r1,[z80xx]
  7070.         add r0,r0,r1, lsr #16
  7071.         readmem8
  7072.         opADCb
  7073.         fetch 19
  7074.  
  7075. ;@SUB A,I  (IX)
  7076. opcode_DD_94:
  7077.         ldrb r0,[z80xx,#3]
  7078.         opSUBb
  7079.         fetch 8
  7080. ;@SUB A,X  (IX)
  7081. opcode_DD_95:
  7082.         ldrb r0,[z80xx,#2]
  7083.         opSUBb
  7084.         fetch 8
  7085. ;@SUB A,(IX+N)
  7086. opcode_DD_96:
  7087.         ldrsb r0,[z80pc],#1
  7088.         ldr r1,[z80xx]
  7089.         add r0,r0,r1, lsr #16
  7090.         readmem8
  7091.         opSUBb
  7092.         fetch 19
  7093.  
  7094. ;@SBC A,I  (IX)
  7095. opcode_DD_9C:
  7096.         ldrb r0,[z80xx,#3]
  7097.         opSBCb
  7098.         fetch 8
  7099. ;@SBC A,X  (IX)
  7100. opcode_DD_9D:
  7101.         ldrb r0,[z80xx,#2]
  7102.         opSBCb
  7103.         fetch 8
  7104. ;@SBC A,(IX+N)
  7105. opcode_DD_9E:
  7106.         ldrsb r0,[z80pc],#1
  7107.         ldr r1,[z80xx]
  7108.         add r0,r0,r1, lsr #16
  7109.         readmem8
  7110.         opSBCb
  7111.         fetch 19
  7112.  
  7113. ;@AND I  (IX)
  7114. opcode_DD_A4:
  7115.         ldrb r0,[z80xx,#3]
  7116.         opANDb
  7117.         fetch 8
  7118. ;@AND X  (IX)
  7119. opcode_DD_A5:
  7120.         ldrb r0,[z80xx,#2]
  7121.         opANDb
  7122.         fetch 8
  7123. ;@AND (IX+N)
  7124. opcode_DD_A6:
  7125.         ldrsb r0,[z80pc],#1
  7126.         ldr r1,[z80xx]
  7127.         add r0,r0,r1, lsr #16
  7128.         readmem8
  7129.         opANDb
  7130.         fetch 19
  7131.  
  7132. ;@XOR I  (IX)
  7133. opcode_DD_AC:
  7134.         ldrb r0,[z80xx,#3]
  7135.         opXORb
  7136.         fetch 8
  7137. ;@XOR X  (IX)
  7138. opcode_DD_AD:
  7139.         ldrb r0,[z80xx,#2]
  7140.         opXORb
  7141.         fetch 8
  7142. ;@XOR (IX+N)
  7143. opcode_DD_AE:
  7144.         ldrsb r0,[z80pc],#1
  7145.         ldr r1,[z80xx]
  7146.         add r0,r0,r1, lsr #16
  7147.         readmem8
  7148.         opXORb
  7149.         fetch 19
  7150.  
  7151. ;@OR I  (IX)
  7152. opcode_DD_B4:
  7153.         ldrb r0,[z80xx,#3]
  7154.         opORb
  7155.         fetch 8
  7156. ;@OR X  (IX)
  7157. opcode_DD_B5:
  7158.         ldrb r0,[z80xx,#2]
  7159.         opORb
  7160.         fetch 8
  7161. ;@OR (IX+N)
  7162. opcode_DD_B6:
  7163.         ldrsb r0,[z80pc],#1
  7164.         ldr r1,[z80xx]
  7165.         add r0,r0,r1, lsr #16
  7166.         readmem8
  7167.         opORb
  7168.         fetch 19
  7169.  
  7170. ;@CP I  (IX)
  7171. opcode_DD_BC:
  7172.         ldrb r0,[z80xx,#3]
  7173.         opCPb
  7174.         fetch 8
  7175. ;@CP X  (IX)
  7176. opcode_DD_BD:
  7177.         ldrb r0,[z80xx,#2]
  7178.         opCPb
  7179.         fetch 8
  7180. ;@CP (IX+N)
  7181. opcode_DD_BE:
  7182.         ldrsb r0,[z80pc],#1
  7183.         ldr r1,[z80xx]
  7184.         add r0,r0,r1, lsr #16
  7185.         readmem8
  7186.         opCPb
  7187.         fetch 19
  7188.  
  7189.  
  7190. opcodes_DD_CB_LOCAL: .word opcodes_DD_CB
  7191. opcode_DD_CB:
  7192. ;@Looks up the opcode on the opcodes_DD_CB table and then
  7193. ;@moves the PC to the location of the subroutine
  7194.         ldrsb r0,[z80pc],#1
  7195.         ldr r1,[z80xx]
  7196.         add r0,r0,r1, lsr #16
  7197.  
  7198.         ldrb r1,[z80pc],#1
  7199.         ldr pc,[pc,r1, lsl #2]
  7200.                 .word 0x00
  7201. opcodes_DD_CB:
  7202.                 .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
  7203.                 .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
  7204.                 .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
  7205.                 .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
  7206.                 .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
  7207.                 .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
  7208.                 .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
  7209.                 .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
  7210.                 .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
  7211.                 .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
  7212.                 .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
  7213.                 .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
  7214.                 .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
  7215.                 .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
  7216.                 .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
  7217.                 .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
  7218.                 .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
  7219.                 .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
  7220.                 .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
  7221.                 .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
  7222.                 .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
  7223.                 .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
  7224.                 .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
  7225.                 .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
  7226.                 .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
  7227.                 .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
  7228.                 .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
  7229.                 .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
  7230.                 .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
  7231.                 .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
  7232.                 .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
  7233.                 .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
  7234.  
  7235. ;@RLC (IX+N)
  7236. opcode_DD_CB_06:
  7237.         stmfd sp!,{r0}          ;@ save addr
  7238.         readmem8
  7239.         opRLCb
  7240.         ldmfd sp!,{r1}          ;@ restore addr into r1
  7241.         writemem8
  7242.         fetch 23
  7243. ;@RRC (IX+N)
  7244. opcode_DD_CB_0E:
  7245.         stmfd sp!,{r0}          ;@ save addr
  7246.         readmem8
  7247.         opRRCb
  7248.         ldmfd sp!,{r1}          ;@ restore addr into r1
  7249.         writemem8
  7250.         fetch 23
  7251. ;@RL (IX+N)
  7252. opcode_DD_CB_16:
  7253.         stmfd sp!,{r0}          ;@ save addr
  7254.         readmem8
  7255.         opRLb
  7256.         ldmfd sp!,{r1}          ;@ restore addr into r1
  7257.         writemem8
  7258.         fetch 23
  7259. ;@RR (IX+N)
  7260. opcode_DD_CB_1E:
  7261.         stmfd sp!,{r0}          ;@ save addr
  7262.         readmem8
  7263.         opRRb
  7264.         ldmfd sp!,{r1}          ;@ restore addr into r1
  7265.         writemem8
  7266.         fetch 23
  7267.  
  7268. ;@SLA (IX+N)
  7269. opcode_DD_CB_26:
  7270.         stmfd sp!,{r0}          ;@ save addr
  7271.         readmem8
  7272.         opSLAb
  7273.         ldmfd sp!,{r1}          ;@ restore addr into r1
  7274.         writemem8
  7275.         fetch 23
  7276. ;@SRA (IX+N)
  7277. opcode_DD_CB_2E:
  7278.         stmfd sp!,{r0}          ;@ save addr
  7279.         readmem8
  7280.         opSRAb
  7281.         ldmfd sp!,{r1}          ;@ restore addr into r1
  7282.         writemem8
  7283.         fetch 23
  7284. ;@SLL (IX+N)
  7285. opcode_DD_CB_36:
  7286.         stmfd sp!,{r0}          ;@ save addr
  7287.         readmem8
  7288.         opSLLb
  7289.         ldmfd sp!,{r1}          ;@ restore addr into r1
  7290.         writemem8
  7291.         fetch 23
  7292. ;@SRL (IX+N)
  7293. opcode_DD_CB_3E:
  7294.         stmfd sp!,{r0}          ;@ save addr
  7295.         readmem8
  7296.         opSRLb
  7297.         ldmfd sp!,{r1}          ;@ restore addr into r1
  7298.         writemem8
  7299.         fetch 23
  7300.  
  7301. ;@BIT 0,(IX+N)
  7302. opcode_DD_CB_46:
  7303.         readmem8
  7304.         opBITb 0
  7305.         fetch 20
  7306. ;@BIT 1,(IX+N)
  7307. opcode_DD_CB_4E:
  7308.         readmem8
  7309.         opBITb 1
  7310.         fetch 20
  7311. ;@BIT 2,(IX+N)
  7312. opcode_DD_CB_56:
  7313.         readmem8
  7314.         opBITb 2
  7315.         fetch 20
  7316. ;@BIT 3,(IX+N)
  7317. opcode_DD_CB_5E:
  7318.         readmem8
  7319.         opBITb 3
  7320.         fetch 20
  7321. ;@BIT 4,(IX+N)
  7322. opcode_DD_CB_66:
  7323.         readmem8
  7324.         opBITb 4
  7325.         fetch 20
  7326. ;@BIT 5,(IX+N)
  7327. opcode_DD_CB_6E:
  7328.         readmem8
  7329.         opBITb 5
  7330.         fetch 20
  7331. ;@BIT 6,(IX+N)
  7332. opcode_DD_CB_76:
  7333.         readmem8
  7334.         opBITb 6
  7335.         fetch 20
  7336. ;@BIT 7,(IX+N)
  7337. opcode_DD_CB_7E:
  7338.         readmem8
  7339.         opBIT7b
  7340.         fetch 20
  7341. ;@RES 0,(IX+N)
  7342. opcode_DD_CB_86:
  7343.         opRESmem 0
  7344. ;@RES 1,(IX+N)
  7345. opcode_DD_CB_8E:
  7346.         opRESmem 1
  7347. ;@RES 2,(IX+N)
  7348. opcode_DD_CB_96:
  7349.         opRESmem 2
  7350. ;@RES 3,(IX+N)
  7351. opcode_DD_CB_9E:
  7352.         opRESmem 3
  7353. ;@RES 4,(IX+N)
  7354. opcode_DD_CB_A6:
  7355.         opRESmem 4
  7356. ;@RES 5,(IX+N)
  7357. opcode_DD_CB_AE:
  7358.         opRESmem 5
  7359. ;@RES 6,(IX+N)
  7360. opcode_DD_CB_B6:
  7361.         opRESmem 6
  7362. ;@RES 7,(IX+N)
  7363. opcode_DD_CB_BE:
  7364.         opRESmem 7
  7365.  
  7366. ;@SET 0,(IX+N)
  7367. opcode_DD_CB_C6:
  7368.         opSETmem 0
  7369. ;@SET 1,(IX+N)
  7370. opcode_DD_CB_CE:
  7371.         opSETmem 1
  7372. ;@SET 2,(IX+N)
  7373. opcode_DD_CB_D6:
  7374.         opSETmem 2
  7375. ;@SET 3,(IX+N)
  7376. opcode_DD_CB_DE:
  7377.         opSETmem 3
  7378. ;@SET 4,(IX+N)
  7379. opcode_DD_CB_E6:
  7380.         opSETmem 4
  7381. ;@SET 5,(IX+N)
  7382. opcode_DD_CB_EE:
  7383.         opSETmem 5
  7384. ;@SET 6,(IX+N)
  7385. opcode_DD_CB_F6:
  7386.         opSETmem 6
  7387. ;@SET 7,(IX+N)
  7388. opcode_DD_CB_FE:
  7389.         opSETmem 7
  7390.  
  7391.  
  7392.  
  7393. ;@POP IX
  7394. opcode_DD_E1:
  7395. .if FAST_Z80SP
  7396.         opPOP
  7397. .else
  7398.         mov r0,z80sp
  7399.         stmfd sp!,{z80xx}
  7400.         readmem16
  7401.         ldmfd sp!,{z80xx}
  7402.         add z80sp,z80sp,#2
  7403. .endif
  7404.         strh r0,[z80xx,#2]
  7405.         fetch 14
  7406. ;@EX (SP),IX
  7407. opcode_DD_E3:
  7408. .if FAST_Z80SP
  7409.         ldrb r0,[z80sp]
  7410.         ldrb r1,[z80sp,#1]
  7411.         orr r2,r0,r1, lsl #8
  7412.         ldrh r1,[z80xx,#2]
  7413.         mov r0,r1, lsr #8
  7414.         strb r0,[z80sp,#1]
  7415.         strb r1,[z80sp]
  7416.         strh r2,[z80xx,#2]
  7417. .else
  7418.         mov r0,z80sp
  7419.         stmfd sp!,{z80xx}
  7420.         readmem16
  7421.         ldmfd sp!,{z80xx}
  7422.         mov r2,r0
  7423.         ldrh r0,[z80xx,#2]
  7424.         strh r2,[z80xx,#2]
  7425.         mov r1,z80sp
  7426.         writemem16
  7427. .endif
  7428.         fetch 23
  7429. ;@PUSH IX
  7430. opcode_DD_E5:
  7431.         ldr r2,[z80xx]
  7432.         opPUSHreg r2
  7433.         fetch 15
  7434. ;@JP (IX)
  7435. opcode_DD_E9:
  7436.         ldrh r0,[z80xx,#2]
  7437.         rebasepc
  7438.         fetch 8
  7439. ;@LD SP,IX
  7440. opcode_DD_F9:
  7441. .if FAST_Z80SP
  7442.         ldrh r0,[z80xx,#2]
  7443.         rebasesp
  7444.         mov z80sp,r0
  7445. .else
  7446.         ldrh z80sp,[z80xx,#2]
  7447. .endif
  7448.         fetch 10
  7449.  
  7450. ;@##################################
  7451. ;@##################################
  7452. ;@###  opcodes ED  #########################
  7453. ;@##################################
  7454. ;@##################################
  7455.  
  7456. opcode_ED_NF:
  7457.         fetch 8
  7458. ;@      ldrb r0,[z80pc],#1
  7459. ;@      ldr pc,[opcodes,r0, lsl #2]
  7460. ;@      mov r0,#0xED00
  7461. ;@      orr r0,r0,r1
  7462. ;@      b end_loop
  7463.  
  7464. ;@IN B,(C)
  7465. opcode_ED_40:
  7466.         opIN_C
  7467.         and z80bc,z80bc,#0xFF<<16
  7468.         orr z80bc,z80bc,r0, lsl #24
  7469.         sub r1,opcodes,#0x100
  7470.         ldrb r0,[r1,r0]
  7471.         and z80f,z80f,#1<<CFlag
  7472.         orr z80f,z80f,r0
  7473.         fetch 12
  7474. ;@OUT (C),B
  7475. opcode_ED_41:
  7476.         mov r1,z80bc, lsr #24
  7477.         opOUT_C
  7478.         fetch 12
  7479.  
  7480. ;@SBC HL,BC
  7481. opcode_ED_42:
  7482.         opSBC16 z80bc
  7483.  
  7484. ;@LD (NN),BC
  7485. opcode_ED_43:
  7486.         ldrb r0,[z80pc],#1
  7487.         ldrb r1,[z80pc],#1
  7488.         orr r1,r0,r1, lsl #8
  7489.         mov r0,z80bc, lsr #16
  7490.         writemem16
  7491.         fetch 20
  7492. ;@NEG
  7493. opcode_ED_44:
  7494.         rsbs z80a,z80a,#0
  7495.         mrs z80f,cpsr
  7496.         mov z80f,z80f,lsr#28                                    ;@S,Z,V&C
  7497.         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@invert C and set n.
  7498.         tst z80a,#0x0F000000                                    ;@H, correct
  7499.         orrne z80f,z80f,#1<<HFlag
  7500.         fetch 8
  7501.  
  7502. ;@RETN, moved to ED_4D
  7503. ;@opcode_ED_45:
  7504.  
  7505. ;@IM 0
  7506. opcode_ED_46:
  7507.         strb z80a,[cpucontext,#z80im]
  7508.         fetch 8
  7509. ;@LD I,A
  7510. opcode_ED_47:
  7511.         str z80a,[cpucontext,#z80i]
  7512.         fetch 9
  7513. ;@IN C,(C)
  7514. opcode_ED_48:
  7515.         opIN_C
  7516.         and z80bc,z80bc,#0xFF<<24
  7517.         orr z80bc,z80bc,r0, lsl #16
  7518.         sub r1,opcodes,#0x100
  7519.         ldrb r0,[r1,r0]
  7520.         and z80f,z80f,#1<<CFlag
  7521.         orr z80f,z80f,r0
  7522.         fetch 12
  7523. ;@OUT (C),C
  7524. opcode_ED_49:
  7525.         mov r0,z80bc, lsr #16
  7526.         and r1,r0,#0xFF
  7527.         opOUT
  7528.         fetch 12
  7529. ;@ADC HL,BC
  7530. opcode_ED_4A:
  7531.         opADC16 z80bc
  7532. ;@LD BC,(NN)
  7533. opcode_ED_4B:
  7534.         ldrb r0,[z80pc],#1
  7535.         ldrb r1,[z80pc],#1
  7536.         orr r0,r0,r1, lsl #8
  7537.         readmem16
  7538.         mov z80bc,r0, lsl #16
  7539.         fetch 20
  7540.  
  7541. ;@RETN
  7542. opcode_ED_45:
  7543. ;@RETI
  7544. opcode_ED_4D:
  7545.         ldrb r0,[cpucontext,#z80if]
  7546.         tst r0,#Z80_IF2
  7547.         orrne r0,r0,#Z80_IF1
  7548.         biceq r0,r0,#Z80_IF1
  7549.         strb r0,[cpucontext,#z80if]
  7550.     opPOP
  7551.         rebasepc
  7552.         fetch 14
  7553.  
  7554. ;@LD R,A
  7555. opcode_ED_4F:
  7556.         mov r0,z80a,lsr#24
  7557.         strb r0,[cpucontext,#z80r]
  7558.         fetch 9
  7559.  
  7560. ;@IN D,(C)
  7561. opcode_ED_50:
  7562.         opIN_C
  7563.         and z80de,z80de,#0xFF<<16
  7564.         orr z80de,z80de,r0, lsl #24
  7565.         sub r1,opcodes,#0x100
  7566.         ldrb r0,[r1,r0]
  7567.         and z80f,z80f,#1<<CFlag
  7568.         orr z80f,z80f,r0
  7569.         fetch 12
  7570. ;@OUT (C),D
  7571. opcode_ED_51:
  7572.         mov r1,z80de, lsr #24
  7573.         opOUT_C
  7574.         fetch 12
  7575. ;@SBC HL,DE
  7576. opcode_ED_52:
  7577.         opSBC16 z80de
  7578. ;@LD (NN),DE
  7579. opcode_ED_53:
  7580.         ldrb r0,[z80pc],#1
  7581.         ldrb r1,[z80pc],#1
  7582.         orr r1,r0,r1, lsl #8
  7583.         mov r0,z80de, lsr #16
  7584.         writemem16
  7585.         fetch 20
  7586. ;@IM 1
  7587. opcode_ED_56:
  7588.         mov r0,#1
  7589.         strb r0,[cpucontext,#z80im]
  7590.         fetch 8
  7591. ;@LD A,I
  7592. opcode_ED_57:
  7593.         ldr z80a,[cpucontext,#z80i]
  7594.         tst z80a,#0xFF000000
  7595.         and z80f,z80f,#(1<<CFlag)
  7596.         orreq z80f,z80f,#(1<<ZFlag)
  7597.         orrmi z80f,z80f,#(1<<SFlag)
  7598.         ldrb r0,[cpucontext,#z80if]
  7599.         tst r0,#Z80_IF2
  7600.         orrne z80f,z80f,#(1<<VFlag)
  7601.         fetch 9
  7602. ;@IN E,(C)
  7603. opcode_ED_58:
  7604.         opIN_C
  7605.         and z80de,z80de,#0xFF<<24
  7606.         orr z80de,z80de,r0, lsl #16
  7607.         sub r1,opcodes,#0x100
  7608.         ldrb r0,[r1,r0]
  7609.         and z80f,z80f,#1<<CFlag
  7610.         orr z80f,z80f,r0
  7611.         fetch 12
  7612. ;@OUT (C),E
  7613. opcode_ED_59:
  7614.         mov r1,z80de, lsr #16
  7615.         and r1,r1,#0xFF
  7616.         opOUT_C
  7617.         fetch 12
  7618. ;@ADC HL,DE
  7619. opcode_ED_5A:
  7620.         opADC16 z80de
  7621. ;@LD DE,(NN)
  7622. opcode_ED_5B:
  7623.         ldrb r0,[z80pc],#1
  7624.         ldrb r1,[z80pc],#1
  7625.         orr r0,r0,r1, lsl #8
  7626.         readmem16
  7627.         mov z80de,r0, lsl #16
  7628.         fetch 20
  7629. ;@IM 2
  7630. opcode_ED_5E:
  7631.         mov r0,#2
  7632.         strb r0,[cpucontext,#z80im]
  7633.         fetch 8
  7634. ;@LD A,R
  7635. opcode_ED_5F:
  7636.         ldrb r0,[cpucontext,#z80r]
  7637.         and r0,r0,#0x80
  7638.         rsb r1,z80_icount,#0
  7639.         and r1,r1,#0x7F
  7640.         orr r0,r0,r1
  7641.         movs z80a,r0, lsl #24
  7642.         and z80f,z80f,#1<<CFlag
  7643.         orrmi z80f,z80f,#(1<<SFlag)
  7644.         orreq z80f,z80f,#(1<<ZFlag)
  7645.         ldrb r0,[cpucontext,#z80if]
  7646.         tst r0,#Z80_IF2
  7647.         orrne z80f,z80f,#(1<<VFlag)
  7648.         fetch 9
  7649. ;@IN H,(C)
  7650. opcode_ED_60:
  7651.         opIN_C
  7652.         and z80hl,z80hl,#0xFF<<16
  7653.         orr z80hl,z80hl,r0, lsl #24
  7654.         sub r1,opcodes,#0x100
  7655.         ldrb r0,[r1,r0]
  7656.         and z80f,z80f,#1<<CFlag
  7657.         orr z80f,z80f,r0
  7658.         fetch 12
  7659. ;@OUT (C),H
  7660. opcode_ED_61:
  7661.         mov r1,z80hl, lsr #24
  7662.         opOUT_C
  7663.         fetch 12
  7664. ;@SBC HL,HL
  7665. opcode_ED_62:
  7666.         opSBC16HL
  7667. ;@RRD
  7668. opcode_ED_67:
  7669.         readmem8HL
  7670.         mov r1,r0,ror#4
  7671.         orr r0,r1,z80a,lsr#20
  7672.         bic z80a,z80a,#0x0F000000
  7673.         orr z80a,z80a,r1,lsr#4
  7674.         writemem8HL
  7675.         sub r1,opcodes,#0x100
  7676.         ldrb r0,[r1,z80a, lsr #24]
  7677.         and z80f,z80f,#1<<CFlag
  7678.         orr z80f,z80f,r0
  7679.         fetch 18
  7680. ;@IN L,(C)
  7681. opcode_ED_68:
  7682.         opIN_C
  7683.         and z80hl,z80hl,#0xFF<<24
  7684.         orr z80hl,z80hl,r0, lsl #16
  7685.         and z80f,z80f,#1<<CFlag
  7686.         sub r1,opcodes,#0x100
  7687.         ldrb r0,[r1,r0]
  7688.         orr z80f,z80f,r0
  7689.         fetch 12
  7690. ;@OUT (C),L
  7691. opcode_ED_69:
  7692.         mov r1,z80hl, lsr #16
  7693.         and r1,r1,#0xFF
  7694.         opOUT_C
  7695.         fetch 12
  7696. ;@ADC HL,HL
  7697. opcode_ED_6A:
  7698.         opADC16HL
  7699. ;@RLD
  7700. opcode_ED_6F:
  7701.         readmem8HL
  7702.         orr r0,r0,z80a,lsl#4
  7703.         mov r0,r0,ror#28
  7704.         and z80a,z80a,#0xF0000000
  7705.         orr z80a,z80a,r0,lsl#16
  7706.         and z80a,z80a,#0xFF000000
  7707.         writemem8HL
  7708.         sub r1,opcodes,#0x100
  7709.         ldrb r0,[r1,z80a, lsr #24]
  7710.         and z80f,z80f,#1<<CFlag
  7711.         orr z80f,z80f,r0
  7712.         fetch 18
  7713. ;@IN F,(C)
  7714. opcode_ED_70:
  7715.         opIN_C
  7716.         and z80f,z80f,#1<<CFlag
  7717.         sub r1,opcodes,#0x100
  7718.         ldrb r0,[r1,r0]
  7719.         orr z80f,z80f,r0
  7720.         fetch 12
  7721. ;@OUT (C),0
  7722. opcode_ED_71:
  7723.         mov r1,#0
  7724.         opOUT_C
  7725.         fetch 12
  7726.  
  7727. ;@SBC HL,SP
  7728. opcode_ED_72:
  7729. .if FAST_Z80SP
  7730.         ldr r0,[cpucontext,#z80sp_base]
  7731.         sub r0,z80sp,r0
  7732.         mov r0, r0, lsl #16
  7733. .else
  7734.         mov r0,z80sp,lsl#16
  7735. .endif
  7736.         opSBC16 r0
  7737. ;@LD (NN),SP
  7738. opcode_ED_73:
  7739.         ldrb r0,[z80pc],#1
  7740.         ldrb r1,[z80pc],#1
  7741.         orr r1,r0,r1, lsl #8
  7742. .if FAST_Z80SP
  7743.         ldr r0,[cpucontext,#z80sp_base]
  7744.         sub r0,z80sp,r0
  7745. .else
  7746.         mov r0,z80sp
  7747. .endif
  7748.         writemem16
  7749.         fetch 16
  7750. ;@IN A,(C)
  7751. opcode_ED_78:
  7752.         opIN_C
  7753.         mov z80a,r0, lsl #24
  7754.         and z80f,z80f,#1<<CFlag
  7755.         sub r1,opcodes,#0x100
  7756.         ldrb r0,[r1,r0]
  7757.         orr z80f,z80f,r0
  7758.         fetch 12
  7759. ;@OUT (C),A
  7760. opcode_ED_79:
  7761.         mov r1,z80a, lsr #24
  7762.         opOUT_C
  7763.         fetch 12
  7764. ;@ADC HL,SP
  7765. opcode_ED_7A:
  7766. .if FAST_Z80SP
  7767.         ldr r0,[cpucontext,#z80sp_base]
  7768.         sub r0,z80sp,r0
  7769.         mov r0, r0, lsl #16
  7770. .else
  7771.         mov r0,z80sp,lsl#16
  7772. .endif
  7773.         opADC16 r0
  7774. ;@LD SP,(NN)
  7775. opcode_ED_7B:
  7776.         ldrb r0,[z80pc],#1
  7777.         ldrb r1,[z80pc],#1
  7778.         orr r0,r0,r1, lsl #8
  7779.         readmem16
  7780. .if FAST_Z80SP
  7781.         rebasesp
  7782. .endif
  7783.         mov z80sp,r0
  7784.         fetch 20
  7785. ;@LDI
  7786. opcode_ED_A0:
  7787.         copymem8HL_DE
  7788.         add z80hl,z80hl,#1<<16
  7789.         add z80de,z80de,#1<<16
  7790.         subs z80bc,z80bc,#1<<16
  7791.         bic z80f,z80f,#(1<<VFlag)|(1<<NFlag)|(1<<HFlag)
  7792.         orrne z80f,z80f,#1<<VFlag
  7793.         fetch 16
  7794. ;@CPI
  7795. opcode_ED_A1:
  7796.         readmem8HL
  7797.         add z80hl,z80hl,#0x00010000
  7798.         mov r1,z80a,lsl#4
  7799.         cmp z80a,r0,lsl#24
  7800.         and z80f,z80f,#1<<CFlag
  7801.         orr z80f,z80f,#1<<NFlag
  7802.         orrmi z80f,z80f,#1<<SFlag
  7803.         orreq z80f,z80f,#1<<ZFlag
  7804.         cmp r1,r0,lsl#28
  7805.         orrcc z80f,z80f,#1<<HFlag
  7806.         subs z80bc,z80bc,#0x00010000
  7807.         orrne z80f,z80f,#1<<VFlag
  7808.         fetch 16
  7809. ;@INI
  7810. opcode_ED_A2:
  7811.         opIN_C
  7812.         and z80f,r0,#0x80
  7813.         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7
  7814. ;@      mov r1,z80bc,lsl#8
  7815. ;@      add r1,r1,#0x01000000
  7816. ;@      adds r1,r1,r0,lsl#24
  7817. ;@      orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL) + ((C+1) & 0xFF) > 0xFF
  7818.         writemem8HL
  7819.         add z80hl,z80hl,#1<<16
  7820.         sub z80bc,z80bc,#1<<24
  7821.         tst z80bc,#0xFF<<24
  7822.         orrmi z80f,z80f,#1<<SFlag
  7823.         orreq z80f,z80f,#1<<ZFlag
  7824.         fetch 16
  7825.  
  7826. ;@OUTI
  7827. opcode_ED_A3:
  7828.         readmem8HL
  7829.         add z80hl,z80hl,#1<<16
  7830.         and z80f,r0,#0x80
  7831.         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7
  7832.         mov r1,z80hl,lsl#8
  7833.         adds r1,r1,r0,lsl#24
  7834.         orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL)+L > 0xFF
  7835.         sub z80bc,z80bc,#1<<24
  7836.         tst z80bc,#0xFF<<24
  7837.         orrmi z80f,z80f,#1<<SFlag
  7838.         orreq z80f,z80f,#1<<ZFlag
  7839.         mov r1,r0
  7840.         opOUT_C
  7841.         fetch 16
  7842.  
  7843. ;@LDD
  7844. opcode_ED_A8:
  7845.         copymem8HL_DE
  7846.         sub z80hl,z80hl,#1<<16
  7847.         sub z80de,z80de,#1<<16
  7848.         subs z80bc,z80bc,#1<<16
  7849.         bic z80f,z80f,#(1<<VFlag)|(1<<NFlag)|(1<<HFlag)
  7850.         orrne z80f,z80f,#1<<VFlag
  7851.         fetch 16
  7852.  
  7853. ;@CPD
  7854. opcode_ED_A9:
  7855.         readmem8HL
  7856.         sub z80hl,z80hl,#1<<16
  7857.         mov r1,z80a,lsl#4
  7858.         cmp z80a,r0,lsl#24
  7859.         and z80f,z80f,#1<<CFlag
  7860.         orr z80f,z80f,#1<<NFlag
  7861.         orrmi z80f,z80f,#1<<SFlag
  7862.         orreq z80f,z80f,#1<<ZFlag
  7863.         cmp r1,r0,lsl#28
  7864.         orrcc z80f,z80f,#1<<HFlag
  7865.         subs z80bc,z80bc,#0x00010000
  7866.         orrne z80f,z80f,#1<<VFlag
  7867.         fetch 16
  7868.  
  7869. ;@IND
  7870. opcode_ED_AA:
  7871.         opIN_C
  7872.         and z80f,r0,#0x80
  7873.         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7
  7874. ;@      mov r1,z80bc,lsl#8
  7875. ;@      sub r1,r1,#0x01000000
  7876. ;@      adds r1,r1,r0,lsl#24
  7877. ;@      orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL) + ((C-1) & 0xFF) > 0xFF
  7878.         writemem8HL
  7879.         sub z80hl,z80hl,#1<<16
  7880.         sub z80bc,z80bc,#1<<24
  7881.         tst z80bc,#0xFF<<24
  7882.         orrmi z80f,z80f,#1<<SFlag
  7883.         orreq z80f,z80f,#1<<ZFlag
  7884.         fetch 16
  7885.  
  7886. ;@OUTD
  7887. opcode_ED_AB:
  7888.         readmem8HL
  7889.         sub z80hl,z80hl,#1<<16
  7890.         and z80f,r0,#0x80
  7891.         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7
  7892.         mov r1,z80hl,lsl#8
  7893.         adds r1,r1,r0,lsl#24
  7894.         orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if r0+HL > 0xFF
  7895.         sub z80bc,z80bc,#1<<24
  7896.         tst z80bc,#0xFF<<24
  7897.         orrmi z80f,z80f,#1<<SFlag
  7898.         orreq z80f,z80f,#1<<ZFlag
  7899.         mov r1,r0
  7900.         opOUT_C
  7901.         fetch 16
  7902. ;@LDIR
  7903. opcode_ED_B0:
  7904.         copymem8HL_DE
  7905.         add z80hl,z80hl,#1<<16
  7906.         add z80de,z80de,#1<<16
  7907.         subs z80bc,z80bc,#1<<16
  7908.         bic z80f,z80f,#(1<<VFlag)|(1<<NFlag)|(1<<HFlag)
  7909.         orrne z80f,z80f,#1<<VFlag
  7910.         subne z80pc,z80pc,#2
  7911.         subne z80_icount,z80_icount,#5
  7912.         fetch 16
  7913.  
  7914. ;@CPIR
  7915. opcode_ED_B1:
  7916.         readmem8HL
  7917.         add z80hl,z80hl,#1<<16    
  7918.         mov r1,z80a,lsl#4
  7919.         cmp z80a,r0,lsl#24
  7920.         and z80f,z80f,#1<<CFlag
  7921.         orr z80f,z80f,#1<<NFlag
  7922.         orrmi z80f,z80f,#1<<SFlag
  7923.         orreq z80f,z80f,#1<<ZFlag
  7924.         cmp r1,r0,lsl#28
  7925.         orrcc z80f,z80f,#1<<HFlag
  7926.         subs z80bc,z80bc,#1<<16
  7927.         bne opcode_ED_B1_decpc
  7928.         fetch 16
  7929. opcode_ED_B1_decpc:
  7930.         orr z80f,z80f,#1<<VFlag
  7931.         tst z80f,#1<<ZFlag
  7932.         subeq z80pc,z80pc,#2
  7933.         subeq z80_icount,z80_icount,#5
  7934.         fetch 16
  7935. ;@INIR
  7936. opcode_ED_B2:
  7937.         opIN_C
  7938.         and z80f,r0,#0x80
  7939.         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7
  7940. ;@      mov r1,z80bc,lsl#8
  7941. ;@      add r1,r1,#0x01000000
  7942. ;@      adds r1,r1,r0,lsl#24
  7943. ;@      orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL) + ((C+1) & 0xFF) > 0xFF
  7944.         writemem8HL
  7945.         add z80hl,z80hl,#1<<16
  7946.         sub z80bc,z80bc,#1<<24
  7947.         tst z80bc,#0xFF<<24
  7948.         orrmi z80f,z80f,#1<<SFlag
  7949.         orreq z80f,z80f,#1<<ZFlag
  7950.         subne z80pc,z80pc,#2
  7951.         subne z80_icount,z80_icount,#5
  7952.         fetch 16
  7953. ;@OTIR
  7954. opcode_ED_B3:
  7955.         readmem8HL
  7956.         add z80hl,z80hl,#1<<16
  7957.         and z80f,r0,#0x80
  7958.         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7
  7959.         mov r1,z80hl,lsl#8
  7960.         adds r1,r1,r0,lsl#24
  7961.         orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if r0+HL > 0xFF
  7962.         sub z80bc,z80bc,#1<<24
  7963.         tst z80bc,#0xFF<<24
  7964.         orrmi z80f,z80f,#1<<SFlag
  7965.         orreq z80f,z80f,#1<<ZFlag
  7966.         subne z80pc,z80pc,#2
  7967.         subne z80_icount,z80_icount,#5
  7968.         mov r1,r0
  7969.         opOUT_C
  7970.         fetch 16
  7971. ;@LDDR
  7972. opcode_ED_B8:
  7973.         copymem8HL_DE
  7974.         sub z80hl,z80hl,#1<<16
  7975.         sub z80de,z80de,#1<<16
  7976.         subs z80bc,z80bc,#1<<16
  7977.         bic z80f,z80f,#(1<<VFlag)|(1<<NFlag)|(1<<HFlag)
  7978.         orrne z80f,z80f,#1<<VFlag
  7979.         subne z80pc,z80pc,#2
  7980.         subne z80_icount,z80_icount,#5
  7981.         fetch 16
  7982.  
  7983. ;@CPDR
  7984. opcode_ED_B9:
  7985.         readmem8HL
  7986.         sub z80hl,z80hl,#1<<16
  7987.         mov r1,z80a,lsl#4
  7988.         cmp z80a,r0,lsl#24
  7989.         and z80f,z80f,#1<<CFlag
  7990.         orr z80f,z80f,#1<<NFlag
  7991.         orrmi z80f,z80f,#1<<SFlag
  7992.         orreq z80f,z80f,#1<<ZFlag
  7993.         cmp r1,r0,lsl#28
  7994.         orrcc z80f,z80f,#1<<HFlag
  7995.         subs z80bc,z80bc,#1<<16
  7996.         bne opcode_ED_B9_decpc
  7997.         fetch 16
  7998. opcode_ED_B9_decpc:
  7999.         orr z80f,z80f,#1<<VFlag
  8000.         tst z80f,#1<<ZFlag
  8001.         subeq z80pc,z80pc,#2
  8002.         subeq z80_icount,z80_icount,#5
  8003.         fetch 16
  8004. ;@INDR
  8005. opcode_ED_BA:
  8006.         opIN_C
  8007.         and z80f,r0,#0x80
  8008.         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7
  8009. ;@      mov r1,z80bc,lsl#8
  8010. ;@      sub r1,r1,#0x01000000
  8011. ;@      adds r1,r1,r0,lsl#24
  8012. ;@      orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL) + ((C-1) & 0xFF) > 0xFF
  8013.         writemem8HL
  8014.         sub z80hl,z80hl,#1<<16
  8015.         sub z80bc,z80bc,#1<<24
  8016.         tst z80bc,#0xFF<<24
  8017.         orrmi z80f,z80f,#1<<SFlag
  8018.         orreq z80f,z80f,#1<<ZFlag
  8019.         subne z80pc,z80pc,#2
  8020.         subne z80_icount,z80_icount,#5
  8021.         fetch 16
  8022. ;@OTDR
  8023. opcode_ED_BB:
  8024.         readmem8HL
  8025.         sub z80hl,z80hl,#1<<16
  8026.         and z80f,r0,#0x80
  8027.         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7
  8028.         mov r1,z80hl,lsl#8
  8029.         adds r1,r1,r0,lsl#24
  8030.         orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if r0+HL > 0xFF
  8031.         sub z80bc,z80bc,#1<<24
  8032.         tst z80bc,#0xFF<<24
  8033.         orrmi z80f,z80f,#1<<SFlag
  8034.         orreq z80f,z80f,#1<<ZFlag
  8035.         subne z80pc,z80pc,#2
  8036.         subne z80_icount,z80_icount,#5
  8037.         mov r1,r0
  8038.         opOUT_C
  8039.         fetch 16
  8040. ;@##################################
  8041. ;@##################################
  8042. ;@###  opcodes FD  #########################
  8043. ;@##################################
  8044. ;@##################################
  8045. ;@Since DD and FD opcodes are all the same apart from the address
  8046. ;@register they use.  When a FD intruction the program runs the code
  8047. ;@from the DD location but the address of the IY reg is passed instead
  8048. ;@of IX
  8049.  
  8050. ;@end_loop:
  8051. ;@     b end_loop
  8052.  
  8053.  
  8054.  
  8055.