Advertisement
xiahanlu

杂项

Oct 9th, 2018
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;; cpu_optick.asm
  2. ;; Sharp LR35902 Chip Opcode for GameBoy
  3. ;;
  4. ;; Copyright (C) 2018 moecmks
  5. ;; This file is part of KS3578.
  6. ;;
  7. ;; Copyright (C) 2018 moecmks
  8. ;; This file is part of KS3578.
  9. ;;
  10. ;; do What The Fuck you want to Public License
  11. ;;
  12. ;; Version 1.0, March 2000
  13. ;; Copyright (C) 2000 Banlu Kemiyatorn (]d).
  14. ;; 136 Nives 7 Jangwattana 14 Laksi Bangkok
  15. ;; Everyone is permitted to copy and distribute verbatim copies
  16. ;; of this license document, but changing it is not allowed.
  17. ;;
  18. ;; Ok, the purpose of this license is simple
  19. ;; and you just
  20. ;;
  21. ;; DO WHAT THE FUCK YOU WANT TO.
  22. ;;
  23.  
  24.   .686                      ; create 32 bit code          
  25.   .model flat, stdcall      ; 32 bit memory model
  26.   option casemap :none      ; case sensitive
  27.  
  28. ;; Sharp LR35902 Chip opcode mapper
  29. ;; http://www.pastraiser.com/cpu/gameboy/gameboy_opcodes.html
  30. ;; Z80 Chip opcode mapper
  31. ;; http://clrhome.org/table/
  32.  
  33. ;; Register F Mask
  34. ;; The register flag field is different from the standard, in order to optimize instruction operation.
  35. Z_FLAG equ 040H
  36. H_FLAG equ 010H
  37. N_FLAG equ 002H
  38. C_FLAG equ 001H
  39. ZC_FLAG equ 041H
  40.  
  41. ;; extern memory/IO read/write
  42. extrn gameboy_mmu_read@8:proc  ;; prototype ks_uint8 __stdcall gameboy_mmu_read (void;;gameboy, ks_uint16 addresss)
  43. extrn gameboy_mmu_write@12:proc ;; prototype void __stdcall gameboy_mmu_write (void;;gameboy, ks_uint16 addresss, ks_uint8 value)
  44. extrn gameboy_mmu_read_w@8:proc ;; prototype ks_uint16 __stdcall gameboy_mmu_read_w (void;;gameboy, ks_uint16 addresss)
  45. extrn gameboy_mmu_write_w@12:proc ;; prototype void __stdcall gameboy_mmu_write_w (void;;gameboy, ks_uint16 addresss, ks_uint16 value)
  46.  
  47. ;;  define union .
  48. defREG macro lo, hi
  49.   union
  50.     struct
  51.       lo db ?
  52.       hi db ?
  53.     ends
  54.     hi&lo dw ?
  55.   ends
  56. endm
  57.  
  58. defREG2 macro lo, hi, blk
  59.   union
  60.     struct
  61.       lo db ?
  62.       hi db ?
  63.     ends
  64.     blk dw ?
  65.   ends
  66. endm
  67.  
  68. ;;  XXX:memory order dep.
  69. cpu struct
  70.   defREG F, A  ;; A (Accumulator)
  71.                ;; probably the most commonly used register.
  72.                ;; Many instructions have special extended operation codes for accumulators.
  73.                ;; F (Program status byte)
  74.                
  75.   ;; defREG C, B ;; A2008: syntax error : C
  76.   union
  77.     struct
  78.       C_ db ?
  79.       B db ?
  80.     ends
  81.     BC dw ?
  82.   ends           ;; Register BC, without special explanation.
  83.   defREG E, D    ;; Register DE, without special explanation.
  84.   defREG L, H    ;; Register HL, which is mostly used to address 16-bit address data,
  85.                  ;;                              also has the basic properties of BC, DE registers
  86.   defREG2 SP_LO, SP_HI, SP_ ;; Stack Pointer.
  87.   defREG2 PC_LO, PC_HI, PC ;; Program Pointer.
  88.  
  89.   IME db ?        ;; Interrupt Master Enable
  90.  
  91.   halt dd ?     ;; for Halt
  92.  
  93.   stop dd ?     ;; for stop
  94.  
  95.   key1 db ?  
  96.  
  97.   gameboy dd ?
  98. cpu ends
  99.  
  100.     .code
  101.  
  102. ;;  prototype ks_int32 cpu_optick (struct cpu;;cpu_);
  103. cpu_optick proc C
  104.              option prologue:none, epilogue:none
  105.  
  106.         push ebx ;U -  save old frame      
  107.         push edi ;V -  save old frame
  108.         push esi
  109.         nop  
  110.        
  111. YG_PF_8 equ bl        
  112. YG_PF equ ebx
  113. YG_PC equ esi
  114. YG_GP equ edi
  115.  
  116. _GB_INT3_ASSERT macro address
  117.   .if [YG_GP].PC == address
  118.     int 3
  119.   .endif
  120. endm  
  121.         ; ebx <- save now P (cpu's PSB reg)
  122.         ; esi <- save now PC (cpu's EIP reg)
  123.         ; edi <- save regs root
  124.         ; eax <- calc temp or final calc out reslt
  125.         ; ecx <- calc temp
  126.         ; edx <- calc temp
  127.        
  128.         mov YG_GP, [esp+4+12]   ;; fetch CPU struct
  129.         mov si, [YG_GP].PC  
  130.         mov bl, [YG_GP].F
  131.         assume edi:ptr cpu
  132. ;;_GB_INT3_ASSERT 02185H
  133.         ; Fetch Opcode, PC++
  134.         push YG_PC
  135.         push [YG_GP].gameboy
  136.         call gameboy_mmu_read@8
  137.         inc YG_PC
  138.         and eax, 255
  139.         jmp dword ptr[OPTAB+eax*4]
  140.        
  141. EmptyMacro macro
  142. endm  
  143.  
  144. SetCyclesAndRet macro Cycles
  145.   ;; write back PC
  146.   mov [YG_GP].PC, si
  147.   mov eax, Cycles
  148.   jmp V_EXIT
  149. endm
  150.  
  151. SetCyclesRetP macro Cycles
  152.   ;; write back PC
  153.   mov [YG_GP].F, bl
  154.   SetCyclesAndRet Cycles
  155. endm
  156.  
  157. ;;  Register access-write unwind
  158. B_Write equ mov [YG_GP].B, al
  159. C_Write equ mov [YG_GP].C_, al
  160. D_Write equ mov [YG_GP].D, al
  161. E_Write equ mov [YG_GP].E, al
  162. H_Write equ mov [YG_GP].H, al
  163. L_Write equ mov [YG_GP].L, al
  164. A_Write equ mov [YG_GP].A, al
  165. F_Write equ mov [YG_GP].F, al
  166. SP_Write equ mov [YG_GP].SP_, ax
  167. DE_Write equ mov [YG_GP].DE, ax
  168. BC_Write equ mov [YG_GP].BC, ax
  169. HL_Write equ mov [YG_GP].HL, ax
  170. AF_Write equ mov [YG_GP].AF, ax
  171. PC_Write equ mov [YG_GP].PC, ax
  172.  
  173. ;; (Imm16) := Z80Register:BYTE
  174. xImm16_WriteReg8 macro _Reg
  175.   mov cl, [YG_GP]._Reg
  176.   push ecx
  177.   push eax
  178.   push [YG_GP].gameboy
  179.   call gameboy_mmu_write_w@12  
  180. endm
  181.  
  182. ;; (Imm16) := Z80Register:WORD
  183. xImm16_WriteReg16 macro _Reg
  184.   mov cx, [YG_GP]._Reg
  185.   push ecx
  186.   push eax
  187.   push [YG_GP].gameboy
  188.   call gameboy_mmu_write_w@12  
  189. endm
  190.  
  191. ;; (Imm16) := Z80Register-SP
  192. xImm16_WriteRegSP macro
  193.   xImm16_WriteReg16 SP_
  194. endm
  195.  
  196. ;; (Imm16) := Z80Register-A
  197. xImm16_WriteRegA macro
  198.   xImm16_WriteReg8 A
  199. endm
  200.  
  201. ;; (Z80Register:WORD ) :=  Value8:eax::al
  202. xRegister_WriteReg8 macro _Reg
  203.   push eax
  204.   mov ax, [YG_GP]._Reg
  205.   push eax
  206.   push [YG_GP].gameboy
  207.   call gameboy_mmu_write@12
  208. endm
  209.  
  210. ;; Unwind4
  211. xBC_Write equ xRegister_WriteReg8 BC  
  212. xDE_Write equ xRegister_WriteReg8 DE
  213. xHL_Write equ xRegister_WriteReg8 HL
  214. xAF_Write equ xRegister_WriteReg8 AF
  215. xPC_Write equ xRegister_WriteReg8 PC
  216.  
  217. xHL_Write_Inc macro
  218.   xHL_Write
  219.   inc [YG_GP].HL
  220. endm
  221.  
  222. xHL_Write_Dec macro
  223.   xHL_Write
  224.   dec [YG_GP].HL
  225. endm
  226.  
  227. ;;  Register access-read unwind
  228. B_Read equ  mov al, [YG_GP].B
  229. C_Read equ  mov al, [YG_GP].C_
  230. D_Read equ  mov al, [YG_GP].D
  231. E_Read equ  mov al, [YG_GP].E
  232. H_Read equ  mov al, [YG_GP].H
  233. L_Read equ  mov al, [YG_GP].L
  234. A_Read equ  mov al, [YG_GP].A
  235. BC_Read equ  mov ax, [YG_GP].BC
  236. DE_Read equ  mov ax, [YG_GP].DE
  237. HL_Read equ  mov ax, [YG_GP].HL
  238. SP_Read equ  mov ax, [YG_GP].SP_
  239. AF_Read equ  mov ax, [YG_GP].AF
  240.  
  241. ;; Imm8:eax::al := FetchPC++
  242. Imm8_Read macro
  243.   push    esi
  244.   push   [YG_GP].gameboy
  245.   call    gameboy_mmu_read@8
  246.   inc     esi
  247. endm
  248.  
  249. ;; Imm16:eax::ax := FetchPC, FetchPC +=2
  250. Imm16_Read macro
  251.   push    esi
  252.   push   [YG_GP].gameboy
  253.   call    gameboy_mmu_read_w@8
  254.   add     esi, 2
  255. endm
  256.  
  257. Read_ByxX86SpecRegister macro _Reg
  258.   ;;  _Reg:x86Register
  259.   push    _Reg
  260.   push   [YG_GP].gameboy
  261.   call    gameboy_mmu_read@8
  262.   inc     esi
  263. endm
  264.  
  265. Imm8Read_ExpandAddress16 macro
  266.   Imm8_Read
  267.   add eax, 0FF00h
  268. endm
  269.  
  270. Imm8_ExpandSignWord macro
  271.   Imm8_Read
  272.   movsx eax, al
  273. endm
  274.  
  275. C_ExpandAddress16 macro
  276.   mov al, [YG_GP].C_
  277.   add eax, 0FF00h
  278. endm
  279.  
  280. Imm8Read_ExpandAddress16_Fetch macro
  281.   Imm8Read_ExpandAddress16
  282.   Read_ByxX86SpecRegister eax
  283. endm
  284.  
  285. Imm16Read_Address_Fetch macro
  286.   Imm16_Read
  287.   Read_ByxX86SpecRegister eax
  288. endm
  289.  
  290. C_ExpandAddress16_Fetch macro
  291.   mov al, [YG_GP].C_
  292.   add eax, 0FF00h
  293.   Read_ByxX86SpecRegister eax
  294. endm
  295.  
  296. xRegister_Read macro _Reg
  297.   mov ax, [YG_GP].&_Reg
  298.   push eax
  299.   push [YG_GP].gameboy
  300.   call gameboy_mmu_read@8
  301. endm
  302.  
  303. ;; Unwind5
  304. xBC_Read equ xRegister_Read BC  
  305. xDE_Read equ xRegister_Read DE
  306. xHL_Read equ xRegister_Read HL
  307. xAF_Read equ xRegister_Read AF
  308. xPC_Read equ xRegister_Read PC
  309.  
  310. xHL_Read_Inc macro
  311.   xHL_Read
  312.   inc [YG_GP].HL
  313. endm
  314.  
  315. xHL_Read_Dec macro
  316.   xHL_Read
  317.   dec [YG_GP].HL
  318. endm
  319.  
  320. LD@Imm8 macro OpCase, Cycles_, WriteOrExt
  321.  OpCase&:
  322.     Imm8_Read
  323.     WriteOrExt
  324.     SetCyclesAndRet Cycles_
  325. endm
  326.       LD@Imm8 OP06, 8,  B_Write ;; LD B Imm8, 2, Cycles:8
  327.       LD@Imm8 OP0E, 8,  C_Write ;; LD C Imm8, 2, Cycles:8
  328.       LD@Imm8 OP16, 8,  D_Write ;; LD D Imm8, 2, Cycles:8
  329.       LD@Imm8 OP1E, 8,  E_Write ;; LD E Imm8, 2, Cycles:8
  330.       LD@Imm8 OP26, 8,  H_Write ;; LD H Imm8, 2, Cycles:8
  331.       LD@Imm8 OP2E, 8,  L_Write ;; LD L Imm8, 2, Cycles:8
  332.       LD@Imm8 OP36,12,  xHL_Write ;; LD xHL Imm8, 2, Cycles:8
  333.       LD@Imm8 OP3E, 8,  A_Write ;; LD A Imm8, 2, Cycles:8
  334.    
  335. LD@Imm16 macro OpCase, Cycles_, lrReg
  336.  OpCase&:
  337.     Imm16_Read
  338.     mov [YG_GP].&lrReg, ax
  339.     SetCyclesAndRet Cycles_
  340. endm    
  341.       LD@Imm16 OP01, 12, BC ;; LD BC Imm16, 3 Cycles:12
  342.       LD@Imm16 OP11, 12, DE ;; LD DE Imm16, 3 Cycles:12    
  343.       LD@Imm16 OP21, 12, HL ;; LD HL Imm16, 3 Cycles:12    
  344.       LD@Imm16 OP31, 12, SP_ ;; LD SP Imm16, 3 Cycles:12      
  345.  
  346. LD@RxHLToRxHL macro OpCase, Cycles_, ReadOrExt, WriteOrExt
  347.  OpCase&:
  348.     ReadOrExt
  349.     WriteOrExt
  350.     SetCyclesAndRet Cycles_
  351. endm      
  352.       LD@RxHLToRxHL OP40, 4, B_Read, B_Write ;; LD B B, 1 Cycles:4
  353.       LD@RxHLToRxHL OP41, 4, C_Read, B_Write ;; LD B C, 1 Cycles:4
  354.       LD@RxHLToRxHL OP42, 4, D_Read, B_Write ;; LD B D, 1 Cycles:4
  355.       LD@RxHLToRxHL OP43, 4, E_Read, B_Write ;; LD B E, 1 Cycles:4
  356.       LD@RxHLToRxHL OP44, 4, H_Read, B_Write ;; LD B H, 1 Cycles:4
  357.       LD@RxHLToRxHL OP45, 4, L_Read, B_Write ;; LD B L, 1 Cycles:4
  358.       LD@RxHLToRxHL OP46, 8, xHL_Read, B_Write ;; LD B xHL, 1 Cycles:8
  359.       LD@RxHLToRxHL OP47, 4, A_Read, B_Write ;; LD B A, 1 Cycles:4  
  360.      
  361.       LD@RxHLToRxHL OP48, 4, B_Read, C_Write ;; LD C B, 1 Cycles:4
  362.       LD@RxHLToRxHL OP49, 4, C_Read, C_Write ;; LD C C, 1 Cycles:4
  363.       LD@RxHLToRxHL OP4A, 4, D_Read, C_Write ;; LD C D, 1 Cycles:4
  364.       LD@RxHLToRxHL OP4B, 4, E_Read, C_Write ;; LD C E, 1 Cycles:4
  365.       LD@RxHLToRxHL OP4C, 4, H_Read, C_Write ;; LD C H, 1 Cycles:4
  366.       LD@RxHLToRxHL OP4D, 4, L_Read, C_Write ;; LD C L, 1 Cycles:4
  367.       LD@RxHLToRxHL OP4E, 8, xHL_Read, C_Write ;; LD C xHL, 1 Cycles:8
  368.       LD@RxHLToRxHL OP4F, 4, A_Read, C_Write ;; LD C A, 1 Cycles:4  
  369.  
  370.       LD@RxHLToRxHL OP50, 4, B_Read, D_Write ;; LD D B, 1 Cycles:4
  371.       LD@RxHLToRxHL OP51, 4, C_Read, D_Write ;; LD D C, 1 Cycles:4
  372.       LD@RxHLToRxHL OP52, 4, D_Read, D_Write ;; LD D D, 1 Cycles:4
  373.       LD@RxHLToRxHL OP53, 4, E_Read, D_Write ;; LD D E, 1 Cycles:4
  374.       LD@RxHLToRxHL OP54, 4, H_Read, D_Write ;; LD D H, 1 Cycles:4
  375.       LD@RxHLToRxHL OP55, 4, L_Read, D_Write ;; LD D L, 1 Cycles:4
  376.       LD@RxHLToRxHL OP56, 8, xHL_Read, D_Write ;; LD D xHL, 1 Cycles:8
  377.       LD@RxHLToRxHL OP57, 4, A_Read, D_Write ;; LD D A, 1 Cycles:4  
  378.      
  379.       LD@RxHLToRxHL OP58, 4, B_Read, E_Write ;; LD E B, 1 Cycles:4
  380.       LD@RxHLToRxHL OP59, 4, C_Read, E_Write ;; LD E C, 1 Cycles:4
  381.       LD@RxHLToRxHL OP5A, 4, D_Read, E_Write ;; LD E D, 1 Cycles:4
  382.       LD@RxHLToRxHL OP5B, 4, E_Read, E_Write ;; LD E E, 1 Cycles:4
  383.       LD@RxHLToRxHL OP5C, 4, H_Read, E_Write ;; LD E H, 1 Cycles:4
  384.       LD@RxHLToRxHL OP5D, 4, L_Read, E_Write ;; LD E L, 1 Cycles:4
  385.       LD@RxHLToRxHL OP5E, 8, xHL_Read, E_Write ;; LD E xHL, 1 Cycles:8
  386.       LD@RxHLToRxHL OP5F, 4, A_Read, E_Write ;; LD E A, 1 Cycles:4  
  387.  
  388.       LD@RxHLToRxHL OP60, 4, B_Read, H_Write ;; LD H B, 1 Cycles:4
  389.       LD@RxHLToRxHL OP61, 4, C_Read, H_Write ;; LD H C, 1 Cycles:4
  390.       LD@RxHLToRxHL OP62, 4, D_Read, H_Write ;; LD H D, 1 Cycles:4
  391.       LD@RxHLToRxHL OP63, 4, E_Read, H_Write ;; LD H E, 1 Cycles:4
  392.       LD@RxHLToRxHL OP64, 4, H_Read, H_Write ;; LD H H, 1 Cycles:4
  393.       LD@RxHLToRxHL OP65, 4, L_Read, H_Write ;; LD H L, 1 Cycles:4
  394.       LD@RxHLToRxHL OP66, 8, xHL_Read, H_Write ;; LD H xHL, 1 Cycles:8
  395.       LD@RxHLToRxHL OP67, 4, A_Read, H_Write ;; LD H A, 1 Cycles:4  
  396.      
  397.       LD@RxHLToRxHL OP68, 4, B_Read, L_Write ;; LD L B, 1 Cycles:4
  398.       LD@RxHLToRxHL OP69, 4, C_Read, L_Write ;; LD L C, 1 Cycles:4
  399.       LD@RxHLToRxHL OP6A, 4, D_Read, L_Write ;; LD L D, 1 Cycles:4
  400.       LD@RxHLToRxHL OP6B, 4, E_Read, L_Write ;; LD L E, 1 Cycles:4
  401.       LD@RxHLToRxHL OP6C, 4, H_Read, L_Write ;; LD L H, 1 Cycles:4
  402.       LD@RxHLToRxHL OP6D, 4, L_Read, L_Write ;; LD L L, 1 Cycles:4
  403.       LD@RxHLToRxHL OP6E, 8, xHL_Read, L_Write ;; LD L xHL, 1 Cycles:8
  404.       LD@RxHLToRxHL OP6F, 4, A_Read, L_Write ;; LD L A, 1 Cycles:4  
  405.        
  406.       LD@RxHLToRxHL OP70, 8, B_Read, xHL_Write ;; LD xHL B, 1 Cycles:8
  407.       LD@RxHLToRxHL OP71, 8, C_Read, xHL_Write ;; LD xHL C, 1 Cycles:8
  408.       LD@RxHLToRxHL OP72, 8, D_Read, xHL_Write ;; LD xHL D, 1 Cycles:8
  409.       LD@RxHLToRxHL OP73, 8, E_Read, xHL_Write ;; LD xHL E, 1 Cycles:8
  410.       LD@RxHLToRxHL OP74, 8, H_Read, xHL_Write ;; LD xHL H, 1 Cycles:8
  411.       LD@RxHLToRxHL OP75, 8, L_Read, xHL_Write ;; LD xHL L, 1 Cycles:8
  412.       ;; LD@RxHLToRxHL OP76, 8, xHL_Read, xHL_Write ;; LD xHL xHL, 1 Cycles:8
  413.       LD@RxHLToRxHL OP02, 8, A_Read, xBC_Write ;; LD xBC A, 1 Cycles:8    
  414.       LD@RxHLToRxHL OP12, 8, A_Read, xDE_Write ;; LD xDE A, 1 Cycles:8    
  415.       LD@RxHLToRxHL OP77, 8, A_Read, xHL_Write ;; LD xHL A, 1 Cycles:8    
  416.       LD@RxHLToRxHL OP22, 8, A_Read, xHL_Write_Inc;; LD xHL++ A, 1 Cycles:8  
  417.       LD@RxHLToRxHL OP32, 8, A_Read, xHL_Write_Dec ;; LD xHL-- A, 1 Cycles:8  
  418.        
  419.       LD@RxHLToRxHL OP78, 4, B_Read, A_Write ;; LD A B, 1 Cycles:4
  420.       LD@RxHLToRxHL OP79, 4, C_Read, A_Write ;; LD A C, 1 Cycles:4
  421.       LD@RxHLToRxHL OP7A, 4, D_Read, A_Write ;; LD A D, 1 Cycles:4
  422.       LD@RxHLToRxHL OP7B, 4, E_Read, A_Write ;; LD A E, 1 Cycles:4
  423.       LD@RxHLToRxHL OP7C, 4, H_Read, A_Write ;; LD A H, 1 Cycles:4
  424.       LD@RxHLToRxHL OP7D, 4, L_Read, A_Write ;; LD A L, 1 Cycles:4
  425.       LD@RxHLToRxHL OP0A, 8, xBC_Read, A_Write ;; LD A xBC, 1 Cycles:8
  426.       LD@RxHLToRxHL OP1A, 8, xDE_Read, A_Write ;; LD A xDE, 1 Cycles:8
  427.       LD@RxHLToRxHL OP7E, 8, xHL_Read, A_Write ;; LD A xHL, 1 Cycles:8
  428.       LD@RxHLToRxHL OP2A, 8, xHL_Read_Inc, A_Write ;; LD A xHL++, 1 Cycles:8
  429.       LD@RxHLToRxHL OP3A, 8, xHL_Read_Dec, A_Write ;; LD A xHL--, 1 Cycles:8
  430.       LD@RxHLToRxHL OP7F, 4, A_Read, A_Write ;; LD A A, 1 Cycles:4      
  431. ;; MISC LD
  432.       LD@RxHLToRxHL OP08,20, Imm16_Read, xImm16_WriteRegSP ;; LD (Imm16) SP, 3 Cycles:20
  433.       LD@RxHLToRxHL OPEA,16, Imm16_Read, xImm16_WriteRegA ;; LD (Imm16) A, 3 Cycles:16
  434.       LD@RxHLToRxHL OPE0,12, Imm8Read_ExpandAddress16, xImm16_WriteRegA ;; LD (Imm8+0FF00h) A, 2 Cycles:12
  435.       LD@RxHLToRxHL OPE2, 8, C_ExpandAddress16, xImm16_WriteRegA ;; LD (C+0FF00h) A, 2 Cycles:8  
  436.       LD@RxHLToRxHL OPF0,12, Imm8Read_ExpandAddress16_Fetch, A_Write ;; LD A, (Imm8+0FF00h)  2 Cycles:12
  437.       LD@RxHLToRxHL OPF2, 8, C_ExpandAddress16_Fetch, A_Write ;; LD A, (C+0FF00h) 2 Cycles:8    
  438.       LD@RxHLToRxHL OPFA,16, Imm16Read_Address_Fetch, A_Write ;; LD A, (Imm16) 3 Cycles:16
  439.       LD@RxHLToRxHL OPF9, 8, HL_Read, SP_Write ;; LD SP HL 1 Cycles:8
  440.      
  441.       OPF8: ;; LD HL SP+Imm8(sign8) 2 Cycles:12
  442.       Imm8_Read
  443.      
  444.       ;; Clear Reg-f
  445.       xor YG_PF, YG_PF
  446.       xor edx, edx
  447.       ;; ext sign
  448.       movsx ax, al
  449.       mov cx, [YG_GP].SP_
  450.       and ecx, 0FFFFh
  451.       and eax, 0FFFFh
  452.       lea edx, [ecx+eax]
  453.       ;; SetH
  454.       mov [YG_GP].HL, dx
  455.       xor cx, ax
  456.       mov ax, dx
  457.       xor cx, ax
  458.       and cx, 01000h
  459.       shr cx, 8
  460.       or YG_PF, ecx
  461.       ;; SetC
  462.       and dx, 010000h
  463.       shr dx, 16
  464.       or YG_PF, edx
  465.       SetCyclesRetP 12
  466.      
  467.       ;; ALU, LOGIC 0x8x- 0xBx---------------------------------------------------------------------------------------
  468.  
  469. Add_T macro atomic_it, Cycles
  470. ;; source <- eax
  471. ;; target <- always register A
  472.  
  473. ;; clear psb .
  474.   xor YG_PF, YG_PF
  475.   movzx edx, [YG_GP].A
  476.   and eax, 0FFh
  477.   lea ecx, [eax+edx+atomic_it]
  478.   ;; always write back A.
  479.   mov [YG_GP].A, cl
  480.  
  481.   ;; SetH
  482.   xor dx, ax  
  483.   mov ax, cx
  484.   xor ax, dx
  485.   and ax, 010h
  486.   or YG_PF, eax
  487.   ;; SetC
  488.   or YG_PF_8, ch
  489.   ;; SetZ  XXX:ZTable
  490.   test cl, cl
  491.   setz cl
  492.   shl ecx, 6
  493.   or YG_PF, ecx
  494. endm
  495.      
  496. Sub_T macro atomic_it, Cycles, Register ;; [YG_GP].A || cl for cmp opcode
  497. ;; source <- eax
  498. ;; target <- always register A
  499.  
  500. ;; clear psb .
  501.   mov YG_PF, N_FLAG
  502.   movzx edx, [YG_GP].A
  503.   and eax, 0FFh
  504.   mov ecx, edx
  505.   sub ecx, eax
  506.   sub ecx, atomic_it
  507.   and ecx, 0FFFFh  
  508.   ;; always write back A. or nodone
  509.   mov Register, cl
  510.   ;; SetH
  511.   xor dx, ax  
  512.   mov ax, cx
  513.   xor ax, dx
  514.   and ax, 010h
  515.   or YG_PF, eax
  516.   ;; SetC
  517.   mov edx, ecx
  518.   shr edx, 15
  519.   or YG_PF_8, dl
  520.   ;; SetZ  XXX:ZTable
  521.   test cl, cl
  522.   setz cl
  523.   shl ecx, 6
  524.   or YG_PF, ecx
  525. endm
  526.      
  527. ;; XOR | OR | AND do unwind base .
  528. Logic_T macro   Cycles, initFlags, LogicOp
  529. ;; source <- eax
  530. ;; target <- always register A
  531.  
  532. ;; clear psb .
  533.   mov YG_PF, initFlags
  534.   movzx edx, [YG_GP].A
  535.   LogicOp eax, edx
  536.   ;; always write back A.
  537.   mov [YG_GP].A, al
  538.  
  539.   ;; SetZ  XXX:ZTable
  540.   test al, al
  541.   setz al
  542.   shl eax, 6
  543.   or YG_PF, eax
  544. endm  
  545.      
  546. ;; unwind
  547. Add_ macro Cycles
  548.   Add_T 0, Cycles
  549. endm
  550.  
  551. Adc_ macro Cycles
  552.   Add_T 1, Cycles
  553. endm
  554.  
  555. Sub_ macro Cycles
  556.   Sub_T 0, Cycles, [YG_GP].A
  557. endm  
  558.      
  559. Sbc_ macro Cycles
  560.   Sub_T 1, Cycles, [YG_GP].A
  561. endm      
  562.  
  563. Cmp_ macro Cycles
  564.   Sub_T 0, Cycles, cl
  565. endm  
  566.      
  567. And_ macro Cycles
  568.   Logic_T Cycles, H_FLAG, and
  569. endm  
  570.      
  571. Xor_ macro Cycles
  572.   Logic_T Cycles, 0, xor
  573. endm      
  574.  
  575. Or_ macro Cycles
  576.   Logic_T Cycles, 0, or
  577. endm      
  578.  
  579. AddWord_  macro
  580. ;; source <- eax
  581. ;; target <- always register HL
  582.  
  583. ;; clear psb . save old Z
  584.   and YG_PF, Z_FLAG
  585.   movzx ecx, [YG_GP].HL
  586.   and eax, 0FFFFh
  587.   lea edx, [eax+ecx]
  588.   ;; always write back HL.
  589.   mov [YG_GP].HL, dx
  590.   ;; SetH
  591.   xor cx, ax
  592.   mov ax, dx
  593.   xor cx, ax
  594.   and cx, 01000h
  595.   shr cx, 8
  596.   or YG_PF, ecx
  597.   ;; SetC
  598.   and dx, 010000h
  599.   shr dx, 16
  600.   or YG_PF, edx
  601. endm
  602.  
  603. ;; TO SP
  604. AddWord2_  macro
  605. ;; source <- eax
  606. ;; target <- always register SP
  607.  
  608. ;; clear psb . save old Z
  609.   xor YG_PF, YG_PF
  610.   movzx ecx, [YG_GP].SP_
  611.   and eax, 0FFFFh
  612.   lea edx, [eax+ecx]
  613.   ;; always write back SP.
  614.   mov [YG_GP].SP_, dx
  615.   ;; SetH
  616.   xor cx, ax
  617.   mov ax, dx
  618.   xor cx, ax
  619.   and cx, 01000h
  620.   shr cx, 8
  621.   or YG_PF, ecx
  622.   ;; SetC
  623.   and dx, 010000h
  624.   shr dx, 16
  625.   or YG_PF, edx
  626. endm
  627.  
  628.  
  629. DecWord_  macro
  630.   dec eax
  631. endm
  632.  
  633. IncWord_  macro
  634.   inc eax
  635. endm
  636.  
  637. Inc_  macro  ;; -----------------------
  638. ;; source <- eax
  639. ;; clear psb . save old Z
  640.   and YG_PF, C_FLAG
  641.   and eax, 0FFh
  642.   lea edx, [eax+1]
  643.   mov ecx, edx
  644.  
  645.   ;; SetH
  646.   xor cx, ax
  647.   and cx, 010h
  648.   or YG_PF, ecx
  649.  
  650.   mov eax, edx
  651.   test dl, dl
  652.   setz dl
  653.   shl dl, 6
  654.   or YG_PF, edx
  655. endm
  656.  
  657. Dec_  macro  ;; -----------------------
  658. ;; source <- eax
  659. ;; clear psb . save old Z
  660.   and YG_PF, C_FLAG
  661.   or YG_PF, N_FLAG
  662.   and eax, 0FFh
  663.   lea edx, [eax-1]
  664.   mov ecx, edx
  665.  
  666.   ;; SetH
  667.   xor cx, ax
  668.   and cx, 010h
  669.   or YG_PF, ecx
  670.  
  671.   mov eax, edx
  672.   test dl, dl
  673.   setz dl
  674.   shl dl, 6
  675.   or YG_PF, edx
  676. endm
  677.  
  678. ;; --- Include OP, imm8 and ADD Word Register.
  679. Opcode@MainALU  macro  Opcode, Cycles, ReadOrExt, Op, WriteOrExt
  680.   Opcode&:
  681.     ReadOrExt
  682.     Op
  683.     ;; WriteOrExt
  684.     SetCyclesRetP Cycles
  685. endm
  686.       Opcode@MainALU  OP80, 4, B_Read, Add_, A_Write ;; ADD A, B  1 Cycles:4
  687.       Opcode@MainALU  OP81, 4, C_Read, Add_, A_Write ;; ADD A, C  1 Cycles:4    
  688.       Opcode@MainALU  OP82, 4, D_Read, Add_, A_Write ;; ADD A, D  1 Cycles:4
  689.       Opcode@MainALU  OP83, 4, E_Read, Add_, A_Write ;; ADD A, E  1 Cycles:4      
  690.       Opcode@MainALU  OP84, 4, H_Read, Add_, A_Write ;; ADD A, H  1 Cycles:4
  691.       Opcode@MainALU  OP85, 4, L_Read, Add_, A_Write ;; ADD A, L  1 Cycles:4    
  692.       Opcode@MainALU  OP86, 8, xHL_Read, Add_, A_Write ;; ADD A, xHL  1 Cycles:8
  693.       Opcode@MainALU  OP87, 4, A_Read, Add_, A_Write ;; ADD A, A  1 Cycles:4  
  694.       Opcode@MainALU  OPC6, 8, Imm8_Read, Add_, A_Write ;; ADD A, Imm8  2 Cycles:8
  695.       Opcode@MainALU  OP09, 8, BC_Read, AddWord_, A_Write ;; ADD HL, BC  1 Cycles:8    
  696.       Opcode@MainALU  OP19, 8, DE_Read, AddWord_, A_Write ;; ADD HL, DE  1 Cycles:8    
  697.       Opcode@MainALU  OP29, 8, HL_Read, AddWord_, A_Write ;; ADD HL, HL  1 Cycles:8    
  698.       Opcode@MainALU  OP39, 8, SP_Read, AddWord_, A_Write ;; ADD HL, SP  1 Cycles:8    
  699.       Opcode@MainALU  OPE8,16, Imm8_ExpandSignWord, AddWord2_, A_Write ;; ADD SP, SignImm8  2 Cycles:16
  700.      
  701.       Opcode@MainALU  OP88, 4, B_Read, Adc_, A_Write ;; ADC A, B  1 Cycles:4
  702.       Opcode@MainALU  OP89, 4, C_Read, Adc_, A_Write ;; ADC A, C  1 Cycles:4    
  703.       Opcode@MainALU  OP8A, 4, D_Read, Adc_, A_Write ;; ADC A, D  1 Cycles:4
  704.       Opcode@MainALU  OP8B, 4, E_Read, Adc_, A_Write ;; ADC A, E  1 Cycles:4      
  705.       Opcode@MainALU  OP8C, 4, H_Read, Adc_, A_Write ;; ADC A, H  1 Cycles:4
  706.       Opcode@MainALU  OP8D, 4, L_Read, Adc_, A_Write ;; ADC A, L  1 Cycles:4    
  707.       Opcode@MainALU  OP8E, 8, xHL_Read, Adc_, A_Write ;; ADC A, xHL  1 Cycles:8
  708.       Opcode@MainALU  OP8F, 4, A_Read, Adc_, A_Write ;; ADC A, A  1 Cycles:4  
  709.       Opcode@MainALU  OPCE, 8, Imm8_Read, Adc_, A_Write ;; ADC A, Imm8  2 Cycles:8    
  710.      
  711.       Opcode@MainALU  OP03, 8, BC_Read, IncWord_, BC_Write ;; INC BC  Cycles:8
  712.       Opcode@MainALU  OP13, 8, DE_Read, IncWord_, DE_Write ;; INC DE  Cycles:8
  713.       Opcode@MainALU  OP23, 8, HL_Read, IncWord_, HL_Write ;; INC HL  Cycles:8
  714.       Opcode@MainALU  OP33, 8, SP_Read, IncWord_, SP_Write ;; INC SP  Cycles:8
  715.      
  716.       Opcode@MainALU  OP04, 4, B_Read, Inc_, B_Write ;; INC B  1 Cycles:4
  717.       Opcode@MainALU  OP14, 4, C_Read, Inc_, C_Write ;; INC C  1 Cycles:4    
  718.       Opcode@MainALU  OP24, 4, D_Read, Inc_, D_Write ;; INC D  1 Cycles:4
  719.       Opcode@MainALU  OP34, 4, E_Read, Inc_, E_Write ;; INC E  1 Cycles:4      
  720.       Opcode@MainALU  OP0C, 4, H_Read, Inc_, H_Write ;; INC H  1 Cycles:4
  721.       Opcode@MainALU  OP1C, 4, L_Read, Inc_, L_Write ;; INC L  1 Cycles:4    
  722.       Opcode@MainALU  OP2C,12, xHL_Read, Inc_, xHL_Write ;; INC xHL  1 Cycles:12
  723.       Opcode@MainALU  OP3C, 4, A_Read, Inc_, A_Write ;; INC A  1 Cycles:4      
  724.      
  725.       Opcode@MainALU  OP90, 4, B_Read, Sub_, A_Write ;; SUB A, B  1 Cycles:4
  726.       Opcode@MainALU  OP91, 4, C_Read, Sub_, A_Write ;; SUB A, C  1 Cycles:4    
  727.       Opcode@MainALU  OP92, 4, D_Read, Sub_, A_Write ;; SUB A, D  1 Cycles:4
  728.       Opcode@MainALU  OP93, 4, E_Read, Sub_, A_Write ;; SUB A, E  1 Cycles:4      
  729.       Opcode@MainALU  OP94, 4, H_Read, Sub_, A_Write ;; SUB A, H  1 Cycles:4
  730.       Opcode@MainALU  OP95, 4, L_Read, Sub_, A_Write ;; SUB A, L  1 Cycles:4    
  731.       Opcode@MainALU  OP96, 8, xHL_Read, Sub_, A_Write ;; SUB A, xHL  1 Cycles:8
  732.       Opcode@MainALU  OP97, 4, A_Read, Sub_, A_Write ;; SUB A, A  1 Cycles:4  
  733.       Opcode@MainALU  OPD6, 8, Imm8_Read, Sub_, A_Write ;; SUB A, Imm8  2 Cycles:8
  734.      
  735.       Opcode@MainALU  OP98, 4, B_Read, Sbc_, A_Write ;; SBC A, B  1 Cycles:4
  736.       Opcode@MainALU  OP99, 4, C_Read, Sbc_, A_Write ;; SBC A, C  1 Cycles:4    
  737.       Opcode@MainALU  OP9A, 4, D_Read, Sbc_, A_Write ;; SBC A, D  1 Cycles:4
  738.       Opcode@MainALU  OP9B, 4, E_Read, Sbc_, A_Write ;; SBC A, E  1 Cycles:4      
  739.       Opcode@MainALU  OP9C, 4, H_Read, Sbc_, A_Write ;; SBC A, H  1 Cycles:4
  740.       Opcode@MainALU  OP9D, 4, L_Read, Sbc_, A_Write ;; SBC A, L  1 Cycles:4    
  741.       Opcode@MainALU  OP9E, 8, xHL_Read, Sbc_, A_Write ;; SBC A, xHL  1 Cycles:8
  742.       Opcode@MainALU  OP9F, 4, A_Read, Sbc_, A_Write ;; SBC A, A  1 Cycles:4  
  743.       Opcode@MainALU  OPDE, 8, Imm8_Read, Sbc_, A_Write ;; SBC A, Imm8  2 Cycles:8
  744.    
  745.       Opcode@MainALU  OP0B, 8, BC_Read, IncWord_, BC_Write ;; DEC BC  Cycles:8
  746.       Opcode@MainALU  OP1B, 8, DE_Read, IncWord_, DE_Write ;; DEC DE  Cycles:8
  747.       Opcode@MainALU  OP2B, 8, HL_Read, IncWord_, HL_Write ;; DEC HL  Cycles:8
  748.       Opcode@MainALU  OP3B, 8, SP_Read, IncWord_, SP_Write ;; DEC SP  Cycles:8
  749.      
  750.       Opcode@MainALU  OP05, 4, B_Read, Dec_, B_Write ;; DEC B  1 Cycles:4
  751.       Opcode@MainALU  OP15, 4, C_Read, Dec_, C_Write ;; DEC C  1 Cycles:4    
  752.       Opcode@MainALU  OP25, 4, D_Read, Dec_, D_Write ;; DEC D  1 Cycles:4
  753.       Opcode@MainALU  OP35, 4, E_Read, Dec_, E_Write ;; DEC E  1 Cycles:4      
  754.       Opcode@MainALU  OP0D, 4, H_Read, Dec_, H_Write ;; DEC H  1 Cycles:4
  755.       Opcode@MainALU  OP1D, 4, L_Read, Dec_, L_Write ;; DEC L  1 Cycles:4    
  756.       Opcode@MainALU  OP2D,12, xHL_Read, Dec_, xHL_Write ;; DEC xHL  1 Cycles:12
  757.       Opcode@MainALU  OP3D, 4, A_Read, Dec_, A_Write ;; DEC A  1 Cycles:4    
  758.      
  759.       Opcode@MainALU  OPA0, 4, B_Read, And_, A_Write ;; AND A, B  1 Cycles:4
  760.       Opcode@MainALU  OPA1, 4, C_Read, And_, A_Write ;; AND A, C  1 Cycles:4    
  761.       Opcode@MainALU  OPA2, 4, D_Read, And_, A_Write ;; AND A, D  1 Cycles:4
  762.       Opcode@MainALU  OPA3, 4, E_Read, And_, A_Write ;; AND A, E  1 Cycles:4      
  763.       Opcode@MainALU  OPA4, 4, H_Read, And_, A_Write ;; AND A, H  1 Cycles:4
  764.       Opcode@MainALU  OPA5, 4, L_Read, And_, A_Write ;; AND A, L  1 Cycles:4    
  765.       Opcode@MainALU  OPA6, 8, xHL_Read, And_, A_Write ;; AND A, xHL  1 Cycles:8
  766.       Opcode@MainALU  OPA7, 4, A_Read, And_, A_Write ;; AND A, A  1 Cycles:4  
  767.       Opcode@MainALU  OPE6, 8, Imm8_Read, Add_, A_Write ;; AND A, Imm8  2 Cycles:8
  768.        
  769.       Opcode@MainALU  OPA8, 4, B_Read, Xor_, A_Write ;; XOR A, B  1 Cycles:4
  770.       Opcode@MainALU  OPA9, 4, C_Read, Xor_, A_Write ;; XOR A, C  1 Cycles:4    
  771.       Opcode@MainALU  OPAA, 4, D_Read, Xor_, A_Write ;; XOR A, D  1 Cycles:4
  772.       Opcode@MainALU  OPAB, 4, E_Read, Xor_, A_Write ;; XOR A, E  1 Cycles:4      
  773.       Opcode@MainALU  OPAC, 4, H_Read, Xor_, A_Write ;; XOR A, H  1 Cycles:4
  774.       Opcode@MainALU  OPAD, 4, L_Read, Xor_, A_Write ;; XOR A, L  1 Cycles:4    
  775.       Opcode@MainALU  OPAE, 8, xHL_Read, Xor_, A_Write ;; XOR A, xHL  1 Cycles:8
  776.       Opcode@MainALU  OPAF, 4, A_Read, Xor_, A_Write ;; XOR A, A  1 Cycles:4  
  777.       Opcode@MainALU  OPEE, 8, Imm8_Read, Xor_, A_Write ;; XOR A, Imm8  2 Cycles:8
  778.      
  779.       Opcode@MainALU  OPB0, 4, B_Read, Or_, A_Write ;; OR A, B  1 Cycles:4
  780.       Opcode@MainALU  OPB1, 4, C_Read, Or_, A_Write ;; OR A, C  1 Cycles:4    
  781.       Opcode@MainALU  OPB2, 4, D_Read, Or_, A_Write ;; OR A, D  1 Cycles:4
  782.       Opcode@MainALU  OPB3, 4, E_Read, Or_, A_Write ;; OR A, E  1 Cycles:4      
  783.       Opcode@MainALU  OPB4, 4, H_Read, Or_, A_Write ;; OR A, H  1 Cycles:4
  784.       Opcode@MainALU  OPB5, 4, L_Read, Or_, A_Write ;; OR A, L  1 Cycles:4    
  785.       Opcode@MainALU  OPB6, 8, xHL_Read, Or_, A_Write ;; OR A, xHL  1 Cycles:8
  786.       Opcode@MainALU  OPB7, 4, A_Read, Or_, A_Write ;; OR A, A  1 Cycles:4  
  787.       Opcode@MainALU  OPF6, 8, Imm8_Read, Or_, A_Write ;; OR A, Imm8  2 Cycles:8
  788.      
  789.       Opcode@MainALU  OPB8, 4, B_Read, Cmp_, A_Write ;; CP A, B  1 Cycles:4
  790.       Opcode@MainALU  OPB9, 4, C_Read, Cmp_, A_Write ;; CP A, C  1 Cycles:4    
  791.       Opcode@MainALU  OPBA, 4, D_Read, Cmp_, A_Write ;; CP A, D  1 Cycles:4
  792.       Opcode@MainALU  OPBB, 4, E_Read, Cmp_, A_Write ;; CP A, E  1 Cycles:4      
  793.       Opcode@MainALU  OPBC, 4, H_Read, Cmp_, A_Write ;; CP A, H  1 Cycles:4
  794.       Opcode@MainALU  OPBD, 4, L_Read, Cmp_, A_Write ;; CP A, L  1 Cycles:4    
  795.       Opcode@MainALU  OPBE, 8, xHL_Read, Cmp_, A_Write ;; CP A, xHL  1 Cycles:8
  796.       Opcode@MainALU  OPBF, 4, A_Read, Cmp_, A_Write ;; CP A, A  1 Cycles:4  
  797.       Opcode@MainALU  OPFE, 8, Imm8_Read, Cmp_, A_Write ;; CP A, Imm8  2 Cycles:8
  798.      
  799. PushWord_  macro  ;; -----------------------
  800. ;; source <- eax
  801.   mov cx, [YG_GP].SP_
  802.   sub cx, 2
  803.   mov [YG_GP].SP_, cx
  804.   push eax
  805.   push ecx
  806.   push [YG_GP].gameboy
  807.   call gameboy_mmu_write_w@12
  808. endm
  809.  
  810. PopWord_  macro  ;; -----------------------
  811.   mov cx, [YG_GP].SP_
  812.   push ecx
  813.   add cx, 2
  814.   mov [YG_GP].SP_, cx
  815.   push [YG_GP].gameboy
  816.   call gameboy_mmu_read_w@8
  817. endm
  818.  
  819. ;; ---
  820. Opcode@MainStackOperate  macro  Opcode, Cycles, ReadOrExt, Op, WriteOrExt
  821.   Opcode&:
  822.     ReadOrExt
  823.     Op
  824.     WriteOrExt
  825.     SetCyclesRetP Cycles
  826. endm  
  827.  
  828.       Opcode@MainStackOperate  OPC1,12, PopWord_, EmptyMacro, BC_Write ;; POP BC  1 Cycles:12
  829.       Opcode@MainStackOperate  OPD1,12, PopWord_, EmptyMacro, DE_Write ;; POP DE  1 Cycles:12    
  830.       Opcode@MainStackOperate  OPE1,12, PopWord_, EmptyMacro, HL_Write ;; POP HL  1 Cycles:12
  831.       Opcode@MainStackOperate  OPF1,12, PopWord_, EmptyMacro, AF_Write ;; POP AF  1 Cycles:12  
  832.      
  833.       Opcode@MainStackOperate  OPC5,16, BC_Read, EmptyMacro, PushWord_ ;; PUSH BC  1 Cycles:16
  834.       Opcode@MainStackOperate  OPD5,16, DE_Read, EmptyMacro, PushWord_ ;; PUSH DE  1 Cycles:16    
  835.       Opcode@MainStackOperate  OPE5,16, HL_Read, EmptyMacro, PushWord_ ;; PUSH HL  1 Cycles:16
  836.       Opcode@MainStackOperate  OPF5,16, AF_Read, EmptyMacro, PushWord_ ;; PUSH AF  1 Cycles:16  
  837.  
  838. Opcode@Rst  macro  Opcode, Cycles, Vector
  839.   Opcode&:
  840.     mov ax, si
  841.     PushWord_
  842.     mov si, Vector
  843.     SetCyclesRetP Cycles
  844. endm  
  845.  
  846.       Opcode@Rst  OPC7,16, 000H ;; RST 00H  1 Cycles:16
  847.       Opcode@Rst  OPD7,16, 010H ;; RST 10H  1 Cycles:16    
  848.       Opcode@Rst  OPE7,16, 020H ;; RST 20H  1 Cycles:16
  849.       Opcode@Rst  OPF7,16, 030H ;; RST 30H  1 Cycles:16  
  850.       Opcode@Rst  OPCF,16, 008H ;; RST 08H  1 Cycles:16
  851.       Opcode@Rst  OPDF,16, 018H ;; RST 18H  1 Cycles:16    
  852.       Opcode@Rst  OPEF,16, 028H ;; RST 28H  1 Cycles:16
  853.       Opcode@Rst  OPFF,16, 038H ;; RST 38H  1 Cycles:16    
  854.      
  855. Opcode@JR    macro  Opcode, Flags, OpNOT
  856.    Opcode&:
  857.       mov eax, YG_PF
  858.       and eax, Flags
  859.       xor eax, OpNOT
  860.       jne @F
  861.       inc esi
  862.       SetCyclesRetP 8
  863.     @@:
  864.       Imm8_Read
  865.       movsx eax, al
  866.       add esi, eax
  867.       SetCyclesRetP 12
  868. endm
  869.       Opcode@JR  OP20,Z_FLAG, C_FLAG ;; JR NZ
  870.       Opcode@JR  OP30,C_FLAG, C_FLAG ;; JR NC
  871.       Opcode@JR  OP28,Z_FLAG, 0 ;; JR Z
  872.       Opcode@JR  OP38,C_FLAG, 0 ;; JR C  
  873.       Opcode@JR  OP18,0, 1 ;; JR R8
  874.      
  875. Opcode@JP    macro  Opcode, Flags, OpNOT
  876.    Opcode&:
  877.       mov eax, YG_PF
  878.       and eax, Flags
  879.       xor eax, OpNOT
  880.       jne @F
  881.       add esi, 2
  882.       SetCyclesRetP 12
  883.     @@:
  884.       Imm16_Read
  885.       mov esi, eax
  886.       SetCyclesRetP 16
  887. endm      
  888.       Opcode@JP  OPC2,Z_FLAG, C_FLAG ;; JP NZ
  889.       Opcode@JP  OPD2,C_FLAG, C_FLAG ;; JP NC
  890.       Opcode@JP  OPCA,Z_FLAG, 0 ;; JP Z
  891.       Opcode@JP  OPDA,C_FLAG, 0 ;; JP C  
  892.       Opcode@JP  OPC3,0, 1 ;; JP A16
  893.       LD@RxHLToRxHL OPE9, 4, HL_Read, PC_Write ;; JP (HL), Same as LD PC HL, 1 Cycles:4  
  894.  
  895. Opcode@CALL    macro  Opcode, Flags, OpNOT
  896.    Opcode&:
  897.       mov eax, YG_PF
  898.       and eax, Flags
  899.       xor eax, OpNOT
  900.       jne @F
  901.       add esi, 2
  902.       SetCyclesRetP 12
  903.     @@:
  904.       lea eax, [YG_PC+2]
  905.       PushWord_
  906.       Imm16_Read
  907.       add YG_PC, eax
  908.       SetCyclesRetP 24
  909. endm
  910.       Opcode@CALL  OPC4,Z_FLAG, C_FLAG ;; CALL NZ
  911.       Opcode@CALL  OPD4,C_FLAG, C_FLAG ;; CALL NC
  912.       Opcode@CALL  OPCC,Z_FLAG, 0 ;; CALL Z
  913.       Opcode@CALL  OPDC,C_FLAG, 0 ;; CALL C  
  914.       Opcode@CALL  OPCD,0, 1 ;; CALL  
  915.      
  916. Opcode@RET    macro  Opcode, Flags, OpNOT, RetHitCycles
  917.    Opcode&:
  918.       mov eax, YG_PF
  919.       and eax, Flags
  920.       xor eax, OpNOT
  921.       jne @F
  922.       SetCyclesRetP 8
  923.     @@:
  924.       PopWord_
  925.       mov YG_PC, eax
  926.       SetCyclesRetP RetHitCycles
  927. endm      
  928.  
  929. Opcode@RETI    macro  Opcode, Flags, OpNOT, RetHitCycles
  930.    Opcode&:
  931.       mov eax, YG_PF
  932.       and eax, Flags
  933.       xor eax, OpNOT
  934.       jne @F
  935.       SetCyclesRetP 8
  936.     @@:
  937.       PopWord_
  938.       mov YG_PC, eax
  939.       mov [YG_GP].IME, 1
  940.       SetCyclesRetP RetHitCycles
  941. endm
  942.  
  943.       Opcode@RET  OPC0,Z_FLAG, C_FLAG, 20 ;; RET NZ
  944.       Opcode@RET  OPD0,C_FLAG, C_FLAG, 20 ;; RET NC
  945.       Opcode@RET  OPC8,Z_FLAG, 0, 20 ;; RET Z
  946.       Opcode@RET  OPD8,C_FLAG, 0, 20 ;; RET C  
  947.       Opcode@RET  OPC9,0, 1, 16 ;; RET  
  948.       Opcode@RETI OPD9,0, 1, 16 ;; RETI
  949.      
  950. ;;  MISC 8.
  951.       OP76:   ; Halt,  not backup PC in my source code ^_^
  952.         mov [YG_GP].halt, 1
  953.         SetCyclesAndRet 4    
  954.       OP10:   ; Stop, Check CGB speed mode
  955.         movzx eax, [YG_GP].key1
  956.         test eax, 1
  957.         je @F
  958.         xor eax, 080H ;; switch to "other" speed
  959.         and eax, 0FEH ;; reset LSB  see gb-programming-manual.pdf::2.6.2 CPU Operating Speed
  960.                       ;; for simplicity, I will not simulate the huge waste of time brought by handover.
  961.         mov [YG_GP].key1, al
  962.         SetCyclesAndRet 080000004H
  963.      @@:mov [YG_GP].stop, 1
  964.         add YG_PC, 1 ;; skip one byte (should is 00)
  965.       OP00:   ; NOP
  966.         SetCyclesAndRet 4          
  967.       OPF3:   ; DI
  968.         mov [YG_GP].IME, 0
  969.         SetCyclesAndRet 4
  970.       OPFB:   ; EI
  971.         mov [YG_GP].IME, 1
  972.         SetCyclesAndRet 4  
  973.       OP07:   ; RLCA
  974.         rol [YG_GP].A, 1
  975.         setc YG_PF_8
  976.         SetCyclesRetP 4
  977.       OP17:   ; RLA
  978.         shr YG_PF_8, 1
  979.         rcl [YG_GP].A, 1
  980.         setc YG_PF_8
  981.         SetCyclesRetP 4    
  982.       OP0F:   ; RRCA
  983.         ror [YG_GP].A, 1
  984.         setc YG_PF_8
  985.         SetCyclesRetP 4
  986.       OP1F:   ; RRA
  987.         shr YG_PF_8, 1
  988.         rcr [YG_GP].A, 1
  989.         setc YG_PF_8
  990.         SetCyclesRetP 4    
  991.       OP27:   ; DAA  
  992.         mov al, [YG_GP].A
  993.         and YG_PF_8, N_FLAG
  994.         jne DAS_Proc
  995.         ;;  DAA.
  996.         daa
  997.         setc YG_PF_8  ;; SETC
  998.         setz al
  999.         shl al, 6
  1000.         or YG_PF_8, al
  1001.         SetCyclesRetP 4        
  1002.     DAS_Proc:
  1003.         ;;  DAS
  1004.         das    
  1005.         setc YG_PF_8  ;; SETC
  1006.         setz al
  1007.         shl al, 6
  1008.         or YG_PF_8, al
  1009.         or YG_PF_8, N_FLAG
  1010.         SetCyclesRetP 4    
  1011.       OP37:   ; SCF
  1012.         and YG_PF_8, Z_FLAG
  1013.         or YG_PF_8, C_FLAG  
  1014.         SetCyclesRetP 4    
  1015.       OP2F:   ; CPL  
  1016.         not [YG_GP].A
  1017.         or YG_PF_8, N_FLAG
  1018.         or YG_PF_8, H_FLAG
  1019.         SetCyclesRetP 4  
  1020.       OP3F:   ; CCF
  1021.         and YG_PF_8, ZC_FLAG
  1022.         xor YG_PF_8, C_FLAG  
  1023.         SetCyclesRetP 4
  1024.          
  1025.       ;; rortoe shift with  
  1026.       RLC_ macro Cycles
  1027.         rol al, 1
  1028.         setc YG_PF_8
  1029.         test al, al
  1030.         setz dl
  1031.         shl dl, 6
  1032.         or YG_PF_8, dl    
  1033.       endm
  1034.       ;; rortoe shift with  
  1035.       RRC_ macro Cycles
  1036.         ror al, 1
  1037.         setc YG_PF_8
  1038.         test al, al
  1039.         setz dl
  1040.         shl dl, 6
  1041.         or YG_PF_8, dl    
  1042.       endm      
  1043.       ;; logic shift with carry
  1044.       RL_ macro Cycles
  1045.         shr YG_PF_8, 1
  1046.         rol al, 1
  1047.         setc YG_PF_8
  1048.         test al, al
  1049.         setz dl
  1050.         shl dl, 6
  1051.         or YG_PF_8, dl    
  1052.       endm
  1053.       ;; logic shift with carry
  1054.       RR_ macro Cycles
  1055.         shr YG_PF_8, 1
  1056.         ror al, 1
  1057.         setc YG_PF_8
  1058.         test al, al
  1059.         setz dl
  1060.         shl dl, 6
  1061.         or YG_PF_8, dl    
  1062.       endm      
  1063.       ;; logic shift    
  1064.       RL_N_ macro Cycles
  1065.         shl al, 1
  1066.         setc YG_PF_8
  1067.         test al, al
  1068.         setz dl
  1069.         shl dl, 6
  1070.         or YG_PF_8, dl    
  1071.       endm
  1072.       ;; logic shift  
  1073.       RR_N_ macro Cycles
  1074.         shr al, 1
  1075.         setc YG_PF_8
  1076.         test al, al
  1077.         setz dl
  1078.         shl dl, 6
  1079.         or YG_PF_8, dl    
  1080.       endm    
  1081.       ;; arith shift  save msb
  1082.       RRS_N_ macro Cycles
  1083.         sar al, 1
  1084.         setc YG_PF_8
  1085.         setz dl
  1086.         shl dl, 6
  1087.         or YG_PF_8, dl    
  1088.       endm    
  1089.       ;; swap byte-lo 4bit and byte-hi 4bit
  1090.       SWAP_ macro Cycles
  1091.         ror al, 4
  1092.         test al, al
  1093.         setz cl
  1094.         shl cl, 6
  1095.         mov YG_PF, ecx
  1096.       endm        
  1097.        
  1098.       ;;  Set
  1099.       Opcode@SetBit macro Opcode, Cycles,  ReadOrExt, BitOrder, WriteOrExt
  1100.         Opcode&:
  1101.           ReadOrExt
  1102.           mov ecx, 1
  1103.           shl ecx, BitOrder
  1104.           or eax, ecx
  1105.           WriteOrExt
  1106.           SetCyclesAndRet Cycles
  1107.       endm
  1108.      
  1109.       Opcode@ResBit macro Opcode, Cycles,  ReadOrExt, BitOrder, WriteOrExt
  1110.         Opcode&:
  1111.           ReadOrExt
  1112.           mov ecx, 1
  1113.           shl ecx, BitOrder
  1114.           not ecx
  1115.           and eax, ecx
  1116.           WriteOrExt
  1117.           SetCyclesAndRet Cycles
  1118.       endm        
  1119.          
  1120.       Opcode@TestBit macro Opcode, Cycles,  ReadOrExt, BitOrder
  1121.         Opcode&:
  1122.           ReadOrExt
  1123.           and YG_PF, C_FLAG
  1124.           or YG_PF, H_FLAG
  1125.           mov ecx, 1
  1126.           shl ecx, BitOrder
  1127.           test al, cl
  1128.           setz al
  1129.           shl eax, 6
  1130.           or YG_PF, eax
  1131.           SetCyclesRetP Cycles
  1132.       endm      
  1133.        
  1134.       OPCB: ;; ---------------------------------- Perfix CB -----------------------------------------------------------------------------
  1135.         Imm8_Read
  1136.         and eax, 255
  1137.         jmp dword ptr[CBTAB+eax*4]
  1138.        
  1139.         ;; --- Include OP, imm8 and ADD Word Register.
  1140.         Opcode@MainALUExt  macro  Opcode, Cycles, ReadOrExt, Op, WriteOrExt
  1141.           Opcode&:
  1142.             ReadOrExt
  1143.             Op
  1144.             WriteOrExt
  1145.             SetCyclesRetP Cycles
  1146.         endm  
  1147.        
  1148.         Opcode@MainALUExt  CB00, 8, B_Read, RLC_, B_Write      ;; RLC B 2 Cycles:8
  1149.         Opcode@MainALUExt  CB01, 8, C_Read, RLC_, C_Write      ;; RLC C 2 Cycles:8
  1150.         Opcode@MainALUExt  CB02, 8, D_Read, RLC_, D_Write      ;; RLC D 2 Cycles:8
  1151.         Opcode@MainALUExt  CB03, 8, E_Read, RLC_, E_Write      ;; RLC E 2 Cycles:8    
  1152.         Opcode@MainALUExt  CB04, 8, H_Read, RLC_, H_Write      ;; RLC H 2 Cycles:8
  1153.         Opcode@MainALUExt  CB05, 8, L_Read, RLC_, L_Write      ;; RLC L 2 Cycles:8        
  1154.         Opcode@MainALUExt  CB06,16, xHL_Read, RLC_, xHL_Write      ;; RLC xHL 2 Cycles:16
  1155.         Opcode@MainALUExt  CB07, 8, A_Read, RLC_, A_Write      ;; RLC A 2 Cycles:8        
  1156.        
  1157.         Opcode@MainALUExt  CB08, 8, B_Read, RRC_, B_Write      ;; RRC B 2 Cycles:8
  1158.         Opcode@MainALUExt  CB09, 8, C_Read, RRC_, C_Write      ;; RRC C 2 Cycles:8
  1159.         Opcode@MainALUExt  CB0A, 8, D_Read, RRC_, D_Write      ;; RRC D 2 Cycles:8
  1160.         Opcode@MainALUExt  CB0B, 8, E_Read, RRC_, E_Write      ;; RRC E 2 Cycles:8    
  1161.         Opcode@MainALUExt  CB0C, 8, H_Read, RRC_, H_Write      ;; RRC H 2 Cycles:8
  1162.         Opcode@MainALUExt  CB0D, 8, L_Read, RRC_, L_Write      ;; RRC L 2 Cycles:8        
  1163.         Opcode@MainALUExt  CB0E,16, xHL_Read, RRC_, xHL_Write      ;; RRC xHL 2 Cycles:16
  1164.         Opcode@MainALUExt  CB0F, 8, A_Read, RRC_, A_Write      ;; RRC A 2 Cycles:8    
  1165.        
  1166.         Opcode@MainALUExt  CB10, 8, B_Read, RL_, B_Write      ;; RL B 2 Cycles:8
  1167.         Opcode@MainALUExt  CB11, 8, C_Read, RL_, C_Write      ;; RL C 2 Cycles:8
  1168.         Opcode@MainALUExt  CB12, 8, D_Read, RL_, D_Write      ;; RL D 2 Cycles:8
  1169.         Opcode@MainALUExt  CB13, 8, E_Read, RL_, E_Write      ;; RL E 2 Cycles:8    
  1170.         Opcode@MainALUExt  CB14, 8, H_Read, RL_, H_Write      ;; RL H 2 Cycles:8
  1171.         Opcode@MainALUExt  CB15, 8, L_Read, RL_, L_Write      ;; RL L 2 Cycles:8        
  1172.         Opcode@MainALUExt  CB16,16, xHL_Read, RL_, xHL_Write      ;; RL xHL 2 Cycles:16
  1173.         Opcode@MainALUExt  CB17, 8, A_Read, RL_, A_Write      ;; RL A 2 Cycles:8        
  1174.        
  1175.         Opcode@MainALUExt  CB18, 8, B_Read, RR_, B_Write      ;; RR B 2 Cycles:8
  1176.         Opcode@MainALUExt  CB19, 8, C_Read, RR_, C_Write      ;; RR C 2 Cycles:8
  1177.         Opcode@MainALUExt  CB1A, 8, D_Read, RR_, D_Write      ;; RR D 2 Cycles:8
  1178.         Opcode@MainALUExt  CB1B, 8, E_Read, RR_, E_Write      ;; RR E 2 Cycles:8    
  1179.         Opcode@MainALUExt  CB1C, 8, H_Read, RR_, H_Write      ;; RR H 2 Cycles:8
  1180.         Opcode@MainALUExt  CB1D, 8, L_Read, RR_, L_Write      ;; RR L 2 Cycles:8        
  1181.         Opcode@MainALUExt  CB1E,16, xHL_Read, RR_, xHL_Write      ;; RR xHL 2 Cycles:16
  1182.         Opcode@MainALUExt  CB1F, 8, A_Read, RR_, A_Write      ;; RR A 2 Cycles:8            
  1183.        
  1184.         Opcode@MainALUExt  CB20, 8, B_Read, RL_N_, B_Write      ;; SLA B 2 Cycles:8
  1185.         Opcode@MainALUExt  CB21, 8, C_Read, RL_N_, C_Write      ;; SLA C 2 Cycles:8
  1186.         Opcode@MainALUExt  CB22, 8, D_Read, RL_N_, D_Write      ;; SLA D 2 Cycles:8
  1187.         Opcode@MainALUExt  CB23, 8, E_Read, RL_N_, E_Write      ;; SLA E 2 Cycles:8    
  1188.         Opcode@MainALUExt  CB24, 8, H_Read, RL_N_, H_Write      ;; SLA H 2 Cycles:8
  1189.         Opcode@MainALUExt  CB25, 8, L_Read, RL_N_, L_Write      ;; SLA L 2 Cycles:8        
  1190.         Opcode@MainALUExt  CB26,16, xHL_Read, RL_N_, xHL_Write      ;; SLA xHL 2 Cycles:16
  1191.         Opcode@MainALUExt  CB27, 8, A_Read, RL_N_, A_Write      ;; SLA A 2 Cycles:8        
  1192.        
  1193.         Opcode@MainALUExt  CB28, 8, B_Read, RRS_N_, B_Write      ;; SRA B 2 Cycles:8
  1194.         Opcode@MainALUExt  CB29, 8, C_Read, RRS_N_, C_Write      ;; SRA C 2 Cycles:8
  1195.         Opcode@MainALUExt  CB2A, 8, D_Read, RRS_N_, D_Write      ;; SRA D 2 Cycles:8
  1196.         Opcode@MainALUExt  CB2B, 8, E_Read, RRS_N_, E_Write      ;; SRA E 2 Cycles:8    
  1197.         Opcode@MainALUExt  CB2C, 8, H_Read, RRS_N_, H_Write      ;; SRA H 2 Cycles:8
  1198.         Opcode@MainALUExt  CB2D, 8, L_Read, RRS_N_, L_Write      ;; SRA L 2 Cycles:8        
  1199.         Opcode@MainALUExt  CB2E,16, xHL_Read, RRS_N_, xHL_Write      ;; SRA xHL 2 Cycles:16
  1200.         Opcode@MainALUExt  CB2F, 8, A_Read, RRS_N_, A_Write      ;; SRA A 2 Cycles:8      
  1201.        
  1202.         Opcode@MainALUExt  CB30, 8, B_Read, SWAP_, B_Write      ;; SWAP B 2 Cycles:8
  1203.         Opcode@MainALUExt  CB31, 8, C_Read, SWAP_, C_Write      ;; SWAP C 2 Cycles:8
  1204.         Opcode@MainALUExt  CB32, 8, D_Read, SWAP_, D_Write      ;; SWAP D 2 Cycles:8
  1205.         Opcode@MainALUExt  CB33, 8, E_Read, SWAP_, E_Write      ;; SWAP E 2 Cycles:8    
  1206.         Opcode@MainALUExt  CB34, 8, H_Read, SWAP_, H_Write      ;; SWAP H 2 Cycles:8
  1207.         Opcode@MainALUExt  CB35, 8, L_Read, SWAP_, L_Write      ;; SWAP L 2 Cycles:8        
  1208.         Opcode@MainALUExt  CB36,16, xHL_Read, SWAP_, xHL_Write      ;; SWAP xHL 2 Cycles:16
  1209.         Opcode@MainALUExt  CB37, 8, A_Read, SWAP_, A_Write      ;; SWAP A 2 Cycles:8        
  1210.        
  1211.         Opcode@MainALUExt  CB38, 8, B_Read, RR_N_, B_Write      ;; SRL B 2 Cycles:8
  1212.         Opcode@MainALUExt  CB39, 8, C_Read, RR_N_, C_Write      ;; SRL C 2 Cycles:8
  1213.         Opcode@MainALUExt  CB3A, 8, D_Read, RR_N_, D_Write      ;; SRL D 2 Cycles:8
  1214.         Opcode@MainALUExt  CB3B, 8, E_Read, RR_N_, E_Write      ;; SRL E 2 Cycles:8    
  1215.         Opcode@MainALUExt  CB3C, 8, H_Read, RR_N_, H_Write      ;; SRL H 2 Cycles:8
  1216.         Opcode@MainALUExt  CB3D, 8, L_Read, RR_N_, L_Write      ;; SRL L 2 Cycles:8        
  1217.         Opcode@MainALUExt  CB3E,16, xHL_Read, RR_N_, xHL_Write      ;; SRL xHL 2 Cycles:16
  1218.         Opcode@MainALUExt  CB3F, 8, A_Read, RR_N_, A_Write      ;; SRL A 2 Cycles:8        
  1219.        
  1220.         Opcode@TestBit CB40, 8,  B_Read, 0 ;; BIT B, 0 Cycles:8
  1221.         Opcode@TestBit CB41, 8,  C_Read, 0 ;; BIT C, 0 Cycles:8        
  1222.         Opcode@TestBit CB42, 8,  D_Read, 0 ;; BIT D, 0 Cycles:8        
  1223.         Opcode@TestBit CB43, 8,  E_Read, 0 ;; BIT E, 0 Cycles:8    
  1224.         Opcode@TestBit CB44, 8,  H_Read, 0 ;; BIT H, 0 Cycles:8
  1225.         Opcode@TestBit CB45, 8,  L_Read, 0 ;; BIT L, 0 Cycles:8        
  1226.         Opcode@TestBit CB46,16,  xHL_Read, 0 ;; BIT xHL, 0 Cycles:16      
  1227.         Opcode@TestBit CB47, 8,  A_Read, 0 ;; BIT A, 0 Cycles:8        
  1228.      
  1229.         Opcode@TestBit CB48, 8,  B_Read, 1 ;; BIT B, 1 Cycles:8
  1230.         Opcode@TestBit CB49, 8,  C_Read, 1 ;; BIT C, 1 Cycles:8        
  1231.         Opcode@TestBit CB4A, 8,  D_Read, 1 ;; BIT D, 1 Cycles:8        
  1232.         Opcode@TestBit CB4B, 8,  E_Read, 1 ;; BIT E, 1 Cycles:8    
  1233.         Opcode@TestBit CB4C, 8,  H_Read, 1 ;; BIT H, 1 Cycles:8
  1234.         Opcode@TestBit CB4D, 8,  L_Read, 1 ;; BIT L, 1 Cycles:8        
  1235.         Opcode@TestBit CB4E,16,  xHL_Read, 1 ;; BIT xHL, 1 Cycles:16      
  1236.         Opcode@TestBit CB4F, 8,  A_Read, 1 ;; BIT A, 1 Cycles:8
  1237.  
  1238.         Opcode@TestBit CB50, 8,  B_Read, 2 ;; BIT B, 2 Cycles:8
  1239.         Opcode@TestBit CB51, 8,  C_Read, 2 ;; BIT C, 2 Cycles:8        
  1240.         Opcode@TestBit CB52, 8,  D_Read, 2 ;; BIT D, 2 Cycles:8        
  1241.         Opcode@TestBit CB53, 8,  E_Read, 2 ;; BIT E, 2 Cycles:8    
  1242.         Opcode@TestBit CB54, 8,  H_Read, 2 ;; BIT H, 2 Cycles:8
  1243.         Opcode@TestBit CB55, 8,  L_Read, 2 ;; BIT L, 2 Cycles:8        
  1244.         Opcode@TestBit CB56,16,  xHL_Read, 2 ;; BIT xHL, 2 Cycles:16      
  1245.         Opcode@TestBit CB57, 8,  A_Read, 2 ;; BIT A, 2 Cycles:8        
  1246.      
  1247.         Opcode@TestBit CB58, 8,  B_Read, 3 ;; BIT B, 3 Cycles:8
  1248.         Opcode@TestBit CB59, 8,  C_Read, 3 ;; BIT C, 3 Cycles:8        
  1249.         Opcode@TestBit CB5A, 8,  D_Read, 3 ;; BIT D, 3 Cycles:8        
  1250.         Opcode@TestBit CB5B, 8,  E_Read, 3 ;; BIT E, 3 Cycles:8    
  1251.         Opcode@TestBit CB5C, 8,  H_Read, 3 ;; BIT H, 3 Cycles:8
  1252.         Opcode@TestBit CB5D, 8,  L_Read, 3 ;; BIT L, 3 Cycles:8        
  1253.         Opcode@TestBit CB5E,16,  xHL_Read, 3 ;; BIT xHL, 3 Cycles:16      
  1254.         Opcode@TestBit CB5F, 8,  A_Read, 3 ;; BIT A, 3 Cycles:8
  1255.  
  1256.         Opcode@TestBit CB60, 8,  B_Read, 4 ;; BIT B, 4 Cycles:8
  1257.         Opcode@TestBit CB61, 8,  C_Read, 4 ;; BIT C, 4 Cycles:8        
  1258.         Opcode@TestBit CB62, 8,  D_Read, 4 ;; BIT D, 4 Cycles:8        
  1259.         Opcode@TestBit CB63, 8,  E_Read, 4 ;; BIT E, 4 Cycles:8    
  1260.         Opcode@TestBit CB64, 8,  H_Read, 4 ;; BIT H, 4 Cycles:8
  1261.         Opcode@TestBit CB65, 8,  L_Read, 4 ;; BIT L, 4 Cycles:8        
  1262.         Opcode@TestBit CB66,16,  xHL_Read, 4 ;; BITxHLD, 4 Cycles:16      
  1263.         Opcode@TestBit CB67, 8,  A_Read, 4 ;; BIT A, 4 Cycles:8        
  1264.      
  1265.         Opcode@TestBit CB68, 8,  B_Read, 5 ;; BIT B, 5 Cycles:8
  1266.         Opcode@TestBit CB69, 8,  C_Read, 5 ;; BIT C, 5 Cycles:8        
  1267.         Opcode@TestBit CB6A, 8,  D_Read, 5 ;; BIT D, 5 Cycles:8        
  1268.         Opcode@TestBit CB6B, 8,  E_Read, 5 ;; BIT E, 5 Cycles:8    
  1269.         Opcode@TestBit CB6C, 8,  H_Read, 5 ;; BIT H, 5 Cycles:8
  1270.         Opcode@TestBit CB6D, 8,  L_Read, 5 ;; BIT L, 5 Cycles:8        
  1271.         Opcode@TestBit CB6E,16,  xHL_Read, 5 ;; BIT xHL, 5 Cycles:16      
  1272.         Opcode@TestBit CB6F, 8,  A_Read, 5 ;; BIT A, 5 Cycles:8
  1273.        
  1274.         Opcode@TestBit CB70, 8,  B_Read, 6 ;; BIT B, 6 Cycles:8
  1275.         Opcode@TestBit CB71, 8,  C_Read, 6 ;; BIT C, 6 Cycles:8        
  1276.         Opcode@TestBit CB72, 8,  D_Read, 6 ;; BIT D, 6 Cycles:8        
  1277.         Opcode@TestBit CB73, 8,  E_Read, 6 ;; BIT E, 6 Cycles:8    
  1278.         Opcode@TestBit CB74, 8,  H_Read, 6 ;; BIT H, 6 Cycles:8
  1279.         Opcode@TestBit CB75, 8,  L_Read, 6 ;; BIT L, 6 Cycles:8        
  1280.         Opcode@TestBit CB76,16,  xHL_Read, 6 ;; BIT xHL, 6 Cycles:16      
  1281.         Opcode@TestBit CB77, 8,  A_Read, 6 ;; BIT A, 6 Cycles:8        
  1282.      
  1283.         Opcode@TestBit CB78, 8,  B_Read, 7 ;; BIT B, 7 Cycles:8
  1284.         Opcode@TestBit CB79, 8,  C_Read, 7 ;; BIT C, 7 Cycles:8        
  1285.         Opcode@TestBit CB7A, 8,  D_Read, 7 ;; BIT D, 7 Cycles:8        
  1286.         Opcode@TestBit CB7B, 8,  E_Read, 7 ;; BIT E, 7 Cycles:8    
  1287.         Opcode@TestBit CB7C, 8,  H_Read, 7 ;; BIT H, 7 Cycles:8
  1288.         Opcode@TestBit CB7D, 8,  L_Read, 7 ;; BIT L, 7 Cycles:8        
  1289.         Opcode@TestBit CB7E,16,  xHL_Read, 7 ;; BIT xHL, 7 Cycles:16      
  1290.         Opcode@TestBit CB7F, 8,  A_Read, 7 ;; BIT A, 7 Cycles:8
  1291.        
  1292.         Opcode@ResBit CB80, 8,  B_Read, 0, B_Write ;; RES B, 0 Cycles:8
  1293.         Opcode@ResBit CB81, 8,  C_Read, 0, C_Write ;; RES C, 0 Cycles:8        
  1294.         Opcode@ResBit CB82, 8,  D_Read, 0, D_Write ;; RES D, 0 Cycles:8        
  1295.         Opcode@ResBit CB83, 8,  E_Read, 0, E_Write ;; RES E, 0 Cycles:8    
  1296.         Opcode@ResBit CB84, 8,  H_Read, 0, H_Write ;; RES H, 0 Cycles:8
  1297.         Opcode@ResBit CB85, 8,  L_Read, 0, L_Write ;; RES L, 0 Cycles:8        
  1298.         Opcode@ResBit CB86,16,  xHL_Read, 0, xHL_Write ;; RES xHL, 0 Cycles:16      
  1299.         Opcode@ResBit CB87, 8,  A_Read, 0, A_Write ;; RES A, 0 Cycles:8        
  1300.      
  1301.         Opcode@ResBit CB88, 8,  B_Read, 1, B_Write ;; RES B, 1 Cycles:8
  1302.         Opcode@ResBit CB89, 8,  C_Read, 1, C_Write ;; RES C, 1 Cycles:8        
  1303.         Opcode@ResBit CB8A, 8,  D_Read, 1, D_Write ;; RES D, 1 Cycles:8        
  1304.         Opcode@ResBit CB8B, 8,  E_Read, 1, E_Write ;; RES E, 1 Cycles:8    
  1305.         Opcode@ResBit CB8C, 8,  H_Read, 1, H_Write ;; RES H, 1 Cycles:8
  1306.         Opcode@ResBit CB8D, 8,  L_Read, 1, L_Write ;; RES L, 1 Cycles:8        
  1307.         Opcode@ResBit CB8E,16,  xHL_Read, 1, xHL_Write ;; RES xHL, 1 Cycles:16      
  1308.         Opcode@ResBit CB8F, 8,  A_Read, 1, A_Write ;; RES A, 1 Cycles:8
  1309.  
  1310.         Opcode@ResBit CB90, 8,  B_Read, 2, B_Write ;; RES B, 2 Cycles:8
  1311.         Opcode@ResBit CB91, 8,  C_Read, 2, C_Write ;; RES C, 2 Cycles:8        
  1312.         Opcode@ResBit CB92, 8,  D_Read, 2, D_Write ;; RES D, 2 Cycles:8        
  1313.         Opcode@ResBit CB93, 8,  E_Read, 2, E_Write ;; RES E, 2 Cycles:8    
  1314.         Opcode@ResBit CB94, 8,  H_Read, 2, H_Write ;; RES H, 2 Cycles:8
  1315.         Opcode@ResBit CB95, 8,  L_Read, 2, L_Write ;; RES L, 2 Cycles:8        
  1316.         Opcode@ResBit CB96,16,  xHL_Read, 2, xHL_Write ;; RES xHL, 2 Cycles:16      
  1317.         Opcode@ResBit CB97, 8,  A_Read, 2, A_Write ;; RES A, 2 Cycles:8        
  1318.      
  1319.         Opcode@ResBit CB98, 8,  B_Read, 3, B_Write ;; RES B, 3 Cycles:8
  1320.         Opcode@ResBit CB99, 8,  C_Read, 3, C_Write ;; RES C, 3 Cycles:8        
  1321.         Opcode@ResBit CB9A, 8,  D_Read, 3, D_Write ;; RES D, 3 Cycles:8        
  1322.         Opcode@ResBit CB9B, 8,  E_Read, 3, E_Write ;; RES E, 3 Cycles:8    
  1323.         Opcode@ResBit CB9C, 8,  H_Read, 3, H_Write ;; RES H, 3 Cycles:8
  1324.         Opcode@ResBit CB9D, 8,  L_Read, 3, L_Write ;; RES L, 3 Cycles:8        
  1325.         Opcode@ResBit CB9E,16,  xHL_Read, 3, xHL_Write ;; RES xHL, 3 Cycles:16      
  1326.         Opcode@ResBit CB9F, 8,  A_Read, 3, A_Write ;; RES A, 3 Cycles:8
  1327.  
  1328.         Opcode@ResBit CBA0, 8,  B_Read, 4, B_Write ;; RES B, 4 Cycles:8
  1329.         Opcode@ResBit CBA1, 8,  C_Read, 4, C_Write ;; RES C, 4 Cycles:8        
  1330.         Opcode@ResBit CBA2, 8,  D_Read, 4, D_Write ;; RES D, 4 Cycles:8        
  1331.         Opcode@ResBit CBA3, 8,  E_Read, 4, E_Write ;; RES E, 4 Cycles:8    
  1332.         Opcode@ResBit CBA4, 8,  H_Read, 4, H_Write ;; RES H, 4 Cycles:8
  1333.         Opcode@ResBit CBA5, 8,  L_Read, 4, L_Write ;; RES L, 4 Cycles:8        
  1334.         Opcode@ResBit CBA6,16,  xHL_Read, 4, xHL_Write ;; RES xHL, 4 Cycles:16      
  1335.         Opcode@ResBit CBA7, 8,  A_Read, 4, A_Write ;; RES A, 4 Cycles:8        
  1336.      
  1337.         Opcode@ResBit CBA8, 8,  B_Read, 5, B_Write ;; RES B, 5 Cycles:8
  1338.         Opcode@ResBit CBA9, 8,  C_Read, 5, C_Write ;; RES C, 5 Cycles:8        
  1339.         Opcode@ResBit CBAA, 8,  D_Read, 5, D_Write ;; RES D, 5 Cycles:8        
  1340.         Opcode@ResBit CBAB, 8,  E_Read, 5, E_Write ;; RES E, 5 Cycles:8    
  1341.         Opcode@ResBit CBAC, 8,  H_Read, 5, H_Write ;; RES H, 5 Cycles:8
  1342.         Opcode@ResBit CBAD, 8,  L_Read, 5, L_Write ;; RES L, 5 Cycles:8        
  1343.         Opcode@ResBit CBAE,16,  xHL_Read, 5, xHL_Write ;; RES xHL, 5 Cycles:16      
  1344.         Opcode@ResBit CBAF, 8,  A_Read, 5, A_Write ;; RES A, 5 Cycles:8
  1345.        
  1346.         Opcode@ResBit CBB0, 8,  B_Read, 6, B_Write ;; RES B, 6 Cycles:8
  1347.         Opcode@ResBit CBB1, 8,  C_Read, 6, C_Write ;; RES C, 6 Cycles:8        
  1348.         Opcode@ResBit CBB2, 8,  D_Read, 6, D_Write ;; RES D, 6 Cycles:8        
  1349.         Opcode@ResBit CBB3, 8,  E_Read, 6, E_Write ;; RES E, 6 Cycles:8    
  1350.         Opcode@ResBit CBB4, 8,  H_Read, 6, H_Write ;; RES H, 6 Cycles:8
  1351.         Opcode@ResBit CBB5, 8,  L_Read, 6, L_Write ;; RES L, 6 Cycles:8        
  1352.         Opcode@ResBit CBB6,16,  xHL_Read, 6, xHL_Write ;; RES xHL, 6 Cycles:16      
  1353.         Opcode@ResBit CBB7, 8,  A_Read, 6, A_Write ;; RES A, 6 Cycles:8        
  1354.      
  1355.         Opcode@ResBit CBB8, 8,  B_Read, 7, B_Write ;; RES B, 7 Cycles:8
  1356.         Opcode@ResBit CBB9, 8,  C_Read, 7, C_Write ;; RES C, 7 Cycles:8        
  1357.         Opcode@ResBit CBBA, 8,  D_Read, 7, D_Write ;; RES D, 7 Cycles:8        
  1358.         Opcode@ResBit CBBB, 8,  E_Read, 7, E_Write ;; RES E, 7 Cycles:8    
  1359.         Opcode@ResBit CBBC, 8,  H_Read, 7, H_Write ;; RES H, 7 Cycles:8
  1360.         Opcode@ResBit CBBD, 8,  L_Read, 7, L_Write ;; RES L, 7 Cycles:8        
  1361.         Opcode@ResBit CBBE,16,  xHL_Read, 7, xHL_Write ;; RES xHL, 7 Cycles:16      
  1362.         Opcode@ResBit CBBF, 8,  A_Read, 7, A_Write ;; RES A, 7 Cycles:8
  1363.  
  1364.         Opcode@SetBit CBC0, 8,  B_Read, 0, B_Write ;; SET B, 0 Cycles:8
  1365.         Opcode@SetBit CBC1, 8,  C_Read, 0, C_Write ;; SET C, 0 Cycles:8        
  1366.         Opcode@SetBit CBC2, 8,  D_Read, 0, D_Write ;; SET D, 0 Cycles:8        
  1367.         Opcode@SetBit CBC3, 8,  E_Read, 0, E_Write ;; SET E, 0 Cycles:8    
  1368.         Opcode@SetBit CBC4, 8,  H_Read, 0, H_Write ;; SET H, 0 Cycles:8
  1369.         Opcode@SetBit CBC5, 8,  L_Read, 0, L_Write ;; SET L, 0 Cycles:8        
  1370.         Opcode@SetBit CBC6,16,  xHL_Read, 0, xHL_Write ;; SET xHL, 0 Cycles:16      
  1371.         Opcode@SetBit CBC7, 8,  A_Read, 0, A_Write ;; SET A, 0 Cycles:8        
  1372.      
  1373.         Opcode@SetBit CBC8, 8,  B_Read, 1, B_Write ;; SET B, 1 Cycles:8
  1374.         Opcode@SetBit CBC9, 8,  C_Read, 1, C_Write ;; SET C, 1 Cycles:8        
  1375.         Opcode@SetBit CBCA, 8,  D_Read, 1, D_Write ;; SET D, 1 Cycles:8        
  1376.         Opcode@SetBit CBCB, 8,  E_Read, 1, E_Write ;; SET E, 1 Cycles:8    
  1377.         Opcode@SetBit CBCC, 8,  H_Read, 1, H_Write ;; SET H, 1 Cycles:8
  1378.         Opcode@SetBit CBCD, 8,  L_Read, 1, L_Write ;; SET L, 1 Cycles:8        
  1379.         Opcode@SetBit CBCE,16,  xHL_Read, 1, xHL_Write ;; SET xHL, 1 Cycles:16      
  1380.         Opcode@SetBit CBCF, 8,  A_Read, 1, A_Write ;; SET A, 1 Cycles:8
  1381.  
  1382.         Opcode@SetBit CBD0, 8,  B_Read, 2, B_Write ;; SET B, 2 Cycles:8
  1383.         Opcode@SetBit CBD1, 8,  C_Read, 2, C_Write ;; SET C, 2 Cycles:8        
  1384.         Opcode@SetBit CBD2, 8,  D_Read, 2, D_Write ;; SET D, 2 Cycles:8        
  1385.         Opcode@SetBit CBD3, 8,  E_Read, 2, E_Write ;; SET E, 2 Cycles:8    
  1386.         Opcode@SetBit CBD4, 8,  H_Read, 2, H_Write ;; SET H, 2 Cycles:8
  1387.         Opcode@SetBit CBD5, 8,  L_Read, 2, L_Write ;; SET L, 2 Cycles:8        
  1388.         Opcode@SetBit CBD6,16,  xHL_Read, 2, xHL_Write ;; SET xHL, 2 Cycles:16      
  1389.         Opcode@SetBit CBD7, 8,  A_Read, 2, A_Write ;; SET A, 2 Cycles:8        
  1390.      
  1391.         Opcode@SetBit CBD8, 8,  B_Read, 3, B_Write ;; SET B, 3 Cycles:8
  1392.         Opcode@SetBit CBD9, 8,  C_Read, 3, C_Write ;; SET C, 3 Cycles:8        
  1393.         Opcode@SetBit CBDA, 8,  D_Read, 3, D_Write ;; SET D, 3 Cycles:8        
  1394.         Opcode@SetBit CBDB, 8,  E_Read, 3, E_Write ;; SET E, 3 Cycles:8    
  1395.         Opcode@SetBit CBDC, 8,  H_Read, 3, H_Write ;; SET H, 3 Cycles:8
  1396.         Opcode@SetBit CBDD, 8,  L_Read, 3, L_Write ;; SET L, 3 Cycles:8        
  1397.         Opcode@SetBit CBDE,16,  xHL_Read, 3, xHL_Write ;; SET xHL, 3 Cycles:16      
  1398.         Opcode@SetBit CBDF, 8,  A_Read, 3, A_Write ;; SET A, 3 Cycles:8
  1399.  
  1400.         Opcode@SetBit CBE0, 8,  B_Read, 4, B_Write ;; SET B, 4 Cycles:8
  1401.         Opcode@SetBit CBE1, 8,  C_Read, 4, C_Write ;; SET C, 4 Cycles:8        
  1402.         Opcode@SetBit CBE2, 8,  D_Read, 4, D_Write ;; SET D, 4 Cycles:8        
  1403.         Opcode@SetBit CBE3, 8,  E_Read, 4, E_Write ;; SET E, 4 Cycles:8    
  1404.         Opcode@SetBit CBE4, 8,  H_Read, 4, H_Write ;; SET H, 4 Cycles:8
  1405.         Opcode@SetBit CBE5, 8,  L_Read, 4, L_Write ;; SET L, 4 Cycles:8        
  1406.         Opcode@SetBit CBE6,16,  xHL_Read, 4, xHL_Write ;; SET xHL, 4 Cycles:16      
  1407.         Opcode@SetBit CBE7, 8,  A_Read, 4, A_Write ;; SET A, 4 Cycles:8        
  1408.      
  1409.         Opcode@SetBit CBE8, 8,  B_Read, 5, B_Write ;; SET B, 5 Cycles:8
  1410.         Opcode@SetBit CBE9, 8,  C_Read, 5, C_Write ;; SET C, 5 Cycles:8        
  1411.         Opcode@SetBit CBEA, 8,  D_Read, 5, D_Write ;; SET D, 5 Cycles:8        
  1412.         Opcode@SetBit CBEB, 8,  E_Read, 5, E_Write ;; SET E, 5 Cycles:8    
  1413.         Opcode@SetBit CBEC, 8,  H_Read, 5, H_Write ;; SET H, 5 Cycles:8
  1414.         Opcode@SetBit CBED, 8,  L_Read, 5, L_Write ;; SET L, 5 Cycles:8        
  1415.         Opcode@SetBit CBEE,16,  xHL_Read, 5, xHL_Write ;; SET xHL, 5 Cycles:16      
  1416.         Opcode@SetBit CBEF, 8,  A_Read, 5, A_Write ;; SET A, 5 Cycles:8
  1417.        
  1418.         Opcode@SetBit CBF0, 8,  B_Read, 6, B_Write ;; SET B, 6 Cycles:8
  1419.         Opcode@SetBit CBF1, 8,  C_Read, 6, C_Write ;; SET C, 6 Cycles:8        
  1420.         Opcode@SetBit CBF2, 8,  D_Read, 6, D_Write ;; SET D, 6 Cycles:8        
  1421.         Opcode@SetBit CBF3, 8,  E_Read, 6, E_Write ;; SET E, 6 Cycles:8    
  1422.         Opcode@SetBit CBF4, 8,  H_Read, 6, H_Write ;; SET H, 6 Cycles:8
  1423.         Opcode@SetBit CBF5, 8,  L_Read, 6, L_Write ;; SET L, 6 Cycles:8        
  1424.         Opcode@SetBit CBF6,16,  xHL_Read, 6, xHL_Write ;; SET xHL, 6 Cycles:16      
  1425.         Opcode@SetBit CBF7, 8,  A_Read, 6, A_Write ;; SET A, 6 Cycles:8        
  1426.      
  1427.         Opcode@SetBit CBF8, 8,  B_Read, 7, B_Write ;; SET B, 7 Cycles:8
  1428.         Opcode@SetBit CBF9, 8,  C_Read, 7, C_Write ;; SET C, 7 Cycles:8        
  1429.         Opcode@SetBit CBFA, 8,  D_Read, 7, D_Write ;; SET D, 7 Cycles:8        
  1430.         Opcode@SetBit CBFB, 8,  E_Read, 7, E_Write ;; SET E, 7 Cycles:8    
  1431.         Opcode@SetBit CBFC, 8,  H_Read, 7, H_Write ;; SET H, 7 Cycles:8
  1432.         Opcode@SetBit CBFD, 8,  L_Read, 7, L_Write ;; SET L, 7 Cycles:8        
  1433.         Opcode@SetBit CBFE,16,  xHL_Read, 7, xHL_Write ;; SET xHL, 7 Cycles:16      
  1434.         Opcode@SetBit CBFF, 8,  A_Read, 7, A_Write ;; SET A, 7 Cycles:8        
  1435. V_EXIT:
  1436.       pop esi
  1437.       pop edi
  1438.       pop ebx
  1439.       ret          
  1440. OPD3:
  1441. OPDB:
  1442. OPDD:
  1443. OPE3:
  1444. OPE4:
  1445. OPEB:
  1446. OPEC:
  1447. OPED:
  1448. OPF4:
  1449. OPFC:
  1450. OPFD: ud2
  1451.       align 16
  1452. OPTAB dd  OP00, OP01, OP02, OP03, OP04, OP05, OP06, OP07, OP08, OP09, OP0A, OP0B, OP0C, OP0D, OP0E, OP0F
  1453.       dd  OP10, OP11, OP12, OP13, OP14, OP15, OP16, OP17, OP18, OP19, OP1A, OP1B, OP1C, OP1D, OP1E, OP1F
  1454.       dd  OP20, OP21, OP22, OP23, OP24, OP25, OP26, OP27, OP28, OP29, OP2A, OP2B, OP2C, OP2D, OP2E, OP2F
  1455.       dd  OP30, OP31, OP32, OP33, OP34, OP35, OP36, OP37, OP38, OP39, OP3A, OP3B, OP3C, OP3D, OP3E, OP3F
  1456.       dd  OP40, OP41, OP42, OP43, OP44, OP45, OP46, OP47, OP48, OP49, OP4A, OP4B, OP4C, OP4D, OP4E, OP4F
  1457.       dd  OP50, OP51, OP52, OP53, OP54, OP55, OP56, OP57, OP58, OP59, OP5A, OP5B, OP5C, OP5D, OP5E, OP5F
  1458.       dd  OP60, OP61, OP62, OP63, OP64, OP65, OP66, OP67, OP68, OP69, OP6A, OP6B, OP6C, OP6D, OP6E, OP6F
  1459.       dd  OP70, OP71, OP72, OP73, OP74, OP75, OP76, OP77, OP78, OP79, OP7A, OP7B, OP7C, OP7D, OP7E, OP7F
  1460.       dd  OP80, OP81, OP82, OP83, OP84, OP85, OP86, OP87, OP88, OP89, OP8A, OP8B, OP8C, OP8D, OP8E, OP8F
  1461.       dd  OP90, OP91, OP92, OP93, OP94, OP95, OP96, OP97, OP98, OP99, OP9A, OP9B, OP9C, OP9D, OP9E, OP9F
  1462.       dd  OPA0, OPA1, OPA2, OPA3, OPA4, OPA5, OPA6, OPA7, OPA8, OPA9, OPAA, OPAB, OPAC, OPAD, OPAE, OPAF
  1463.       dd  OPB0, OPB1, OPB2, OPB3, OPB4, OPB5, OPB6, OPB7, OPB8, OPB9, OPBA, OPBB, OPBC, OPBD, OPBE, OPBF
  1464.       dd  OPC0, OPC1, OPC2, OPC3, OPC4, OPC5, OPC6, OPC7, OPC8, OPC9, OPCA, OPCB, OPCC, OPCD, OPCE, OPCF
  1465.       dd  OPD0, OPD1, OPD2, OPD3, OPD4, OPD5, OPD6, OPD7, OPD8, OPD9, OPDA, OPDB, OPDC, OPDD, OPDE, OPDF
  1466.       dd  OPE0, OPE1, OPE2, OPE3, OPE4, OPE5, OPE6, OPE7, OPE8, OPE9, OPEA, OPEB, OPEC, OPED, OPEE, OPEF
  1467.       dd  OPF0, OPF1, OPF2, OPF3, OPF4, OPF5, OPF6, OPF7, OPF8, OPF9, OPFA, OPFB, OPFC, OPFD, OPFE, OPFF
  1468.       align 16
  1469. CBTAB dd  CB00, CB01, CB02, CB03, CB04, CB05, CB06, CB07, CB08, CB09, CB0A, CB0B, CB0C, CB0D, CB0E, CB0F
  1470.       dd  CB10, CB11, CB12, CB13, CB14, CB15, CB16, CB17, CB18, CB19, CB1A, CB1B, CB1C, CB1D, CB1E, CB1F
  1471.       dd  CB20, CB21, CB22, CB23, CB24, CB25, CB26, CB27, CB28, CB29, CB2A, CB2B, CB2C, CB2D, CB2E, CB2F
  1472.       dd  CB30, CB31, CB32, CB33, CB34, CB35, CB36, CB37, CB38, CB39, CB3A, CB3B, CB3C, CB3D, CB3E, CB3F
  1473.       dd  CB40, CB41, CB42, CB43, CB44, CB45, CB46, CB47, CB48, CB49, CB4A, CB4B, CB4C, CB4D, CB4E, CB4F
  1474.       dd  CB50, CB51, CB52, CB53, CB54, CB55, CB56, CB57, CB58, CB59, CB5A, CB5B, CB5C, CB5D, CB5E, CB5F
  1475.       dd  CB60, CB61, CB62, CB63, CB64, CB65, CB66, CB67, CB68, CB69, CB6A, CB6B, CB6C, CB6D, CB6E, CB6F
  1476.       dd  CB70, CB71, CB72, CB73, CB74, CB75, CB76, CB77, CB78, CB79, CB7A, CB7B, CB7C, CB7D, CB7E, CB7F
  1477.       dd  CB80, CB81, CB82, CB83, CB84, CB85, CB86, CB87, CB88, CB89, CB8A, CB8B, CB8C, CB8D, CB8E, CB8F
  1478.       dd  CB90, CB91, CB92, CB93, CB94, CB95, CB96, CB97, CB98, CB99, CB9A, CB9B, CB9C, CB9D, CB9E, CB9F
  1479.       dd  CBA0, CBA1, CBA2, CBA3, CBA4, CBA5, CBA6, CBA7, CBA8, CBA9, CBAA, CBAB, CBAC, CBAD, CBAE, CBAF
  1480.       dd  CBB0, CBB1, CBB2, CBB3, CBB4, CBB5, CBB6, CBB7, CBB8, CBB9, CBBA, CBBB, CBBC, CBBD, CBBE, CBBF
  1481.       dd  CBC0, CBC1, CBC2, CBC3, CBC4, CBC5, CBC6, CBC7, CBC8, CBC9, CBCA, CBCB, CBCC, CBCD, CBCE, CBCF
  1482.       dd  CBD0, CBD1, CBD2, CBD3, CBD4, CBD5, CBD6, CBD7, CBD8, CBD9, CBDA, CBDB, CBDC, CBDD, CBDE, CBDF
  1483.       dd  CBE0, CBE1, CBE2, CBE3, CBE4, CBE5, CBE6, CBE7, CBE8, CBE9, CBEA, CBEB, CBEC, CBED, CBEE, CBEF
  1484.       dd  CBF0, CBF1, CBF2, CBF3, CBF4, CBF5, CBF6, CBF7, CBF8, CBF9, CBFA, CBFB, CBFC, CBFD, CBFE, CBFF
  1485.        
  1486. cpu_optick endp
  1487.  
  1488.   end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement