From 857e99c4e0aeae77fd7c83f5c61c12965ec5bec5 Mon Sep 17 00:00:00 2001 From: Stephen Crane Date: Mon, 25 Feb 2019 14:55:27 +0000 Subject: [PATCH] fix #7 --- z80.cpp | 636 +++++++++++++++++++++---------------------- z80.h | 825 ++++++++++++++++++++++++++++---------------------------- 2 files changed, 716 insertions(+), 745 deletions(-) diff --git a/z80.cpp b/z80.cpp index 1965af9..4b06b5a 100644 --- a/z80.cpp +++ b/z80.cpp @@ -139,7 +139,7 @@ void z80::daa() { flags.P = parity_table(A); } -void z80::_step_idx(OP_IDX ops[]) { +void z80::_step_idx(EXT_OP f) { _mc(PC, 3); uint8_t off = _mem[PC]; @@ -156,10 +156,10 @@ void z80::_step_idx(OP_IDX ops[]) { _mc(PC, 1); _mc(PC, 1); PC++; - (this->*ops[op])(off); + (this->*f)(op, off); } -void z80::_ddfd(uint16_t &ix, uint8_t &ixL, uint8_t &ixH, OP_IDX ops[]) { +void z80::_ddfd(uint16_t &ix, uint8_t &ixL, uint8_t &ixH, EXT_OP op) { switch (_fetch_op()) { case 0x09: _add16(ix, BC); @@ -402,7 +402,7 @@ void z80::_ddfd(uint16_t &ix, uint8_t &ixL, uint8_t &ixH, OP_IDX ops[]) { _cmp(_rbO(ix)); break; case 0xcb: - _step_idx(ops); + _step_idx(op); break; case 0xe1: ix = _pop(); @@ -871,335 +871,6 @@ uint8_t z80::parity_table(uint8_t r) { return m == (b & m); } -z80::z80(Memory &m, PortDevice &ports): CPU(m) -{ - _ports = &ports; - - OP_IDX *d = _ddcb; - - // 0x00 - *d++ = &z80::rlcIXB; *d++ = &z80::rlcIXC; - *d++ = &z80::rlcIXD; *d++ = &z80::rlcIXE; - *d++ = &z80::rlcIXH; *d++ = &z80::rlcIXL; - *d++ = &z80::rlcIX; *d++ = &z80::rlcIXA; - *d++ = &z80::rrcIXB; *d++ = &z80::rrcIXC; - *d++ = &z80::rrcIXD; *d++ = &z80::rrcIXE; - *d++ = &z80::rrcIXH; *d++ = &z80::rrcIXL; - *d++ = &z80::rrcIX; *d++ = &z80::rrcIXA; - - // 0x10 - *d++ = &z80::rlIXB; *d++ = &z80::rlIXC; - *d++ = &z80::rlIXD; *d++ = &z80::rlIXE; - *d++ = &z80::rlIXH; *d++ = &z80::rlIXL; - *d++ = &z80::rlIX; *d++ = &z80::rlIXA; - *d++ = &z80::rrIXB; *d++ = &z80::rrIXC; - *d++ = &z80::rrIXD; *d++ = &z80::rrIXE; - *d++ = &z80::rrIXH; *d++ = &z80::rrIXL; - *d++ = &z80::rrIX; *d++ = &z80::rrIXA; - - // 0x20 - *d++ = &z80::slaIXB; *d++ = &z80::slaIXC; - *d++ = &z80::slaIXD; *d++ = &z80::slaIXE; - *d++ = &z80::slaIXH; *d++ = &z80::slaIXL; - *d++ = &z80::slaIX; *d++ = &z80::slaIXA; - *d++ = &z80::sraIXB; *d++ = &z80::sraIXC; - *d++ = &z80::sraIXD; *d++ = &z80::sraIXE; - *d++ = &z80::sraIXH; *d++ = &z80::sraIXL; - *d++ = &z80::sraIX; *d++ = &z80::sraIXA; - - // 0x30 - *d++ = &z80::sllIXB; *d++ = &z80::sllIXC; - *d++ = &z80::sllIXD; *d++ = &z80::sllIXE; - *d++ = &z80::sllIXH; *d++ = &z80::sllIXL; - *d++ = &z80::sllIX; *d++ = &z80::sllIXA; - *d++ = &z80::srlIXB; *d++ = &z80::srlIXC; - *d++ = &z80::srlIXD; *d++ = &z80::srlIXE; - *d++ = &z80::srlIXH; *d++ = &z80::srlIXL; - *d++ = &z80::srlIX; *d++ = &z80::srlIXA; - - // 0x40 - *d++ = &z80::bit0IX; *d++ = &z80::bit0IX; - *d++ = &z80::bit0IX; *d++ = &z80::bit0IX; - *d++ = &z80::bit0IX; *d++ = &z80::bit0IX; - *d++ = &z80::bit0IX; *d++ = &z80::bit0IX; - *d++ = &z80::bit1IX; *d++ = &z80::bit1IX; - *d++ = &z80::bit1IX; *d++ = &z80::bit1IX; - *d++ = &z80::bit1IX; *d++ = &z80::bit1IX; - *d++ = &z80::bit1IX; *d++ = &z80::bit1IX; - - // 0x50 - *d++ = &z80::bit2IX; *d++ = &z80::bit2IX; - *d++ = &z80::bit2IX; *d++ = &z80::bit2IX; - *d++ = &z80::bit2IX; *d++ = &z80::bit2IX; - *d++ = &z80::bit2IX; *d++ = &z80::bit2IX; - *d++ = &z80::bit3IX; *d++ = &z80::bit3IX; - *d++ = &z80::bit3IX; *d++ = &z80::bit3IX; - *d++ = &z80::bit3IX; *d++ = &z80::bit3IX; - *d++ = &z80::bit3IX; *d++ = &z80::bit3IX; - - // 0x60 - *d++ = &z80::bit4IX; *d++ = &z80::bit4IX; - *d++ = &z80::bit4IX; *d++ = &z80::bit4IX; - *d++ = &z80::bit4IX; *d++ = &z80::bit4IX; - *d++ = &z80::bit4IX; *d++ = &z80::bit4IX; - *d++ = &z80::bit5IX; *d++ = &z80::bit5IX; - *d++ = &z80::bit5IX; *d++ = &z80::bit5IX; - *d++ = &z80::bit5IX; *d++ = &z80::bit5IX; - *d++ = &z80::bit5IX; *d++ = &z80::bit5IX; - - // 0x70 - *d++ = &z80::bit6IX; *d++ = &z80::bit6IX; - *d++ = &z80::bit6IX; *d++ = &z80::bit6IX; - *d++ = &z80::bit6IX; *d++ = &z80::bit6IX; - *d++ = &z80::bit6IX; *d++ = &z80::bit6IX; - *d++ = &z80::bit7IX; *d++ = &z80::bit7IX; - *d++ = &z80::bit7IX; *d++ = &z80::bit7IX; - *d++ = &z80::bit7IX; *d++ = &z80::bit7IX; - *d++ = &z80::bit7IX; *d++ = &z80::bit7IX; - - // 0x80 - *d++ = &z80::res0IXB; *d++ = &z80::res0IXC; - *d++ = &z80::res0IXD; *d++ = &z80::res0IXE; - *d++ = &z80::res0IXH; *d++ = &z80::res0IXL; - *d++ = &z80::res0IX; *d++ = &z80::res0IXA; - *d++ = &z80::res1IXB; *d++ = &z80::res1IXC; - *d++ = &z80::res1IXD; *d++ = &z80::res1IXE; - *d++ = &z80::res1IXH; *d++ = &z80::res1IXL; - *d++ = &z80::res1IX; *d++ = &z80::res1IXA; - - // 0x90 - *d++ = &z80::res2IXB; *d++ = &z80::res2IXC; - *d++ = &z80::res2IXD; *d++ = &z80::res2IXE; - *d++ = &z80::res2IXH; *d++ = &z80::res2IXL; - *d++ = &z80::res2IX; *d++ = &z80::res2IXA; - *d++ = &z80::res3IXB; *d++ = &z80::res3IXC; - *d++ = &z80::res3IXD; *d++ = &z80::res3IXE; - *d++ = &z80::res3IXH; *d++ = &z80::res3IXL; - *d++ = &z80::res3IX; *d++ = &z80::res3IXA; - - // 0xa0 - *d++ = &z80::res4IXB; *d++ = &z80::res4IXC; - *d++ = &z80::res4IXD; *d++ = &z80::res4IXE; - *d++ = &z80::res4IXH; *d++ = &z80::res4IXL; - *d++ = &z80::res4IX; *d++ = &z80::res4IXA; - *d++ = &z80::res5IXB; *d++ = &z80::res5IXC; - *d++ = &z80::res5IXD; *d++ = &z80::res5IXE; - *d++ = &z80::res5IXH; *d++ = &z80::res5IXL; - *d++ = &z80::res5IX; *d++ = &z80::res5IXA; - - // 0xb0 - *d++ = &z80::res6IXB; *d++ = &z80::res6IXC; - *d++ = &z80::res6IXD; *d++ = &z80::res6IXE; - *d++ = &z80::res6IXH; *d++ = &z80::res6IXL; - *d++ = &z80::res6IX; *d++ = &z80::res6IXA; - *d++ = &z80::res7IXB; *d++ = &z80::res7IXC; - *d++ = &z80::res7IXD; *d++ = &z80::res7IXE; - *d++ = &z80::res7IXH; *d++ = &z80::res7IXL; - *d++ = &z80::res7IX; *d++ = &z80::res7IXA; - - // 0xc0 - *d++ = &z80::set0IXB; *d++ = &z80::set0IXC; - *d++ = &z80::set0IXD; *d++ = &z80::set0IXE; - *d++ = &z80::set0IXH; *d++ = &z80::set0IXL; - *d++ = &z80::set0IX; *d++ = &z80::set0IXA; - *d++ = &z80::set1IXB; *d++ = &z80::set1IXC; - *d++ = &z80::set1IXD; *d++ = &z80::set1IXE; - *d++ = &z80::set1IXH; *d++ = &z80::set1IXL; - *d++ = &z80::set1IX; *d++ = &z80::set1IXA; - - // 0xd0 - *d++ = &z80::set2IXB; *d++ = &z80::set2IXC; - *d++ = &z80::set2IXD; *d++ = &z80::set2IXE; - *d++ = &z80::set2IXH; *d++ = &z80::set2IXL; - *d++ = &z80::set2IX; *d++ = &z80::set2IXA; - *d++ = &z80::set3IXB; *d++ = &z80::set3IXC; - *d++ = &z80::set3IXD; *d++ = &z80::set3IXE; - *d++ = &z80::set3IXH; *d++ = &z80::set3IXL; - *d++ = &z80::set3IX; *d++ = &z80::set3IXA; - - // 0xe0 - *d++ = &z80::set4IXB; *d++ = &z80::set4IXC; - *d++ = &z80::set4IXD; *d++ = &z80::set4IXE; - *d++ = &z80::set4IXH; *d++ = &z80::set4IXL; - *d++ = &z80::set4IX; *d++ = &z80::set4IXA; - *d++ = &z80::set5IXB; *d++ = &z80::set5IXC; - *d++ = &z80::set5IXD; *d++ = &z80::set5IXE; - *d++ = &z80::set5IXH; *d++ = &z80::set5IXL; - *d++ = &z80::set5IX; *d++ = &z80::set5IXA; - - // 0xf0 - *d++ = &z80::set6IXB; *d++ = &z80::set6IXC; - *d++ = &z80::set6IXD; *d++ = &z80::set6IXE; - *d++ = &z80::set6IXH; *d++ = &z80::set6IXL; - *d++ = &z80::set6IX; *d++ = &z80::set6IXA; - *d++ = &z80::set7IXB; *d++ = &z80::set7IXC; - *d++ = &z80::set7IXD; *d++ = &z80::set7IXE; - *d++ = &z80::set7IXH; *d++ = &z80::set7IXL; - *d++ = &z80::set7IX; *d++ = &z80::set7IXA; - - d = _fdcb; - - // 0x00 - *d++ = &z80::rlcIYB; *d++ = &z80::rlcIYC; - *d++ = &z80::rlcIYD; *d++ = &z80::rlcIYE; - *d++ = &z80::rlcIYH; *d++ = &z80::rlcIYL; - *d++ = &z80::rlcIY; *d++ = &z80::rlcIYA; - *d++ = &z80::rrcIYB; *d++ = &z80::rrcIYC; - *d++ = &z80::rrcIYD; *d++ = &z80::rrcIYE; - *d++ = &z80::rrcIYH; *d++ = &z80::rrcIYL; - *d++ = &z80::rrcIY; *d++ = &z80::rrcIYA; - - // 0x10 - *d++ = &z80::rlIYB; *d++ = &z80::rlIYC; - *d++ = &z80::rlIYD; *d++ = &z80::rlIYE; - *d++ = &z80::rlIYH; *d++ = &z80::rlIYL; - *d++ = &z80::rlIY; *d++ = &z80::rlIYA; - *d++ = &z80::rrIYB; *d++ = &z80::rrIYC; - *d++ = &z80::rrIYD; *d++ = &z80::rrIYE; - *d++ = &z80::rrIYH; *d++ = &z80::rrIYL; - *d++ = &z80::rrIY; *d++ = &z80::rrIYA; - - // 0x20 - *d++ = &z80::slaIYB; *d++ = &z80::slaIYC; - *d++ = &z80::slaIYD; *d++ = &z80::slaIYE; - *d++ = &z80::slaIYH; *d++ = &z80::slaIYL; - *d++ = &z80::slaIY; *d++ = &z80::slaIYA; - *d++ = &z80::sraIYB; *d++ = &z80::sraIYC; - *d++ = &z80::sraIYD; *d++ = &z80::sraIYE; - *d++ = &z80::sraIYH; *d++ = &z80::sraIYL; - *d++ = &z80::sraIY; *d++ = &z80::sraIYA; - - // 0x30 - *d++ = &z80::sllIYB; *d++ = &z80::sllIYC; - *d++ = &z80::sllIYD; *d++ = &z80::sllIYE; - *d++ = &z80::sllIYH; *d++ = &z80::sllIYL; - *d++ = &z80::sllIY; *d++ = &z80::sllIYA; - *d++ = &z80::srlIYB; *d++ = &z80::srlIYC; - *d++ = &z80::srlIYD; *d++ = &z80::srlIYE; - *d++ = &z80::srlIYH; *d++ = &z80::srlIYL; - *d++ = &z80::srlIY; *d++ = &z80::srlIYA; - - // 0x40 - *d++ = &z80::bit0IY; *d++ = &z80::bit0IY; - *d++ = &z80::bit0IY; *d++ = &z80::bit0IY; - *d++ = &z80::bit0IY; *d++ = &z80::bit0IY; - *d++ = &z80::bit0IY; *d++ = &z80::bit0IY; - *d++ = &z80::bit1IY; *d++ = &z80::bit1IY; - *d++ = &z80::bit1IY; *d++ = &z80::bit1IY; - *d++ = &z80::bit1IY; *d++ = &z80::bit1IY; - *d++ = &z80::bit1IY; *d++ = &z80::bit1IY; - - // 0x50 - *d++ = &z80::bit2IY; *d++ = &z80::bit2IY; - *d++ = &z80::bit2IY; *d++ = &z80::bit2IY; - *d++ = &z80::bit2IY; *d++ = &z80::bit2IY; - *d++ = &z80::bit2IY; *d++ = &z80::bit2IY; - *d++ = &z80::bit3IY; *d++ = &z80::bit3IY; - *d++ = &z80::bit3IY; *d++ = &z80::bit3IY; - *d++ = &z80::bit3IY; *d++ = &z80::bit3IY; - *d++ = &z80::bit3IY; *d++ = &z80::bit3IY; - - // 0x60 - *d++ = &z80::bit4IY; *d++ = &z80::bit4IY; - *d++ = &z80::bit4IY; *d++ = &z80::bit4IY; - *d++ = &z80::bit4IY; *d++ = &z80::bit4IY; - *d++ = &z80::bit4IY; *d++ = &z80::bit4IY; - *d++ = &z80::bit5IY; *d++ = &z80::bit5IY; - *d++ = &z80::bit5IY; *d++ = &z80::bit5IY; - *d++ = &z80::bit5IY; *d++ = &z80::bit5IY; - *d++ = &z80::bit5IY; *d++ = &z80::bit5IY; - - // 0x70 - *d++ = &z80::bit6IY; *d++ = &z80::bit6IY; - *d++ = &z80::bit6IY; *d++ = &z80::bit6IY; - *d++ = &z80::bit6IY; *d++ = &z80::bit6IY; - *d++ = &z80::bit6IY; *d++ = &z80::bit6IY; - *d++ = &z80::bit7IY; *d++ = &z80::bit7IY; - *d++ = &z80::bit7IY; *d++ = &z80::bit7IY; - *d++ = &z80::bit7IY; *d++ = &z80::bit7IY; - *d++ = &z80::bit7IY; *d++ = &z80::bit7IY; - - // 0x80 - *d++ = &z80::res0IYB; *d++ = &z80::res0IYC; - *d++ = &z80::res0IYD; *d++ = &z80::res0IYE; - *d++ = &z80::res0IYH; *d++ = &z80::res0IYL; - *d++ = &z80::res0IY; *d++ = &z80::res0IYA; - *d++ = &z80::res1IYB; *d++ = &z80::res1IYC; - *d++ = &z80::res1IYD; *d++ = &z80::res1IYE; - *d++ = &z80::res1IYH; *d++ = &z80::res1IYL; - *d++ = &z80::res1IY; *d++ = &z80::res1IYA; - - // 0x90 - *d++ = &z80::res2IYB; *d++ = &z80::res2IYC; - *d++ = &z80::res2IYD; *d++ = &z80::res2IYE; - *d++ = &z80::res2IYH; *d++ = &z80::res2IYL; - *d++ = &z80::res2IY; *d++ = &z80::res2IYA; - *d++ = &z80::res3IYB; *d++ = &z80::res3IYC; - *d++ = &z80::res3IYD; *d++ = &z80::res3IYE; - *d++ = &z80::res3IYH; *d++ = &z80::res3IYL; - *d++ = &z80::res3IY; *d++ = &z80::res3IYA; - - // 0xa0 - *d++ = &z80::res4IYB; *d++ = &z80::res4IYC; - *d++ = &z80::res4IYD; *d++ = &z80::res4IYE; - *d++ = &z80::res4IYH; *d++ = &z80::res4IYL; - *d++ = &z80::res4IY; *d++ = &z80::res4IYA; - *d++ = &z80::res5IYB; *d++ = &z80::res5IYC; - *d++ = &z80::res5IYD; *d++ = &z80::res5IYE; - *d++ = &z80::res5IYH; *d++ = &z80::res5IYL; - *d++ = &z80::res5IY; *d++ = &z80::res5IYA; - - // 0xb0 - *d++ = &z80::res6IYB; *d++ = &z80::res6IYC; - *d++ = &z80::res6IYD; *d++ = &z80::res6IYE; - *d++ = &z80::res6IYH; *d++ = &z80::res6IYL; - *d++ = &z80::res6IY; *d++ = &z80::res6IYA; - *d++ = &z80::res7IYB; *d++ = &z80::res7IYC; - *d++ = &z80::res7IYD; *d++ = &z80::res7IYE; - *d++ = &z80::res7IYH; *d++ = &z80::res7IYL; - *d++ = &z80::res7IY; *d++ = &z80::res7IYA; - - // 0xc0 - *d++ = &z80::set0IYB; *d++ = &z80::set0IYC; - *d++ = &z80::set0IYD; *d++ = &z80::set0IYE; - *d++ = &z80::set0IYH; *d++ = &z80::set0IYL; - *d++ = &z80::set0IY; *d++ = &z80::set0IYA; - *d++ = &z80::set1IYB; *d++ = &z80::set1IYC; - *d++ = &z80::set1IYD; *d++ = &z80::set1IYE; - *d++ = &z80::set1IYH; *d++ = &z80::set1IYL; - *d++ = &z80::set1IY; *d++ = &z80::set1IYA; - - // 0xd0 - *d++ = &z80::set2IYB; *d++ = &z80::set2IYC; - *d++ = &z80::set2IYD; *d++ = &z80::set2IYE; - *d++ = &z80::set2IYH; *d++ = &z80::set2IYL; - *d++ = &z80::set2IY; *d++ = &z80::set2IYA; - *d++ = &z80::set3IYB; *d++ = &z80::set3IYC; - *d++ = &z80::set3IYD; *d++ = &z80::set3IYE; - *d++ = &z80::set3IYH; *d++ = &z80::set3IYL; - *d++ = &z80::set3IY; *d++ = &z80::set3IYA; - - // 0xe0 - *d++ = &z80::set4IYB; *d++ = &z80::set4IYC; - *d++ = &z80::set4IYD; *d++ = &z80::set4IYE; - *d++ = &z80::set4IYH; *d++ = &z80::set4IYL; - *d++ = &z80::set4IY; *d++ = &z80::set4IYA; - *d++ = &z80::set5IYB; *d++ = &z80::set5IYC; - *d++ = &z80::set5IYD; *d++ = &z80::set5IYE; - *d++ = &z80::set5IYH; *d++ = &z80::set5IYL; - *d++ = &z80::set5IY; *d++ = &z80::set5IYA; - - // 0xf0 - *d++ = &z80::set6IYB; *d++ = &z80::set6IYC; - *d++ = &z80::set6IYD; *d++ = &z80::set6IYE; - *d++ = &z80::set6IYH; *d++ = &z80::set6IYL; - *d++ = &z80::set6IY; *d++ = &z80::set6IYA; - *d++ = &z80::set7IYB; *d++ = &z80::set7IYC; - *d++ = &z80::set7IYD; *d++ = &z80::set7IYE; - *d++ = &z80::set7IYH; *d++ = &z80::set7IYL; - *d++ = &z80::set7IY; *d++ = &z80::set7IYA; -} - void z80::cb() { switch(_fetch_op()) { @@ -1496,3 +1167,302 @@ void z80::op(uint8_t op) { O(0xfe, cp); O(0xff, rst38); } } + +#define A(o, e, a) case o: e(a); break; + +void z80::fdcb(uint8_t op, uint8_t a) { + switch (op) { + A(0x00, rlcIYB, a); A(0x01, rlcIYC, a); + A(0x02, rlcIYD, a); A(0x03, rlcIYE, a); + A(0x04, rlcIYH, a); A(0x05, rlcIYL, a); + A(0x06, rlcIY, a); A(0x07, rlcIYA, a); + A(0x08, rrcIYB, a); A(0x09, rrcIYC, a); + A(0x0a, rrcIYD, a); A(0x0b, rrcIYE, a); + A(0x0c, rrcIYH, a); A(0x0d, rrcIYL, a); + A(0x0e, rrcIY, a); A(0x0f, rrcIYA, a); + + A(0x10, rlIYB, a); A(0x11, rlIYC, a); + A(0x12, rlIYD, a); A(0x13, rlIYE, a); + A(0x14, rlIYH, a); A(0x15, rlIYL, a); + A(0x16, rlIY, a); A(0x17, rlIYA, a); + A(0x18, rrIYB, a); A(0x19, rrIYC, a); + A(0x1a, rrIYD, a); A(0x1b, rrIYE, a); + A(0x1c, rrIYH, a); A(0x1d, rrIYL, a); + A(0x1e, rrIY, a); A(0x1f, rrIYA, a); + + A(0x20, slaIYB, a); A(0x21, slaIYC, a); + A(0x22, slaIYD, a); A(0x23, slaIYE, a); + A(0x24, slaIYH, a); A(0x25, slaIYL, a); + A(0x26, slaIY, a); A(0x27, slaIYA, a); + A(0x28, sraIYB, a); A(0x29, sraIYC, a); + A(0x2a, sraIYD, a); A(0x2b, sraIYE, a); + A(0x2c, sraIYH, a); A(0x2d, sraIYL, a); + A(0x2e, sraIY, a); A(0x2f, sraIYA, a); + + A(0x30, sllIYB, a); A(0x31, sllIYC, a); + A(0x32, sllIYD, a); A(0x33, sllIYE, a); + A(0x34, sllIYH, a); A(0x35, sllIYL, a); + A(0x36, sllIY, a); A(0x37, sllIYA, a); + A(0x38, srlIYB, a); A(0x39, srlIYC, a); + A(0x3a, srlIYD, a); A(0x3b, srlIYE, a); + A(0x3c, srlIYH, a); A(0x3d, srlIYL, a); + A(0x3e, srlIY, a); A(0x3f, srlIYA, a); + + A(0x40, bit0IY, a); A(0x41, bit0IY, a); + A(0x42, bit0IY, a); A(0x43, bit0IY, a); + A(0x44, bit0IY, a); A(0x45, bit0IY, a); + A(0x46, bit0IY, a); A(0x47, bit0IY, a); + A(0x48, bit1IY, a); A(0x49, bit1IY, a); + A(0x4a, bit1IY, a); A(0x4b, bit1IY, a); + A(0x4c, bit1IY, a); A(0x4d, bit1IY, a); + A(0x4e, bit1IY, a); A(0x4f, bit1IY, a); + + A(0x50, bit2IY, a); A(0x51, bit2IY, a); + A(0x52, bit2IY, a); A(0x53, bit2IY, a); + A(0x54, bit2IY, a); A(0x55, bit2IY, a); + A(0x56, bit2IY, a); A(0x57, bit2IY, a); + A(0x58, bit3IY, a); A(0x59, bit3IY, a); + A(0x5a, bit3IY, a); A(0x5b, bit3IY, a); + A(0x5c, bit3IY, a); A(0x5d, bit3IY, a); + A(0x5e, bit3IY, a); A(0x5f, bit3IY, a); + + A(0x60, bit4IY, a); A(0x61, bit4IY, a); + A(0x62, bit4IY, a); A(0x63, bit4IY, a); + A(0x64, bit4IY, a); A(0x65, bit4IY, a); + A(0x66, bit4IY, a); A(0x67, bit4IY, a); + A(0x68, bit5IY, a); A(0x69, bit5IY, a); + A(0x6a, bit5IY, a); A(0x6b, bit5IY, a); + A(0x6c, bit5IY, a); A(0x6d, bit5IY, a); + A(0x6e, bit5IY, a); A(0x6f, bit5IY, a); + + A(0x70, bit6IY, a); A(0x71, bit6IY, a); + A(0x72, bit6IY, a); A(0x73, bit6IY, a); + A(0x74, bit6IY, a); A(0x75, bit6IY, a); + A(0x76, bit6IY, a); A(0x77, bit6IY, a); + A(0x78, bit7IY, a); A(0x79, bit7IY, a); + A(0x7a, bit7IY, a); A(0x7b, bit7IY, a); + A(0x7c, bit7IY, a); A(0x7d, bit7IY, a); + A(0x7e, bit7IY, a); A(0x7f, bit7IY, a); + + A(0x80, res0IYB, a); A(0x81, res0IYC, a); + A(0x82, res0IYD, a); A(0x83, res0IYE, a); + A(0x84, res0IYH, a); A(0x85, res0IYL, a); + A(0x86, res0IY, a); A(0x87, res0IYA, a); + A(0x88, res1IYB, a); A(0x89, res1IYC, a); + A(0x8a, res1IYD, a); A(0x8b, res1IYE, a); + A(0x8c, res1IYH, a); A(0x8d, res1IYL, a); + A(0x8e, res1IY, a); A(0x8f, res1IYA, a); + + A(0x90, res2IYB, a); A(0x91, res2IYC, a); + A(0x92, res2IYD, a); A(0x93, res2IYE, a); + A(0x94, res2IYH, a); A(0x95, res2IYL, a); + A(0x96, res2IY, a); A(0x97, res2IYA, a); + A(0x98, res3IYB, a); A(0x99, res3IYC, a); + A(0x9a, res3IYD, a); A(0x9b, res3IYE, a); + A(0x9c, res3IYH, a); A(0x9d, res3IYL, a); + A(0x9e, res3IY, a); A(0x9f, res3IYA, a); + + A(0xa0, res4IYB, a); A(0xa1, res4IYC, a); + A(0xa2, res4IYD, a); A(0xa3, res4IYE, a); + A(0xa4, res4IYH, a); A(0xa5, res4IYL, a); + A(0xa6, res4IY, a); A(0xa7, res4IYA, a); + A(0xa8, res5IYB, a); A(0xa9, res5IYC, a); + A(0xaa, res5IYD, a); A(0xab, res5IYE, a); + A(0xac, res5IYH, a); A(0xad, res5IYL, a); + A(0xae, res5IY, a); A(0xaf, res5IYA, a); + + A(0xb0, res6IYB, a); A(0xb1, res6IYC, a); + A(0xb2, res6IYD, a); A(0xb3, res6IYE, a); + A(0xb4, res6IYH, a); A(0xb5, res6IYL, a); + A(0xb6, res6IY, a); A(0xb7, res6IYA, a); + A(0xb8, res7IYB, a); A(0xb9, res7IYC, a); + A(0xba, res7IYD, a); A(0xbb, res7IYE, a); + A(0xbc, res7IYH, a); A(0xbd, res7IYL, a); + A(0xbe, res7IY, a); A(0xbf, res7IYA, a); + + A(0xc0, set0IYB, a); A(0xc1, set0IYC, a); + A(0xc2, set0IYD, a); A(0xc3, set0IYE, a); + A(0xc4, set0IYH, a); A(0xc5, set0IYL, a); + A(0xc6, set0IY, a); A(0xc7, set0IYA, a); + A(0xc8, set1IYB, a); A(0xc9, set1IYC, a); + A(0xca, set1IYD, a); A(0xcb, set1IYE, a); + A(0xcc, set1IYH, a); A(0xcd, set1IYL, a); + A(0xce, set1IY, a); A(0xcf, set1IYA, a); + + A(0xd0, set2IYB, a); A(0xd1, set2IYC, a); + A(0xd2, set2IYD, a); A(0xd3, set2IYE, a); + A(0xd4, set2IYH, a); A(0xd5, set2IYL, a); + A(0xd6, set2IY, a); A(0xd7, set2IYA, a); + A(0xd8, set3IYB, a); A(0xd9, set3IYC, a); + A(0xda, set3IYD, a); A(0xdb, set3IYE, a); + A(0xdc, set3IYH, a); A(0xdd, set3IYL, a); + A(0xde, set3IY, a); A(0xdf, set3IYA, a); + + A(0xe0, set4IYB, a); A(0xe1, set4IYC, a); + A(0xe2, set4IYD, a); A(0xe3, set4IYE, a); + A(0xe4, set4IYH, a); A(0xe5, set4IYL, a); + A(0xe6, set4IY, a); A(0xe7, set4IYA, a); + A(0xe8, set5IYB, a); A(0xe9, set5IYC, a); + A(0xea, set5IYD, a); A(0xeb, set5IYE, a); + A(0xec, set5IYH, a); A(0xed, set5IYL, a); + A(0xee, set5IY, a); A(0xef, set5IYA, a); + + A(0xf0, set6IYB, a); A(0xf1, set6IYC, a); + A(0xf2, set6IYD, a); A(0xf3, set6IYE, a); + A(0xf4, set6IYH, a); A(0xf5, set6IYL, a); + A(0xf6, set6IY, a); A(0xf7, set6IYA, a); + A(0xf8, set7IYB, a); A(0xf9, set7IYC, a); + A(0xfa, set7IYD, a); A(0xfb, set7IYE, a); + A(0xfc, set7IYH, a); A(0xfd, set7IYL, a); + A(0xfe, set7IY, a); A(0xff, set7IYA, a); + } +} + +void z80::ddcb(uint8_t op, uint8_t a) { + + switch (op) { + A(0x00, rlcIXB, a); A(0x01, rlcIXC, a); + A(0x02, rlcIXD, a); A(0x03, rlcIXE, a); + A(0x04, rlcIXH, a); A(0x05, rlcIXL, a); + A(0x06, rlcIX, a); A(0x07, rlcIXA, a); + A(0x08, rrcIXB, a); A(0x09, rrcIXC, a); + A(0x0a, rrcIXD, a); A(0x0b, rrcIXE, a); + A(0x0c, rrcIXH, a); A(0x0d, rrcIXL, a); + A(0x0e, rrcIX, a); A(0x0f, rrcIXA, a); + + A(0x10, rlIXB, a); A(0x11, rlIXC, a); + A(0x12, rlIXD, a); A(0x13, rlIXE, a); + A(0x14, rlIXH, a); A(0x15, rlIXL, a); + A(0x16, rlIX, a); A(0x17, rlIXA, a); + A(0x18, rrIXB, a); A(0x19, rrIXC, a); + A(0x1a, rrIXD, a); A(0x1b, rrIXE, a); + A(0x1c, rrIXH, a); A(0x1d, rrIXL, a); + A(0x1e, rrIX, a); A(0x1f, rrIXA, a); + + A(0x20, slaIXB, a); A(0x21, slaIXC, a); + A(0x22, slaIXD, a); A(0x23, slaIXE, a); + A(0x24, slaIXH, a); A(0x25, slaIXL, a); + A(0x26, slaIX, a); A(0x27, slaIXA, a); + A(0x28, sraIXB, a); A(0x29, sraIXC, a); + A(0x2a, sraIXD, a); A(0x2b, sraIXE, a); + A(0x2c, sraIXH, a); A(0x2d, sraIXL, a); + A(0x2e, sraIX, a); A(0x2f, sraIXA, a); + + A(0x30, sllIXB, a); A(0x31, sllIXC, a); + A(0x32, sllIXD, a); A(0x33, sllIXE, a); + A(0x34, sllIXH, a); A(0x35, sllIXL, a); + A(0x36, sllIX, a); A(0x37, sllIXA, a); + A(0x38, srlIXB, a); A(0x39, srlIXC, a); + A(0x3a, srlIXD, a); A(0x3b, srlIXE, a); + A(0x3c, srlIXH, a); A(0x3d, srlIXL, a); + A(0x3e, srlIX, a); A(0x3f, srlIXA, a); + + A(0x40, bit0IX, a); A(0x41, bit0IX, a); + A(0x42, bit0IX, a); A(0x43, bit0IX, a); + A(0x44, bit0IX, a); A(0x45, bit0IX, a); + A(0x46, bit0IX, a); A(0x47, bit0IX, a); + A(0x48, bit1IX, a); A(0x49, bit1IX, a); + A(0x4a, bit1IX, a); A(0x4b, bit1IX, a); + A(0x4c, bit1IX, a); A(0x4d, bit1IX, a); + A(0x4e, bit1IX, a); A(0x4f, bit1IX, a); + + A(0x50, bit2IX, a); A(0x51, bit2IX, a); + A(0x52, bit2IX, a); A(0x53, bit2IX, a); + A(0x54, bit2IX, a); A(0x55, bit2IX, a); + A(0x56, bit2IX, a); A(0x57, bit2IX, a); + A(0x58, bit3IX, a); A(0x59, bit3IX, a); + A(0x5a, bit3IX, a); A(0x5b, bit3IX, a); + A(0x5c, bit3IX, a); A(0x5d, bit3IX, a); + A(0x5e, bit3IX, a); A(0x5f, bit3IX, a); + + A(0x60, bit4IX, a); A(0x61, bit4IX, a); + A(0x62, bit4IX, a); A(0x63, bit4IX, a); + A(0x64, bit4IX, a); A(0x65, bit4IX, a); + A(0x66, bit4IX, a); A(0x67, bit4IX, a); + A(0x68, bit5IX, a); A(0x69, bit5IX, a); + A(0x6a, bit5IX, a); A(0x6b, bit5IX, a); + A(0x6c, bit5IX, a); A(0x6d, bit5IX, a); + A(0x6e, bit5IX, a); A(0x6f, bit5IX, a); + + A(0x70, bit6IX, a); A(0x71, bit6IX, a); + A(0x72, bit6IX, a); A(0x73, bit6IX, a); + A(0x74, bit6IX, a); A(0x75, bit6IX, a); + A(0x76, bit6IX, a); A(0x77, bit6IX, a); + A(0x78, bit7IX, a); A(0x79, bit7IX, a); + A(0x7a, bit7IX, a); A(0x7b, bit7IX, a); + A(0x7c, bit7IX, a); A(0x7d, bit7IX, a); + A(0x7e, bit7IX, a); A(0x7f, bit7IX, a); + + A(0x80, res0IXB, a); A(0x81, res0IXC, a); + A(0x82, res0IXD, a); A(0x83, res0IXE, a); + A(0x84, res0IXH, a); A(0x85, res0IXL, a); + A(0x86, res0IX, a); A(0x87, res0IXA, a); + A(0x88, res1IXB, a); A(0x89, res1IXC, a); + A(0x8a, res1IXD, a); A(0x8b, res1IXE, a); + A(0x8c, res1IXH, a); A(0x8d, res1IXL, a); + A(0x8e, res1IX, a); A(0x8f, res1IXA, a); + + A(0x90, res2IXB, a); A(0x91, res2IXC, a); + A(0x92, res2IXD, a); A(0x93, res2IXE, a); + A(0x94, res2IXH, a); A(0x95, res2IXL, a); + A(0x96, res2IX, a); A(0x97, res2IXA, a); + A(0x98, res3IXB, a); A(0x99, res3IXC, a); + A(0x9a, res3IXD, a); A(0x9b, res3IXE, a); + A(0x9c, res3IXH, a); A(0x9d, res3IXL, a); + A(0x9e, res3IX, a); A(0x9f, res3IXA, a); + + A(0xa0, res4IXB, a); A(0xa1, res4IXC, a); + A(0xa2, res4IXD, a); A(0xa3, res4IXE, a); + A(0xa4, res4IXH, a); A(0xa5, res4IXL, a); + A(0xa6, res4IX, a); A(0xa7, res4IXA, a); + A(0xa8, res5IXB, a); A(0xa9, res5IXC, a); + A(0xaa, res5IXD, a); A(0xab, res5IXE, a); + A(0xac, res5IXH, a); A(0xad, res5IXL, a); + A(0xae, res5IX, a); A(0xaf, res5IXA, a); + + A(0xb0, res6IXB, a); A(0xb1, res6IXC, a); + A(0xb2, res6IXD, a); A(0xb3, res6IXE, a); + A(0xb4, res6IXH, a); A(0xb5, res6IXL, a); + A(0xb6, res6IX, a); A(0xb7, res6IXA, a); + A(0xb8, res7IXB, a); A(0xb9, res7IXC, a); + A(0xba, res7IXD, a); A(0xbb, res7IXE, a); + A(0xbc, res7IXH, a); A(0xbd, res7IXL, a); + A(0xbe, res7IX, a); A(0xbf, res7IXA, a); + + A(0xc0, set0IXB, a); A(0xc1, set0IXC, a); + A(0xc2, set0IXD, a); A(0xc3, set0IXE, a); + A(0xc4, set0IXH, a); A(0xc5, set0IXL, a); + A(0xc6, set0IX, a); A(0xc7, set0IXA, a); + A(0xc8, set1IXB, a); A(0xc9, set1IXC, a); + A(0xca, set1IXD, a); A(0xcb, set1IXE, a); + A(0xcc, set1IXH, a); A(0xcd, set1IXL, a); + A(0xce, set1IX, a); A(0xcf, set1IXA, a); + + A(0xd0, set2IXB, a); A(0xd1, set2IXC, a); + A(0xd2, set2IXD, a); A(0xd3, set2IXE, a); + A(0xd4, set2IXH, a); A(0xd5, set2IXL, a); + A(0xd6, set2IX, a); A(0xd7, set2IXA, a); + A(0xd8, set3IXB, a); A(0xd9, set3IXC, a); + A(0xda, set3IXD, a); A(0xdb, set3IXE, a); + A(0xdc, set3IXH, a); A(0xdd, set3IXL, a); + A(0xde, set3IX, a); A(0xdf, set3IXA, a); + + A(0xe0, set4IXB, a); A(0xe1, set4IXC, a); + A(0xe2, set4IXD, a); A(0xe3, set4IXE, a); + A(0xe4, set4IXH, a); A(0xe5, set4IXL, a); + A(0xe6, set4IX, a); A(0xe7, set4IXA, a); + A(0xe8, set5IXB, a); A(0xe9, set5IXC, a); + A(0xea, set5IXD, a); A(0xeb, set5IXE, a); + A(0xec, set5IXH, a); A(0xed, set5IXL, a); + A(0xee, set5IX, a); A(0xef, set5IXA, a); + + A(0xf0, set6IXB, a); A(0xf1, set6IXC, a); + A(0xf2, set6IXD, a); A(0xf3, set6IXE, a); + A(0xf4, set6IXH, a); A(0xf5, set6IXL, a); + A(0xf6, set6IX, a); A(0xf7, set6IXA, a); + A(0xf8, set7IXB, a); A(0xf9, set7IXC, a); + A(0xfa, set7IXD, a); A(0xfb, set7IXE, a); + A(0xfc, set7IXH, a); A(0xfd, set7IXL, a); + A(0xfe, set7IX, a); A(0xff, set7IXA, a); + } +} diff --git a/z80.h b/z80.h index ed95f7a..e2737c6 100644 --- a/z80.h +++ b/z80.h @@ -7,7 +7,7 @@ class z80: public CPU { public: - z80(Memory &, PortDevice &); + z80(Memory &m, PortDevice &ports): CPU(m), _ports(&ports) {} void run(unsigned); void reset(); @@ -73,10 +73,13 @@ private: uint8_t _fetch_op(); - typedef void (z80::*OP_IDX)(uint8_t); - void _step_idx(OP_IDX ops[]); + typedef void (z80::*EXT_OP)(uint8_t, uint8_t); + void ddcb(uint8_t op, uint8_t a); + void fdcb(uint8_t op, uint8_t a); - void _ddfd(uint16_t &ix, uint8_t &ixL, uint8_t &ixH, OP_IDX ops[]); + void _step_idx(EXT_OP op); + + void _ddfd(uint16_t &ix, uint8_t &ixL, uint8_t &ixH, EXT_OP op); union { struct { @@ -138,8 +141,6 @@ private: int _irq_pending; PortDevice *_ports; - OP_IDX _ddcb[256], _fdcb[256]; - uint8_t parity_table(uint8_t); inline uint8_t _rb(Memory::address a) { @@ -703,7 +704,7 @@ private: A = _ports->in(p, this); } inline void callc() { _call(flags.C); } - inline void dd() { _ddfd(IX, IXL, IXH, _ddcb); } + inline void dd() { _ddfd(IX, IXL, IXH, &z80::ddcb); } inline void sbca() { _sbc(_rb(PC++)); } inline void rst18() { _mc(IR, 11); _push(PC); PC = 0x18; } @@ -753,7 +754,7 @@ private: inline void jpm() { _jmp(flags.S); } inline void ei() { _iff1 = _iff2 = true; } inline void callm() { _call(flags.S); } - inline void fd() { _ddfd(IY, IYL, IYH, _fdcb); } + inline void fd() { _ddfd(IY, IYL, IYH, &z80::fdcb); } inline void cp() { _cmp(_rb(PC++)); } inline void rst38() { _mc(IR, 11); _push(PC); PC = 0x38; } @@ -1182,303 +1183,303 @@ private: inline void _rlcIX(uint8_t &b, uint8_t o) { uint16_t a = _rbIX(b, o); _rlc(b); _sb(a, b); } - void rlcIXB(uint8_t o) { _rlcIX(B, o); } - void rlcIXC(uint8_t o) { _rlcIX(C, o); } - void rlcIXD(uint8_t o) { _rlcIX(D, o); } - void rlcIXE(uint8_t o) { _rlcIX(E, o); } - void rlcIXH(uint8_t o) { _rlcIX(H, o); } - void rlcIXL(uint8_t o) { _rlcIX(L, o); } - void rlcIX(uint8_t o) { uint8_t b; _rlcIX(b, o); } - void rlcIXA(uint8_t o) { _rlcIX(A, o); } + inline void rlcIXB(uint8_t o) { _rlcIX(B, o); } + inline void rlcIXC(uint8_t o) { _rlcIX(C, o); } + inline void rlcIXD(uint8_t o) { _rlcIX(D, o); } + inline void rlcIXE(uint8_t o) { _rlcIX(E, o); } + inline void rlcIXH(uint8_t o) { _rlcIX(H, o); } + inline void rlcIXL(uint8_t o) { _rlcIX(L, o); } + inline void rlcIX(uint8_t o) { uint8_t b; _rlcIX(b, o); } + inline void rlcIXA(uint8_t o) { _rlcIX(A, o); } // 0x08 inline void _rrcIX(uint8_t &b, uint8_t o) { uint16_t a = _rbIX(b, o); _rrc(b); _sb(a, b); } - void rrcIXB(uint8_t o) { _rrcIX(B, o); } - void rrcIXC(uint8_t o) { _rrcIX(C, o); } - void rrcIXD(uint8_t o) { _rrcIX(D, o); } - void rrcIXE(uint8_t o) { _rrcIX(E, o); } - void rrcIXH(uint8_t o) { _rrcIX(H, o); } - void rrcIXL(uint8_t o) { _rrcIX(L, o); } - void rrcIX(uint8_t o) { uint8_t b; _rrcIX(b, o); } - void rrcIXA(uint8_t o) { _rrcIX(A, o); } + inline void rrcIXB(uint8_t o) { _rrcIX(B, o); } + inline void rrcIXC(uint8_t o) { _rrcIX(C, o); } + inline void rrcIXD(uint8_t o) { _rrcIX(D, o); } + inline void rrcIXE(uint8_t o) { _rrcIX(E, o); } + inline void rrcIXH(uint8_t o) { _rrcIX(H, o); } + inline void rrcIXL(uint8_t o) { _rrcIX(L, o); } + inline void rrcIX(uint8_t o) { uint8_t b; _rrcIX(b, o); } + inline void rrcIXA(uint8_t o) { _rrcIX(A, o); } // 0x10 inline void _rlIX(uint8_t &b, uint8_t o) { uint16_t a = _rbIX(b, o); _rl(b); _sb(a, b); } - void rlIXB(uint8_t o) { _rlIX(B, o); } - void rlIXC(uint8_t o) { _rlIX(C, o); } - void rlIXD(uint8_t o) { _rlIX(D, o); } - void rlIXE(uint8_t o) { _rlIX(E, o); } - void rlIXH(uint8_t o) { _rlIX(H, o); } - void rlIXL(uint8_t o) { _rlIX(L, o); } - void rlIX(uint8_t o) { uint8_t b; _rlIX(b, o); } - void rlIXA(uint8_t o) { _rlIX(A, o); } + inline void rlIXB(uint8_t o) { _rlIX(B, o); } + inline void rlIXC(uint8_t o) { _rlIX(C, o); } + inline void rlIXD(uint8_t o) { _rlIX(D, o); } + inline void rlIXE(uint8_t o) { _rlIX(E, o); } + inline void rlIXH(uint8_t o) { _rlIX(H, o); } + inline void rlIXL(uint8_t o) { _rlIX(L, o); } + inline void rlIX(uint8_t o) { uint8_t b; _rlIX(b, o); } + inline void rlIXA(uint8_t o) { _rlIX(A, o); } // 0x18 inline void _rrIX(uint8_t &b, uint8_t o) { uint16_t a = _rbIX(b, o); _rr(b); _sb(a, b); } - void rrIXB(uint8_t o) { _rrIX(B, o); } - void rrIXC(uint8_t o) { _rrIX(C, o); } - void rrIXD(uint8_t o) { _rrIX(D, o); } - void rrIXE(uint8_t o) { _rrIX(E, o); } - void rrIXH(uint8_t o) { _rrIX(H, o); } - void rrIXL(uint8_t o) { _rrIX(L, o); } - void rrIX(uint8_t o) { uint8_t b; _rrIX(b, o); } - void rrIXA(uint8_t o) { _rrIX(A, o); } + inline void rrIXB(uint8_t o) { _rrIX(B, o); } + inline void rrIXC(uint8_t o) { _rrIX(C, o); } + inline void rrIXD(uint8_t o) { _rrIX(D, o); } + inline void rrIXE(uint8_t o) { _rrIX(E, o); } + inline void rrIXH(uint8_t o) { _rrIX(H, o); } + inline void rrIXL(uint8_t o) { _rrIX(L, o); } + inline void rrIX(uint8_t o) { uint8_t b; _rrIX(b, o); } + inline void rrIXA(uint8_t o) { _rrIX(A, o); } // 0x20 inline void _slaIX(uint8_t &b, uint8_t o) { uint16_t a = _rbIX(b, o); _sla(b); _sb(a, b); } - void slaIXB(uint8_t o) { _slaIX(B, o); } - void slaIXC(uint8_t o) { _slaIX(C, o); } - void slaIXD(uint8_t o) { _slaIX(D, o); } - void slaIXE(uint8_t o) { _slaIX(E, o); } - void slaIXH(uint8_t o) { _slaIX(H, o); } - void slaIXL(uint8_t o) { _slaIX(L, o); } - void slaIX(uint8_t o) { uint8_t b; _slaIX(b, o); } - void slaIXA(uint8_t o) { _slaIX(A, o); } + inline void slaIXB(uint8_t o) { _slaIX(B, o); } + inline void slaIXC(uint8_t o) { _slaIX(C, o); } + inline void slaIXD(uint8_t o) { _slaIX(D, o); } + inline void slaIXE(uint8_t o) { _slaIX(E, o); } + inline void slaIXH(uint8_t o) { _slaIX(H, o); } + inline void slaIXL(uint8_t o) { _slaIX(L, o); } + inline void slaIX(uint8_t o) { uint8_t b; _slaIX(b, o); } + inline void slaIXA(uint8_t o) { _slaIX(A, o); } // 0x28 inline void _sraIX(uint8_t &b, uint8_t o) { uint16_t a = _rbIX(b, o); _sra(b); _sb(a, b); } - void sraIXB(uint8_t o) { _sraIX(B, o); } - void sraIXC(uint8_t o) { _sraIX(C, o); } - void sraIXD(uint8_t o) { _sraIX(D, o); } - void sraIXE(uint8_t o) { _sraIX(E, o); } - void sraIXH(uint8_t o) { _sraIX(H, o); } - void sraIXL(uint8_t o) { _sraIX(L, o); } - void sraIX(uint8_t o) { uint8_t b; _sraIX(b, o); } - void sraIXA(uint8_t o) { _sraIX(A, o); } + inline void sraIXB(uint8_t o) { _sraIX(B, o); } + inline void sraIXC(uint8_t o) { _sraIX(C, o); } + inline void sraIXD(uint8_t o) { _sraIX(D, o); } + inline void sraIXE(uint8_t o) { _sraIX(E, o); } + inline void sraIXH(uint8_t o) { _sraIX(H, o); } + inline void sraIXL(uint8_t o) { _sraIX(L, o); } + inline void sraIX(uint8_t o) { uint8_t b; _sraIX(b, o); } + inline void sraIXA(uint8_t o) { _sraIX(A, o); } // 0x30 inline void _sllIX(uint8_t &b, uint8_t o) { uint16_t a = _rbIX(b, o); _sll(b); _sb(a, b); } - void sllIXB(uint8_t o) { _sllIX(B, o); } - void sllIXC(uint8_t o) { _sllIX(C, o); } - void sllIXD(uint8_t o) { _sllIX(D, o); } - void sllIXE(uint8_t o) { _sllIX(E, o); } - void sllIXH(uint8_t o) { _sllIX(H, o); } - void sllIXL(uint8_t o) { _sllIX(L, o); } - void sllIX(uint8_t o) { uint8_t b; _sllIX(b, o); } - void sllIXA(uint8_t o) { _sllIX(A, o); } + inline void sllIXB(uint8_t o) { _sllIX(B, o); } + inline void sllIXC(uint8_t o) { _sllIX(C, o); } + inline void sllIXD(uint8_t o) { _sllIX(D, o); } + inline void sllIXE(uint8_t o) { _sllIX(E, o); } + inline void sllIXH(uint8_t o) { _sllIX(H, o); } + inline void sllIXL(uint8_t o) { _sllIX(L, o); } + inline void sllIX(uint8_t o) { uint8_t b; _sllIX(b, o); } + inline void sllIXA(uint8_t o) { _sllIX(A, o); } // 0x38 inline void _srlIX(uint8_t &b, uint8_t o) { uint16_t a = _rbIX(b, o); _srl(b); _sb(a, b); } - void srlIXB(uint8_t o) { _srlIX(B, o); } - void srlIXC(uint8_t o) { _srlIX(C, o); } - void srlIXD(uint8_t o) { _srlIX(D, o); } - void srlIXE(uint8_t o) { _srlIX(E, o); } - void srlIXH(uint8_t o) { _srlIX(H, o); } - void srlIXL(uint8_t o) { _srlIX(L, o); } - void srlIX(uint8_t o) { uint8_t b; _srlIX(b, o); } - void srlIXA(uint8_t o) { _srlIX(A, o); } + inline void srlIXB(uint8_t o) { _srlIX(B, o); } + inline void srlIXC(uint8_t o) { _srlIX(C, o); } + inline void srlIXD(uint8_t o) { _srlIX(D, o); } + inline void srlIXE(uint8_t o) { _srlIX(E, o); } + inline void srlIXH(uint8_t o) { _srlIX(H, o); } + inline void srlIXL(uint8_t o) { _srlIX(L, o); } + inline void srlIX(uint8_t o) { uint8_t b; _srlIX(b, o); } + inline void srlIXA(uint8_t o) { _srlIX(A, o); } // 0x40 inline void _bitIX(int i, uint8_t o) { _bitI(i, _ads(IX, o)); } - void bit0IX(uint8_t o) { _bitIX(0, o); } + inline void bit0IX(uint8_t o) { _bitIX(0, o); } // 0x48 - void bit1IX(uint8_t o) { _bitIX(1, o); } + inline void bit1IX(uint8_t o) { _bitIX(1, o); } // 0x50 - void bit2IX(uint8_t o) { _bitIX(2, o); } + inline void bit2IX(uint8_t o) { _bitIX(2, o); } // 0x58 - void bit3IX(uint8_t o) { _bitIX(3, o); } + inline void bit3IX(uint8_t o) { _bitIX(3, o); } // 0x60 - void bit4IX(uint8_t o) { _bitIX(4, o); } + inline void bit4IX(uint8_t o) { _bitIX(4, o); } // 0x68 - void bit5IX(uint8_t o) { _bitIX(5, o); } + inline void bit5IX(uint8_t o) { _bitIX(5, o); } // 0x70 - void bit6IX(uint8_t o) { _bitIX(6, o); } + inline void bit6IX(uint8_t o) { _bitIX(6, o); } // 0x78 - void bit7IX(uint8_t o) { _bitIX(7, o); } + inline void bit7IX(uint8_t o) { _bitIX(7, o); } // 0x80 - void _resIX(uint8_t &b, uint8_t o, uint8_t m) { + inline void _resIX(uint8_t &b, uint8_t o, uint8_t m) { uint16_t a = _ads(IX, o); b = _rb(a) & m; _mc(a, 1); _sb(a, b); } - void res0IXB(uint8_t o) { _resIX(B, o, 0xfe); } - void res0IXC(uint8_t o) { _resIX(C, o, 0xfe); } - void res0IXD(uint8_t o) { _resIX(D, o, 0xfe); } - void res0IXE(uint8_t o) { _resIX(E, o, 0xfe); } - void res0IXH(uint8_t o) { _resIX(H, o, 0xfe); } - void res0IXL(uint8_t o) { _resIX(L, o, 0xfe); } - void res0IX(uint8_t o) { uint8_t b; _resIX(b, o, 0xfe); } - void res0IXA(uint8_t o) { _resIX(A, o, 0xfe); } + inline void res0IXB(uint8_t o) { _resIX(B, o, 0xfe); } + inline void res0IXC(uint8_t o) { _resIX(C, o, 0xfe); } + inline void res0IXD(uint8_t o) { _resIX(D, o, 0xfe); } + inline void res0IXE(uint8_t o) { _resIX(E, o, 0xfe); } + inline void res0IXH(uint8_t o) { _resIX(H, o, 0xfe); } + inline void res0IXL(uint8_t o) { _resIX(L, o, 0xfe); } + inline void res0IX(uint8_t o) { uint8_t b; _resIX(b, o, 0xfe); } + inline void res0IXA(uint8_t o) { _resIX(A, o, 0xfe); } // 0x88 - void res1IXB(uint8_t o) { _resIX(B, o, 0xfd); } - void res1IXC(uint8_t o) { _resIX(C, o, 0xfd); } - void res1IXD(uint8_t o) { _resIX(D, o, 0xfd); } - void res1IXE(uint8_t o) { _resIX(E, o, 0xfd); } - void res1IXH(uint8_t o) { _resIX(H, o, 0xfd); } - void res1IXL(uint8_t o) { _resIX(L, o, 0xfd); } - void res1IX(uint8_t o) { uint8_t b; _resIX(b, o, 0xfd); } - void res1IXA(uint8_t o) { _resIX(A, o, 0xfd); } + inline void res1IXB(uint8_t o) { _resIX(B, o, 0xfd); } + inline void res1IXC(uint8_t o) { _resIX(C, o, 0xfd); } + inline void res1IXD(uint8_t o) { _resIX(D, o, 0xfd); } + inline void res1IXE(uint8_t o) { _resIX(E, o, 0xfd); } + inline void res1IXH(uint8_t o) { _resIX(H, o, 0xfd); } + inline void res1IXL(uint8_t o) { _resIX(L, o, 0xfd); } + inline void res1IX(uint8_t o) { uint8_t b; _resIX(b, o, 0xfd); } + inline void res1IXA(uint8_t o) { _resIX(A, o, 0xfd); } // 0x90 - void res2IXB(uint8_t o) { _resIX(B, o, 0xfb); } - void res2IXC(uint8_t o) { _resIX(C, o, 0xfb); } - void res2IXD(uint8_t o) { _resIX(D, o, 0xfb); } - void res2IXE(uint8_t o) { _resIX(E, o, 0xfb); } - void res2IXH(uint8_t o) { _resIX(H, o, 0xfb); } - void res2IXL(uint8_t o) { _resIX(L, o, 0xfb); } - void res2IX(uint8_t o) { uint8_t b; _resIX(b, o, 0xfb); } - void res2IXA(uint8_t o) { _resIX(A, o, 0xfb); } + inline void res2IXB(uint8_t o) { _resIX(B, o, 0xfb); } + inline void res2IXC(uint8_t o) { _resIX(C, o, 0xfb); } + inline void res2IXD(uint8_t o) { _resIX(D, o, 0xfb); } + inline void res2IXE(uint8_t o) { _resIX(E, o, 0xfb); } + inline void res2IXH(uint8_t o) { _resIX(H, o, 0xfb); } + inline void res2IXL(uint8_t o) { _resIX(L, o, 0xfb); } + inline void res2IX(uint8_t o) { uint8_t b; _resIX(b, o, 0xfb); } + inline void res2IXA(uint8_t o) { _resIX(A, o, 0xfb); } // 0x98 - void res3IXB(uint8_t o) { _resIX(B, o, 0xf7); } - void res3IXC(uint8_t o) { _resIX(C, o, 0xf7); } - void res3IXD(uint8_t o) { _resIX(D, o, 0xf7); } - void res3IXE(uint8_t o) { _resIX(E, o, 0xf7); } - void res3IXH(uint8_t o) { _resIX(H, o, 0xf7); } - void res3IXL(uint8_t o) { _resIX(L, o, 0xf7); } - void res3IX(uint8_t o) { uint8_t b; _resIX(b, o, 0xf7); } - void res3IXA(uint8_t o) { _resIX(A, o, 0xf7); } + inline void res3IXB(uint8_t o) { _resIX(B, o, 0xf7); } + inline void res3IXC(uint8_t o) { _resIX(C, o, 0xf7); } + inline void res3IXD(uint8_t o) { _resIX(D, o, 0xf7); } + inline void res3IXE(uint8_t o) { _resIX(E, o, 0xf7); } + inline void res3IXH(uint8_t o) { _resIX(H, o, 0xf7); } + inline void res3IXL(uint8_t o) { _resIX(L, o, 0xf7); } + inline void res3IX(uint8_t o) { uint8_t b; _resIX(b, o, 0xf7); } + inline void res3IXA(uint8_t o) { _resIX(A, o, 0xf7); } // 0xa0 - void res4IXB(uint8_t o) { _resIX(B, o, 0xef); } - void res4IXC(uint8_t o) { _resIX(C, o, 0xef); } - void res4IXD(uint8_t o) { _resIX(D, o, 0xef); } - void res4IXE(uint8_t o) { _resIX(E, o, 0xef); } - void res4IXH(uint8_t o) { _resIX(H, o, 0xef); } - void res4IXL(uint8_t o) { _resIX(L, o, 0xef); } - void res4IX(uint8_t o) { uint8_t b; _resIX(b, o, 0xef); } - void res4IXA(uint8_t o) { _resIX(A, o, 0xef); } + inline void res4IXB(uint8_t o) { _resIX(B, o, 0xef); } + inline void res4IXC(uint8_t o) { _resIX(C, o, 0xef); } + inline void res4IXD(uint8_t o) { _resIX(D, o, 0xef); } + inline void res4IXE(uint8_t o) { _resIX(E, o, 0xef); } + inline void res4IXH(uint8_t o) { _resIX(H, o, 0xef); } + inline void res4IXL(uint8_t o) { _resIX(L, o, 0xef); } + inline void res4IX(uint8_t o) { uint8_t b; _resIX(b, o, 0xef); } + inline void res4IXA(uint8_t o) { _resIX(A, o, 0xef); } // 0xa8 - void res5IXB(uint8_t o) { _resIX(B, o, 0xdf); } - void res5IXC(uint8_t o) { _resIX(C, o, 0xdf); } - void res5IXD(uint8_t o) { _resIX(D, o, 0xdf); } - void res5IXE(uint8_t o) { _resIX(E, o, 0xdf); } - void res5IXH(uint8_t o) { _resIX(H, o, 0xdf); } - void res5IXL(uint8_t o) { _resIX(L, o, 0xdf); } - void res5IX(uint8_t o) { uint8_t b; _resIX(b, o, 0xdf); } - void res5IXA(uint8_t o) { _resIX(A, o, 0xdf); } + inline void res5IXB(uint8_t o) { _resIX(B, o, 0xdf); } + inline void res5IXC(uint8_t o) { _resIX(C, o, 0xdf); } + inline void res5IXD(uint8_t o) { _resIX(D, o, 0xdf); } + inline void res5IXE(uint8_t o) { _resIX(E, o, 0xdf); } + inline void res5IXH(uint8_t o) { _resIX(H, o, 0xdf); } + inline void res5IXL(uint8_t o) { _resIX(L, o, 0xdf); } + inline void res5IX(uint8_t o) { uint8_t b; _resIX(b, o, 0xdf); } + inline void res5IXA(uint8_t o) { _resIX(A, o, 0xdf); } // 0xb0 - void res6IXB(uint8_t o) { _resIX(B, o, 0xbf); } - void res6IXC(uint8_t o) { _resIX(C, o, 0xbf); } - void res6IXD(uint8_t o) { _resIX(D, o, 0xbf); } - void res6IXE(uint8_t o) { _resIX(E, o, 0xbf); } - void res6IXH(uint8_t o) { _resIX(H, o, 0xbf); } - void res6IXL(uint8_t o) { _resIX(L, o, 0xbf); } - void res6IX(uint8_t o) { uint8_t b; _resIX(b, o, 0xbf); } - void res6IXA(uint8_t o) { _resIX(A, o, 0xbf); } + inline void res6IXB(uint8_t o) { _resIX(B, o, 0xbf); } + inline void res6IXC(uint8_t o) { _resIX(C, o, 0xbf); } + inline void res6IXD(uint8_t o) { _resIX(D, o, 0xbf); } + inline void res6IXE(uint8_t o) { _resIX(E, o, 0xbf); } + inline void res6IXH(uint8_t o) { _resIX(H, o, 0xbf); } + inline void res6IXL(uint8_t o) { _resIX(L, o, 0xbf); } + inline void res6IX(uint8_t o) { uint8_t b; _resIX(b, o, 0xbf); } + inline void res6IXA(uint8_t o) { _resIX(A, o, 0xbf); } // 0xb8 - void res7IXB(uint8_t o) { _resIX(B, o, 0x7f); } - void res7IXC(uint8_t o) { _resIX(C, o, 0x7f); } - void res7IXD(uint8_t o) { _resIX(D, o, 0x7f); } - void res7IXE(uint8_t o) { _resIX(E, o, 0x7f); } - void res7IXH(uint8_t o) { _resIX(H, o, 0x7f); } - void res7IXL(uint8_t o) { _resIX(L, o, 0x7f); } - void res7IX(uint8_t o) { uint8_t b; _resIX(b, o, 0x7f); } - void res7IXA(uint8_t o) { _resIX(A, o, 0x7f); } + inline void res7IXB(uint8_t o) { _resIX(B, o, 0x7f); } + inline void res7IXC(uint8_t o) { _resIX(C, o, 0x7f); } + inline void res7IXD(uint8_t o) { _resIX(D, o, 0x7f); } + inline void res7IXE(uint8_t o) { _resIX(E, o, 0x7f); } + inline void res7IXH(uint8_t o) { _resIX(H, o, 0x7f); } + inline void res7IXL(uint8_t o) { _resIX(L, o, 0x7f); } + inline void res7IX(uint8_t o) { uint8_t b; _resIX(b, o, 0x7f); } + inline void res7IXA(uint8_t o) { _resIX(A, o, 0x7f); } // 0xc0 - void _setIX(uint8_t &b, uint8_t o, uint8_t m) { + inline void _setIX(uint8_t &b, uint8_t o, uint8_t m) { uint16_t a = _ads(IX, o); b = _rb(a) | m; _mc(a, 1); _sb(a, b); } - void set0IXB(uint8_t o) { _setIX(B, o, 0x01); } - void set0IXC(uint8_t o) { _setIX(C, o, 0x01); } - void set0IXD(uint8_t o) { _setIX(D, o, 0x01); } - void set0IXE(uint8_t o) { _setIX(E, o, 0x01); } - void set0IXH(uint8_t o) { _setIX(H, o, 0x01); } - void set0IXL(uint8_t o) { _setIX(L, o, 0x01); } - void set0IX(uint8_t o) { uint8_t b; _setIX(b, o, 0x01); } - void set0IXA(uint8_t o) { _setIX(A, o, 0x01); } + inline void set0IXB(uint8_t o) { _setIX(B, o, 0x01); } + inline void set0IXC(uint8_t o) { _setIX(C, o, 0x01); } + inline void set0IXD(uint8_t o) { _setIX(D, o, 0x01); } + inline void set0IXE(uint8_t o) { _setIX(E, o, 0x01); } + inline void set0IXH(uint8_t o) { _setIX(H, o, 0x01); } + inline void set0IXL(uint8_t o) { _setIX(L, o, 0x01); } + inline void set0IX(uint8_t o) { uint8_t b; _setIX(b, o, 0x01); } + inline void set0IXA(uint8_t o) { _setIX(A, o, 0x01); } // 0xc8 - void set1IXB(uint8_t o) { _setIX(B, o, 0x02); } - void set1IXC(uint8_t o) { _setIX(C, o, 0x02); } - void set1IXD(uint8_t o) { _setIX(D, o, 0x02); } - void set1IXE(uint8_t o) { _setIX(E, o, 0x02); } - void set1IXH(uint8_t o) { _setIX(H, o, 0x02); } - void set1IXL(uint8_t o) { _setIX(L, o, 0x02); } - void set1IX(uint8_t o) { uint8_t b; _setIX(b, o, 0x02); } - void set1IXA(uint8_t o) { _setIX(A, o, 0x02); } + inline void set1IXB(uint8_t o) { _setIX(B, o, 0x02); } + inline void set1IXC(uint8_t o) { _setIX(C, o, 0x02); } + inline void set1IXD(uint8_t o) { _setIX(D, o, 0x02); } + inline void set1IXE(uint8_t o) { _setIX(E, o, 0x02); } + inline void set1IXH(uint8_t o) { _setIX(H, o, 0x02); } + inline void set1IXL(uint8_t o) { _setIX(L, o, 0x02); } + inline void set1IX(uint8_t o) { uint8_t b; _setIX(b, o, 0x02); } + inline void set1IXA(uint8_t o) { _setIX(A, o, 0x02); } // 0xd0 - void set2IXB(uint8_t o) { _setIX(B, o, 0x04); } - void set2IXC(uint8_t o) { _setIX(C, o, 0x04); } - void set2IXD(uint8_t o) { _setIX(D, o, 0x04); } - void set2IXE(uint8_t o) { _setIX(E, o, 0x04); } - void set2IXH(uint8_t o) { _setIX(H, o, 0x04); } - void set2IXL(uint8_t o) { _setIX(L, o, 0x04); } - void set2IX(uint8_t o) { uint8_t b; _setIX(b, o, 0x04); } - void set2IXA(uint8_t o) { _setIX(A, o, 0x04); } + inline void set2IXB(uint8_t o) { _setIX(B, o, 0x04); } + inline void set2IXC(uint8_t o) { _setIX(C, o, 0x04); } + inline void set2IXD(uint8_t o) { _setIX(D, o, 0x04); } + inline void set2IXE(uint8_t o) { _setIX(E, o, 0x04); } + inline void set2IXH(uint8_t o) { _setIX(H, o, 0x04); } + inline void set2IXL(uint8_t o) { _setIX(L, o, 0x04); } + inline void set2IX(uint8_t o) { uint8_t b; _setIX(b, o, 0x04); } + inline void set2IXA(uint8_t o) { _setIX(A, o, 0x04); } // 0xd8 - void set3IXB(uint8_t o) { _setIX(B, o, 0x08); } - void set3IXC(uint8_t o) { _setIX(C, o, 0x08); } - void set3IXD(uint8_t o) { _setIX(D, o, 0x08); } - void set3IXE(uint8_t o) { _setIX(E, o, 0x08); } - void set3IXH(uint8_t o) { _setIX(H, o, 0x08); } - void set3IXL(uint8_t o) { _setIX(L, o, 0x08); } - void set3IX(uint8_t o) { uint8_t b; _setIX(b, o, 0x08); } - void set3IXA(uint8_t o) { _setIX(A, o, 0x08); } + inline void set3IXB(uint8_t o) { _setIX(B, o, 0x08); } + inline void set3IXC(uint8_t o) { _setIX(C, o, 0x08); } + inline void set3IXD(uint8_t o) { _setIX(D, o, 0x08); } + inline void set3IXE(uint8_t o) { _setIX(E, o, 0x08); } + inline void set3IXH(uint8_t o) { _setIX(H, o, 0x08); } + inline void set3IXL(uint8_t o) { _setIX(L, o, 0x08); } + inline void set3IX(uint8_t o) { uint8_t b; _setIX(b, o, 0x08); } + inline void set3IXA(uint8_t o) { _setIX(A, o, 0x08); } // 0xe0 - void set4IXB(uint8_t o) { _setIX(B, o, 0x10); } - void set4IXC(uint8_t o) { _setIX(C, o, 0x10); } - void set4IXD(uint8_t o) { _setIX(D, o, 0x10); } - void set4IXE(uint8_t o) { _setIX(E, o, 0x10); } - void set4IXH(uint8_t o) { _setIX(H, o, 0x10); } - void set4IXL(uint8_t o) { _setIX(L, o, 0x10); } - void set4IX(uint8_t o) { uint8_t b; _setIX(b, o, 0x10); } - void set4IXA(uint8_t o) { _setIX(A, o, 0x10); } + inline void set4IXB(uint8_t o) { _setIX(B, o, 0x10); } + inline void set4IXC(uint8_t o) { _setIX(C, o, 0x10); } + inline void set4IXD(uint8_t o) { _setIX(D, o, 0x10); } + inline void set4IXE(uint8_t o) { _setIX(E, o, 0x10); } + inline void set4IXH(uint8_t o) { _setIX(H, o, 0x10); } + inline void set4IXL(uint8_t o) { _setIX(L, o, 0x10); } + inline void set4IX(uint8_t o) { uint8_t b; _setIX(b, o, 0x10); } + inline void set4IXA(uint8_t o) { _setIX(A, o, 0x10); } // 0xe8 - void set5IXB(uint8_t o) { _setIX(B, o, 0x20); } - void set5IXC(uint8_t o) { _setIX(C, o, 0x20); } - void set5IXD(uint8_t o) { _setIX(D, o, 0x20); } - void set5IXE(uint8_t o) { _setIX(E, o, 0x20); } - void set5IXH(uint8_t o) { _setIX(H, o, 0x20); } - void set5IXL(uint8_t o) { _setIX(L, o, 0x20); } - void set5IX(uint8_t o) { uint8_t b; _setIX(b, o, 0x20); } - void set5IXA(uint8_t o) { _setIX(A, o, 0x20); } + inline void set5IXB(uint8_t o) { _setIX(B, o, 0x20); } + inline void set5IXC(uint8_t o) { _setIX(C, o, 0x20); } + inline void set5IXD(uint8_t o) { _setIX(D, o, 0x20); } + inline void set5IXE(uint8_t o) { _setIX(E, o, 0x20); } + inline void set5IXH(uint8_t o) { _setIX(H, o, 0x20); } + inline void set5IXL(uint8_t o) { _setIX(L, o, 0x20); } + inline void set5IX(uint8_t o) { uint8_t b; _setIX(b, o, 0x20); } + inline void set5IXA(uint8_t o) { _setIX(A, o, 0x20); } // 0xf0 - void set6IXB(uint8_t o) { _setIX(B, o, 0x40); } - void set6IXC(uint8_t o) { _setIX(C, o, 0x40); } - void set6IXD(uint8_t o) { _setIX(D, o, 0x40); } - void set6IXE(uint8_t o) { _setIX(E, o, 0x40); } - void set6IXH(uint8_t o) { _setIX(H, o, 0x40); } - void set6IXL(uint8_t o) { _setIX(L, o, 0x40); } - void set6IX(uint8_t o) { uint8_t b; _setIX(b, o, 0x40); } - void set6IXA(uint8_t o) { _setIX(A, o, 0x40); } + inline void set6IXB(uint8_t o) { _setIX(B, o, 0x40); } + inline void set6IXC(uint8_t o) { _setIX(C, o, 0x40); } + inline void set6IXD(uint8_t o) { _setIX(D, o, 0x40); } + inline void set6IXE(uint8_t o) { _setIX(E, o, 0x40); } + inline void set6IXH(uint8_t o) { _setIX(H, o, 0x40); } + inline void set6IXL(uint8_t o) { _setIX(L, o, 0x40); } + inline void set6IX(uint8_t o) { uint8_t b; _setIX(b, o, 0x40); } + inline void set6IXA(uint8_t o) { _setIX(A, o, 0x40); } // 0xf8 - void set7IXB(uint8_t o) { _setIX(B, o, 0x80); } - void set7IXC(uint8_t o) { _setIX(C, o, 0x80); } - void set7IXD(uint8_t o) { _setIX(D, o, 0x80); } - void set7IXE(uint8_t o) { _setIX(E, o, 0x80); } - void set7IXH(uint8_t o) { _setIX(H, o, 0x80); } - void set7IXL(uint8_t o) { _setIX(L, o, 0x80); } - void set7IX(uint8_t o) { uint8_t b; _setIX(b, o, 0x80); } - void set7IXA(uint8_t o) { _setIX(A, o, 0x80); } + inline void set7IXB(uint8_t o) { _setIX(B, o, 0x80); } + inline void set7IXC(uint8_t o) { _setIX(C, o, 0x80); } + inline void set7IXD(uint8_t o) { _setIX(D, o, 0x80); } + inline void set7IXE(uint8_t o) { _setIX(E, o, 0x80); } + inline void set7IXH(uint8_t o) { _setIX(H, o, 0x80); } + inline void set7IXL(uint8_t o) { _setIX(L, o, 0x80); } + inline void set7IX(uint8_t o) { uint8_t b; _setIX(b, o, 0x80); } + inline void set7IXA(uint8_t o) { _setIX(A, o, 0x80); } // 0xFDCB extended instructions @@ -1493,303 +1494,303 @@ private: inline void _rlcIY(uint8_t &b, uint8_t o) { uint16_t a = _rbIY(b, o); _rlc(b); _sb(a, b); } - void rlcIYB(uint8_t o) { _rlcIY(B, o); } - void rlcIYC(uint8_t o) { _rlcIY(C, o); } - void rlcIYD(uint8_t o) { _rlcIY(D, o); } - void rlcIYE(uint8_t o) { _rlcIY(E, o); } - void rlcIYH(uint8_t o) { _rlcIY(H, o); } - void rlcIYL(uint8_t o) { _rlcIY(L, o); } - void rlcIY(uint8_t o) { uint8_t b; _rlcIY(b, o); } - void rlcIYA(uint8_t o) { _rlcIY(A, o); } + inline void rlcIYB(uint8_t o) { _rlcIY(B, o); } + inline void rlcIYC(uint8_t o) { _rlcIY(C, o); } + inline void rlcIYD(uint8_t o) { _rlcIY(D, o); } + inline void rlcIYE(uint8_t o) { _rlcIY(E, o); } + inline void rlcIYH(uint8_t o) { _rlcIY(H, o); } + inline void rlcIYL(uint8_t o) { _rlcIY(L, o); } + inline void rlcIY(uint8_t o) { uint8_t b; _rlcIY(b, o); } + inline void rlcIYA(uint8_t o) { _rlcIY(A, o); } // 0x08 inline void _rrcIY(uint8_t &b, uint8_t o) { uint16_t a = _rbIY(b, o); _rrc(b); _sb(a, b); } - void rrcIYB(uint8_t o) { _rrcIY(B, o); } - void rrcIYC(uint8_t o) { _rrcIY(C, o); } - void rrcIYD(uint8_t o) { _rrcIY(D, o); } - void rrcIYE(uint8_t o) { _rrcIY(E, o); } - void rrcIYH(uint8_t o) { _rrcIY(H, o); } - void rrcIYL(uint8_t o) { _rrcIY(L, o); } - void rrcIY(uint8_t o) { uint8_t b; _rrcIY(b, o); } - void rrcIYA(uint8_t o) { _rrcIY(A, o); } + inline void rrcIYB(uint8_t o) { _rrcIY(B, o); } + inline void rrcIYC(uint8_t o) { _rrcIY(C, o); } + inline void rrcIYD(uint8_t o) { _rrcIY(D, o); } + inline void rrcIYE(uint8_t o) { _rrcIY(E, o); } + inline void rrcIYH(uint8_t o) { _rrcIY(H, o); } + inline void rrcIYL(uint8_t o) { _rrcIY(L, o); } + inline void rrcIY(uint8_t o) { uint8_t b; _rrcIY(b, o); } + inline void rrcIYA(uint8_t o) { _rrcIY(A, o); } // 0x10 inline void _rlIY(uint8_t &b, uint8_t o) { uint16_t a = _rbIY(b, o); _rl(b); _sb(a, b); } - void rlIYB(uint8_t o) { _rlIY(B, o); } - void rlIYC(uint8_t o) { _rlIY(C, o); } - void rlIYD(uint8_t o) { _rlIY(D, o); } - void rlIYE(uint8_t o) { _rlIY(E, o); } - void rlIYH(uint8_t o) { _rlIY(H, o); } - void rlIYL(uint8_t o) { _rlIY(L, o); } - void rlIY(uint8_t o) { uint8_t b; _rlIY(b, o); } - void rlIYA(uint8_t o) { _rlIY(A, o); } + inline void rlIYB(uint8_t o) { _rlIY(B, o); } + inline void rlIYC(uint8_t o) { _rlIY(C, o); } + inline void rlIYD(uint8_t o) { _rlIY(D, o); } + inline void rlIYE(uint8_t o) { _rlIY(E, o); } + inline void rlIYH(uint8_t o) { _rlIY(H, o); } + inline void rlIYL(uint8_t o) { _rlIY(L, o); } + inline void rlIY(uint8_t o) { uint8_t b; _rlIY(b, o); } + inline void rlIYA(uint8_t o) { _rlIY(A, o); } // 0x18 inline void _rrIY(uint8_t &b, uint8_t o) { uint16_t a = _rbIY(b, o); _rr(b); _sb(a, b); } - void rrIYB(uint8_t o) { _rrIY(B, o); } - void rrIYC(uint8_t o) { _rrIY(C, o); } - void rrIYD(uint8_t o) { _rrIY(D, o); } - void rrIYE(uint8_t o) { _rrIY(E, o); } - void rrIYH(uint8_t o) { _rrIY(H, o); } - void rrIYL(uint8_t o) { _rrIY(L, o); } - void rrIY(uint8_t o) { uint8_t b; _rrIY(b, o); } - void rrIYA(uint8_t o) { _rrIY(A, o); } + inline void rrIYB(uint8_t o) { _rrIY(B, o); } + inline void rrIYC(uint8_t o) { _rrIY(C, o); } + inline void rrIYD(uint8_t o) { _rrIY(D, o); } + inline void rrIYE(uint8_t o) { _rrIY(E, o); } + inline void rrIYH(uint8_t o) { _rrIY(H, o); } + inline void rrIYL(uint8_t o) { _rrIY(L, o); } + inline void rrIY(uint8_t o) { uint8_t b; _rrIY(b, o); } + inline void rrIYA(uint8_t o) { _rrIY(A, o); } // 0x20 inline void _slaIY(uint8_t &b, uint8_t o) { uint16_t a = _rbIY(b, o); _sla(b); _sb(a, b); } - void slaIYB(uint8_t o) { _slaIY(B, o); } - void slaIYC(uint8_t o) { _slaIY(C, o); } - void slaIYD(uint8_t o) { _slaIY(D, o); } - void slaIYE(uint8_t o) { _slaIY(E, o); } - void slaIYH(uint8_t o) { _slaIY(H, o); } - void slaIYL(uint8_t o) { _slaIY(L, o); } - void slaIY(uint8_t o) { uint8_t b; _slaIY(b, o); } - void slaIYA(uint8_t o) { _slaIY(A, o); } + inline void slaIYB(uint8_t o) { _slaIY(B, o); } + inline void slaIYC(uint8_t o) { _slaIY(C, o); } + inline void slaIYD(uint8_t o) { _slaIY(D, o); } + inline void slaIYE(uint8_t o) { _slaIY(E, o); } + inline void slaIYH(uint8_t o) { _slaIY(H, o); } + inline void slaIYL(uint8_t o) { _slaIY(L, o); } + inline void slaIY(uint8_t o) { uint8_t b; _slaIY(b, o); } + inline void slaIYA(uint8_t o) { _slaIY(A, o); } // 0x28 inline void _sraIY(uint8_t &b, uint8_t o) { uint16_t a = _rbIY(b, o); _sra(b); _sb(a, b); } - void sraIYB(uint8_t o) { _sraIY(B, o); } - void sraIYC(uint8_t o) { _sraIY(C, o); } - void sraIYD(uint8_t o) { _sraIY(D, o); } - void sraIYE(uint8_t o) { _sraIY(E, o); } - void sraIYH(uint8_t o) { _sraIY(H, o); } - void sraIYL(uint8_t o) { _sraIY(L, o); } - void sraIY(uint8_t o) { uint8_t b; _sraIY(b, o); } - void sraIYA(uint8_t o) { _sraIY(A, o); } + inline void sraIYB(uint8_t o) { _sraIY(B, o); } + inline void sraIYC(uint8_t o) { _sraIY(C, o); } + inline void sraIYD(uint8_t o) { _sraIY(D, o); } + inline void sraIYE(uint8_t o) { _sraIY(E, o); } + inline void sraIYH(uint8_t o) { _sraIY(H, o); } + inline void sraIYL(uint8_t o) { _sraIY(L, o); } + inline void sraIY(uint8_t o) { uint8_t b; _sraIY(b, o); } + inline void sraIYA(uint8_t o) { _sraIY(A, o); } // 0x30 inline void _sllIY(uint8_t &b, uint8_t o) { uint16_t a = _rbIY(b, o); _sll(b); _sb(a, b); } - void sllIYB(uint8_t o) { _sllIY(B, o); } - void sllIYC(uint8_t o) { _sllIY(C, o); } - void sllIYD(uint8_t o) { _sllIY(D, o); } - void sllIYE(uint8_t o) { _sllIY(E, o); } - void sllIYH(uint8_t o) { _sllIY(H, o); } - void sllIYL(uint8_t o) { _sllIY(L, o); } - void sllIY(uint8_t o) { uint8_t b; _sllIY(b, o); } - void sllIYA(uint8_t o) { _sllIY(A, o); } + inline void sllIYB(uint8_t o) { _sllIY(B, o); } + inline void sllIYC(uint8_t o) { _sllIY(C, o); } + inline void sllIYD(uint8_t o) { _sllIY(D, o); } + inline void sllIYE(uint8_t o) { _sllIY(E, o); } + inline void sllIYH(uint8_t o) { _sllIY(H, o); } + inline void sllIYL(uint8_t o) { _sllIY(L, o); } + inline void sllIY(uint8_t o) { uint8_t b; _sllIY(b, o); } + inline void sllIYA(uint8_t o) { _sllIY(A, o); } // 0x38 inline void _srlIY(uint8_t &b, uint8_t o) { uint16_t a = _rbIY(b, o); _srl(b); _sb(a, b); } - void srlIYB(uint8_t o) { _srlIY(B, o); } - void srlIYC(uint8_t o) { _srlIY(C, o); } - void srlIYD(uint8_t o) { _srlIY(D, o); } - void srlIYE(uint8_t o) { _srlIY(E, o); } - void srlIYH(uint8_t o) { _srlIY(H, o); } - void srlIYL(uint8_t o) { _srlIY(L, o); } - void srlIY(uint8_t o) { uint8_t b; _srlIY(b, o); } - void srlIYA(uint8_t o) { _srlIY(A, o); } + inline void srlIYB(uint8_t o) { _srlIY(B, o); } + inline void srlIYC(uint8_t o) { _srlIY(C, o); } + inline void srlIYD(uint8_t o) { _srlIY(D, o); } + inline void srlIYE(uint8_t o) { _srlIY(E, o); } + inline void srlIYH(uint8_t o) { _srlIY(H, o); } + inline void srlIYL(uint8_t o) { _srlIY(L, o); } + inline void srlIY(uint8_t o) { uint8_t b; _srlIY(b, o); } + inline void srlIYA(uint8_t o) { _srlIY(A, o); } // 0x40 inline void _bitIY(int i, uint8_t o) { _bitI(i, _ads(IY, o)); } - void bit0IY(uint8_t o) { _bitIY(0, o); } + inline void bit0IY(uint8_t o) { _bitIY(0, o); } // 0x48 - void bit1IY(uint8_t o) { _bitIY(1, o); } + inline void bit1IY(uint8_t o) { _bitIY(1, o); } // 0x50 - void bit2IY(uint8_t o) { _bitIY(2, o); } + inline void bit2IY(uint8_t o) { _bitIY(2, o); } // 0x58 - void bit3IY(uint8_t o) { _bitIY(3, o); } + inline void bit3IY(uint8_t o) { _bitIY(3, o); } // 0x60 - void bit4IY(uint8_t o) { _bitIY(4, o); } + inline void bit4IY(uint8_t o) { _bitIY(4, o); } // 0x68 - void bit5IY(uint8_t o) { _bitIY(5, o); } + inline void bit5IY(uint8_t o) { _bitIY(5, o); } // 0x70 - void bit6IY(uint8_t o) { _bitIY(6, o); } + inline void bit6IY(uint8_t o) { _bitIY(6, o); } // 0x78 - void bit7IY(uint8_t o) { _bitIY(7, o); } + inline void bit7IY(uint8_t o) { _bitIY(7, o); } // 0x80 - void _resIY(uint8_t &b, uint8_t o, uint8_t m) { + inline void _resIY(uint8_t &b, uint8_t o, uint8_t m) { uint16_t a = _ads(IY, o); b = _rb(a) & m; _mc(a, 1); _sb(a, b); } - void res0IYB(uint8_t o) { _resIY(B, o, 0xfe); } - void res0IYC(uint8_t o) { _resIY(C, o, 0xfe); } - void res0IYD(uint8_t o) { _resIY(D, o, 0xfe); } - void res0IYE(uint8_t o) { _resIY(E, o, 0xfe); } - void res0IYH(uint8_t o) { _resIY(H, o, 0xfe); } - void res0IYL(uint8_t o) { _resIY(L, o, 0xfe); } - void res0IY(uint8_t o) { uint8_t b; _resIY(b, o, 0xfe); } - void res0IYA(uint8_t o) { _resIY(A, o, 0xfe); } + inline void res0IYB(uint8_t o) { _resIY(B, o, 0xfe); } + inline void res0IYC(uint8_t o) { _resIY(C, o, 0xfe); } + inline void res0IYD(uint8_t o) { _resIY(D, o, 0xfe); } + inline void res0IYE(uint8_t o) { _resIY(E, o, 0xfe); } + inline void res0IYH(uint8_t o) { _resIY(H, o, 0xfe); } + inline void res0IYL(uint8_t o) { _resIY(L, o, 0xfe); } + inline void res0IY(uint8_t o) { uint8_t b; _resIY(b, o, 0xfe); } + inline void res0IYA(uint8_t o) { _resIY(A, o, 0xfe); } // 0x88 - void res1IYB(uint8_t o) { _resIY(B, o, 0xfd); } - void res1IYC(uint8_t o) { _resIY(C, o, 0xfd); } - void res1IYD(uint8_t o) { _resIY(D, o, 0xfd); } - void res1IYE(uint8_t o) { _resIY(E, o, 0xfd); } - void res1IYH(uint8_t o) { _resIY(H, o, 0xfd); } - void res1IYL(uint8_t o) { _resIY(L, o, 0xfd); } - void res1IY(uint8_t o) { uint8_t b; _resIY(b, o, 0xfd); } - void res1IYA(uint8_t o) { _resIY(A, o, 0xfd); } + inline void res1IYB(uint8_t o) { _resIY(B, o, 0xfd); } + inline void res1IYC(uint8_t o) { _resIY(C, o, 0xfd); } + inline void res1IYD(uint8_t o) { _resIY(D, o, 0xfd); } + inline void res1IYE(uint8_t o) { _resIY(E, o, 0xfd); } + inline void res1IYH(uint8_t o) { _resIY(H, o, 0xfd); } + inline void res1IYL(uint8_t o) { _resIY(L, o, 0xfd); } + inline void res1IY(uint8_t o) { uint8_t b; _resIY(b, o, 0xfd); } + inline void res1IYA(uint8_t o) { _resIY(A, o, 0xfd); } // 0x90 - void res2IYB(uint8_t o) { _resIY(B, o, 0xfb); } - void res2IYC(uint8_t o) { _resIY(C, o, 0xfb); } - void res2IYD(uint8_t o) { _resIY(D, o, 0xfb); } - void res2IYE(uint8_t o) { _resIY(E, o, 0xfb); } - void res2IYH(uint8_t o) { _resIY(H, o, 0xfb); } - void res2IYL(uint8_t o) { _resIY(L, o, 0xfb); } - void res2IY(uint8_t o) { uint8_t b; _resIY(b, o, 0xfb); } - void res2IYA(uint8_t o) { _resIY(A, o, 0xfb); } + inline void res2IYB(uint8_t o) { _resIY(B, o, 0xfb); } + inline void res2IYC(uint8_t o) { _resIY(C, o, 0xfb); } + inline void res2IYD(uint8_t o) { _resIY(D, o, 0xfb); } + inline void res2IYE(uint8_t o) { _resIY(E, o, 0xfb); } + inline void res2IYH(uint8_t o) { _resIY(H, o, 0xfb); } + inline void res2IYL(uint8_t o) { _resIY(L, o, 0xfb); } + inline void res2IY(uint8_t o) { uint8_t b; _resIY(b, o, 0xfb); } + inline void res2IYA(uint8_t o) { _resIY(A, o, 0xfb); } // 0x98 - void res3IYB(uint8_t o) { _resIY(B, o, 0xf7); } - void res3IYC(uint8_t o) { _resIY(C, o, 0xf7); } - void res3IYD(uint8_t o) { _resIY(D, o, 0xf7); } - void res3IYE(uint8_t o) { _resIY(E, o, 0xf7); } - void res3IYH(uint8_t o) { _resIY(H, o, 0xf7); } - void res3IYL(uint8_t o) { _resIY(L, o, 0xf7); } - void res3IY(uint8_t o) { uint8_t b; _resIY(b, o, 0xf7); } - void res3IYA(uint8_t o) { _resIY(A, o, 0xf7); } + inline void res3IYB(uint8_t o) { _resIY(B, o, 0xf7); } + inline void res3IYC(uint8_t o) { _resIY(C, o, 0xf7); } + inline void res3IYD(uint8_t o) { _resIY(D, o, 0xf7); } + inline void res3IYE(uint8_t o) { _resIY(E, o, 0xf7); } + inline void res3IYH(uint8_t o) { _resIY(H, o, 0xf7); } + inline void res3IYL(uint8_t o) { _resIY(L, o, 0xf7); } + inline void res3IY(uint8_t o) { uint8_t b; _resIY(b, o, 0xf7); } + inline void res3IYA(uint8_t o) { _resIY(A, o, 0xf7); } // 0xa0 - void res4IYB(uint8_t o) { _resIY(B, o, 0xef); } - void res4IYC(uint8_t o) { _resIY(C, o, 0xef); } - void res4IYD(uint8_t o) { _resIY(D, o, 0xef); } - void res4IYE(uint8_t o) { _resIY(E, o, 0xef); } - void res4IYH(uint8_t o) { _resIY(H, o, 0xef); } - void res4IYL(uint8_t o) { _resIY(L, o, 0xef); } - void res4IY(uint8_t o) { uint8_t b; _resIY(b, o, 0xef); } - void res4IYA(uint8_t o) { _resIY(A, o, 0xef); } + inline void res4IYB(uint8_t o) { _resIY(B, o, 0xef); } + inline void res4IYC(uint8_t o) { _resIY(C, o, 0xef); } + inline void res4IYD(uint8_t o) { _resIY(D, o, 0xef); } + inline void res4IYE(uint8_t o) { _resIY(E, o, 0xef); } + inline void res4IYH(uint8_t o) { _resIY(H, o, 0xef); } + inline void res4IYL(uint8_t o) { _resIY(L, o, 0xef); } + inline void res4IY(uint8_t o) { uint8_t b; _resIY(b, o, 0xef); } + inline void res4IYA(uint8_t o) { _resIY(A, o, 0xef); } // 0xa8 - void res5IYB(uint8_t o) { _resIY(B, o, 0xdf); } - void res5IYC(uint8_t o) { _resIY(C, o, 0xdf); } - void res5IYD(uint8_t o) { _resIY(D, o, 0xdf); } - void res5IYE(uint8_t o) { _resIY(E, o, 0xdf); } - void res5IYH(uint8_t o) { _resIY(H, o, 0xdf); } - void res5IYL(uint8_t o) { _resIY(L, o, 0xdf); } - void res5IY(uint8_t o) { uint8_t b; _resIY(b, o, 0xdf); } - void res5IYA(uint8_t o) { _resIY(A, o, 0xdf); } + inline void res5IYB(uint8_t o) { _resIY(B, o, 0xdf); } + inline void res5IYC(uint8_t o) { _resIY(C, o, 0xdf); } + inline void res5IYD(uint8_t o) { _resIY(D, o, 0xdf); } + inline void res5IYE(uint8_t o) { _resIY(E, o, 0xdf); } + inline void res5IYH(uint8_t o) { _resIY(H, o, 0xdf); } + inline void res5IYL(uint8_t o) { _resIY(L, o, 0xdf); } + inline void res5IY(uint8_t o) { uint8_t b; _resIY(b, o, 0xdf); } + inline void res5IYA(uint8_t o) { _resIY(A, o, 0xdf); } // 0xb0 - void res6IYB(uint8_t o) { _resIY(B, o, 0xbf); } - void res6IYC(uint8_t o) { _resIY(C, o, 0xbf); } - void res6IYD(uint8_t o) { _resIY(D, o, 0xbf); } - void res6IYE(uint8_t o) { _resIY(E, o, 0xbf); } - void res6IYH(uint8_t o) { _resIY(H, o, 0xbf); } - void res6IYL(uint8_t o) { _resIY(L, o, 0xbf); } - void res6IY(uint8_t o) { uint8_t b; _resIY(b, o, 0xbf); } - void res6IYA(uint8_t o) { _resIY(A, o, 0xbf); } + inline void res6IYB(uint8_t o) { _resIY(B, o, 0xbf); } + inline void res6IYC(uint8_t o) { _resIY(C, o, 0xbf); } + inline void res6IYD(uint8_t o) { _resIY(D, o, 0xbf); } + inline void res6IYE(uint8_t o) { _resIY(E, o, 0xbf); } + inline void res6IYH(uint8_t o) { _resIY(H, o, 0xbf); } + inline void res6IYL(uint8_t o) { _resIY(L, o, 0xbf); } + inline void res6IY(uint8_t o) { uint8_t b; _resIY(b, o, 0xbf); } + inline void res6IYA(uint8_t o) { _resIY(A, o, 0xbf); } // 0xb8 - void res7IYB(uint8_t o) { _resIY(B, o, 0x7f); } - void res7IYC(uint8_t o) { _resIY(C, o, 0x7f); } - void res7IYD(uint8_t o) { _resIY(D, o, 0x7f); } - void res7IYE(uint8_t o) { _resIY(E, o, 0x7f); } - void res7IYH(uint8_t o) { _resIY(H, o, 0x7f); } - void res7IYL(uint8_t o) { _resIY(L, o, 0x7f); } - void res7IY(uint8_t o) { uint8_t b; _resIY(b, o, 0x7f); } - void res7IYA(uint8_t o) { _resIY(A, o, 0x7f); } + inline void res7IYB(uint8_t o) { _resIY(B, o, 0x7f); } + inline void res7IYC(uint8_t o) { _resIY(C, o, 0x7f); } + inline void res7IYD(uint8_t o) { _resIY(D, o, 0x7f); } + inline void res7IYE(uint8_t o) { _resIY(E, o, 0x7f); } + inline void res7IYH(uint8_t o) { _resIY(H, o, 0x7f); } + inline void res7IYL(uint8_t o) { _resIY(L, o, 0x7f); } + inline void res7IY(uint8_t o) { uint8_t b; _resIY(b, o, 0x7f); } + inline void res7IYA(uint8_t o) { _resIY(A, o, 0x7f); } // 0xc0 - void _setIY(uint8_t &b, uint8_t o, uint8_t m) { + inline void _setIY(uint8_t &b, uint8_t o, uint8_t m) { uint16_t a = _ads(IY, o); b = _rb(a) | m; _mc(a, 1); _sb(a, b); } - void set0IYB(uint8_t o) { _setIY(B, o, 0x01); } - void set0IYC(uint8_t o) { _setIY(C, o, 0x01); } - void set0IYD(uint8_t o) { _setIY(D, o, 0x01); } - void set0IYE(uint8_t o) { _setIY(E, o, 0x01); } - void set0IYH(uint8_t o) { _setIY(H, o, 0x01); } - void set0IYL(uint8_t o) { _setIY(L, o, 0x01); } - void set0IY(uint8_t o) { uint8_t b; _setIY(b, o, 0x01); } - void set0IYA(uint8_t o) { _setIY(A, o, 0x01); } + inline void set0IYB(uint8_t o) { _setIY(B, o, 0x01); } + inline void set0IYC(uint8_t o) { _setIY(C, o, 0x01); } + inline void set0IYD(uint8_t o) { _setIY(D, o, 0x01); } + inline void set0IYE(uint8_t o) { _setIY(E, o, 0x01); } + inline void set0IYH(uint8_t o) { _setIY(H, o, 0x01); } + inline void set0IYL(uint8_t o) { _setIY(L, o, 0x01); } + inline void set0IY(uint8_t o) { uint8_t b; _setIY(b, o, 0x01); } + inline void set0IYA(uint8_t o) { _setIY(A, o, 0x01); } // 0xc8 - void set1IYB(uint8_t o) { _setIY(B, o, 0x02); } - void set1IYC(uint8_t o) { _setIY(C, o, 0x02); } - void set1IYD(uint8_t o) { _setIY(D, o, 0x02); } - void set1IYE(uint8_t o) { _setIY(E, o, 0x02); } - void set1IYH(uint8_t o) { _setIY(H, o, 0x02); } - void set1IYL(uint8_t o) { _setIY(L, o, 0x02); } - void set1IY(uint8_t o) { uint8_t b; _setIY(b, o, 0x02); } - void set1IYA(uint8_t o) { _setIY(A, o, 0x02); } + inline void set1IYB(uint8_t o) { _setIY(B, o, 0x02); } + inline void set1IYC(uint8_t o) { _setIY(C, o, 0x02); } + inline void set1IYD(uint8_t o) { _setIY(D, o, 0x02); } + inline void set1IYE(uint8_t o) { _setIY(E, o, 0x02); } + inline void set1IYH(uint8_t o) { _setIY(H, o, 0x02); } + inline void set1IYL(uint8_t o) { _setIY(L, o, 0x02); } + inline void set1IY(uint8_t o) { uint8_t b; _setIY(b, o, 0x02); } + inline void set1IYA(uint8_t o) { _setIY(A, o, 0x02); } // 0xd0 - void set2IYB(uint8_t o) { _setIY(B, o, 0x04); } - void set2IYC(uint8_t o) { _setIY(C, o, 0x04); } - void set2IYD(uint8_t o) { _setIY(D, o, 0x04); } - void set2IYE(uint8_t o) { _setIY(E, o, 0x04); } - void set2IYH(uint8_t o) { _setIY(H, o, 0x04); } - void set2IYL(uint8_t o) { _setIY(L, o, 0x04); } - void set2IY(uint8_t o) { uint8_t b; _setIY(b, o, 0x04); } - void set2IYA(uint8_t o) { _setIY(A, o, 0x04); } + inline void set2IYB(uint8_t o) { _setIY(B, o, 0x04); } + inline void set2IYC(uint8_t o) { _setIY(C, o, 0x04); } + inline void set2IYD(uint8_t o) { _setIY(D, o, 0x04); } + inline void set2IYE(uint8_t o) { _setIY(E, o, 0x04); } + inline void set2IYH(uint8_t o) { _setIY(H, o, 0x04); } + inline void set2IYL(uint8_t o) { _setIY(L, o, 0x04); } + inline void set2IY(uint8_t o) { uint8_t b; _setIY(b, o, 0x04); } + inline void set2IYA(uint8_t o) { _setIY(A, o, 0x04); } // 0xd8 - void set3IYB(uint8_t o) { _setIY(B, o, 0x08); } - void set3IYC(uint8_t o) { _setIY(C, o, 0x08); } - void set3IYD(uint8_t o) { _setIY(D, o, 0x08); } - void set3IYE(uint8_t o) { _setIY(E, o, 0x08); } - void set3IYH(uint8_t o) { _setIY(H, o, 0x08); } - void set3IYL(uint8_t o) { _setIY(L, o, 0x08); } - void set3IY(uint8_t o) { uint8_t b; _setIY(b, o, 0x08); } - void set3IYA(uint8_t o) { _setIY(A, o, 0x08); } + inline void set3IYB(uint8_t o) { _setIY(B, o, 0x08); } + inline void set3IYC(uint8_t o) { _setIY(C, o, 0x08); } + inline void set3IYD(uint8_t o) { _setIY(D, o, 0x08); } + inline void set3IYE(uint8_t o) { _setIY(E, o, 0x08); } + inline void set3IYH(uint8_t o) { _setIY(H, o, 0x08); } + inline void set3IYL(uint8_t o) { _setIY(L, o, 0x08); } + inline void set3IY(uint8_t o) { uint8_t b; _setIY(b, o, 0x08); } + inline void set3IYA(uint8_t o) { _setIY(A, o, 0x08); } // 0xe0 - void set4IYB(uint8_t o) { _setIY(B, o, 0x10); } - void set4IYC(uint8_t o) { _setIY(C, o, 0x10); } - void set4IYD(uint8_t o) { _setIY(D, o, 0x10); } - void set4IYE(uint8_t o) { _setIY(E, o, 0x10); } - void set4IYH(uint8_t o) { _setIY(H, o, 0x10); } - void set4IYL(uint8_t o) { _setIY(L, o, 0x10); } - void set4IY(uint8_t o) { uint8_t b; _setIY(b, o, 0x10); } - void set4IYA(uint8_t o) { _setIY(A, o, 0x10); } + inline void set4IYB(uint8_t o) { _setIY(B, o, 0x10); } + inline void set4IYC(uint8_t o) { _setIY(C, o, 0x10); } + inline void set4IYD(uint8_t o) { _setIY(D, o, 0x10); } + inline void set4IYE(uint8_t o) { _setIY(E, o, 0x10); } + inline void set4IYH(uint8_t o) { _setIY(H, o, 0x10); } + inline void set4IYL(uint8_t o) { _setIY(L, o, 0x10); } + inline void set4IY(uint8_t o) { uint8_t b; _setIY(b, o, 0x10); } + inline void set4IYA(uint8_t o) { _setIY(A, o, 0x10); } // 0xe8 - void set5IYB(uint8_t o) { _setIY(B, o, 0x20); } - void set5IYC(uint8_t o) { _setIY(C, o, 0x20); } - void set5IYD(uint8_t o) { _setIY(D, o, 0x20); } - void set5IYE(uint8_t o) { _setIY(E, o, 0x20); } - void set5IYH(uint8_t o) { _setIY(H, o, 0x20); } - void set5IYL(uint8_t o) { _setIY(L, o, 0x20); } - void set5IY(uint8_t o) { uint8_t b; _setIY(b, o, 0x20); } - void set5IYA(uint8_t o) { _setIY(A, o, 0x20); } + inline void set5IYB(uint8_t o) { _setIY(B, o, 0x20); } + inline void set5IYC(uint8_t o) { _setIY(C, o, 0x20); } + inline void set5IYD(uint8_t o) { _setIY(D, o, 0x20); } + inline void set5IYE(uint8_t o) { _setIY(E, o, 0x20); } + inline void set5IYH(uint8_t o) { _setIY(H, o, 0x20); } + inline void set5IYL(uint8_t o) { _setIY(L, o, 0x20); } + inline void set5IY(uint8_t o) { uint8_t b; _setIY(b, o, 0x20); } + inline void set5IYA(uint8_t o) { _setIY(A, o, 0x20); } // 0xf0 - void set6IYB(uint8_t o) { _setIY(B, o, 0x40); } - void set6IYC(uint8_t o) { _setIY(C, o, 0x40); } - void set6IYD(uint8_t o) { _setIY(D, o, 0x40); } - void set6IYE(uint8_t o) { _setIY(E, o, 0x40); } - void set6IYH(uint8_t o) { _setIY(H, o, 0x40); } - void set6IYL(uint8_t o) { _setIY(L, o, 0x40); } - void set6IY(uint8_t o) { uint8_t b; _setIY(b, o, 0x40); } - void set6IYA(uint8_t o) { _setIY(A, o, 0x40); } + inline void set6IYB(uint8_t o) { _setIY(B, o, 0x40); } + inline void set6IYC(uint8_t o) { _setIY(C, o, 0x40); } + inline void set6IYD(uint8_t o) { _setIY(D, o, 0x40); } + inline void set6IYE(uint8_t o) { _setIY(E, o, 0x40); } + inline void set6IYH(uint8_t o) { _setIY(H, o, 0x40); } + inline void set6IYL(uint8_t o) { _setIY(L, o, 0x40); } + inline void set6IY(uint8_t o) { uint8_t b; _setIY(b, o, 0x40); } + inline void set6IYA(uint8_t o) { _setIY(A, o, 0x40); } // 0xf8 - void set7IYB(uint8_t o) { _setIY(B, o, 0x80); } - void set7IYC(uint8_t o) { _setIY(C, o, 0x80); } - void set7IYD(uint8_t o) { _setIY(D, o, 0x80); } - void set7IYE(uint8_t o) { _setIY(E, o, 0x80); } - void set7IYH(uint8_t o) { _setIY(H, o, 0x80); } - void set7IYL(uint8_t o) { _setIY(L, o, 0x80); } - void set7IY(uint8_t o) { uint8_t b; _setIY(b, o, 0x80); } - void set7IYA(uint8_t o) { _setIY(A, o, 0x80); } + inline void set7IYB(uint8_t o) { _setIY(B, o, 0x80); } + inline void set7IYC(uint8_t o) { _setIY(C, o, 0x80); } + inline void set7IYD(uint8_t o) { _setIY(D, o, 0x80); } + inline void set7IYE(uint8_t o) { _setIY(E, o, 0x80); } + inline void set7IYH(uint8_t o) { _setIY(H, o, 0x80); } + inline void set7IYL(uint8_t o) { _setIY(L, o, 0x80); } + inline void set7IY(uint8_t o) { uint8_t b; _setIY(b, o, 0x80); } + inline void set7IYA(uint8_t o) { _setIY(A, o, 0x80); } }; #endif