#![allow(non_snake_case)]
use std::{cell::RefCell, rc::Rc};
use crate::libs::{memory::Memory, ports::Ports};
use super::{
api::{
adc, adc16, add, add16, and, bit, biti, call, cp, dec, in_u8_ex, inc, jp, jp_hl, jr,
ld16nnrr, ld16rrnn_ex, or, pop16, push16, ret, rl, rlc, rr, rrc, rst, sbc, sbc16, sla, sll,
slt_trap, sra, srl, sub, xor, FLAG_3, FLAG_5, FLAG_C, FLAG_H, FLAG_N, FLAG_P, FLAG_S,
FLAG_V, FLAG_Z,
},
hook::FuncHook,
util::{join_bytes, sign_extend, split_word, tern_op_b},
z80_base::{
Register16, Z80Data, SHIFT_0X_CB, SHIFT_0X_DD, SHIFT_0X_DDCB, SHIFT_0X_ED, SHIFT_0X_FD,
},
z80_tables::{self, HALF_CARRY_SUB_TABLE},
};
macro_rules! fn_instr_ld_r16_nnnn {
($fn:tt, $r:ident, $fs:ident) => {
pub fn $fn(data: &mut Z80Data, memory: &mut Memory) {
let address = data.pc();
let b1 = memory.read_byte(address);
data.inc_pc(1);
let address = data.pc();
let b2 = memory.read_byte(address);
data.inc_pc(1);
data.$fs(join_bytes(b2, b1));
}
};
}
macro_rules! fn_instr_ld_i_nnnn_r16 {
($fn:tt, $rl:ident, $rh:ident) => {
pub fn $fn(data: &mut Z80Data, memory: &mut Memory) {
ld16nnrr(data, memory, data.$rl, data.$rh);
}
};
}
macro_rules! fn_instr_ld_i_r16_r8 {
($fn:tt, $r16:ident, $r8:ident) => {
pub fn $fn(data: &mut Z80Data, memory: &mut Memory) {
memory.write_byte(data.$r16(), data.$r8);
}
};
}
macro_rules! fn_instr_add_r8 {
($fn:tt, $r8:ident) => {
pub fn $fn(data: &mut Z80Data) {
add(data, data.$r8);
}
};
}
macro_rules! fn_instr_adc_r8 {
($fn:tt, $r8:ident) => {
pub fn $fn(data: &mut Z80Data) {
adc(data, data.$r8);
}
};
}
macro_rules! fn_instr_sub_r8 {
($fn:tt, $r8:ident) => {
pub fn $fn(data: &mut Z80Data) {
sub(data, data.$r8);
}
};
}
macro_rules! fn_instr_sbc_r8 {
($fn:tt, $r8:ident) => {
pub fn $fn(data: &mut Z80Data) {
sbc(data, data.$r8);
}
};
}
macro_rules! fn_instr_and_r8 {
($fn:tt, $r8:ident) => {
pub fn $fn(data: &mut Z80Data) {
and(data, data.$r8);
}
};
}
macro_rules! fn_instr_xor_r8 {
($fn:tt, $r8:ident) => {
pub fn $fn(data: &mut Z80Data) {
xor(data, data.$r8);
}
};
}
macro_rules! fn_instr_or_r8 {
($fn:tt, $r8:ident) => {
pub fn $fn(data: &mut Z80Data) {
or(data, data.$r8);
}
};
}
macro_rules! fn_instr_cp_r8 {
($fn:tt, $r8:ident) => {
pub fn $fn(data: &mut Z80Data) {
cp(data, data.$r8);
}
};
}
macro_rules! fn_instr_pop_r16 {
($fn:tt, $rl:ident, $rh:ident) => {
pub fn $fn(data: &mut Z80Data, memory: &mut Memory) {
(data.$rl, data.$rh) = pop16(data, memory);
}
};
}
macro_rules! fn_instr_push_r16 {
($fn:tt, $rl:ident, $rh:ident) => {
pub fn $fn(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq(_address, 1);
push16(data, memory, data.$rl, data.$rh);
}
};
}
macro_rules! fn_instr_ld_a_r16 {
($fn:tt, $r16:ident) => {
pub fn $fn(data: &mut Z80Data, memory: &mut Memory) {
let address = data.$r16();
data.A = memory.read_byte(address);
}
};
}
macro_rules! fn_instr_ld_a_r8 {
($fn:tt, $r8:ident) => {
pub fn $fn(data: &mut Z80Data) {
data.A = data.$r8;
}
};
}
macro_rules! fn_instr_op_16 {
($fn:tt, $op:ident) => {
pub fn $fn(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq_loop(_address, 1, 2);
data.$op();
}
};
}
macro_rules! fn_instr_op_8 {
($fn:tt, $op:ident) => {
pub fn $fn(data: &mut Z80Data) {
data.$op();
}
};
}
macro_rules! fn_instr_ld_r8_nn {
($fn:tt, $r:ident) => {
pub fn $fn(data: &mut Z80Data, memory: &mut Memory) {
let address = data.pc();
data.$r = memory.read_byte(address);
data.inc_pc(1);
}
};
}
macro_rules! fn_instr_add_hl_r16 {
($fn:tt, $r16:ident) => {
pub fn $fn(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq_loop(_address, 1, 7);
let mut hl = Register16::new(data.H, data.L);
let value2 = data.$r16();
add16(data, &mut hl, value2);
(data.H, data.L) = hl.result();
}
};
}
macro_rules! fn_instr_ld_hl_i_nnnn {
($fn:tt, $rl:ident, $rh:ident) => {
pub fn $fn(data: &mut Z80Data, memory: &mut Memory) {
(data.$rl, data.$rh) = ld16rrnn_ex(data, memory);
}
};
}
macro_rules! fn_instr_ld_i_reg_p_dd_r8 {
($fn:tt, $ri:ident, $r:ident) => {
pub fn $fn(data: &mut Z80Data, memory: &mut Memory) {
let address = data.pc();
let offset = memory.read_byte(address);
let _address = data.pc();
memory.contend_read_no_mreq_loop(_address, 1, 5);
data.inc_pc(1);
memory.write_byte(data.$ri() + (sign_extend(offset) as u16), data.$r)
}
};
}
macro_rules! fn_instr_op_a_i_reg_p_dd {
($fn:tt, $r:ident, $op:ident) => {
pub fn $fn(data: &mut Z80Data, memory: &mut Memory) {
let address = data.pc();
let offset: u8 = memory.read_byte(address);
let _address = data.pc();
memory.contend_read_no_mreq_loop(_address, 1, 5);
data.inc_pc(1);
let byte_temp: u8 = memory.read_byte(data.$r() + (sign_extend(offset) as u16));
$op(data, byte_temp)
}
};
}
macro_rules! fn_instr_op_a_i_reg_p_dd_d {
($fn:tt, $r:ident, $op:ident) => {
pub fn $fn(data: &mut Z80Data, memory: &mut Memory) {
let address = data.pc();
let offset: u8 = memory.read_byte(address);
let _address = data.pc();
memory.contend_read_no_mreq_loop(_address, 1, 5);
data.inc_pc(1);
let byte_temp: u8 = memory.read_byte(data.$r() + (sign_extend(offset) as u16));
$op(data, byte_temp)
}
};
}
macro_rules! fn_instr_dd_op_a_i_reg_p_dd {
($fn:tt, $op:ident) => {
fn_instr_op_a_i_reg_p_dd!($fn, ix, $op);
};
}
macro_rules! fn_instr_dd_op_a_i_reg_p_dd_d {
($fn:tt, $op:ident) => {
fn_instr_op_a_i_reg_p_dd_d!($fn, ix, $op);
};
}
macro_rules! fn_instr_fd_op_a_i_reg_p_dd {
($fn:tt, $op:ident) => {
fn_instr_op_a_i_reg_p_dd!($fn, iy, $op);
};
}
macro_rules! fn_instr_fd_op_a_i_reg_p_dd_d {
($fn:tt, $op:ident) => {
fn_instr_op_a_i_reg_p_dd_d!($fn, iy, $op);
};
}
macro_rules! fn_instr_op_i_reg_p_dd {
($fn:tt, $ri:ident, $op:ident) => {
pub fn $fn(data: &mut Z80Data, memory: &mut Memory) {
let address = data.pc();
let offset: u8 = memory.read_byte(address);
let _address = data.pc();
memory.contend_read_no_mreq_loop(_address, 1, 5);
data.inc_pc(1);
let word_temp: u16 = data.$ri() + sign_extend(offset) as u16;
let mut byte_temp: u8 = memory.read_byte(word_temp);
memory.contend_read_no_mreq(word_temp, 1);
$op(data, &mut byte_temp);
memory.write_byte(word_temp, byte_temp)
}
};
}
macro_rules! fn_instr_dd_op_i_reg_p_dd {
($fn:tt, $op:ident) => {
fn_instr_op_i_reg_p_dd!($fn, ix, $op);
};
}
macro_rules! fn_instr_fd_op_i_reg_p_dd {
($fn:tt, $op:ident) => {
fn_instr_op_i_reg_p_dd!($fn, iy, $op);
};
}
macro_rules! fn_instr_ld_r_i_reg_p_dd {
($fn:tt, $r:ident, $ri:ident) => {
pub fn $fn(data: &mut Z80Data, memory: &mut Memory) {
let address = data.pc();
let offset: u8 = memory.read_byte(address);
let _address = data.pc();
memory.contend_read_no_mreq_loop(_address, 1, 5);
data.inc_pc(1);
data.$r = memory.read_byte(data.$ri() + (sign_extend(offset) as u16));
}
};
}
macro_rules! fn_instr_dd_ld_r_i_reg_p_dd {
($fn:tt, $r:ident) => {
fn_instr_ld_r_i_reg_p_dd!($fn, $r, ix);
};
}
macro_rules! fn_instr_fd_ld_r_i_reg_p_dd {
($fn:tt, $r:ident) => {
fn_instr_ld_r_i_reg_p_dd!($fn, $r, iy);
};
}
macro_rules! fn_instr_ddcb_op_i_reg_p_dd {
($fn:tt, $op:ident) => {
pub fn $fn(data: &mut Z80Data, memory: &mut Memory) {
let mut byte_temp: u8 = memory.read_byte(data.temp_addr);
memory.contend_read_no_mreq(data.temp_addr, 1);
byte_temp = $op(data, byte_temp);
memory.write_byte(data.temp_addr, byte_temp);
}
};
}
macro_rules! fn_instr_ddcb_ld_r_rlc_i_reg_p_dd {
($fn:tt, $r:ident) => {
pub fn $fn(data: &mut Z80Data, memory: &mut Memory) {
data.$r = memory.read_byte(data.temp_addr);
memory.contend_read_no_mreq(data.temp_addr, 1);
data.$r = rlc(data, data.$r);
memory.write_byte(data.temp_addr, data.$r);
}
};
}
macro_rules! fn_instr_ddcb_ld_r_rrc_i_reg_p_dd {
($fn:tt, $r:ident) => {
pub fn $fn(data: &mut Z80Data, memory: &mut Memory) {
data.$r = memory.read_byte(data.temp_addr);
memory.contend_read_no_mreq(data.temp_addr, 1);
data.$r = rrc(data, data.$r);
memory.write_byte(data.temp_addr, data.$r);
}
};
}
macro_rules! fn_instr_ddcb_ld_r_rl_i_reg_p_dd {
($fn:tt, $r:ident) => {
pub fn $fn(data: &mut Z80Data, memory: &mut Memory) {
data.$r = memory.read_byte(data.temp_addr);
memory.contend_read_no_mreq(data.temp_addr, 1);
data.$r = rl(data, data.$r);
memory.write_byte(data.temp_addr, data.$r);
}
};
}
macro_rules! fn_instr_ddcb_ld_r_rr_i_reg_p_dd {
($fn:tt, $r:ident) => {
pub fn $fn(data: &mut Z80Data, memory: &mut Memory) {
data.$r = memory.read_byte(data.temp_addr);
memory.contend_read_no_mreq(data.temp_addr, 1);
data.$r = rr(data, data.$r);
memory.write_byte(data.temp_addr, data.$r);
}
};
}
macro_rules! fn_instr_ddcb_ld_r_sla_i_reg_p_dd {
($fn:tt, $r:ident) => {
pub fn $fn(data: &mut Z80Data, memory: &mut Memory) {
data.$r = memory.read_byte(data.temp_addr);
memory.contend_read_no_mreq(data.temp_addr, 1);
data.$r = sla(data, data.$r);
memory.write_byte(data.temp_addr, data.$r);
}
};
}
macro_rules! fn_instr_ddcb_ld_r_sra_i_reg_p_dd {
($fn:tt, $r:ident) => {
pub fn $fn(data: &mut Z80Data, memory: &mut Memory) {
data.$r = memory.read_byte(data.temp_addr);
memory.contend_read_no_mreq(data.temp_addr, 1);
data.$r = sra(data, data.$r);
memory.write_byte(data.temp_addr, data.$r);
}
};
}
macro_rules! fn_instr_ddcb_ld_r_sll_i_reg_p_dd {
($fn:tt, $r:ident) => {
pub fn $fn(data: &mut Z80Data, memory: &mut Memory) {
data.$r = memory.read_byte(data.temp_addr);
memory.contend_read_no_mreq(data.temp_addr, 1);
data.$r = sll(data, data.$r);
memory.write_byte(data.temp_addr, data.$r);
}
};
}
macro_rules! fn_instr_ddcb_ld_r_srl_i_reg_p_dd {
($fn:tt, $r:ident) => {
pub fn $fn(data: &mut Z80Data, memory: &mut Memory) {
data.$r = memory.read_byte(data.temp_addr);
memory.contend_read_no_mreq(data.temp_addr, 1);
data.$r = srl(data, data.$r);
memory.write_byte(data.temp_addr, data.$r);
}
};
}
macro_rules! fn_instr_ddcb_bit_n_i_reg_p_dd {
($fn:tt, $r:expr) => {
pub fn $fn(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp = memory.read_byte(data.temp_addr);
memory.contend_read_no_mreq(data.temp_addr, 1);
biti(data, $r, byte_temp, data.temp_addr);
}
};
}
macro_rules! fn_instr_ddcb_ld_r_res_n_i_reg_p_dd {
($fn:tt, $r:ident, $mask:expr) => {
pub fn $fn(data: &mut Z80Data, memory: &mut Memory) {
data.$r = memory.read_byte(data.temp_addr) & $mask;
memory.contend_read_no_mreq(data.temp_addr, 1);
memory.write_byte(data.temp_addr, data.$r);
}
};
}
macro_rules! fn_instr_ddcb_res_n_i_reg_p_dd {
($fn:tt, $mask:expr) => {
pub fn $fn(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp: u8 = memory.read_byte(data.temp_addr);
memory.contend_read_no_mreq(data.temp_addr, 1);
memory.write_byte(data.temp_addr, byte_temp & $mask);
}
};
}
macro_rules! fn_instr_ddcb_set_n_i_reg_p_dd {
($fn:tt, $mask:expr) => {
pub fn $fn(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp: u8 = memory.read_byte(data.temp_addr);
memory.contend_read_no_mreq(data.temp_addr, 1);
memory.write_byte(data.temp_addr, byte_temp | $mask);
}
};
}
macro_rules! fn_instr_ddcb_ld_r_res_0_i_reg_p_dd {
($fn:tt, $r:ident) => {
fn_instr_ddcb_ld_r_res_n_i_reg_p_dd!($fn, $r, 0xfe);
};
}
macro_rules! fn_instr_ddcb_ld_r_res_1_i_reg_p_dd {
($fn:tt, $r:ident) => {
fn_instr_ddcb_ld_r_res_n_i_reg_p_dd!($fn, $r, 0xfd);
};
}
macro_rules! fn_instr_ddcb_ld_r_res_2_i_reg_p_dd {
($fn:tt, $r:ident) => {
fn_instr_ddcb_ld_r_res_n_i_reg_p_dd!($fn, $r, 0xfb);
};
}
macro_rules! fn_instr_ddcb_ld_r_res_3_i_reg_p_dd {
($fn:tt, $r:ident) => {
fn_instr_ddcb_ld_r_res_n_i_reg_p_dd!($fn, $r, 0xf7);
};
}
macro_rules! fn_instr_ddcb_ld_r_res_4_i_reg_p_dd {
($fn:tt, $r:ident) => {
fn_instr_ddcb_ld_r_res_n_i_reg_p_dd!($fn, $r, 0xef);
};
}
macro_rules! fn_instr_ddcb_ld_r_res_5_i_reg_p_dd {
($fn:tt, $r:ident) => {
fn_instr_ddcb_ld_r_res_n_i_reg_p_dd!($fn, $r, 0xdf);
};
}
macro_rules! fn_instr_ddcb_ld_r_res_6_i_reg_p_dd {
($fn:tt, $r:ident) => {
fn_instr_ddcb_ld_r_res_n_i_reg_p_dd!($fn, $r, 0xbf);
};
}
macro_rules! fn_instr_ddcb_ld_r_res_7_i_reg_p_dd {
($fn:tt, $r:ident) => {
fn_instr_ddcb_ld_r_res_n_i_reg_p_dd!($fn, $r, 0x7f);
};
}
macro_rules! fn_instr_ddcb_ld_r_set_n_i_reg_p_dd {
($fn:tt, $r:ident, $mask:expr) => {
pub fn $fn(data: &mut Z80Data, memory: &mut Memory) {
data.$r = memory.read_byte(data.temp_addr) | $mask;
memory.contend_read_no_mreq(data.temp_addr, 1);
memory.write_byte(data.temp_addr, data.$r);
}
};
}
macro_rules! fn_instr_ddcb_ld_r_set_0_i_reg_p_dd {
($fn:tt, $r:ident) => {
fn_instr_ddcb_ld_r_set_n_i_reg_p_dd!($fn, $r, 0x01);
};
}
macro_rules! fn_instr_ddcb_ld_r_set_1_i_reg_p_dd {
($fn:tt, $r:ident) => {
fn_instr_ddcb_ld_r_set_n_i_reg_p_dd!($fn, $r, 0x02);
};
}
macro_rules! fn_instr_ddcb_ld_r_set_2_i_reg_p_dd {
($fn:tt, $r:ident) => {
fn_instr_ddcb_ld_r_set_n_i_reg_p_dd!($fn, $r, 0x04);
};
}
macro_rules! fn_instr_ddcb_ld_r_set_3_i_reg_p_dd {
($fn:tt, $r:ident) => {
fn_instr_ddcb_ld_r_set_n_i_reg_p_dd!($fn, $r, 0x08);
};
}
macro_rules! fn_instr_ddcb_ld_r_set_4_i_reg_p_dd {
($fn:tt, $r:ident) => {
fn_instr_ddcb_ld_r_set_n_i_reg_p_dd!($fn, $r, 0x10);
};
}
macro_rules! fn_instr_ddcb_ld_r_set_5_i_reg_p_dd {
($fn:tt, $r:ident) => {
fn_instr_ddcb_ld_r_set_n_i_reg_p_dd!($fn, $r, 0x20);
};
}
macro_rules! fn_instr_ddcb_ld_r_set_6_i_reg_p_dd {
($fn:tt, $r:ident) => {
fn_instr_ddcb_ld_r_set_n_i_reg_p_dd!($fn, $r, 0x40);
};
}
macro_rules! fn_instr_ddcb_ld_r_set_7_i_reg_p_dd {
($fn:tt, $r:ident) => {
fn_instr_ddcb_ld_r_set_n_i_reg_p_dd!($fn, $r, 0x80);
};
}
pub fn execute_opcode(
data: &mut Z80Data,
memory: &mut Memory,
ports: &mut Ports,
hook: Rc<RefCell<dyn FuncHook>>,
opcode: u16,
) -> bool {
match opcode {
0 => {
instr__NOP();
true
}
1 => {
instr__LD_BC_NNNN(data, memory);
true
}
0x02 => {
instr__LD_iBC_A(data, memory);
true
}
0x03 => {
instr__INC_BC(data, memory);
true
}
0x04 => {
instr__INC_B(data);
true
}
0x05 => {
instr__DEC_B(data);
true
}
0x06 => {
instr__LD_B_NN(data, memory);
true
}
0x07 => {
instr__RLCA(data);
true
}
0x08 => {
instr__EX_AF_AF(data);
true
}
0x09 => {
instr__ADD_HL_BC(data, memory);
true
}
0x0a => {
instr__LD_A_iBC(data, memory);
true
}
0x0b => {
instr__DEC_BC(data, memory);
true
}
0x0c => {
instr__INC_C(data);
true
}
0x0d => {
instr__DEC_C(data);
true
}
0x0e => {
instr__LD_C_NN(data, memory);
true
}
0x0f => {
instr__RRCA(data);
true
}
0x10 => {
instr__DJNZ_OFFSET(data, memory);
true
}
0x11 => {
instr__LD_DE_NNNN(data, memory);
true
}
0x12 => {
instr__LD_iDE_A(data, memory);
true
}
0x13 => {
instr__INC_DE(data, memory);
true
}
0x14 => {
instr__INC_D(data);
true
}
0x15 => {
instr__DEC_D(data);
true
}
0x16 => {
instr__LD_D_NN(data, memory);
true
}
0x17 => {
instr__RLA(data);
true
}
0x18 => {
instr__JR_OFFSET(data, memory);
true
}
0x19 => {
instr__ADD_HL_DE(data, memory);
true
}
0x1a => {
instr__LD_A_iDE(data, memory);
true
}
0x1b => {
instr__DEC_DE(data, memory);
true
}
0x1c => {
instr__INC_E(data);
true
}
0x1d => {
instr__DEC_E(data);
true
}
0x1e => {
instr__LD_E_NN(data, memory);
true
}
0x1f => {
instr__RRA(data);
true
}
0x20 => {
instr__JR_NZ_OFFSET(data, memory);
true
}
0x21 => {
instr__LD_HL_NNNN(data, memory);
true
}
0x22 => {
instr__LD_iNNNN_HL(data, memory);
true
}
0x23 => {
instr__INC_HL(data, memory);
true
}
0x24 => {
instr__INC_H(data);
true
}
0x25 => {
instr__DEC_H(data);
true
}
0x26 => {
instr__LD_H_NN(data, memory);
true
}
0x27 => {
instr__DAA(data);
true
}
0x28 => {
instr__JR_Z_OFFSET(data, memory);
true
}
0x29 => {
instr__ADD_HL_HL(data, memory);
true
}
0x2a => {
instr__LD_HL_iNNNN(data, memory);
true
}
0x2b => {
instr__DEC_HL(data, memory);
true
}
0x2c => {
instr__INC_L(data);
true
}
0x2d => {
instr__DEC_L(data);
true
}
0x2e => {
instr__LD_L_NN(data, memory);
true
}
0x2f => {
instr__CPL(data);
true
}
0x30 => {
instr__JR_NC_OFFSET(data, memory);
true
}
0x31 => {
instr__LD_SP_NNNN(data, memory);
true
}
0x32 => {
instr__LD_iNNNN_A(data, memory);
true
}
0x33 => {
instr__INC_SP(data, memory);
true
}
0x34 => {
instr__INC_iHL(data, memory);
true
}
0x35 => {
instr__DEC_iHL(data, memory);
true
}
0x36 => {
instr__LD_iHL_NN(data, memory);
true
}
0x37 => {
instr__SCF(data);
true
}
0x38 => {
instr__JR_C_OFFSET(data, memory);
true
}
0x39 => {
instr__ADD_HL_SP(data, memory);
true
}
0x3a => {
instr__LD_A_iNNNN(data, memory);
true
}
0x3b => {
instr__DEC_SP(data, memory);
true
}
0x3c => {
instr__INC_A(data);
true
}
0x3d => {
instr__DEC_A(data);
true
}
0x3e => {
instr__LD_A_NN(data, memory);
true
}
0x3f => {
instr__CCF(data);
true
}
0x40 => {
instr__LD_B_B();
true
}
0x41 => {
instr__LD_B_C(data);
true
}
0x42 => {
instr__LD_B_D(data);
true
}
0x43 => {
instr__LD_B_E(data);
true
}
0x44 => {
instr__LD_B_H(data);
true
}
0x45 => {
instr__LD_B_L(data);
true
}
0x46 => {
instr__LD_B_iHL(data, memory);
true
}
0x47 => {
instr__LD_B_A(data);
true
}
0x48 => {
instr__LD_C_B(data);
true
}
0x49 => {
instr__LD_C_C();
true
}
0x4a => {
instr__LD_C_D(data);
true
}
0x4b => {
instr__LD_C_E(data);
true
}
0x4c => {
instr__LD_C_H(data);
true
}
0x4d => {
instr__LD_C_L(data);
true
}
0x4e => {
instr__LD_C_iHL(data, memory);
true
}
0x4f => {
instr__LD_C_A(data);
true
}
0x50 => {
instr__LD_D_B(data);
true
}
0x51 => {
instr__LD_D_C(data);
true
}
0x52 => {
instr__LD_D_D();
true
}
0x53 => {
instr__LD_D_E(data);
true
}
0x54 => {
instr__LD_D_H(data);
true
}
0x55 => {
instr__LD_D_L(data);
true
}
0x56 => {
instr__LD_D_iHL(data, memory);
true
}
0x57 => {
instr__LD_D_A(data);
true
}
0x58 => {
instr__LD_E_B(data);
true
}
0x59 => {
instr__LD_E_C(data);
true
}
0x5a => {
instr__LD_E_D(data);
true
}
0x5b => {
instr__LD_E_E();
true
}
0x5c => {
instr__LD_E_H(data);
true
}
0x5d => {
instr__LD_E_L(data);
true
}
0x5e => {
instr__LD_E_iHL(data, memory);
true
}
0x5f => {
instr__LD_E_A(data);
true
}
0x60 => {
instr__LD_H_B(data);
true
}
0x61 => {
instr__LD_H_C(data);
true
}
0x62 => {
instr__LD_H_D(data);
true
}
0x63 => {
instr__LD_H_E(data);
true
}
0x64 => {
instr__LD_H_H();
true
}
0x65 => {
instr__LD_H_L(data);
true
}
0x66 => {
instr__LD_H_iHL(data, memory);
true
}
0x67 => {
instr__LD_H_A(data);
true
}
0x68 => {
instr__LD_L_B(data);
true
}
0x69 => {
instr__LD_L_C(data);
true
}
0x6a => {
instr__LD_L_D(data);
true
}
0x6b => {
instr__LD_L_E(data);
true
}
0x6c => {
instr__LD_L_H(data);
true
}
0x6d => {
instr__LD_L_L();
true
}
0x6e => {
instr__LD_L_iHL(data, memory);
true
}
0x6f => {
instr__LD_L_A(data);
true
}
0x70 => {
instr__LD_iHL_B(data, memory);
true
}
0x71 => {
instr__LD_iHL_C(data, memory);
true
}
0x72 => {
instr__LD_iHL_D(data, memory);
true
}
0x73 => {
instr__LD_iHL_E(data, memory);
true
}
0x74 => {
instr__LD_iHL_H(data, memory);
true
}
0x75 => {
instr__LD_iHL_L(data, memory);
true
}
0x76 => {
instr__HALT(data);
true
}
0x77 => {
instr__LD_iHL_A(data, memory);
true
}
0x78 => {
instr__LD_A_B(data);
true
}
0x79 => {
instr__LD_A_C(data);
true
}
0x7a => {
instr__LD_A_D(data);
true
}
0x7b => {
instr__LD_A_E(data);
true
}
0x7c => {
instr__LD_A_H(data);
true
}
0x7d => {
instr__LD_A_L(data);
true
}
0x7e => {
instr__LD_A_iHL(data, memory);
true
}
0x7f => {
instr__LD_A_A();
true
}
0x80 => {
instr__ADD_A_B(data);
true
}
0x81 => {
instr__ADD_A_C(data);
true
}
0x82 => {
instr__ADD_A_D(data);
true
}
0x83 => {
instr__ADD_A_E(data);
true
}
0x84 => {
instr__ADD_A_H(data);
true
}
0x85 => {
instr__ADD_A_L(data);
true
}
0x86 => {
instr__ADD_A_iHL(data, memory);
true
}
0x87 => {
instr__ADD_A_A(data);
true
}
0x88 => {
instr__ADC_A_B(data);
true
}
0x89 => {
instr__ADC_A_C(data);
true
}
0x8a => {
instr__ADC_A_D(data);
true
}
0x8b => {
instr__ADC_A_E(data);
true
}
0x8c => {
instr__ADC_A_H(data);
true
}
0x8d => {
instr__ADC_A_L(data);
true
}
0x8e => {
instr__ADC_A_iHL(data, memory);
true
}
0x8f => {
instr__ADC_A_A(data);
true
}
0x90 => {
instr__SUB_A_B(data);
true
}
0x91 => {
instr__SUB_A_C(data);
true
}
0x92 => {
instr__SUB_A_D(data);
true
}
0x93 => {
instr__SUB_A_E(data);
true
}
0x94 => {
instr__SUB_A_H(data);
true
}
0x95 => {
instr__SUB_A_L(data);
true
}
0x96 => {
instr__SUB_A_iHL(data, memory);
true
}
0x97 => {
instr__SUB_A_A(data);
true
}
0x98 => {
instr__SBC_A_B(data);
true
}
0x99 => {
instr__SBC_A_C(data);
true
}
0x9a => {
instr__SBC_A_D(data);
true
}
0x9b => {
instr__SBC_A_E(data);
true
}
0x9c => {
instr__SBC_A_H(data);
true
}
0x9d => {
instr__SBC_A_L(data);
true
}
0x9e => {
instr__SBC_A_iHL(data, memory);
true
}
0x9f => {
instr__SBC_A_A(data);
true
}
0xa0 => {
instr__AND_A_B(data);
true
}
0xa1 => {
instr__AND_A_C(data);
true
}
0xa2 => {
instr__AND_A_D(data);
true
}
0xa3 => {
instr__AND_A_E(data);
true
}
0xa4 => {
instr__AND_A_H(data);
true
}
0xa5 => {
instr__AND_A_L(data);
true
}
0xa6 => {
instr__AND_A_iHL(data, memory);
true
}
0xa7 => {
instr__AND_A_A(data);
true
}
0xa8 => {
instr__XOR_A_B(data);
true
}
0xa9 => {
instr__XOR_A_C(data);
true
}
0xaa => {
instr__XOR_A_D(data);
true
}
0xab => {
instr__XOR_A_E(data);
true
}
0xac => {
instr__XOR_A_H(data);
true
}
0xad => {
instr__XOR_A_L(data);
true
}
0xae => {
instr__XOR_A_iHL(data, memory);
true
}
0xaf => {
instr__XOR_A_A(data);
true
}
0xb0 => {
instr__OR_A_B(data);
true
}
0xb1 => {
instr__OR_A_C(data);
true
}
0xb2 => {
instr__OR_A_D(data);
true
}
0xb3 => {
instr__OR_A_E(data);
true
}
0xb4 => {
instr__OR_A_H(data);
true
}
0xb5 => {
instr__OR_A_L(data);
true
}
0xb6 => {
instr__OR_A_iHL(data, memory);
true
}
0xb7 => {
instr__OR_A_A(data);
true
}
0xb8 => {
instr__CP_B(data);
true
}
0xb9 => {
instr__CP_C(data);
true
}
0xba => {
instr__CP_D(data);
true
}
0xbb => {
instr__CP_E(data);
true
}
0xbc => {
instr__CP_H(data);
true
}
0xbd => {
instr__CP_L(data);
true
}
0xbe => {
instr__CP_iHL(data, memory);
true
}
0xbf => {
instr__CP_A(data);
true
}
0xc0 => {
instr__RET_NZ(data, memory, hook);
true
}
0xc1 => {
instr__POP_BC(data, memory);
true
}
0xc2 => {
instr__JP_NZ_NNNN(data, memory);
true
}
0xc3 => {
instr__JP_NNNN(data, memory);
true
}
0xc4 => {
instr__CALL_NZ_NNNN(data, memory, ports, hook);
true
}
0xc5 => {
instr__PUSH_BC(data, memory);
true
}
0xc6 => {
instr__ADD_A_NN(data, memory);
true
}
0xc7 => {
instr__RST_00(data, memory);
true
}
0xc8 => {
instr__RET_Z(data, memory, hook);
true
}
0xc9 => {
instr__RET(data, memory, hook);
true
}
0xca => {
instr__JP_Z_NNNN(data, memory);
true
}
0xcb => {
instr__SHIFT_CB(data, memory);
true
}
0xcc => {
instr__CALL_Z_NNNN(data, memory, ports, hook);
true
}
0xcd => {
instr__CALL_NNNN(data, memory, ports, hook);
true
}
0xce => {
instr__ADC_A_NN(data, memory);
true
}
0xcf => {
instr__RST_8(data, memory);
true
}
0xd0 => {
instr__RET_NC(data, memory, hook);
true
}
0xd1 => {
instr__POP_DE(data, memory);
true
}
0xd2 => {
instr__JP_NC_NNNN(data, memory);
true
}
0xd3 => {
instr__OUT_iNN_A(data, memory, ports);
true
}
0xd4 => {
instr__CALL_NC_NNNN(data, memory, ports, hook);
true
}
0xd5 => {
instr__PUSH_DE(data, memory);
true
}
0xd6 => {
instr__SUB_NN(data, memory);
true
}
0xd7 => {
instr__RST_10(data, memory);
true
}
0xd8 => {
instr__RET_C(data, memory, hook);
true
}
0xd9 => {
instr__EXX(data);
true
}
0xda => {
instr__JP_C_NNNN(data, memory);
true
}
0xdb => {
instr__IN_A_iNN(data, memory, ports);
true
}
0xdc => {
instr__CALL_C_NNNN(data, memory, ports, hook);
true
}
0xdd => {
instr__SHIFT_DD(data, memory);
true
}
0xde => {
instr__SBC_A_NN(data, memory);
true
}
0xdf => {
instr__RST_18(data, memory);
true
}
0xe0 => {
instr__RET_PO(data, memory, hook);
true
}
0xe1 => {
instr__POP_HL(data, memory);
true
}
0xe2 => {
instr__JP_PO_NNNN(data, memory);
true
}
0xe3 => {
instr__EX_iSP_HL(data, memory);
true
}
0xe4 => {
instr__CALL_PO_NNNN(data, memory, ports, hook);
true
}
0xe5 => {
instr__PUSH_HL(data, memory);
true
}
0xe6 => {
instr__AND_NN(data, memory);
true
}
0xe7 => {
instr__RST_20(data, memory);
true
}
0xe8 => {
instr__RET_PE(data, memory, hook);
true
}
0xe9 => {
instr__JP_HL(data, memory, ports, hook);
true
}
0xea => {
instr__JP_PE_NNNN(data, memory);
true
}
0xeb => {
instr__EX_DE_HL(data);
true
}
0xec => {
instr__CALL_PE_NNNN(data, memory, ports, hook);
true
}
0xed => {
instr__SHIFT_ED(data, memory);
true
}
0xee => {
instr__XOR_A_NN(data, memory);
true
}
0xef => {
instr__RST_28(data, memory);
true
}
0xf0 => {
instr__RET_P(data, memory, hook);
true
}
0xf1 => {
instr__POP_AF(data, memory);
true
}
0xf2 => {
instr__JP_P_NNNN(data, memory);
true
}
0xf3 => {
instr__DI(data);
true
}
0xf4 => {
instr__CALL_P_NNNN(data, memory, ports, hook);
true
}
0xf5 => {
instr__PUSH_AF(data, memory);
true
}
0xf6 => {
instr__OR_NN(data, memory);
true
}
0xf7 => {
instr__RST_30(data, memory);
true
}
0xf8 => {
instr__RET_M(data, memory, hook);
true
}
0xf9 => {
instr__LD_SP_HL(data, memory);
true
}
0xfa => {
instr__JP_M_NNNN(data, memory);
true
}
0xfb => {
instr__EI(data);
true
}
0xfc => {
instr__CALL_M_NNNN(data, memory, ports, hook);
true
}
0xfd => {
instr__SHIFT_FD(data, memory);
true
}
0xfe => {
instr__CP_NN(data, memory);
true
}
0xff => {
instr__RST_38(data, memory);
true
}
val if val == SHIFT_0X_CB => {
instrCB__RLC_B(data);
true
}
val if val == SHIFT_0X_CB + 0x01 => {
instrCB__RLC_C(data);
true
}
val if val == SHIFT_0X_CB + 0x02 => {
instrCB__RLC_D(data);
true
}
val if val == SHIFT_0X_CB + 0x03 => {
instrCB__RLC_E(data);
true
}
val if val == SHIFT_0X_CB + 0x04 => {
instrCB__RLC_H(data);
true
}
val if val == SHIFT_0X_CB + 0x05 => {
instrCB__RLC_L(data);
true
}
val if val == SHIFT_0X_CB + 0x06 => {
instrCB__RLC_iHL(data, memory);
true
}
val if val == SHIFT_0X_CB + 0x07 => {
instrCB__RLC_A(data);
true
}
val if val == SHIFT_0X_CB + 0x08 => {
instrCB__RRC_B(data);
true
}
val if val == SHIFT_0X_CB + 0x09 => {
instrCB__RRC_C(data);
true
}
val if val == SHIFT_0X_CB + 0x0a => {
instrCB__RRC_D(data);
true
}
val if val == SHIFT_0X_CB + 0x0b => {
instrCB__RRC_E(data);
true
}
val if val == SHIFT_0X_CB + 0x0c => {
instrCB__RRC_H(data);
true
}
val if val == SHIFT_0X_CB + 0x0d => {
instrCB__RRC_L(data);
true
}
val if val == SHIFT_0X_CB + 0x0e => {
instrCB__RRC_iHL(data, memory);
true
}
val if val == SHIFT_0X_CB + 0x0f => {
instrCB__RRC_A(data);
true
}
val if val == SHIFT_0X_CB + 0x10 => {
instrCB__RL_B(data);
true
}
val if val == SHIFT_0X_CB + 0x11 => {
instrCB__RL_C(data);
true
}
val if val == SHIFT_0X_CB + 0x12 => {
instrCB__RL_D(data);
true
}
val if val == SHIFT_0X_CB + 0x13 => {
instrCB__RL_E(data);
true
}
val if val == SHIFT_0X_CB + 0x14 => {
instrCB__RL_H(data);
true
}
val if val == SHIFT_0X_CB + 0x15 => {
instrCB__RL_L(data);
true
}
val if val == SHIFT_0X_CB + 0x16 => {
instrCB__RL_iHL(data, memory);
true
}
val if val == SHIFT_0X_CB + 0x17 => {
instrCB__RL_A(data);
true
}
val if val == SHIFT_0X_CB + 0x18 => {
instrCB__RR_B(data);
true
}
val if val == SHIFT_0X_CB + 0x19 => {
instrCB__RR_C(data);
true
}
val if val == SHIFT_0X_CB + 0x1a => {
instrCB__RR_D(data);
true
}
val if val == SHIFT_0X_CB + 0x1b => {
instrCB__RR_E(data);
true
}
val if val == SHIFT_0X_CB + 0x1c => {
instrCB__RR_H(data);
true
}
val if val == SHIFT_0X_CB + 0x1d => {
instrCB__RR_L(data);
true
}
val if val == SHIFT_0X_CB + 0x1e => {
instrCB__RR_iHL(data, memory);
true
}
val if val == SHIFT_0X_CB + 0x1f => {
instrCB__RR_A(data);
true
}
val if val == SHIFT_0X_CB + 0x20 => {
instrCB__SLA_B(data);
true
}
val if val == SHIFT_0X_CB + 0x21 => {
instrCB__SLA_C(data);
true
}
val if val == SHIFT_0X_CB + 0x22 => {
instrCB__SLA_D(data);
true
}
val if val == SHIFT_0X_CB + 0x23 => {
instrCB__SLA_E(data);
true
}
val if val == SHIFT_0X_CB + 0x24 => {
instrCB__SLA_H(data);
true
}
val if val == SHIFT_0X_CB + 0x25 => {
instrCB__SLA_L(data);
true
}
val if val == SHIFT_0X_CB + 0x26 => {
instrCB__SLA_iHL(data, memory);
true
}
val if val == SHIFT_0X_CB + 0x27 => {
instrCB__SLA_A(data);
true
}
val if val == SHIFT_0X_CB + 0x28 => {
instrCB__SRA_B(data);
true
}
val if val == SHIFT_0X_CB + 0x29 => {
instrCB__SRA_C(data);
true
}
val if val == SHIFT_0X_CB + 0x2a => {
instrCB__SRA_D(data);
true
}
val if val == SHIFT_0X_CB + 0x2b => {
instrCB__SRA_E(data);
true
}
val if val == SHIFT_0X_CB + 0x2c => {
instrCB__SRA_H(data);
true
}
val if val == SHIFT_0X_CB + 0x2d => {
instrCB__SRA_L(data);
true
}
val if val == SHIFT_0X_CB + 0x2e => {
instrCB__SRA_iHL(data, memory);
true
}
val if val == SHIFT_0X_CB + 0x2f => {
instrCB__SRA_A(data);
true
}
val if val == SHIFT_0X_CB + 0x30 => {
instrCB__SLL_B(data);
true
}
val if val == SHIFT_0X_CB + 0x31 => {
instrCB__SLL_C(data);
true
}
val if val == SHIFT_0X_CB + 0x32 => {
instrCB__SLL_D(data);
true
}
val if val == SHIFT_0X_CB + 0x33 => {
instrCB__SLL_E(data);
true
}
val if val == SHIFT_0X_CB + 0x34 => {
instrCB__SLL_H(data);
true
}
val if val == SHIFT_0X_CB + 0x35 => {
instrCB__SLL_L(data);
true
}
val if val == SHIFT_0X_CB + 0x36 => {
instrCB__SLL_iHL(data, memory);
true
}
val if val == SHIFT_0X_CB + 0x37 => {
instrCB__SLL_A(data);
true
}
val if val == SHIFT_0X_CB + 0x38 => {
instrCB__SRL_B(data);
true
}
val if val == SHIFT_0X_CB + 0x39 => {
instrCB__SRL_C(data);
true
}
val if val == SHIFT_0X_CB + 0x3a => {
instrCB__SRL_D(data);
true
}
val if val == SHIFT_0X_CB + 0x3b => {
instrCB__SRL_E(data);
true
}
val if val == SHIFT_0X_CB + 0x3c => {
instrCB__SRL_H(data);
true
}
val if val == SHIFT_0X_CB + 0x3d => {
instrCB__SRL_L(data);
true
}
val if val == SHIFT_0X_CB + 0x3e => {
instrCB__SRL_iHL(data, memory);
true
}
val if val == SHIFT_0X_CB + 0x3f => {
instrCB__SRL_A(data);
true
}
val if val == SHIFT_0X_CB + 0x40 => {
instrCB__BIT_0_B(data);
true
}
val if val == SHIFT_0X_CB + 0x41 => {
instrCB__BIT_0_C(data);
true
}
val if val == SHIFT_0X_CB + 0x42 => {
instrCB__BIT_0_D(data);
true
}
val if val == SHIFT_0X_CB + 0x43 => {
instrCB__BIT_0_E(data);
true
}
val if val == SHIFT_0X_CB + 0x44 => {
instrCB__BIT_0_H(data);
true
}
val if val == SHIFT_0X_CB + 0x45 => {
instrCB__BIT_0_L(data);
true
}
val if val == SHIFT_0X_CB + 0x46 => {
instrCB__BIT_0_iHL(data, memory);
true
}
val if val == SHIFT_0X_CB + 0x47 => {
instrCB__BIT_0_A(data);
true
}
val if val == SHIFT_0X_CB + 0x48 => {
instrCB__BIT_1_B(data);
true
}
val if val == SHIFT_0X_CB + 0x49 => {
instrCB__BIT_1_C(data);
true
}
val if val == SHIFT_0X_CB + 0x4a => {
instrCB__BIT_1_D(data);
true
}
val if val == SHIFT_0X_CB + 0x4b => {
instrCB__BIT_1_E(data);
true
}
val if val == SHIFT_0X_CB + 0x4c => {
instrCB__BIT_1_H(data);
true
}
val if val == SHIFT_0X_CB + 0x4d => {
instrCB__BIT_1_L(data);
true
}
val if val == SHIFT_0X_CB + 0x4e => {
instrCB__BIT_1_iHL(data, memory);
true
}
val if val == SHIFT_0X_CB + 0x4f => {
instrCB__BIT_1_A(data);
true
}
val if val == SHIFT_0X_CB + 0x50 => {
instrCB__BIT_2_B(data);
true
}
val if val == SHIFT_0X_CB + 0x51 => {
instrCB__BIT_2_C(data);
true
}
val if val == SHIFT_0X_CB + 0x52 => {
instrCB__BIT_2_D(data);
true
}
val if val == SHIFT_0X_CB + 0x53 => {
instrCB__BIT_2_E(data);
true
}
val if val == SHIFT_0X_CB + 0x54 => {
instrCB__BIT_2_H(data);
true
}
val if val == SHIFT_0X_CB + 0x55 => {
instrCB__BIT_2_L(data);
true
}
val if val == SHIFT_0X_CB + 0x56 => {
instrCB__BIT_2_iHL(data, memory);
true
}
val if val == SHIFT_0X_CB + 0x57 => {
instrCB__BIT_2_A(data);
true
}
val if val == SHIFT_0X_CB + 0x58 => {
instrCB__BIT_3_B(data);
true
}
val if val == SHIFT_0X_CB + 0x59 => {
instrCB__BIT_3_C(data);
true
}
val if val == SHIFT_0X_CB + 0x5a => {
instrCB__BIT_3_D(data);
true
}
val if val == SHIFT_0X_CB + 0x5b => {
instrCB__BIT_3_E(data);
true
}
val if val == SHIFT_0X_CB + 0x5c => {
instrCB__BIT_3_H(data);
true
}
val if val == SHIFT_0X_CB + 0x5d => {
instrCB__BIT_3_L(data);
true
}
val if val == SHIFT_0X_CB + 0x5e => {
instrCB__BIT_3_iHL(data, memory);
true
}
val if val == SHIFT_0X_CB + 0x5f => {
instrCB__BIT_3_A(data);
true
}
val if val == SHIFT_0X_CB + 0x60 => {
instrCB__BIT_4_B(data);
true
}
val if val == SHIFT_0X_CB + 0x61 => {
instrCB__BIT_4_C(data);
true
}
val if val == SHIFT_0X_CB + 0x62 => {
instrCB__BIT_4_D(data);
true
}
val if val == SHIFT_0X_CB + 0x63 => {
instrCB__BIT_4_E(data);
true
}
val if val == SHIFT_0X_CB + 0x64 => {
instrCB__BIT_4_H(data);
true
}
val if val == SHIFT_0X_CB + 0x65 => {
instrCB__BIT_4_L(data);
true
}
val if val == SHIFT_0X_CB + 0x66 => {
instrCB__BIT_4_iHL(data, memory);
true
}
val if val == SHIFT_0X_CB + 0x67 => {
instrCB__BIT_4_A(data);
true
}
val if val == SHIFT_0X_CB + 0x68 => {
instrCB__BIT_5_B(data);
true
}
val if val == SHIFT_0X_CB + 0x69 => {
instrCB__BIT_5_C(data);
true
}
val if val == SHIFT_0X_CB + 0x6a => {
instrCB__BIT_5_D(data);
true
}
val if val == SHIFT_0X_CB + 0x6b => {
instrCB__BIT_5_E(data);
true
}
val if val == SHIFT_0X_CB + 0x6c => {
instrCB__BIT_5_H(data);
true
}
val if val == SHIFT_0X_CB + 0x6d => {
instrCB__BIT_5_L(data);
true
}
val if val == SHIFT_0X_CB + 0x6e => {
instrCB__BIT_5_iHL(data, memory);
true
}
val if val == SHIFT_0X_CB + 0x6f => {
instrCB__BIT_5_A(data);
true
}
val if val == SHIFT_0X_CB + 0x70 => {
instrCB__BIT_6_B(data);
true
}
val if val == SHIFT_0X_CB + 0x71 => {
instrCB__BIT_6_C(data);
true
}
val if val == SHIFT_0X_CB + 0x72 => {
instrCB__BIT_6_D(data);
true
}
val if val == SHIFT_0X_CB + 0x73 => {
instrCB__BIT_6_E(data);
true
}
val if val == SHIFT_0X_CB + 0x74 => {
instrCB__BIT_6_H(data);
true
}
val if val == SHIFT_0X_CB + 0x75 => {
instrCB__BIT_6_L(data);
true
}
val if val == SHIFT_0X_CB + 0x76 => {
instrCB__BIT_6_iHL(data, memory);
true
}
val if val == SHIFT_0X_CB + 0x77 => {
instrCB__BIT_6_A(data);
true
}
val if val == SHIFT_0X_CB + 0x78 => {
instrCB__BIT_7_B(data);
true
}
val if val == SHIFT_0X_CB + 0x79 => {
instrCB__BIT_7_C(data);
true
}
val if val == SHIFT_0X_CB + 0x7a => {
instrCB__BIT_7_D(data);
true
}
val if val == SHIFT_0X_CB + 0x7b => {
instrCB__BIT_7_E(data);
true
}
val if val == SHIFT_0X_CB + 0x7c => {
instrCB__BIT_7_H(data);
true
}
val if val == SHIFT_0X_CB + 0x7d => {
instrCB__BIT_7_L(data);
true
}
val if val == SHIFT_0X_CB + 0x7e => {
instrCB__BIT_7_iHL(data, memory);
true
}
val if val == SHIFT_0X_CB + 0x7f => {
instrCB__BIT_7_A(data);
true
}
val if val == SHIFT_0X_CB + 0x80 => {
instrCB__RES_0_B(data);
true
}
val if val == SHIFT_0X_CB + 0x81 => {
instrCB__RES_0_C(data);
true
}
val if val == SHIFT_0X_CB + 0x82 => {
instrCB__RES_0_D(data);
true
}
val if val == SHIFT_0X_CB + 0x83 => {
instrCB__RES_0_E(data);
true
}
val if val == SHIFT_0X_CB + 0x84 => {
instrCB__RES_0_H(data);
true
}
val if val == SHIFT_0X_CB + 0x85 => {
instrCB__RES_0_L(data);
true
}
val if val == SHIFT_0X_CB + 0x86 => {
instrCB__RES_0_iHL(data, memory);
true
}
val if val == SHIFT_0X_CB + 0x87 => {
instrCB__RES_0_A(data);
true
}
val if val == SHIFT_0X_CB + 0x88 => {
instrCB__RES_1_B(data);
true
}
val if val == SHIFT_0X_CB + 0x89 => {
instrCB__RES_1_C(data);
true
}
val if val == SHIFT_0X_CB + 0x8a => {
instrCB__RES_1_D(data);
true
}
val if val == SHIFT_0X_CB + 0x8b => {
instrCB__RES_1_E(data);
true
}
val if val == SHIFT_0X_CB + 0x8c => {
instrCB__RES_1_H(data);
true
}
val if val == SHIFT_0X_CB + 0x8d => {
instrCB__RES_1_L(data);
true
}
val if val == SHIFT_0X_CB + 0x8e => {
instrCB__RES_1_iHL(data, memory);
true
}
val if val == SHIFT_0X_CB + 0x8f => {
instrCB__RES_1_A(data);
true
}
val if val == SHIFT_0X_CB + 0x90 => {
instrCB__RES_2_B(data);
true
}
val if val == SHIFT_0X_CB + 0x91 => {
instrCB__RES_2_C(data);
true
}
val if val == SHIFT_0X_CB + 0x92 => {
instrCB__RES_2_D(data);
true
}
val if val == SHIFT_0X_CB + 0x93 => {
instrCB__RES_2_E(data);
true
}
val if val == SHIFT_0X_CB + 0x94 => {
instrCB__RES_2_H(data);
true
}
val if val == SHIFT_0X_CB + 0x95 => {
instrCB__RES_2_L(data);
true
}
val if val == SHIFT_0X_CB + 0x96 => {
instrCB__RES_2_iHL(data, memory);
true
}
val if val == SHIFT_0X_CB + 0x97 => {
instrCB__RES_2_A(data);
true
}
val if val == SHIFT_0X_CB + 0x98 => {
instrCB__RES_3_B(data);
true
}
val if val == SHIFT_0X_CB + 0x99 => {
instrCB__RES_3_C(data);
true
}
val if val == SHIFT_0X_CB + 0x9a => {
instrCB__RES_3_D(data);
true
}
val if val == SHIFT_0X_CB + 0x9b => {
instrCB__RES_3_E(data);
true
}
val if val == SHIFT_0X_CB + 0x9c => {
instrCB__RES_3_H(data);
true
}
val if val == SHIFT_0X_CB + 0x9d => {
instrCB__RES_3_L(data);
true
}
val if val == SHIFT_0X_CB + 0x9e => {
instrCB__RES_3_iHL(data, memory);
true
}
val if val == SHIFT_0X_CB + 0x9f => {
instrCB__RES_3_A(data);
true
}
val if val == SHIFT_0X_CB + 0xa0 => {
instrCB__RES_4_B(data);
true
}
val if val == SHIFT_0X_CB + 0xa1 => {
instrCB__RES_4_C(data);
true
}
val if val == SHIFT_0X_CB + 0xa2 => {
instrCB__RES_4_D(data);
true
}
val if val == SHIFT_0X_CB + 0xa3 => {
instrCB__RES_4_E(data);
true
}
val if val == SHIFT_0X_CB + 0xa4 => {
instrCB__RES_4_H(data);
true
}
val if val == SHIFT_0X_CB + 0xa5 => {
instrCB__RES_4_L(data);
true
}
val if val == SHIFT_0X_CB + 0xa6 => {
instrCB__RES_4_iHL(data, memory);
true
}
val if val == SHIFT_0X_CB + 0xa7 => {
instrCB__RES_4_A(data);
true
}
val if val == SHIFT_0X_CB + 0xa8 => {
instrCB__RES_5_B(data);
true
}
val if val == SHIFT_0X_CB + 0xa9 => {
instrCB__RES_5_C(data);
true
}
val if val == SHIFT_0X_CB + 0xaa => {
instrCB__RES_5_D(data);
true
}
val if val == SHIFT_0X_CB + 0xab => {
instrCB__RES_5_E(data);
true
}
val if val == SHIFT_0X_CB + 0xac => {
instrCB__RES_5_H(data);
true
}
val if val == SHIFT_0X_CB + 0xad => {
instrCB__RES_5_L(data);
true
}
val if val == SHIFT_0X_CB + 0xae => {
instrCB__RES_5_iHL(data, memory);
true
}
val if val == SHIFT_0X_CB + 0xaf => {
instrCB__RES_5_A(data);
true
}
val if val == SHIFT_0X_CB + 0xb0 => {
instrCB__RES_6_B(data);
true
}
val if val == SHIFT_0X_CB + 0xb1 => {
instrCB__RES_6_C(data);
true
}
val if val == SHIFT_0X_CB + 0xb2 => {
instrCB__RES_6_D(data);
true
}
val if val == SHIFT_0X_CB + 0xb3 => {
instrCB__RES_6_E(data);
true
}
val if val == SHIFT_0X_CB + 0xb4 => {
instrCB__RES_6_H(data);
true
}
val if val == SHIFT_0X_CB + 0xb5 => {
instrCB__RES_6_L(data);
true
}
val if val == SHIFT_0X_CB + 0xb6 => {
instrCB__RES_6_iHL(data, memory);
true
}
val if val == SHIFT_0X_CB + 0xb7 => {
instrCB__RES_6_A(data);
true
}
val if val == SHIFT_0X_CB + 0xb8 => {
instrCB__RES_7_B(data);
true
}
val if val == SHIFT_0X_CB + 0xb9 => {
instrCB__RES_7_C(data);
true
}
val if val == SHIFT_0X_CB + 0xba => {
instrCB__RES_7_D(data);
true
}
val if val == SHIFT_0X_CB + 0xbb => {
instrCB__RES_7_E(data);
true
}
val if val == SHIFT_0X_CB + 0xbc => {
instrCB__RES_7_H(data);
true
}
val if val == SHIFT_0X_CB + 0xbd => {
instrCB__RES_7_L(data);
true
}
val if val == SHIFT_0X_CB + 0xbe => {
instrCB__RES_7_iHL(data, memory);
true
}
val if val == SHIFT_0X_CB + 0xbf => {
instrCB__RES_7_A(data);
true
}
val if val == SHIFT_0X_CB + 0xc0 => {
instrCB__SET_0_B(data);
true
}
val if val == SHIFT_0X_CB + 0xc1 => {
instrCB__SET_0_C(data);
true
}
val if val == SHIFT_0X_CB + 0xc2 => {
instrCB__SET_0_D(data);
true
}
val if val == SHIFT_0X_CB + 0xc3 => {
instrCB__SET_0_E(data);
true
}
val if val == SHIFT_0X_CB + 0xc4 => {
instrCB__SET_0_H(data);
true
}
val if val == SHIFT_0X_CB + 0xc5 => {
instrCB__SET_0_L(data);
true
}
val if val == SHIFT_0X_CB + 0xc6 => {
instrCB__SET_0_iHL(data, memory);
true
}
val if val == SHIFT_0X_CB + 0xc7 => {
instrCB__SET_0_A(data);
true
}
val if val == SHIFT_0X_CB + 0xc8 => {
instrCB__SET_1_B(data);
true
}
val if val == SHIFT_0X_CB + 0xc9 => {
instrCB__SET_1_C(data);
true
}
val if val == SHIFT_0X_CB + 0xca => {
instrCB__SET_1_D(data);
true
}
val if val == SHIFT_0X_CB + 0xcb => {
instrCB__SET_1_E(data);
true
}
val if val == SHIFT_0X_CB + 0xcc => {
instrCB__SET_1_H(data);
true
}
val if val == SHIFT_0X_CB + 0xcd => {
instrCB__SET_1_L(data);
true
}
val if val == SHIFT_0X_CB + 0xce => {
instrCB__SET_1_iHL(data, memory);
true
}
val if val == SHIFT_0X_CB + 0xcf => {
instrCB__SET_1_A(data);
true
}
val if val == SHIFT_0X_CB + 0xd0 => {
instrCB__SET_2_B(data);
true
}
val if val == SHIFT_0X_CB + 0xd1 => {
instrCB__SET_2_C(data);
true
}
val if val == SHIFT_0X_CB + 0xd2 => {
instrCB__SET_2_D(data);
true
}
val if val == SHIFT_0X_CB + 0xd3 => {
instrCB__SET_2_E(data);
true
}
val if val == SHIFT_0X_CB + 0xd4 => {
instrCB__SET_2_H(data);
true
}
val if val == SHIFT_0X_CB + 0xd5 => {
instrCB__SET_2_L(data);
true
}
val if val == SHIFT_0X_CB + 0xd6 => {
instrCB__SET_2_iHL(data, memory);
true
}
val if val == SHIFT_0X_CB + 0xd7 => {
instrCB__SET_2_A(data);
true
}
val if val == SHIFT_0X_CB + 0xd8 => {
instrCB__SET_3_B(data);
true
}
val if val == SHIFT_0X_CB + 0xd9 => {
instrCB__SET_3_C(data);
true
}
val if val == SHIFT_0X_CB + 0xda => {
instrCB__SET_3_D(data);
true
}
val if val == SHIFT_0X_CB + 0xdb => {
instrCB__SET_3_E(data);
true
}
val if val == SHIFT_0X_CB + 0xdc => {
instrCB__SET_3_H(data);
true
}
val if val == SHIFT_0X_CB + 0xdd => {
instrCB__SET_3_L(data);
true
}
val if val == SHIFT_0X_CB + 0xde => {
instrCB__SET_3_iHL(data, memory);
true
}
val if val == SHIFT_0X_CB + 0xdf => {
instrCB__SET_3_A(data);
true
}
val if val == SHIFT_0X_CB + 0xe0 => {
instrCB__SET_4_B(data);
true
}
val if val == SHIFT_0X_CB + 0xe1 => {
instrCB__SET_4_C(data);
true
}
val if val == SHIFT_0X_CB + 0xe2 => {
instrCB__SET_4_D(data);
true
}
val if val == SHIFT_0X_CB + 0xe3 => {
instrCB__SET_4_E(data);
true
}
val if val == SHIFT_0X_CB + 0xe4 => {
instrCB__SET_4_H(data);
true
}
val if val == SHIFT_0X_CB + 0xe5 => {
instrCB__SET_4_L(data);
true
}
val if val == SHIFT_0X_CB + 0xe6 => {
instrCB__SET_4_iHL(data, memory);
true
}
val if val == SHIFT_0X_CB + 0xe7 => {
instrCB__SET_4_A(data);
true
}
val if val == SHIFT_0X_CB + 0xe8 => {
instrCB__SET_5_B(data);
true
}
val if val == SHIFT_0X_CB + 0xe9 => {
instrCB__SET_5_C(data);
true
}
val if val == SHIFT_0X_CB + 0xea => {
instrCB__SET_5_D(data);
true
}
val if val == SHIFT_0X_CB + 0xeb => {
instrCB__SET_5_E(data);
true
}
val if val == SHIFT_0X_CB + 0xec => {
instrCB__SET_5_H(data);
true
}
val if val == SHIFT_0X_CB + 0xed => {
instrCB__SET_5_L(data);
true
}
val if val == SHIFT_0X_CB + 0xee => {
instrCB__SET_5_iHL(data, memory);
true
}
val if val == SHIFT_0X_CB + 0xef => {
instrCB__SET_5_A(data);
true
}
val if val == SHIFT_0X_CB + 0xf0 => {
instrCB__SET_6_B(data);
true
}
val if val == SHIFT_0X_CB + 0xf1 => {
instrCB__SET_6_C(data);
true
}
val if val == SHIFT_0X_CB + 0xf2 => {
instrCB__SET_6_D(data);
true
}
val if val == SHIFT_0X_CB + 0xf3 => {
instrCB__SET_6_E(data);
true
}
val if val == SHIFT_0X_CB + 0xf4 => {
instrCB__SET_6_H(data);
true
}
val if val == SHIFT_0X_CB + 0xf5 => {
instrCB__SET_6_L(data);
true
}
val if val == SHIFT_0X_CB + 0xf6 => {
instrCB__SET_6_iHL(data, memory);
true
}
val if val == SHIFT_0X_CB + 0xf7 => {
instrCB__SET_6_A(data);
true
}
val if val == SHIFT_0X_CB + 0xf8 => {
instrCB__SET_7_B(data);
true
}
val if val == SHIFT_0X_CB + 0xf9 => {
instrCB__SET_7_C(data);
true
}
val if val == SHIFT_0X_CB + 0xfa => {
instrCB__SET_7_D(data);
true
}
val if val == SHIFT_0X_CB + 0xfb => {
instrCB__SET_7_E(data);
true
}
val if val == SHIFT_0X_CB + 0xfc => {
instrCB__SET_7_H(data);
true
}
val if val == SHIFT_0X_CB + 0xfd => {
instrCB__SET_7_L(data);
true
}
val if val == SHIFT_0X_CB + 0xfe => {
instrCB__SET_7_iHL(data, memory);
true
}
val if val == SHIFT_0X_CB + 0xff => {
instrCB__SET_7_A(data);
true
}
val if val == SHIFT_0X_ED + 0x40 => {
instrED__IN_B_iC(data, ports);
true
}
val if val == SHIFT_0X_ED + 0x41 => {
instrED__OUT_iC_B(data, ports);
true
}
val if val == SHIFT_0X_ED + 0x42 => {
instrED__SBC_HL_BC(data, memory);
true
}
val if val == SHIFT_0X_ED + 0x43 => {
instrED__LD_iNNNN_BC(data, memory);
true
}
val if val == SHIFT_0X_ED + 0x7c => {
instrED__NEG(data);
true
}
val if val == SHIFT_0X_ED + 0x44 => {
instrED__NEG(data);
true
}
val if val == SHIFT_0X_ED + 0x4c => {
instrED__NEG(data);
true
}
val if val == SHIFT_0X_ED + 0x54 => {
instrED__NEG(data);
true
}
val if val == SHIFT_0X_ED + 0x5c => {
instrED__NEG(data);
true
}
val if val == SHIFT_0X_ED + 0x64 => {
instrED__NEG(data);
true
}
val if val == SHIFT_0X_ED + 0x6c => {
instrED__NEG(data);
true
}
val if val == SHIFT_0X_ED + 0x74 => {
instrED__NEG(data);
true
}
val if val == SHIFT_0X_ED + 0x7d => {
instrED__RETN(data, memory, hook);
true
}
val if val == SHIFT_0X_ED + 0x45 => {
instrED__RETN(data, memory, hook);
true
}
val if val == SHIFT_0X_ED + 0x4d => {
instrED__RETN(data, memory, hook);
true
}
val if val == SHIFT_0X_ED + 0x55 => {
instrED__RETN(data, memory, hook);
true
}
val if val == SHIFT_0X_ED + 0x5d => {
instrED__RETN(data, memory, hook);
true
}
val if val == SHIFT_0X_ED + 0x65 => {
instrED__RETN(data, memory, hook);
true
}
val if val == SHIFT_0X_ED + 0x6d => {
instrED__RETN(data, memory, hook);
true
}
val if val == SHIFT_0X_ED + 0x75 => {
instrED__RETN(data, memory, hook);
true
}
val if val == SHIFT_0X_ED + 0x6e => {
instrED__IM_0(data);
true
}
val if val == SHIFT_0X_ED + 0x46 => {
instrED__IM_0(data);
true
}
val if val == SHIFT_0X_ED + 0x4e => {
instrED__IM_0(data);
true
}
val if val == SHIFT_0X_ED + 0x66 => {
instrED__IM_0(data);
true
}
val if val == SHIFT_0X_ED + 0x47 => {
instrED__LD_I_A(data, memory);
true
}
val if val == SHIFT_0X_ED + 0x48 => {
instrED__IN_C_iC(data, ports);
true
}
val if val == SHIFT_0X_ED + 0x49 => {
instrED__OUT_iC_C(data, ports);
true
}
val if val == SHIFT_0X_ED + 0x4a => {
instrED__ADC_HL_BC(data, memory);
true
}
val if val == SHIFT_0X_ED + 0x4b => {
instrED__LD_BC_iNNNN(data, memory);
true
}
val if val == SHIFT_0X_ED + 0x4f => {
instrED__LD_R_A(data, memory);
true
}
val if val == SHIFT_0X_ED + 0x50 => {
instrED__IN_D_iC(data, ports);
true
}
val if val == SHIFT_0X_ED + 0x51 => {
instrED__OUT_iC_D(data, ports);
true
}
val if val == SHIFT_0X_ED + 0x52 => {
instrED__SBC_HL_DE(data, memory);
true
}
val if val == SHIFT_0X_ED + 0x53 => {
instrED__LD_iNNNN_DE(data, memory);
true
}
val if val == SHIFT_0X_ED + 0x76 => {
instrED__IM_1(data);
true
}
val if val == SHIFT_0X_ED + 0x56 => {
instrED__IM_1(data);
true
}
val if val == SHIFT_0X_ED + 0x57 => {
instrED__LD_A_I(data, memory);
true
}
val if val == SHIFT_0X_ED + 0x58 => {
instrED__IN_E_iC(data, ports);
true
}
val if val == SHIFT_0X_ED + 0x59 => {
instrED__OUT_iC_E(data, ports);
true
}
val if val == SHIFT_0X_ED + 0x5a => {
instrED__ADC_HL_DE(data, memory);
true
}
val if val == SHIFT_0X_ED + 0x5b => {
instrED__LD_DE_iNNNN(data, memory);
true
}
val if val == SHIFT_0X_ED + 0x7e => {
instrED__IM_2(data);
true
}
val if val == SHIFT_0X_ED + 0x5e => {
instrED__IM_2(data);
true
}
val if val == SHIFT_0X_ED + 0x5f => {
instrED__LD_A_R(data, memory);
true
}
val if val == SHIFT_0X_ED + 0x60 => {
instrED__IN_H_iC(data, ports);
true
}
val if val == SHIFT_0X_ED + 0x61 => {
instrED__OUT_iC_H(data, ports);
true
}
val if val == SHIFT_0X_ED + 0x62 => {
instrED__SBC_HL_HL(data, memory);
true
}
val if val == SHIFT_0X_ED + 0x63 => {
instrED__LD_iNNNN_HL(data, memory);
true
}
val if val == SHIFT_0X_ED + 0x67 => {
instrED__RRD(data, memory);
true
}
val if val == SHIFT_0X_ED + 0x68 => {
instrED__IN_L_iC(data, ports);
true
}
val if val == SHIFT_0X_ED + 0x69 => {
instrED__OUT_iC_L(data, ports);
true
}
val if val == SHIFT_0X_ED + 0x6a => {
instrED__ADC_HL_HL(data, memory);
true
}
val if val == SHIFT_0X_ED + 0x6b => {
instrED__LD_HL_iNNNN(data, memory);
true
}
val if val == SHIFT_0X_ED + 0x6f => {
instrED__RLD(data, memory);
true
}
val if val == SHIFT_0X_ED + 0x70 => {
instrED__IN_F_iC(data, ports);
true
}
val if val == SHIFT_0X_ED + 0x71 => {
instrED__OUT_iC_0(data, ports);
true
}
val if val == SHIFT_0X_ED + 0x72 => {
instrED__SBC_HL_SP(data, memory);
true
}
val if val == SHIFT_0X_ED + 0x73 => {
instrED__LD_iNNNN_SP(data, memory);
true
}
val if val == SHIFT_0X_ED + 0x78 => {
instrED__IN_A_iC(data, ports);
true
}
val if val == SHIFT_0X_ED + 0x79 => {
instrED__OUT_iC_A(data, ports);
true
}
val if val == SHIFT_0X_ED + 0x7a => {
instrED__ADC_HL_SP(data, memory);
true
}
val if val == SHIFT_0X_ED + 0x7b => {
instrED__LD_SP_iNNNN(data, memory);
true
}
val if val == SHIFT_0X_ED + 0xa0 => {
instrED__LDI(data, memory);
true
}
val if val == SHIFT_0X_ED + 0xa1 => {
instrED__CPI(data, memory);
true
}
val if val == SHIFT_0X_ED + 0xa2 => {
instrED__INI(data, memory, ports);
true
}
val if val == SHIFT_0X_ED + 0xa3 => {
instrED__OUTI(data, memory, ports);
true
}
val if val == SHIFT_0X_ED + 0xa8 => {
instrED__LDD(data, memory);
true
}
val if val == SHIFT_0X_ED + 0xa9 => {
instrED__CPD(data, memory);
true
}
val if val == SHIFT_0X_ED + 0xaa => {
instrED__IND(data, memory, ports);
true
}
val if val == SHIFT_0X_ED + 0xab => {
instrED__OUTD(data, memory, ports);
true
}
val if val == SHIFT_0X_ED + 0xb0 => {
instrED__LDIR(data, memory);
true
}
val if val == SHIFT_0X_ED + 0xb1 => {
instrED__CPIR(data, memory);
true
}
val if val == SHIFT_0X_ED + 0xb2 => {
instrED__INIR(data, memory, ports);
true
}
val if val == SHIFT_0X_ED + 0xb3 => {
instrED__OTIR(data, memory, ports);
true
}
val if val == SHIFT_0X_ED + 0xb8 => {
instrED__LDDR(data, memory);
true
}
val if val == SHIFT_0X_ED + 0xb9 => {
instrED__CPDR(data, memory);
true
}
val if val == SHIFT_0X_ED + 0xba => {
instrED__INDR(data, memory, ports);
true
}
val if val == SHIFT_0X_ED + 0xbb => {
instrED__OTDR(data, memory, ports);
true
}
val if val == SHIFT_0X_ED + 0xfb => {
instrED__SLTTRAP(data, memory);
true
}
val if val == SHIFT_0X_DD + 0x09 => {
instrDD__ADD_REG_BC(data, memory);
true
}
val if val == SHIFT_0X_DD + 0x19 => {
instrDD__ADD_REG_DE(data, memory);
true
}
val if val == SHIFT_0X_DD + 0x21 => {
instrDD__LD_REG_NNNN(data, memory);
true
}
val if val == SHIFT_0X_DD + 0x22 => {
instrDD__LD_iNNNN_REG(data, memory);
true
}
val if val == SHIFT_0X_DD + 0x23 => {
instrDD__INC_REG(data, memory);
true
}
val if val == SHIFT_0X_DD + 0x24 => {
instrDD__INC_REGH(data);
true
}
val if val == SHIFT_0X_DD + 0x25 => {
instrDD__DEC_REGH(data);
true
}
val if val == SHIFT_0X_DD + 0x26 => {
instrDD__LD_REGH_NN(data, memory);
true
}
val if val == SHIFT_0X_DD + 0x29 => {
instrDD__ADD_REG_REG(data, memory);
true
}
val if val == SHIFT_0X_DD + 0x2a => {
instrDD__LD_REG_iNNNN(data, memory);
true
}
val if val == SHIFT_0X_DD + 0x2b => {
instrDD__DEC_REG(data, memory);
true
}
val if val == SHIFT_0X_DD + 0x2c => {
instrDD__INC_REGL(data);
true
}
val if val == SHIFT_0X_DD + 0x2d => {
instrDD__DEC_REGL(data);
true
}
val if val == SHIFT_0X_DD + 0x2e => {
instrDD__LD_REGL_NN(data, memory);
true
}
val if val == SHIFT_0X_DD + 0x34 => {
instrDD__INC_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DD + 0x35 => {
instrDD__DEC_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DD + 0x36 => {
instrDD__LD_iREGpDD_NN(data, memory);
true
}
val if val == SHIFT_0X_DD + 0x39 => {
instrDD__ADD_REG_SP(data, memory);
true
}
val if val == SHIFT_0X_DD + 0x44 => {
instrDD__LD_B_REGH(data);
true
}
val if val == SHIFT_0X_DD + 0x45 => {
instrDD__LD_B_REGL(data);
true
}
val if val == SHIFT_0X_DD + 0x46 => {
instrDD__LD_B_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DD + 0x4c => {
instrDD__LD_C_REGH(data);
true
}
val if val == SHIFT_0X_DD + 0x4d => {
instrDD__LD_C_REGL(data);
true
}
val if val == SHIFT_0X_DD + 0x4e => {
instrDD__LD_C_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DD + 0x54 => {
instrDD__LD_D_REGH(data);
true
}
val if val == SHIFT_0X_DD + 0x55 => {
instrDD__LD_D_REGL(data);
true
}
val if val == SHIFT_0X_DD + 0x56 => {
instrDD__LD_D_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DD + 0x5c => {
instrDD__LD_E_REGH(data);
true
}
val if val == SHIFT_0X_DD + 0x5d => {
instrDD__LD_E_REGL(data);
true
}
val if val == SHIFT_0X_DD + 0x5e => {
instrDD__LD_E_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DD + 0x60 => {
instrDD__LD_REGH_B(data);
true
}
val if val == SHIFT_0X_DD + 0x61 => {
instrDD__LD_REGH_C(data);
true
}
val if val == SHIFT_0X_DD + 0x62 => {
instrDD__LD_REGH_D(data);
true
}
val if val == SHIFT_0X_DD + 0x63 => {
instrDD__LD_REGH_E(data);
true
}
val if val == SHIFT_0X_DD + 0x64 => {
instrDD__LD_REGH_REGH(data);
true
}
val if val == SHIFT_0X_DD + 0x65 => {
instrDD__LD_REGH_REGL(data);
true
}
val if val == SHIFT_0X_DD + 0x66 => {
instrDD__LD_H_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DD + 0x67 => {
instrDD__LD_REGH_A(data);
true
}
val if val == SHIFT_0X_DD + 0x68 => {
instrDD__LD_REGL_B(data);
true
}
val if val == SHIFT_0X_DD + 0x69 => {
instrDD__LD_REGL_C(data);
true
}
val if val == SHIFT_0X_DD + 0x6a => {
instrDD__LD_REGL_D(data);
true
}
val if val == SHIFT_0X_DD + 0x6b => {
instrDD__LD_REGL_E(data);
true
}
val if val == SHIFT_0X_DD + 0x6c => {
instrDD__LD_REGL_REGH(data);
true
}
val if val == SHIFT_0X_DD + 0x6d => {
instrDD__LD_REGL_REGL(data);
true
}
val if val == SHIFT_0X_DD + 0x6e => {
instrDD__LD_L_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DD + 0x6f => {
instrDD__LD_REGL_A(data);
true
}
val if val == SHIFT_0X_DD + 0x70 => {
instrDD__LD_iREGpDD_B(data, memory);
true
}
val if val == SHIFT_0X_DD + 0x71 => {
instrDD__LD_iREGpDD_C(data, memory);
true
}
val if val == SHIFT_0X_DD + 0x72 => {
instrDD__LD_iREGpDD_D(data, memory);
true
}
val if val == SHIFT_0X_DD + 0x73 => {
instrDD__LD_iREGpDD_E(data, memory);
true
}
val if val == SHIFT_0X_DD + 0x74 => {
instrDD__LD_iREGpDD_H(data, memory);
true
}
val if val == SHIFT_0X_DD + 0x75 => {
instrDD__LD_iREGpDD_L(data, memory);
true
}
val if val == SHIFT_0X_DD + 0x77 => {
instrDD__LD_iREGpDD_A(data, memory);
true
}
val if val == SHIFT_0X_DD + 0x7c => {
instrDD__LD_A_REGH(data);
true
}
val if val == SHIFT_0X_DD + 0x7d => {
instrDD__LD_A_REGL(data);
true
}
val if val == SHIFT_0X_DD + 0x7e => {
instrDD__LD_A_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DD + 0x84 => {
instrDD__ADD_A_REGH(data);
true
}
val if val == SHIFT_0X_DD + 0x85 => {
instrDD__ADD_A_REGL(data);
true
}
val if val == SHIFT_0X_DD + 0x86 => {
instrDD__ADD_A_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DD + 0x8c => {
instrDD__ADC_A_REGH(data);
true
}
val if val == SHIFT_0X_DD + 0x8d => {
instrDD__ADC_A_REGL(data);
true
}
val if val == SHIFT_0X_DD + 0x8e => {
instrDD__ADC_A_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DD + 0x94 => {
instrDD__SUB_A_REGH(data);
true
}
val if val == SHIFT_0X_DD + 0x95 => {
instrDD__SUB_A_REGL(data);
true
}
val if val == SHIFT_0X_DD + 0x96 => {
instrDD__SUB_A_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DD + 0x9c => {
instrDD__SBC_A_REGH(data);
true
}
val if val == SHIFT_0X_DD + 0x9d => {
instrDD__SBC_A_REGL(data);
true
}
val if val == SHIFT_0X_DD + 0x9e => {
instrDD__SBC_A_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DD + 0xa4 => {
instrDD__AND_A_REGH(data);
true
}
val if val == SHIFT_0X_DD + 0xa5 => {
instrDD__AND_A_REGL(data);
true
}
val if val == SHIFT_0X_DD + 0xa6 => {
instrDD__AND_A_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DD + 0xac => {
instrDD__XOR_A_REGH(data);
true
}
val if val == SHIFT_0X_DD + 0xad => {
instrDD__XOR_A_REGL(data);
true
}
val if val == SHIFT_0X_DD + 0xae => {
instrDD__XOR_A_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DD + 0xb4 => {
instrDD__OR_A_REGH(data);
true
}
val if val == SHIFT_0X_DD + 0xb5 => {
instrDD__OR_A_REGL(data);
true
}
val if val == SHIFT_0X_DD + 0xb6 => {
instrDD__OR_A_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DD + 0xbc => {
instrDD__CP_A_REGH(data);
true
}
val if val == SHIFT_0X_DD + 0xbd => {
instrDD__CP_A_REGL(data);
true
}
val if val == SHIFT_0X_DD + 0xbe => {
instrDD__CP_A_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DD + 0xcb => {
instrDD__SHIFT_DDFDCB(data, memory);
true
}
val if val == SHIFT_0X_DD + 0xe1 => {
instrDD__POP_REG(data, memory);
true
}
val if val == SHIFT_0X_DD + 0xe3 => {
instrDD__EX_iSP_REG(data, memory);
true
}
val if val == SHIFT_0X_DD + 0xe5 => {
instrDD__PUSH_REG(data, memory);
true
}
val if val == SHIFT_0X_DD + 0xe9 => {
instrDD__JP_REG(data);
true
}
val if val == SHIFT_0X_DD + 0xf9 => {
instrDD__LD_SP_REG(data, memory);
true
}
val if val == SHIFT_0X_FD + 0x09 => {
instrFD__ADD_REG_BC(data, memory);
true
}
val if val == SHIFT_0X_FD + 0x19 => {
instrFD__ADD_REG_DE(data, memory);
true
}
val if val == SHIFT_0X_FD + 0x21 => {
instrFD__LD_REG_NNNN(data, memory);
true
}
val if val == SHIFT_0X_FD + 0x22 => {
instrFD__LD_iNNNN_REG(data, memory);
true
}
val if val == SHIFT_0X_FD + 0x23 => {
instrFD__INC_REG(data, memory);
true
}
val if val == SHIFT_0X_FD + 0x24 => {
instrFD__INC_REGH(data);
true
}
val if val == SHIFT_0X_FD + 0x25 => {
instrFD__DEC_REGH(data);
true
}
val if val == SHIFT_0X_FD + 0x26 => {
instrFD__LD_REGH_NN(data, memory);
true
}
val if val == SHIFT_0X_FD + 0x29 => {
instrFD__ADD_REG_REG(data, memory);
true
}
val if val == SHIFT_0X_FD + 0x2a => {
instrFD__LD_REG_iNNNN(data, memory);
true
}
val if val == SHIFT_0X_FD + 0x2b => {
instrFD__DEC_REG(data, memory);
true
}
val if val == SHIFT_0X_FD + 0x2c => {
instrFD__INC_REGL(data);
true
}
val if val == SHIFT_0X_FD + 0x2d => {
instrFD__DEC_REGL(data);
true
}
val if val == SHIFT_0X_FD + 0x2e => {
instrFD__LD_REGL_NN(data, memory);
true
}
val if val == SHIFT_0X_FD + 0x34 => {
instrFD__INC_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_FD + 0x35 => {
instrFD__DEC_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_FD + 0x36 => {
instrFD__LD_iREGpDD_NN(data, memory);
true
}
val if val == SHIFT_0X_FD + 0x39 => {
instrFD__ADD_REG_SP(data, memory);
true
}
val if val == SHIFT_0X_FD + 0x44 => {
instrFD__LD_B_REGH(data);
true
}
val if val == SHIFT_0X_FD + 0x45 => {
instrFD__LD_B_REGL(data);
true
}
val if val == SHIFT_0X_FD + 0x46 => {
instrFD__LD_B_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_FD + 0x4c => {
instrFD__LD_C_REGH(data);
true
}
val if val == SHIFT_0X_FD + 0x4d => {
instrFD__LD_C_REGL(data);
true
}
val if val == SHIFT_0X_FD + 0x4e => {
instrFD__LD_C_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_FD + 0x54 => {
instrFD__LD_D_REGH(data);
true
}
val if val == SHIFT_0X_FD + 0x55 => {
instrFD__LD_D_REGL(data);
true
}
val if val == SHIFT_0X_FD + 0x56 => {
instrFD__LD_D_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_FD + 0x5c => {
instrFD__LD_E_REGH(data);
true
}
val if val == SHIFT_0X_FD + 0x5d => {
instrFD__LD_E_REGL(data);
true
}
val if val == SHIFT_0X_FD + 0x5e => {
instrFD__LD_E_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_FD + 0x60 => {
instrFD__LD_REGH_B(data);
true
}
val if val == SHIFT_0X_FD + 0x61 => {
instrFD__LD_REGH_C(data);
true
}
val if val == SHIFT_0X_FD + 0x62 => {
instrFD__LD_REGH_D(data);
true
}
val if val == SHIFT_0X_FD + 0x63 => {
instrFD__LD_REGH_E(data);
true
}
val if val == SHIFT_0X_FD + 0x64 => {
instrFD__LD_REGH_REGH(data);
true
}
val if val == SHIFT_0X_FD + 0x65 => {
instrFD__LD_REGH_REGL(data);
true
}
val if val == SHIFT_0X_FD + 0x66 => {
instrFD__LD_H_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_FD + 0x67 => {
instrFD__LD_REGH_A(data);
true
}
val if val == SHIFT_0X_FD + 0x68 => {
instrFD__LD_REGL_B(data);
true
}
val if val == SHIFT_0X_FD + 0x69 => {
instrFD__LD_REGL_C(data);
true
}
val if val == SHIFT_0X_FD + 0x6a => {
instrFD__LD_REGL_D(data);
true
}
val if val == SHIFT_0X_FD + 0x6b => {
instrFD__LD_REGL_E(data);
true
}
val if val == SHIFT_0X_FD + 0x6c => {
instrFD__LD_REGL_REGH(data);
true
}
val if val == SHIFT_0X_FD + 0x6d => {
instrFD__LD_REGL_REGL(data);
true
}
val if val == SHIFT_0X_FD + 0x6e => {
instrFD__LD_L_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_FD + 0x6f => {
instrFD__LD_REGL_A(data);
true
}
val if val == SHIFT_0X_FD + 0x70 => {
instrFD__LD_iREGpDD_B(data, memory);
true
}
val if val == SHIFT_0X_FD + 0x71 => {
instrFD__LD_iREGpDD_C(data, memory);
true
}
val if val == SHIFT_0X_FD + 0x72 => {
instrFD__LD_iREGpDD_D(data, memory);
true
}
val if val == SHIFT_0X_FD + 0x73 => {
instrFD__LD_iREGpDD_E(data, memory);
true
}
val if val == SHIFT_0X_FD + 0x74 => {
instrFD__LD_iREGpDD_H(data, memory);
true
}
val if val == SHIFT_0X_FD + 0x75 => {
instrFD__LD_iREGpDD_L(data, memory);
true
}
val if val == SHIFT_0X_FD + 0x77 => {
instrFD__LD_iREGpDD_A(data, memory);
true
}
val if val == SHIFT_0X_FD + 0x7c => {
instrFD__LD_A_REGH(data);
true
}
val if val == SHIFT_0X_FD + 0x7d => {
instrFD__LD_A_REGL(data);
true
}
val if val == SHIFT_0X_FD + 0x7e => {
instrFD__LD_A_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_FD + 0x84 => {
instrFD__ADD_A_REGH(data);
true
}
val if val == SHIFT_0X_FD + 0x85 => {
instrFD__ADD_A_REGL(data);
true
}
val if val == SHIFT_0X_FD + 0x86 => {
instrFD__ADD_A_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_FD + 0x8c => {
instrFD__ADC_A_REGH(data);
true
}
val if val == SHIFT_0X_FD + 0x8d => {
instrFD__ADC_A_REGL(data);
true
}
val if val == SHIFT_0X_FD + 0x8e => {
instrFD__ADC_A_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_FD + 0x94 => {
instrFD__SUB_A_REGH(data);
true
}
val if val == SHIFT_0X_FD + 0x95 => {
instrFD__SUB_A_REGL(data);
true
}
val if val == SHIFT_0X_FD + 0x96 => {
instrFD__SUB_A_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_FD + 0x9c => {
instrFD__SBC_A_REGH(data);
true
}
val if val == SHIFT_0X_FD + 0x9d => {
instrFD__SBC_A_REGL(data);
true
}
val if val == SHIFT_0X_FD + 0x9e => {
instrFD__SBC_A_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_FD + 0xa4 => {
instrFD__AND_A_REGH(data);
true
}
val if val == SHIFT_0X_FD + 0xa5 => {
instrFD__AND_A_REGL(data);
true
}
val if val == SHIFT_0X_FD + 0xa6 => {
instrFD__AND_A_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_FD + 0xac => {
instrFD__XOR_A_REGH(data);
true
}
val if val == SHIFT_0X_FD + 0xad => {
instrFD__XOR_A_REGL(data);
true
}
val if val == SHIFT_0X_FD + 0xae => {
instrFD__XOR_A_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_FD + 0xb4 => {
instrFD__OR_A_REGH(data);
true
}
val if val == SHIFT_0X_FD + 0xb5 => {
instrFD__OR_A_REGL(data);
true
}
val if val == SHIFT_0X_FD + 0xb6 => {
instrFD__OR_A_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_FD + 0xbc => {
instrFD__CP_A_REGH(data);
true
}
val if val == SHIFT_0X_FD + 0xbd => {
instrFD__CP_A_REGL(data);
true
}
val if val == SHIFT_0X_FD + 0xbe => {
instrFD__CP_A_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_FD + 0xcb => {
instrFD__SHIFT_DDFDCB(data, memory);
true
}
val if val == SHIFT_0X_FD + 0xe1 => {
instrFD__POP_REG(data, memory);
true
}
val if val == SHIFT_0X_FD + 0xe3 => {
instrFD__EX_iSP_REG(data, memory);
true
}
val if val == SHIFT_0X_FD + 0xe5 => {
instrFD__PUSH_REG(data, memory);
true
}
val if val == SHIFT_0X_FD + 0xe9 => {
instrFD__JP_REG(data);
true
}
val if val == SHIFT_0X_FD + 0xf9 => {
instrFD__LD_SP_REG(data, memory);
true
}
val if val == SHIFT_0X_DDCB => {
instrDDCB__LD_B_RLC_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x01 => {
instrDDCB__LD_C_RLC_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x02 => {
instrDDCB__LD_D_RLC_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x03 => {
instrDDCB__LD_E_RLC_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x04 => {
instrDDCB__LD_H_RLC_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x05 => {
instrDDCB__LD_L_RLC_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x06 => {
instrDDCB__RLC_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x07 => {
instrDDCB__LD_A_RLC_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x08 => {
instrDDCB__LD_B_RRC_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x09 => {
instrDDCB__LD_C_RRC_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x0a => {
instrDDCB__LD_D_RRC_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x0b => {
instrDDCB__LD_E_RRC_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x0c => {
instrDDCB__LD_H_RRC_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x0d => {
instrDDCB__LD_L_RRC_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x0e => {
instrDDCB__RRC_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x0f => {
instrDDCB__LD_A_RRC_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x10 => {
instrDDCB__LD_B_RL_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x11 => {
instrDDCB__LD_C_RL_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x12 => {
instrDDCB__LD_D_RL_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x13 => {
instrDDCB__LD_E_RL_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x14 => {
instrDDCB__LD_H_RL_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x15 => {
instrDDCB__LD_L_RL_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x16 => {
instrDDCB__RL_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x17 => {
instrDDCB__LD_A_RL_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x18 => {
instrDDCB__LD_B_RR_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x19 => {
instrDDCB__LD_C_RR_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x1a => {
instrDDCB__LD_D_RR_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x1b => {
instrDDCB__LD_E_RR_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x1c => {
instrDDCB__LD_H_RR_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x1d => {
instrDDCB__LD_L_RR_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x1e => {
instrDDCB__RR_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x1f => {
instrDDCB__LD_A_RR_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x20 => {
instrDDCB__LD_B_SLA_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x21 => {
instrDDCB__LD_C_SLA_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x22 => {
instrDDCB__LD_D_SLA_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x23 => {
instrDDCB__LD_E_SLA_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x24 => {
instrDDCB__LD_H_SLA_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x25 => {
instrDDCB__LD_L_SLA_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x26 => {
instrDDCB__SLA_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x27 => {
instrDDCB__LD_A_SLA_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x28 => {
instrDDCB__LD_B_SRA_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x29 => {
instrDDCB__LD_C_SRA_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x2a => {
instrDDCB__LD_D_SRA_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x2b => {
instrDDCB__LD_E_SRA_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x2c => {
instrDDCB__LD_H_SRA_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x2d => {
instrDDCB__LD_L_SRA_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x2e => {
instrDDCB__SRA_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x2f => {
instrDDCB__LD_A_SRA_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x30 => {
instrDDCB__LD_B_SLL_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x31 => {
instrDDCB__LD_C_SLL_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x32 => {
instrDDCB__LD_D_SLL_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x33 => {
instrDDCB__LD_E_SLL_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x34 => {
instrDDCB__LD_H_SLL_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x35 => {
instrDDCB__LD_L_SLL_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x36 => {
instrDDCB__SLL_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x37 => {
instrDDCB__LD_A_SLL_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x38 => {
instrDDCB__LD_B_SRL_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x39 => {
instrDDCB__LD_C_SRL_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x3a => {
instrDDCB__LD_D_SRL_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x3b => {
instrDDCB__LD_E_SRL_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x3c => {
instrDDCB__LD_H_SRL_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x3d => {
instrDDCB__LD_L_SRL_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x3e => {
instrDDCB__SRL_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x3f => {
instrDDCB__LD_A_SRL_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x47 => {
instrDDCB__BIT_0_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x40 => {
instrDDCB__BIT_0_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x41 => {
instrDDCB__BIT_0_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x42 => {
instrDDCB__BIT_0_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x43 => {
instrDDCB__BIT_0_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x44 => {
instrDDCB__BIT_0_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x45 => {
instrDDCB__BIT_0_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x46 => {
instrDDCB__BIT_0_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x4f => {
instrDDCB__BIT_1_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x48 => {
instrDDCB__BIT_1_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x49 => {
instrDDCB__BIT_1_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x4a => {
instrDDCB__BIT_1_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x4b => {
instrDDCB__BIT_1_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x4c => {
instrDDCB__BIT_1_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x4d => {
instrDDCB__BIT_1_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x4e => {
instrDDCB__BIT_1_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x57 => {
instrDDCB__BIT_2_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x50 => {
instrDDCB__BIT_2_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x51 => {
instrDDCB__BIT_2_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x52 => {
instrDDCB__BIT_2_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x53 => {
instrDDCB__BIT_2_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x54 => {
instrDDCB__BIT_2_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x55 => {
instrDDCB__BIT_2_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x56 => {
instrDDCB__BIT_2_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x5f => {
instrDDCB__BIT_3_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x58 => {
instrDDCB__BIT_3_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x59 => {
instrDDCB__BIT_3_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x5a => {
instrDDCB__BIT_3_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x5b => {
instrDDCB__BIT_3_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x5c => {
instrDDCB__BIT_3_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x5d => {
instrDDCB__BIT_3_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x5e => {
instrDDCB__BIT_3_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x67 => {
instrDDCB__BIT_4_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x60 => {
instrDDCB__BIT_4_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x61 => {
instrDDCB__BIT_4_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x62 => {
instrDDCB__BIT_4_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x63 => {
instrDDCB__BIT_4_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x64 => {
instrDDCB__BIT_4_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x65 => {
instrDDCB__BIT_4_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x66 => {
instrDDCB__BIT_4_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x6f => {
instrDDCB__BIT_5_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x68 => {
instrDDCB__BIT_5_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x69 => {
instrDDCB__BIT_5_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x6a => {
instrDDCB__BIT_5_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x6b => {
instrDDCB__BIT_5_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x6c => {
instrDDCB__BIT_5_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x6d => {
instrDDCB__BIT_5_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x6e => {
instrDDCB__BIT_5_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x77 => {
instrDDCB__BIT_6_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x70 => {
instrDDCB__BIT_6_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x71 => {
instrDDCB__BIT_6_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x72 => {
instrDDCB__BIT_6_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x73 => {
instrDDCB__BIT_6_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x74 => {
instrDDCB__BIT_6_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x75 => {
instrDDCB__BIT_6_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x76 => {
instrDDCB__BIT_6_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x7f => {
instrDDCB__BIT_7_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x78 => {
instrDDCB__BIT_7_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x79 => {
instrDDCB__BIT_7_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x7a => {
instrDDCB__BIT_7_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x7b => {
instrDDCB__BIT_7_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x7c => {
instrDDCB__BIT_7_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x7d => {
instrDDCB__BIT_7_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x7e => {
instrDDCB__BIT_7_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x80 => {
instrDDCB__LD_B_RES_0_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x81 => {
instrDDCB__LD_C_RES_0_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x82 => {
instrDDCB__LD_D_RES_0_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x83 => {
instrDDCB__LD_E_RES_0_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x84 => {
instrDDCB__LD_H_RES_0_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x85 => {
instrDDCB__LD_L_RES_0_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x86 => {
instrDDCB__RES_0_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x87 => {
instrDDCB__LD_A_RES_0_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x88 => {
instrDDCB__LD_B_RES_1_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x89 => {
instrDDCB__LD_C_RES_1_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x8a => {
instrDDCB__LD_D_RES_1_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x8b => {
instrDDCB__LD_E_RES_1_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x8c => {
instrDDCB__LD_H_RES_1_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x8d => {
instrDDCB__LD_L_RES_1_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x8e => {
instrDDCB__RES_1_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x8f => {
instrDDCB__LD_A_RES_1_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x90 => {
instrDDCB__LD_B_RES_2_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x91 => {
instrDDCB__LD_C_RES_2_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x92 => {
instrDDCB__LD_D_RES_2_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x93 => {
instrDDCB__LD_E_RES_2_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x94 => {
instrDDCB__LD_H_RES_2_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x95 => {
instrDDCB__LD_L_RES_2_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x96 => {
instrDDCB__RES_2_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x97 => {
instrDDCB__LD_A_RES_2_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x98 => {
instrDDCB__LD_B_RES_3_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x99 => {
instrDDCB__LD_C_RES_3_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x9a => {
instrDDCB__LD_D_RES_3_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x9b => {
instrDDCB__LD_E_RES_3_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x9c => {
instrDDCB__LD_H_RES_3_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x9d => {
instrDDCB__LD_L_RES_3_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x9e => {
instrDDCB__RES_3_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0x9f => {
instrDDCB__LD_A_RES_3_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xa0 => {
instrDDCB__LD_B_RES_4_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xa1 => {
instrDDCB__LD_C_RES_4_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xa2 => {
instrDDCB__LD_D_RES_4_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xa3 => {
instrDDCB__LD_E_RES_4_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xa4 => {
instrDDCB__LD_H_RES_4_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xa5 => {
instrDDCB__LD_L_RES_4_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xa6 => {
instrDDCB__RES_4_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xa7 => {
instrDDCB__LD_A_RES_4_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xa8 => {
instrDDCB__LD_B_RES_5_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xa9 => {
instrDDCB__LD_C_RES_5_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xaa => {
instrDDCB__LD_D_RES_5_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xab => {
instrDDCB__LD_E_RES_5_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xac => {
instrDDCB__LD_H_RES_5_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xad => {
instrDDCB__LD_L_RES_5_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xae => {
instrDDCB__RES_5_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xaf => {
instrDDCB__LD_A_RES_5_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xb0 => {
instrDDCB__LD_B_RES_6_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xb1 => {
instrDDCB__LD_C_RES_6_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xb2 => {
instrDDCB__LD_D_RES_6_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xb3 => {
instrDDCB__LD_E_RES_6_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xb4 => {
instrDDCB__LD_H_RES_6_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xb5 => {
instrDDCB__LD_L_RES_6_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xb6 => {
instrDDCB__RES_6_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xb7 => {
instrDDCB__LD_A_RES_6_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xb8 => {
instrDDCB__LD_B_RES_7_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xb9 => {
instrDDCB__LD_C_RES_7_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xba => {
instrDDCB__LD_D_RES_7_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xbb => {
instrDDCB__LD_E_RES_7_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xbc => {
instrDDCB__LD_H_RES_7_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xbd => {
instrDDCB__LD_L_RES_7_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xbe => {
instrDDCB__RES_7_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xbf => {
instrDDCB__LD_A_RES_7_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xc0 => {
instrDDCB__LD_B_SET_0_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xc1 => {
instrDDCB__LD_C_SET_0_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xc2 => {
instrDDCB__LD_D_SET_0_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xc3 => {
instrDDCB__LD_E_SET_0_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xc4 => {
instrDDCB__LD_H_SET_0_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xc5 => {
instrDDCB__LD_L_SET_0_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xc6 => {
instrDDCB__SET_0_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xc7 => {
instrDDCB__LD_A_SET_0_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xc8 => {
instrDDCB__LD_B_SET_1_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xc9 => {
instrDDCB__LD_C_SET_1_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xca => {
instrDDCB__LD_D_SET_1_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xcb => {
instrDDCB__LD_E_SET_1_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xcc => {
instrDDCB__LD_H_SET_1_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xcd => {
instrDDCB__LD_L_SET_1_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xce => {
instrDDCB__SET_1_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xcf => {
instrDDCB__LD_A_SET_1_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xd0 => {
instrDDCB__LD_B_SET_2_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xd1 => {
instrDDCB__LD_C_SET_2_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xd2 => {
instrDDCB__LD_D_SET_2_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xd3 => {
instrDDCB__LD_E_SET_2_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xd4 => {
instrDDCB__LD_H_SET_2_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xd5 => {
instrDDCB__LD_L_SET_2_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xd6 => {
instrDDCB__SET_2_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xd7 => {
instrDDCB__LD_A_SET_2_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xd8 => {
instrDDCB__LD_B_SET_3_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xd9 => {
instrDDCB__LD_C_SET_3_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xda => {
instrDDCB__LD_D_SET_3_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xdb => {
instrDDCB__LD_E_SET_3_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xdc => {
instrDDCB__LD_H_SET_3_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xdd => {
instrDDCB__LD_L_SET_3_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xde => {
instrDDCB__SET_3_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xdf => {
instrDDCB__LD_A_SET_3_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xe0 => {
instrDDCB__LD_B_SET_4_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xe1 => {
instrDDCB__LD_C_SET_4_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xe2 => {
instrDDCB__LD_D_SET_4_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xe3 => {
instrDDCB__LD_E_SET_4_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xe4 => {
instrDDCB__LD_H_SET_4_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xe5 => {
instrDDCB__LD_L_SET_4_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xe6 => {
instrDDCB__SET_4_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xe7 => {
instrDDCB__LD_A_SET_4_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xe8 => {
instrDDCB__LD_B_SET_5_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xe9 => {
instrDDCB__LD_C_SET_5_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xea => {
instrDDCB__LD_D_SET_5_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xeb => {
instrDDCB__LD_E_SET_5_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xec => {
instrDDCB__LD_H_SET_5_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xed => {
instrDDCB__LD_L_SET_5_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xee => {
instrDDCB__SET_5_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xef => {
instrDDCB__LD_A_SET_5_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xf0 => {
instrDDCB__LD_B_SET_6_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xf1 => {
instrDDCB__LD_C_SET_6_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xf2 => {
instrDDCB__LD_D_SET_6_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xf3 => {
instrDDCB__LD_E_SET_6_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xf4 => {
instrDDCB__LD_H_SET_6_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xf5 => {
instrDDCB__LD_L_SET_6_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xf6 => {
instrDDCB__SET_6_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xf7 => {
instrDDCB__LD_A_SET_6_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xf8 => {
instrDDCB__LD_B_SET_7_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xf9 => {
instrDDCB__LD_C_SET_7_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xfa => {
instrDDCB__LD_D_SET_7_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xfb => {
instrDDCB__LD_E_SET_7_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xfc => {
instrDDCB__LD_H_SET_7_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xfd => {
instrDDCB__LD_L_SET_7_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xfe => {
instrDDCB__SET_7_iREGpDD(data, memory);
true
}
val if val == SHIFT_0X_DDCB + 0xff => {
instrDDCB__LD_A_SET_7_iREGpDD(data, memory);
true
}
_ => false,
}
}
pub fn instr__NOP() {}
fn_instr_ld_r16_nnnn!(instr__LD_BC_NNNN, BC, set_bc);
pub fn instr__LD_iBC_A(data: &mut Z80Data, memory: &mut Memory) {
let address = data.bc();
memory.write_byte(address, data.A);
}
fn_instr_op_16!(instr__INC_BC, inc_bc);
fn_instr_op_8!(instr__INC_B, inc_b);
fn_instr_op_8!(instr__DEC_B, dec_b);
fn_instr_ld_r8_nn!(instr__LD_B_NN, B);
pub fn instr__RLCA(data: &mut Z80Data) {
data.A = data.A.rotate_left(1);
data.F = (data.F & (FLAG_P | FLAG_Z | FLAG_S)) | (data.A & (FLAG_C | FLAG_3 | FLAG_5));
}
pub fn instr__EX_AF_AF(data: &mut Z80Data) {
let old_a: u8 = data.A;
let old_f: u8 = data.F;
data.A = data.A_;
data.F = data.F_;
data.A_ = old_a;
data.F_ = old_f;
}
fn_instr_add_hl_r16!(instr__ADD_HL_BC, bc);
fn_instr_ld_a_r16!(instr__LD_A_iBC, bc);
fn_instr_op_16!(instr__DEC_BC, dec_bc);
fn_instr_op_8!(instr__INC_C, inc_c);
fn_instr_op_8!(instr__DEC_C, dec_c);
fn_instr_ld_r8_nn!(instr__LD_C_NN, C);
pub fn instr__RRCA(data: &mut Z80Data) {
data.F = (data.F & (FLAG_P | FLAG_Z | FLAG_S)) | (data.A & FLAG_C);
data.A = data.A.rotate_right(1);
data.F |= data.A & (FLAG_3 | FLAG_5);
}
pub fn instr__DJNZ_OFFSET(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq(_address, 1);
data.B = data.B.wrapping_sub(1);
if data.B != 0 {
jr(data, memory);
data.cycles += 14;
} else {
let _address = data.pc();
memory.contend_read(_address, 3);
data.cycles += 9;
}
data.inc_pc(1);
}
fn_instr_ld_r16_nnnn!(instr__LD_DE_NNNN, DE, set_de);
fn_instr_ld_i_r16_r8!(instr__LD_iDE_A, de, A);
fn_instr_op_16!(instr__INC_DE, inc_de);
fn_instr_op_8!(instr__INC_D, inc_d);
fn_instr_op_8!(instr__DEC_D, dec_d);
fn_instr_ld_r8_nn!(instr__LD_D_NN, D);
pub fn instr__RLA(data: &mut Z80Data) {
let byte_temp: u8 = data.A;
data.A = (data.A << 1) | data.F & FLAG_C;
data.F =
(data.F & (FLAG_P | FLAG_Z | FLAG_S)) | (data.A & (FLAG_3 | FLAG_5)) | (byte_temp >> 7);
}
pub fn instr__JR_OFFSET(data: &mut Z80Data, memory: &mut Memory) {
jr(data, memory);
data.inc_pc(1);
}
fn_instr_add_hl_r16!(instr__ADD_HL_DE, de);
fn_instr_ld_a_r16!(instr__LD_A_iDE, de);
fn_instr_op_16!(instr__DEC_DE, dec_de);
fn_instr_op_8!(instr__INC_E, inc_e);
fn_instr_op_8!(instr__DEC_E, dec_e);
fn_instr_ld_r8_nn!(instr__LD_E_NN, E);
pub fn instr__RRA(data: &mut Z80Data) {
let byte_temp: u8 = data.A;
data.A = (data.A >> 1) | (data.F << 7);
data.F = data.F & (FLAG_P | FLAG_Z | FLAG_S) | data.A & (FLAG_3 | FLAG_5) | byte_temp & FLAG_C;
}
pub fn instr__JR_NZ_OFFSET(data: &mut Z80Data, memory: &mut Memory) {
if (data.F & FLAG_Z) == 0 {
jr(data, memory);
} else {
let _address = data.pc();
memory.contend_read(_address, 3);
}
data.inc_pc(1);
}
fn_instr_ld_r16_nnnn!(instr__LD_HL_NNNN, HL, set_hl);
fn_instr_ld_i_nnnn_r16!(instr__LD_iNNNN_HL, L, H);
fn_instr_op_16!(instr__INC_HL, inc_hl);
fn_instr_op_8!(instr__INC_H, inc_h);
fn_instr_op_8!(instr__DEC_H, dec_h);
fn_instr_ld_r8_nn!(instr__LD_H_NN, H);
pub fn instr__DAA(data: &mut Z80Data) {
let mut add: u8 = 0;
let mut carry: u8 = data.F & FLAG_C;
if ((data.F & FLAG_H) != 0) || ((data.A & 0x0f) > 9) {
add = 6;
}
if (carry != 0) || (data.A > 0x99) {
add |= 0x60;
}
if data.A > 0x99 {
carry = FLAG_C;
}
if (data.F & FLAG_N) != 0 {
sub(data, add);
} else {
super::api::add(data, add);
}
let temp: u8 =
data.F & !(FLAG_C | FLAG_P) | carry | z80_tables::get().parity_table[data.A as usize];
data.F = temp;
}
pub fn instr__JR_Z_OFFSET(data: &mut Z80Data, memory: &mut Memory) {
if (data.F & FLAG_Z) != 0 {
jr(data, memory);
} else {
let _address = data.pc();
memory.contend_read(_address, 3);
}
data.inc_pc(1);
}
fn_instr_add_hl_r16!(instr__ADD_HL_HL, hl);
fn_instr_ld_hl_i_nnnn!(instr__LD_HL_iNNNN, L, H);
fn_instr_op_16!(instr__DEC_HL, dec_hl);
fn_instr_op_8!(instr__INC_L, inc_l);
fn_instr_op_8!(instr__DEC_L, dec_l);
fn_instr_ld_r8_nn!(instr__LD_L_NN, L);
pub fn instr__CPL(data: &mut Z80Data) {
data.A ^= 0xff;
data.F = data.F & (FLAG_C | FLAG_P | FLAG_Z | FLAG_S)
| data.A & (FLAG_3 | FLAG_5)
| (FLAG_N | FLAG_H);
}
pub fn instr__JR_NC_OFFSET(data: &mut Z80Data, memory: &mut Memory) {
if data.F & FLAG_C == 0 {
jr(data, memory);
} else {
let _address = data.pc();
memory.contend_read(_address, 3);
}
data.inc_pc(1);
}
fn_instr_ld_r16_nnnn!(instr__LD_SP_NNNN, SP, set_sp);
pub fn instr__LD_iNNNN_A(data: &mut Z80Data, memory: &mut Memory) {
let address = data.pc();
let mut word_temp: u16 = (memory.read_byte(address)) as u16;
data.inc_pc(1);
let address = data.pc();
word_temp |= (memory.read_byte(address) as u16) << 8;
data.inc_pc(1);
memory.write_byte(word_temp, data.A);
}
fn_instr_op_16!(instr__INC_SP, inc_sp);
pub fn instr__INC_iHL(data: &mut Z80Data, memory: &mut Memory) {
let mut byte_temp: u8 = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
inc(data, &mut byte_temp);
memory.write_byte(data.hl(), byte_temp);
}
pub fn instr__DEC_iHL(data: &mut Z80Data, memory: &mut Memory) {
let address = data.hl();
let mut byte_temp: u8 = memory.read_byte(address);
let _address = data.hl();
memory.contend_read_no_mreq(_address, 1);
dec(data, &mut byte_temp);
memory.write_byte(data.hl(), byte_temp);
}
pub fn instr__LD_iHL_NN(data: &mut Z80Data, memory: &mut Memory) {
let address = data.pc();
let value = memory.read_byte(address);
let address = data.hl();
memory.write_byte(address, value);
data.inc_pc(1);
}
pub fn instr__SCF(data: &mut Z80Data) {
data.F = (data.F & (FLAG_P | FLAG_Z | FLAG_S)) | (data.A & (FLAG_3 | FLAG_5)) | FLAG_C;
}
pub fn instr__JR_C_OFFSET(data: &mut Z80Data, memory: &mut Memory) {
if data.F & FLAG_C != 0 {
jr(data, memory);
} else {
let _address = data.pc();
memory.contend_read(_address, 3);
}
data.inc_pc(1);
}
fn_instr_add_hl_r16!(instr__ADD_HL_SP, sp);
pub fn instr__LD_A_iNNNN(data: &mut Z80Data, memory: &mut Memory) {
let address = data.pc();
let mut word_temp: u16 = memory.read_byte(address) as u16;
data.inc_pc(1);
let address = data.pc();
word_temp |= (memory.read_byte(address) as u16) << 8;
data.inc_pc(1);
data.A = memory.read_byte(word_temp);
}
fn_instr_op_16!(instr__DEC_SP, dec_sp);
fn_instr_op_8!(instr__INC_A, inc_a);
fn_instr_op_8!(instr__DEC_A, dec_a);
fn_instr_ld_r8_nn!(instr__LD_A_NN, A);
pub fn instr__CCF(data: &mut Z80Data) {
data.F = data.F & (FLAG_P | FLAG_Z | FLAG_S)
| tern_op_b(data.F & FLAG_C != 0, FLAG_H, FLAG_C)
| data.A & (FLAG_3 | FLAG_5);
}
pub fn instr__LD_B_B() {}
pub fn instr__LD_B_C(data: &mut Z80Data) {
data.B = data.C;
}
pub fn instr__LD_B_D(data: &mut Z80Data) {
data.B = data.D;
}
pub fn instr__LD_B_E(data: &mut Z80Data) {
data.B = data.E;
}
pub fn instr__LD_B_H(data: &mut Z80Data) {
data.B = data.H;
}
pub fn instr__LD_B_L(data: &mut Z80Data) {
data.B = data.L;
}
pub fn instr__LD_B_iHL(data: &mut Z80Data, memory: &mut Memory) {
data.B = memory.read_byte(data.hl());
}
pub fn instr__LD_B_A(data: &mut Z80Data) {
data.B = data.A;
}
pub fn instr__LD_C_B(data: &mut Z80Data) {
data.C = data.B;
}
pub fn instr__LD_C_C() {}
pub fn instr__LD_C_D(data: &mut Z80Data) {
data.C = data.D;
}
pub fn instr__LD_C_E(data: &mut Z80Data) {
data.C = data.E;
}
pub fn instr__LD_C_H(data: &mut Z80Data) {
data.C = data.H;
}
pub fn instr__LD_C_L(data: &mut Z80Data) {
data.C = data.L;
}
pub fn instr__LD_C_iHL(data: &mut Z80Data, memory: &mut Memory) {
data.C = memory.read_byte(data.hl());
}
pub fn instr__LD_C_A(data: &mut Z80Data) {
data.C = data.A;
}
pub fn instr__LD_D_B(data: &mut Z80Data) {
data.D = data.B;
}
pub fn instr__LD_D_C(data: &mut Z80Data) {
data.D = data.C;
}
pub fn instr__LD_D_D() {}
pub fn instr__LD_D_E(data: &mut Z80Data) {
data.D = data.E;
}
pub fn instr__LD_D_H(data: &mut Z80Data) {
data.D = data.H;
}
pub fn instr__LD_D_L(data: &mut Z80Data) {
data.D = data.L;
}
pub fn instr__LD_D_iHL(data: &mut Z80Data, memory: &mut Memory) {
data.D = memory.read_byte(data.hl());
}
pub fn instr__LD_D_A(data: &mut Z80Data) {
data.D = data.A;
}
pub fn instr__LD_E_B(data: &mut Z80Data) {
data.E = data.B;
}
pub fn instr__LD_E_C(data: &mut Z80Data) {
data.E = data.C;
}
pub fn instr__LD_E_D(data: &mut Z80Data) {
data.E = data.D;
}
pub fn instr__LD_E_E() {}
pub fn instr__LD_E_H(data: &mut Z80Data) {
data.E = data.H;
}
pub fn instr__LD_E_L(data: &mut Z80Data) {
data.E = data.L;
}
pub fn instr__LD_E_iHL(data: &mut Z80Data, memory: &mut Memory) {
data.E = memory.read_byte(data.hl());
}
pub fn instr__LD_E_A(data: &mut Z80Data) {
data.E = data.A;
}
pub fn instr__LD_H_B(data: &mut Z80Data) {
data.H = data.B;
}
pub fn instr__LD_H_C(data: &mut Z80Data) {
data.H = data.C;
}
pub fn instr__LD_H_D(data: &mut Z80Data) {
data.H = data.D;
}
pub fn instr__LD_H_E(data: &mut Z80Data) {
data.H = data.E;
}
pub fn instr__LD_H_H() {}
pub fn instr__LD_H_L(data: &mut Z80Data) {
data.H = data.L;
}
pub fn instr__LD_H_iHL(data: &mut Z80Data, memory: &mut Memory) {
data.H = memory.read_byte(data.hl());
}
pub fn instr__LD_H_A(data: &mut Z80Data) {
data.H = data.A;
}
pub fn instr__LD_L_B(data: &mut Z80Data) {
data.L = data.B;
}
pub fn instr__LD_L_C(data: &mut Z80Data) {
data.L = data.C;
}
pub fn instr__LD_L_D(data: &mut Z80Data) {
data.L = data.D;
}
pub fn instr__LD_L_E(data: &mut Z80Data) {
data.L = data.E;
}
pub fn instr__LD_L_H(data: &mut Z80Data) {
data.L = data.H;
}
pub fn instr__LD_L_L() {}
pub fn instr__LD_L_iHL(data: &mut Z80Data, memory: &mut Memory) {
data.L = memory.read_byte(data.hl());
}
pub fn instr__LD_L_A(data: &mut Z80Data) {
data.L = data.A;
}
fn_instr_ld_i_r16_r8!(instr__LD_iHL_B, hl, B);
fn_instr_ld_i_r16_r8!(instr__LD_iHL_C, hl, C);
fn_instr_ld_i_r16_r8!(instr__LD_iHL_D, hl, D);
fn_instr_ld_i_r16_r8!(instr__LD_iHL_E, hl, E);
fn_instr_ld_i_r16_r8!(instr__LD_iHL_H, hl, H);
fn_instr_ld_i_r16_r8!(instr__LD_iHL_L, hl, L);
pub fn instr__HALT(data: &mut Z80Data) {
data.halted = true;
data.dec_pc(1);
}
fn_instr_ld_i_r16_r8!(instr__LD_iHL_A, hl, A);
fn_instr_ld_a_r8!(instr__LD_A_B, B);
fn_instr_ld_a_r8!(instr__LD_A_C, C);
fn_instr_ld_a_r8!(instr__LD_A_D, D);
fn_instr_ld_a_r8!(instr__LD_A_E, E);
fn_instr_ld_a_r8!(instr__LD_A_H, H);
fn_instr_ld_a_r8!(instr__LD_A_L, L);
fn_instr_ld_a_r16!(instr__LD_A_iHL, hl);
pub fn instr__LD_A_A() {}
fn_instr_add_r8!(instr__ADD_A_B, B);
fn_instr_add_r8!(instr__ADD_A_C, C);
fn_instr_add_r8!(instr__ADD_A_D, D);
fn_instr_add_r8!(instr__ADD_A_E, E);
fn_instr_add_r8!(instr__ADD_A_H, H);
fn_instr_add_r8!(instr__ADD_A_L, L);
pub fn instr__ADD_A_iHL(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp: u8 = memory.read_byte(data.hl());
add(data, byte_temp);
}
fn_instr_add_r8!(instr__ADD_A_A, A);
fn_instr_adc_r8!(instr__ADC_A_B, B);
fn_instr_adc_r8!(instr__ADC_A_C, C);
fn_instr_adc_r8!(instr__ADC_A_D, D);
fn_instr_adc_r8!(instr__ADC_A_E, E);
fn_instr_adc_r8!(instr__ADC_A_H, H);
fn_instr_adc_r8!(instr__ADC_A_L, L);
pub fn instr__ADC_A_iHL(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp: u8 = memory.read_byte(data.hl());
adc(data, byte_temp);
}
fn_instr_adc_r8!(instr__ADC_A_A, A);
fn_instr_sub_r8!(instr__SUB_A_B, B);
fn_instr_sub_r8!(instr__SUB_A_C, C);
fn_instr_sub_r8!(instr__SUB_A_D, D);
fn_instr_sub_r8!(instr__SUB_A_E, E);
fn_instr_sub_r8!(instr__SUB_A_H, H);
fn_instr_sub_r8!(instr__SUB_A_L, L);
pub fn instr__SUB_A_iHL(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp: u8 = memory.read_byte(data.hl());
sub(data, byte_temp);
}
fn_instr_sub_r8!(instr__SUB_A_A, A);
fn_instr_sbc_r8!(instr__SBC_A_B, B);
fn_instr_sbc_r8!(instr__SBC_A_C, C);
fn_instr_sbc_r8!(instr__SBC_A_D, D);
fn_instr_sbc_r8!(instr__SBC_A_E, E);
fn_instr_sbc_r8!(instr__SBC_A_H, H);
fn_instr_sbc_r8!(instr__SBC_A_L, L);
pub fn instr__SBC_A_iHL(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp: u8 = memory.read_byte(data.hl());
sbc(data, byte_temp);
}
fn_instr_sbc_r8!(instr__SBC_A_A, A);
fn_instr_and_r8!(instr__AND_A_B, B);
fn_instr_and_r8!(instr__AND_A_C, C);
fn_instr_and_r8!(instr__AND_A_D, D);
fn_instr_and_r8!(instr__AND_A_E, E);
fn_instr_and_r8!(instr__AND_A_H, H);
fn_instr_and_r8!(instr__AND_A_L, L);
pub fn instr__AND_A_iHL(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp: u8 = memory.read_byte(data.hl());
and(data, byte_temp);
}
fn_instr_and_r8!(instr__AND_A_A, A);
fn_instr_xor_r8!(instr__XOR_A_B, B);
fn_instr_xor_r8!(instr__XOR_A_C, C);
fn_instr_xor_r8!(instr__XOR_A_D, D);
fn_instr_xor_r8!(instr__XOR_A_E, E);
fn_instr_xor_r8!(instr__XOR_A_H, H);
fn_instr_xor_r8!(instr__XOR_A_L, L);
pub fn instr__XOR_A_iHL(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp: u8 = memory.read_byte(data.hl());
xor(data, byte_temp);
}
fn_instr_xor_r8!(instr__XOR_A_A, A);
fn_instr_or_r8!(instr__OR_A_B, B);
fn_instr_or_r8!(instr__OR_A_C, C);
fn_instr_or_r8!(instr__OR_A_D, D);
fn_instr_or_r8!(instr__OR_A_E, E);
fn_instr_or_r8!(instr__OR_A_H, H);
fn_instr_or_r8!(instr__OR_A_L, L);
pub fn instr__OR_A_iHL(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp: u8 = memory.read_byte(data.hl());
or(data, byte_temp);
}
fn_instr_or_r8!(instr__OR_A_A, A);
fn_instr_cp_r8!(instr__CP_B, B);
fn_instr_cp_r8!(instr__CP_C, C);
fn_instr_cp_r8!(instr__CP_D, D);
fn_instr_cp_r8!(instr__CP_E, E);
fn_instr_cp_r8!(instr__CP_H, H);
fn_instr_cp_r8!(instr__CP_L, L);
pub fn instr__CP_iHL(data: &mut Z80Data, memory: &mut Memory) {
let address = data.hl();
let byte_temp: u8 = memory.read_byte(address);
cp(data, byte_temp);
}
fn_instr_cp_r8!(instr__CP_A, A);
pub fn instr__RET_NZ(data: &mut Z80Data, memory: &mut Memory, hook: Rc<RefCell<dyn FuncHook>>) {
let _address = data.ir();
memory.contend_read_no_mreq(_address, 1);
if (data.F & FLAG_Z) == 0 {
ret(data, memory, hook);
}
}
fn_instr_pop_r16!(instr__POP_BC, C, B);
pub fn instr__JP_NZ_NNNN(data: &mut Z80Data, memory: &mut Memory) {
if (data.F & FLAG_Z) == 0 {
jp(data, memory);
} else {
let _address = data.pc();
memory.contend_read(_address, 3);
let pc = data.pc();
memory.contend_read(pc + 1, 3);
data.inc_pc(2);
}
}
pub fn instr__JP_NNNN(data: &mut Z80Data, memory: &mut Memory) {
jp(data, memory);
}
pub fn instr__CALL_NZ_NNNN(
data: &mut Z80Data,
memory: &mut Memory,
ports: &mut Ports,
hook: Rc<RefCell<dyn FuncHook>>,
) {
if (data.F & FLAG_Z) == 0 {
call(data, memory, ports, hook);
} else {
let _address = data.pc();
memory.contend_read(_address, 3);
let pc = data.pc();
memory.contend_read(pc + 1, 3);
data.inc_pc(2);
}
}
fn_instr_push_r16!(instr__PUSH_BC, C, B);
pub fn instr__ADD_A_NN(data: &mut Z80Data, memory: &mut Memory) {
let address = data.pc();
let byte_temp: u8 = memory.read_byte(address);
data.inc_pc(1);
add(data, byte_temp);
}
pub fn instr__RST_00(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq(_address, 1);
rst(data, memory, 0x00);
}
pub fn instr__RET_Z(data: &mut Z80Data, memory: &mut Memory, hook: Rc<RefCell<dyn FuncHook>>) {
let _address = data.ir();
memory.contend_read_no_mreq(_address, 1);
if (data.F & FLAG_Z) != 0 {
ret(data, memory, hook);
}
}
pub fn instr__RET(data: &mut Z80Data, memory: &mut Memory, hook: Rc<RefCell<dyn FuncHook>>) {
ret(data, memory, hook);
}
pub fn instr__JP_Z_NNNN(data: &mut Z80Data, memory: &mut Memory) {
if (data.F & FLAG_Z) != 0 {
jp(data, memory);
} else {
let _address = data.pc();
memory.contend_read(_address, 3);
let pc = data.pc();
memory.contend_read(pc + 1, 3);
data.inc_pc(2);
}
}
pub fn instr__SHIFT_CB(_data: &mut Z80Data, _memory: &mut Memory) {}
pub fn instr__CALL_Z_NNNN(
data: &mut Z80Data,
memory: &mut Memory,
ports: &mut Ports,
hook: Rc<RefCell<dyn FuncHook>>,
) {
if (data.F & FLAG_Z) != 0 {
call(data, memory, ports, hook);
} else {
let _address = data.pc();
memory.contend_read(_address, 3);
let pc = data.pc();
memory.contend_read(pc + 1, 3);
data.inc_pc(2);
}
}
pub fn instr__CALL_NNNN(
data: &mut Z80Data,
memory: &mut Memory,
ports: &mut Ports,
hook: Rc<RefCell<dyn FuncHook>>,
) {
call(data, memory, ports, hook);
}
pub fn instr__ADC_A_NN(data: &mut Z80Data, memory: &mut Memory) {
let address = data.pc();
let byte_temp: u8 = memory.read_byte(address);
data.inc_pc(1);
adc(data, byte_temp);
}
pub fn instr__RST_8(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq(_address, 1);
rst(data, memory, 0x8);
}
pub fn instr__RET_NC(data: &mut Z80Data, memory: &mut Memory, hook: Rc<RefCell<dyn FuncHook>>) {
let _address = data.ir();
memory.contend_read_no_mreq(_address, 1);
if data.F & FLAG_C == 0 {
ret(data, memory, hook);
}
}
fn_instr_pop_r16!(instr__POP_DE, E, D);
pub fn instr__JP_NC_NNNN(data: &mut Z80Data, memory: &mut Memory) {
if data.F & FLAG_C == 0 {
jp(data, memory);
} else {
let _address = data.pc();
memory.contend_read(_address, 3);
let pc = data.pc();
memory.contend_read(pc + 1, 3);
data.inc_pc(2);
}
}
pub fn instr__OUT_iNN_A(data: &mut Z80Data, memory: &mut Memory, ports: &mut Ports) {
let address = data.pc();
let out_temp: u16 = (memory.read_byte(address) as u16) + ((data.A as u16) << 8);
data.inc_pc(1);
ports.write_port(out_temp, data.A);
}
pub fn instr__CALL_NC_NNNN(
data: &mut Z80Data,
memory: &mut Memory,
ports: &mut Ports,
hook: Rc<RefCell<dyn FuncHook>>,
) {
if data.F & FLAG_C == 0 {
call(data, memory, ports, hook);
} else {
let _address = data.pc();
memory.contend_read(_address, 3);
let pc = data.pc();
memory.contend_read(pc + 1, 3);
data.inc_pc(2);
}
}
fn_instr_push_r16!(instr__PUSH_DE, E, D);
pub fn instr__SUB_NN(data: &mut Z80Data, memory: &mut Memory) {
let address = data.pc();
let byte_temp: u8 = memory.read_byte(address);
data.inc_pc(1);
sub(data, byte_temp);
}
pub fn instr__RST_10(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq(_address, 1);
rst(data, memory, 0x10);
}
pub fn instr__RET_C(data: &mut Z80Data, memory: &mut Memory, hook: Rc<RefCell<dyn FuncHook>>) {
let _address = data.ir();
memory.contend_read_no_mreq(_address, 1);
if data.F & FLAG_C != 0 {
ret(data, memory, hook);
}
}
pub fn instr__EXX(data: &mut Z80Data) {
let word_temp: u16 = data.bc();
data.set_bc(data.bc_());
data.set_bc_(word_temp);
let word_temp = data.de();
data.set_de(data.de_());
data.set_de_(word_temp);
let word_temp = data.hl();
data.set_hl(data.hl_());
data.set_hl_(word_temp);
}
pub fn instr__JP_C_NNNN(data: &mut Z80Data, memory: &mut Memory) {
if data.F & FLAG_C != 0 {
jp(data, memory);
} else {
let _address = data.pc();
memory.contend_read(_address, 3);
let pc = data.pc();
memory.contend_read(pc + 1, 3);
data.inc_pc(2);
}
}
pub fn instr__IN_A_iNN(data: &mut Z80Data, memory: &mut Memory, ports: &mut Ports) {
let address = data.pc();
let in_temp: u16 = (memory.read_byte(address) as u16) + ((data.A as u16) << 8);
data.inc_pc(1);
data.A = ports.read_port(in_temp);
}
pub fn instr__CALL_C_NNNN(
data: &mut Z80Data,
memory: &mut Memory,
ports: &mut Ports,
hook: Rc<RefCell<dyn FuncHook>>,
) {
if data.F & FLAG_C != 0 {
call(data, memory, ports, hook);
} else {
let _address = data.pc();
memory.contend_read(_address, 3);
let pc = data.pc();
memory.contend_read(pc + 1, 3);
data.inc_pc(2);
}
}
pub fn instr__SHIFT_DD(_data: &mut Z80Data, _memory: &mut Memory) {}
pub fn instr__SBC_A_NN(data: &mut Z80Data, memory: &mut Memory) {
let address = data.pc();
let byte_temp: u8 = memory.read_byte(address);
data.inc_pc(1);
sbc(data, byte_temp);
}
pub fn instr__RST_18(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq(_address, 1);
rst(data, memory, 0x18);
}
pub fn instr__RET_PO(data: &mut Z80Data, memory: &mut Memory, hook: Rc<RefCell<dyn FuncHook>>) {
let _address = data.ir();
memory.contend_read_no_mreq(_address, 1);
if (data.F & FLAG_P) == 0 {
ret(data, memory, hook);
}
}
fn_instr_pop_r16!(instr__POP_HL, L, H);
pub fn instr__JP_PO_NNNN(data: &mut Z80Data, memory: &mut Memory) {
if (data.F & FLAG_P) == 0 {
jp(data, memory);
} else {
let _address = data.pc();
memory.contend_read(_address, 3);
let pc = data.pc();
memory.contend_read(pc + 1, 3);
data.inc_pc(2);
}
}
pub fn instr__EX_iSP_HL(data: &mut Z80Data, memory: &mut Memory) {
let address = data.sp();
let byte_temp_l = memory.read_byte(address);
let sp = data.sp();
let byte_temp_h = memory.read_byte(sp + 1);
let sp = data.sp();
memory.contend_read_no_mreq(sp + 1, 1);
let sp = data.sp();
memory.write_byte(sp + 1, data.H);
let address = data.sp();
memory.write_byte(address, data.L);
let _address = data.sp();
memory.contend_write_no_mreq_loop(_address, 1, 2);
data.L = byte_temp_l;
data.H = byte_temp_h;
}
pub fn instr__CALL_PO_NNNN(
data: &mut Z80Data,
memory: &mut Memory,
ports: &mut Ports,
hook: Rc<RefCell<dyn FuncHook>>,
) {
if (data.F & FLAG_P) == 0 {
call(data, memory, ports, hook);
} else {
let _address = data.pc();
memory.contend_read(_address, 3);
let pc = data.pc();
memory.contend_read(pc + 1, 3);
data.inc_pc(2);
}
}
fn_instr_push_r16!(instr__PUSH_HL, L, H);
pub fn instr__AND_NN(data: &mut Z80Data, memory: &mut Memory) {
let address = data.pc();
let byte_temp: u8 = memory.read_byte(address);
data.inc_pc(1);
and(data, byte_temp);
}
pub fn instr__RST_20(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq(_address, 1);
rst(data, memory, 0x20);
}
pub fn instr__RET_PE(data: &mut Z80Data, memory: &mut Memory, hook: Rc<RefCell<dyn FuncHook>>) {
let _address = data.ir();
memory.contend_read_no_mreq(_address, 1);
if (data.F & FLAG_P) != 0 {
ret(data, memory, hook);
}
}
pub fn instr__JP_HL(
data: &mut Z80Data,
memory: &mut Memory,
ports: &mut Ports,
hook: Rc<RefCell<dyn FuncHook>>,
) {
jp_hl(data, memory, ports, hook);
}
pub fn instr__JP_PE_NNNN(data: &mut Z80Data, memory: &mut Memory) {
if (data.F & FLAG_P) != 0 {
jp(data, memory);
} else {
let _address = data.pc();
memory.contend_read(_address, 3);
let pc = data.pc();
memory.contend_read(pc + 1, 3);
data.inc_pc(2);
}
}
pub fn instr__EX_DE_HL(data: &mut Z80Data) {
let word_temp: u16 = data.de();
data.set_de(data.hl());
data.set_hl(word_temp);
}
pub fn instr__CALL_PE_NNNN(
data: &mut Z80Data,
memory: &mut Memory,
ports: &mut Ports,
hook: Rc<RefCell<dyn FuncHook>>,
) {
if (data.F & FLAG_P) != 0 {
call(data, memory, ports, hook);
} else {
let _address = data.pc();
memory.contend_read(_address, 3);
let pc = data.pc();
memory.contend_read(pc + 1, 3);
data.inc_pc(2);
}
}
pub fn instr__SHIFT_ED(_data: &mut Z80Data, _memory: &mut Memory) {}
pub fn instr__XOR_A_NN(data: &mut Z80Data, memory: &mut Memory) {
let address = data.pc();
let byte_temp: u8 = memory.read_byte(address);
data.inc_pc(1);
xor(data, byte_temp);
}
pub fn instr__RST_28(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq(_address, 1);
rst(data, memory, 0x28);
}
pub fn instr__RET_P(data: &mut Z80Data, memory: &mut Memory, hook: Rc<RefCell<dyn FuncHook>>) {
let _address = data.ir();
memory.contend_read_no_mreq(_address, 1);
if (data.F & FLAG_S) == 0 {
ret(data, memory, hook);
}
}
fn_instr_pop_r16!(instr__POP_AF, F, A);
pub fn instr__JP_P_NNNN(data: &mut Z80Data, memory: &mut Memory) {
if (data.F & FLAG_S) == 0 {
jp(data, memory);
} else {
let _address = data.pc();
memory.contend_read(_address, 3);
let pc = data.pc();
memory.contend_read(pc + 1, 3);
data.inc_pc(2);
}
}
pub fn instr__DI(data: &mut Z80Data) {
(data.IFF1, data.IFF2) = (0, 0);
}
pub fn instr__CALL_P_NNNN(
data: &mut Z80Data,
memory: &mut Memory,
ports: &mut Ports,
hook: Rc<RefCell<dyn FuncHook>>,
) {
if (data.F & FLAG_S) == 0 {
call(data, memory, ports, hook);
} else {
let _address = data.pc();
memory.contend_read(_address, 3);
let pc = data.pc();
memory.contend_read(pc + 1, 3);
data.inc_pc(2);
}
}
fn_instr_push_r16!(instr__PUSH_AF, F, A);
pub fn instr__OR_NN(data: &mut Z80Data, memory: &mut Memory) {
let address = data.pc();
let byte_temp: u8 = memory.read_byte(address);
data.inc_pc(1);
or(data, byte_temp);
}
pub fn instr__RST_30(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq(_address, 1);
rst(data, memory, 0x30);
}
pub fn instr__RET_M(data: &mut Z80Data, memory: &mut Memory, hook: Rc<RefCell<dyn FuncHook>>) {
let _address = data.ir();
memory.contend_read_no_mreq(_address, 1);
if (data.F & FLAG_S) != 0 {
ret(data, memory, hook);
}
}
pub fn instr__LD_SP_HL(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq_loop(_address, 1, 2);
data.set_sp(data.hl());
}
pub fn instr__JP_M_NNNN(data: &mut Z80Data, memory: &mut Memory) {
if (data.F & FLAG_S) != 0 {
jp(data, memory);
} else {
let _address = data.pc();
memory.contend_read(_address, 3);
let pc = data.pc();
memory.contend_read(pc + 1, 3);
data.inc_pc(2);
}
}
pub fn instr__EI(data: &mut Z80Data) {
(data.IFF1, data.IFF2) = (1, 1);
data.interrupts_enabled_at = data.t_states;
}
pub fn instr__CALL_M_NNNN(
data: &mut Z80Data,
memory: &mut Memory,
ports: &mut Ports,
hook: Rc<RefCell<dyn FuncHook>>,
) {
if (data.F & FLAG_S) != 0 {
call(data, memory, ports, hook)
} else {
let _address = data.pc();
memory.contend_read(_address, 3);
let pc = data.pc();
memory.contend_read(pc + 1, 3);
data.inc_pc(2);
}
}
pub fn instr__SHIFT_FD(_data: &mut Z80Data, _memory: &mut Memory) {}
pub fn instr__CP_NN(data: &mut Z80Data, memory: &mut Memory) {
let address = data.pc();
let byte_temp: u8 = memory.read_byte(address);
data.inc_pc(1);
cp(data, byte_temp);
}
pub fn instr__RST_38(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq(_address, 1);
rst(data, memory, 0x38);
}
pub fn instrCB__RLC_B(data: &mut Z80Data) {
data.B = rlc(data, data.B);
}
pub fn instrCB__RLC_C(data: &mut Z80Data) {
data.C = rlc(data, data.C);
}
pub fn instrCB__RLC_D(data: &mut Z80Data) {
data.D = rlc(data, data.D);
}
pub fn instrCB__RLC_E(data: &mut Z80Data) {
data.E = rlc(data, data.E);
}
pub fn instrCB__RLC_H(data: &mut Z80Data) {
data.H = rlc(data, data.H);
}
pub fn instrCB__RLC_L(data: &mut Z80Data) {
data.L = rlc(data, data.L);
}
pub fn instrCB__RLC_iHL(data: &mut Z80Data, memory: &mut Memory) {
let mut byte_temp: u8 = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
byte_temp = rlc(data, byte_temp);
memory.write_byte(data.hl(), byte_temp);
}
pub fn instrCB__RLC_A(data: &mut Z80Data) {
data.A = rlc(data, data.A);
}
pub fn instrCB__RRC_B(data: &mut Z80Data) {
data.B = rrc(data, data.B);
}
pub fn instrCB__RRC_C(data: &mut Z80Data) {
data.C = rrc(data, data.C);
}
pub fn instrCB__RRC_D(data: &mut Z80Data) {
data.D = rrc(data, data.D);
}
pub fn instrCB__RRC_E(data: &mut Z80Data) {
data.E = rrc(data, data.E);
}
pub fn instrCB__RRC_H(data: &mut Z80Data) {
data.H = rrc(data, data.H);
}
pub fn instrCB__RRC_L(data: &mut Z80Data) {
data.L = rrc(data, data.L);
}
pub fn instrCB__RRC_iHL(data: &mut Z80Data, memory: &mut Memory) {
let mut byte_temp: u8 = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
byte_temp = rrc(data, byte_temp);
memory.write_byte(data.hl(), byte_temp);
}
pub fn instrCB__RRC_A(data: &mut Z80Data) {
data.A = rrc(data, data.A);
}
pub fn instrCB__RL_B(data: &mut Z80Data) {
data.B = rl(data, data.B);
}
pub fn instrCB__RL_C(data: &mut Z80Data) {
data.C = rl(data, data.C);
}
pub fn instrCB__RL_D(data: &mut Z80Data) {
data.D = rl(data, data.D);
}
pub fn instrCB__RL_E(data: &mut Z80Data) {
data.E = rl(data, data.E);
}
pub fn instrCB__RL_H(data: &mut Z80Data) {
data.H = rl(data, data.H);
}
pub fn instrCB__RL_L(data: &mut Z80Data) {
data.L = rl(data, data.L);
}
pub fn instrCB__RL_iHL(data: &mut Z80Data, memory: &mut Memory) {
let mut byte_temp: u8 = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
byte_temp = rl(data, byte_temp);
memory.write_byte(data.hl(), byte_temp);
}
pub fn instrCB__RL_A(data: &mut Z80Data) {
data.A = rl(data, data.A);
}
pub fn instrCB__RR_B(data: &mut Z80Data) {
data.B = rr(data, data.B);
}
pub fn instrCB__RR_C(data: &mut Z80Data) {
data.C = rr(data, data.C);
}
pub fn instrCB__RR_D(data: &mut Z80Data) {
data.D = rr(data, data.D);
}
pub fn instrCB__RR_E(data: &mut Z80Data) {
data.E = rr(data, data.E);
}
pub fn instrCB__RR_H(data: &mut Z80Data) {
data.H = rr(data, data.H);
}
pub fn instrCB__RR_L(data: &mut Z80Data) {
data.L = rr(data, data.L);
}
pub fn instrCB__RR_iHL(data: &mut Z80Data, memory: &mut Memory) {
let mut byte_temp: u8 = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
byte_temp = rr(data, byte_temp);
memory.write_byte(data.hl(), byte_temp);
}
pub fn instrCB__RR_A(data: &mut Z80Data) {
data.A = rr(data, data.A);
}
pub fn instrCB__SLA_B(data: &mut Z80Data) {
data.B = sla(data, data.B);
}
pub fn instrCB__SLA_C(data: &mut Z80Data) {
data.C = sla(data, data.C);
}
pub fn instrCB__SLA_D(data: &mut Z80Data) {
data.D = sla(data, data.D);
}
pub fn instrCB__SLA_E(data: &mut Z80Data) {
data.E = sla(data, data.E);
}
pub fn instrCB__SLA_H(data: &mut Z80Data) {
data.H = sla(data, data.H);
}
pub fn instrCB__SLA_L(data: &mut Z80Data) {
data.L = sla(data, data.L);
}
pub fn instrCB__SLA_iHL(data: &mut Z80Data, memory: &mut Memory) {
let mut byte_temp: u8 = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
byte_temp = sla(data, byte_temp);
memory.write_byte(data.hl(), byte_temp);
}
pub fn instrCB__SLA_A(data: &mut Z80Data) {
data.A = sla(data, data.A);
}
pub fn instrCB__SRA_B(data: &mut Z80Data) {
data.B = sra(data, data.B);
}
pub fn instrCB__SRA_C(data: &mut Z80Data) {
data.C = sra(data, data.C);
}
pub fn instrCB__SRA_D(data: &mut Z80Data) {
data.D = sra(data, data.D);
}
pub fn instrCB__SRA_E(data: &mut Z80Data) {
data.E = sra(data, data.E);
}
pub fn instrCB__SRA_H(data: &mut Z80Data) {
data.H = sra(data, data.H);
}
pub fn instrCB__SRA_L(data: &mut Z80Data) {
data.L = sra(data, data.L);
}
pub fn instrCB__SRA_iHL(data: &mut Z80Data, memory: &mut Memory) {
let mut byte_temp: u8 = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
byte_temp = sra(data, byte_temp);
memory.write_byte(data.hl(), byte_temp);
}
pub fn instrCB__SRA_A(data: &mut Z80Data) {
data.A = sra(data, data.A);
}
pub fn instrCB__SLL_B(data: &mut Z80Data) {
data.B = sll(data, data.B);
}
pub fn instrCB__SLL_C(data: &mut Z80Data) {
data.C = sll(data, data.C);
}
pub fn instrCB__SLL_D(data: &mut Z80Data) {
data.D = sll(data, data.D);
}
pub fn instrCB__SLL_E(data: &mut Z80Data) {
data.E = sll(data, data.E);
}
pub fn instrCB__SLL_H(data: &mut Z80Data) {
data.H = sll(data, data.H);
}
pub fn instrCB__SLL_L(data: &mut Z80Data) {
data.L = sll(data, data.L);
}
pub fn instrCB__SLL_iHL(data: &mut Z80Data, memory: &mut Memory) {
let mut byte_temp: u8 = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
byte_temp = sll(data, byte_temp);
memory.write_byte(data.hl(), byte_temp);
}
pub fn instrCB__SLL_A(data: &mut Z80Data) {
data.A = sll(data, data.A);
}
pub fn instrCB__SRL_B(data: &mut Z80Data) {
data.B = srl(data, data.B);
}
pub fn instrCB__SRL_C(data: &mut Z80Data) {
data.C = srl(data, data.C);
}
pub fn instrCB__SRL_D(data: &mut Z80Data) {
data.D = srl(data, data.D);
}
pub fn instrCB__SRL_E(data: &mut Z80Data) {
data.E = srl(data, data.E);
}
pub fn instrCB__SRL_H(data: &mut Z80Data) {
data.H = srl(data, data.H);
}
pub fn instrCB__SRL_L(data: &mut Z80Data) {
data.L = srl(data, data.L);
}
pub fn instrCB__SRL_iHL(data: &mut Z80Data, memory: &mut Memory) {
let mut byte_temp: u8 = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
byte_temp = srl(data, byte_temp);
memory.write_byte(data.hl(), byte_temp);
}
pub fn instrCB__SRL_A(data: &mut Z80Data) {
data.A = srl(data, data.A);
}
pub fn instrCB__BIT_0_B(data: &mut Z80Data) {
bit(data, 0, data.B);
}
pub fn instrCB__BIT_0_C(data: &mut Z80Data) {
bit(data, 0, data.C);
}
pub fn instrCB__BIT_0_D(data: &mut Z80Data) {
bit(data, 0, data.D);
}
pub fn instrCB__BIT_0_E(data: &mut Z80Data) {
bit(data, 0, data.E);
}
pub fn instrCB__BIT_0_H(data: &mut Z80Data) {
bit(data, 0, data.H);
}
pub fn instrCB__BIT_0_L(data: &mut Z80Data) {
bit(data, 0, data.L);
}
pub fn instrCB__BIT_0_iHL(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
bit(data, 0, byte_temp)
}
pub fn instrCB__BIT_0_A(data: &mut Z80Data) {
bit(data, 0, data.A)
}
pub fn instrCB__BIT_1_B(data: &mut Z80Data) {
bit(data, 1, data.B)
}
pub fn instrCB__BIT_1_C(data: &mut Z80Data) {
bit(data, 1, data.C)
}
pub fn instrCB__BIT_1_D(data: &mut Z80Data) {
bit(data, 1, data.D)
}
pub fn instrCB__BIT_1_E(data: &mut Z80Data) {
bit(data, 1, data.E)
}
pub fn instrCB__BIT_1_H(data: &mut Z80Data) {
bit(data, 1, data.H)
}
pub fn instrCB__BIT_1_L(data: &mut Z80Data) {
bit(data, 1, data.L)
}
pub fn instrCB__BIT_1_iHL(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
bit(data, 1, byte_temp);
}
pub fn instrCB__BIT_1_A(data: &mut Z80Data) {
bit(data, 1, data.A);
}
pub fn instrCB__BIT_2_B(data: &mut Z80Data) {
bit(data, 2, data.B);
}
pub fn instrCB__BIT_2_C(data: &mut Z80Data) {
bit(data, 2, data.C);
}
pub fn instrCB__BIT_2_D(data: &mut Z80Data) {
bit(data, 2, data.D);
}
pub fn instrCB__BIT_2_E(data: &mut Z80Data) {
bit(data, 2, data.E);
}
pub fn instrCB__BIT_2_H(data: &mut Z80Data) {
bit(data, 2, data.H);
}
pub fn instrCB__BIT_2_L(data: &mut Z80Data) {
bit(data, 2, data.L);
}
pub fn instrCB__BIT_2_iHL(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
bit(data, 2, byte_temp);
}
pub fn instrCB__BIT_2_A(data: &mut Z80Data) {
bit(data, 2, data.A);
}
pub fn instrCB__BIT_3_B(data: &mut Z80Data) {
bit(data, 3, data.B);
}
pub fn instrCB__BIT_3_C(data: &mut Z80Data) {
bit(data, 3, data.C);
}
pub fn instrCB__BIT_3_D(data: &mut Z80Data) {
bit(data, 3, data.D)
}
pub fn instrCB__BIT_3_E(data: &mut Z80Data) {
bit(data, 3, data.E)
}
pub fn instrCB__BIT_3_H(data: &mut Z80Data) {
bit(data, 3, data.H)
}
pub fn instrCB__BIT_3_L(data: &mut Z80Data) {
bit(data, 3, data.L)
}
pub fn instrCB__BIT_3_iHL(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
bit(data, 3, byte_temp);
}
pub fn instrCB__BIT_3_A(data: &mut Z80Data) {
bit(data, 3, data.A);
}
pub fn instrCB__BIT_4_B(data: &mut Z80Data) {
bit(data, 4, data.B);
}
pub fn instrCB__BIT_4_C(data: &mut Z80Data) {
bit(data, 4, data.C);
}
pub fn instrCB__BIT_4_D(data: &mut Z80Data) {
bit(data, 4, data.D);
}
pub fn instrCB__BIT_4_E(data: &mut Z80Data) {
bit(data, 4, data.E);
}
pub fn instrCB__BIT_4_H(data: &mut Z80Data) {
bit(data, 4, data.H);
}
pub fn instrCB__BIT_4_L(data: &mut Z80Data) {
bit(data, 4, data.L);
}
pub fn instrCB__BIT_4_iHL(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
bit(data, 4, byte_temp);
}
pub fn instrCB__BIT_4_A(data: &mut Z80Data) {
bit(data, 4, data.A);
}
pub fn instrCB__BIT_5_B(data: &mut Z80Data) {
bit(data, 5, data.B);
}
pub fn instrCB__BIT_5_C(data: &mut Z80Data) {
bit(data, 5, data.C);
}
pub fn instrCB__BIT_5_D(data: &mut Z80Data) {
bit(data, 5, data.D);
}
pub fn instrCB__BIT_5_E(data: &mut Z80Data) {
bit(data, 5, data.E);
}
pub fn instrCB__BIT_5_H(data: &mut Z80Data) {
bit(data, 5, data.H);
}
pub fn instrCB__BIT_5_L(data: &mut Z80Data) {
bit(data, 5, data.L);
}
pub fn instrCB__BIT_5_iHL(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
bit(data, 5, byte_temp);
}
pub fn instrCB__BIT_5_A(data: &mut Z80Data) {
bit(data, 5, data.A);
}
pub fn instrCB__BIT_6_B(data: &mut Z80Data) {
bit(data, 6, data.B);
}
pub fn instrCB__BIT_6_C(data: &mut Z80Data) {
bit(data, 6, data.C);
}
pub fn instrCB__BIT_6_D(data: &mut Z80Data) {
bit(data, 6, data.D);
}
pub fn instrCB__BIT_6_E(data: &mut Z80Data) {
bit(data, 6, data.E);
}
pub fn instrCB__BIT_6_H(data: &mut Z80Data) {
bit(data, 6, data.H)
}
pub fn instrCB__BIT_6_L(data: &mut Z80Data) {
bit(data, 6, data.L)
}
pub fn instrCB__BIT_6_iHL(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
bit(data, 6, byte_temp);
}
pub fn instrCB__BIT_6_A(data: &mut Z80Data) {
bit(data, 6, data.A);
}
pub fn instrCB__BIT_7_B(data: &mut Z80Data) {
bit(data, 7, data.B);
}
pub fn instrCB__BIT_7_C(data: &mut Z80Data) {
bit(data, 7, data.C);
}
pub fn instrCB__BIT_7_D(data: &mut Z80Data) {
bit(data, 7, data.D);
}
pub fn instrCB__BIT_7_E(data: &mut Z80Data) {
bit(data, 7, data.E);
}
pub fn instrCB__BIT_7_H(data: &mut Z80Data) {
bit(data, 7, data.H);
}
pub fn instrCB__BIT_7_L(data: &mut Z80Data) {
bit(data, 7, data.L);
}
pub fn instrCB__BIT_7_iHL(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
bit(data, 7, byte_temp);
}
pub fn instrCB__BIT_7_A(data: &mut Z80Data) {
bit(data, 7, data.A);
}
pub fn instrCB__RES_0_B(data: &mut Z80Data) {
data.B &= 0xfe;
}
pub fn instrCB__RES_0_C(data: &mut Z80Data) {
data.C &= 0xfe;
}
pub fn instrCB__RES_0_D(data: &mut Z80Data) {
data.D &= 0xfe;
}
pub fn instrCB__RES_0_E(data: &mut Z80Data) {
data.E &= 0xfe;
}
pub fn instrCB__RES_0_H(data: &mut Z80Data) {
data.H &= 0xfe;
}
pub fn instrCB__RES_0_L(data: &mut Z80Data) {
data.L &= 0xfe;
}
pub fn instrCB__RES_0_iHL(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp: u8 = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
memory.write_byte(data.hl(), byte_temp & 0xfe);
}
pub fn instrCB__RES_0_A(data: &mut Z80Data) {
data.A &= 0xfe;
}
pub fn instrCB__RES_1_B(data: &mut Z80Data) {
data.B &= 0xfd;
}
pub fn instrCB__RES_1_C(data: &mut Z80Data) {
data.C &= 0xfd;
}
pub fn instrCB__RES_1_D(data: &mut Z80Data) {
data.D &= 0xfd;
}
pub fn instrCB__RES_1_E(data: &mut Z80Data) {
data.E &= 0xfd;
}
pub fn instrCB__RES_1_H(data: &mut Z80Data) {
data.H &= 0xfd;
}
pub fn instrCB__RES_1_L(data: &mut Z80Data) {
data.L &= 0xfd;
}
pub fn instrCB__RES_1_iHL(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp: u8 = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
memory.write_byte(data.hl(), byte_temp & 0xfd);
}
pub fn instrCB__RES_1_A(data: &mut Z80Data) {
data.A &= 0xfd;
}
pub fn instrCB__RES_2_B(data: &mut Z80Data) {
data.B &= 0xfb;
}
pub fn instrCB__RES_2_C(data: &mut Z80Data) {
data.C &= 0xfb;
}
pub fn instrCB__RES_2_D(data: &mut Z80Data) {
data.D &= 0xfb;
}
pub fn instrCB__RES_2_E(data: &mut Z80Data) {
data.E &= 0xfb;
}
pub fn instrCB__RES_2_H(data: &mut Z80Data) {
data.H &= 0xfb;
}
pub fn instrCB__RES_2_L(data: &mut Z80Data) {
data.L &= 0xfb;
}
pub fn instrCB__RES_2_iHL(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp: u8 = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
memory.write_byte(data.hl(), byte_temp & 0xfb)
}
pub fn instrCB__RES_2_A(data: &mut Z80Data) {
data.A &= 0xfb
}
pub fn instrCB__RES_3_B(data: &mut Z80Data) {
data.B &= 0xf7
}
pub fn instrCB__RES_3_C(data: &mut Z80Data) {
data.C &= 0xf7
}
pub fn instrCB__RES_3_D(data: &mut Z80Data) {
data.D &= 0xf7
}
pub fn instrCB__RES_3_E(data: &mut Z80Data) {
data.E &= 0xf7
}
pub fn instrCB__RES_3_H(data: &mut Z80Data) {
data.H &= 0xf7
}
pub fn instrCB__RES_3_L(data: &mut Z80Data) {
data.L &= 0xf7
}
pub fn instrCB__RES_3_iHL(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp: u8 = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
memory.write_byte(data.hl(), byte_temp & 0xf7);
}
pub fn instrCB__RES_3_A(data: &mut Z80Data) {
data.A &= 0xf7;
}
pub fn instrCB__RES_4_B(data: &mut Z80Data) {
data.B &= 0xef;
}
pub fn instrCB__RES_4_C(data: &mut Z80Data) {
data.C &= 0xef;
}
pub fn instrCB__RES_4_D(data: &mut Z80Data) {
data.D &= 0xef;
}
pub fn instrCB__RES_4_E(data: &mut Z80Data) {
data.E &= 0xef;
}
pub fn instrCB__RES_4_H(data: &mut Z80Data) {
data.H &= 0xef;
}
pub fn instrCB__RES_4_L(data: &mut Z80Data) {
data.L &= 0xef;
}
pub fn instrCB__RES_4_iHL(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp: u8 = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
memory.write_byte(data.hl(), byte_temp & 0xef);
}
pub fn instrCB__RES_4_A(data: &mut Z80Data) {
data.A &= 0xef;
}
pub fn instrCB__RES_5_B(data: &mut Z80Data) {
data.B &= 0xdf;
}
pub fn instrCB__RES_5_C(data: &mut Z80Data) {
data.C &= 0xdf;
}
pub fn instrCB__RES_5_D(data: &mut Z80Data) {
data.D &= 0xdf;
}
pub fn instrCB__RES_5_E(data: &mut Z80Data) {
data.E &= 0xdf;
}
pub fn instrCB__RES_5_H(data: &mut Z80Data) {
data.H &= 0xdf;
}
pub fn instrCB__RES_5_L(data: &mut Z80Data) {
data.L &= 0xdf;
}
pub fn instrCB__RES_5_iHL(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp: u8 = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
memory.write_byte(data.hl(), byte_temp & 0xdf);
}
pub fn instrCB__RES_5_A(data: &mut Z80Data) {
data.A &= 0xdf;
}
pub fn instrCB__RES_6_B(data: &mut Z80Data) {
data.B &= 0xbf
}
pub fn instrCB__RES_6_C(data: &mut Z80Data) {
data.C &= 0xbf
}
pub fn instrCB__RES_6_D(data: &mut Z80Data) {
data.D &= 0xbf
}
pub fn instrCB__RES_6_E(data: &mut Z80Data) {
data.E &= 0xbf
}
pub fn instrCB__RES_6_H(data: &mut Z80Data) {
data.H &= 0xbf
}
pub fn instrCB__RES_6_L(data: &mut Z80Data) {
data.L &= 0xbf
}
pub fn instrCB__RES_6_iHL(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp: u8 = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
memory.write_byte(data.hl(), byte_temp & 0xbf);
}
pub fn instrCB__RES_6_A(data: &mut Z80Data) {
data.A &= 0xbf;
}
pub fn instrCB__RES_7_B(data: &mut Z80Data) {
data.B &= 0x7f;
}
pub fn instrCB__RES_7_C(data: &mut Z80Data) {
data.C &= 0x7f;
}
pub fn instrCB__RES_7_D(data: &mut Z80Data) {
data.D &= 0x7f;
}
pub fn instrCB__RES_7_E(data: &mut Z80Data) {
data.E &= 0x7f;
}
pub fn instrCB__RES_7_H(data: &mut Z80Data) {
data.H &= 0x7f;
}
pub fn instrCB__RES_7_L(data: &mut Z80Data) {
data.L &= 0x7f;
}
pub fn instrCB__RES_7_iHL(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp: u8 = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
memory.write_byte(data.hl(), byte_temp & 0x7f);
}
pub fn instrCB__RES_7_A(data: &mut Z80Data) {
data.A &= 0x7f;
}
pub fn instrCB__SET_0_B(data: &mut Z80Data) {
data.B |= 0x01;
}
pub fn instrCB__SET_0_C(data: &mut Z80Data) {
data.C |= 0x01;
}
pub fn instrCB__SET_0_D(data: &mut Z80Data) {
data.D |= 0x01;
}
pub fn instrCB__SET_0_E(data: &mut Z80Data) {
data.E |= 0x01;
}
pub fn instrCB__SET_0_H(data: &mut Z80Data) {
data.H |= 0x01;
}
pub fn instrCB__SET_0_L(data: &mut Z80Data) {
data.L |= 0x01;
}
pub fn instrCB__SET_0_iHL(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp: u8 = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
memory.write_byte(data.hl(), byte_temp | 0x01);
}
pub fn instrCB__SET_0_A(data: &mut Z80Data) {
data.A |= 0x01;
}
pub fn instrCB__SET_1_B(data: &mut Z80Data) {
data.B |= 0x02;
}
pub fn instrCB__SET_1_C(data: &mut Z80Data) {
data.C |= 0x02;
}
pub fn instrCB__SET_1_D(data: &mut Z80Data) {
data.D |= 0x02;
}
pub fn instrCB__SET_1_E(data: &mut Z80Data) {
data.E |= 0x02;
}
pub fn instrCB__SET_1_H(data: &mut Z80Data) {
data.H |= 0x02;
}
pub fn instrCB__SET_1_L(data: &mut Z80Data) {
data.L |= 0x02;
}
pub fn instrCB__SET_1_iHL(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp: u8 = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
memory.write_byte(data.hl(), byte_temp | 0x02)
}
pub fn instrCB__SET_1_A(data: &mut Z80Data) {
data.A |= 0x02;
}
pub fn instrCB__SET_2_B(data: &mut Z80Data) {
data.B |= 0x04;
}
pub fn instrCB__SET_2_C(data: &mut Z80Data) {
data.C |= 0x04;
}
pub fn instrCB__SET_2_D(data: &mut Z80Data) {
data.D |= 0x04;
}
pub fn instrCB__SET_2_E(data: &mut Z80Data) {
data.E |= 0x04;
}
pub fn instrCB__SET_2_H(data: &mut Z80Data) {
data.H |= 0x04;
}
pub fn instrCB__SET_2_L(data: &mut Z80Data) {
data.L |= 0x04;
}
pub fn instrCB__SET_2_iHL(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp: u8 = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
memory.write_byte(data.hl(), byte_temp | 0x04)
}
pub fn instrCB__SET_2_A(data: &mut Z80Data) {
data.A |= 0x04;
}
pub fn instrCB__SET_3_B(data: &mut Z80Data) {
data.B |= 0x08;
}
pub fn instrCB__SET_3_C(data: &mut Z80Data) {
data.C |= 0x08;
}
pub fn instrCB__SET_3_D(data: &mut Z80Data) {
data.D |= 0x08;
}
pub fn instrCB__SET_3_E(data: &mut Z80Data) {
data.E |= 0x08;
}
pub fn instrCB__SET_3_H(data: &mut Z80Data) {
data.H |= 0x08;
}
pub fn instrCB__SET_3_L(data: &mut Z80Data) {
data.L |= 0x08;
}
pub fn instrCB__SET_3_iHL(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp: u8 = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
memory.write_byte(data.hl(), byte_temp | 0x08)
}
pub fn instrCB__SET_3_A(data: &mut Z80Data) {
data.A |= 0x08;
}
pub fn instrCB__SET_4_B(data: &mut Z80Data) {
data.B |= 0x10;
}
pub fn instrCB__SET_4_C(data: &mut Z80Data) {
data.C |= 0x10;
}
pub fn instrCB__SET_4_D(data: &mut Z80Data) {
data.D |= 0x10;
}
pub fn instrCB__SET_4_E(data: &mut Z80Data) {
data.E |= 0x10;
}
pub fn instrCB__SET_4_H(data: &mut Z80Data) {
data.H |= 0x10;
}
pub fn instrCB__SET_4_L(data: &mut Z80Data) {
data.L |= 0x10;
}
pub fn instrCB__SET_4_iHL(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp: u8 = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
memory.write_byte(data.hl(), byte_temp | 0x10)
}
pub fn instrCB__SET_4_A(data: &mut Z80Data) {
data.A |= 0x10;
}
pub fn instrCB__SET_5_B(data: &mut Z80Data) {
data.B |= 0x20;
}
pub fn instrCB__SET_5_C(data: &mut Z80Data) {
data.C |= 0x20;
}
pub fn instrCB__SET_5_D(data: &mut Z80Data) {
data.D |= 0x20;
}
pub fn instrCB__SET_5_E(data: &mut Z80Data) {
data.E |= 0x20;
}
pub fn instrCB__SET_5_H(data: &mut Z80Data) {
data.H |= 0x20;
}
pub fn instrCB__SET_5_L(data: &mut Z80Data) {
data.L |= 0x20;
}
pub fn instrCB__SET_5_iHL(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp: u8 = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
memory.write_byte(data.hl(), byte_temp | 0x20)
}
pub fn instrCB__SET_5_A(data: &mut Z80Data) {
data.A |= 0x20;
}
pub fn instrCB__SET_6_B(data: &mut Z80Data) {
data.B |= 0x40;
}
pub fn instrCB__SET_6_C(data: &mut Z80Data) {
data.C |= 0x40;
}
pub fn instrCB__SET_6_D(data: &mut Z80Data) {
data.D |= 0x40;
}
pub fn instrCB__SET_6_E(data: &mut Z80Data) {
data.E |= 0x40;
}
pub fn instrCB__SET_6_H(data: &mut Z80Data) {
data.H |= 0x40;
}
pub fn instrCB__SET_6_L(data: &mut Z80Data) {
data.L |= 0x40;
}
pub fn instrCB__SET_6_iHL(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp: u8 = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
memory.write_byte(data.hl(), byte_temp | 0x40)
}
pub fn instrCB__SET_6_A(data: &mut Z80Data) {
data.A |= 0x40;
}
pub fn instrCB__SET_7_B(data: &mut Z80Data) {
data.B |= 0x80;
}
pub fn instrCB__SET_7_C(data: &mut Z80Data) {
data.C |= 0x80;
}
pub fn instrCB__SET_7_D(data: &mut Z80Data) {
data.D |= 0x80;
}
pub fn instrCB__SET_7_E(data: &mut Z80Data) {
data.E |= 0x80;
}
pub fn instrCB__SET_7_H(data: &mut Z80Data) {
data.H |= 0x80;
}
pub fn instrCB__SET_7_L(data: &mut Z80Data) {
data.L |= 0x80;
}
pub fn instrCB__SET_7_iHL(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp: u8 = memory.read_byte(data.hl());
memory.contend_read_no_mreq(data.hl(), 1);
memory.write_byte(data.hl(), byte_temp | 0x80)
}
pub fn instrCB__SET_7_A(data: &mut Z80Data) {
data.A |= 0x80;
}
pub fn instrED__IN_B_iC(data: &mut Z80Data, ports: &mut Ports) {
let bc = data.bc();
data.B = in_u8_ex(data, ports, bc);
}
pub fn instrED__OUT_iC_B(data: &mut Z80Data, ports: &mut Ports) {
ports.write_port(data.bc(), data.B);
}
pub fn instrED__SBC_HL_BC(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq_loop(_address, 1, 7);
sbc16(data, data.bc());
}
fn_instr_ld_i_nnnn_r16!(instrED__LD_iNNNN_BC, C, B);
pub fn instrED__NEG(data: &mut Z80Data) {
let byte_temp = data.A;
data.A = 0;
sub(data, byte_temp);
}
pub fn instrED__RETN(data: &mut Z80Data, memory: &mut Memory, hook: Rc<RefCell<dyn FuncHook>>) {
data.IFF1 = data.IFF2;
ret(data, memory, hook);
}
pub fn instrED__IM_0(data: &mut Z80Data) {
data.IM = 0;
}
pub fn instrED__LD_I_A(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq(_address, 1);
data.I = data.A;
}
pub fn instrED__IN_C_iC(data: &mut Z80Data, ports: &mut Ports) {
data.C = in_u8_ex(data, ports, data.bc());
}
pub fn instrED__OUT_iC_C(data: &mut Z80Data, ports: &mut Ports) {
ports.write_port(data.bc(), data.C);
}
pub fn instrED__ADC_HL_BC(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq_loop(_address, 1, 7);
adc16(data, data.bc());
}
fn_instr_ld_hl_i_nnnn!(instrED__LD_BC_iNNNN, C, B);
pub fn instrED__LD_R_A(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq(_address, 1);
data.rzx_instructions_offset += (data.R as isize) - (data.A as isize);
(data.R, data.R7) = ((data.A as u16), data.A);
}
pub fn instrED__IN_D_iC(data: &mut Z80Data, ports: &mut Ports) {
data.D = in_u8_ex(data, ports, data.bc());
}
pub fn instrED__OUT_iC_D(data: &mut Z80Data, ports: &mut Ports) {
ports.write_port(data.bc(), data.D);
}
pub fn instrED__SBC_HL_DE(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq_loop(_address, 1, 7);
sbc16(data, data.de());
}
fn_instr_ld_i_nnnn_r16!(instrED__LD_iNNNN_DE, E, D);
pub fn instrED__IM_1(data: &mut Z80Data) {
data.IM = 1;
}
pub fn instrED__LD_A_I(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq(_address, 1);
data.A = data.I;
data.F = data.F & FLAG_C
| z80_tables::get().sz53_table[data.A as usize]
| tern_op_b(data.IFF2 != 0, FLAG_V, 0);
}
pub fn instrED__IN_E_iC(data: &mut Z80Data, ports: &mut Ports) {
let port = data.bc();
data.E = in_u8_ex(data, ports, port);
}
pub fn instrED__OUT_iC_E(data: &mut Z80Data, ports: &mut Ports) {
ports.write_port(data.bc(), data.E);
}
pub fn instrED__ADC_HL_DE(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq_loop(_address, 1, 7);
adc16(data, data.de());
}
fn_instr_ld_hl_i_nnnn!(instrED__LD_DE_iNNNN, E, D);
pub fn instrED__IM_2(data: &mut Z80Data) {
data.IM = 2;
}
pub fn instrED__LD_A_R(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq(_address, 1);
data.A = (data.R & 0x7f) as u8 | (data.R7 & 0x80);
data.F = data.F & FLAG_C
| z80_tables::get().sz53_table[data.A as usize]
| tern_op_b(data.IFF2 != 0, FLAG_V, 0);
}
pub fn instrED__IN_H_iC(data: &mut Z80Data, ports: &mut Ports) {
data.H = in_u8_ex(data, ports, data.bc());
}
pub fn instrED__OUT_iC_H(data: &mut Z80Data, ports: &mut Ports) {
ports.write_port(data.bc(), data.H);
}
pub fn instrED__SBC_HL_HL(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq_loop(_address, 1, 7);
sbc16(data, data.hl())
}
fn_instr_ld_i_nnnn_r16!(instrED__LD_iNNNN_HL, L, H);
pub fn instrED__RRD(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp: u8 = memory.read_byte(data.hl());
memory.contend_read_no_mreq_loop(data.hl(), 1, 4);
memory.write_byte(data.hl(), (data.A << 4) | (byte_temp >> 4));
data.A = data.A & 0xf0 | byte_temp & 0x0f;
data.F = data.F & FLAG_C | z80_tables::get().sz53p_table[data.A as usize];
}
pub fn instrED__IN_L_iC(data: &mut Z80Data, ports: &mut Ports) {
data.L = in_u8_ex(data, ports, data.bc());
}
pub fn instrED__OUT_iC_L(data: &mut Z80Data, ports: &mut Ports) {
ports.write_port(data.bc(), data.L);
}
pub fn instrED__ADC_HL_HL(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq_loop(_address, 1, 7);
adc16(data, data.hl());
}
fn_instr_ld_hl_i_nnnn!(instrED__LD_HL_iNNNN, L, H);
pub fn instrED__RLD(data: &mut Z80Data, memory: &mut Memory) {
let byte_temp: u8 = memory.read_byte(data.hl());
memory.contend_read_no_mreq_loop(data.hl(), 1, 4);
memory.write_byte(data.hl(), (byte_temp << 4) | (data.A & 0x0f));
data.A = (data.A & 0xf0) | (byte_temp >> 4);
data.F = data.F & FLAG_C | z80_tables::get().sz53p_table[data.A as usize];
}
pub fn instrED__IN_F_iC(data: &mut Z80Data, ports: &mut Ports) {
let _byte_temp: u8 = in_u8_ex(data, ports, data.bc());
}
pub fn instrED__OUT_iC_0(data: &mut Z80Data, ports: &mut Ports) {
ports.write_port(data.bc(), 0);
}
pub fn instrED__SBC_HL_SP(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq_loop(_address, 1, 7);
let value = data.sp();
sbc16(data, value);
}
pub fn instrED__LD_iNNNN_SP(data: &mut Z80Data, memory: &mut Memory) {
let (sph, spl) = split_word(data.sp);
ld16nnrr(data, memory, spl, sph);
}
pub fn instrED__IN_A_iC(data: &mut Z80Data, ports: &mut Ports) {
data.A = in_u8_ex(data, ports, data.bc());
}
pub fn instrED__OUT_iC_A(data: &mut Z80Data, ports: &mut Ports) {
ports.write_port(data.bc(), data.A);
}
pub fn instrED__ADC_HL_SP(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq_loop(_address, 1, 7);
let value = data.sp();
adc16(data, value);
}
pub fn instrED__LD_SP_iNNNN(data: &mut Z80Data, memory: &mut Memory) {
let (spl, sph) = ld16rrnn_ex(data, memory);
data.set_sp(join_bytes(sph, spl));
}
pub fn instrED__LDI(data: &mut Z80Data, memory: &mut Memory) {
let mut byte_temp: u8 = memory.read_byte(data.hl());
data.dec_bc();
memory.write_byte(data.de(), byte_temp);
memory.contend_write_no_mreq_loop(data.de(), 1, 2);
data.inc_de();
data.inc_hl();
byte_temp += data.A;
data.F = data.F & (FLAG_C | FLAG_Z | FLAG_S)
| tern_op_b(data.bc() != 0, FLAG_V, 0)
| byte_temp & FLAG_3
| tern_op_b((byte_temp & 0x02) != 0, FLAG_5, 0);
}
pub fn instrED__CPI(data: &mut Z80Data, memory: &mut Memory) {
let value: u8 = memory.read_byte(data.hl());
let mut byte_temp: u8 = data.A - value;
let lookup: u8 = ((data.A & 0x08) >> 3) | ((value & 0x08) >> 2) | ((byte_temp & 0x08) >> 1);
memory.contend_read_no_mreq_loop(data.hl(), 1, 5);
data.inc_hl();
data.dec_bc();
data.F = data.F & FLAG_C
| tern_op_b(data.bc() != 0, FLAG_V | FLAG_N, FLAG_N)
| HALF_CARRY_SUB_TABLE[lookup as usize]
| tern_op_b(byte_temp != 0, 0, FLAG_Z)
| byte_temp & FLAG_S;
if (data.F & FLAG_H) != 0 {
byte_temp -= 1;
}
data.F |= (byte_temp & FLAG_3) | tern_op_b((byte_temp & 0x02) != 0, FLAG_5, 0);
}
pub fn instrED__INI(data: &mut Z80Data, memory: &mut Memory, ports: &mut Ports) {
let _address = data.ir();
memory.contend_read_no_mreq(_address, 1);
let in_i_temp: u8 = ports.read_port(data.bc());
memory.write_byte(data.hl(), in_i_temp);
data.B = data.B.wrapping_sub(1);
data.inc_hl();
let in_i_temp2: u8 = in_i_temp.wrapping_add(data.C).wrapping_add(1);
data.F = tern_op_b((in_i_temp & 0x80) != 0, FLAG_N, 0)
| tern_op_b(in_i_temp2 < in_i_temp, FLAG_H | FLAG_C, 0)
| tern_op_b(
z80_tables::get().parity_table[((in_i_temp2 & 0x07) ^ data.B) as usize] != 0,
FLAG_P,
0,
)
| z80_tables::get().sz53_table[data.B as usize];
}
pub fn instrED__OUTI(data: &mut Z80Data, memory: &mut Memory, ports: &mut Ports) {
let _address = data.ir();
memory.contend_read_no_mreq(_address, 1);
let out_i_temp: u8 = memory.read_byte(data.hl());
data.B = data.B.wrapping_sub(1);
ports.write_port(data.bc(), out_i_temp);
data.inc_hl();
let out_i_temp2: u8 = out_i_temp.wrapping_add(data.L); data.F = tern_op_b((out_i_temp & 0x80) != 0, FLAG_N, 0)
| tern_op_b(out_i_temp2 < out_i_temp, FLAG_H | FLAG_C, 0)
| tern_op_b(
z80_tables::get().parity_table[((out_i_temp2 & 0x07) ^ data.B) as usize] != 0,
FLAG_P,
0,
)
| z80_tables::get().sz53_table[data.B as usize];
}
pub fn instrED__LDD(data: &mut Z80Data, memory: &mut Memory) {
let mut byte_temp: u8 = memory.read_byte(data.hl());
data.dec_bc();
memory.write_byte(data.de(), byte_temp);
memory.contend_write_no_mreq_loop(data.de(), 1, 2);
data.dec_de();
data.dec_hl();
byte_temp += data.A;
data.F = data.F & (FLAG_C | FLAG_Z | FLAG_S)
| tern_op_b(data.bc() != 0, FLAG_V, 0)
| byte_temp & FLAG_3
| tern_op_b((byte_temp & 0x02) != 0, FLAG_5, 0);
}
pub fn instrED__CPD(data: &mut Z80Data, memory: &mut Memory) {
let value: u8 = memory.read_byte(data.hl());
let mut byte_temp: u8 = data.A - value;
let lookup: u8 = ((data.A & 0x08) >> 3) | ((value & 0x08) >> 2) | ((byte_temp & 0x08) >> 1);
memory.contend_read_no_mreq_loop(data.hl(), 1, 5);
data.dec_hl();
data.dec_bc();
data.F = data.F & FLAG_C
| tern_op_b(data.bc() != 0, FLAG_V | FLAG_N, FLAG_N)
| HALF_CARRY_SUB_TABLE[lookup as usize]
| tern_op_b(byte_temp != 0, 0, FLAG_Z)
| byte_temp & FLAG_S;
if (data.F & FLAG_H) != 0 {
byte_temp -= 1;
}
data.F |= (byte_temp & FLAG_3) | tern_op_b((byte_temp & 0x02) != 0, FLAG_5, 0)
}
pub fn instrED__IND(data: &mut Z80Data, memory: &mut Memory, ports: &mut Ports) {
let _address = data.ir();
memory.contend_read_no_mreq(_address, 1);
let in_i_temp: u8 = ports.read_port(data.bc());
memory.write_byte(data.hl(), in_i_temp);
data.B = data.B.wrapping_sub(1);
data.dec_hl();
let in_i_temp2: u8 = in_i_temp + data.C - 1;
data.F = tern_op_b((in_i_temp & 0x80) != 0, FLAG_N, 0)
| tern_op_b(in_i_temp2 < in_i_temp, FLAG_H | FLAG_C, 0)
| tern_op_b(
z80_tables::get().parity_table[((in_i_temp2 & 0x07) ^ data.B) as usize] != 0,
FLAG_P,
0,
)
| z80_tables::get().sz53_table[data.B as usize]
}
pub fn instrED__OUTD(data: &mut Z80Data, memory: &mut Memory, ports: &mut Ports) {
let _address = data.ir();
memory.contend_read_no_mreq(_address, 1);
let out_i_temp: u8 = memory.read_byte(data.hl());
data.B = data.B.wrapping_sub(1);
ports.write_port(data.bc(), out_i_temp);
data.dec_hl();
let out_i_temp2: u8 = out_i_temp + data.L;
data.F = tern_op_b((out_i_temp & 0x80) != 0, FLAG_N, 0)
| tern_op_b(out_i_temp2 < out_i_temp, FLAG_H | FLAG_C, 0)
| tern_op_b(
z80_tables::get().parity_table[((out_i_temp2 & 0x07) ^ data.B) as usize] != 0,
FLAG_P,
0,
)
| z80_tables::get().sz53_table[data.B as usize];
}
pub fn instrED__LDIR(data: &mut Z80Data, memory: &mut Memory) {
let mut byte_temp: u8 = memory.read_byte(data.hl());
memory.write_byte(data.de(), byte_temp);
memory.contend_write_no_mreq_loop(data.de(), 1, 2);
data.dec_bc();
byte_temp = byte_temp.wrapping_add(data.A);
data.F = data.F & (FLAG_C | FLAG_Z | FLAG_S)
| tern_op_b(data.bc() != 0, FLAG_V, 0)
| byte_temp & FLAG_3
| tern_op_b(byte_temp & 0x02 != 0, FLAG_5, 0);
if data.bc() != 0 {
memory.contend_write_no_mreq_loop(data.de(), 1, 5);
data.dec_pc(2);
data.cycles += 23;
} else {
data.cycles += 18;
}
data.inc_hl();
data.inc_de();
}
pub fn instrED__CPIR(data: &mut Z80Data, memory: &mut Memory) {
let value: u8 = memory.read_byte(data.hl());
let mut byte_temp: u8 = data.A - value;
let lookup: u8 = ((data.A & 0x08) >> 3) | ((value & 0x08) >> 2) | ((byte_temp & 0x08) >> 1);
memory.contend_read_no_mreq_loop(data.hl(), 1, 5);
data.dec_bc();
data.F = data.F & FLAG_C
| tern_op_b(data.bc() != 0, FLAG_V | FLAG_N, FLAG_N)
| HALF_CARRY_SUB_TABLE[lookup as usize]
| tern_op_b(byte_temp != 0, 0, FLAG_Z)
| byte_temp & FLAG_S;
if data.F & FLAG_H != 0 {
byte_temp -= 1;
}
data.F |= (byte_temp & FLAG_3) | tern_op_b((byte_temp & 0x02) != 0, FLAG_5, 0);
if (data.F & (FLAG_V | FLAG_Z)) == FLAG_V {
memory.contend_read_no_mreq_loop(data.hl(), 1, 5);
data.dec_pc(2);
data.cycles += 18;
} else {
data.cycles += 23;
}
data.inc_hl();
}
pub fn instrED__INIR(data: &mut Z80Data, memory: &mut Memory, ports: &mut Ports) {
let _address = data.ir();
memory.contend_read_no_mreq(_address, 1);
let in_i_temp: u8 = ports.read_port(data.bc());
memory.write_byte(data.hl(), in_i_temp);
data.B = data.B.wrapping_sub(1);
let in_i_temp2: u8 = in_i_temp + data.C + 1;
data.F = tern_op_b(in_i_temp & 0x80 != 0, FLAG_N, 0)
| tern_op_b(in_i_temp2 < in_i_temp, FLAG_H | FLAG_C, 0)
| tern_op_b(
z80_tables::get().parity_table[((in_i_temp2 & 0x07) ^ data.B) as usize] != 0,
FLAG_P,
0,
)
| z80_tables::get().sz53_table[data.B as usize];
if data.B != 0 {
memory.contend_write_no_mreq_loop(data.hl(), 1, 5);
data.dec_pc(2);
data.cycles += 23;
} else {
data.cycles += 18;
}
data.inc_hl();
}
pub fn instrED__OTIR(data: &mut Z80Data, memory: &mut Memory, ports: &mut Ports) {
let _address = data.ir();
memory.contend_read_no_mreq(_address, 1);
let out_i_temp: u8 = memory.read_byte(data.hl());
data.B = data.B.wrapping_sub(1);
ports.write_port(data.bc(), out_i_temp);
data.inc_hl();
let out_i_temp2: u8 = out_i_temp.wrapping_add(data.L);
data.F = tern_op_b((out_i_temp & 0x80) != 0, FLAG_N, 0)
| tern_op_b(out_i_temp2 < out_i_temp, FLAG_H | FLAG_C, 0)
| tern_op_b(
z80_tables::get().parity_table[((out_i_temp2 & 0x07) ^ data.B) as usize] != 0,
FLAG_P,
0,
)
| z80_tables::get().sz53_table[data.B as usize];
if data.B != 0 {
memory.contend_read_no_mreq_loop(data.bc(), 1, 5);
data.dec_pc(2);
data.cycles += 23;
} else {
data.cycles += 18;
}
}
pub fn instrED__LDDR(data: &mut Z80Data, memory: &mut Memory) {
let mut byte_temp: u8 = memory.read_byte(data.hl());
memory.write_byte(data.de(), byte_temp);
memory.contend_write_no_mreq_loop(data.de(), 1, 2);
data.dec_bc();
byte_temp = byte_temp.wrapping_add(data.A);
data.F = data.F & (FLAG_C | FLAG_Z | FLAG_S)
| tern_op_b(data.bc() != 0, FLAG_V, 0)
| byte_temp & FLAG_3
| tern_op_b(byte_temp & 0x02 != 0, FLAG_5, 0);
if data.bc() != 0 {
memory.contend_write_no_mreq_loop(data.de(), 1, 5);
data.dec_pc(2);
data.cycles += 23;
} else {
data.cycles += 18;
}
data.dec_hl();
data.dec_de();
}
pub fn instrED__CPDR(data: &mut Z80Data, memory: &mut Memory) {
let value: u8 = memory.read_byte(data.hl());
let mut byte_temp: u8 = data.A - value;
let lookup: u8 = ((data.A & 0x08) >> 3) | ((value & 0x08) >> 2) | ((byte_temp & 0x08) >> 1);
memory.contend_read_no_mreq_loop(data.hl(), 1, 5);
data.dec_bc();
data.F = data.F & FLAG_C
| tern_op_b(data.bc() != 0, FLAG_V | FLAG_N, FLAG_N)
| HALF_CARRY_SUB_TABLE[lookup as usize]
| tern_op_b(byte_temp != 0, 0, FLAG_Z)
| byte_temp & FLAG_S;
if data.F & FLAG_H != 0 {
byte_temp -= 1;
}
data.F |= byte_temp & FLAG_3 | tern_op_b((byte_temp & 0x02) != 0, FLAG_5, 0);
if data.F & (FLAG_V | FLAG_Z) == FLAG_V {
memory.contend_read_no_mreq_loop(data.hl(), 1, 5);
data.dec_pc(2);
data.cycles += 18;
} else {
data.cycles += 23;
}
data.dec_hl();
}
pub fn instrED__INDR(data: &mut Z80Data, memory: &mut Memory, ports: &mut Ports) {
let _address = data.ir();
memory.contend_read_no_mreq(_address, 1);
let in_i_temp: u8 = ports.read_port(data.bc());
memory.write_byte(data.hl(), in_i_temp);
data.B = data.B.wrapping_sub(1);
let in_i_temp2: u8 = in_i_temp + data.C - 1;
data.F = tern_op_b(in_i_temp & 0x80 != 0, FLAG_N, 0)
| tern_op_b(in_i_temp2 < in_i_temp, FLAG_H | FLAG_C, 0)
| tern_op_b(
z80_tables::get().parity_table[((in_i_temp2 & 0x07) ^ data.B) as usize] != 0,
FLAG_P,
0,
)
| z80_tables::get().sz53_table[data.B as usize];
if data.B != 0 {
memory.contend_write_no_mreq_loop(data.hl(), 1, 5);
data.dec_pc(2);
data.cycles += 23;
} else {
data.cycles += 18;
}
data.dec_hl();
}
pub fn instrED__OTDR(data: &mut Z80Data, memory: &mut Memory, ports: &mut Ports) {
let _address = data.ir();
memory.contend_read_no_mreq(_address, 1);
let address = data.hl();
let out_i_temp: u8 = memory.read_byte(address);
data.B = data.B.wrapping_sub(1);
ports.write_port(data.bc(), out_i_temp);
data.dec_hl();
let out_i_temp2: u8 = out_i_temp + data.L;
data.F = tern_op_b((out_i_temp & 0x80) != 0, FLAG_N, 0)
| tern_op_b(out_i_temp2 < out_i_temp, FLAG_H | FLAG_C, 0)
| tern_op_b(
z80_tables::get().parity_table[((out_i_temp2 & 0x07) ^ data.B) as usize] != 0,
FLAG_P,
0,
)
| z80_tables::get().sz53_table[data.B as usize];
if data.B != 0 {
memory.contend_read_no_mreq_loop(data.bc(), 1, 5);
data.dec_pc(2);
data.cycles += 23;
} else {
data.cycles += 18;
}
}
pub fn instrED__SLTTRAP(data: &mut Z80Data, memory: &mut Memory) {
slt_trap(data, memory, data.hl() as i16, data.A);
}
pub fn instrDD__ADD_REG_BC(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq_loop(_address, 1, 7);
let mut ix = Register16::new(data.IXH, data.IXL);
let value2 = data.bc();
add16(data, &mut ix, value2);
(data.IXH, data.IXL) = ix.result();
}
pub fn instrDD__ADD_REG_DE(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq_loop(_address, 1, 7);
let mut ix = Register16::new(data.IXH, data.IXL);
let value2 = data.de();
add16(data, &mut ix, value2);
(data.IXH, data.IXL) = ix.result();
}
pub fn instrDD__LD_REG_NNNN(data: &mut Z80Data, memory: &mut Memory) {
let address = data.pc();
let b1 = memory.read_byte(address);
data.inc_pc(1);
let address = data.pc();
let b2 = memory.read_byte(address);
data.inc_pc(1);
data.set_ix(join_bytes(b2, b1));
}
fn_instr_ld_i_nnnn_r16!(instrDD__LD_iNNNN_REG, IXL, IXH);
pub fn instrDD__INC_REG(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq_loop(_address, 1, 2);
data.inc_ix()
}
pub fn instrDD__INC_REGH(data: &mut Z80Data) {
data.inc_ixh()
}
pub fn instrDD__DEC_REGH(data: &mut Z80Data) {
data.dec_ixh()
}
pub fn instrDD__LD_REGH_NN(data: &mut Z80Data, memory: &mut Memory) {
let address = data.pc();
data.IXH = memory.read_byte(address);
data.inc_pc(1);
}
pub fn instrDD__ADD_REG_REG(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq_loop(_address, 1, 7);
let mut ix = Register16::new(data.IXH, data.IXL);
let value2 = data.ix();
add16(data, &mut ix, value2);
(data.IXH, data.IXL) = ix.result();
}
fn_instr_ld_hl_i_nnnn!(instrDD__LD_REG_iNNNN, IXL, IXH);
pub fn instrDD__DEC_REG(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq_loop(_address, 1, 2);
data.dec_ix()
}
pub fn instrDD__INC_REGL(data: &mut Z80Data) {
data.inc_ixl()
}
pub fn instrDD__DEC_REGL(data: &mut Z80Data) {
data.dec_ixl()
}
pub fn instrDD__LD_REGL_NN(data: &mut Z80Data, memory: &mut Memory) {
let address = data.pc();
data.IXL = memory.read_byte(address);
data.inc_pc(1);
}
fn_instr_dd_op_i_reg_p_dd!(instrDD__INC_iREGpDD, inc);
fn_instr_dd_op_i_reg_p_dd!(instrDD__DEC_iREGpDD, dec);
pub fn instrDD__LD_iREGpDD_NN(data: &mut Z80Data, memory: &mut Memory) {
let address = data.pc();
let offset = memory.read_byte(address);
data.inc_pc(1);
let address = data.pc();
let value = memory.read_byte(address);
let _address = data.pc();
memory.contend_read_no_mreq_loop(_address, 1, 2);
data.inc_pc(1);
memory.write_byte(data.ix() + (sign_extend(offset) as u16), value);
}
pub fn instrDD__ADD_REG_SP(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq_loop(_address, 1, 7);
let mut ix = Register16::new(data.IXH, data.IXL);
let value2 = data.sp();
add16(data, &mut ix, value2);
(data.IXH, data.IXL) = ix.result();
}
pub fn instrDD__LD_B_REGH(data: &mut Z80Data) {
data.B = data.IXH
}
pub fn instrDD__LD_B_REGL(data: &mut Z80Data) {
data.B = data.IXL
}
fn_instr_dd_ld_r_i_reg_p_dd!(instrDD__LD_B_iREGpDD, B);
pub fn instrDD__LD_C_REGH(data: &mut Z80Data) {
data.C = data.IXH
}
pub fn instrDD__LD_C_REGL(data: &mut Z80Data) {
data.C = data.IXL
}
fn_instr_dd_ld_r_i_reg_p_dd!(instrDD__LD_C_iREGpDD, C);
pub fn instrDD__LD_D_REGH(data: &mut Z80Data) {
data.D = data.IXH
}
pub fn instrDD__LD_D_REGL(data: &mut Z80Data) {
data.D = data.IXL
}
fn_instr_dd_ld_r_i_reg_p_dd!(instrDD__LD_D_iREGpDD, D);
pub fn instrDD__LD_E_REGH(data: &mut Z80Data) {
data.E = data.IXH
}
pub fn instrDD__LD_E_REGL(data: &mut Z80Data) {
data.E = data.IXL
}
fn_instr_dd_ld_r_i_reg_p_dd!(instrDD__LD_E_iREGpDD, E);
pub fn instrDD__LD_REGH_B(data: &mut Z80Data) {
data.IXH = data.B
}
pub fn instrDD__LD_REGH_C(data: &mut Z80Data) {
data.IXH = data.C
}
pub fn instrDD__LD_REGH_D(data: &mut Z80Data) {
data.IXH = data.D
}
pub fn instrDD__LD_REGH_E(data: &mut Z80Data) {
data.IXH = data.E
}
pub fn instrDD__LD_REGH_REGH(_data: &mut Z80Data) {}
pub fn instrDD__LD_REGH_REGL(data: &mut Z80Data) {
data.IXH = data.IXL
}
fn_instr_dd_ld_r_i_reg_p_dd!(instrDD__LD_H_iREGpDD, H);
pub fn instrDD__LD_REGH_A(data: &mut Z80Data) {
data.IXH = data.A
}
pub fn instrDD__LD_REGL_B(data: &mut Z80Data) {
data.IXL = data.B
}
pub fn instrDD__LD_REGL_C(data: &mut Z80Data) {
data.IXL = data.C
}
pub fn instrDD__LD_REGL_D(data: &mut Z80Data) {
data.IXL = data.D
}
pub fn instrDD__LD_REGL_E(data: &mut Z80Data) {
data.IXL = data.E
}
pub fn instrDD__LD_REGL_REGH(data: &mut Z80Data) {
data.IXL = data.IXH
}
pub fn instrDD__LD_REGL_REGL(_data: &mut Z80Data) {}
fn_instr_dd_ld_r_i_reg_p_dd!(instrDD__LD_L_iREGpDD, L);
pub fn instrDD__LD_REGL_A(data: &mut Z80Data) {
data.IXL = data.A
}
fn_instr_ld_i_reg_p_dd_r8!(instrDD__LD_iREGpDD_B, ix, B);
fn_instr_ld_i_reg_p_dd_r8!(instrDD__LD_iREGpDD_C, ix, C);
fn_instr_ld_i_reg_p_dd_r8!(instrDD__LD_iREGpDD_D, ix, D);
fn_instr_ld_i_reg_p_dd_r8!(instrDD__LD_iREGpDD_E, ix, E);
fn_instr_ld_i_reg_p_dd_r8!(instrDD__LD_iREGpDD_H, ix, H);
fn_instr_ld_i_reg_p_dd_r8!(instrDD__LD_iREGpDD_L, ix, L);
fn_instr_ld_i_reg_p_dd_r8!(instrDD__LD_iREGpDD_A, ix, A);
fn_instr_ld_a_r8!(instrDD__LD_A_REGH, IXH);
fn_instr_ld_a_r8!(instrDD__LD_A_REGL, IXL);
fn_instr_dd_ld_r_i_reg_p_dd!(instrDD__LD_A_iREGpDD, A);
fn_instr_add_r8!(instrDD__ADD_A_REGH, IXH);
fn_instr_add_r8!(instrDD__ADD_A_REGL, IXL);
fn_instr_dd_op_a_i_reg_p_dd!(instrDD__ADD_A_iREGpDD, add);
fn_instr_adc_r8!(instrDD__ADC_A_REGH, IXH);
fn_instr_adc_r8!(instrDD__ADC_A_REGL, IXL);
fn_instr_dd_op_a_i_reg_p_dd!(instrDD__ADC_A_iREGpDD, adc);
fn_instr_sub_r8!(instrDD__SUB_A_REGH, IXH);
fn_instr_sub_r8!(instrDD__SUB_A_REGL, IXL);
fn_instr_dd_op_a_i_reg_p_dd!(instrDD__SUB_A_iREGpDD, sub);
fn_instr_sbc_r8!(instrDD__SBC_A_REGH, IXH);
fn_instr_sbc_r8!(instrDD__SBC_A_REGL, IXL);
fn_instr_dd_op_a_i_reg_p_dd!(instrDD__SBC_A_iREGpDD, sbc);
fn_instr_and_r8!(instrDD__AND_A_REGH, IXH);
fn_instr_and_r8!(instrDD__AND_A_REGL, IXL);
fn_instr_dd_op_a_i_reg_p_dd!(instrDD__AND_A_iREGpDD, and);
fn_instr_xor_r8!(instrDD__XOR_A_REGH, IXH);
fn_instr_xor_r8!(instrDD__XOR_A_REGL, IXL);
fn_instr_dd_op_a_i_reg_p_dd!(instrDD__XOR_A_iREGpDD, xor);
fn_instr_or_r8!(instrDD__OR_A_REGH, IXH);
fn_instr_or_r8!(instrDD__OR_A_REGL, IXL);
fn_instr_dd_op_a_i_reg_p_dd!(instrDD__OR_A_iREGpDD, or);
fn_instr_cp_r8!(instrDD__CP_A_REGH, IXH);
fn_instr_cp_r8!(instrDD__CP_A_REGL, IXL);
fn_instr_dd_op_a_i_reg_p_dd_d!(instrDD__CP_A_iREGpDD, cp);
pub fn instrDD__SHIFT_DDFDCB(_data: &mut Z80Data, _memory: &mut Memory) {}
fn_instr_pop_r16!(instrDD__POP_REG, IXL, IXH);
pub fn instrDD__EX_iSP_REG(data: &mut Z80Data, memory: &mut Memory) {
let address = data.sp();
let byte_temp_l = memory.read_byte(address);
let sp = data.sp();
let byte_temp_h = memory.read_byte(sp + 1);
let sp = data.sp();
memory.contend_read_no_mreq(sp + 1, 1);
let sp = data.sp();
memory.write_byte(sp + 1, data.IXH);
let address = data.sp();
memory.write_byte(address, data.IXL);
let _address = data.sp();
memory.contend_write_no_mreq_loop(_address, 1, 2);
data.IXL = byte_temp_l;
data.IXH = byte_temp_h;
}
fn_instr_push_r16!(instrDD__PUSH_REG, IXL, IXH);
pub fn instrDD__JP_REG(data: &mut Z80Data) {
data.set_pc(data.ix());
}
pub fn instrDD__LD_SP_REG(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq_loop(_address, 1, 2);
data.set_sp(data.ix());
}
pub fn instrFD__ADD_REG_BC(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq_loop(_address, 1, 7);
let mut iy = Register16::new(data.IYH, data.IYL);
let value2 = data.bc();
add16(data, &mut iy, value2);
(data.IYH, data.IYL) = iy.result();
}
pub fn instrFD__ADD_REG_DE(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq_loop(_address, 1, 7);
let mut iy = Register16::new(data.IYH, data.IYL);
let value2 = data.de();
add16(data, &mut iy, value2);
(data.IYH, data.IYL) = iy.result();
}
pub fn instrFD__LD_REG_NNNN(data: &mut Z80Data, memory: &mut Memory) {
let address = data.pc();
let b1 = memory.read_byte(address);
data.inc_pc(1);
let address = data.pc();
let b2 = memory.read_byte(address);
data.inc_pc(1);
data.set_iy(join_bytes(b2, b1));
}
fn_instr_ld_i_nnnn_r16!(instrFD__LD_iNNNN_REG, IYL, IYH);
pub fn instrFD__INC_REG(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq_loop(_address, 1, 2);
data.inc_iy()
}
pub fn instrFD__INC_REGH(data: &mut Z80Data) {
data.inc_iyh()
}
pub fn instrFD__DEC_REGH(data: &mut Z80Data) {
data.dec_iyh()
}
pub fn instrFD__LD_REGH_NN(data: &mut Z80Data, memory: &mut Memory) {
let address = data.pc();
data.IYH = memory.read_byte(address);
data.inc_pc(1);
}
pub fn instrFD__ADD_REG_REG(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq_loop(_address, 1, 7);
let mut iy = Register16::new(data.IYH, data.IYL);
let value2 = data.iy();
add16(data, &mut iy, value2);
(data.IYH, data.IYL) = iy.result();
}
fn_instr_ld_hl_i_nnnn!(instrFD__LD_REG_iNNNN, IYL, IYH);
pub fn instrFD__DEC_REG(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq_loop(_address, 1, 2);
data.dec_iy()
}
pub fn instrFD__INC_REGL(data: &mut Z80Data) {
data.inc_iyl()
}
pub fn instrFD__DEC_REGL(data: &mut Z80Data) {
data.dec_iyl()
}
pub fn instrFD__LD_REGL_NN(data: &mut Z80Data, memory: &mut Memory) {
let address = data.pc();
data.IYL = memory.read_byte(address);
data.inc_pc(1);
}
fn_instr_fd_op_i_reg_p_dd!(instrFD__INC_iREGpDD, inc);
fn_instr_fd_op_i_reg_p_dd!(instrFD__DEC_iREGpDD, dec);
pub fn instrFD__LD_iREGpDD_NN(data: &mut Z80Data, memory: &mut Memory) {
let address = data.pc();
let offset = memory.read_byte(address);
data.inc_pc(1);
let address = data.pc();
let value = memory.read_byte(address);
let _address = data.pc();
memory.contend_read_no_mreq_loop(_address, 1, 2);
data.inc_pc(1);
memory.write_byte(data.iy() + (sign_extend(offset) as u16), value)
}
pub fn instrFD__ADD_REG_SP(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq_loop(_address, 1, 7);
let mut iy = Register16::new(data.IYH, data.IYL);
let value2 = data.sp();
add16(data, &mut iy, value2);
(data.IYH, data.IYL) = iy.result();
}
pub fn instrFD__LD_B_REGH(data: &mut Z80Data) {
data.B = data.IYH
}
pub fn instrFD__LD_B_REGL(data: &mut Z80Data) {
data.B = data.IYL
}
fn_instr_fd_ld_r_i_reg_p_dd!(instrFD__LD_B_iREGpDD, B);
pub fn instrFD__LD_C_REGH(data: &mut Z80Data) {
data.C = data.IYH
}
pub fn instrFD__LD_C_REGL(data: &mut Z80Data) {
data.C = data.IYL
}
fn_instr_fd_ld_r_i_reg_p_dd!(instrFD__LD_C_iREGpDD, C);
pub fn instrFD__LD_D_REGH(data: &mut Z80Data) {
data.D = data.IYH
}
pub fn instrFD__LD_D_REGL(data: &mut Z80Data) {
data.D = data.IYL
}
fn_instr_fd_ld_r_i_reg_p_dd!(instrFD__LD_D_iREGpDD, D);
pub fn instrFD__LD_E_REGH(data: &mut Z80Data) {
data.E = data.IYH
}
pub fn instrFD__LD_E_REGL(data: &mut Z80Data) {
data.E = data.IYL
}
fn_instr_fd_ld_r_i_reg_p_dd!(instrFD__LD_E_iREGpDD, E);
pub fn instrFD__LD_REGH_B(data: &mut Z80Data) {
data.IYH = data.B
}
pub fn instrFD__LD_REGH_C(data: &mut Z80Data) {
data.IYH = data.C
}
pub fn instrFD__LD_REGH_D(data: &mut Z80Data) {
data.IYH = data.D
}
pub fn instrFD__LD_REGH_E(data: &mut Z80Data) {
data.IYH = data.E
}
pub fn instrFD__LD_REGH_REGH(_data: &mut Z80Data) {}
pub fn instrFD__LD_REGH_REGL(data: &mut Z80Data) {
data.IYH = data.IYL
}
fn_instr_fd_ld_r_i_reg_p_dd!(instrFD__LD_H_iREGpDD, H);
pub fn instrFD__LD_REGH_A(data: &mut Z80Data) {
data.IYH = data.A
}
pub fn instrFD__LD_REGL_B(data: &mut Z80Data) {
data.IYL = data.B
}
pub fn instrFD__LD_REGL_C(data: &mut Z80Data) {
data.IYL = data.C
}
pub fn instrFD__LD_REGL_D(data: &mut Z80Data) {
data.IYL = data.D
}
pub fn instrFD__LD_REGL_E(data: &mut Z80Data) {
data.IYL = data.E
}
pub fn instrFD__LD_REGL_REGH(data: &mut Z80Data) {
data.IYL = data.IYH
}
pub fn instrFD__LD_REGL_REGL(_data: &mut Z80Data) {}
fn_instr_fd_ld_r_i_reg_p_dd!(instrFD__LD_L_iREGpDD, L);
pub fn instrFD__LD_REGL_A(data: &mut Z80Data) {
data.IYL = data.A
}
fn_instr_ld_i_reg_p_dd_r8!(instrFD__LD_iREGpDD_B, iy, B);
fn_instr_ld_i_reg_p_dd_r8!(instrFD__LD_iREGpDD_C, iy, C);
fn_instr_ld_i_reg_p_dd_r8!(instrFD__LD_iREGpDD_D, iy, D);
fn_instr_ld_i_reg_p_dd_r8!(instrFD__LD_iREGpDD_E, iy, E);
fn_instr_ld_i_reg_p_dd_r8!(instrFD__LD_iREGpDD_H, iy, H);
fn_instr_ld_i_reg_p_dd_r8!(instrFD__LD_iREGpDD_L, iy, L);
fn_instr_ld_i_reg_p_dd_r8!(instrFD__LD_iREGpDD_A, iy, A);
fn_instr_ld_a_r8!(instrFD__LD_A_REGH, IYH);
fn_instr_ld_a_r8!(instrFD__LD_A_REGL, IYL);
fn_instr_fd_ld_r_i_reg_p_dd!(instrFD__LD_A_iREGpDD, A);
fn_instr_add_r8!(instrFD__ADD_A_REGH, IYH);
fn_instr_add_r8!(instrFD__ADD_A_REGL, IYL);
fn_instr_fd_op_a_i_reg_p_dd!(instrFD__ADD_A_iREGpDD, add);
fn_instr_adc_r8!(instrFD__ADC_A_REGH, IYH);
fn_instr_adc_r8!(instrFD__ADC_A_REGL, IYL);
fn_instr_fd_op_a_i_reg_p_dd!(instrFD__ADC_A_iREGpDD, adc);
fn_instr_sub_r8!(instrFD__SUB_A_REGH, IYH);
fn_instr_sub_r8!(instrFD__SUB_A_REGL, IYL);
fn_instr_fd_op_a_i_reg_p_dd!(instrFD__SUB_A_iREGpDD, sub);
fn_instr_sbc_r8!(instrFD__SBC_A_REGH, IYH);
fn_instr_sbc_r8!(instrFD__SBC_A_REGL, IYL);
fn_instr_fd_op_a_i_reg_p_dd!(instrFD__SBC_A_iREGpDD, sbc);
fn_instr_and_r8!(instrFD__AND_A_REGH, IYH);
fn_instr_and_r8!(instrFD__AND_A_REGL, IYL);
fn_instr_fd_op_a_i_reg_p_dd!(instrFD__AND_A_iREGpDD, and);
fn_instr_xor_r8!(instrFD__XOR_A_REGH, IYH);
fn_instr_xor_r8!(instrFD__XOR_A_REGL, IYL);
fn_instr_fd_op_a_i_reg_p_dd!(instrFD__XOR_A_iREGpDD, xor);
fn_instr_or_r8!(instrFD__OR_A_REGH, IYH);
fn_instr_or_r8!(instrFD__OR_A_REGL, IYL);
fn_instr_fd_op_a_i_reg_p_dd!(instrFD__OR_A_iREGpDD, or);
fn_instr_cp_r8!(instrFD__CP_A_REGH, IYH);
fn_instr_cp_r8!(instrFD__CP_A_REGL, IYL);
fn_instr_fd_op_a_i_reg_p_dd_d!(instrFD__CP_A_iREGpDD, cp);
pub fn instrFD__SHIFT_DDFDCB(_data: &mut Z80Data, _memory: &mut Memory) {}
fn_instr_pop_r16!(instrFD__POP_REG, IYL, IYH);
pub fn instrFD__EX_iSP_REG(data: &mut Z80Data, memory: &mut Memory) {
let address = data.sp();
let byte_temp_l = memory.read_byte(address);
let address = data.sp() + 1;
let byte_temp_h = memory.read_byte(address);
let _address = data.sp() + 1;
memory.contend_read_no_mreq(_address, 1);
let address = data.sp() + 1;
memory.write_byte(address, data.IYH);
let address = data.sp();
memory.write_byte(address, data.IYL);
let _address = data.sp();
memory.contend_write_no_mreq_loop(_address, 1, 2);
data.IYL = byte_temp_l;
data.IYH = byte_temp_h;
}
fn_instr_push_r16!(instrFD__PUSH_REG, IYL, IYH);
pub fn instrFD__JP_REG(data: &mut Z80Data) {
data.set_pc(data.iy());
}
pub fn instrFD__LD_SP_REG(data: &mut Z80Data, memory: &mut Memory) {
let _address = data.ir();
memory.contend_read_no_mreq_loop(_address, 1, 2);
data.set_sp(data.iy());
}
fn_instr_ddcb_ld_r_rlc_i_reg_p_dd!(instrDDCB__LD_B_RLC_iREGpDD, B);
fn_instr_ddcb_ld_r_rlc_i_reg_p_dd!(instrDDCB__LD_C_RLC_iREGpDD, C);
fn_instr_ddcb_ld_r_rlc_i_reg_p_dd!(instrDDCB__LD_D_RLC_iREGpDD, D);
fn_instr_ddcb_ld_r_rlc_i_reg_p_dd!(instrDDCB__LD_E_RLC_iREGpDD, E);
fn_instr_ddcb_ld_r_rlc_i_reg_p_dd!(instrDDCB__LD_H_RLC_iREGpDD, H);
fn_instr_ddcb_ld_r_rlc_i_reg_p_dd!(instrDDCB__LD_L_RLC_iREGpDD, L);
fn_instr_ddcb_op_i_reg_p_dd!(instrDDCB__RLC_iREGpDD, rlc);
fn_instr_ddcb_ld_r_rlc_i_reg_p_dd!(instrDDCB__LD_A_RLC_iREGpDD, A);
fn_instr_ddcb_ld_r_rrc_i_reg_p_dd!(instrDDCB__LD_B_RRC_iREGpDD, B);
fn_instr_ddcb_ld_r_rrc_i_reg_p_dd!(instrDDCB__LD_C_RRC_iREGpDD, C);
fn_instr_ddcb_ld_r_rrc_i_reg_p_dd!(instrDDCB__LD_D_RRC_iREGpDD, D);
fn_instr_ddcb_ld_r_rrc_i_reg_p_dd!(instrDDCB__LD_E_RRC_iREGpDD, E);
fn_instr_ddcb_ld_r_rrc_i_reg_p_dd!(instrDDCB__LD_H_RRC_iREGpDD, H);
fn_instr_ddcb_ld_r_rrc_i_reg_p_dd!(instrDDCB__LD_L_RRC_iREGpDD, L);
fn_instr_ddcb_op_i_reg_p_dd!(instrDDCB__RRC_iREGpDD, rrc);
fn_instr_ddcb_ld_r_rrc_i_reg_p_dd!(instrDDCB__LD_A_RRC_iREGpDD, A);
fn_instr_ddcb_ld_r_rl_i_reg_p_dd!(instrDDCB__LD_B_RL_iREGpDD, B);
fn_instr_ddcb_ld_r_rl_i_reg_p_dd!(instrDDCB__LD_C_RL_iREGpDD, C);
fn_instr_ddcb_ld_r_rl_i_reg_p_dd!(instrDDCB__LD_D_RL_iREGpDD, D);
fn_instr_ddcb_ld_r_rl_i_reg_p_dd!(instrDDCB__LD_E_RL_iREGpDD, E);
fn_instr_ddcb_ld_r_rl_i_reg_p_dd!(instrDDCB__LD_H_RL_iREGpDD, H);
fn_instr_ddcb_ld_r_rl_i_reg_p_dd!(instrDDCB__LD_L_RL_iREGpDD, L);
fn_instr_ddcb_op_i_reg_p_dd!(instrDDCB__RL_iREGpDD, rl);
fn_instr_ddcb_ld_r_rl_i_reg_p_dd!(instrDDCB__LD_A_RL_iREGpDD, A);
fn_instr_ddcb_ld_r_rr_i_reg_p_dd!(instrDDCB__LD_B_RR_iREGpDD, B);
fn_instr_ddcb_ld_r_rr_i_reg_p_dd!(instrDDCB__LD_C_RR_iREGpDD, C);
fn_instr_ddcb_ld_r_rr_i_reg_p_dd!(instrDDCB__LD_D_RR_iREGpDD, D);
fn_instr_ddcb_ld_r_rr_i_reg_p_dd!(instrDDCB__LD_E_RR_iREGpDD, E);
fn_instr_ddcb_ld_r_rr_i_reg_p_dd!(instrDDCB__LD_H_RR_iREGpDD, H);
fn_instr_ddcb_ld_r_rr_i_reg_p_dd!(instrDDCB__LD_L_RR_iREGpDD, L);
fn_instr_ddcb_op_i_reg_p_dd!(instrDDCB__RR_iREGpDD, rr);
fn_instr_ddcb_ld_r_rr_i_reg_p_dd!(instrDDCB__LD_A_RR_iREGpDD, A);
fn_instr_ddcb_ld_r_sla_i_reg_p_dd!(instrDDCB__LD_B_SLA_iREGpDD, B);
fn_instr_ddcb_ld_r_sla_i_reg_p_dd!(instrDDCB__LD_C_SLA_iREGpDD, C);
fn_instr_ddcb_ld_r_sla_i_reg_p_dd!(instrDDCB__LD_D_SLA_iREGpDD, D);
fn_instr_ddcb_ld_r_sla_i_reg_p_dd!(instrDDCB__LD_E_SLA_iREGpDD, E);
fn_instr_ddcb_ld_r_sla_i_reg_p_dd!(instrDDCB__LD_H_SLA_iREGpDD, H);
fn_instr_ddcb_ld_r_sla_i_reg_p_dd!(instrDDCB__LD_L_SLA_iREGpDD, L);
fn_instr_ddcb_op_i_reg_p_dd!(instrDDCB__SLA_iREGpDD, sla);
fn_instr_ddcb_ld_r_sla_i_reg_p_dd!(instrDDCB__LD_A_SLA_iREGpDD, A);
fn_instr_ddcb_ld_r_sra_i_reg_p_dd!(instrDDCB__LD_B_SRA_iREGpDD, B);
fn_instr_ddcb_ld_r_sra_i_reg_p_dd!(instrDDCB__LD_C_SRA_iREGpDD, C);
fn_instr_ddcb_ld_r_sra_i_reg_p_dd!(instrDDCB__LD_D_SRA_iREGpDD, D);
fn_instr_ddcb_ld_r_sra_i_reg_p_dd!(instrDDCB__LD_E_SRA_iREGpDD, E);
fn_instr_ddcb_ld_r_sra_i_reg_p_dd!(instrDDCB__LD_H_SRA_iREGpDD, H);
fn_instr_ddcb_ld_r_sra_i_reg_p_dd!(instrDDCB__LD_L_SRA_iREGpDD, L);
fn_instr_ddcb_op_i_reg_p_dd!(instrDDCB__SRA_iREGpDD, sra);
fn_instr_ddcb_ld_r_sra_i_reg_p_dd!(instrDDCB__LD_A_SRA_iREGpDD, A);
fn_instr_ddcb_ld_r_sll_i_reg_p_dd!(instrDDCB__LD_B_SLL_iREGpDD, B);
fn_instr_ddcb_ld_r_sll_i_reg_p_dd!(instrDDCB__LD_C_SLL_iREGpDD, C);
fn_instr_ddcb_ld_r_sll_i_reg_p_dd!(instrDDCB__LD_D_SLL_iREGpDD, D);
fn_instr_ddcb_ld_r_sll_i_reg_p_dd!(instrDDCB__LD_E_SLL_iREGpDD, E);
fn_instr_ddcb_ld_r_sll_i_reg_p_dd!(instrDDCB__LD_H_SLL_iREGpDD, H);
fn_instr_ddcb_ld_r_sll_i_reg_p_dd!(instrDDCB__LD_L_SLL_iREGpDD, L);
fn_instr_ddcb_op_i_reg_p_dd!(instrDDCB__SLL_iREGpDD, sll);
fn_instr_ddcb_ld_r_sll_i_reg_p_dd!(instrDDCB__LD_A_SLL_iREGpDD, A);
fn_instr_ddcb_ld_r_srl_i_reg_p_dd!(instrDDCB__LD_B_SRL_iREGpDD, B);
fn_instr_ddcb_ld_r_srl_i_reg_p_dd!(instrDDCB__LD_C_SRL_iREGpDD, C);
fn_instr_ddcb_ld_r_srl_i_reg_p_dd!(instrDDCB__LD_D_SRL_iREGpDD, D);
fn_instr_ddcb_ld_r_srl_i_reg_p_dd!(instrDDCB__LD_E_SRL_iREGpDD, E);
fn_instr_ddcb_ld_r_srl_i_reg_p_dd!(instrDDCB__LD_H_SRL_iREGpDD, H);
fn_instr_ddcb_ld_r_srl_i_reg_p_dd!(instrDDCB__LD_L_SRL_iREGpDD, L);
fn_instr_ddcb_op_i_reg_p_dd!(instrDDCB__SRL_iREGpDD, srl);
fn_instr_ddcb_ld_r_srl_i_reg_p_dd!(instrDDCB__LD_A_SRL_iREGpDD, A);
fn_instr_ddcb_bit_n_i_reg_p_dd!(instrDDCB__BIT_0_iREGpDD, 0);
fn_instr_ddcb_bit_n_i_reg_p_dd!(instrDDCB__BIT_1_iREGpDD, 1);
fn_instr_ddcb_bit_n_i_reg_p_dd!(instrDDCB__BIT_2_iREGpDD, 2);
fn_instr_ddcb_bit_n_i_reg_p_dd!(instrDDCB__BIT_3_iREGpDD, 3);
fn_instr_ddcb_bit_n_i_reg_p_dd!(instrDDCB__BIT_4_iREGpDD, 4);
fn_instr_ddcb_bit_n_i_reg_p_dd!(instrDDCB__BIT_5_iREGpDD, 5);
fn_instr_ddcb_bit_n_i_reg_p_dd!(instrDDCB__BIT_6_iREGpDD, 6);
fn_instr_ddcb_bit_n_i_reg_p_dd!(instrDDCB__BIT_7_iREGpDD, 7);
fn_instr_ddcb_ld_r_res_0_i_reg_p_dd!(instrDDCB__LD_B_RES_0_iREGpDD, B);
fn_instr_ddcb_ld_r_res_0_i_reg_p_dd!(instrDDCB__LD_C_RES_0_iREGpDD, C);
fn_instr_ddcb_ld_r_res_0_i_reg_p_dd!(instrDDCB__LD_D_RES_0_iREGpDD, D);
fn_instr_ddcb_ld_r_res_0_i_reg_p_dd!(instrDDCB__LD_E_RES_0_iREGpDD, E);
fn_instr_ddcb_ld_r_res_0_i_reg_p_dd!(instrDDCB__LD_H_RES_0_iREGpDD, H);
fn_instr_ddcb_ld_r_res_0_i_reg_p_dd!(instrDDCB__LD_L_RES_0_iREGpDD, L);
fn_instr_ddcb_res_n_i_reg_p_dd!(instrDDCB__RES_0_iREGpDD, 0xfe);
fn_instr_ddcb_ld_r_res_0_i_reg_p_dd!(instrDDCB__LD_A_RES_0_iREGpDD, A);
fn_instr_ddcb_ld_r_res_1_i_reg_p_dd!(instrDDCB__LD_B_RES_1_iREGpDD, B);
fn_instr_ddcb_ld_r_res_1_i_reg_p_dd!(instrDDCB__LD_C_RES_1_iREGpDD, C);
fn_instr_ddcb_ld_r_res_1_i_reg_p_dd!(instrDDCB__LD_D_RES_1_iREGpDD, D);
fn_instr_ddcb_ld_r_res_1_i_reg_p_dd!(instrDDCB__LD_E_RES_1_iREGpDD, E);
fn_instr_ddcb_ld_r_res_1_i_reg_p_dd!(instrDDCB__LD_H_RES_1_iREGpDD, H);
fn_instr_ddcb_ld_r_res_1_i_reg_p_dd!(instrDDCB__LD_L_RES_1_iREGpDD, L);
fn_instr_ddcb_res_n_i_reg_p_dd!(instrDDCB__RES_1_iREGpDD, 0xfd);
fn_instr_ddcb_ld_r_res_1_i_reg_p_dd!(instrDDCB__LD_A_RES_1_iREGpDD, A);
fn_instr_ddcb_ld_r_res_2_i_reg_p_dd!(instrDDCB__LD_B_RES_2_iREGpDD, B);
fn_instr_ddcb_ld_r_res_2_i_reg_p_dd!(instrDDCB__LD_C_RES_2_iREGpDD, C);
fn_instr_ddcb_ld_r_res_2_i_reg_p_dd!(instrDDCB__LD_D_RES_2_iREGpDD, D);
fn_instr_ddcb_ld_r_res_2_i_reg_p_dd!(instrDDCB__LD_E_RES_2_iREGpDD, E);
fn_instr_ddcb_ld_r_res_2_i_reg_p_dd!(instrDDCB__LD_H_RES_2_iREGpDD, H);
fn_instr_ddcb_ld_r_res_2_i_reg_p_dd!(instrDDCB__LD_L_RES_2_iREGpDD, L);
fn_instr_ddcb_res_n_i_reg_p_dd!(instrDDCB__RES_2_iREGpDD, 0xfb);
fn_instr_ddcb_ld_r_res_2_i_reg_p_dd!(instrDDCB__LD_A_RES_2_iREGpDD, A);
fn_instr_ddcb_ld_r_res_3_i_reg_p_dd!(instrDDCB__LD_B_RES_3_iREGpDD, B);
fn_instr_ddcb_ld_r_res_3_i_reg_p_dd!(instrDDCB__LD_C_RES_3_iREGpDD, C);
fn_instr_ddcb_ld_r_res_3_i_reg_p_dd!(instrDDCB__LD_D_RES_3_iREGpDD, D);
fn_instr_ddcb_ld_r_res_3_i_reg_p_dd!(instrDDCB__LD_E_RES_3_iREGpDD, E);
fn_instr_ddcb_ld_r_res_3_i_reg_p_dd!(instrDDCB__LD_H_RES_3_iREGpDD, H);
fn_instr_ddcb_ld_r_res_3_i_reg_p_dd!(instrDDCB__LD_L_RES_3_iREGpDD, L);
fn_instr_ddcb_res_n_i_reg_p_dd!(instrDDCB__RES_3_iREGpDD, 0xf7);
fn_instr_ddcb_ld_r_res_3_i_reg_p_dd!(instrDDCB__LD_A_RES_3_iREGpDD, A);
fn_instr_ddcb_ld_r_res_4_i_reg_p_dd!(instrDDCB__LD_B_RES_4_iREGpDD, B);
fn_instr_ddcb_ld_r_res_4_i_reg_p_dd!(instrDDCB__LD_C_RES_4_iREGpDD, C);
fn_instr_ddcb_ld_r_res_4_i_reg_p_dd!(instrDDCB__LD_D_RES_4_iREGpDD, D);
fn_instr_ddcb_ld_r_res_4_i_reg_p_dd!(instrDDCB__LD_E_RES_4_iREGpDD, E);
fn_instr_ddcb_ld_r_res_4_i_reg_p_dd!(instrDDCB__LD_H_RES_4_iREGpDD, H);
fn_instr_ddcb_ld_r_res_4_i_reg_p_dd!(instrDDCB__LD_L_RES_4_iREGpDD, L);
fn_instr_ddcb_res_n_i_reg_p_dd!(instrDDCB__RES_4_iREGpDD, 0xef);
fn_instr_ddcb_ld_r_res_4_i_reg_p_dd!(instrDDCB__LD_A_RES_4_iREGpDD, A);
fn_instr_ddcb_ld_r_res_5_i_reg_p_dd!(instrDDCB__LD_B_RES_5_iREGpDD, B);
fn_instr_ddcb_ld_r_res_5_i_reg_p_dd!(instrDDCB__LD_C_RES_5_iREGpDD, C);
fn_instr_ddcb_ld_r_res_5_i_reg_p_dd!(instrDDCB__LD_D_RES_5_iREGpDD, D);
fn_instr_ddcb_ld_r_res_5_i_reg_p_dd!(instrDDCB__LD_E_RES_5_iREGpDD, E);
fn_instr_ddcb_ld_r_res_5_i_reg_p_dd!(instrDDCB__LD_H_RES_5_iREGpDD, H);
fn_instr_ddcb_ld_r_res_5_i_reg_p_dd!(instrDDCB__LD_L_RES_5_iREGpDD, L);
fn_instr_ddcb_res_n_i_reg_p_dd!(instrDDCB__RES_5_iREGpDD, 0xdf);
fn_instr_ddcb_ld_r_res_5_i_reg_p_dd!(instrDDCB__LD_A_RES_5_iREGpDD, A);
fn_instr_ddcb_ld_r_res_6_i_reg_p_dd!(instrDDCB__LD_B_RES_6_iREGpDD, B);
fn_instr_ddcb_ld_r_res_6_i_reg_p_dd!(instrDDCB__LD_C_RES_6_iREGpDD, C);
fn_instr_ddcb_ld_r_res_6_i_reg_p_dd!(instrDDCB__LD_D_RES_6_iREGpDD, D);
fn_instr_ddcb_ld_r_res_6_i_reg_p_dd!(instrDDCB__LD_E_RES_6_iREGpDD, E);
fn_instr_ddcb_ld_r_res_6_i_reg_p_dd!(instrDDCB__LD_H_RES_6_iREGpDD, H);
fn_instr_ddcb_ld_r_res_6_i_reg_p_dd!(instrDDCB__LD_L_RES_6_iREGpDD, L);
fn_instr_ddcb_res_n_i_reg_p_dd!(instrDDCB__RES_6_iREGpDD, 0xbf);
fn_instr_ddcb_ld_r_res_6_i_reg_p_dd!(instrDDCB__LD_A_RES_6_iREGpDD, A);
fn_instr_ddcb_ld_r_res_7_i_reg_p_dd!(instrDDCB__LD_B_RES_7_iREGpDD, B);
fn_instr_ddcb_ld_r_res_7_i_reg_p_dd!(instrDDCB__LD_C_RES_7_iREGpDD, C);
fn_instr_ddcb_ld_r_res_7_i_reg_p_dd!(instrDDCB__LD_D_RES_7_iREGpDD, D);
fn_instr_ddcb_ld_r_res_7_i_reg_p_dd!(instrDDCB__LD_E_RES_7_iREGpDD, E);
fn_instr_ddcb_ld_r_res_7_i_reg_p_dd!(instrDDCB__LD_H_RES_7_iREGpDD, H);
fn_instr_ddcb_ld_r_res_7_i_reg_p_dd!(instrDDCB__LD_L_RES_7_iREGpDD, L);
fn_instr_ddcb_res_n_i_reg_p_dd!(instrDDCB__RES_7_iREGpDD, 0x7f);
fn_instr_ddcb_ld_r_res_7_i_reg_p_dd!(instrDDCB__LD_A_RES_7_iREGpDD, A);
fn_instr_ddcb_ld_r_set_0_i_reg_p_dd!(instrDDCB__LD_B_SET_0_iREGpDD, B);
fn_instr_ddcb_ld_r_set_0_i_reg_p_dd!(instrDDCB__LD_C_SET_0_iREGpDD, C);
fn_instr_ddcb_ld_r_set_0_i_reg_p_dd!(instrDDCB__LD_D_SET_0_iREGpDD, D);
fn_instr_ddcb_ld_r_set_0_i_reg_p_dd!(instrDDCB__LD_E_SET_0_iREGpDD, E);
fn_instr_ddcb_ld_r_set_0_i_reg_p_dd!(instrDDCB__LD_H_SET_0_iREGpDD, H);
fn_instr_ddcb_ld_r_set_0_i_reg_p_dd!(instrDDCB__LD_L_SET_0_iREGpDD, L);
fn_instr_ddcb_set_n_i_reg_p_dd!(instrDDCB__SET_0_iREGpDD, 0x01);
fn_instr_ddcb_ld_r_set_0_i_reg_p_dd!(instrDDCB__LD_A_SET_0_iREGpDD, A);
fn_instr_ddcb_ld_r_set_1_i_reg_p_dd!(instrDDCB__LD_B_SET_1_iREGpDD, B);
fn_instr_ddcb_ld_r_set_1_i_reg_p_dd!(instrDDCB__LD_C_SET_1_iREGpDD, C);
fn_instr_ddcb_ld_r_set_1_i_reg_p_dd!(instrDDCB__LD_D_SET_1_iREGpDD, D);
fn_instr_ddcb_ld_r_set_1_i_reg_p_dd!(instrDDCB__LD_E_SET_1_iREGpDD, E);
fn_instr_ddcb_ld_r_set_1_i_reg_p_dd!(instrDDCB__LD_H_SET_1_iREGpDD, H);
fn_instr_ddcb_ld_r_set_1_i_reg_p_dd!(instrDDCB__LD_L_SET_1_iREGpDD, L);
fn_instr_ddcb_set_n_i_reg_p_dd!(instrDDCB__SET_1_iREGpDD, 0x02);
fn_instr_ddcb_ld_r_set_1_i_reg_p_dd!(instrDDCB__LD_A_SET_1_iREGpDD, A);
fn_instr_ddcb_ld_r_set_2_i_reg_p_dd!(instrDDCB__LD_B_SET_2_iREGpDD, B);
fn_instr_ddcb_ld_r_set_2_i_reg_p_dd!(instrDDCB__LD_C_SET_2_iREGpDD, C);
fn_instr_ddcb_ld_r_set_2_i_reg_p_dd!(instrDDCB__LD_D_SET_2_iREGpDD, D);
fn_instr_ddcb_ld_r_set_2_i_reg_p_dd!(instrDDCB__LD_E_SET_2_iREGpDD, E);
fn_instr_ddcb_ld_r_set_2_i_reg_p_dd!(instrDDCB__LD_H_SET_2_iREGpDD, H);
fn_instr_ddcb_ld_r_set_2_i_reg_p_dd!(instrDDCB__LD_L_SET_2_iREGpDD, L);
fn_instr_ddcb_set_n_i_reg_p_dd!(instrDDCB__SET_2_iREGpDD, 0x04);
fn_instr_ddcb_ld_r_set_2_i_reg_p_dd!(instrDDCB__LD_A_SET_2_iREGpDD, A);
fn_instr_ddcb_ld_r_set_3_i_reg_p_dd!(instrDDCB__LD_B_SET_3_iREGpDD, B);
fn_instr_ddcb_ld_r_set_3_i_reg_p_dd!(instrDDCB__LD_C_SET_3_iREGpDD, C);
fn_instr_ddcb_ld_r_set_3_i_reg_p_dd!(instrDDCB__LD_D_SET_3_iREGpDD, D);
fn_instr_ddcb_ld_r_set_3_i_reg_p_dd!(instrDDCB__LD_E_SET_3_iREGpDD, E);
fn_instr_ddcb_ld_r_set_3_i_reg_p_dd!(instrDDCB__LD_H_SET_3_iREGpDD, H);
fn_instr_ddcb_ld_r_set_3_i_reg_p_dd!(instrDDCB__LD_L_SET_3_iREGpDD, L);
fn_instr_ddcb_set_n_i_reg_p_dd!(instrDDCB__SET_3_iREGpDD, 0x08);
fn_instr_ddcb_ld_r_set_3_i_reg_p_dd!(instrDDCB__LD_A_SET_3_iREGpDD, A);
fn_instr_ddcb_ld_r_set_4_i_reg_p_dd!(instrDDCB__LD_B_SET_4_iREGpDD, B);
fn_instr_ddcb_ld_r_set_4_i_reg_p_dd!(instrDDCB__LD_C_SET_4_iREGpDD, C);
fn_instr_ddcb_ld_r_set_4_i_reg_p_dd!(instrDDCB__LD_D_SET_4_iREGpDD, D);
fn_instr_ddcb_ld_r_set_4_i_reg_p_dd!(instrDDCB__LD_E_SET_4_iREGpDD, E);
fn_instr_ddcb_ld_r_set_4_i_reg_p_dd!(instrDDCB__LD_H_SET_4_iREGpDD, H);
fn_instr_ddcb_ld_r_set_4_i_reg_p_dd!(instrDDCB__LD_L_SET_4_iREGpDD, L);
fn_instr_ddcb_set_n_i_reg_p_dd!(instrDDCB__SET_4_iREGpDD, 0x10);
fn_instr_ddcb_ld_r_set_4_i_reg_p_dd!(instrDDCB__LD_A_SET_4_iREGpDD, A);
fn_instr_ddcb_ld_r_set_5_i_reg_p_dd!(instrDDCB__LD_B_SET_5_iREGpDD, B);
fn_instr_ddcb_ld_r_set_5_i_reg_p_dd!(instrDDCB__LD_C_SET_5_iREGpDD, C);
fn_instr_ddcb_ld_r_set_5_i_reg_p_dd!(instrDDCB__LD_D_SET_5_iREGpDD, D);
fn_instr_ddcb_ld_r_set_5_i_reg_p_dd!(instrDDCB__LD_E_SET_5_iREGpDD, E);
fn_instr_ddcb_ld_r_set_5_i_reg_p_dd!(instrDDCB__LD_H_SET_5_iREGpDD, H);
fn_instr_ddcb_ld_r_set_5_i_reg_p_dd!(instrDDCB__LD_L_SET_5_iREGpDD, L);
fn_instr_ddcb_set_n_i_reg_p_dd!(instrDDCB__SET_5_iREGpDD, 0x20);
fn_instr_ddcb_ld_r_set_5_i_reg_p_dd!(instrDDCB__LD_A_SET_5_iREGpDD, A);
fn_instr_ddcb_ld_r_set_6_i_reg_p_dd!(instrDDCB__LD_B_SET_6_iREGpDD, B);
fn_instr_ddcb_ld_r_set_6_i_reg_p_dd!(instrDDCB__LD_C_SET_6_iREGpDD, C);
fn_instr_ddcb_ld_r_set_6_i_reg_p_dd!(instrDDCB__LD_D_SET_6_iREGpDD, D);
fn_instr_ddcb_ld_r_set_6_i_reg_p_dd!(instrDDCB__LD_E_SET_6_iREGpDD, E);
fn_instr_ddcb_ld_r_set_6_i_reg_p_dd!(instrDDCB__LD_H_SET_6_iREGpDD, H);
fn_instr_ddcb_ld_r_set_6_i_reg_p_dd!(instrDDCB__LD_L_SET_6_iREGpDD, L);
fn_instr_ddcb_set_n_i_reg_p_dd!(instrDDCB__SET_6_iREGpDD, 0x40);
fn_instr_ddcb_ld_r_set_6_i_reg_p_dd!(instrDDCB__LD_A_SET_6_iREGpDD, A);
fn_instr_ddcb_ld_r_set_7_i_reg_p_dd!(instrDDCB__LD_B_SET_7_iREGpDD, B);
fn_instr_ddcb_ld_r_set_7_i_reg_p_dd!(instrDDCB__LD_C_SET_7_iREGpDD, C);
fn_instr_ddcb_ld_r_set_7_i_reg_p_dd!(instrDDCB__LD_D_SET_7_iREGpDD, D);
fn_instr_ddcb_ld_r_set_7_i_reg_p_dd!(instrDDCB__LD_E_SET_7_iREGpDD, E);
fn_instr_ddcb_ld_r_set_7_i_reg_p_dd!(instrDDCB__LD_H_SET_7_iREGpDD, H);
fn_instr_ddcb_ld_r_set_7_i_reg_p_dd!(instrDDCB__LD_L_SET_7_iREGpDD, L);
fn_instr_ddcb_set_n_i_reg_p_dd!(instrDDCB__SET_7_iREGpDD, 0x80);
fn_instr_ddcb_ld_r_set_7_i_reg_p_dd!(instrDDCB__LD_A_SET_7_iREGpDD, A);