RACE/DrZ80.s
Francisco José García García 82292fc0a8 DRZ80 support
2019-12-28 13:00:07 +01:00

8099 lines
293 KiB
ArmAsm

;@ Reesy's Z80 Emulator Version 0.001
;@ (c) Copyright 2004 Reesy, All rights reserved
;@ DrZ80 is free for non-commercial use.
;@ For commercial use, separate licencing terms must be obtained.
.data
.align 4
.global DrZ80Run
.global DrZ80Ver
.equiv INTERRUPT_MODE, 0 ;@0 = Use internal int handler, 1 = Use Mames int handler
.equiv FAST_Z80SP, 1 ;@0 = Use mem functions for stack pointer, 1 = Use direct mem pointer
.equiv UPDATE_CONTEXT, 0
.equiv DRZ80_XMAP, 0
.equiv DRZ80_XMAP_MORE_INLINE, 0
.if DRZ80_XMAP
.equ Z80_MEM_SHIFT, 13
.endif
.if INTERRUPT_MODE
.extern Interrupt
.endif
DrZ80Ver: .long 0x0001
;@ --------------------------- Defines ----------------------------
;@ Make sure that regs/pointers for z80pc to z80sp match up!
z80_icount .req r3
opcodes .req r4
cpucontext .req r5
z80pc .req r6
z80a .req r7
z80f .req r8
z80bc .req r9
z80de .req r10
z80hl .req r11
z80sp .req r12
z80xx .req lr
.equ z80pc_pointer, 0 ;@ 0
.equ z80a_pointer, z80pc_pointer+4 ;@ 4
.equ z80f_pointer, z80a_pointer+4 ;@ 8
.equ z80bc_pointer, z80f_pointer+4 ;@
.equ z80de_pointer, z80bc_pointer+4
.equ z80hl_pointer, z80de_pointer+4
.equ z80sp_pointer, z80hl_pointer+4
.equ z80pc_base, z80sp_pointer+4
.equ z80sp_base, z80pc_base+4
.equ z80ix, z80sp_base+4
.equ z80iy, z80ix+4
.equ z80i, z80iy+4
.equ z80a2, z80i+4
.equ z80f2, z80a2+4
.equ z80bc2, z80f2+4
.equ z80de2, z80bc2+4
.equ z80hl2, z80de2+4
.equ cycles_pointer, z80hl2+4
.equ previouspc, cycles_pointer+4
.equ z80irq, previouspc+4
.equ z80if, z80irq+1
.equ z80im, z80if+1
.equ z80r, z80im+1
.equ z80irqvector, z80r+1
.equ z80irqcallback, z80irqvector+4
.equ z80_write8, z80irqcallback+4
.equ z80_write16, z80_write8+4
.equ z80_in, z80_write16+4
.equ z80_out, z80_in+4
.equ z80_read8, z80_out+4
.equ z80_read16, z80_read8+4
.equ z80_rebaseSP, z80_read16+4
.equ z80_rebasePC, z80_rebaseSP+4
.equ VFlag, 0
.equ CFlag, 1
.equ ZFlag, 2
.equ SFlag, 3
.equ HFlag, 4
.equ NFlag, 5
.equ Flag3, 6
.equ Flag5, 7
.equ Z80_CFlag, 0
.equ Z80_NFlag, 1
.equ Z80_VFlag, 2
.equ Z80_Flag3, 3
.equ Z80_HFlag, 4
.equ Z80_Flag5, 5
.equ Z80_ZFlag, 6
.equ Z80_SFlag, 7
.equ Z80_IF1, 1<<0
.equ Z80_IF2, 1<<1
.equ Z80_HALT, 1<<2
.equ Z80_NMI, 1<<3
;@---------------------------------------
.text
.if DRZ80_XMAP
z80_xmap_read8: @ addr
ldr r1,[cpucontext,#z80_read8]
mov r2,r0,lsr #Z80_MEM_SHIFT
ldr r1,[r1,r2,lsl #2]
movs r1,r1,lsl #1
ldrccb r0,[r1,r0]
bxcc lr
z80_xmap_read8_handler: @ addr, func
str z80_icount,[cpucontext,#cycles_pointer]
stmfd sp!,{r12,lr}
mov lr,pc
bx r1
ldr z80_icount,[cpucontext,#cycles_pointer]
ldmfd sp!,{r12,pc}
z80_xmap_write8: @ data, addr
ldr r2,[cpucontext,#z80_write8]
add r2,r2,r1,lsr #Z80_MEM_SHIFT-2
bic r2,r2,#3
ldr r2,[r2]
movs r2,r2,lsl #1
strccb r0,[r2,r1]
bxcc lr
z80_xmap_write8_handler: @ data, addr, func
str z80_icount,[cpucontext,#cycles_pointer]
mov r3,r0
mov r0,r1
mov r1,r3
stmfd sp!,{r12,lr}
mov lr,pc
bx r2
ldr z80_icount,[cpucontext,#cycles_pointer]
ldmfd sp!,{r12,pc}
z80_xmap_read16: @ addr
@ check if we cross bank boundary
add r1,r0,#1
eor r1,r1,r0
tst r1,#1<<Z80_MEM_SHIFT
bne 0f
ldr r1,[cpucontext,#z80_read8]
mov r2,r0,lsr #Z80_MEM_SHIFT
ldr r1,[r1,r2,lsl #2]
movs r1,r1,lsl #1
bcs 0f
ldrb r0,[r1,r0]!
ldrb r1,[r1,#1]
orr r0,r0,r1,lsl #8
bx lr
0:
@ z80_xmap_read8 will save r3 and r12 for us
stmfd sp!,{r8,r9,lr}
mov r8,r0
bl z80_xmap_read8
mov r9,r0
add r0,r8,#1
bl z80_xmap_read8
orr r0,r9,r0,lsl #8
ldmfd sp!,{r8,r9,pc}
z80_xmap_write16: @ data, addr
add r2,r1,#1
eor r2,r2,r1
tst r2,#1<<Z80_MEM_SHIFT
bne 0f
ldr r2,[cpucontext,#z80_write8]
add r2,r2,r1,lsr #Z80_MEM_SHIFT-2
bic r2,r2,#3
ldr r2,[r2]
movs r2,r2,lsl #1
bcs 0f
strb r0,[r2,r1]!
mov r0,r0,lsr #8
strb r0,[r2,#1]
bx lr
0:
stmfd sp!,{r8,r9,lr}
mov r8,r0
mov r9,r1
bl z80_xmap_write8
mov r0,r8,lsr #8
add r1,r9,#1
bl z80_xmap_write8
ldmfd sp!,{r8,r9,pc}
z80_xmap_rebase_pc:
ldr r1,[cpucontext,#z80_read8]
mov r2,r0,lsr #Z80_MEM_SHIFT
ldr r1,[r1,r2,lsl #2]
movs r1,r1,lsl #1
strcc r1,[cpucontext,#z80pc_base]
addcc z80pc,r1,r0
bxcc lr
z80_bad_jump:
stmfd sp!,{r3,r12,lr}
mov lr,pc
ldr pc,[cpucontext,#z80_rebasePC]
mov z80pc,r0
ldmfd sp!,{r3,r12,pc}
.if FAST_Z80SP
z80_xmap_rebase_sp:
ldr r1,[cpucontext,#z80_read8]
sub r2,r0,#1
mov r2,r2,lsl #16
mov r2,r2,lsr #(Z80_MEM_SHIFT+16)
ldr r1,[r1,r2,lsl #2]
movs r1,r1,lsl #1
strcc r1,[cpucontext,#z80sp_base]
addcc z80sp,r1,r0
bxcc lr
stmfd sp!,{r3,r12,lr}
mov lr,pc
ldr pc,[cpucontext,#z80_rebaseSP]
mov z80sp,r0
ldmfd sp!,{r3,r12,pc}
.endif @ FAST_Z80SP
.endif @ DRZ80_XMAP
.macro fetch cycs
subs z80_icount,z80_icount,#\cycs
.if UPDATE_CONTEXT
str z80pc,[cpucontext,#z80pc_pointer]
str z80_icount,[cpucontext,#cycles_pointer]
ldr r1,[cpucontext,#z80pc_base]
sub r2,z80pc,r1
str r2,[cpucontext,#previouspc]
.endif
ldrplb r0,[z80pc],#1
ldrpl pc,[opcodes,r0, lsl #2]
bmi z80_execute_end
.endm
.macro eatcycles cycs
sub z80_icount,z80_icount,#\cycs
.if UPDATE_CONTEXT
str z80_icount,[cpucontext,#cycles_pointer]
.endif
.endm
.macro readmem8
.if UPDATE_CONTEXT
str z80pc,[cpucontext,#z80pc_pointer]
.endif
.if DRZ80_XMAP
.if !DRZ80_XMAP_MORE_INLINE
ldr r1,[cpucontext,#z80_read8]
mov r2,r0,lsr #Z80_MEM_SHIFT
ldr r1,[r1,r2,lsl #2]
movs r1,r1,lsl #1
ldrccb r0,[r1,r0]
blcs z80_xmap_read8_handler
.else
bl z80_xmap_read8
.endif
.else ;@ if !DRZ80_XMAP
stmfd sp!,{r3,r12}
mov lr,pc
ldr pc,[cpucontext,#z80_read8] ;@ r0 = addr - data returned in r0
ldmfd sp!,{r3,r12}
.endif
.endm
.macro readmem8HL
mov r0,z80hl, lsr #16
readmem8
.endm
.macro readmem16
.if UPDATE_CONTEXT
str z80pc,[cpucontext,#z80pc_pointer]
.endif
.if DRZ80_XMAP
bl z80_xmap_read16
.else
stmfd sp!,{r3,r12}
mov lr,pc
ldr pc,[cpucontext,#z80_read16]
ldmfd sp!,{r3,r12}
.endif
.endm
.macro writemem8
.if UPDATE_CONTEXT
str z80pc,[cpucontext,#z80pc_pointer]
.endif
.if DRZ80_XMAP
.if DRZ80_XMAP_MORE_INLINE
ldr r2,[cpucontext,#z80_write8]
mov lr,r1,lsr #Z80_MEM_SHIFT
ldr r2,[r2,lr,lsl #2]
movs r2,r2,lsl #1
strccb r0,[r2,r1]
blcs z80_xmap_write8_handler
.else
bl z80_xmap_write8
.endif
.else ;@ if !DRZ80_XMAP
stmfd sp!,{r3,r12}
mov lr,pc
ldr pc,[cpucontext,#z80_write8] ;@ r0=data r1=addr
ldmfd sp!,{r3,r12}
.endif
.endm
.macro writemem8DE
mov r1,z80de, lsr #16
writemem8
.endm
.macro writemem8HL
mov r1,z80hl, lsr #16
writemem8
.endm
.macro writemem16
.if UPDATE_CONTEXT
str z80pc,[cpucontext,#z80pc_pointer]
.endif
.if DRZ80_XMAP
bl z80_xmap_write16
.else
stmfd sp!,{r3,r12}
mov lr,pc
ldr pc,[cpucontext,#z80_write16] ;@ r0=data r1=addr
ldmfd sp!,{r3,r12}
.endif
.endm
.macro copymem8HL_DE
.if UPDATE_CONTEXT
str z80pc,[cpucontext,#z80pc_pointer]
.endif
mov r0,z80hl, lsr #16
.if DRZ80_XMAP
bl z80_xmap_read8
.else
stmfd sp!,{r3,r12}
mov lr,pc
ldr pc,[cpucontext,#z80_read8] ;@ r0 = addr - data returned in r0
.endif
mov r1,z80de, lsr #16
.if DRZ80_XMAP
bl z80_xmap_write8
.else
mov lr,pc
ldr pc,[cpucontext,#z80_write8] ;@ r0=data r1=addr
ldmfd sp!,{r3,r12}
.endif
.endm
;@---------------------------------------
.macro rebasepc
.if UPDATE_CONTEXT
str z80pc,[cpucontext,#z80pc_pointer]
.endif
.if DRZ80_XMAP
bl z80_xmap_rebase_pc
.else
stmfd sp!,{r3,r12}
mov lr,pc
ldr pc,[cpucontext,#z80_rebasePC] ;@ r0=new pc - external function sets z80pc_base and returns new z80pc in r0
ldmfd sp!,{r3,r12}
mov z80pc,r0
.endif
.endm
.macro rebasesp
.if UPDATE_CONTEXT
str z80pc,[cpucontext,#z80pc_pointer]
.endif
.if DRZ80_XMAP
bl z80_xmap_rebase_sp
.else
stmfd sp!,{r3,r12}
mov lr,pc
ldr pc,[cpucontext,#z80_rebaseSP] ;@ external function must rebase sp
ldmfd sp!,{r3,r12}
mov z80sp,r0
.endif
.endm
;@----------------------------------------------------------------------------
.macro opADC
movs z80f,z80f,lsr#2 ;@ get C
subcs r0,r0,#0x100
eor z80f,r0,z80a,lsr#24 ;@ prepare for check of half carry
adcs z80a,z80a,r0,ror#8
mrs r0,cpsr ;@ S,Z,V&C
eor z80f,z80f,z80a,lsr#24
and z80f,z80f,#1<<HFlag ;@ H, correct
orr z80f,z80f,r0,lsr#28
.endm
.macro opADCA
movs z80f,z80f,lsr#2 ;@ get C
orrcs z80a,z80a,#0x00800000
adds z80a,z80a,z80a
mrs z80f,cpsr ;@ S,Z,V&C
mov z80f,z80f,lsr#28
tst z80a,#0x10000000 ;@ H, correct
orrne z80f,z80f,#1<<HFlag
fetch 4
.endm
.macro opADCH reg
mov r0,\reg,lsr#24
opADC
fetch 4
.endm
.macro opADCL reg
movs z80f,z80f,lsr#2 ;@ get C
adc r0,\reg,\reg,lsr#15
orrcs z80a,z80a,#0x00800000
mov r1,z80a,lsl#4 ;@ Prepare for check of half carry
adds z80a,z80a,r0,lsl#23
mrs z80f,cpsr ;@ S,Z,V&C
mov z80f,z80f,lsr#28
cmn r1,r0,lsl#27
orrcs z80f,z80f,#1<<HFlag ;@ H, correct
fetch 4
.endm
.macro opADCb
opADC
.endm
;@---------------------------------------
.macro opADD reg shift
mov r1,z80a,lsl#4 ;@ Prepare for check of half carry
adds z80a,z80a,\reg,lsl#\shift
mrs z80f,cpsr ;@ S,Z,V&C
mov z80f,z80f,lsr#28
cmn r1,\reg,lsl#\shift+4
orrcs z80f,z80f,#1<<HFlag
.endm
.macro opADDA
adds z80a,z80a,z80a
mrs z80f,cpsr ;@ S,Z,V&C
mov z80f,z80f,lsr#28
tst z80a,#0x10000000 ;@ H, correct
orrne z80f,z80f,#1<<HFlag
fetch 4
.endm
.macro opADDH reg
and r0,\reg,#0xFF000000
opADD r0 0
fetch 4
.endm
.macro opADDL reg
opADD \reg 8
fetch 4
.endm
.macro opADDb
opADD r0 24
.endm
;@---------------------------------------
.macro opADC16 reg
movs z80f,z80f,lsr#2 ;@ get C
adc r0,z80a,\reg,lsr#15
orrcs z80hl,z80hl,#0x00008000
mov r1,z80hl,lsl#4
adds z80hl,z80hl,r0,lsl#15
mrs z80f,cpsr ;@ S, Z, V & C
mov z80f,z80f,lsr#28
cmn r1,r0,lsl#19
orrcs z80f,z80f,#1<<HFlag
fetch 15
.endm
.macro opADC16HL
movs z80f,z80f,lsr#2 ;@ get C
orrcs z80hl,z80hl,#0x00008000
adds z80hl,z80hl,z80hl
mrs z80f,cpsr ;@ S, Z, V & C
mov z80f,z80f,lsr#28
tst z80hl,#0x10000000 ;@ H, correct.
orrne z80f,z80f,#1<<HFlag
fetch 15
.endm
.macro opADD16 reg1 reg2
mov r1,\reg1,lsl#4 ;@ Prepare for check of half carry
adds \reg1,\reg1,\reg2
bic z80f,z80f,#(1<<CFlag)|(1<<HFlag)|(1<<NFlag)
orrcs z80f,z80f,#1<<CFlag
cmn r1,\reg2,lsl#4
orrcs z80f,z80f,#1<<HFlag
.endm
.macro opADD16s reg1 reg2 shift
mov r1,\reg1,lsl#4 ;@ Prepare for check of half carry
adds \reg1,\reg1,\reg2,lsl#\shift
bic z80f,z80f,#(1<<CFlag)|(1<<HFlag)|(1<<NFlag)
orrcs z80f,z80f,#1<<CFlag
cmn r1,\reg2,lsl#4+\shift
orrcs z80f,z80f,#1<<HFlag
.endm
.macro opADD16_2 reg
adds \reg,\reg,\reg
bic z80f,z80f,#(1<<CFlag)|(1<<HFlag)|(1<<NFlag)
orrcs z80f,z80f,#1<<CFlag
tst \reg,#0x10000000 ;@ H, correct.
orrne z80f,z80f,#1<<HFlag
.endm
;@---------------------------------------
.macro opAND reg shift
and z80a,z80a,\reg,lsl#\shift
sub r0,opcodes,#0x100
ldrb z80f,[r0,z80a, lsr #24]
orr z80f,z80f,#1<<HFlag
.endm
.macro opANDA
sub r0,opcodes,#0x100
ldrb z80f,[r0,z80a, lsr #24]
orr z80f,z80f,#1<<HFlag
fetch 4
.endm
.macro opANDH reg
opAND \reg 0
fetch 4
.endm
.macro opANDL reg
opAND \reg 8
fetch 4
.endm
.macro opANDb
opAND r0 24
.endm
;@---------------------------------------
.macro opBITH reg bit
and z80f,z80f,#1<<CFlag
tst \reg,#1<<(24+\bit)
orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)
orrne z80f,z80f,#(1<<HFlag)
fetch 8
.endm
.macro opBIT7H reg
and z80f,z80f,#1<<CFlag
tst \reg,#1<<(24+7)
orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)
orrne z80f,z80f,#(1<<HFlag)|(1<<SFlag)
fetch 8
.endm
.macro opBITL reg bit
and z80f,z80f,#1<<CFlag
tst \reg,#1<<(16+\bit)
orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)
orrne z80f,z80f,#(1<<HFlag)
fetch 8
.endm
.macro opBIT7L reg
and z80f,z80f,#1<<CFlag
tst \reg,#1<<(16+7)
orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)
orrne z80f,z80f,#(1<<HFlag)|(1<<SFlag)
fetch 8
.endm
.macro opBITb bit
and z80f,z80f,#1<<CFlag
tst r0,#1<<\bit
orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)
orrne z80f,z80f,#(1<<HFlag)
.endm
.macro opBIT7b
and z80f,z80f,#1<<CFlag
tst r0,#1<<7
orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)
orrne z80f,z80f,#(1<<HFlag)|(1<<SFlag)
.endm
;@---------------------------------------
.macro opCP reg shift
mov r1,z80a,lsl#4 ;@ prepare for check of half carry
cmp z80a,\reg,lsl#\shift
mrs z80f,cpsr
mov z80f,z80f,lsr#28 ;@ S,Z,V&C
eor z80f,z80f,#(1<<CFlag)|(1<<NFlag) ;@ invert C and set n
cmp r1,\reg,lsl#\shift+4
orrcc z80f,z80f,#1<<HFlag
.endm
.macro opCPA
mov z80f,#(1<<ZFlag)|(1<<NFlag) ;@ set Z & n
fetch 4
.endm
.macro opCPH reg
and r0,\reg,#0xFF000000
opCP r0 0
fetch 4
.endm
.macro opCPL reg
opCP \reg 8
fetch 4
.endm
.macro opCPb
opCP r0 24
.endm
;@---------------------------------------
.macro opDEC8 reg ;@for A and memory
and z80f,z80f,#1<<CFlag ;@save carry
orr z80f,z80f,#1<<NFlag ;@set n
tst \reg,#0x0f000000
orreq z80f,z80f,#1<<HFlag
subs \reg,\reg,#0x01000000
orrmi z80f,z80f,#1<<SFlag
orrvs z80f,z80f,#1<<VFlag
orreq z80f,z80f,#1<<ZFlag
.endm
.macro opDEC8H reg ;@for B, D & H
and z80f,z80f,#1<<CFlag ;@save carry
orr z80f,z80f,#1<<NFlag ;@set n
tst \reg,#0x0f000000
orreq z80f,z80f,#1<<HFlag
subs \reg,\reg,#0x01000000
orrmi z80f,z80f,#1<<SFlag
orrvs z80f,z80f,#1<<VFlag
tst \reg,#0xff000000 ;@Z
orreq z80f,z80f,#1<<ZFlag
.endm
.macro opDEC8L reg ;@for C, E & L
mov \reg,\reg,ror#24
opDEC8H \reg
mov \reg,\reg,ror#8
.endm
.macro opDEC8b ;@for memory
mov r0,r0,lsl#24
opDEC8 r0
mov r0,r0,lsr#24
.endm
;@---------------------------------------
.macro opIN
stmfd sp!,{r3,r12}
mov lr,pc
ldr pc,[cpucontext,#z80_in] ;@ r0=port - data returned in r0
ldmfd sp!,{r3,r12}
.endm
.macro opIN_C
mov r0,z80bc, lsr #16
opIN
.endm
;@---------------------------------------
.macro opINC8 reg ;@for A and memory
and z80f,z80f,#1<<CFlag ;@save carry, clear n
adds \reg,\reg,#0x01000000
orrmi z80f,z80f,#1<<SFlag
orrvs z80f,z80f,#1<<VFlag
orrcs z80f,z80f,#1<<ZFlag ;@cs when going from 0xFF to 0x00
tst \reg,#0x0f000000
orreq z80f,z80f,#1<<HFlag
.endm
.macro opINC8H reg ;@for B, D & H
opINC8 \reg
.endm
.macro opINC8L reg ;@for C, E & L
mov \reg,\reg,ror#24
opINC8 \reg
mov \reg,\reg,ror#8
.endm
.macro opINC8b ;@for memory
mov r0,r0,lsl#24
opINC8 r0
mov r0,r0,lsr#24
.endm
;@---------------------------------------
.macro opOR reg shift
orr z80a,z80a,\reg,lsl#\shift
sub r0,opcodes,#0x100
ldrb z80f,[r0,z80a, lsr #24]
.endm
.macro opORA
sub r0,opcodes,#0x100
ldrb z80f,[r0,z80a, lsr #24]
fetch 4
.endm
.macro opORH reg
and r0,\reg,#0xFF000000
opOR r0 0
fetch 4
.endm
.macro opORL reg
opOR \reg 8
fetch 4
.endm
.macro opORb
opOR r0 24
.endm
;@---------------------------------------
.macro opOUT
stmfd sp!,{r3,r12}
mov lr,pc
ldr pc,[cpucontext,#z80_out] ;@ r0=port r1=data
ldmfd sp!,{r3,r12}
.endm
.macro opOUT_C
mov r0,z80bc, lsr #16
opOUT
.endm
;@---------------------------------------
.macro opPOP
.if FAST_Z80SP
ldrb r0,[z80sp],#1
ldrb r1,[z80sp],#1
orr r0,r0,r1, lsl #8
.else
mov r0,z80sp
readmem16
add z80sp,z80sp,#2
.endif
.endm
.macro opPOPreg reg
opPOP
mov \reg,r0, lsl #16
fetch 10
.endm
;@---------------------------------------
.macro stack_check
@ try to protect against stack overflows, lock into current bank
ldr r1,[cpucontext,#z80sp_base]
sub r1,z80sp,r1
cmp r1,#2
addlt z80sp,z80sp,#1<<Z80_MEM_SHIFT
.endm
.macro opPUSHareg reg @ reg > r1
.if FAST_Z80SP
.if DRZ80_XMAP
stack_check
.endif
mov r1,\reg, lsr #8
strb r1,[z80sp,#-1]!
strb \reg,[z80sp,#-1]!
.else
mov r0,\reg
sub z80sp,z80sp,#2
mov r1,z80sp
writemem16
.endif
.endm
.macro opPUSHreg reg
.if FAST_Z80SP
.if DRZ80_XMAP
stack_check
.endif
mov r1,\reg, lsr #24
strb r1,[z80sp,#-1]!
mov r1,\reg, lsr #16
strb r1,[z80sp,#-1]!
.else
mov r0,\reg,lsr #16
sub z80sp,z80sp,#2
mov r1,z80sp
writemem16
.endif
.endm
;@---------------------------------------
.macro opRESmemHL bit
mov r0,z80hl, lsr #16
.if DRZ80_XMAP
bl z80_xmap_read8
bic r0,r0,#1<<\bit
mov r1,z80hl, lsr #16
bl z80_xmap_write8
.else
stmfd sp!,{r3,r12}
mov lr,pc
ldr pc,[cpucontext,#z80_read8] ;@ r0 = addr - data returned in r0
bic r0,r0,#1<<\bit
mov r1,z80hl, lsr #16
mov lr,pc
ldr pc,[cpucontext,#z80_write8] ;@ r0=data r1=addr
ldmfd sp!,{r3,r12}
.endif
fetch 15
.endm
;@---------------------------------------
.macro opRESmem bit
.if DRZ80_XMAP
stmfd sp!,{r0} ;@ save addr as well
bl z80_xmap_read8
bic r0,r0,#1<<\bit
ldmfd sp!,{r1} ;@ restore addr into r1
bl z80_xmap_write8
.else
stmfd sp!,{r3,r12}
stmfd sp!,{r0} ;@ save addr as well
mov lr,pc
ldr pc,[cpucontext,#z80_read8] ;@ r0=addr - data returned in r0
bic r0,r0,#1<<\bit
ldmfd sp!,{r1} ;@ restore addr into r1
mov lr,pc
ldr pc,[cpucontext,#z80_write8] ;@ r0=data r1=addr
ldmfd sp!,{r3,r12}
.endif
fetch 23
.endm
;@---------------------------------------
.macro opRL reg1 reg2 shift
movs \reg1,\reg2,lsl \shift
tst z80f,#1<<CFlag ;@doesn't affect ARM carry, as long as the imidiate value is < 0x100. Watch out!
orrne \reg1,\reg1,#0x01000000
;@ and r2,z80f,#1<<CFlag
;@ orr $x,$x,r2,lsl#23
sub r1,opcodes,#0x100
ldrb z80f,[r1,\reg1,lsr#24] ;@get PZS
orrcs z80f,z80f,#1<<CFlag
.endm
.macro opRLA
opRL z80a, z80a, #1
fetch 8
.endm
.macro opRLH reg
and r0,\reg,#0xFF000000 ;@mask high to r0
adds \reg,\reg,r0
tst z80f,#1<<CFlag ;@doesn't affect ARM carry, as long as the imidiate value is < 0x100. Watch out!
orrne \reg,\reg,#0x01000000
sub r1,opcodes,#0x100
ldrb z80f,[r1,\reg,lsr#24] ;@get PZS
orrcs z80f,z80f,#1<<CFlag
fetch 8
.endm
.macro opRLL reg
opRL r0, \reg, #9
and \reg,\reg,#0xFF000000 ;@mask out high
orr \reg,\reg,r0,lsr#8
fetch 8
.endm
.macro opRLb
opRL r0, r0, #25
mov r0,r0,lsr#24
.endm
;@---------------------------------------
.macro opRLC reg1 reg2 shift
movs \reg1,\reg2,lsl#\shift
orrcs \reg1,\reg1,#0x01000000
sub r1,opcodes,#0x100
ldrb z80f,[r1,\reg1,lsr#24]
orrcs z80f,z80f,#1<<CFlag
.endm
.macro opRLCA
opRLC z80a, z80a, 1
fetch 8
.endm
.macro opRLCH reg
and r0,\reg,#0xFF000000 ;@mask high to r0
adds \reg,\reg,r0
orrcs \reg,\reg,#0x01000000
sub r1,opcodes,#0x100
ldrb z80f,[r1,\reg,lsr#24]
orrcs z80f,z80f,#1<<CFlag
fetch 8
.endm
.macro opRLCL reg
opRLC r0, \reg, 9
and \reg,\reg,#0xFF000000 ;@mask out high
orr \reg,\reg,r0,lsr#8
fetch 8
.endm
.macro opRLCb
opRLC r0, r0, 25
mov r0,r0,lsr#24
.endm
;@---------------------------------------
.macro opRR reg1 reg2 shift
movs \reg1,\reg2,lsr#\shift
tst z80f,#1<<CFlag ;@doesn't affect ARM carry, as long as the imidiate value is < 0x100. Watch out!
orrne \reg1,\reg1,#0x00000080
;@ and r2,z80_f,#PSR_C
;@ orr \reg1,\reg1,r2,lsl#6
sub r1,opcodes,#0x100
ldrb z80f,[r1,\reg1]
orrcs z80f,z80f,#1<<CFlag
.endm
.macro opRRA
orr z80a,z80a,z80f,lsr#1 ;@get C
movs z80a,z80a,ror#25
mov z80a,z80a,lsl#24
sub r1,opcodes,#0x100
ldrb z80f,[r1,z80a,lsr#24]
orrcs z80f,z80f,#1<<CFlag
fetch 8
.endm
.macro opRRH reg
orr r0,\reg,z80f,lsr#1 ;@get C
movs r0,r0,ror#25
and \reg,\reg,#0x00FF0000 ;@mask out low
orr \reg,\reg,r0,lsl#24
sub r1,opcodes,#0x100
ldrb z80f,[r1,\reg,lsr#24]
orrcs z80f,z80f,#1<<CFlag
fetch 8
.endm
.macro opRRL reg
and r0,\reg,#0x00FF0000 ;@mask out low to r0
opRR r0 r0 17
and \reg,\reg,#0xFF000000 ;@mask out high
orr \reg,\reg,r0,lsl#16
fetch 8
.endm
.macro opRRb
opRR r0 r0 1
.endm
;@---------------------------------------
.macro opRRC reg1 reg2 shift
movs \reg1,\reg2,lsr#\shift
orrcs \reg1,\reg1,#0x00000080
sub r1,opcodes,#0x100
ldrb z80f,[r1,\reg1]
orrcs z80f,z80f,#1<<CFlag
.endm
.macro opRRCA
opRRC z80a, z80a, 25
mov z80a,z80a,lsl#24
fetch 8
.endm
.macro opRRCH reg
opRRC r0, \reg, 25
and \reg,\reg,#0x00FF0000 ;@mask out low
orr \reg,\reg,r0,lsl#24
fetch 8
.endm
.macro opRRCL reg
and r0,\reg,#0x00FF0000 ;@mask low to r0
opRRC r0, r0, 17
and \reg,\reg,#0xFF000000 ;@mask out high
orr \reg,\reg,r0,lsl#16
fetch 8
.endm
.macro opRRCb
opRRC r0, r0, 1
.endm
;@---------------------------------------
.macro opRST addr
ldr r0,[cpucontext,#z80pc_base]
sub r2,z80pc,r0
opPUSHareg r2
mov r0,#\addr
rebasepc
fetch 11
.endm
;@---------------------------------------
.macro opSBC
eor z80f,z80f,#1<<CFlag ;@ invert C
movs z80f,z80f,lsr#2 ;@ get C
subcc r0,r0,#0x100
eor z80f,r0,z80a,lsr#24 ;@ prepare for check of H
sbcs z80a,z80a,r0,ror#8
mrs r0,cpsr
eor z80f,z80f,z80a,lsr#24
and z80f,z80f,#1<<HFlag ;@ H, correct
orr z80f,z80f,r0,lsr#28 ;@ S,Z,V&C
eor z80f,z80f,#(1<<CFlag)|(1<<NFlag) ;@ invert C and set n.
.endm
.macro opSBCA
movs z80f,z80f,lsr#2 ;@ get C
movcc z80a,#0x00000000
movcs z80a,#0xFF000000
movcc z80f,#(1<<NFlag)|(1<<ZFlag)
movcs z80f,#(1<<NFlag)|(1<<SFlag)|(1<<CFlag)|(1<<HFlag)
fetch 4
.endm
.macro opSBCH reg
mov r0,\reg,lsr#24
opSBC
fetch 4
.endm
.macro opSBCL reg
mov r0,\reg,lsl#8
eor z80f,z80f,#1<<CFlag ;@ invert C
movs z80f,z80f,lsr#2 ;@ get C
sbccc r0,r0,#0xFF000000
mov r1,z80a,lsl#4 ;@ prepare for check of H
sbcs z80a,z80a,r0
mrs z80f,cpsr
mov z80f,z80f,lsr#28 ;@ S,Z,V&C
eor z80f,z80f,#(1<<CFlag)|(1<<NFlag) ;@ invert C and set n.
cmp r1,r0,lsl#4
orrcc z80f,z80f,#1<<HFlag ;@ H, correct
fetch 4
.endm
.macro opSBCb
opSBC
.endm
;@---------------------------------------
.macro opSBC16 reg
eor z80f,z80f,#1<<CFlag ;@ invert C
movs z80f,z80f,lsr#2 ;@ get C
sbc r1,r1,r1 ;@ set r1 to -1 or 0.
orr r0,\reg,r1,lsr#16
mov r1,z80hl,lsl#4 ;@ prepare for check of H
sbcs z80hl,z80hl,r0
mrs z80f,cpsr
mov z80f,z80f,lsr#28 ;@ S,Z,V&C
eor z80f,z80f,#(1<<CFlag)|(1<<NFlag) ;@ invert C and set n.
cmp r1,r0,lsl#4
orrcc z80f,z80f,#1<<HFlag ;@ H, correct
fetch 15
.endm
.macro opSBC16HL
movs z80f,z80f,lsr#2 ;@ get C
mov z80hl,#0x00000000
subcs z80hl,z80hl,#0x00010000
movcc z80f,#(1<<NFlag)|(1<<ZFlag)
movcs z80f,#(1<<NFlag)|(1<<SFlag)|(1<<CFlag)|(1<<HFlag)
fetch 15
.endm
;@---------------------------------------
.macro opSETmemHL bit
mov r0,z80hl, lsr #16
.if DRZ80_XMAP
bl z80_xmap_read8
orr r0,r0,#1<<\bit
mov r1,z80hl, lsr #16
bl z80_xmap_write8
.else
stmfd sp!,{r3,r12}
mov lr,pc
ldr pc,[cpucontext,#z80_read8] ;@ r0 = addr - data returned in r0
orr r0,r0,#1<<\bit
mov r1,z80hl, lsr #16
mov lr,pc
ldr pc,[cpucontext,#z80_write8] ;@ r0=data r1=addr
ldmfd sp!,{r3,r12}
.endif
fetch 15
.endm
;@---------------------------------------
.macro opSETmem bit
.if DRZ80_XMAP
stmfd sp!,{r0} ;@ save addr as well
bl z80_xmap_read8
orr r0,r0,#1<<\bit
ldmfd sp!,{r1} ;@ restore addr into r1
bl z80_xmap_write8
.else
stmfd sp!,{r3,r12}
stmfd sp!,{r0} ;@ save addr as well
mov lr,pc
ldr pc,[cpucontext,#z80_read8] ;@ r0=addr - data returned in r0
orr r0,r0,#1<<\bit
ldmfd sp!,{r1} ;@ restore addr into r1
mov lr,pc
ldr pc,[cpucontext,#z80_write8] ;@ r0=data r1=addr
ldmfd sp!,{r3,r12}
.endif
fetch 23
.endm
;@---------------------------------------
.macro opSLA reg1 reg2 shift
movs \reg1,\reg2,lsl#\shift
sub r1,opcodes,#0x100
ldrb z80f,[r1,\reg1,lsr#24]
orrcs z80f,z80f,#1<<CFlag
.endm
.macro opSLAA
opSLA z80a, z80a, 1
fetch 8
.endm
.macro opSLAH reg
and r0,\reg,#0xFF000000 ;@mask high to r0
adds \reg,\reg,r0
sub r1,opcodes,#0x100
ldrb z80f,[r1,\reg,lsr#24]
orrcs z80f,z80f,#1<<CFlag
fetch 8
.endm
.macro opSLAL reg
opSLA r0, \reg, 9
and \reg,\reg,#0xFF000000 ;@mask out high
orr \reg,\reg,r0,lsr#8
fetch 8
.endm
.macro opSLAb
opSLA r0, r0, 25
mov r0,r0,lsr#24
.endm
;@---------------------------------------
.macro opSLL reg1 reg2 shift
movs \reg1,\reg2,lsl#\shift
orr \reg1,\reg1,#0x01000000
sub r1,opcodes,#0x100
ldrb z80f,[r1,\reg1,lsr#24]
orrcs z80f,z80f,#1<<CFlag
.endm
.macro opSLLA
opSLL z80a, z80a, 1
fetch 8
.endm
.macro opSLLH reg
and r0,\reg,#0xFF000000 ;@mask high to r0
adds \reg,\reg,r0
orr \reg,\reg,#0x01000000
sub r1,opcodes,#0x100
ldrb z80f,[r1,\reg,lsr#24]
orrcs z80f,z80f,#1<<CFlag
fetch 8
.endm
.macro opSLLL reg
opSLL r0, \reg, 9
and \reg,\reg,#0xFF000000 ;@mask out high
orr \reg,\reg,r0,lsr#8
fetch 8
.endm
.macro opSLLb
opSLL r0, r0, 25
mov r0,r0,lsr#24
.endm
;@---------------------------------------
.macro opSRA reg1 reg2
movs \reg1,\reg2,asr#25
and \reg1,\reg1,#0xFF
sub r1,opcodes,#0x100
ldrb z80f,[r1,\reg1]
orrcs z80f,z80f,#1<<CFlag
.endm
.macro opSRAA
movs r0,z80a,asr#25
mov z80a,r0,lsl#24
sub r1,opcodes,#0x100
ldrb z80f,[r1,z80a,lsr#24]
orrcs z80f,z80f,#1<<CFlag
fetch 8
.endm
.macro opSRAH reg
movs r0,\reg,asr#25
and \reg,\reg,#0x00FF0000 ;@mask out low
orr \reg,\reg,r0,lsl#24
sub r1,opcodes,#0x100
ldrb z80f,[r1,\reg,lsr#24]
orrcs z80f,z80f,#1<<CFlag
fetch 8
.endm
.macro opSRAL reg
mov r0,\reg,lsl#8
opSRA r0, r0
and \reg,\reg,#0xFF000000 ;@mask out high
orr \reg,\reg,r0,lsl#16
fetch 8
.endm
.macro opSRAb
mov r0,r0,lsl#24
opSRA r0, r0
.endm
;@---------------------------------------
.macro opSRL reg1 reg2 shift
movs \reg1,\reg2,lsr#\shift
sub r1,opcodes,#0x100
ldrb z80f,[r1,\reg1]
orrcs z80f,z80f,#1<<CFlag
.endm
.macro opSRLA
opSRL z80a, z80a, 25
mov z80a,z80a,lsl#24
fetch 8
.endm
.macro opSRLH reg
opSRL r0, \reg, 25
and \reg,\reg,#0x00FF0000 ;@mask out low
orr \reg,\reg,r0,lsl#24
fetch 8
.endm
.macro opSRLL reg
mov r0,\reg,lsl#8
opSRL r0, r0, 25
and \reg,\reg,#0xFF000000 ;@mask out high
orr \reg,\reg,r0,lsl#16
fetch 8
.endm
.macro opSRLb
opSRL r0, r0, 1
.endm
;@---------------------------------------
.macro opSUB reg shift
mov r1,z80a,lsl#4 ;@ Prepare for check of half carry
subs z80a,z80a,\reg,lsl#\shift
mrs z80f,cpsr
mov z80f,z80f,lsr#28 ;@ S,Z,V&C
eor z80f,z80f,#(1<<CFlag)|(1<<NFlag) ;@ invert C and set n
cmp r1,\reg,lsl#\shift+4
orrcc z80f,z80f,#1<<HFlag
.endm
.macro opSUBA
mov z80a,#0
mov z80f,#(1<<ZFlag)|(1<<NFlag) ;@ set Z & n
fetch 4
.endm
.macro opSUBH reg
and r0,\reg,#0xFF000000
opSUB r0, 0
fetch 4
.endm
.macro opSUBL reg
opSUB \reg, 8
fetch 4
.endm
.macro opSUBb
opSUB r0, 24
.endm
;@---------------------------------------
.macro opXOR reg shift
eor z80a,z80a,\reg,lsl#\shift
sub r0,opcodes,#0x100
ldrb z80f,[r0,z80a, lsr #24]
.endm
.macro opXORA
mov z80a,#0
mov z80f,#(1<<ZFlag)|(1<<VFlag)
fetch 4
.endm
.macro opXORH reg
and r0,\reg,#0xFF000000
opXOR r0, 0
fetch 4
.endm
.macro opXORL reg
opXOR \reg, 8
fetch 4
.endm
.macro opXORb
opXOR r0, 24
.endm
;@---------------------------------------
;@ --------------------------- Framework --------------------------
.text
DrZ80Run:
;@ r0 = pointer to cpu context
;@ r1 = ISTATES to execute
;@#########################################
stmdb sp!,{r4-r12,lr} ;@ save registers on stack
mov cpucontext,r0 ;@ setup main memory pointer
mov z80_icount,r1 ;@ setup number of Tstates to execute
.if INTERRUPT_MODE == 0
ldrh r0,[cpucontext,#z80irq] @ 0x4C, irq and IFF bits
.endif
ldmia cpucontext,{z80pc-z80sp} ;@ load Z80 registers
.if INTERRUPT_MODE == 0
;@ check ints
tst r0,#(Z80_NMI<<8)
blne DoNMI
tst r0,#0xff
movne r0,r0,lsr #8
tstne r0,#Z80_IF1
blne DoInterrupt
.endif
ldr opcodes,MAIN_opcodes_POINTER2
cmp z80_icount,#0 ;@ irq might have used all cycles
ldrplb r0,[z80pc],#1
ldrpl pc,[opcodes,r0, lsl #2]
z80_execute_end:
;@ save registers in CPU context
stmia cpucontext,{z80pc-z80sp} ;@ save Z80 registers
mov r0,z80_icount
ldmia sp!,{r4-r12,pc} ;@ restore registers from stack and return to C code
MAIN_opcodes_POINTER2: .word MAIN_opcodes
.if INTERRUPT_MODE
Interrupt_local: .word Interrupt
.endif
DoInterrupt:
.if INTERRUPT_MODE
;@ Don't do own int handler, call mames instead
;@ save everything back into DrZ80 context
stmia cpucontext,{z80pc-z80sp} ;@ save Z80 registers
stmfd sp!,{r3,r4,r5,lr} ;@ save rest of regs on stack
mov lr,pc
ldr pc,Interrupt_local
ldmfd sp!,{r3,r4,r5,lr} ;@ load regs from stack
;@ reload regs from DrZ80 context
ldmia cpucontext,{z80pc-z80sp} ;@ load Z80 registers
mov pc,lr ;@ return
.else
;@ r0 == z80if
stmfd sp!,{lr}
tst r0,#4 ;@ check halt
addne z80pc,z80pc,#1
ldrb r1,[cpucontext,#z80im]
;@ clear halt and int flags
eor r0,r0,r0
strb r0,[cpucontext,#z80if]
;@ now check int mode
cmp r1,#1
beq DoInterrupt_mode1
bgt DoInterrupt_mode2
DoInterrupt_mode0:
;@ get 3 byte vector
ldr r2,[cpucontext, #z80irqvector]
and r1,r2,#0xFF0000
cmp r1,#0xCD0000 ;@ call
bne 1f
;@ ########
;@ # call
;@ ########
;@ save current pc on stack
ldr r0,[cpucontext,#z80pc_base]
sub r0,z80pc,r0
.if FAST_Z80SP
mov r1,r0, lsr #8
strb r1,[z80sp,#-1]!
strb r0,[z80sp,#-1]!
.else
sub z80sp,z80sp,#2
mov r1,z80sp
writemem16
ldr r2,[cpucontext, #z80irqvector]
.endif
;@ jump to vector
mov r2,r2,lsl#16
mov r0,r2,lsr#16
;@ rebase new pc
rebasepc
eatcycles 13
b DoInterrupt_end
1:
cmp r1,#0xC30000 ;@ jump
bne DoInterrupt_mode1 ;@ rst
;@ #######
;@ # jump
;@ #######
;@ jump to vector
mov r2,r2,lsl#16
mov r0,r2,lsr#16
;@ rebase new pc
rebasepc
eatcycles 13
b DoInterrupt_end
DoInterrupt_mode1:
ldr r0,[cpucontext,#z80pc_base]
sub r2,z80pc,r0
opPUSHareg r2
mov r0,#0x38
rebasepc
eatcycles 13
b DoInterrupt_end
DoInterrupt_mode2:
;@ push pc on stack
ldr r0,[cpucontext,#z80pc_base]
sub r2,z80pc,r0
opPUSHareg r2
;@ get 1 byte vector address
ldrb r0,[cpucontext, #z80irqvector]
ldr r1,[cpucontext, #z80i]
orr r0,r0,r1,lsr#16
;@ read new pc from vector address
.if UPDATE_CONTEXT
str z80pc,[cpucontext,#z80pc_pointer]
.endif
.if DRZ80_XMAP
bl z80_xmap_read16
rebasepc
.else
stmfd sp!,{r3,r12}
mov lr,pc
ldr pc,[cpucontext,#z80_read16]
;@ rebase new pc
mov lr,pc
ldr pc,[cpucontext,#z80_rebasePC] ;@ r0=new pc - external function sets z80pc_base and returns new z80pc in r0
ldmfd sp!,{r3,r12}
mov z80pc,r0
.endif
eatcycles 17
DoInterrupt_end:
;@ interupt accepted so callback irq interface
ldr r0,[cpucontext, #z80irqcallback]
tst r0,r0
streqb r0,[cpucontext,#z80irq] ;@ default handling
ldmeqfd sp!,{pc}
stmfd sp!,{r3,r12}
mov lr,pc
mov pc,r0 ;@ call callback function
ldmfd sp!,{r3,r12}
ldmfd sp!,{pc} ;@ return
.endif
DoNMI:
stmfd sp!,{lr}
bic r0,r0,#((Z80_NMI|Z80_HALT|Z80_IF1)<<8)
strh r0,[cpucontext,#z80irq] @ 0x4C, irq and IFF bits
;@ push pc on stack
ldr r0,[cpucontext,#z80pc_base]
sub r2,z80pc,r0
opPUSHareg r2
;@ read new pc from vector address
.if UPDATE_CONTEXT
str z80pc,[cpucontext,#z80pc_pointer]
.endif
mov r0,#0x66
.if DRZ80_XMAP
rebasepc
.else
stmfd sp!,{r3,r12}
mov lr,pc
ldr pc,[cpucontext,#z80_rebasePC] ;@ r0=new pc - external function sets z80pc_base and returns new z80pc in r0
ldmfd sp!,{r3,r12}
mov z80pc,r0
.endif
ldrh r0,[cpucontext,#z80irq] @ 0x4C, irq and IFF bits
eatcycles 11
ldmfd sp!,{pc}
.data
.align 4
DAATable: .hword (0x00<<8)|(1<<ZFlag)|(1<<VFlag)
.hword (0x01<<8)
.hword (0x02<<8)
.hword (0x03<<8) |(1<<VFlag)
.hword (0x04<<8)
.hword (0x05<<8) |(1<<VFlag)
.hword (0x06<<8) |(1<<VFlag)
.hword (0x07<<8)
.hword (0x08<<8)
.hword (0x09<<8) |(1<<VFlag)
.hword (0x10<<8) |(1<<HFlag)
.hword (0x11<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x12<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x13<<8) |(1<<HFlag)
.hword (0x14<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x15<<8) |(1<<HFlag)
.hword (0x10<<8)
.hword (0x11<<8) |(1<<VFlag)
.hword (0x12<<8) |(1<<VFlag)
.hword (0x13<<8)
.hword (0x14<<8) |(1<<VFlag)
.hword (0x15<<8)
.hword (0x16<<8)
.hword (0x17<<8) |(1<<VFlag)
.hword (0x18<<8) |(1<<VFlag)
.hword (0x19<<8)
.hword (0x20<<8) |(1<<HFlag)
.hword (0x21<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x22<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x23<<8) |(1<<HFlag)
.hword (0x24<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x25<<8) |(1<<HFlag)
.hword (0x20<<8)
.hword (0x21<<8) |(1<<VFlag)
.hword (0x22<<8) |(1<<VFlag)
.hword (0x23<<8)
.hword (0x24<<8) |(1<<VFlag)
.hword (0x25<<8)
.hword (0x26<<8)
.hword (0x27<<8) |(1<<VFlag)
.hword (0x28<<8) |(1<<VFlag)
.hword (0x29<<8)
.hword (0x30<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x31<<8) |(1<<HFlag)
.hword (0x32<<8) |(1<<HFlag)
.hword (0x33<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x34<<8) |(1<<HFlag)
.hword (0x35<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x30<<8) |(1<<VFlag)
.hword (0x31<<8)
.hword (0x32<<8)
.hword (0x33<<8) |(1<<VFlag)
.hword (0x34<<8)
.hword (0x35<<8) |(1<<VFlag)
.hword (0x36<<8) |(1<<VFlag)
.hword (0x37<<8)
.hword (0x38<<8)
.hword (0x39<<8) |(1<<VFlag)
.hword (0x40<<8) |(1<<HFlag)
.hword (0x41<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x42<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x43<<8) |(1<<HFlag)
.hword (0x44<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x45<<8) |(1<<HFlag)
.hword (0x40<<8)
.hword (0x41<<8) |(1<<VFlag)
.hword (0x42<<8) |(1<<VFlag)
.hword (0x43<<8)
.hword (0x44<<8) |(1<<VFlag)
.hword (0x45<<8)
.hword (0x46<<8)
.hword (0x47<<8) |(1<<VFlag)
.hword (0x48<<8) |(1<<VFlag)
.hword (0x49<<8)
.hword (0x50<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x51<<8) |(1<<HFlag)
.hword (0x52<<8) |(1<<HFlag)
.hword (0x53<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x54<<8) |(1<<HFlag)
.hword (0x55<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x50<<8) |(1<<VFlag)
.hword (0x51<<8)
.hword (0x52<<8)
.hword (0x53<<8) |(1<<VFlag)
.hword (0x54<<8)
.hword (0x55<<8) |(1<<VFlag)
.hword (0x56<<8) |(1<<VFlag)
.hword (0x57<<8)
.hword (0x58<<8)
.hword (0x59<<8) |(1<<VFlag)
.hword (0x60<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x61<<8) |(1<<HFlag)
.hword (0x62<<8) |(1<<HFlag)
.hword (0x63<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x64<<8) |(1<<HFlag)
.hword (0x65<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x60<<8) |(1<<VFlag)
.hword (0x61<<8)
.hword (0x62<<8)
.hword (0x63<<8) |(1<<VFlag)
.hword (0x64<<8)
.hword (0x65<<8) |(1<<VFlag)
.hword (0x66<<8) |(1<<VFlag)
.hword (0x67<<8)
.hword (0x68<<8)
.hword (0x69<<8) |(1<<VFlag)
.hword (0x70<<8) |(1<<HFlag)
.hword (0x71<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x72<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x73<<8) |(1<<HFlag)
.hword (0x74<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x75<<8) |(1<<HFlag)
.hword (0x70<<8)
.hword (0x71<<8) |(1<<VFlag)
.hword (0x72<<8) |(1<<VFlag)
.hword (0x73<<8)
.hword (0x74<<8) |(1<<VFlag)
.hword (0x75<<8)
.hword (0x76<<8)
.hword (0x77<<8) |(1<<VFlag)
.hword (0x78<<8) |(1<<VFlag)
.hword (0x79<<8)
.hword (0x80<<8)|(1<<SFlag) |(1<<HFlag)
.hword (0x81<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag)
.hword (0x82<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag)
.hword (0x83<<8)|(1<<SFlag) |(1<<HFlag)
.hword (0x84<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag)
.hword (0x85<<8)|(1<<SFlag) |(1<<HFlag)
.hword (0x80<<8)|(1<<SFlag)
.hword (0x81<<8)|(1<<SFlag) |(1<<VFlag)
.hword (0x82<<8)|(1<<SFlag) |(1<<VFlag)
.hword (0x83<<8)|(1<<SFlag)
.hword (0x84<<8)|(1<<SFlag) |(1<<VFlag)
.hword (0x85<<8)|(1<<SFlag)
.hword (0x86<<8)|(1<<SFlag)
.hword (0x87<<8)|(1<<SFlag) |(1<<VFlag)
.hword (0x88<<8)|(1<<SFlag) |(1<<VFlag)
.hword (0x89<<8)|(1<<SFlag)
.hword (0x90<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag)
.hword (0x91<<8)|(1<<SFlag) |(1<<HFlag)
.hword (0x92<<8)|(1<<SFlag) |(1<<HFlag)
.hword (0x93<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag)
.hword (0x94<<8)|(1<<SFlag) |(1<<HFlag)
.hword (0x95<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag)
.hword (0x90<<8)|(1<<SFlag) |(1<<VFlag)
.hword (0x91<<8)|(1<<SFlag)
.hword (0x92<<8)|(1<<SFlag)
.hword (0x93<<8)|(1<<SFlag) |(1<<VFlag)
.hword (0x94<<8)|(1<<SFlag)
.hword (0x95<<8)|(1<<SFlag) |(1<<VFlag)
.hword (0x96<<8)|(1<<SFlag) |(1<<VFlag)
.hword (0x97<<8)|(1<<SFlag)
.hword (0x98<<8)|(1<<SFlag)
.hword (0x99<<8)|(1<<SFlag) |(1<<VFlag)
.hword (0x00<<8) |(1<<ZFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x01<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x02<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x03<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x04<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x05<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x00<<8) |(1<<ZFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x01<<8) |(1<<CFlag)
.hword (0x02<<8) |(1<<CFlag)
.hword (0x03<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x04<<8) |(1<<CFlag)
.hword (0x05<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x06<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x07<<8) |(1<<CFlag)
.hword (0x08<<8) |(1<<CFlag)
.hword (0x09<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x10<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x11<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x12<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x13<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x14<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x15<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x10<<8) |(1<<CFlag)
.hword (0x11<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x12<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x13<<8) |(1<<CFlag)
.hword (0x14<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x15<<8) |(1<<CFlag)
.hword (0x16<<8) |(1<<CFlag)
.hword (0x17<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x18<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x19<<8) |(1<<CFlag)
.hword (0x20<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x21<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x22<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x23<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x24<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x25<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x20<<8) |(1<<CFlag)
.hword (0x21<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x22<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x23<<8) |(1<<CFlag)
.hword (0x24<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x25<<8) |(1<<CFlag)
.hword (0x26<<8) |(1<<CFlag)
.hword (0x27<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x28<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x29<<8) |(1<<CFlag)
.hword (0x30<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x31<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x32<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x33<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x34<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x35<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x30<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x31<<8) |(1<<CFlag)
.hword (0x32<<8) |(1<<CFlag)
.hword (0x33<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x34<<8) |(1<<CFlag)
.hword (0x35<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x36<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x37<<8) |(1<<CFlag)
.hword (0x38<<8) |(1<<CFlag)
.hword (0x39<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x40<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x41<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x42<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x43<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x44<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x45<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x40<<8) |(1<<CFlag)
.hword (0x41<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x42<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x43<<8) |(1<<CFlag)
.hword (0x44<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x45<<8) |(1<<CFlag)
.hword (0x46<<8) |(1<<CFlag)
.hword (0x47<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x48<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x49<<8) |(1<<CFlag)
.hword (0x50<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x51<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x52<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x53<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x54<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x55<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x50<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x51<<8) |(1<<CFlag)
.hword (0x52<<8) |(1<<CFlag)
.hword (0x53<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x54<<8) |(1<<CFlag)
.hword (0x55<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x56<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x57<<8) |(1<<CFlag)
.hword (0x58<<8) |(1<<CFlag)
.hword (0x59<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x60<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x61<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x62<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x63<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x64<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x65<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x60<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x61<<8) |(1<<CFlag)
.hword (0x62<<8) |(1<<CFlag)
.hword (0x63<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x64<<8) |(1<<CFlag)
.hword (0x65<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x66<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x67<<8) |(1<<CFlag)
.hword (0x68<<8) |(1<<CFlag)
.hword (0x69<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x70<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x71<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x72<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x73<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x74<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x75<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x70<<8) |(1<<CFlag)
.hword (0x71<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x72<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x73<<8) |(1<<CFlag)
.hword (0x74<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x75<<8) |(1<<CFlag)
.hword (0x76<<8) |(1<<CFlag)
.hword (0x77<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x78<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x79<<8) |(1<<CFlag)
.hword (0x80<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0x81<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x82<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x83<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0x84<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x85<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0x80<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0x81<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x82<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x83<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0x84<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x85<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0x86<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0x87<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x88<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x89<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0x90<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x91<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0x92<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0x93<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x94<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0x95<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x90<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x91<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0x92<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0x93<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x94<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0x95<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x96<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x97<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0x98<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0x99<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xA0<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xA1<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xA2<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xA3<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xA4<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xA5<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xA0<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xA1<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xA2<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xA3<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xA4<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xA5<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xA6<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xA7<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xA8<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xA9<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xB0<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xB1<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xB2<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xB3<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xB4<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xB5<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xB0<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xB1<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xB2<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xB3<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xB4<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xB5<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xB6<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xB7<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xB8<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xB9<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xC0<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xC1<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xC2<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xC3<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xC4<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xC5<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xC0<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xC1<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xC2<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xC3<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xC4<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xC5<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xC6<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xC7<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xC8<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xC9<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xD0<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xD1<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xD2<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xD3<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xD4<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xD5<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xD0<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xD1<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xD2<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xD3<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xD4<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xD5<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xD6<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xD7<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xD8<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xD9<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xE0<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xE1<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xE2<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xE3<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xE4<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xE5<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xE0<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xE1<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xE2<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xE3<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xE4<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xE5<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xE6<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xE7<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xE8<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xE9<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xF0<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xF1<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xF2<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xF3<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xF4<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xF5<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xF0<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xF1<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xF2<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xF3<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xF4<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xF5<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xF6<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xF7<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xF8<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xF9<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x00<<8) |(1<<ZFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x01<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x02<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x03<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x04<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x05<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x00<<8) |(1<<ZFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x01<<8) |(1<<CFlag)
.hword (0x02<<8) |(1<<CFlag)
.hword (0x03<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x04<<8) |(1<<CFlag)
.hword (0x05<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x06<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x07<<8) |(1<<CFlag)
.hword (0x08<<8) |(1<<CFlag)
.hword (0x09<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x10<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x11<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x12<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x13<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x14<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x15<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x10<<8) |(1<<CFlag)
.hword (0x11<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x12<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x13<<8) |(1<<CFlag)
.hword (0x14<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x15<<8) |(1<<CFlag)
.hword (0x16<<8) |(1<<CFlag)
.hword (0x17<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x18<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x19<<8) |(1<<CFlag)
.hword (0x20<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x21<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x22<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x23<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x24<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x25<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x20<<8) |(1<<CFlag)
.hword (0x21<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x22<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x23<<8) |(1<<CFlag)
.hword (0x24<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x25<<8) |(1<<CFlag)
.hword (0x26<<8) |(1<<CFlag)
.hword (0x27<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x28<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x29<<8) |(1<<CFlag)
.hword (0x30<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x31<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x32<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x33<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x34<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x35<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x30<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x31<<8) |(1<<CFlag)
.hword (0x32<<8) |(1<<CFlag)
.hword (0x33<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x34<<8) |(1<<CFlag)
.hword (0x35<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x36<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x37<<8) |(1<<CFlag)
.hword (0x38<<8) |(1<<CFlag)
.hword (0x39<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x40<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x41<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x42<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x43<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x44<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x45<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x40<<8) |(1<<CFlag)
.hword (0x41<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x42<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x43<<8) |(1<<CFlag)
.hword (0x44<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x45<<8) |(1<<CFlag)
.hword (0x46<<8) |(1<<CFlag)
.hword (0x47<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x48<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x49<<8) |(1<<CFlag)
.hword (0x50<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x51<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x52<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x53<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x54<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x55<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x50<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x51<<8) |(1<<CFlag)
.hword (0x52<<8) |(1<<CFlag)
.hword (0x53<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x54<<8) |(1<<CFlag)
.hword (0x55<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x56<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x57<<8) |(1<<CFlag)
.hword (0x58<<8) |(1<<CFlag)
.hword (0x59<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x60<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x61<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x62<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x63<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x64<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x65<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x06<<8) |(1<<VFlag)
.hword (0x07<<8)
.hword (0x08<<8)
.hword (0x09<<8) |(1<<VFlag)
.hword (0x0A<<8) |(1<<VFlag)
.hword (0x0B<<8)
.hword (0x0C<<8) |(1<<VFlag)
.hword (0x0D<<8)
.hword (0x0E<<8)
.hword (0x0F<<8) |(1<<VFlag)
.hword (0x10<<8) |(1<<HFlag)
.hword (0x11<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x12<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x13<<8) |(1<<HFlag)
.hword (0x14<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x15<<8) |(1<<HFlag)
.hword (0x16<<8)
.hword (0x17<<8) |(1<<VFlag)
.hword (0x18<<8) |(1<<VFlag)
.hword (0x19<<8)
.hword (0x1A<<8)
.hword (0x1B<<8) |(1<<VFlag)
.hword (0x1C<<8)
.hword (0x1D<<8) |(1<<VFlag)
.hword (0x1E<<8) |(1<<VFlag)
.hword (0x1F<<8)
.hword (0x20<<8) |(1<<HFlag)
.hword (0x21<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x22<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x23<<8) |(1<<HFlag)
.hword (0x24<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x25<<8) |(1<<HFlag)
.hword (0x26<<8)
.hword (0x27<<8) |(1<<VFlag)
.hword (0x28<<8) |(1<<VFlag)
.hword (0x29<<8)
.hword (0x2A<<8)
.hword (0x2B<<8) |(1<<VFlag)
.hword (0x2C<<8)
.hword (0x2D<<8) |(1<<VFlag)
.hword (0x2E<<8) |(1<<VFlag)
.hword (0x2F<<8)
.hword (0x30<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x31<<8) |(1<<HFlag)
.hword (0x32<<8) |(1<<HFlag)
.hword (0x33<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x34<<8) |(1<<HFlag)
.hword (0x35<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x36<<8) |(1<<VFlag)
.hword (0x37<<8)
.hword (0x38<<8)
.hword (0x39<<8) |(1<<VFlag)
.hword (0x3A<<8) |(1<<VFlag)
.hword (0x3B<<8)
.hword (0x3C<<8) |(1<<VFlag)
.hword (0x3D<<8)
.hword (0x3E<<8)
.hword (0x3F<<8) |(1<<VFlag)
.hword (0x40<<8) |(1<<HFlag)
.hword (0x41<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x42<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x43<<8) |(1<<HFlag)
.hword (0x44<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x45<<8) |(1<<HFlag)
.hword (0x46<<8)
.hword (0x47<<8) |(1<<VFlag)
.hword (0x48<<8) |(1<<VFlag)
.hword (0x49<<8)
.hword (0x4A<<8)
.hword (0x4B<<8) |(1<<VFlag)
.hword (0x4C<<8)
.hword (0x4D<<8) |(1<<VFlag)
.hword (0x4E<<8) |(1<<VFlag)
.hword (0x4F<<8)
.hword (0x50<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x51<<8) |(1<<HFlag)
.hword (0x52<<8) |(1<<HFlag)
.hword (0x53<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x54<<8) |(1<<HFlag)
.hword (0x55<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x56<<8) |(1<<VFlag)
.hword (0x57<<8)
.hword (0x58<<8)
.hword (0x59<<8) |(1<<VFlag)
.hword (0x5A<<8) |(1<<VFlag)
.hword (0x5B<<8)
.hword (0x5C<<8) |(1<<VFlag)
.hword (0x5D<<8)
.hword (0x5E<<8)
.hword (0x5F<<8) |(1<<VFlag)
.hword (0x60<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x61<<8) |(1<<HFlag)
.hword (0x62<<8) |(1<<HFlag)
.hword (0x63<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x64<<8) |(1<<HFlag)
.hword (0x65<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x66<<8) |(1<<VFlag)
.hword (0x67<<8)
.hword (0x68<<8)
.hword (0x69<<8) |(1<<VFlag)
.hword (0x6A<<8) |(1<<VFlag)
.hword (0x6B<<8)
.hword (0x6C<<8) |(1<<VFlag)
.hword (0x6D<<8)
.hword (0x6E<<8)
.hword (0x6F<<8) |(1<<VFlag)
.hword (0x70<<8) |(1<<HFlag)
.hword (0x71<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x72<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x73<<8) |(1<<HFlag)
.hword (0x74<<8) |(1<<HFlag) |(1<<VFlag)
.hword (0x75<<8) |(1<<HFlag)
.hword (0x76<<8)
.hword (0x77<<8) |(1<<VFlag)
.hword (0x78<<8) |(1<<VFlag)
.hword (0x79<<8)
.hword (0x7A<<8)
.hword (0x7B<<8) |(1<<VFlag)
.hword (0x7C<<8)
.hword (0x7D<<8) |(1<<VFlag)
.hword (0x7E<<8) |(1<<VFlag)
.hword (0x7F<<8)
.hword (0x80<<8)|(1<<SFlag) |(1<<HFlag)
.hword (0x81<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag)
.hword (0x82<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag)
.hword (0x83<<8)|(1<<SFlag) |(1<<HFlag)
.hword (0x84<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag)
.hword (0x85<<8)|(1<<SFlag) |(1<<HFlag)
.hword (0x86<<8)|(1<<SFlag)
.hword (0x87<<8)|(1<<SFlag) |(1<<VFlag)
.hword (0x88<<8)|(1<<SFlag) |(1<<VFlag)
.hword (0x89<<8)|(1<<SFlag)
.hword (0x8A<<8)|(1<<SFlag)
.hword (0x8B<<8)|(1<<SFlag) |(1<<VFlag)
.hword (0x8C<<8)|(1<<SFlag)
.hword (0x8D<<8)|(1<<SFlag) |(1<<VFlag)
.hword (0x8E<<8)|(1<<SFlag) |(1<<VFlag)
.hword (0x8F<<8)|(1<<SFlag)
.hword (0x90<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag)
.hword (0x91<<8)|(1<<SFlag) |(1<<HFlag)
.hword (0x92<<8)|(1<<SFlag) |(1<<HFlag)
.hword (0x93<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag)
.hword (0x94<<8)|(1<<SFlag) |(1<<HFlag)
.hword (0x95<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag)
.hword (0x96<<8)|(1<<SFlag) |(1<<VFlag)
.hword (0x97<<8)|(1<<SFlag)
.hword (0x98<<8)|(1<<SFlag)
.hword (0x99<<8)|(1<<SFlag) |(1<<VFlag)
.hword (0x9A<<8)|(1<<SFlag) |(1<<VFlag)
.hword (0x9B<<8)|(1<<SFlag)
.hword (0x9C<<8)|(1<<SFlag) |(1<<VFlag)
.hword (0x9D<<8)|(1<<SFlag)
.hword (0x9E<<8)|(1<<SFlag)
.hword (0x9F<<8)|(1<<SFlag) |(1<<VFlag)
.hword (0x00<<8) |(1<<ZFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x01<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x02<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x03<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x04<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x05<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x06<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x07<<8) |(1<<CFlag)
.hword (0x08<<8) |(1<<CFlag)
.hword (0x09<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x0A<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x0B<<8) |(1<<CFlag)
.hword (0x0C<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x0D<<8) |(1<<CFlag)
.hword (0x0E<<8) |(1<<CFlag)
.hword (0x0F<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x10<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x11<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x12<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x13<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x14<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x15<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x16<<8) |(1<<CFlag)
.hword (0x17<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x18<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x19<<8) |(1<<CFlag)
.hword (0x1A<<8) |(1<<CFlag)
.hword (0x1B<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x1C<<8) |(1<<CFlag)
.hword (0x1D<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x1E<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x1F<<8) |(1<<CFlag)
.hword (0x20<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x21<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x22<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x23<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x24<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x25<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x26<<8) |(1<<CFlag)
.hword (0x27<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x28<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x29<<8) |(1<<CFlag)
.hword (0x2A<<8) |(1<<CFlag)
.hword (0x2B<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x2C<<8) |(1<<CFlag)
.hword (0x2D<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x2E<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x2F<<8) |(1<<CFlag)
.hword (0x30<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x31<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x32<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x33<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x34<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x35<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x36<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x37<<8) |(1<<CFlag)
.hword (0x38<<8) |(1<<CFlag)
.hword (0x39<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x3A<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x3B<<8) |(1<<CFlag)
.hword (0x3C<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x3D<<8) |(1<<CFlag)
.hword (0x3E<<8) |(1<<CFlag)
.hword (0x3F<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x40<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x41<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x42<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x43<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x44<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x45<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x46<<8) |(1<<CFlag)
.hword (0x47<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x48<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x49<<8) |(1<<CFlag)
.hword (0x4A<<8) |(1<<CFlag)
.hword (0x4B<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x4C<<8) |(1<<CFlag)
.hword (0x4D<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x4E<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x4F<<8) |(1<<CFlag)
.hword (0x50<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x51<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x52<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x53<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x54<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x55<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x56<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x57<<8) |(1<<CFlag)
.hword (0x58<<8) |(1<<CFlag)
.hword (0x59<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x5A<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x5B<<8) |(1<<CFlag)
.hword (0x5C<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x5D<<8) |(1<<CFlag)
.hword (0x5E<<8) |(1<<CFlag)
.hword (0x5F<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x60<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x61<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x62<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x63<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x64<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x65<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x66<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x67<<8) |(1<<CFlag)
.hword (0x68<<8) |(1<<CFlag)
.hword (0x69<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x6A<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x6B<<8) |(1<<CFlag)
.hword (0x6C<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x6D<<8) |(1<<CFlag)
.hword (0x6E<<8) |(1<<CFlag)
.hword (0x6F<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x70<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x71<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x72<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x73<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x74<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x75<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x76<<8) |(1<<CFlag)
.hword (0x77<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x78<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x79<<8) |(1<<CFlag)
.hword (0x7A<<8) |(1<<CFlag)
.hword (0x7B<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x7C<<8) |(1<<CFlag)
.hword (0x7D<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x7E<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x7F<<8) |(1<<CFlag)
.hword (0x80<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0x81<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x82<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x83<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0x84<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x85<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0x86<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0x87<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x88<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x89<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0x8A<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0x8B<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x8C<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0x8D<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x8E<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x8F<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0x90<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x91<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0x92<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0x93<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x94<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0x95<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x96<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x97<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0x98<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0x99<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x9A<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x9B<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0x9C<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x9D<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0x9E<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0x9F<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xA0<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xA1<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xA2<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xA3<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xA4<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xA5<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xA6<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xA7<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xA8<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xA9<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xAA<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xAB<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xAC<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xAD<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xAE<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xAF<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xB0<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xB1<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xB2<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xB3<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xB4<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xB5<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xB6<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xB7<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xB8<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xB9<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xBA<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xBB<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xBC<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xBD<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xBE<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xBF<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xC0<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xC1<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xC2<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xC3<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xC4<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xC5<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xC6<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xC7<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xC8<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xC9<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xCA<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xCB<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xCC<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xCD<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xCE<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xCF<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xD0<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xD1<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xD2<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xD3<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xD4<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xD5<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xD6<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xD7<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xD8<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xD9<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xDA<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xDB<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xDC<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xDD<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xDE<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xDF<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xE0<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xE1<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xE2<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xE3<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xE4<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xE5<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xE6<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xE7<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xE8<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xE9<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xEA<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xEB<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xEC<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xED<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xEE<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xEF<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xF0<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xF1<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xF2<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xF3<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xF4<<8)|(1<<SFlag) |(1<<HFlag) |(1<<CFlag)
.hword (0xF5<<8)|(1<<SFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xF6<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xF7<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xF8<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xF9<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xFA<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xFB<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xFC<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0xFD<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xFE<<8)|(1<<SFlag) |(1<<CFlag)
.hword (0xFF<<8)|(1<<SFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x00<<8) |(1<<ZFlag) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x01<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x02<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x03<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x04<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x05<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x06<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x07<<8) |(1<<CFlag)
.hword (0x08<<8) |(1<<CFlag)
.hword (0x09<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x0A<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x0B<<8) |(1<<CFlag)
.hword (0x0C<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x0D<<8) |(1<<CFlag)
.hword (0x0E<<8) |(1<<CFlag)
.hword (0x0F<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x10<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x11<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x12<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x13<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x14<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x15<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x16<<8) |(1<<CFlag)
.hword (0x17<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x18<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x19<<8) |(1<<CFlag)
.hword (0x1A<<8) |(1<<CFlag)
.hword (0x1B<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x1C<<8) |(1<<CFlag)
.hword (0x1D<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x1E<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x1F<<8) |(1<<CFlag)
.hword (0x20<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x21<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x22<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x23<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x24<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x25<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x26<<8) |(1<<CFlag)
.hword (0x27<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x28<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x29<<8) |(1<<CFlag)
.hword (0x2A<<8) |(1<<CFlag)
.hword (0x2B<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x2C<<8) |(1<<CFlag)
.hword (0x2D<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x2E<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x2F<<8) |(1<<CFlag)
.hword (0x30<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x31<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x32<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x33<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x34<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x35<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x36<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x37<<8) |(1<<CFlag)
.hword (0x38<<8) |(1<<CFlag)
.hword (0x39<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x3A<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x3B<<8) |(1<<CFlag)
.hword (0x3C<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x3D<<8) |(1<<CFlag)
.hword (0x3E<<8) |(1<<CFlag)
.hword (0x3F<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x40<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x41<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x42<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x43<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x44<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x45<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x46<<8) |(1<<CFlag)
.hword (0x47<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x48<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x49<<8) |(1<<CFlag)
.hword (0x4A<<8) |(1<<CFlag)
.hword (0x4B<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x4C<<8) |(1<<CFlag)
.hword (0x4D<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x4E<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x4F<<8) |(1<<CFlag)
.hword (0x50<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x51<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x52<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x53<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x54<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x55<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x56<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x57<<8) |(1<<CFlag)
.hword (0x58<<8) |(1<<CFlag)
.hword (0x59<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x5A<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x5B<<8) |(1<<CFlag)
.hword (0x5C<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x5D<<8) |(1<<CFlag)
.hword (0x5E<<8) |(1<<CFlag)
.hword (0x5F<<8) |(1<<VFlag) |(1<<CFlag)
.hword (0x60<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x61<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x62<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x63<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x64<<8) |(1<<HFlag) |(1<<CFlag)
.hword (0x65<<8) |(1<<HFlag) |(1<<VFlag) |(1<<CFlag)
.hword (0x00<<8) |(1<<ZFlag) |(1<<VFlag)|(1<<NFlag)
.hword (0x01<<8) |(1<<NFlag)
.hword (0x02<<8) |(1<<NFlag)
.hword (0x03<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x04<<8) |(1<<NFlag)
.hword (0x05<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x06<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x07<<8) |(1<<NFlag)
.hword (0x08<<8) |(1<<NFlag)
.hword (0x09<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x04<<8) |(1<<NFlag)
.hword (0x05<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x06<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x07<<8) |(1<<NFlag)
.hword (0x08<<8) |(1<<NFlag)
.hword (0x09<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x10<<8) |(1<<NFlag)
.hword (0x11<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x12<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x13<<8) |(1<<NFlag)
.hword (0x14<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x15<<8) |(1<<NFlag)
.hword (0x16<<8) |(1<<NFlag)
.hword (0x17<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x18<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x19<<8) |(1<<NFlag)
.hword (0x14<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x15<<8) |(1<<NFlag)
.hword (0x16<<8) |(1<<NFlag)
.hword (0x17<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x18<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x19<<8) |(1<<NFlag)
.hword (0x20<<8) |(1<<NFlag)
.hword (0x21<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x22<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x23<<8) |(1<<NFlag)
.hword (0x24<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x25<<8) |(1<<NFlag)
.hword (0x26<<8) |(1<<NFlag)
.hword (0x27<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x28<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x29<<8) |(1<<NFlag)
.hword (0x24<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x25<<8) |(1<<NFlag)
.hword (0x26<<8) |(1<<NFlag)
.hword (0x27<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x28<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x29<<8) |(1<<NFlag)
.hword (0x30<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x31<<8) |(1<<NFlag)
.hword (0x32<<8) |(1<<NFlag)
.hword (0x33<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x34<<8) |(1<<NFlag)
.hword (0x35<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x36<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x37<<8) |(1<<NFlag)
.hword (0x38<<8) |(1<<NFlag)
.hword (0x39<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x34<<8) |(1<<NFlag)
.hword (0x35<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x36<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x37<<8) |(1<<NFlag)
.hword (0x38<<8) |(1<<NFlag)
.hword (0x39<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x40<<8) |(1<<NFlag)
.hword (0x41<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x42<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x43<<8) |(1<<NFlag)
.hword (0x44<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x45<<8) |(1<<NFlag)
.hword (0x46<<8) |(1<<NFlag)
.hword (0x47<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x48<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x49<<8) |(1<<NFlag)
.hword (0x44<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x45<<8) |(1<<NFlag)
.hword (0x46<<8) |(1<<NFlag)
.hword (0x47<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x48<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x49<<8) |(1<<NFlag)
.hword (0x50<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x51<<8) |(1<<NFlag)
.hword (0x52<<8) |(1<<NFlag)
.hword (0x53<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x54<<8) |(1<<NFlag)
.hword (0x55<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x56<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x57<<8) |(1<<NFlag)
.hword (0x58<<8) |(1<<NFlag)
.hword (0x59<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x54<<8) |(1<<NFlag)
.hword (0x55<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x56<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x57<<8) |(1<<NFlag)
.hword (0x58<<8) |(1<<NFlag)
.hword (0x59<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x60<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x61<<8) |(1<<NFlag)
.hword (0x62<<8) |(1<<NFlag)
.hword (0x63<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x64<<8) |(1<<NFlag)
.hword (0x65<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x66<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x67<<8) |(1<<NFlag)
.hword (0x68<<8) |(1<<NFlag)
.hword (0x69<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x64<<8) |(1<<NFlag)
.hword (0x65<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x66<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x67<<8) |(1<<NFlag)
.hword (0x68<<8) |(1<<NFlag)
.hword (0x69<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x70<<8) |(1<<NFlag)
.hword (0x71<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x72<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x73<<8) |(1<<NFlag)
.hword (0x74<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x75<<8) |(1<<NFlag)
.hword (0x76<<8) |(1<<NFlag)
.hword (0x77<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x78<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x79<<8) |(1<<NFlag)
.hword (0x74<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x75<<8) |(1<<NFlag)
.hword (0x76<<8) |(1<<NFlag)
.hword (0x77<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x78<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x79<<8) |(1<<NFlag)
.hword (0x80<<8)|(1<<SFlag) |(1<<NFlag)
.hword (0x81<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)
.hword (0x82<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)
.hword (0x83<<8)|(1<<SFlag) |(1<<NFlag)
.hword (0x84<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)
.hword (0x85<<8)|(1<<SFlag) |(1<<NFlag)
.hword (0x86<<8)|(1<<SFlag) |(1<<NFlag)
.hword (0x87<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)
.hword (0x88<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)
.hword (0x89<<8)|(1<<SFlag) |(1<<NFlag)
.hword (0x84<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)
.hword (0x85<<8)|(1<<SFlag) |(1<<NFlag)
.hword (0x86<<8)|(1<<SFlag) |(1<<NFlag)
.hword (0x87<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)
.hword (0x88<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)
.hword (0x89<<8)|(1<<SFlag) |(1<<NFlag)
.hword (0x90<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)
.hword (0x91<<8)|(1<<SFlag) |(1<<NFlag)
.hword (0x92<<8)|(1<<SFlag) |(1<<NFlag)
.hword (0x93<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)
.hword (0x94<<8)|(1<<SFlag) |(1<<NFlag)
.hword (0x95<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)
.hword (0x96<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)
.hword (0x97<<8)|(1<<SFlag) |(1<<NFlag)
.hword (0x98<<8)|(1<<SFlag) |(1<<NFlag)
.hword (0x99<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)
.hword (0x34<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x35<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x36<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x37<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x38<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x39<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x40<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x41<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x42<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x43<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x44<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x45<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x46<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x47<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x48<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x49<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x44<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x45<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x46<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x47<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x48<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x49<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x50<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x51<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x52<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x53<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x54<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x55<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x56<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x57<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x58<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x59<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x54<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x55<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x56<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x57<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x58<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x59<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x60<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x61<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x62<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x63<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x64<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x65<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x66<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x67<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x68<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x69<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x64<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x65<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x66<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x67<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x68<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x69<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x70<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x71<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x72<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x73<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x74<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x75<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x76<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x77<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x78<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x79<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x74<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x75<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x76<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x77<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x78<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x79<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x80<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x81<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x82<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x83<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x84<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x85<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x86<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x87<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x88<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x89<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x84<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x85<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x86<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x87<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x88<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x89<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x90<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x91<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x92<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x93<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x94<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x95<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x96<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x97<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x98<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x99<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x94<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x95<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x96<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x97<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x98<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x99<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xA0<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xA1<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xA2<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xA3<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xA4<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xA5<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xA6<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xA7<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xA8<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xA9<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xA4<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xA5<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xA6<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xA7<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xA8<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xA9<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xB0<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xB1<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xB2<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xB3<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xB4<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xB5<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xB6<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xB7<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xB8<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xB9<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xB4<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xB5<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xB6<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xB7<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xB8<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xB9<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xC0<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xC1<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xC2<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xC3<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xC4<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xC5<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xC6<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xC7<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xC8<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xC9<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xC4<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xC5<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xC6<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xC7<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xC8<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xC9<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xD0<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xD1<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xD2<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xD3<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xD4<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xD5<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xD6<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xD7<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xD8<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xD9<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xD4<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xD5<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xD6<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xD7<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xD8<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xD9<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xE0<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xE1<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xE2<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xE3<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xE4<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xE5<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xE6<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xE7<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xE8<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xE9<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xE4<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xE5<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xE6<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xE7<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xE8<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xE9<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xF0<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xF1<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xF2<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xF3<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xF4<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xF5<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xF6<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xF7<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xF8<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xF9<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xF4<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xF5<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xF6<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xF7<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xF8<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xF9<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x00<<8) |(1<<ZFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x01<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x02<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x03<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x04<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x05<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x06<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x07<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x08<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x09<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x04<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x05<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x06<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x07<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x08<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x09<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x10<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x11<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x12<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x13<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x14<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x15<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x16<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x17<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x18<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x19<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x14<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x15<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x16<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x17<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x18<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x19<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x20<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x21<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x22<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x23<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x24<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x25<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x26<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x27<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x28<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x29<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x24<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x25<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x26<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x27<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x28<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x29<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x30<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x31<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x32<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x33<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x34<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x35<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x36<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x37<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x38<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x39<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x34<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x35<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x36<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x37<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x38<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x39<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x40<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x41<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x42<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x43<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x44<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x45<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x46<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x47<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x48<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x49<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x44<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x45<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x46<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x47<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x48<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x49<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x50<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x51<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x52<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x53<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x54<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x55<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x56<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x57<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x58<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x59<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x54<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x55<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x56<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x57<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x58<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x59<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x60<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x61<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x62<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x63<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x64<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x65<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x66<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x67<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x68<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x69<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x64<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x65<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x66<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x67<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x68<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x69<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x70<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x71<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x72<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x73<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x74<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x75<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x76<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x77<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x78<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x79<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x74<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x75<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x76<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x77<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x78<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x79<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x80<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x81<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x82<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x83<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x84<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x85<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x86<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x87<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x88<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x89<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x84<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x85<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x86<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x87<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x88<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x89<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x90<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x91<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x92<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x93<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x94<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x95<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x96<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x97<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x98<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x99<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x94<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x95<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x96<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x97<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x98<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x99<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xFA<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)
.hword (0xFB<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)
.hword (0xFC<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)
.hword (0xFD<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)
.hword (0xFE<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)
.hword (0xFF<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)
.hword (0x00<<8) |(1<<ZFlag) |(1<<VFlag)|(1<<NFlag)
.hword (0x01<<8) |(1<<NFlag)
.hword (0x02<<8) |(1<<NFlag)
.hword (0x03<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x04<<8) |(1<<NFlag)
.hword (0x05<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x06<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x07<<8) |(1<<NFlag)
.hword (0x08<<8) |(1<<NFlag)
.hword (0x09<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x0A<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)
.hword (0x0B<<8) |(1<<HFlag) |(1<<NFlag)
.hword (0x0C<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)
.hword (0x0D<<8) |(1<<HFlag) |(1<<NFlag)
.hword (0x0E<<8) |(1<<HFlag) |(1<<NFlag)
.hword (0x0F<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)
.hword (0x10<<8) |(1<<NFlag)
.hword (0x11<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x12<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x13<<8) |(1<<NFlag)
.hword (0x14<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x15<<8) |(1<<NFlag)
.hword (0x16<<8) |(1<<NFlag)
.hword (0x17<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x18<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x19<<8) |(1<<NFlag)
.hword (0x1A<<8) |(1<<HFlag) |(1<<NFlag)
.hword (0x1B<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)
.hword (0x1C<<8) |(1<<HFlag) |(1<<NFlag)
.hword (0x1D<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)
.hword (0x1E<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)
.hword (0x1F<<8) |(1<<HFlag) |(1<<NFlag)
.hword (0x20<<8) |(1<<NFlag)
.hword (0x21<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x22<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x23<<8) |(1<<NFlag)
.hword (0x24<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x25<<8) |(1<<NFlag)
.hword (0x26<<8) |(1<<NFlag)
.hword (0x27<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x28<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x29<<8) |(1<<NFlag)
.hword (0x2A<<8) |(1<<HFlag) |(1<<NFlag)
.hword (0x2B<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)
.hword (0x2C<<8) |(1<<HFlag) |(1<<NFlag)
.hword (0x2D<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)
.hword (0x2E<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)
.hword (0x2F<<8) |(1<<HFlag) |(1<<NFlag)
.hword (0x30<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x31<<8) |(1<<NFlag)
.hword (0x32<<8) |(1<<NFlag)
.hword (0x33<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x34<<8) |(1<<NFlag)
.hword (0x35<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x36<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x37<<8) |(1<<NFlag)
.hword (0x38<<8) |(1<<NFlag)
.hword (0x39<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x3A<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)
.hword (0x3B<<8) |(1<<HFlag) |(1<<NFlag)
.hword (0x3C<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)
.hword (0x3D<<8) |(1<<HFlag) |(1<<NFlag)
.hword (0x3E<<8) |(1<<HFlag) |(1<<NFlag)
.hword (0x3F<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)
.hword (0x40<<8) |(1<<NFlag)
.hword (0x41<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x42<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x43<<8) |(1<<NFlag)
.hword (0x44<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x45<<8) |(1<<NFlag)
.hword (0x46<<8) |(1<<NFlag)
.hword (0x47<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x48<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x49<<8) |(1<<NFlag)
.hword (0x4A<<8) |(1<<HFlag) |(1<<NFlag)
.hword (0x4B<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)
.hword (0x4C<<8) |(1<<HFlag) |(1<<NFlag)
.hword (0x4D<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)
.hword (0x4E<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)
.hword (0x4F<<8) |(1<<HFlag) |(1<<NFlag)
.hword (0x50<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x51<<8) |(1<<NFlag)
.hword (0x52<<8) |(1<<NFlag)
.hword (0x53<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x54<<8) |(1<<NFlag)
.hword (0x55<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x56<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x57<<8) |(1<<NFlag)
.hword (0x58<<8) |(1<<NFlag)
.hword (0x59<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x5A<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)
.hword (0x5B<<8) |(1<<HFlag) |(1<<NFlag)
.hword (0x5C<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)
.hword (0x5D<<8) |(1<<HFlag) |(1<<NFlag)
.hword (0x5E<<8) |(1<<HFlag) |(1<<NFlag)
.hword (0x5F<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)
.hword (0x60<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x61<<8) |(1<<NFlag)
.hword (0x62<<8) |(1<<NFlag)
.hword (0x63<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x64<<8) |(1<<NFlag)
.hword (0x65<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x66<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x67<<8) |(1<<NFlag)
.hword (0x68<<8) |(1<<NFlag)
.hword (0x69<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x6A<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)
.hword (0x6B<<8) |(1<<HFlag) |(1<<NFlag)
.hword (0x6C<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)
.hword (0x6D<<8) |(1<<HFlag) |(1<<NFlag)
.hword (0x6E<<8) |(1<<HFlag) |(1<<NFlag)
.hword (0x6F<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)
.hword (0x70<<8) |(1<<NFlag)
.hword (0x71<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x72<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x73<<8) |(1<<NFlag)
.hword (0x74<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x75<<8) |(1<<NFlag)
.hword (0x76<<8) |(1<<NFlag)
.hword (0x77<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x78<<8) |(1<<VFlag)|(1<<NFlag)
.hword (0x79<<8) |(1<<NFlag)
.hword (0x7A<<8) |(1<<HFlag) |(1<<NFlag)
.hword (0x7B<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)
.hword (0x7C<<8) |(1<<HFlag) |(1<<NFlag)
.hword (0x7D<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)
.hword (0x7E<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)
.hword (0x7F<<8) |(1<<HFlag) |(1<<NFlag)
.hword (0x80<<8)|(1<<SFlag) |(1<<NFlag)
.hword (0x81<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)
.hword (0x82<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)
.hword (0x83<<8)|(1<<SFlag) |(1<<NFlag)
.hword (0x84<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)
.hword (0x85<<8)|(1<<SFlag) |(1<<NFlag)
.hword (0x86<<8)|(1<<SFlag) |(1<<NFlag)
.hword (0x87<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)
.hword (0x88<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)
.hword (0x89<<8)|(1<<SFlag) |(1<<NFlag)
.hword (0x8A<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)
.hword (0x8B<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)
.hword (0x8C<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)
.hword (0x8D<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)
.hword (0x8E<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)
.hword (0x8F<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)
.hword (0x90<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)
.hword (0x91<<8)|(1<<SFlag) |(1<<NFlag)
.hword (0x92<<8)|(1<<SFlag) |(1<<NFlag)
.hword (0x93<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)
.hword (0x34<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x35<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x36<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x37<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x38<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x39<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x3A<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x3B<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x3C<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x3D<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x3E<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x3F<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x40<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x41<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x42<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x43<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x44<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x45<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x46<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x47<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x48<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x49<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x4A<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x4B<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x4C<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x4D<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x4E<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x4F<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x50<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x51<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x52<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x53<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x54<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x55<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x56<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x57<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x58<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x59<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x5A<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x5B<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x5C<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x5D<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x5E<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x5F<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x60<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x61<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x62<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x63<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x64<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x65<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x66<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x67<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x68<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x69<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x6A<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x6B<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x6C<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x6D<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x6E<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x6F<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x70<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x71<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x72<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x73<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x74<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x75<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x76<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x77<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x78<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x79<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x7A<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x7B<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x7C<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x7D<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x7E<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x7F<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x80<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x81<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x82<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x83<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x84<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x85<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x86<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x87<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x88<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x89<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x8A<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x8B<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x8C<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x8D<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x8E<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x8F<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x90<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x91<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x92<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x93<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x94<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x95<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x96<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x97<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x98<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x99<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x9A<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x9B<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x9C<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x9D<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x9E<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x9F<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xA0<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xA1<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xA2<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xA3<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xA4<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xA5<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xA6<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xA7<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xA8<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xA9<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xAA<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xAB<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xAC<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xAD<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xAE<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xAF<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xB0<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xB1<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xB2<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xB3<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xB4<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xB5<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xB6<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xB7<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xB8<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xB9<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xBA<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xBB<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xBC<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xBD<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xBE<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xBF<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xC0<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xC1<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xC2<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xC3<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xC4<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xC5<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xC6<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xC7<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xC8<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xC9<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xCA<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xCB<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xCC<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xCD<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xCE<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xCF<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xD0<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xD1<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xD2<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xD3<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xD4<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xD5<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xD6<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xD7<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xD8<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xD9<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xDA<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xDB<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xDC<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xDD<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xDE<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xDF<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xE0<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xE1<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xE2<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xE3<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xE4<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xE5<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xE6<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xE7<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xE8<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xE9<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xEA<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xEB<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xEC<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xED<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xEE<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xEF<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xF0<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xF1<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xF2<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xF3<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xF4<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xF5<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xF6<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xF7<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xF8<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xF9<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xFA<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xFB<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xFC<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0xFD<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xFE<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0xFF<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x00<<8) |(1<<ZFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x01<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x02<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x03<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x04<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x05<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x06<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x07<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x08<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x09<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x0A<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x0B<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x0C<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x0D<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x0E<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x0F<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x10<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x11<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x12<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x13<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x14<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x15<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x16<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x17<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x18<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x19<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x1A<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x1B<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x1C<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x1D<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x1E<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x1F<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x20<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x21<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x22<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x23<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x24<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x25<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x26<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x27<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x28<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x29<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x2A<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x2B<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x2C<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x2D<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x2E<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x2F<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x30<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x31<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x32<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x33<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x34<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x35<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x36<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x37<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x38<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x39<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x3A<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x3B<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x3C<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x3D<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x3E<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x3F<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x40<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x41<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x42<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x43<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x44<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x45<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x46<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x47<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x48<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x49<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x4A<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x4B<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x4C<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x4D<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x4E<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x4F<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x50<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x51<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x52<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x53<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x54<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x55<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x56<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x57<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x58<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x59<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x5A<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x5B<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x5C<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x5D<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x5E<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x5F<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x60<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x61<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x62<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x63<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x64<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x65<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x66<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x67<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x68<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x69<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x6A<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x6B<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x6C<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x6D<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x6E<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x6F<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x70<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x71<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x72<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x73<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x74<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x75<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x76<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x77<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x78<<8) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x79<<8) |(1<<NFlag)|(1<<CFlag)
.hword (0x7A<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x7B<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x7C<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x7D<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x7E<<8) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x7F<<8) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x80<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x81<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x82<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x83<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x84<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x85<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x86<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x87<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x88<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x89<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x8A<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x8B<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x8C<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x8D<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x8E<<8)|(1<<SFlag) |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x8F<<8)|(1<<SFlag) |(1<<HFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x90<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x91<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x92<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x93<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x94<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x95<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x96<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.hword (0x97<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x98<<8)|(1<<SFlag) |(1<<NFlag)|(1<<CFlag)
.hword (0x99<<8)|(1<<SFlag) |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)
.align 4
AF_Z80: .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 0
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 1
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 2
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 3
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 4
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 5
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 6
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 7
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 8
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 9
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 10
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 11
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 12
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 13
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 14
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 15
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 16
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 17
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 18
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 19
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 20
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 21
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 22
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 23
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 24
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 25
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 26
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 27
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 28
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 29
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 30
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 31
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 32
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 33
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 34
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 35
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 36
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 37
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 38
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 39
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 40
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 41
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 42
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 43
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 44
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 45
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 46
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 47
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 48
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 49
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 50
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 51
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 52
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 53
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 54
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 55
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 56
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 57
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 58
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 59
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 60
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 61
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 62
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 63
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 64
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 65
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 66
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 67
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 68
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 69
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 70
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 71
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 72
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 73
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 74
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 75
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 76
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 77
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 78
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 79
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 80
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 81
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 82
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 83
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 84
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 85
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 86
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 87
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 88
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 89
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 90
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 91
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 92
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 93
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 94
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 95
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 96
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 97
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 98
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 99
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 100
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 101
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 102
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 103
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 104
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 105
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 106
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 107
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 108
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 109
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 110
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 111
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 112
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 113
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 114
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 115
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 116
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 117
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 118
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 119
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 120
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 121
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 122
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 123
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 124
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 125
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 126
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 127
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 128
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 129
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 130
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 131
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 132
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 133
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 134
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 135
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 136
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 137
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 138
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 139
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 140
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 141
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 142
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 143
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 144
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 145
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 146
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 147
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 148
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 149
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 150
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 151
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 152
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 153
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 154
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 155
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 156
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 157
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 158
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 159
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 160
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 161
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 162
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 163
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 164
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 165
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 166
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 167
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 168
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 169
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 170
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 171
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 172
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 173
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 174
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 175
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 176
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 177
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 178
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 179
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 180
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 181
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 182
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 183
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 184
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 185
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 186
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 187
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 188
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 189
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 190
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 191
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 192
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 193
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 194
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 195
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 196
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 197
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 198
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 199
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 200
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 201
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 202
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 203
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 204
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 205
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 206
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 207
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 208
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 209
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 210
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 211
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 212
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 213
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 214
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 215
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 216
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 217
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 218
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 219
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 220
.byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 221
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 222
.byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 223
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 224
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 225
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 226
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 227
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 228
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 229
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 230
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 231
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 232
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 233
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 234
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 235
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 236
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 237
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 238
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 239
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 240
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 241
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 242
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 243
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 244
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 245
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 246
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 247
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 248
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 249
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 250
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 251
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 252
.byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 253
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 254
.byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 255
.align 4
AF_ARM: .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 0
.byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 1
.byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 2
.byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 3
.byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 4
.byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 5
.byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 6
.byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 7
.byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 8
.byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 9
.byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 10
.byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 11
.byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 12
.byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 13
.byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 14
.byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 15
.byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 16
.byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 17
.byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 18
.byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 19
.byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 20
.byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 21
.byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 22
.byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 23
.byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 24
.byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 25
.byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 26
.byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 27
.byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 28
.byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 29
.byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 30
.byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 31
.byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 32
.byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 33
.byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 34
.byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 35
.byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 36
.byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 37
.byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 38
.byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 39
.byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 40
.byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 41
.byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 42
.byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 43
.byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 44
.byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 45
.byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 46
.byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 47
.byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 48
.byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 49
.byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 50
.byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 51
.byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 52
.byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 53
.byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 54
.byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 55
.byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 56
.byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 57
.byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 58
.byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 59
.byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 60
.byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 61
.byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 62
.byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag) ;@ 63
.byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 64
.byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 65
.byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 66
.byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 67
.byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 68
.byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 69
.byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 70
.byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 71
.byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 72
.byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 73
.byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 74
.byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 75
.byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 76
.byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 77
.byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 78
.byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 79
.byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 80
.byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 81
.byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 82
.byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 83
.byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 84
.byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 85
.byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 86
.byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 87
.byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 88
.byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 89
.byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 90
.byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 91
.byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 92
.byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 93
.byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 94
.byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 95
.byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 96
.byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 97
.byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 98
.byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 99
.byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 100
.byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 101
.byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 102
.byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 103
.byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 104
.byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 105
.byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 106
.byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 107
.byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 108
.byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 109
.byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 110
.byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 111
.byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 112
.byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 113
.byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 114
.byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 115
.byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 116
.byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 117
.byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 118
.byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 119
.byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 120
.byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 121
.byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 122
.byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 123
.byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 124
.byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 125
.byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 126
.byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag) ;@ 127
.byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 128
.byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 129
.byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 130
.byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 131
.byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 132
.byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 133
.byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 134
.byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 135
.byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 136
.byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 137
.byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 138
.byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 139
.byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 140
.byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 141
.byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 142
.byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 143
.byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 144
.byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 145
.byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 146
.byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 147
.byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 148
.byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 149
.byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 150
.byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 151
.byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 152
.byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 153
.byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 154
.byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 155
.byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 156
.byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 157
.byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 158
.byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 159
.byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 160
.byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 161
.byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 162
.byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 163
.byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 164
.byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 165
.byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 166
.byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 167
.byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 168
.byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 169
.byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 170
.byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 171
.byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 172
.byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 173
.byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 174
.byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 175
.byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 176
.byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 177
.byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 178
.byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 179
.byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 180
.byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 181
.byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 182
.byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 183
.byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 184
.byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 185
.byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 186
.byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 187
.byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 188
.byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 189
.byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 190
.byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag) ;@ 191
.byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 192
.byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 193
.byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 194
.byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 195
.byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 196
.byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 197
.byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 198
.byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 199
.byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 200
.byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 201
.byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 202
.byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 203
.byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 204
.byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 205
.byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 206
.byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 207
.byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 208
.byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 209
.byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 210
.byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 211
.byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 212
.byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 213
.byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 214
.byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 215
.byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 216
.byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 217
.byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 218
.byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 219
.byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 220
.byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 221
.byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 222
.byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 223
.byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 224
.byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 225
.byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 226
.byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 227
.byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 228
.byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 229
.byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 230
.byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 231
.byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 232
.byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 233
.byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 234
.byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 235
.byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 236
.byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 237
.byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 238
.byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 239
.byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 240
.byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 241
.byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 242
.byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 243
.byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 244
.byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 245
.byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 246
.byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 247
.byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 248
.byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 249
.byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 250
.byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 251
.byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 252
.byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 253
.byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 254
.byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag) ;@ 255
.align 4
PZSTable_data: .byte (1<<ZFlag)|(1<<VFlag),0,0,(1<<VFlag),0,(1<<VFlag),(1<<VFlag),0
.byte 0,(1<<VFlag),(1<<VFlag),0,(1<<VFlag),0,0,(1<<VFlag)
.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
.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
.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)
.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
.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)
.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)
.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
.byte (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)
.byte (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)
.byte (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)
.byte (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)
.byte (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)
.byte (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)
.byte (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)
.byte (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)
.byte (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)
.byte (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)
.byte (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)
.byte (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)
.byte (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)
.byte (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)
.byte (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)
.byte (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)
.byte (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)
.byte (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)
.byte (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)
.byte (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)
.byte (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)
.byte (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)
.byte (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)
.byte (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)
.byte (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)
.byte (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)
.byte (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)
.byte (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)
.byte (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)
.byte (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)
.byte (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)
.byte (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)
.align 4
MAIN_opcodes:
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.align 4
EI_DUMMY_opcodes:
.word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@0
.word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@0
.word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@1
.word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@1
.word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@2
.word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@2
.word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@3
.word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@3
.word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@4
.word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@4
.word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@5
.word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@5
.word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@6
.word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@6
.word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@7
.word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@7
.word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@8
.word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@8
.word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@9
.word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@9
.word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@A
.word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@A
.word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@B
.word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@B
.word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@C
.word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@C
.word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@D
.word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@D
.word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@E
.word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@E
.word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@F
.word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@F
.text
.align 4
;@NOP
opcode_0_0:
;@LD B,B
opcode_4_0:
;@LD C,C
opcode_4_9:
;@LD D,D
opcode_5_2:
;@LD E,E
opcode_5_B:
;@LD H,H
opcode_6_4:
;@LD L,L
opcode_6_D:
;@LD A,A
opcode_7_F:
fetch 4
;@LD BC,NN
opcode_0_1:
ldrb r0,[z80pc],#1
ldrb r1,[z80pc],#1
orr r0,r0,r1, lsl #8
mov z80bc,r0, lsl #16
fetch 10
;@LD (BC),A
opcode_0_2:
mov r0,z80a, lsr #24
mov r1,z80bc, lsr #16
writemem8
fetch 7
;@INC BC
opcode_0_3:
add z80bc,z80bc,#1<<16
fetch 6
;@INC B
opcode_0_4:
opINC8H z80bc
fetch 4
;@DEC B
opcode_0_5:
opDEC8H z80bc
fetch 4
;@LD B,N
opcode_0_6:
ldrb r1,[z80pc],#1
and z80bc,z80bc,#0xFF<<16
orr z80bc,z80bc,r1, lsl #24
fetch 7
;@RLCA
opcode_0_7:
bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)
movs z80a,z80a, lsl #1
orrcs z80a,z80a,#1<<24
orrcs z80f,z80f,#1<<CFlag
fetch 4
;@EX AF,AF'
opcode_0_8:
ldr r0,[cpucontext,#z80a2]
ldr r1,[cpucontext,#z80f2]
str z80a,[cpucontext,#z80a2]
str z80f,[cpucontext,#z80f2]
mov z80a,r0
mov z80f,r1
fetch 4
;@ADD HL,BC
opcode_0_9:
opADD16 z80hl z80bc
fetch 11
;@LD A,(BC)
opcode_0_A:
mov r0,z80bc, lsr #16
readmem8
mov z80a,r0, lsl #24
fetch 7
;@DEC BC
opcode_0_B:
sub z80bc,z80bc,#1<<16
fetch 6
;@INC C
opcode_0_C:
opINC8L z80bc
fetch 4
;@DEC C
opcode_0_D:
opDEC8L z80bc
fetch 4
;@LD C,N
opcode_0_E:
ldrb r1,[z80pc],#1
and z80bc,z80bc,#0xFF<<24
orr z80bc,z80bc,r1, lsl #16
fetch 7
;@RRCA
opcode_0_F:
bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)
movs z80a,z80a, lsr #25
orrcs z80a,z80a,#1<<7
orrcs z80f,z80f,#1<<CFlag
mov z80a,z80a, lsl #24
fetch 4
;@DJNZ $+2
opcode_1_0:
sub z80bc,z80bc,#1<<24
tst z80bc,#0xFF<<24
ldrsb r1,[z80pc],#1
addne z80pc,z80pc,r1
subne z80_icount,z80_icount,#5
fetch 8
;@LD DE,NN
opcode_1_1:
ldrb r0,[z80pc],#1
ldrb r1,[z80pc],#1
orr r0,r0,r1, lsl #8
mov z80de,r0, lsl #16
fetch 10
;@LD (DE),A
opcode_1_2:
mov r0,z80a, lsr #24
writemem8DE
fetch 7
;@INC DE
opcode_1_3:
add z80de,z80de,#1<<16
fetch 6
;@INC D
opcode_1_4:
opINC8H z80de
fetch 4
;@DEC D
opcode_1_5:
opDEC8H z80de
fetch 4
;@LD D,N
opcode_1_6:
ldrb r1,[z80pc],#1
and z80de,z80de,#0xFF<<16
orr z80de,z80de,r1, lsl #24
fetch 7
;@RLA
opcode_1_7:
tst z80f,#1<<CFlag
orrne z80a,z80a,#1<<23
bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)
movs z80a,z80a, lsl #1
orrcs z80f,z80f,#1<<CFlag
fetch 4
;@JR $+2
opcode_1_8:
ldrsb r1,[z80pc],#1
add z80pc,z80pc,r1
fetch 12
;@ADD HL,DE
opcode_1_9:
opADD16 z80hl z80de
fetch 11
;@LD A,(DE)
opcode_1_A:
mov r0,z80de, lsr #16
readmem8
mov z80a,r0, lsl #24
fetch 7
;@DEC DE
opcode_1_B:
sub z80de,z80de,#1<<16
fetch 6
;@INC E
opcode_1_C:
opINC8L z80de
fetch 4
;@DEC E
opcode_1_D:
opDEC8L z80de
fetch 4
;@LD E,N
opcode_1_E:
ldrb r0,[z80pc],#1
and z80de,z80de,#0xFF<<24
orr z80de,z80de,r0, lsl #16
fetch 7
;@RRA
opcode_1_F:
orr z80a,z80a,z80f,lsr#1 ;@get C
bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)
movs z80a,z80a,ror#25
orrcs z80f,z80f,#1<<CFlag
mov z80a,z80a,lsl#24
fetch 4
;@JR NZ,$+2
opcode_2_0:
tst z80f,#1<<ZFlag
beq opcode_1_8
add z80pc,z80pc,#1
fetch 7
;@LD HL,NN
opcode_2_1:
ldrb r0,[z80pc],#1
ldrb r1,[z80pc],#1
orr r0,r0,r1, lsl #8
mov z80hl,r0, lsl #16
fetch 10
;@LD (NN),HL
opcode_ED_63:
eatcycles 4
;@LD (NN),HL
opcode_2_2:
ldrb r0,[z80pc],#1
ldrb r1,[z80pc],#1
orr r1,r0,r1, lsl #8
mov r0,z80hl, lsr #16
writemem16
fetch 16
;@INC HL
opcode_2_3:
add z80hl,z80hl,#1<<16
fetch 6
;@INC H
opcode_2_4:
opINC8H z80hl
fetch 4
;@DEC H
opcode_2_5:
opDEC8H z80hl
fetch 4
;@LD H,N
opcode_2_6:
ldrb r1,[z80pc],#1
and z80hl,z80hl,#0xFF<<16
orr z80hl,z80hl,r1, lsl #24
fetch 7
DAATABLE_LOCAL: .word DAATable
;@DAA
opcode_2_7:
mov r1,z80a, lsr #24
tst z80f,#1<<CFlag
orrne r1,r1,#256
tst z80f,#1<<HFlag
orrne r1,r1,#512
tst z80f,#1<<NFlag
orrne r1,r1,#1024
ldr r2,DAATABLE_LOCAL
add r2,r2,r1, lsl #1
ldrh r1,[r2]
and z80f,r1,#0xFF
and r2,r1,#0xFF<<8
mov z80a,r2, lsl #16
fetch 4
;@JR Z,$+2
opcode_2_8:
tst z80f,#1<<ZFlag
bne opcode_1_8
add z80pc,z80pc,#1
fetch 7
;@ADD HL,HL
opcode_2_9:
opADD16_2 z80hl
fetch 11
;@LD HL,(NN)
opcode_ED_6B:
eatcycles 4
;@LD HL,(NN)
opcode_2_A:
ldrb r0,[z80pc],#1
ldrb r1,[z80pc],#1
orr r0,r0,r1, lsl #8
readmem16
mov z80hl,r0, lsl #16
fetch 16
;@DEC HL
opcode_2_B:
sub z80hl,z80hl,#1<<16
fetch 6
;@INC L
opcode_2_C:
opINC8L z80hl
fetch 4
;@DEC L
opcode_2_D:
opDEC8L z80hl
fetch 4
;@LD L,N
opcode_2_E:
ldrb r0,[z80pc],#1
and z80hl,z80hl,#0xFF<<24
orr z80hl,z80hl,r0, lsl #16
fetch 7
;@CPL
opcode_2_F:
eor z80a,z80a,#0xFF<<24
orr z80f,z80f,#(1<<NFlag)|(1<<HFlag)
fetch 4
;@JR NC,$+2
opcode_3_0:
tst z80f,#1<<CFlag
beq opcode_1_8
add z80pc,z80pc,#1
fetch 7
;@LD SP,NN
opcode_3_1:
ldrb r0,[z80pc],#1
ldrb r1,[z80pc],#1
.if FAST_Z80SP
orr r0,r0,r1, lsl #8
rebasesp
.else
orr z80sp,r0,r1, lsl #8
.endif
fetch 10
;@LD (NN),A
opcode_3_2:
ldrb r0,[z80pc],#1
ldrb r1,[z80pc],#1
orr r1,r0,r1, lsl #8
mov r0,z80a, lsr #24
writemem8
fetch 13
;@INC SP
opcode_3_3:
add z80sp,z80sp,#1
fetch 6
;@INC (HL)
opcode_3_4:
readmem8HL
opINC8b
writemem8HL
fetch 11
;@DEC (HL)
opcode_3_5:
readmem8HL
opDEC8b
writemem8HL
fetch 11
;@LD (HL),N
opcode_3_6:
ldrb r0,[z80pc],#1
writemem8HL
fetch 10
;@SCF
opcode_3_7:
bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)
orr z80f,z80f,#1<<CFlag
fetch 4
;@JR C,$+2
opcode_3_8:
tst z80f,#1<<CFlag
bne opcode_1_8
add z80pc,z80pc,#1
fetch 7
;@ADD HL,SP
opcode_3_9:
.if FAST_Z80SP
ldr r0,[cpucontext,#z80sp_base]
sub r0,z80sp,r0
opADD16s z80hl r0 16
.else
opADD16s z80hl z80sp 16
.endif
fetch 11
;@LD A,(NN)
opcode_3_A:
ldrb r0,[z80pc],#1
ldrb r1,[z80pc],#1
orr r0,r0,r1, lsl #8
readmem8
mov z80a,r0, lsl #24
fetch 13
;@DEC SP
opcode_3_B:
sub z80sp,z80sp,#1
fetch 6
;@INC A
opcode_3_C:
opINC8 z80a
fetch 4
;@DEC A
opcode_3_D:
opDEC8 z80a
fetch 4
;@LD A,N
opcode_3_E:
ldrb r0,[z80pc],#1
mov z80a,r0, lsl #24
fetch 7
;@CCF
opcode_3_F:
bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)
tst z80f,#1<<CFlag
orrne z80f,z80f,#1<<HFlag
eor z80f,z80f,#1<<CFlag
fetch 4
;@LD B,C
opcode_4_1:
and z80bc,z80bc,#0xFF<<16
orr z80bc,z80bc,z80bc, lsl #8
fetch 4
;@LD B,D
opcode_4_2:
and z80bc,z80bc,#0xFF<<16
and r1,z80de,#0xFF<<24
orr z80bc,z80bc,r1
fetch 4
;@LD B,E
opcode_4_3:
and z80bc,z80bc,#0xFF<<16
and r1,z80de,#0xFF<<16
orr z80bc,z80bc,r1, lsl #8
fetch 4
;@LD B,H
opcode_4_4:
and z80bc,z80bc,#0xFF<<16
and r1,z80hl,#0xFF<<24
orr z80bc,z80bc,r1
fetch 4
;@LD B,L
opcode_4_5:
and z80bc,z80bc,#0xFF<<16
and r1,z80hl,#0xFF<<16
orr z80bc,z80bc,r1, lsl #8
fetch 4
;@LD B,(HL)
opcode_4_6:
readmem8HL
and z80bc,z80bc,#0xFF<<16
orr z80bc,z80bc,r0, lsl #24
fetch 7
;@LD B,A
opcode_4_7:
and z80bc,z80bc,#0xFF<<16
orr z80bc,z80bc,z80a
fetch 4
;@LD C,B
opcode_4_8:
and z80bc,z80bc,#0xFF<<24
orr z80bc,z80bc,z80bc, lsr #8
fetch 4
;@LD C,D
opcode_4_A:
and z80bc,z80bc,#0xFF<<24
and r1,z80de,#0xFF<<24
orr z80bc,z80bc,r1, lsr #8
fetch 4
;@LD C,E
opcode_4_B:
and z80bc,z80bc,#0xFF<<24
and r1,z80de,#0xFF<<16
orr z80bc,z80bc,r1
fetch 4
;@LD C,H
opcode_4_C:
and z80bc,z80bc,#0xFF<<24
and r1,z80hl,#0xFF<<24
orr z80bc,z80bc,r1, lsr #8
fetch 4
;@LD C,L
opcode_4_D:
and z80bc,z80bc,#0xFF<<24
and r1,z80hl,#0xFF<<16
orr z80bc,z80bc,r1
fetch 4
;@LD C,(HL)
opcode_4_E:
readmem8HL
and z80bc,z80bc,#0xFF<<24
orr z80bc,z80bc,r0, lsl #16
fetch 7
;@LD C,A
opcode_4_F:
and z80bc,z80bc,#0xFF<<24
orr z80bc,z80bc,z80a, lsr #8
fetch 4
;@LD D,B
opcode_5_0:
and z80de,z80de,#0xFF<<16
and r1,z80bc,#0xFF<<24
orr z80de,z80de,r1
fetch 4
;@LD D,C
opcode_5_1:
and z80de,z80de,#0xFF<<16
orr z80de,z80de,z80bc, lsl #8
fetch 4
;@LD D,E
opcode_5_3:
and z80de,z80de,#0xFF<<16
orr z80de,z80de,z80de, lsl #8
fetch 4
;@LD D,H
opcode_5_4:
and z80de,z80de,#0xFF<<16
and r1,z80hl,#0xFF<<24
orr z80de,z80de,r1
fetch 4
;@LD D,L
opcode_5_5:
and z80de,z80de,#0xFF<<16
orr z80de,z80de,z80hl, lsl #8
fetch 4
;@LD D,(HL)
opcode_5_6:
readmem8HL
and z80de,z80de,#0xFF<<16
orr z80de,z80de,r0, lsl #24
fetch 7
;@LD D,A
opcode_5_7:
and z80de,z80de,#0xFF<<16
orr z80de,z80de,z80a
fetch 4
;@LD E,B
opcode_5_8:
and z80de,z80de,#0xFF<<24
and r1,z80bc,#0xFF<<24
orr z80de,z80de,r1, lsr #8
fetch 4
;@LD E,C
opcode_5_9:
and z80de,z80de,#0xFF<<24
and r1,z80bc,#0xFF<<16
orr z80de,z80de,r1
fetch 4
;@LD E,D
opcode_5_A:
and z80de,z80de,#0xFF<<24
orr z80de,z80de,z80de, lsr #8
fetch 4
;@LD E,H
opcode_5_C:
and z80de,z80de,#0xFF<<24
and r1,z80hl,#0xFF<<24
orr z80de,z80de,r1, lsr #8
fetch 4
;@LD E,L
opcode_5_D:
and z80de,z80de,#0xFF<<24
and r1,z80hl,#0xFF<<16
orr z80de,z80de,r1
fetch 4
;@LD E,(HL)
opcode_5_E:
readmem8HL
and z80de,z80de,#0xFF<<24
orr z80de,z80de,r0, lsl #16
fetch 7
;@LD E,A
opcode_5_F:
and z80de,z80de,#0xFF<<24
orr z80de,z80de,z80a, lsr #8
fetch 4
;@LD H,B
opcode_6_0:
and z80hl,z80hl,#0xFF<<16
and r1,z80bc,#0xFF<<24
orr z80hl,z80hl,r1
fetch 4
;@LD H,C
opcode_6_1:
and z80hl,z80hl,#0xFF<<16
orr z80hl,z80hl,z80bc, lsl #8
fetch 4
;@LD H,D
opcode_6_2:
and z80hl,z80hl,#0xFF<<16
and r1,z80de,#0xFF<<24
orr z80hl,z80hl,r1
fetch 4
;@LD H,E
opcode_6_3:
and z80hl,z80hl,#0xFF<<16
orr z80hl,z80hl,z80de, lsl #8
fetch 4
;@LD H,L
opcode_6_5:
and z80hl,z80hl,#0xFF<<16
orr z80hl,z80hl,z80hl, lsl #8
fetch 4
;@LD H,(HL)
opcode_6_6:
readmem8HL
and z80hl,z80hl,#0xFF<<16
orr z80hl,z80hl,r0, lsl #24
fetch 7
;@LD H,A
opcode_6_7:
and z80hl,z80hl,#0xFF<<16
orr z80hl,z80hl,z80a
fetch 4
;@LD L,B
opcode_6_8:
and z80hl,z80hl,#0xFF<<24
and r1,z80bc,#0xFF<<24
orr z80hl,z80hl,r1, lsr #8
fetch 4
;@LD L,C
opcode_6_9:
and z80hl,z80hl,#0xFF<<24
and r1,z80bc,#0xFF<<16
orr z80hl,z80hl,r1
fetch 4
;@LD L,D
opcode_6_A:
and z80hl,z80hl,#0xFF<<24
and r1,z80de,#0xFF<<24
orr z80hl,z80hl,r1, lsr #8
fetch 4
;@LD L,E
opcode_6_B:
and z80hl,z80hl,#0xFF<<24
and r1,z80de,#0xFF<<16
orr z80hl,z80hl,r1
fetch 4
;@LD L,H
opcode_6_C:
and z80hl,z80hl,#0xFF<<24
orr z80hl,z80hl,z80hl, lsr #8
fetch 4
;@LD L,(HL)
opcode_6_E:
readmem8HL
and z80hl,z80hl,#0xFF<<24
orr z80hl,z80hl,r0, lsl #16
fetch 7
;@LD L,A
opcode_6_F:
and z80hl,z80hl,#0xFF<<24
orr z80hl,z80hl,z80a, lsr #8
fetch 4
;@LD (HL),B
opcode_7_0:
mov r0,z80bc, lsr #24
writemem8HL
fetch 7
;@LD (HL),C
opcode_7_1:
mov r0,z80bc, lsr #16
and r0,r0,#0xFF
writemem8HL
fetch 7
;@LD (HL),D
opcode_7_2:
mov r0,z80de, lsr #24
writemem8HL
fetch 7
;@LD (HL),E
opcode_7_3:
mov r0,z80de, lsr #16
and r0,r0,#0xFF
writemem8HL
fetch 7
;@LD (HL),H
opcode_7_4:
mov r0,z80hl, lsr #24
writemem8HL
fetch 7
;@LD (HL),L
opcode_7_5:
mov r1,z80hl, lsr #16
and r0,r1,#0xFF
writemem8
fetch 7
;@HALT
opcode_7_6:
sub z80pc,z80pc,#1
ldrb r0,[cpucontext,#z80if]
orr r0,r0,#Z80_HALT
strb r0,[cpucontext,#z80if]
mov z80_icount,#0
b z80_execute_end
;@LD (HL),A
opcode_7_7:
mov r0,z80a, lsr #24
writemem8HL
fetch 7
;@LD A,B
opcode_7_8:
and z80a,z80bc,#0xFF<<24
fetch 4
;@LD A,C
opcode_7_9:
mov z80a,z80bc, lsl #8
fetch 4
;@LD A,D
opcode_7_A:
and z80a,z80de,#0xFF<<24
fetch 4
;@LD A,E
opcode_7_B:
mov z80a,z80de, lsl #8
fetch 4
;@LD A,H
opcode_7_C:
and z80a,z80hl,#0xFF<<24
fetch 4
;@LD A,L
opcode_7_D:
mov z80a,z80hl, lsl #8
fetch 4
;@LD A,(HL)
opcode_7_E:
readmem8HL
mov z80a,r0, lsl #24
fetch 7
;@ADD A,B
opcode_8_0:
opADDH z80bc
;@ADD A,C
opcode_8_1:
opADDL z80bc
;@ADD A,D
opcode_8_2:
opADDH z80de
;@ADD A,E
opcode_8_3:
opADDL z80de
;@ADD A,H
opcode_8_4:
opADDH z80hl
;@ADD A,L
opcode_8_5:
opADDL z80hl
;@ADD A,(HL)
opcode_8_6:
readmem8HL
opADDb
fetch 7
;@ADD A,A
opcode_8_7:
opADDA
;@ADC A,B
opcode_8_8:
opADCH z80bc
;@ADC A,C
opcode_8_9:
opADCL z80bc
;@ADC A,D
opcode_8_A:
opADCH z80de
;@ADC A,E
opcode_8_B:
opADCL z80de
;@ADC A,H
opcode_8_C:
opADCH z80hl
;@ADC A,L
opcode_8_D:
opADCL z80hl
;@ADC A,(HL)
opcode_8_E:
readmem8HL
opADCb
fetch 7
;@ADC A,A
opcode_8_F:
opADCA
;@SUB B
opcode_9_0:
opSUBH z80bc
;@SUB C
opcode_9_1:
opSUBL z80bc
;@SUB D
opcode_9_2:
opSUBH z80de
;@SUB E
opcode_9_3:
opSUBL z80de
;@SUB H
opcode_9_4:
opSUBH z80hl
;@SUB L
opcode_9_5:
opSUBL z80hl
;@SUB (HL)
opcode_9_6:
readmem8HL
opSUBb
fetch 7
;@SUB A
opcode_9_7:
opSUBA
;@SBC B
opcode_9_8:
opSBCH z80bc
;@SBC C
opcode_9_9:
opSBCL z80bc
;@SBC D
opcode_9_A:
opSBCH z80de
;@SBC E
opcode_9_B:
opSBCL z80de
;@SBC H
opcode_9_C:
opSBCH z80hl
;@SBC L
opcode_9_D:
opSBCL z80hl
;@SBC (HL)
opcode_9_E:
readmem8HL
opSBCb
fetch 7
;@SBC A
opcode_9_F:
opSBCA
;@AND B
opcode_A_0:
opANDH z80bc
;@AND C
opcode_A_1:
opANDL z80bc
;@AND D
opcode_A_2:
opANDH z80de
;@AND E
opcode_A_3:
opANDL z80de
;@AND H
opcode_A_4:
opANDH z80hl
;@AND L
opcode_A_5:
opANDL z80hl
;@AND (HL)
opcode_A_6:
readmem8HL
opANDb
fetch 7
;@AND A
opcode_A_7:
opANDA
;@XOR B
opcode_A_8:
opXORH z80bc
;@XOR C
opcode_A_9:
opXORL z80bc
;@XOR D
opcode_A_A:
opXORH z80de
;@XOR E
opcode_A_B:
opXORL z80de
;@XOR H
opcode_A_C:
opXORH z80hl
;@XOR L
opcode_A_D:
opXORL z80hl
;@XOR (HL)
opcode_A_E:
readmem8HL
opXORb
fetch 7
;@XOR A
opcode_A_F:
opXORA
;@OR B
opcode_B_0:
opORH z80bc
;@OR C
opcode_B_1:
opORL z80bc
;@OR D
opcode_B_2:
opORH z80de
;@OR E
opcode_B_3:
opORL z80de
;@OR H
opcode_B_4:
opORH z80hl
;@OR L
opcode_B_5:
opORL z80hl
;@OR (HL)
opcode_B_6:
readmem8HL
opORb
fetch 7
;@OR A
opcode_B_7:
opORA
;@CP B
opcode_B_8:
opCPH z80bc
;@CP C
opcode_B_9:
opCPL z80bc
;@CP D
opcode_B_A:
opCPH z80de
;@CP E
opcode_B_B:
opCPL z80de
;@CP H
opcode_B_C:
opCPH z80hl
;@CP L
opcode_B_D:
opCPL z80hl
;@CP (HL)
opcode_B_E:
readmem8HL
opCPb
fetch 7
;@CP A
opcode_B_F:
opCPA
;@RET NZ
opcode_C_0:
tst z80f,#1<<ZFlag
beq opcode_C_9_cond ;@unconditional RET
fetch 5
;@POP BC
opcode_C_1:
opPOPreg z80bc
;@JP NZ,$+3
opcode_C_2:
tst z80f,#1<<ZFlag
beq opcode_C_3 ;@unconditional JP
add z80pc,z80pc,#2
fetch 10
;@JP $+3
opcode_C_3:
ldrb r0,[z80pc],#1
ldrb r1,[z80pc],#1
orr r0,r0,r1, lsl #8
rebasepc
fetch 10
;@CALL NZ,NN
opcode_C_4:
tst z80f,#1<<ZFlag
beq opcode_C_D ;@unconditional CALL
add z80pc,z80pc,#2
fetch 10
;@PUSH BC
opcode_C_5:
opPUSHreg z80bc
fetch 11
;@ADD A,N
opcode_C_6:
ldrb r0,[z80pc],#1
opADDb
fetch 7
;@RST 0
opcode_C_7:
opRST 0x00
;@RET Z
opcode_C_8:
tst z80f,#1<<ZFlag
bne opcode_C_9_cond ;@unconditional RET
fetch 5
opcode_C_9_cond:
eatcycles 1
;@RET
opcode_C_9:
opPOP
rebasepc
fetch 10
;@JP Z,$+3
opcode_C_A:
tst z80f,#1<<ZFlag
bne opcode_C_3 ;@unconditional JP
add z80pc,z80pc,#2
fetch 10
;@This reads this opcodes_CB lookup table to find the location of
;@the CB sub for the intruction and then branches to that location
opcode_C_B:
ldrb r0,[z80pc],#1
ldr pc,[pc,r0, lsl #2]
opcodes_CB: .word 0x00000000
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
;@CALL Z,NN
opcode_C_C:
tst z80f,#1<<ZFlag
bne opcode_C_D ;@unconditional CALL
add z80pc,z80pc,#2
fetch 10
;@CALL NN
opcode_C_D:
ldrb r0,[z80pc],#1
ldrb r1,[z80pc],#1
ldr r2,[cpucontext,#z80pc_base]
sub r2,z80pc,r2
orr z80pc,r0,r1, lsl #8
opPUSHareg r2
mov r0,z80pc
rebasepc
fetch 17
;@ADC A,N
opcode_C_E:
ldrb r0,[z80pc],#1
opADCb
fetch 7
;@RST 8H
opcode_C_F:
opRST 0x08
;@RET NC
opcode_D_0:
tst z80f,#1<<CFlag
beq opcode_C_9_cond ;@unconditional RET
fetch 5
;@POP DE
opcode_D_1:
opPOPreg z80de
;@JP NC, $+3
opcode_D_2 :
tst z80f,#1<<CFlag
beq opcode_C_3 ;@unconditional JP
add z80pc,z80pc,#2
fetch 10
;@OUT (N),A
opcode_D_3:
ldrb r0,[z80pc],#1
orr r0,r0,z80a,lsr#16
mov r1,z80a, lsr #24
opOUT
fetch 11
;@CALL NC,NN
opcode_D_4:
tst z80f,#1<<CFlag
beq opcode_C_D ;@unconditional CALL
add z80pc,z80pc,#2
fetch 10
;@PUSH DE
opcode_D_5:
opPUSHreg z80de
fetch 11
;@SUB N
opcode_D_6:
ldrb r0,[z80pc],#1
opSUBb
fetch 7
;@RST 10H
opcode_D_7:
opRST 0x10
;@RET C
opcode_D_8:
tst z80f,#1<<CFlag
bne opcode_C_9_cond ;@unconditional RET
fetch 5
;@EXX
opcode_D_9:
ldr r0,[cpucontext,#z80bc2]
ldr r1,[cpucontext,#z80de2]
ldr r2,[cpucontext,#z80hl2]
str z80bc,[cpucontext,#z80bc2]
str z80de,[cpucontext,#z80de2]
str z80hl,[cpucontext,#z80hl2]
mov z80bc,r0
mov z80de,r1
mov z80hl,r2
fetch 4
;@JP C,$+3
opcode_D_A:
tst z80f,#1<<CFlag
bne opcode_C_3 ;@unconditional JP
add z80pc,z80pc,#2
fetch 10
;@IN A,(N)
opcode_D_B:
ldrb r0,[z80pc],#1
orr r0,r0,z80a,lsr#16
opIN
mov z80a,r0, lsl #24 ;@ r0 = data read
fetch 11
;@CALL C,NN
opcode_D_C:
tst z80f,#1<<CFlag
bne opcode_C_D ;@unconditional CALL
add z80pc,z80pc,#2
fetch 10
;@opcodes_DD
opcode_D_D:
add z80xx,cpucontext,#z80ix
b opcode_D_D_F_D
opcode_F_D:
add z80xx,cpucontext,#z80iy
opcode_D_D_F_D:
ldrb r0,[z80pc],#1
ldr pc,[pc,r0, lsl #2]
opcodes_DD: .word 0x00000000
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
;@SBC A,N
opcode_D_E:
ldrb r0,[z80pc],#1
opSBCb
fetch 7
;@RST 18H
opcode_D_F:
opRST 0x18
;@RET PO
opcode_E_0:
tst z80f,#1<<VFlag
beq opcode_C_9_cond ;@unconditional RET
fetch 5
;@POP HL
opcode_E_1:
opPOPreg z80hl
;@JP PO,$+3
opcode_E_2:
tst z80f,#1<<VFlag
beq opcode_C_3 ;@unconditional JP
add z80pc,z80pc,#2
fetch 10
;@EX (SP),HL
opcode_E_3:
.if FAST_Z80SP
ldrb r0,[z80sp]
ldrb r1,[z80sp,#1]
orr r0,r0,r1, lsl #8
mov r1,z80hl, lsr #24
strb r1,[z80sp,#1]
mov r1,z80hl, lsr #16
strb r1,[z80sp]
mov z80hl,r0, lsl #16
.else
mov r0,z80sp
readmem16
mov r1,r0
mov r0,z80hl,lsr#16
mov z80hl,r1,lsl#16
mov r1,z80sp
writemem16
.endif
fetch 19
;@CALL PO,NN
opcode_E_4:
tst z80f,#1<<VFlag
beq opcode_C_D ;@unconditional CALL
add z80pc,z80pc,#2
fetch 10
;@PUSH HL
opcode_E_5:
opPUSHreg z80hl
fetch 11
;@AND N
opcode_E_6:
ldrb r0,[z80pc],#1
opANDb
fetch 7
;@RST 20H
opcode_E_7:
opRST 0x20
;@RET PE
opcode_E_8:
tst z80f,#1<<VFlag
bne opcode_C_9_cond ;@unconditional RET
fetch 5
;@JP (HL)
opcode_E_9:
mov r0,z80hl, lsr #16
rebasepc
fetch 4
;@JP PE,$+3
opcode_E_A:
tst z80f,#1<<VFlag
bne opcode_C_3 ;@unconditional JP
add z80pc,z80pc,#2
fetch 10
;@EX DE,HL
opcode_E_B:
mov r1,z80de
mov z80de,z80hl
mov z80hl,r1
fetch 4
;@CALL PE,NN
opcode_E_C:
tst z80f,#1<<VFlag
bne opcode_C_D ;@unconditional CALL
add z80pc,z80pc,#2
fetch 10
;@This should be caught at start
opcode_E_D:
ldrb r1,[z80pc],#1
ldr pc,[pc,r1, lsl #2]
opcodes_ED: .word 0x00000000
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
;@XOR N
opcode_E_E:
ldrb r0,[z80pc],#1
opXORb
fetch 7
;@RST 28H
opcode_E_F:
opRST 0x28
;@RET P
opcode_F_0:
tst z80f,#1<<SFlag
beq opcode_C_9_cond ;@unconditional RET
fetch 5
;@POP AF
opcode_F_1:
.if FAST_Z80SP
ldrb z80f,[z80sp],#1
sub r0,opcodes,#0x200
ldrb z80f,[r0,z80f]
ldrb z80a,[z80sp],#1
mov z80a,z80a, lsl #24
.else
mov r0,z80sp
readmem16
add z80sp,z80sp,#2
and z80a,r0,#0xFF00
mov z80a,z80a,lsl#16
and z80f,r0,#0xFF
sub r0,opcodes,#0x200
ldrb z80f,[r0,z80f]
.endif
fetch 10
;@JP P,$+3
opcode_F_2:
tst z80f,#1<<SFlag
beq opcode_C_3 ;@unconditional JP
add z80pc,z80pc,#2
fetch 10
;@DI
opcode_F_3:
ldrb r1,[cpucontext,#z80if]
bic r1,r1,#(Z80_IF1)|(Z80_IF2)
strb r1,[cpucontext,#z80if]
fetch 4
;@CALL P,NN
opcode_F_4:
tst z80f,#1<<SFlag
beq opcode_C_D ;@unconditional CALL
add z80pc,z80pc,#2
fetch 10
;@PUSH AF
opcode_F_5:
sub r0,opcodes,#0x300
ldrb r0,[r0,z80f]
orr r2,r0,z80a,lsr#16
opPUSHareg r2
fetch 11
;@OR N
opcode_F_6:
ldrb r0,[z80pc],#1
opORb
fetch 7
;@RST 30H
opcode_F_7:
opRST 0x30
;@RET M
opcode_F_8:
tst z80f,#1<<SFlag
bne opcode_C_9_cond ;@unconditional RET
fetch 5
;@LD SP,HL
opcode_F_9:
.if FAST_Z80SP
mov r0,z80hl, lsr #16
rebasesp
.else
mov z80sp,z80hl, lsr #16
.endif
fetch 6
;@JP M,$+3
opcode_F_A:
tst z80f,#1<<SFlag
bne opcode_C_3 ;@unconditional JP
add z80pc,z80pc,#2
fetch 10
MAIN_opcodes_POINTER: .word MAIN_opcodes
EI_DUMMY_opcodes_POINTER: .word EI_DUMMY_opcodes
;@EI
opcode_F_B:
ldrb r1,[cpucontext,#z80if]
mov r2,opcodes
orr r1,r1,#(Z80_IF1)|(Z80_IF2)
strb r1,[cpucontext,#z80if]
ldrb r0,[z80pc],#1
eatcycles 4
ldr opcodes,EI_DUMMY_opcodes_POINTER
ldr pc,[r2,r0, lsl #2]
ei_return:
;@point that program returns from EI to check interupts
;@an interupt can not be taken directly after a EI opcode
;@ reset z80pc and opcode pointer
ldrh r0,[cpucontext,#z80irq] @ 0x4C, irq and IFF bits
sub z80pc,z80pc,#1
ldr opcodes,MAIN_opcodes_POINTER
;@ check ints
tst r0,#0xff
movne r0,r0,lsr #8
tstne r0,#Z80_IF1
blne DoInterrupt
;@ continue
fetch 0
;@CALL M,NN
opcode_F_C:
tst z80f,#1<<SFlag
bne opcode_C_D ;@unconditional CALL
add z80pc,z80pc,#2
fetch 10
;@SHOULD BE CAUGHT AT START - FD SECTION
;@CP N
opcode_F_E:
ldrb r0,[z80pc],#1
opCPb
fetch 7
;@RST 38H
opcode_F_F:
opRST 0x38
;@##################################
;@##################################
;@### opcodes CB #########################
;@##################################
;@##################################
;@RLC B
opcode_CB_00:
opRLCH z80bc
;@RLC C
opcode_CB_01:
opRLCL z80bc
;@RLC D
opcode_CB_02:
opRLCH z80de
;@RLC E
opcode_CB_03:
opRLCL z80de
;@RLC H
opcode_CB_04:
opRLCH z80hl
;@RLC L
opcode_CB_05:
opRLCL z80hl
;@RLC (HL)
opcode_CB_06:
readmem8HL
opRLCb
writemem8HL
fetch 15
;@RLC A
opcode_CB_07:
opRLCA
;@RRC B
opcode_CB_08:
opRRCH z80bc
;@RRC C
opcode_CB_09:
opRRCL z80bc
;@RRC D
opcode_CB_0A:
opRRCH z80de
;@RRC E
opcode_CB_0B:
opRRCL z80de
;@RRC H
opcode_CB_0C:
opRRCH z80hl
;@RRC L
opcode_CB_0D:
opRRCL z80hl
;@RRC (HL)
opcode_CB_0E :
readmem8HL
opRRCb
writemem8HL
fetch 15
;@RRC A
opcode_CB_0F:
opRRCA
;@RL B
opcode_CB_10:
opRLH z80bc
;@RL C
opcode_CB_11:
opRLL z80bc
;@RL D
opcode_CB_12:
opRLH z80de
;@RL E
opcode_CB_13:
opRLL z80de
;@RL H
opcode_CB_14:
opRLH z80hl
;@RL L
opcode_CB_15:
opRLL z80hl
;@RL (HL)
opcode_CB_16:
readmem8HL
opRLb
writemem8HL
fetch 15
;@RL A
opcode_CB_17:
opRLA
;@RR B
opcode_CB_18:
opRRH z80bc
;@RR C
opcode_CB_19:
opRRL z80bc
;@RR D
opcode_CB_1A:
opRRH z80de
;@RR E
opcode_CB_1B:
opRRL z80de
;@RR H
opcode_CB_1C:
opRRH z80hl
;@RR L
opcode_CB_1D:
opRRL z80hl
;@RR (HL)
opcode_CB_1E:
readmem8HL
opRRb
writemem8HL
fetch 15
;@RR A
opcode_CB_1F:
opRRA
;@SLA B
opcode_CB_20:
opSLAH z80bc
;@SLA C
opcode_CB_21:
opSLAL z80bc
;@SLA D
opcode_CB_22:
opSLAH z80de
;@SLA E
opcode_CB_23:
opSLAL z80de
;@SLA H
opcode_CB_24:
opSLAH z80hl
;@SLA L
opcode_CB_25:
opSLAL z80hl
;@SLA (HL)
opcode_CB_26:
readmem8HL
opSLAb
writemem8HL
fetch 15
;@SLA A
opcode_CB_27:
opSLAA
;@SRA B
opcode_CB_28:
opSRAH z80bc
;@SRA C
opcode_CB_29:
opSRAL z80bc
;@SRA D
opcode_CB_2A:
opSRAH z80de
;@SRA E
opcode_CB_2B:
opSRAL z80de
;@SRA H
opcode_CB_2C:
opSRAH z80hl
;@SRA L
opcode_CB_2D:
opSRAL z80hl
;@SRA (HL)
opcode_CB_2E:
readmem8HL
opSRAb
writemem8HL
fetch 15
;@SRA A
opcode_CB_2F:
opSRAA
;@SLL B
opcode_CB_30:
opSLLH z80bc
;@SLL C
opcode_CB_31:
opSLLL z80bc
;@SLL D
opcode_CB_32:
opSLLH z80de
;@SLL E
opcode_CB_33:
opSLLL z80de
;@SLL H
opcode_CB_34:
opSLLH z80hl
;@SLL L
opcode_CB_35:
opSLLL z80hl
;@SLL (HL)
opcode_CB_36:
readmem8HL
opSLLb
writemem8HL
fetch 15
;@SLL A
opcode_CB_37:
opSLLA
;@SRL B
opcode_CB_38:
opSRLH z80bc
;@SRL C
opcode_CB_39:
opSRLL z80bc
;@SRL D
opcode_CB_3A:
opSRLH z80de
;@SRL E
opcode_CB_3B:
opSRLL z80de
;@SRL H
opcode_CB_3C:
opSRLH z80hl
;@SRL L
opcode_CB_3D:
opSRLL z80hl
;@SRL (HL)
opcode_CB_3E:
readmem8HL
opSRLb
writemem8HL
fetch 15
;@SRL A
opcode_CB_3F:
opSRLA
;@BIT 0,B
opcode_CB_40:
opBITH z80bc 0
;@BIT 0,C
opcode_CB_41:
opBITL z80bc 0
;@BIT 0,D
opcode_CB_42:
opBITH z80de 0
;@BIT 0,E
opcode_CB_43:
opBITL z80de 0
;@BIT 0,H
opcode_CB_44:
opBITH z80hl 0
;@BIT 0,L
opcode_CB_45:
opBITL z80hl 0
;@BIT 0,(HL)
opcode_CB_46:
readmem8HL
opBITb 0
fetch 12
;@BIT 0,A
opcode_CB_47:
opBITH z80a 0
;@BIT 1,B
opcode_CB_48:
opBITH z80bc 1
;@BIT 1,C
opcode_CB_49:
opBITL z80bc 1
;@BIT 1,D
opcode_CB_4A:
opBITH z80de 1
;@BIT 1,E
opcode_CB_4B:
opBITL z80de 1
;@BIT 1,H
opcode_CB_4C:
opBITH z80hl 1
;@BIT 1,L
opcode_CB_4D:
opBITL z80hl 1
;@BIT 1,(HL)
opcode_CB_4E:
readmem8HL
opBITb 1
fetch 12
;@BIT 1,A
opcode_CB_4F:
opBITH z80a 1
;@BIT 2,B
opcode_CB_50:
opBITH z80bc 2
;@BIT 2,C
opcode_CB_51:
opBITL z80bc 2
;@BIT 2,D
opcode_CB_52:
opBITH z80de 2
;@BIT 2,E
opcode_CB_53:
opBITL z80de 2
;@BIT 2,H
opcode_CB_54:
opBITH z80hl 2
;@BIT 2,L
opcode_CB_55:
opBITL z80hl 2
;@BIT 2,(HL)
opcode_CB_56:
readmem8HL
opBITb 2
fetch 12
;@BIT 2,A
opcode_CB_57:
opBITH z80a 2
;@BIT 3,B
opcode_CB_58:
opBITH z80bc 3
;@BIT 3,C
opcode_CB_59:
opBITL z80bc 3
;@BIT 3,D
opcode_CB_5A:
opBITH z80de 3
;@BIT 3,E
opcode_CB_5B:
opBITL z80de 3
;@BIT 3,H
opcode_CB_5C:
opBITH z80hl 3
;@BIT 3,L
opcode_CB_5D:
opBITL z80hl 3
;@BIT 3,(HL)
opcode_CB_5E:
readmem8HL
opBITb 3
fetch 12
;@BIT 3,A
opcode_CB_5F:
opBITH z80a 3
;@BIT 4,B
opcode_CB_60:
opBITH z80bc 4
;@BIT 4,C
opcode_CB_61:
opBITL z80bc 4
;@BIT 4,D
opcode_CB_62:
opBITH z80de 4
;@BIT 4,E
opcode_CB_63:
opBITL z80de 4
;@BIT 4,H
opcode_CB_64:
opBITH z80hl 4
;@BIT 4,L
opcode_CB_65:
opBITL z80hl 4
;@BIT 4,(HL)
opcode_CB_66:
readmem8HL
opBITb 4
fetch 12
;@BIT 4,A
opcode_CB_67:
opBITH z80a 4
;@BIT 5,B
opcode_CB_68:
opBITH z80bc 5
;@BIT 5,C
opcode_CB_69:
opBITL z80bc 5
;@BIT 5,D
opcode_CB_6A:
opBITH z80de 5
;@BIT 5,E
opcode_CB_6B:
opBITL z80de 5
;@BIT 5,H
opcode_CB_6C:
opBITH z80hl 5
;@BIT 5,L
opcode_CB_6D:
opBITL z80hl 5
;@BIT 5,(HL)
opcode_CB_6E:
readmem8HL
opBITb 5
fetch 12
;@BIT 5,A
opcode_CB_6F:
opBITH z80a 5
;@BIT 6,B
opcode_CB_70:
opBITH z80bc 6
;@BIT 6,C
opcode_CB_71:
opBITL z80bc 6
;@BIT 6,D
opcode_CB_72:
opBITH z80de 6
;@BIT 6,E
opcode_CB_73:
opBITL z80de 6
;@BIT 6,H
opcode_CB_74:
opBITH z80hl 6
;@BIT 6,L
opcode_CB_75:
opBITL z80hl 6
;@BIT 6,(HL)
opcode_CB_76:
readmem8HL
opBITb 6
fetch 12
;@BIT 6,A
opcode_CB_77:
opBITH z80a 6
;@BIT 7,B
opcode_CB_78:
opBIT7H z80bc
;@BIT 7,C
opcode_CB_79:
opBIT7L z80bc
;@BIT 7,D
opcode_CB_7A:
opBIT7H z80de
;@BIT 7,E
opcode_CB_7B:
opBIT7L z80de
;@BIT 7,H
opcode_CB_7C:
opBIT7H z80hl
;@BIT 7,L
opcode_CB_7D:
opBIT7L z80hl
;@BIT 7,(HL)
opcode_CB_7E:
readmem8HL
opBIT7b
fetch 12
;@BIT 7,A
opcode_CB_7F:
opBIT7H z80a
;@RES 0,B
opcode_CB_80:
bic z80bc,z80bc,#1<<24
fetch 8
;@RES 0,C
opcode_CB_81:
bic z80bc,z80bc,#1<<16
fetch 8
;@RES 0,D
opcode_CB_82:
bic z80de,z80de,#1<<24
fetch 8
;@RES 0,E
opcode_CB_83:
bic z80de,z80de,#1<<16
fetch 8
;@RES 0,H
opcode_CB_84:
bic z80hl,z80hl,#1<<24
fetch 8
;@RES 0,L
opcode_CB_85:
bic z80hl,z80hl,#1<<16
fetch 8
;@RES 0,(HL)
opcode_CB_86:
opRESmemHL 0
;@RES 0,A
opcode_CB_87:
bic z80a,z80a,#1<<24
fetch 8
;@RES 1,B
opcode_CB_88:
bic z80bc,z80bc,#1<<25
fetch 8
;@RES 1,C
opcode_CB_89:
bic z80bc,z80bc,#1<<17
fetch 8
;@RES 1,D
opcode_CB_8A:
bic z80de,z80de,#1<<25
fetch 8
;@RES 1,E
opcode_CB_8B:
bic z80de,z80de,#1<<17
fetch 8
;@RES 1,H
opcode_CB_8C:
bic z80hl,z80hl,#1<<25
fetch 8
;@RES 1,L
opcode_CB_8D:
bic z80hl,z80hl,#1<<17
fetch 8
;@RES 1,(HL)
opcode_CB_8E:
opRESmemHL 1
;@RES 1,A
opcode_CB_8F:
bic z80a,z80a,#1<<25
fetch 8
;@RES 2,B
opcode_CB_90:
bic z80bc,z80bc,#1<<26
fetch 8
;@RES 2,C
opcode_CB_91:
bic z80bc,z80bc,#1<<18
fetch 8
;@RES 2,D
opcode_CB_92:
bic z80de,z80de,#1<<26
fetch 8
;@RES 2,E
opcode_CB_93:
bic z80de,z80de,#1<<18
fetch 8
;@RES 2,H
opcode_CB_94:
bic z80hl,z80hl,#1<<26
fetch 8
;@RES 2,L
opcode_CB_95:
bic z80hl,z80hl,#1<<18
fetch 8
;@RES 2,(HL)
opcode_CB_96:
opRESmemHL 2
;@RES 2,A
opcode_CB_97:
bic z80a,z80a,#1<<26
fetch 8
;@RES 3,B
opcode_CB_98:
bic z80bc,z80bc,#1<<27
fetch 8
;@RES 3,C
opcode_CB_99:
bic z80bc,z80bc,#1<<19
fetch 8
;@RES 3,D
opcode_CB_9A:
bic z80de,z80de,#1<<27
fetch 8
;@RES 3,E
opcode_CB_9B:
bic z80de,z80de,#1<<19
fetch 8
;@RES 3,H
opcode_CB_9C:
bic z80hl,z80hl,#1<<27
fetch 8
;@RES 3,L
opcode_CB_9D:
bic z80hl,z80hl,#1<<19
fetch 8
;@RES 3,(HL)
opcode_CB_9E:
opRESmemHL 3
;@RES 3,A
opcode_CB_9F:
bic z80a,z80a,#1<<27
fetch 8
;@RES 4,B
opcode_CB_A0:
bic z80bc,z80bc,#1<<28
fetch 8
;@RES 4,C
opcode_CB_A1:
bic z80bc,z80bc,#1<<20
fetch 8
;@RES 4,D
opcode_CB_A2:
bic z80de,z80de,#1<<28
fetch 8
;@RES 4,E
opcode_CB_A3:
bic z80de,z80de,#1<<20
fetch 8
;@RES 4,H
opcode_CB_A4:
bic z80hl,z80hl,#1<<28
fetch 8
;@RES 4,L
opcode_CB_A5:
bic z80hl,z80hl,#1<<20
fetch 8
;@RES 4,(HL)
opcode_CB_A6:
opRESmemHL 4
;@RES 4,A
opcode_CB_A7:
bic z80a,z80a,#1<<28
fetch 8
;@RES 5,B
opcode_CB_A8:
bic z80bc,z80bc,#1<<29
fetch 8
;@RES 5,C
opcode_CB_A9:
bic z80bc,z80bc,#1<<21
fetch 8
;@RES 5,D
opcode_CB_AA:
bic z80de,z80de,#1<<29
fetch 8
;@RES 5,E
opcode_CB_AB:
bic z80de,z80de,#1<<21
fetch 8
;@RES 5,H
opcode_CB_AC:
bic z80hl,z80hl,#1<<29
fetch 8
;@RES 5,L
opcode_CB_AD:
bic z80hl,z80hl,#1<<21
fetch 8
;@RES 5,(HL)
opcode_CB_AE:
opRESmemHL 5
;@RES 5,A
opcode_CB_AF:
bic z80a,z80a,#1<<29
fetch 8
;@RES 6,B
opcode_CB_B0:
bic z80bc,z80bc,#1<<30
fetch 8
;@RES 6,C
opcode_CB_B1:
bic z80bc,z80bc,#1<<22
fetch 8
;@RES 6,D
opcode_CB_B2:
bic z80de,z80de,#1<<30
fetch 8
;@RES 6,E
opcode_CB_B3:
bic z80de,z80de,#1<<22
fetch 8
;@RES 6,H
opcode_CB_B4:
bic z80hl,z80hl,#1<<30
fetch 8
;@RES 6,L
opcode_CB_B5:
bic z80hl,z80hl,#1<<22
fetch 8
;@RES 6,(HL)
opcode_CB_B6:
opRESmemHL 6
;@RES 6,A
opcode_CB_B7:
bic z80a,z80a,#1<<30
fetch 8
;@RES 7,B
opcode_CB_B8:
bic z80bc,z80bc,#1<<31
fetch 8
;@RES 7,C
opcode_CB_B9:
bic z80bc,z80bc,#1<<23
fetch 8
;@RES 7,D
opcode_CB_BA:
bic z80de,z80de,#1<<31
fetch 8
;@RES 7,E
opcode_CB_BB:
bic z80de,z80de,#1<<23
fetch 8
;@RES 7,H
opcode_CB_BC:
bic z80hl,z80hl,#1<<31
fetch 8
;@RES 7,L
opcode_CB_BD:
bic z80hl,z80hl,#1<<23
fetch 8
;@RES 7,(HL)
opcode_CB_BE:
opRESmemHL 7
;@RES 7,A
opcode_CB_BF:
bic z80a,z80a,#1<<31
fetch 8
;@SET 0,B
opcode_CB_C0:
orr z80bc,z80bc,#1<<24
fetch 8
;@SET 0,C
opcode_CB_C1:
orr z80bc,z80bc,#1<<16
fetch 8
;@SET 0,D
opcode_CB_C2:
orr z80de,z80de,#1<<24
fetch 8
;@SET 0,E
opcode_CB_C3:
orr z80de,z80de,#1<<16
fetch 8
;@SET 0,H
opcode_CB_C4:
orr z80hl,z80hl,#1<<24
fetch 8
;@SET 0,L
opcode_CB_C5:
orr z80hl,z80hl,#1<<16
fetch 8
;@SET 0,(HL)
opcode_CB_C6:
opSETmemHL 0
;@SET 0,A
opcode_CB_C7:
orr z80a,z80a,#1<<24
fetch 8
;@SET 1,B
opcode_CB_C8:
orr z80bc,z80bc,#1<<25
fetch 8
;@SET 1,C
opcode_CB_C9:
orr z80bc,z80bc,#1<<17
fetch 8
;@SET 1,D
opcode_CB_CA:
orr z80de,z80de,#1<<25
fetch 8
;@SET 1,E
opcode_CB_CB:
orr z80de,z80de,#1<<17
fetch 8
;@SET 1,H
opcode_CB_CC:
orr z80hl,z80hl,#1<<25
fetch 8
;@SET 1,L
opcode_CB_CD:
orr z80hl,z80hl,#1<<17
fetch 8
;@SET 1,(HL)
opcode_CB_CE:
opSETmemHL 1
;@SET 1,A
opcode_CB_CF:
orr z80a,z80a,#1<<25
fetch 8
;@SET 2,B
opcode_CB_D0:
orr z80bc,z80bc,#1<<26
fetch 8
;@SET 2,C
opcode_CB_D1:
orr z80bc,z80bc,#1<<18
fetch 8
;@SET 2,D
opcode_CB_D2:
orr z80de,z80de,#1<<26
fetch 8
;@SET 2,E
opcode_CB_D3:
orr z80de,z80de,#1<<18
fetch 8
;@SET 2,H
opcode_CB_D4:
orr z80hl,z80hl,#1<<26
fetch 8
;@SET 2,L
opcode_CB_D5:
orr z80hl,z80hl,#1<<18
fetch 8
;@SET 2,(HL)
opcode_CB_D6:
opSETmemHL 2
;@SET 2,A
opcode_CB_D7:
orr z80a,z80a,#1<<26
fetch 8
;@SET 3,B
opcode_CB_D8:
orr z80bc,z80bc,#1<<27
fetch 8
;@SET 3,C
opcode_CB_D9:
orr z80bc,z80bc,#1<<19
fetch 8
;@SET 3,D
opcode_CB_DA:
orr z80de,z80de,#1<<27
fetch 8
;@SET 3,E
opcode_CB_DB:
orr z80de,z80de,#1<<19
fetch 8
;@SET 3,H
opcode_CB_DC:
orr z80hl,z80hl,#1<<27
fetch 8
;@SET 3,L
opcode_CB_DD:
orr z80hl,z80hl,#1<<19
fetch 8
;@SET 3,(HL)
opcode_CB_DE:
opSETmemHL 3
;@SET 3,A
opcode_CB_DF:
orr z80a,z80a,#1<<27
fetch 8
;@SET 4,B
opcode_CB_E0:
orr z80bc,z80bc,#1<<28
fetch 8
;@SET 4,C
opcode_CB_E1:
orr z80bc,z80bc,#1<<20
fetch 8
;@SET 4,D
opcode_CB_E2:
orr z80de,z80de,#1<<28
fetch 8
;@SET 4,E
opcode_CB_E3:
orr z80de,z80de,#1<<20
fetch 8
;@SET 4,H
opcode_CB_E4:
orr z80hl,z80hl,#1<<28
fetch 8
;@SET 4,L
opcode_CB_E5:
orr z80hl,z80hl,#1<<20
fetch 8
;@SET 4,(HL)
opcode_CB_E6:
opSETmemHL 4
;@SET 4,A
opcode_CB_E7:
orr z80a,z80a,#1<<28
fetch 8
;@SET 5,B
opcode_CB_E8:
orr z80bc,z80bc,#1<<29
fetch 8
;@SET 5,C
opcode_CB_E9:
orr z80bc,z80bc,#1<<21
fetch 8
;@SET 5,D
opcode_CB_EA:
orr z80de,z80de,#1<<29
fetch 8
;@SET 5,E
opcode_CB_EB:
orr z80de,z80de,#1<<21
fetch 8
;@SET 5,H
opcode_CB_EC:
orr z80hl,z80hl,#1<<29
fetch 8
;@SET 5,L
opcode_CB_ED:
orr z80hl,z80hl,#1<<21
fetch 8
;@SET 5,(HL)
opcode_CB_EE:
opSETmemHL 5
;@SET 5,A
opcode_CB_EF:
orr z80a,z80a,#1<<29
fetch 8
;@SET 6,B
opcode_CB_F0:
orr z80bc,z80bc,#1<<30
fetch 8
;@SET 6,C
opcode_CB_F1:
orr z80bc,z80bc,#1<<22
fetch 8
;@SET 6,D
opcode_CB_F2:
orr z80de,z80de,#1<<30
fetch 8
;@SET 6,E
opcode_CB_F3:
orr z80de,z80de,#1<<22
fetch 8
;@SET 6,H
opcode_CB_F4:
orr z80hl,z80hl,#1<<30
fetch 8
;@SET 6,L
opcode_CB_F5:
orr z80hl,z80hl,#1<<22
fetch 8
;@SET 6,(HL)
opcode_CB_F6:
opSETmemHL 6
;@SET 6,A
opcode_CB_F7:
orr z80a,z80a,#1<<30
fetch 8
;@SET 7,B
opcode_CB_F8:
orr z80bc,z80bc,#1<<31
fetch 8
;@SET 7,C
opcode_CB_F9:
orr z80bc,z80bc,#1<<23
fetch 8
;@SET 7,D
opcode_CB_FA:
orr z80de,z80de,#1<<31
fetch 8
;@SET 7,E
opcode_CB_FB:
orr z80de,z80de,#1<<23
fetch 8
;@SET 7,H
opcode_CB_FC:
orr z80hl,z80hl,#1<<31
fetch 8
;@SET 7,L
opcode_CB_FD:
orr z80hl,z80hl,#1<<23
fetch 8
;@SET 7,(HL)
opcode_CB_FE:
opSETmemHL 7
;@SET 7,A
opcode_CB_FF:
orr z80a,z80a,#1<<31
fetch 8
;@##################################
;@##################################
;@### opcodes DD #########################
;@##################################
;@##################################
;@Because the DD opcodes are not a complete range from 00-FF I have
;@created this sub routine that will catch any undocumented ops
;@halt the emulator and mov the current instruction to r0
;@at a later stage I may change to display a text message on the screen
opcode_DD_NF:
eatcycles 4
ldr pc,[opcodes,r0, lsl #2]
;@ mov r2,#0x10*4
;@ cmp r2,z80xx
;@ bne opcode_FD_NF
;@ mov r0,#0xDD00
;@ orr r0,r0,r1
;@ b end_loop
;@opcode_FD_NF:
;@ mov r0,#0xFD00
;@ orr r0,r0,r1
;@ b end_loop
opcode_DD_NF2:
fetch 23
;@ notaz: we don't want to deadlock here
;@ mov r0,#0xDD0000
;@ orr r0,r0,#0xCB00
;@ orr r0,r0,r1
;@ b end_loop
;@ADD IX,BC
opcode_DD_09:
ldr r0,[z80xx]
opADD16 r0 z80bc
str r0,[z80xx]
fetch 15
;@ADD IX,DE
opcode_DD_19:
ldr r0,[z80xx]
opADD16 r0 z80de
str r0,[z80xx]
fetch 15
;@LD IX,NN
opcode_DD_21:
ldrb r0,[z80pc],#1
ldrb r1,[z80pc],#1
orr r0,r0,r1, lsl #8
strh r0,[z80xx,#2]
fetch 14
;@LD (NN),IX
opcode_DD_22:
ldrb r0,[z80pc],#1
ldrb r1,[z80pc],#1
orr r1,r0,r1, lsl #8
ldrh r0,[z80xx,#2]
writemem16
fetch 20
;@INC IX
opcode_DD_23:
ldr r0,[z80xx]
add r0,r0,#1<<16
str r0,[z80xx]
fetch 10
;@INC I (IX)
opcode_DD_24:
ldr r0,[z80xx]
opINC8H r0
str r0,[z80xx]
fetch 8
;@DEC I (IX)
opcode_DD_25:
ldr r0,[z80xx]
opDEC8H r0
str r0,[z80xx]
fetch 8
;@LD I,N (IX)
opcode_DD_26:
ldrb r0,[z80pc],#1
strb r0,[z80xx,#3]
fetch 11
;@ADD IX,IX
opcode_DD_29:
ldr r0,[z80xx]
opADD16_2 r0
str r0,[z80xx]
fetch 15
;@LD IX,(NN)
opcode_DD_2A:
ldrb r0,[z80pc],#1
ldrb r1,[z80pc],#1
orr r0,r0,r1, lsl #8
stmfd sp!,{z80xx}
readmem16
ldmfd sp!,{z80xx}
strh r0,[z80xx,#2]
fetch 20
;@DEC IX
opcode_DD_2B:
ldr r0,[z80xx]
sub r0,r0,#1<<16
str r0,[z80xx]
fetch 10
;@INC X (IX)
opcode_DD_2C:
ldr r0,[z80xx]
opINC8L r0
str r0,[z80xx]
fetch 8
;@DEC X (IX)
opcode_DD_2D:
ldr r0,[z80xx]
opDEC8L r0
str r0,[z80xx]
fetch 8
;@LD X,N (IX)
opcode_DD_2E:
ldrb r0,[z80pc],#1
strb r0,[z80xx,#2]
fetch 11
;@INC (IX+N)
opcode_DD_34:
ldrsb r0,[z80pc],#1
ldr r1,[z80xx]
add r0,r1,r0, lsl #16
mov r0,r0,lsr #16
stmfd sp!,{r0} ;@ save addr
readmem8
opINC8b
ldmfd sp!,{r1} ;@ restore addr into r1
writemem8
fetch 23
;@DEC (IX+N)
opcode_DD_35:
ldrsb r0,[z80pc],#1
ldr r1,[z80xx]
add r0,r1,r0, lsl #16
mov r0,r0,lsr #16
stmfd sp!,{r0} ;@ save addr
readmem8
opDEC8b
ldmfd sp!,{r1} ;@ restore addr into r1
writemem8
fetch 23
;@LD (IX+N),N
opcode_DD_36:
ldrsb r2,[z80pc],#1
ldrb r0,[z80pc],#1
ldr r1,[z80xx]
add r1,r1,r2, lsl #16
mov r1,r1,lsr #16
writemem8
fetch 19
;@ADD IX,SP
opcode_DD_39:
ldr r0,[z80xx]
.if FAST_Z80SP
ldr r2,[cpucontext,#z80sp_base]
sub r2,z80sp,r2
opADD16s r0 r2 16
.else
opADD16s r0 z80sp 16
.endif
str r0,[z80xx]
fetch 15
;@LD B,I ( IX )
opcode_DD_44:
ldrb r0,[z80xx,#3]
and z80bc,z80bc,#0xFF<<16
orr z80bc,z80bc,r0, lsl #24
fetch 8
;@LD B,X ( IX )
opcode_DD_45:
ldrb r0,[z80xx,#2]
and z80bc,z80bc,#0xFF<<16
orr z80bc,z80bc,r0, lsl #24
fetch 8
;@LD B,(IX,N)
opcode_DD_46:
ldrsb r0,[z80pc],#1
ldr r1,[z80xx]
add r0,r1,r0, lsl #16
mov r0,r0,lsr #16
readmem8
and z80bc,z80bc,#0xFF<<16
orr z80bc,z80bc,r0, lsl #24
fetch 19
;@LD C,I (IX)
opcode_DD_4C:
ldrb r0,[z80xx,#3]
and z80bc,z80bc,#0xFF<<24
orr z80bc,z80bc,r0, lsl #16
fetch 8
;@LD C,X (IX)
opcode_DD_4D:
ldrb r0,[z80xx,#2]
and z80bc,z80bc,#0xFF<<24
orr z80bc,z80bc,r0, lsl #16
fetch 8
;@LD C,(IX,N)
opcode_DD_4E:
ldrsb r0,[z80pc],#1
ldr r1,[z80xx]
add r0,r1,r0, lsl #16
mov r0,r0,lsr #16
readmem8
and z80bc,z80bc,#0xFF<<24
orr z80bc,z80bc,r0, lsl #16
fetch 19
;@LD D,I (IX)
opcode_DD_54:
ldrb r0,[z80xx,#3]
and z80de,z80de,#0xFF<<16
orr z80de,z80de,r0, lsl #24
fetch 8
;@LD D,X (IX)
opcode_DD_55:
ldrb r0,[z80xx,#2]
and z80de,z80de,#0xFF<<16
orr z80de,z80de,r0, lsl #24
fetch 8
;@LD D,(IX,N)
opcode_DD_56:
ldrsb r0,[z80pc],#1
ldr r1,[z80xx]
add r0,r1,r0, lsl #16
mov r0,r0,lsr #16
readmem8
and z80de,z80de,#0xFF<<16
orr z80de,z80de,r0, lsl #24
fetch 19
;@LD E,I (IX)
opcode_DD_5C:
ldrb r0,[z80xx,#3]
and z80de,z80de,#0xFF<<24
orr z80de,z80de,r0, lsl #16
fetch 8
;@LD E,X (IX)
opcode_DD_5D:
ldrb r0,[z80xx,#2]
and z80de,z80de,#0xFF<<24
orr z80de,z80de,r0, lsl #16
fetch 8
;@LD E,(IX,N)
opcode_DD_5E:
ldrsb r0,[z80pc],#1
ldr r1,[z80xx]
add r0,r1,r0, lsl #16
mov r0,r0,lsr #16
readmem8
and z80de,z80de,#0xFF<<24
orr z80de,z80de,r0, lsl #16
fetch 19
;@LD I,B (IX)
opcode_DD_60:
mov r0,z80bc,lsr#24
strb r0,[z80xx,#3]
fetch 8
;@LD I,C (IX)
opcode_DD_61:
mov r0,z80bc,lsr#16
strb r0,[z80xx,#3]
fetch 8
;@LD I,D (IX)
opcode_DD_62:
mov r0,z80de,lsr#24
strb r0,[z80xx,#3]
fetch 8
;@LD I,E (IX)
opcode_DD_63:
mov r0,z80de,lsr#16
strb r0,[z80xx,#3]
fetch 8
;@LD I,I (IX)
opcode_DD_64:
fetch 8
;@LD I,X (IX)
opcode_DD_65:
ldrb r0,[z80xx,#2]
strb r0,[z80xx,#3]
fetch 8
;@LD H,(IX,N)
opcode_DD_66:
ldrsb r0,[z80pc],#1
ldr r1,[z80xx]
add r0,r1,r0, lsl #16
mov r0,r0,lsr #16
readmem8
and z80hl,z80hl,#0xFF<<16
orr z80hl,z80hl,r0, lsl #24
fetch 19
;@LD I,A (IX)
opcode_DD_67:
mov r0,z80a,lsr#24
strb r0,[z80xx,#3]
fetch 8
;@LD X,B (IX)
opcode_DD_68:
mov r0,z80bc,lsr#24
strb r0,[z80xx,#2]
fetch 8
;@LD X,C (IX)
opcode_DD_69:
mov r0,z80bc,lsr#16
strb r0,[z80xx,#2]
fetch 8
;@LD X,D (IX)
opcode_DD_6A:
mov r0,z80de,lsr#24
strb r0,[z80xx,#2]
fetch 8
;@LD X,E (IX)
opcode_DD_6B:
mov r0,z80de,lsr#16
strb r0,[z80xx,#2]
fetch 8
;@LD X,I (IX)
opcode_DD_6C:
ldrb r0,[z80xx,#3]
strb r0,[z80xx,#2]
fetch 8
;@LD X,X (IX)
opcode_DD_6D:
fetch 8
;@LD L,(IX,N)
opcode_DD_6E:
ldrsb r0,[z80pc],#1
ldr r1,[z80xx]
add r0,r1,r0, lsl #16
mov r0,r0,lsr #16
readmem8
and z80hl,z80hl,#0xFF<<24
orr z80hl,z80hl,r0, lsl #16
fetch 19
;@LD X,A (IX)
opcode_DD_6F:
mov r0,z80a,lsr#24
strb r0,[z80xx,#2]
fetch 8
;@LD (IX,N),B
opcode_DD_70:
ldrsb r0,[z80pc],#1
ldr r1,[z80xx]
add r1,r1,r0, lsl #16
mov r1,r1,lsr #16
mov r0,z80bc, lsr #24
writemem8
fetch 19
;@LD (IX,N),C
opcode_DD_71:
ldrsb r0,[z80pc],#1
ldr r1,[z80xx]
add r1,r1,r0, lsl #16
mov r1,r1,lsr #16
mov r0,z80bc, lsr #16
and r0,r0,#0xFF
writemem8
fetch 19
;@LD (IX,N),D
opcode_DD_72:
ldrsb r0,[z80pc],#1
ldr r1,[z80xx]
add r1,r1,r0, lsl #16
mov r1,r1,lsr #16
mov r0,z80de, lsr #24
writemem8
fetch 19
;@LD (IX,N),E
opcode_DD_73:
ldrsb r0,[z80pc],#1
ldr r1,[z80xx]
add r1,r1,r0, lsl #16
mov r1,r1,lsr #16
mov r0,z80de, lsr #16
and r0,r0,#0xFF
writemem8
fetch 19
;@LD (IX,N),H
opcode_DD_74:
ldrsb r0,[z80pc],#1
ldr r1,[z80xx]
add r1,r1,r0, lsl #16
mov r1,r1,lsr #16
mov r0,z80hl, lsr #24
writemem8
fetch 19
;@LD (IX,N),L
opcode_DD_75:
ldrsb r0,[z80pc],#1
ldr r1,[z80xx]
add r1,r1,r0, lsl #16
mov r1,r1,lsr #16
mov r0,z80hl, lsr #16
and r0,r0,#0xFF
writemem8
fetch 19
;@LD (IX,N),A
opcode_DD_77:
ldrsb r0,[z80pc],#1
ldr r1,[z80xx]
add r1,r1,r0, lsl #16
mov r1,r1,lsr #16
mov r0,z80a, lsr #24
writemem8
fetch 19
;@LD A,I from (IX)
opcode_DD_7C:
ldrb r0,[z80xx,#3]
mov z80a,r0, lsl #24
fetch 8
;@LD A,X from (IX)
opcode_DD_7D:
ldrb r0,[z80xx,#2]
mov z80a,r0, lsl #24
fetch 8
;@LD A,(IX,N)
opcode_DD_7E:
ldrsb r0,[z80pc],#1
ldr r1,[z80xx]
add r0,r1,r0, lsl #16
mov r0,r0,lsr #16
readmem8
mov z80a,r0, lsl #24
fetch 19
;@ADD A,I ( IX)
opcode_DD_84:
ldrb r0,[z80xx,#3]
opADDb
fetch 8
;@ADD A,X ( IX)
opcode_DD_85:
ldrb r0,[z80xx,#2]
opADDb
fetch 8
;@ADD A,(IX+N)
opcode_DD_86:
ldrsb r0,[z80pc],#1
ldr r1,[z80xx]
add r0,r1,r0, lsl #16
mov r0,r0,lsr #16
readmem8
opADDb
fetch 19
;@ADC A,I (IX)
opcode_DD_8C:
ldrb r0,[z80xx,#3]
opADCb
fetch 8
;@ADC A,X (IX)
opcode_DD_8D:
ldrb r0,[z80xx,#2]
opADCb
fetch 8
;@ADC A,(IX+N)
opcode_DD_8E:
ldrsb r0,[z80pc],#1
ldr r1,[z80xx]
add r0,r1,r0, lsl #16
mov r0,r0,lsr #16
readmem8
opADCb
fetch 19
;@SUB A,I (IX)
opcode_DD_94:
ldrb r0,[z80xx,#3]
opSUBb
fetch 8
;@SUB A,X (IX)
opcode_DD_95:
ldrb r0,[z80xx,#2]
opSUBb
fetch 8
;@SUB A,(IX+N)
opcode_DD_96:
ldrsb r0,[z80pc],#1
ldr r1,[z80xx]
add r0,r1,r0, lsl #16
mov r0,r0,lsr #16
readmem8
opSUBb
fetch 19
;@SBC A,I (IX)
opcode_DD_9C:
ldrb r0,[z80xx,#3]
opSBCb
fetch 8
;@SBC A,X (IX)
opcode_DD_9D:
ldrb r0,[z80xx,#2]
opSBCb
fetch 8
;@SBC A,(IX+N)
opcode_DD_9E:
ldrsb r0,[z80pc],#1
ldr r1,[z80xx]
add r0,r1,r0, lsl #16
mov r0,r0,lsr #16
readmem8
opSBCb
fetch 19
;@AND I (IX)
opcode_DD_A4:
ldrb r0,[z80xx,#3]
opANDb
fetch 8
;@AND X (IX)
opcode_DD_A5:
ldrb r0,[z80xx,#2]
opANDb
fetch 8
;@AND (IX+N)
opcode_DD_A6:
ldrsb r0,[z80pc],#1
ldr r1,[z80xx]
add r0,r1,r0, lsl #16
mov r0,r0,lsr #16
readmem8
opANDb
fetch 19
;@XOR I (IX)
opcode_DD_AC:
ldrb r0,[z80xx,#3]
opXORb
fetch 8
;@XOR X (IX)
opcode_DD_AD:
ldrb r0,[z80xx,#2]
opXORb
fetch 8
;@XOR (IX+N)
opcode_DD_AE:
ldrsb r0,[z80pc],#1
ldr r1,[z80xx]
add r0,r1,r0, lsl #16
mov r0,r0,lsr #16
readmem8
opXORb
fetch 19
;@OR I (IX)
opcode_DD_B4:
ldrb r0,[z80xx,#3]
opORb
fetch 8
;@OR X (IX)
opcode_DD_B5:
ldrb r0,[z80xx,#2]
opORb
fetch 8
;@OR (IX+N)
opcode_DD_B6:
ldrsb r0,[z80pc],#1
ldr r1,[z80xx]
add r0,r1,r0, lsl #16
mov r0,r0,lsr #16
readmem8
opORb
fetch 19
;@CP I (IX)
opcode_DD_BC:
ldrb r0,[z80xx,#3]
opCPb
fetch 8
;@CP X (IX)
opcode_DD_BD:
ldrb r0,[z80xx,#2]
opCPb
fetch 8
;@CP (IX+N)
opcode_DD_BE:
ldrsb r0,[z80pc],#1
ldr r1,[z80xx]
add r0,r1,r0, lsl #16
mov r0,r0,lsr #16
readmem8
opCPb
fetch 19
opcodes_DD_CB_LOCAL: .word opcodes_DD_CB
opcode_DD_CB:
;@Looks up the opcode on the opcodes_DD_CB table and then
;@moves the PC to the location of the subroutine
ldrsb r0,[z80pc],#1
ldr r1,[z80xx]
add r0,r1,r0, lsl #16
mov r0,r0,lsr #16
ldrb r1,[z80pc],#1
ldr pc,[pc,r1, lsl #2]
.word 0x00
opcodes_DD_CB:
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
.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
;@RLC (IX+N)
opcode_DD_CB_06:
stmfd sp!,{r0} ;@ save addr
readmem8
opRLCb
ldmfd sp!,{r1} ;@ restore addr into r1
writemem8
fetch 23
;@RRC (IX+N)
opcode_DD_CB_0E:
stmfd sp!,{r0} ;@ save addr
readmem8
opRRCb
ldmfd sp!,{r1} ;@ restore addr into r1
writemem8
fetch 23
;@RL (IX+N)
opcode_DD_CB_16:
stmfd sp!,{r0} ;@ save addr
readmem8
opRLb
ldmfd sp!,{r1} ;@ restore addr into r1
writemem8
fetch 23
;@RR (IX+N)
opcode_DD_CB_1E:
stmfd sp!,{r0} ;@ save addr
readmem8
opRRb
ldmfd sp!,{r1} ;@ restore addr into r1
writemem8
fetch 23
;@SLA (IX+N)
opcode_DD_CB_26:
stmfd sp!,{r0} ;@ save addr
readmem8
opSLAb
ldmfd sp!,{r1} ;@ restore addr into r1
writemem8
fetch 23
;@SRA (IX+N)
opcode_DD_CB_2E:
stmfd sp!,{r0} ;@ save addr
readmem8
opSRAb
ldmfd sp!,{r1} ;@ restore addr into r1
writemem8
fetch 23
;@SLL (IX+N)
opcode_DD_CB_36:
stmfd sp!,{r0} ;@ save addr
readmem8
opSLLb
ldmfd sp!,{r1} ;@ restore addr into r1
writemem8
fetch 23
;@SRL (IX+N)
opcode_DD_CB_3E:
stmfd sp!,{r0} ;@ save addr
readmem8
opSRLb
ldmfd sp!,{r1} ;@ restore addr into r1
writemem8
fetch 23
;@BIT 0,(IX+N)
opcode_DD_CB_46:
readmem8
opBITb 0
fetch 20
;@BIT 1,(IX+N)
opcode_DD_CB_4E:
readmem8
opBITb 1
fetch 20
;@BIT 2,(IX+N)
opcode_DD_CB_56:
readmem8
opBITb 2
fetch 20
;@BIT 3,(IX+N)
opcode_DD_CB_5E:
readmem8
opBITb 3
fetch 20
;@BIT 4,(IX+N)
opcode_DD_CB_66:
readmem8
opBITb 4
fetch 20
;@BIT 5,(IX+N)
opcode_DD_CB_6E:
readmem8
opBITb 5
fetch 20
;@BIT 6,(IX+N)
opcode_DD_CB_76:
readmem8
opBITb 6
fetch 20
;@BIT 7,(IX+N)
opcode_DD_CB_7E:
readmem8
opBIT7b
fetch 20
;@RES 0,(IX+N)
opcode_DD_CB_86:
opRESmem 0
;@RES 1,(IX+N)
opcode_DD_CB_8E:
opRESmem 1
;@RES 2,(IX+N)
opcode_DD_CB_96:
opRESmem 2
;@RES 3,(IX+N)
opcode_DD_CB_9E:
opRESmem 3
;@RES 4,(IX+N)
opcode_DD_CB_A6:
opRESmem 4
;@RES 5,(IX+N)
opcode_DD_CB_AE:
opRESmem 5
;@RES 6,(IX+N)
opcode_DD_CB_B6:
opRESmem 6
;@RES 7,(IX+N)
opcode_DD_CB_BE:
opRESmem 7
;@SET 0,(IX+N)
opcode_DD_CB_C6:
opSETmem 0
;@SET 1,(IX+N)
opcode_DD_CB_CE:
opSETmem 1
;@SET 2,(IX+N)
opcode_DD_CB_D6:
opSETmem 2
;@SET 3,(IX+N)
opcode_DD_CB_DE:
opSETmem 3
;@SET 4,(IX+N)
opcode_DD_CB_E6:
opSETmem 4
;@SET 5,(IX+N)
opcode_DD_CB_EE:
opSETmem 5
;@SET 6,(IX+N)
opcode_DD_CB_F6:
opSETmem 6
;@SET 7,(IX+N)
opcode_DD_CB_FE:
opSETmem 7
;@POP IX
opcode_DD_E1:
.if FAST_Z80SP
opPOP
.else
mov r0,z80sp
stmfd sp!,{z80xx}
readmem16
ldmfd sp!,{z80xx}
add z80sp,z80sp,#2
.endif
strh r0,[z80xx,#2]
fetch 14
;@EX (SP),IX
opcode_DD_E3:
.if FAST_Z80SP
ldrb r0,[z80sp]
ldrb r1,[z80sp,#1]
orr r2,r0,r1, lsl #8
ldrh r1,[z80xx,#2]
mov r0,r1, lsr #8
strb r0,[z80sp,#1]
strb r1,[z80sp]
strh r2,[z80xx,#2]
.else
mov r0,z80sp
stmfd sp!,{z80xx}
readmem16
ldmfd sp!,{z80xx}
mov r2,r0
ldrh r0,[z80xx,#2]
strh r2,[z80xx,#2]
mov r1,z80sp
writemem16
.endif
fetch 23
;@PUSH IX
opcode_DD_E5:
ldr r2,[z80xx]
opPUSHreg r2
fetch 15
;@JP (IX)
opcode_DD_E9:
ldrh r0,[z80xx,#2]
rebasepc
fetch 8
;@LD SP,IX
opcode_DD_F9:
.if FAST_Z80SP
ldrh r0,[z80xx,#2]
rebasesp
.else
ldrh z80sp,[z80xx,#2]
.endif
fetch 10
;@##################################
;@##################################
;@### opcodes ED #########################
;@##################################
;@##################################
opcode_ED_NF:
fetch 8
;@ ldrb r0,[z80pc],#1
;@ ldr pc,[opcodes,r0, lsl #2]
;@ mov r0,#0xED00
;@ orr r0,r0,r1
;@ b end_loop
;@IN B,(C)
opcode_ED_40:
opIN_C
and z80bc,z80bc,#0xFF<<16
orr z80bc,z80bc,r0, lsl #24
sub r1,opcodes,#0x100
ldrb r0,[r1,r0]
and z80f,z80f,#1<<CFlag
orr z80f,z80f,r0
fetch 12
;@OUT (C),B
opcode_ED_41:
mov r1,z80bc, lsr #24
opOUT_C
fetch 12
;@SBC HL,BC
opcode_ED_42:
opSBC16 z80bc
;@LD (NN),BC
opcode_ED_43:
ldrb r0,[z80pc],#1
ldrb r1,[z80pc],#1
orr r1,r0,r1, lsl #8
mov r0,z80bc, lsr #16
writemem16
fetch 20
;@NEG
opcode_ED_44:
rsbs z80a,z80a,#0
mrs z80f,cpsr
mov z80f,z80f,lsr#28 ;@S,Z,V&C
eor z80f,z80f,#(1<<CFlag)|(1<<NFlag) ;@invert C and set n.
tst z80a,#0x0F000000 ;@H, correct
orrne z80f,z80f,#1<<HFlag
fetch 8
;@RETN, moved to ED_4D
;@opcode_ED_45:
;@IM 0
opcode_ED_46:
strb z80a,[cpucontext,#z80im]
fetch 8
;@LD I,A
opcode_ED_47:
str z80a,[cpucontext,#z80i]
fetch 9
;@IN C,(C)
opcode_ED_48:
opIN_C
and z80bc,z80bc,#0xFF<<24
orr z80bc,z80bc,r0, lsl #16
sub r1,opcodes,#0x100
ldrb r0,[r1,r0]
and z80f,z80f,#1<<CFlag
orr z80f,z80f,r0
fetch 12
;@OUT (C),C
opcode_ED_49:
mov r0,z80bc, lsr #16
and r1,r0,#0xFF
opOUT
fetch 12
;@ADC HL,BC
opcode_ED_4A:
opADC16 z80bc
;@LD BC,(NN)
opcode_ED_4B:
ldrb r0,[z80pc],#1
ldrb r1,[z80pc],#1
orr r0,r0,r1, lsl #8
readmem16
mov z80bc,r0, lsl #16
fetch 20
;@RETN
opcode_ED_45:
;@RETI
opcode_ED_4D:
ldrb r0,[cpucontext,#z80if]
tst r0,#Z80_IF2
orrne r0,r0,#Z80_IF1
biceq r0,r0,#Z80_IF1
strb r0,[cpucontext,#z80if]
opPOP
rebasepc
fetch 14
;@LD R,A
opcode_ED_4F:
mov r0,z80a,lsr#24
strb r0,[cpucontext,#z80r]
fetch 9
;@IN D,(C)
opcode_ED_50:
opIN_C
and z80de,z80de,#0xFF<<16
orr z80de,z80de,r0, lsl #24
sub r1,opcodes,#0x100
ldrb r0,[r1,r0]
and z80f,z80f,#1<<CFlag
orr z80f,z80f,r0
fetch 12
;@OUT (C),D
opcode_ED_51:
mov r1,z80de, lsr #24
opOUT_C
fetch 12
;@SBC HL,DE
opcode_ED_52:
opSBC16 z80de
;@LD (NN),DE
opcode_ED_53:
ldrb r0,[z80pc],#1
ldrb r1,[z80pc],#1
orr r1,r0,r1, lsl #8
mov r0,z80de, lsr #16
writemem16
fetch 20
;@IM 1
opcode_ED_56:
mov r0,#1
strb r0,[cpucontext,#z80im]
fetch 8
;@LD A,I
opcode_ED_57:
ldr z80a,[cpucontext,#z80i]
tst z80a,#0xFF000000
and z80f,z80f,#(1<<CFlag)
orreq z80f,z80f,#(1<<ZFlag)
orrmi z80f,z80f,#(1<<SFlag)
ldrb r0,[cpucontext,#z80if]
tst r0,#Z80_IF2
orrne z80f,z80f,#(1<<VFlag)
fetch 9
;@IN E,(C)
opcode_ED_58:
opIN_C
and z80de,z80de,#0xFF<<24
orr z80de,z80de,r0, lsl #16
sub r1,opcodes,#0x100
ldrb r0,[r1,r0]
and z80f,z80f,#1<<CFlag
orr z80f,z80f,r0
fetch 12
;@OUT (C),E
opcode_ED_59:
mov r1,z80de, lsr #16
and r1,r1,#0xFF
opOUT_C
fetch 12
;@ADC HL,DE
opcode_ED_5A:
opADC16 z80de
;@LD DE,(NN)
opcode_ED_5B:
ldrb r0,[z80pc],#1
ldrb r1,[z80pc],#1
orr r0,r0,r1, lsl #8
readmem16
mov z80de,r0, lsl #16
fetch 20
;@IM 2
opcode_ED_5E:
mov r0,#2
strb r0,[cpucontext,#z80im]
fetch 8
;@LD A,R
opcode_ED_5F:
ldrb r0,[cpucontext,#z80r]
and r0,r0,#0x80
rsb r1,z80_icount,#0
and r1,r1,#0x7F
orr r0,r0,r1
movs z80a,r0, lsl #24
and z80f,z80f,#1<<CFlag
orrmi z80f,z80f,#(1<<SFlag)
orreq z80f,z80f,#(1<<ZFlag)
ldrb r0,[cpucontext,#z80if]
tst r0,#Z80_IF2
orrne z80f,z80f,#(1<<VFlag)
fetch 9
;@IN H,(C)
opcode_ED_60:
opIN_C
and z80hl,z80hl,#0xFF<<16
orr z80hl,z80hl,r0, lsl #24
sub r1,opcodes,#0x100
ldrb r0,[r1,r0]
and z80f,z80f,#1<<CFlag
orr z80f,z80f,r0
fetch 12
;@OUT (C),H
opcode_ED_61:
mov r1,z80hl, lsr #24
opOUT_C
fetch 12
;@SBC HL,HL
opcode_ED_62:
opSBC16HL
;@RRD
opcode_ED_67:
readmem8HL
mov r1,r0,ror#4
orr r0,r1,z80a,lsr#20
bic z80a,z80a,#0x0F000000
orr z80a,z80a,r1,lsr#4
writemem8HL
sub r1,opcodes,#0x100
ldrb r0,[r1,z80a, lsr #24]
and z80f,z80f,#1<<CFlag
orr z80f,z80f,r0
fetch 18
;@IN L,(C)
opcode_ED_68:
opIN_C
and z80hl,z80hl,#0xFF<<24
orr z80hl,z80hl,r0, lsl #16
and z80f,z80f,#1<<CFlag
sub r1,opcodes,#0x100
ldrb r0,[r1,r0]
orr z80f,z80f,r0
fetch 12
;@OUT (C),L
opcode_ED_69:
mov r1,z80hl, lsr #16
and r1,r1,#0xFF
opOUT_C
fetch 12
;@ADC HL,HL
opcode_ED_6A:
opADC16HL
;@RLD
opcode_ED_6F:
readmem8HL
orr r0,r0,z80a,lsl#4
mov r0,r0,ror#28
and z80a,z80a,#0xF0000000
orr z80a,z80a,r0,lsl#16
and z80a,z80a,#0xFF000000
writemem8HL
sub r1,opcodes,#0x100
ldrb r0,[r1,z80a, lsr #24]
and z80f,z80f,#1<<CFlag
orr z80f,z80f,r0
fetch 18
;@IN F,(C)
opcode_ED_70:
opIN_C
and z80f,z80f,#1<<CFlag
sub r1,opcodes,#0x100
ldrb r0,[r1,r0]
orr z80f,z80f,r0
fetch 12
;@OUT (C),0
opcode_ED_71:
mov r1,#0
opOUT_C
fetch 12
;@SBC HL,SP
opcode_ED_72:
.if FAST_Z80SP
ldr r0,[cpucontext,#z80sp_base]
sub r0,z80sp,r0
mov r0, r0, lsl #16
.else
mov r0,z80sp,lsl#16
.endif
opSBC16 r0
;@LD (NN),SP
opcode_ED_73:
ldrb r0,[z80pc],#1
ldrb r1,[z80pc],#1
orr r1,r0,r1, lsl #8
.if FAST_Z80SP
ldr r0,[cpucontext,#z80sp_base]
sub r0,z80sp,r0
.else
mov r0,z80sp
.endif
writemem16
fetch 16
;@IN A,(C)
opcode_ED_78:
opIN_C
mov z80a,r0, lsl #24
and z80f,z80f,#1<<CFlag
sub r1,opcodes,#0x100
ldrb r0,[r1,r0]
orr z80f,z80f,r0
fetch 12
;@OUT (C),A
opcode_ED_79:
mov r1,z80a, lsr #24
opOUT_C
fetch 12
;@ADC HL,SP
opcode_ED_7A:
.if FAST_Z80SP
ldr r0,[cpucontext,#z80sp_base]
sub r0,z80sp,r0
mov r0, r0, lsl #16
.else
mov r0,z80sp,lsl#16
.endif
opADC16 r0
;@LD SP,(NN)
opcode_ED_7B:
ldrb r0,[z80pc],#1
ldrb r1,[z80pc],#1
orr r0,r0,r1, lsl #8
readmem16
.if FAST_Z80SP
rebasesp
.else
mov z80sp,r0
.endif
fetch 20
;@LDI
opcode_ED_A0:
copymem8HL_DE
add z80hl,z80hl,#1<<16
add z80de,z80de,#1<<16
subs z80bc,z80bc,#1<<16
bic z80f,z80f,#(1<<VFlag)|(1<<NFlag)|(1<<HFlag)
orrne z80f,z80f,#1<<VFlag
fetch 16
;@CPI
opcode_ED_A1:
readmem8HL
add z80hl,z80hl,#0x00010000
mov r1,z80a,lsl#4
cmp z80a,r0,lsl#24
and z80f,z80f,#1<<CFlag
orr z80f,z80f,#1<<NFlag
orrmi z80f,z80f,#1<<SFlag
orreq z80f,z80f,#1<<ZFlag
cmp r1,r0,lsl#28
orrcc z80f,z80f,#1<<HFlag
subs z80bc,z80bc,#0x00010000
orrne z80f,z80f,#1<<VFlag
fetch 16
;@INI
opcode_ED_A2:
opIN_C
and z80f,r0,#0x80
mov z80f,z80f,lsr#2 ;@NFlag set by bit 7
;@ mov r1,z80bc,lsl#8
;@ add r1,r1,#0x01000000
;@ adds r1,r1,r0,lsl#24
;@ orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag) ;@ CF & HF set if (HL) + ((C+1) & 0xFF) > 0xFF
writemem8HL
add z80hl,z80hl,#1<<16
sub z80bc,z80bc,#1<<24
tst z80bc,#0xFF<<24
orrmi z80f,z80f,#1<<SFlag
orreq z80f,z80f,#1<<ZFlag
fetch 16
;@OUTI
opcode_ED_A3:
readmem8HL
add z80hl,z80hl,#1<<16
and z80f,r0,#0x80
mov z80f,z80f,lsr#2 ;@NFlag set by bit 7
mov r1,z80hl,lsl#8
adds r1,r1,r0,lsl#24
orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag) ;@ CF & HF set if (HL)+L > 0xFF
sub z80bc,z80bc,#1<<24
tst z80bc,#0xFF<<24
orrmi z80f,z80f,#1<<SFlag
orreq z80f,z80f,#1<<ZFlag
mov r1,r0
opOUT_C
fetch 16
;@LDD
opcode_ED_A8:
copymem8HL_DE
sub z80hl,z80hl,#1<<16
sub z80de,z80de,#1<<16
subs z80bc,z80bc,#1<<16
bic z80f,z80f,#(1<<VFlag)|(1<<NFlag)|(1<<HFlag)
orrne z80f,z80f,#1<<VFlag
fetch 16
;@CPD
opcode_ED_A9:
readmem8HL
sub z80hl,z80hl,#1<<16
mov r1,z80a,lsl#4
cmp z80a,r0,lsl#24
and z80f,z80f,#1<<CFlag
orr z80f,z80f,#1<<NFlag
orrmi z80f,z80f,#1<<SFlag
orreq z80f,z80f,#1<<ZFlag
cmp r1,r0,lsl#28
orrcc z80f,z80f,#1<<HFlag
subs z80bc,z80bc,#0x00010000
orrne z80f,z80f,#1<<VFlag
fetch 16
;@IND
opcode_ED_AA:
opIN_C
and z80f,r0,#0x80
mov z80f,z80f,lsr#2 ;@NFlag set by bit 7
;@ mov r1,z80bc,lsl#8
;@ sub r1,r1,#0x01000000
;@ adds r1,r1,r0,lsl#24
;@ orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag) ;@ CF & HF set if (HL) + ((C-1) & 0xFF) > 0xFF
writemem8HL
sub z80hl,z80hl,#1<<16
sub z80bc,z80bc,#1<<24
tst z80bc,#0xFF<<24
orrmi z80f,z80f,#1<<SFlag
orreq z80f,z80f,#1<<ZFlag
fetch 16
;@OUTD
opcode_ED_AB:
readmem8HL
sub z80hl,z80hl,#1<<16
and z80f,r0,#0x80
mov z80f,z80f,lsr#2 ;@NFlag set by bit 7
mov r1,z80hl,lsl#8
adds r1,r1,r0,lsl#24
orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag) ;@ CF & HF set if r0+HL > 0xFF
sub z80bc,z80bc,#1<<24
tst z80bc,#0xFF<<24
orrmi z80f,z80f,#1<<SFlag
orreq z80f,z80f,#1<<ZFlag
mov r1,r0
opOUT_C
fetch 16
;@LDIR
opcode_ED_B0:
copymem8HL_DE
add z80hl,z80hl,#1<<16
add z80de,z80de,#1<<16
subs z80bc,z80bc,#1<<16
bic z80f,z80f,#(1<<VFlag)|(1<<NFlag)|(1<<HFlag)
orrne z80f,z80f,#1<<VFlag
subne z80pc,z80pc,#2
subne z80_icount,z80_icount,#5
fetch 16
;@CPIR
opcode_ED_B1:
readmem8HL
add z80hl,z80hl,#1<<16
mov r1,z80a,lsl#4
cmp z80a,r0,lsl#24
and z80f,z80f,#1<<CFlag
orr z80f,z80f,#1<<NFlag
orrmi z80f,z80f,#1<<SFlag
orreq z80f,z80f,#1<<ZFlag
cmp r1,r0,lsl#28
orrcc z80f,z80f,#1<<HFlag
subs z80bc,z80bc,#1<<16
bne opcode_ED_B1_decpc
fetch 16
opcode_ED_B1_decpc:
orr z80f,z80f,#1<<VFlag
tst z80f,#1<<ZFlag
subeq z80pc,z80pc,#2
subeq z80_icount,z80_icount,#5
fetch 16
;@INIR
opcode_ED_B2:
opIN_C
and z80f,r0,#0x80
mov z80f,z80f,lsr#2 ;@NFlag set by bit 7
;@ mov r1,z80bc,lsl#8
;@ add r1,r1,#0x01000000
;@ adds r1,r1,r0,lsl#24
;@ orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag) ;@ CF & HF set if (HL) + ((C+1) & 0xFF) > 0xFF
writemem8HL
add z80hl,z80hl,#1<<16
sub z80bc,z80bc,#1<<24
tst z80bc,#0xFF<<24
orrmi z80f,z80f,#1<<SFlag
orreq z80f,z80f,#1<<ZFlag
subne z80pc,z80pc,#2
subne z80_icount,z80_icount,#5
fetch 16
;@OTIR
opcode_ED_B3:
readmem8HL
add z80hl,z80hl,#1<<16
and z80f,r0,#0x80
mov z80f,z80f,lsr#2 ;@NFlag set by bit 7
mov r1,z80hl,lsl#8
adds r1,r1,r0,lsl#24
orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag) ;@ CF & HF set if r0+HL > 0xFF
sub z80bc,z80bc,#1<<24
tst z80bc,#0xFF<<24
orrmi z80f,z80f,#1<<SFlag
orreq z80f,z80f,#1<<ZFlag
subne z80pc,z80pc,#2
subne z80_icount,z80_icount,#5
mov r1,r0
opOUT_C
fetch 16
;@LDDR
opcode_ED_B8:
copymem8HL_DE
sub z80hl,z80hl,#1<<16
sub z80de,z80de,#1<<16
subs z80bc,z80bc,#1<<16
bic z80f,z80f,#(1<<VFlag)|(1<<NFlag)|(1<<HFlag)
orrne z80f,z80f,#1<<VFlag
subne z80pc,z80pc,#2
subne z80_icount,z80_icount,#5
fetch 16
;@CPDR
opcode_ED_B9:
readmem8HL
sub z80hl,z80hl,#1<<16
mov r1,z80a,lsl#4
cmp z80a,r0,lsl#24
and z80f,z80f,#1<<CFlag
orr z80f,z80f,#1<<NFlag
orrmi z80f,z80f,#1<<SFlag
orreq z80f,z80f,#1<<ZFlag
cmp r1,r0,lsl#28
orrcc z80f,z80f,#1<<HFlag
subs z80bc,z80bc,#1<<16
bne opcode_ED_B9_decpc
fetch 16
opcode_ED_B9_decpc:
orr z80f,z80f,#1<<VFlag
tst z80f,#1<<ZFlag
subeq z80pc,z80pc,#2
subeq z80_icount,z80_icount,#5
fetch 16
;@INDR
opcode_ED_BA:
opIN_C
and z80f,r0,#0x80
mov z80f,z80f,lsr#2 ;@NFlag set by bit 7
;@ mov r1,z80bc,lsl#8
;@ sub r1,r1,#0x01000000
;@ adds r1,r1,r0,lsl#24
;@ orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag) ;@ CF & HF set if (HL) + ((C-1) & 0xFF) > 0xFF
writemem8HL
sub z80hl,z80hl,#1<<16
sub z80bc,z80bc,#1<<24
tst z80bc,#0xFF<<24
orrmi z80f,z80f,#1<<SFlag
orreq z80f,z80f,#1<<ZFlag
subne z80pc,z80pc,#2
subne z80_icount,z80_icount,#5
fetch 16
;@OTDR
opcode_ED_BB:
readmem8HL
sub z80hl,z80hl,#1<<16
and z80f,r0,#0x80
mov z80f,z80f,lsr#2 ;@NFlag set by bit 7
mov r1,z80hl,lsl#8
adds r1,r1,r0,lsl#24
orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag) ;@ CF & HF set if r0+HL > 0xFF
sub z80bc,z80bc,#1<<24
tst z80bc,#0xFF<<24
orrmi z80f,z80f,#1<<SFlag
orreq z80f,z80f,#1<<ZFlag
subne z80pc,z80pc,#2
subne z80_icount,z80_icount,#5
mov r1,r0
opOUT_C
fetch 16
;@##################################
;@##################################
;@### opcodes FD #########################
;@##################################
;@##################################
;@Since DD and FD opcodes are all the same apart from the address
;@register they use. When a FD intruction the program runs the code
;@from the DD location but the address of the IY reg is passed instead
;@of IX
;@end_loop:
;@ b end_loop
;@ vim:filetype=armasm