From 69f7837ac317c04d2258d0ae01073600c93388cd Mon Sep 17 00:00:00 2001 From: Stephen Crane Date: Fri, 10 Aug 2018 11:13:45 +0100 Subject: [PATCH] cleanups --- CPU.h | 2 ++ README.md | 3 +- TinyFont.h | 4 +-- acia.h | 2 +- hardware.h | 2 +- i8080.cpp | 15 ++++----- i8080.h | 8 ++--- memory.h | 3 +- ps2drv.cpp | 2 +- r6502.cpp | 66 +++++++++++++++++++-------------------- r6502.h | 6 ++-- z80.cpp | 19 ++++++------ z80.h | 90 +++++++++++++++++++++++++++--------------------------- 13 files changed, 113 insertions(+), 109 deletions(-) diff --git a/CPU.h b/CPU.h index 5a66014..1ca4a0f 100644 --- a/CPU.h +++ b/CPU.h @@ -3,6 +3,8 @@ #undef PC +class Stream; + class CPU: public Checkpointable { public: virtual void run(unsigned instructions) =0; diff --git a/README.md b/README.md index 597802b..4faa5dc 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ r65emu ====== -Emulation library for 6502-based 8-bit microcomputers. +Emulation library for 8-bit microcomputers based on 6502, i8080 and z80. Libraries: --------- @@ -22,4 +22,3 @@ Hardware: - A 23k256 SPI RAM chip (optional) See _hardware.h_ for wiring details and other options. - diff --git a/TinyFont.h b/TinyFont.h index 9dc8218..961b61f 100644 --- a/TinyFont.h +++ b/TinyFont.h @@ -1,8 +1,8 @@ -// TinyFont.c +// TinyFont.c // Font Size : 8x8 // Memory usage : 764 bytes // # characters : 95 - + const unsigned char TinyFont[764]={ 0x08,0x08,0x20,0x5F, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // diff --git a/acia.h b/acia.h index 8edf959..4cf1bd1 100644 --- a/acia.h +++ b/acia.h @@ -30,7 +30,7 @@ struct acia { static const byte ws8e1 = 6 << 2; static const byte ws8o1 = 7 << 2; - static const byte lrts_dti = 0 << 5; // /rts, disable trans irq + static const byte lrts_dti = 0 << 5; // /rts, disable trans irq static const byte lrts_eti = 1 << 5; // /rts, enable static const byte hrts_dti = 2 << 5; // rts, disable static const byte lrts_dti_brk = 3 << 5; // /rts, disable, send brk diff --git a/hardware.h b/hardware.h index 8c017be..18149c6 100644 --- a/hardware.h +++ b/hardware.h @@ -1,5 +1,5 @@ /* - * The hardware configuration of the machine. + * The hardware configuration of the machine. * (This should be the same for all emulated devices.) */ #ifndef __HARDWARE_H__ diff --git a/i8080.cpp b/i8080.cpp index b6772ba..f4ecfd5 100644 --- a/i8080.cpp +++ b/i8080.cpp @@ -1,4 +1,5 @@ -#include +#include +#include #include "memory.h" #include "CPU.h" @@ -109,7 +110,7 @@ i8080::i8080(Memory &m, PortDevice &d): CPU(m) OP *p = _ops; // 0x - *p++ = &i8080::nop; *p++ = &i8080::lxib; + *p++ = &i8080::nop; *p++ = &i8080::lxib; *p++ = &i8080::staxb; *p++ = &i8080::inxb; *p++ = &i8080::inrb; *p++ = &i8080::dcrb; *p++ = &i8080::mvib; *p++ = &i8080::rlc; @@ -119,7 +120,7 @@ i8080::i8080(Memory &m, PortDevice &d): CPU(m) *p++ = &i8080::mvic; *p++ = &i8080::rrc; // 1x - *p++ = &i8080::nop; *p++ = &i8080::lxid; + *p++ = &i8080::nop; *p++ = &i8080::lxid; *p++ = &i8080::staxd; *p++ = &i8080::inxd; *p++ = &i8080::inrd; *p++ = &i8080::dcrd; *p++ = &i8080::mvid; *p++ = &i8080::ral; @@ -133,10 +134,10 @@ i8080::i8080(Memory &m, PortDevice &d): CPU(m) *p++ = &i8080::shld; *p++ = &i8080::inxh; *p++ = &i8080::inrh; *p++ = &i8080::dcrh; *p++ = &i8080::mvih; *p++ = &i8080::daa; - *p++ = &i8080::nop; *p++ = &i8080::dadh; - *p++ = &i8080::lhld; *p++ = &i8080::dcxh; - *p++ = &i8080::inrl; *p++ = &i8080::dcrl; - *p++ = &i8080::mvil; *p++ = &i8080::cma; + *p++ = &i8080::nop; *p++ = &i8080::dadh; + *p++ = &i8080::lhld; *p++ = &i8080::dcxh; + *p++ = &i8080::inrl; *p++ = &i8080::dcrl; + *p++ = &i8080::mvil; *p++ = &i8080::cma; // 3x *p++ = &i8080::nop; *p++ = &i8080::lxisp; diff --git a/i8080.h b/i8080.h index 93dff8b..7357ad5 100644 --- a/i8080.h +++ b/i8080.h @@ -59,13 +59,13 @@ private: int _irq_pending; PortDevice *_ports; - typedef void (i8080::*OP)(); + typedef void (i8080::*OP)(); OP _ops[256]; static int parity_table[256]; - inline word _rw(Memory::address a) { - return _mem[a] + (_mem[a+1] << 8); + inline word _rw(Memory::address a) { + return _mem[a] + (_mem[a+1] << 8); } inline void _sw(Memory::address a, word w) { _mem[a] = (w & 0xff); @@ -128,7 +128,7 @@ private: void inrd() { _inc(D); } void dcrd() { _dec(D); } void mvid() { D = _mem[PC++]; } - void ral() { + void ral() { byte b = (A << 1) | flags.C; flags.C = (A & 0x80) >> 7; A = b; diff --git a/memory.h b/memory.h index f77c4d3..96ea87f 100644 --- a/memory.h +++ b/memory.h @@ -2,6 +2,7 @@ #define __MEMORY_H__ typedef unsigned char byte; +typedef unsigned int word; class Stream; @@ -48,7 +49,7 @@ public: // primary access interface // - Device &operator[] (address a) { + Device &operator[] (address a) { Device *d = get (a); d->access (a); return *d; diff --git a/ps2drv.cpp b/ps2drv.cpp index 8056077..8fc7862 100644 --- a/ps2drv.cpp +++ b/ps2drv.cpp @@ -1,4 +1,4 @@ -#include +#include #include "ps2drv.h" #define BUFFER_SIZE 16 diff --git a/r6502.cpp b/r6502.cpp index ea8ec7c..6c74d05 100644 --- a/r6502.cpp +++ b/r6502.cpp @@ -26,7 +26,7 @@ byte r6502::flags() { char *r6502::status(char *buf, size_t n, bool hdr) { flags(); - snprintf(buf, n, + snprintf(buf, n, "%s%02x %02x %02x %02x %d%d%d%d%d%d%d%d %04x", hdr? "aa xx yy sp nv_bdizc _pc_\r\n": "", A, X, Y, S, P.bits.N, P.bits.V, P.bits._, P.bits.B, @@ -193,69 +193,69 @@ r6502::r6502(Memory &m): CPU(m) { } OP *p = _ops; - *p++=&r6502::brk; *p++=&r6502::ora_ix; *p++=&r6502::ill; *p++=&r6502::ill; + *p++=&r6502::brk; *p++=&r6502::ora_ix; *p++=&r6502::ill; *p++=&r6502::ill; *p++=&r6502::nop2; *p++=&r6502::ora_z; *p++=&r6502::asl_z; *p++=&r6502::ill; - *p++=&r6502::php; *p++=&r6502::ora_; *p++=&r6502::asl; *p++=&r6502::ill; + *p++=&r6502::php; *p++=&r6502::ora_; *p++=&r6502::asl; *p++=&r6502::ill; *p++=&r6502::nop3; *p++=&r6502::ora_a; *p++=&r6502::asl_a; *p++=&r6502::ill; - *p++=&r6502::bpl; *p++=&r6502::ora_iy; *p++=&r6502::ill; *p++=&r6502::ill; + *p++=&r6502::bpl; *p++=&r6502::ora_iy; *p++=&r6502::ill; *p++=&r6502::ill; *p++=&r6502::nop2; *p++=&r6502::ora_zx; *p++=&r6502::asl_zx; *p++=&r6502::ill; - *p++=&r6502::clc; *p++=&r6502::ora_ay; *p++=&r6502::nop; *p++=&r6502::ill; + *p++=&r6502::clc; *p++=&r6502::ora_ay; *p++=&r6502::nop; *p++=&r6502::ill; *p++=&r6502::nop2; *p++=&r6502::ora_ax; *p++=&r6502::asl_ax; *p++=&r6502::ill; - *p++=&r6502::jsr; *p++=&r6502::and_ix; *p++=&r6502::ill; *p++=&r6502::ill; + *p++=&r6502::jsr; *p++=&r6502::and_ix; *p++=&r6502::ill; *p++=&r6502::ill; *p++=&r6502::bit_z; *p++=&r6502::and_z; *p++=&r6502::rol_z; *p++=&r6502::ill; - *p++=&r6502::plp; *p++=&r6502::and_; *p++=&r6502::rol; *p++=&r6502::ill; + *p++=&r6502::plp; *p++=&r6502::and_; *p++=&r6502::rol; *p++=&r6502::ill; *p++=&r6502::bit_a; *p++=&r6502::and_a; *p++=&r6502::rol_a; *p++=&r6502::ill; - *p++=&r6502::bmi; *p++=&r6502::and_iy; *p++=&r6502::ill; *p++=&r6502::ill; + *p++=&r6502::bmi; *p++=&r6502::and_iy; *p++=&r6502::ill; *p++=&r6502::ill; *p++=&r6502::nop2; *p++=&r6502::and_zx; *p++=&r6502::rol_zx; *p++=&r6502::ill; - *p++=&r6502::sec; *p++=&r6502::and_ay; *p++=&r6502::nop; *p++=&r6502::ill; + *p++=&r6502::sec; *p++=&r6502::and_ay; *p++=&r6502::nop; *p++=&r6502::ill; *p++=&r6502::nop3; *p++=&r6502::and_ax; *p++=&r6502::rol_ax; *p++=&r6502::ill; - *p++=&r6502::rti; *p++=&r6502::eor_ix; *p++=&r6502::ill; *p++=&r6502::ill; + *p++=&r6502::rti; *p++=&r6502::eor_ix; *p++=&r6502::ill; *p++=&r6502::ill; *p++=&r6502::nop2; *p++=&r6502::eor_z; *p++=&r6502::lsr_z; *p++=&r6502::ill; - *p++=&r6502::pha; *p++=&r6502::eor_; *p++=&r6502::lsr_; *p++=&r6502::ill; + *p++=&r6502::pha; *p++=&r6502::eor_; *p++=&r6502::lsr_; *p++=&r6502::ill; *p++=&r6502::jmp; *p++=&r6502::eor_a; *p++=&r6502::lsr_a; *p++=&r6502::ill; - *p++=&r6502::bvc; *p++=&r6502::eor_iy; *p++=&r6502::ill; *p++=&r6502::ill; + *p++=&r6502::bvc; *p++=&r6502::eor_iy; *p++=&r6502::ill; *p++=&r6502::ill; *p++=&r6502::nop2; *p++=&r6502::eor_zx; *p++=&r6502::lsr_zx; *p++=&r6502::ill; - *p++=&r6502::cli; *p++=&r6502::eor_ay; *p++=&r6502::nop; *p++=&r6502::ill; + *p++=&r6502::cli; *p++=&r6502::eor_ay; *p++=&r6502::nop; *p++=&r6502::ill; *p++=&r6502::nop3; *p++=&r6502::eor_ax; *p++=&r6502::lsr_ax; *p++=&r6502::ill; - *p++=&r6502::rts; *p++=&r6502::adc_ix; *p++=&r6502::ill; *p++=&r6502::ill; + *p++=&r6502::rts; *p++=&r6502::adc_ix; *p++=&r6502::ill; *p++=&r6502::ill; *p++=&r6502::nop2; *p++=&r6502::adc_z; *p++=&r6502::ror_z; *p++=&r6502::ill; - *p++=&r6502::pla; *p++=&r6502::adc_; *p++=&r6502::ror_; *p++=&r6502::ill; + *p++=&r6502::pla; *p++=&r6502::adc_; *p++=&r6502::ror_; *p++=&r6502::ill; *p++=&r6502::jmp_i; *p++=&r6502::adc_a; *p++=&r6502::ror_a; *p++=&r6502::ill; - *p++=&r6502::bvs; *p++=&r6502::adc_iy; *p++=&r6502::ill; *p++=&r6502::ill; + *p++=&r6502::bvs; *p++=&r6502::adc_iy; *p++=&r6502::ill; *p++=&r6502::ill; *p++=&r6502::nop2; *p++=&r6502::adc_zx; *p++=&r6502::ror_zx; *p++=&r6502::ill; - *p++=&r6502::sei; *p++=&r6502::adc_ay; *p++=&r6502::nop; *p++=&r6502::ill; + *p++=&r6502::sei; *p++=&r6502::adc_ay; *p++=&r6502::nop; *p++=&r6502::ill; *p++=&r6502::nop3; *p++=&r6502::adc_ax; *p++=&r6502::ror_ax; *p++=&r6502::ill; - *p++=&r6502::nop2; *p++=&r6502::sta_ix; *p++=&r6502::nop2; *p++=&r6502::ill; + *p++=&r6502::nop2; *p++=&r6502::sta_ix; *p++=&r6502::nop2; *p++=&r6502::ill; *p++=&r6502::sty_z; *p++=&r6502::sta_z; *p++=&r6502::stx_z; *p++=&r6502::ill; - *p++=&r6502::dey; *p++=&r6502::nop2; *p++=&r6502::txa; *p++=&r6502::ill; + *p++=&r6502::dey; *p++=&r6502::nop2; *p++=&r6502::txa; *p++=&r6502::ill; *p++=&r6502::sty_a; *p++=&r6502::sta_a; *p++=&r6502::stx_a; *p++=&r6502::ill; - *p++=&r6502::bcc; *p++=&r6502::sta_iy; *p++=&r6502::ill; *p++=&r6502::ill; + *p++=&r6502::bcc; *p++=&r6502::sta_iy; *p++=&r6502::ill; *p++=&r6502::ill; *p++=&r6502::sty_zx; *p++=&r6502::sta_zx; *p++=&r6502::stx_zy; *p++=&r6502::ill; - *p++=&r6502::tya; *p++=&r6502::sta_ay; *p++=&r6502::txs; *p++=&r6502::ill; + *p++=&r6502::tya; *p++=&r6502::sta_ay; *p++=&r6502::txs; *p++=&r6502::ill; *p++=&r6502::ill; *p++=&r6502::sta_ax; *p++=&r6502::ill; *p++=&r6502::ill; - *p++=&r6502::ldy_; *p++=&r6502::lda_ix; *p++=&r6502::ldx_; *p++=&r6502::lax_ix; + *p++=&r6502::ldy_; *p++=&r6502::lda_ix; *p++=&r6502::ldx_; *p++=&r6502::lax_ix; *p++=&r6502::ldy_z; *p++=&r6502::lda_z; *p++=&r6502::ldx_z; *p++=&r6502::lax_z; - *p++=&r6502::tay; *p++=&r6502::lda_; *p++=&r6502::tax; *p++=&r6502::ill; + *p++=&r6502::tay; *p++=&r6502::lda_; *p++=&r6502::tax; *p++=&r6502::ill; *p++=&r6502::ldy_a; *p++=&r6502::lda_a; *p++=&r6502::ldx_a; *p++=&r6502::lax_a; - *p++=&r6502::bcs; *p++=&r6502::lda_iy; *p++=&r6502::ill; *p++=&r6502::lax_iy; + *p++=&r6502::bcs; *p++=&r6502::lda_iy; *p++=&r6502::ill; *p++=&r6502::lax_iy; *p++=&r6502::ldy_zx; *p++=&r6502::lda_zx; *p++=&r6502::ldx_zy; *p++=&r6502::lax_zy; - *p++=&r6502::clv; *p++=&r6502::lda_ay; *p++=&r6502::tsx; *p++=&r6502::ill; + *p++=&r6502::clv; *p++=&r6502::lda_ay; *p++=&r6502::tsx; *p++=&r6502::ill; *p++=&r6502::ldy_ax; *p++=&r6502::lda_ax; *p++=&r6502::ldx_ay; *p++=&r6502::lax_ay; - *p++=&r6502::cpy_; *p++=&r6502::cmp_ix; *p++=&r6502::nop2; *p++=&r6502::ill; + *p++=&r6502::cpy_; *p++=&r6502::cmp_ix; *p++=&r6502::nop2; *p++=&r6502::ill; *p++=&r6502::cpy_z; *p++=&r6502::cmp_z; *p++=&r6502::dec_z; *p++=&r6502::ill; - *p++=&r6502::iny; *p++=&r6502::cmp_; *p++=&r6502::dex; *p++=&r6502::ill; + *p++=&r6502::iny; *p++=&r6502::cmp_; *p++=&r6502::dex; *p++=&r6502::ill; *p++=&r6502::cpy_a; *p++=&r6502::cmp_a; *p++=&r6502::dec_a; *p++=&r6502::ill; - *p++=&r6502::bne; *p++=&r6502::cmp_iy; *p++=&r6502::ill; *p++=&r6502::ill; + *p++=&r6502::bne; *p++=&r6502::cmp_iy; *p++=&r6502::ill; *p++=&r6502::ill; *p++=&r6502::nop2; *p++=&r6502::cmp_zx; *p++=&r6502::dec_zx; *p++=&r6502::ill; - *p++=&r6502::cld; *p++=&r6502::cmp_ay; *p++=&r6502::nop; *p++=&r6502::ill; + *p++=&r6502::cld; *p++=&r6502::cmp_ay; *p++=&r6502::nop; *p++=&r6502::ill; *p++=&r6502::nop3; *p++=&r6502::cmp_ax; *p++=&r6502::dec_ax; *p++=&r6502::ill; - *p++=&r6502::cpx_; *p++=&r6502::sbc_ix; *p++=&r6502::nop2; *p++=&r6502::ill; + *p++=&r6502::cpx_; *p++=&r6502::sbc_ix; *p++=&r6502::nop2; *p++=&r6502::ill; *p++=&r6502::cpx_z; *p++=&r6502::sbc_z; *p++=&r6502::inc_z; *p++=&r6502::ill; - *p++=&r6502::inx; *p++=&r6502::sbc_; *p++=&r6502::nop; *p++=&r6502::ill; + *p++=&r6502::inx; *p++=&r6502::sbc_; *p++=&r6502::nop; *p++=&r6502::ill; *p++=&r6502::cpx_a; *p++=&r6502::sbc_a; *p++=&r6502::inc_a; *p++=&r6502::ill; - *p++=&r6502::beq; *p++=&r6502::sbc_iy; *p++=&r6502::ill; *p++=&r6502::ill; + *p++=&r6502::beq; *p++=&r6502::sbc_iy; *p++=&r6502::ill; *p++=&r6502::ill; *p++=&r6502::nop2; *p++=&r6502::sbc_zx; *p++=&r6502::inc_zx; *p++=&r6502::ill; - *p++=&r6502::sed; *p++=&r6502::sbc_ay; *p++=&r6502::nop; *p++=&r6502::ill; + *p++=&r6502::sed; *p++=&r6502::sbc_ay; *p++=&r6502::nop; *p++=&r6502::ill; *p++=&r6502::nop3; *p++=&r6502::sbc_ax; *p++=&r6502::inc_ax; *p++=&r6502::ill; } diff --git a/r6502.h b/r6502.h index 3c0c2f2..3b443ef 100644 --- a/r6502.h +++ b/r6502.h @@ -77,7 +77,7 @@ private: inline void _ldy(byte a) { Z=N=Y=a; } /* modes */ - inline Memory::address _a() { + inline Memory::address _a() { Memory::address a = _mem[PC++]; return a | (_mem[PC++] << 8); } @@ -86,8 +86,8 @@ private: inline Memory::address _z() { return _mem[PC++]; } inline Memory::address _zx() { return (_z()+X) & 0xff; } inline Memory::address _zy() { return (_z()+Y) & 0xff; } - inline Memory::address _i(Memory::address a) { - return (_mem[a+1]<<8)|_mem[a]; + inline Memory::address _i(Memory::address a) { + return (_mem[a+1]<<8)|_mem[a]; } inline Memory::address _ix() { return _i(_zx()); } inline Memory::address _iy() { return _i(_mem[PC++])+Y; } diff --git a/z80.cpp b/z80.cpp index 1cd1df1..a96405c 100644 --- a/z80.cpp +++ b/z80.cpp @@ -1,4 +1,5 @@ -#include +#include +#include #include "memory.h" #include "ports.h" @@ -7,11 +8,11 @@ char *z80::status(char *buf, size_t n, bool hdr) { byte op = _mem[PC]; - snprintf(buf, n, + snprintf(buf, n, "%s%04x %02x %04x %04x %04x %04x %04x %04x %04x %04x %04x %d%d%d " "%04x %d%d%d%d%d%d%d%d", hdr? "_pc_ op _af_ _bc_ _de_ _hl_ _af' _bc' _de' _hl' _ir_ imff _sp_ sz5h3pnc\r\n": "", - PC, op, AF, BC, DE, HL, AF_, BC_, DE_, HL_, IR, _im, _iff1, _iff2, + PC, op, AF, BC, DE, HL, AF_, BC_, DE_, HL_, IR, _im, _iff1, _iff2, SP, flags.S, flags.Z, flags._5, flags.H, flags._3, flags.P, flags.N, flags.C); return buf; } @@ -877,7 +878,7 @@ z80::z80(Memory &m, PortDevice &ports): CPU(m) OP *p = _ops; // 0x00 - *p++ = &z80::nop; *p++ = &z80::ldbcpc; + *p++ = &z80::nop; *p++ = &z80::ldbcpc; *p++ = &z80::ldBCa; *p++ = &z80::incbc; *p++ = &z80::incb; *p++ = &z80::decb; *p++ = &z80::ldb; *p++ = &z80::rlca; @@ -887,7 +888,7 @@ z80::z80(Memory &m, PortDevice &ports): CPU(m) *p++ = &z80::ldc; *p++ = &z80::rrca; // 0x10 - *p++ = &z80::djnz; *p++ = &z80::lddepc; + *p++ = &z80::djnz; *p++ = &z80::lddepc; *p++ = &z80::ldDEa; *p++ = &z80::incde; *p++ = &z80::incd; *p++ = &z80::decd; *p++ = &z80::ldd; *p++ = &z80::rla; @@ -901,10 +902,10 @@ z80::z80(Memory &m, PortDevice &ports): CPU(m) *p++ = &z80::ldPChl; *p++ = &z80::inchl; *p++ = &z80::inch; *p++ = &z80::dech; *p++ = &z80::ldh; *p++ = &z80::daa; - *p++ = &z80::jrz; *p++ = &z80::addhlhl; - *p++ = &z80::ldhlPC; *p++ = &z80::dechl; - *p++ = &z80::incl; *p++ = &z80::decl; - *p++ = &z80::ldl; *p++ = &z80::cpl; + *p++ = &z80::jrz; *p++ = &z80::addhlhl; + *p++ = &z80::ldhlPC; *p++ = &z80::dechl; + *p++ = &z80::incl; *p++ = &z80::decl; + *p++ = &z80::ldl; *p++ = &z80::cpl; // 0x30 *p++ = &z80::jrnc; *p++ = &z80::ldsppc; diff --git a/z80.h b/z80.h index b4936f7..0e527ad 100644 --- a/z80.h +++ b/z80.h @@ -68,14 +68,14 @@ public: private: void _handle_interrupt(); - typedef void (z80::*OP)(); + typedef void (z80::*OP)(); void _step(OP ops[]); byte _fetch_op(); inline void step() { (this->*_ops[_fetch_op()])(); } - typedef void (z80::*OP_IDX)(byte); + typedef void (z80::*OP_IDX)(byte); void _step_idx(OP_IDX ops[]); void _ddfd(word &ix, byte &ixL, byte &ixH, OP_IDX ops[]); @@ -174,8 +174,8 @@ private: ts(i); } - inline word _rw(Memory::address a) { - return _rb(a) + (_rb(a+1) << 8); + inline word _rw(Memory::address a) { + return _rb(a) + (_rb(a+1) << 8); } inline void _sw(Memory::address a, word w) { @@ -399,10 +399,10 @@ private: void incc() { _inc(C); } void decc() { _dec(C); } void ldc() { C = _rb(PC++); } - void rrca() { + void rrca() { flags.H = flags.N = 0; - flags.C = (A & 0x01); - A = (A >> 1) | (flags.C << 7); + flags.C = (A & 0x01); + A = (A >> 1) | (flags.C << 7); _35(A); } @@ -414,16 +414,16 @@ private: void incd() { _inc(D); } void decd() { _dec(D); } void ldd() { D = _rb(PC++); } - void rla() { + void rla() { byte b = (A << 1) | flags.C; flags.C = (A & 0x80) >> 7; A = b; } // 0x18 - void jr() { - byte b = _rb(PC); - _mc(PC, 1); _mc(PC, 1); _mc(PC, 1); _mc(PC, 1); _mc(PC, 1); + void jr() { + byte b = _rb(PC); + _mc(PC, 1); _mc(PC, 1); _mc(PC, 1); _mc(PC, 1); _mc(PC, 1); PC = _ads(PC, b+1); } void addhlde() { _add16(HL, DE); } @@ -1162,8 +1162,8 @@ private: void set7a() { A |= 0x80; } inline void _bitI(int i, word a) { - byte b = _rb(a); - _mc(a, 1); + byte b = _rb(a); + _mc(a, 1); _bit(i, b); _35(a >> 8); } @@ -1178,8 +1178,8 @@ private: } // 0x00 - inline void _rlcIX(byte &b, byte o) { - word a = _rbIX(b, o); _rlc(b); _sb(a, b); + inline void _rlcIX(byte &b, byte o) { + word a = _rbIX(b, o); _rlc(b); _sb(a, b); } void rlcIXB(byte o) { _rlcIX(B, o); } void rlcIXC(byte o) { _rlcIX(C, o); } @@ -1191,8 +1191,8 @@ private: void rlcIXA(byte o) { _rlcIX(A, o); } // 0x08 - inline void _rrcIX(byte &b, byte o) { - word a = _rbIX(b, o); _rrc(b); _sb(a, b); + inline void _rrcIX(byte &b, byte o) { + word a = _rbIX(b, o); _rrc(b); _sb(a, b); } void rrcIXB(byte o) { _rrcIX(B, o); } void rrcIXC(byte o) { _rrcIX(C, o); } @@ -1204,8 +1204,8 @@ private: void rrcIXA(byte o) { _rrcIX(A, o); } // 0x10 - inline void _rlIX(byte &b, byte o) { - word a = _rbIX(b, o); _rl(b); _sb(a, b); + inline void _rlIX(byte &b, byte o) { + word a = _rbIX(b, o); _rl(b); _sb(a, b); } void rlIXB(byte o) { _rlIX(B, o); } void rlIXC(byte o) { _rlIX(C, o); } @@ -1217,8 +1217,8 @@ private: void rlIXA(byte o) { _rlIX(A, o); } // 0x18 - inline void _rrIX(byte &b, byte o) { - word a = _rbIX(b, o); _rr(b); _sb(a, b); + inline void _rrIX(byte &b, byte o) { + word a = _rbIX(b, o); _rr(b); _sb(a, b); } void rrIXB(byte o) { _rrIX(B, o); } void rrIXC(byte o) { _rrIX(C, o); } @@ -1230,8 +1230,8 @@ private: void rrIXA(byte o) { _rrIX(A, o); } // 0x20 - inline void _slaIX(byte &b, byte o) { - word a = _rbIX(b, o); _sla(b); _sb(a, b); + inline void _slaIX(byte &b, byte o) { + word a = _rbIX(b, o); _sla(b); _sb(a, b); } void slaIXB(byte o) { _slaIX(B, o); } void slaIXC(byte o) { _slaIX(C, o); } @@ -1243,8 +1243,8 @@ private: void slaIXA(byte o) { _slaIX(A, o); } // 0x28 - inline void _sraIX(byte &b, byte o) { - word a = _rbIX(b, o); _sra(b); _sb(a, b); + inline void _sraIX(byte &b, byte o) { + word a = _rbIX(b, o); _sra(b); _sb(a, b); } void sraIXB(byte o) { _sraIX(B, o); } void sraIXC(byte o) { _sraIX(C, o); } @@ -1256,8 +1256,8 @@ private: void sraIXA(byte o) { _sraIX(A, o); } // 0x30 - inline void _sllIX(byte &b, byte o) { - word a = _rbIX(b, o); _sll(b); _sb(a, b); + inline void _sllIX(byte &b, byte o) { + word a = _rbIX(b, o); _sll(b); _sb(a, b); } void sllIXB(byte o) { _sllIX(B, o); } void sllIXC(byte o) { _sllIX(C, o); } @@ -1269,8 +1269,8 @@ private: void sllIXA(byte o) { _sllIX(A, o); } // 0x38 - inline void _srlIX(byte &b, byte o) { - word a = _rbIX(b, o); _srl(b); _sb(a, b); + inline void _srlIX(byte &b, byte o) { + word a = _rbIX(b, o); _srl(b); _sb(a, b); } void srlIXB(byte o) { _srlIX(B, o); } void srlIXC(byte o) { _srlIX(C, o); } @@ -1489,8 +1489,8 @@ private: } // 0x00 - inline void _rlcIY(byte &b, byte o) { - word a = _rbIY(b, o); _rlc(b); _sb(a, b); + inline void _rlcIY(byte &b, byte o) { + word a = _rbIY(b, o); _rlc(b); _sb(a, b); } void rlcIYB(byte o) { _rlcIY(B, o); } void rlcIYC(byte o) { _rlcIY(C, o); } @@ -1502,8 +1502,8 @@ private: void rlcIYA(byte o) { _rlcIY(A, o); } // 0x08 - inline void _rrcIY(byte &b, byte o) { - word a = _rbIY(b, o); _rrc(b); _sb(a, b); + inline void _rrcIY(byte &b, byte o) { + word a = _rbIY(b, o); _rrc(b); _sb(a, b); } void rrcIYB(byte o) { _rrcIY(B, o); } void rrcIYC(byte o) { _rrcIY(C, o); } @@ -1515,8 +1515,8 @@ private: void rrcIYA(byte o) { _rrcIY(A, o); } // 0x10 - inline void _rlIY(byte &b, byte o) { - word a = _rbIY(b, o); _rl(b); _sb(a, b); + inline void _rlIY(byte &b, byte o) { + word a = _rbIY(b, o); _rl(b); _sb(a, b); } void rlIYB(byte o) { _rlIY(B, o); } void rlIYC(byte o) { _rlIY(C, o); } @@ -1528,8 +1528,8 @@ private: void rlIYA(byte o) { _rlIY(A, o); } // 0x18 - inline void _rrIY(byte &b, byte o) { - word a = _rbIY(b, o); _rr(b); _sb(a, b); + inline void _rrIY(byte &b, byte o) { + word a = _rbIY(b, o); _rr(b); _sb(a, b); } void rrIYB(byte o) { _rrIY(B, o); } void rrIYC(byte o) { _rrIY(C, o); } @@ -1541,8 +1541,8 @@ private: void rrIYA(byte o) { _rrIY(A, o); } // 0x20 - inline void _slaIY(byte &b, byte o) { - word a = _rbIY(b, o); _sla(b); _sb(a, b); + inline void _slaIY(byte &b, byte o) { + word a = _rbIY(b, o); _sla(b); _sb(a, b); } void slaIYB(byte o) { _slaIY(B, o); } void slaIYC(byte o) { _slaIY(C, o); } @@ -1554,8 +1554,8 @@ private: void slaIYA(byte o) { _slaIY(A, o); } // 0x28 - inline void _sraIY(byte &b, byte o) { - word a = _rbIY(b, o); _sra(b); _sb(a, b); + inline void _sraIY(byte &b, byte o) { + word a = _rbIY(b, o); _sra(b); _sb(a, b); } void sraIYB(byte o) { _sraIY(B, o); } void sraIYC(byte o) { _sraIY(C, o); } @@ -1567,8 +1567,8 @@ private: void sraIYA(byte o) { _sraIY(A, o); } // 0x30 - inline void _sllIY(byte &b, byte o) { - word a = _rbIY(b, o); _sll(b); _sb(a, b); + inline void _sllIY(byte &b, byte o) { + word a = _rbIY(b, o); _sll(b); _sb(a, b); } void sllIYB(byte o) { _sllIY(B, o); } void sllIYC(byte o) { _sllIY(C, o); } @@ -1580,8 +1580,8 @@ private: void sllIYA(byte o) { _sllIY(A, o); } // 0x38 - inline void _srlIY(byte &b, byte o) { - word a = _rbIY(b, o); _srl(b); _sb(a, b); + inline void _srlIY(byte &b, byte o) { + word a = _rbIY(b, o); _srl(b); _sb(a, b); } void srlIYB(byte o) { _srlIY(B, o); } void srlIYC(byte o) { _srlIY(C, o); }