mirror of
https://github.com/MoleskiCoder/EightBit.git
synced 2026-04-26 06:17:47 +00:00
Remove duplicated code (from const definitions) the performance benefit isn't worth the amount of duplicated code.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
This commit is contained in:
@@ -40,10 +40,6 @@ namespace Fuse {
|
||||
return m_ram.reference(address);
|
||||
}
|
||||
|
||||
virtual uint8_t reference(uint16_t address) const {
|
||||
return m_ram.reference(address);
|
||||
}
|
||||
|
||||
public:
|
||||
TestRunner(const Test& test, const ExpectedTestResult& expected);
|
||||
|
||||
|
||||
@@ -11,8 +11,8 @@ namespace EightBit {
|
||||
public:
|
||||
Disassembler();
|
||||
|
||||
static std::string state(const Z80& cpu);
|
||||
std::string disassemble(const Z80& cpu);
|
||||
static std::string state(Z80& cpu);
|
||||
std::string disassemble(Z80& cpu);
|
||||
|
||||
static std::string flag(uint8_t value, int flag, const std::string& represents);
|
||||
static std::string flags(uint8_t value);
|
||||
@@ -30,7 +30,7 @@ namespace EightBit {
|
||||
bool m_prefixED;
|
||||
bool m_prefixFD;
|
||||
|
||||
void disassemble(std::ostringstream& output, const Z80& cpu, uint16_t pc);
|
||||
void disassemble(std::ostringstream& output, Z80& cpu, uint16_t pc);
|
||||
|
||||
void disassembleCB(
|
||||
std::ostringstream& output,
|
||||
@@ -52,7 +52,7 @@ namespace EightBit {
|
||||
|
||||
void disassembleOther(
|
||||
std::ostringstream& output,
|
||||
const Z80& cpu,
|
||||
Z80& cpu,
|
||||
uint16_t pc,
|
||||
std::string& specification,
|
||||
int& dumpCount,
|
||||
|
||||
@@ -51,44 +51,28 @@ namespace EightBit {
|
||||
Signal<Z80> ExecutingInstruction;
|
||||
|
||||
PinLevel& M1() { return m_m1Line; } // Out
|
||||
PinLevel M1() const { return m_m1Line; }
|
||||
|
||||
virtual int execute(uint8_t opcode) final;
|
||||
virtual int step() final;
|
||||
|
||||
virtual register16_t& AF() final;
|
||||
virtual register16_t AF() const final;
|
||||
virtual register16_t& BC() final;
|
||||
virtual register16_t BC() const final;
|
||||
virtual register16_t& DE() final;
|
||||
virtual register16_t DE() const final;
|
||||
virtual register16_t& HL() final;
|
||||
virtual register16_t HL() const final;
|
||||
|
||||
register16_t& IX() { return m_ix; }
|
||||
register16_t IX() const { return m_ix; }
|
||||
uint8_t& IXH() { return IX().high; }
|
||||
uint8_t IXH() const { return IX().high; }
|
||||
uint8_t& IXL() { return IX().low; }
|
||||
uint8_t IXL() const { return IX().low; }
|
||||
|
||||
register16_t& IY() { return m_iy; }
|
||||
register16_t IY() const { return m_iy; }
|
||||
uint8_t& IYH() { return IY().high; }
|
||||
uint8_t IYH() const { return IY().high; }
|
||||
uint8_t& IYL() { return IY().low; }
|
||||
uint8_t IYL() const { return IY().low; }
|
||||
|
||||
refresh_t& REFRESH() { return m_refresh; }
|
||||
refresh_t REFRESH() const { return m_refresh; }
|
||||
uint8_t& IV() { return iv; }
|
||||
uint8_t IV() const { return iv; }
|
||||
int& IM() { return m_interruptMode; }
|
||||
int IM() const { return m_interruptMode; }
|
||||
bool& IFF1() { return m_iff1; }
|
||||
bool IFF1() const { return m_iff1; }
|
||||
bool& IFF2() { return m_iff2; }
|
||||
bool IFF2() const { return m_iff2; }
|
||||
|
||||
void exx() {
|
||||
m_registerSet ^= 1;
|
||||
@@ -274,23 +258,6 @@ namespace EightBit {
|
||||
}
|
||||
}
|
||||
|
||||
register16_t RP(const int rp) const {
|
||||
ASSUME(rp >= 0);
|
||||
ASSUME(rp <= 3);
|
||||
switch (rp) {
|
||||
case 0:
|
||||
return BC();
|
||||
case 1:
|
||||
return DE();
|
||||
case 2:
|
||||
return HL2();
|
||||
case 3:
|
||||
return SP();
|
||||
default:
|
||||
UNREACHABLE;
|
||||
}
|
||||
}
|
||||
|
||||
register16_t& HL2() {
|
||||
if (LIKELY(!m_displaced))
|
||||
return HL();
|
||||
@@ -300,15 +267,6 @@ namespace EightBit {
|
||||
return IY();
|
||||
}
|
||||
|
||||
register16_t HL2() const {
|
||||
if (LIKELY(!m_displaced))
|
||||
return HL();
|
||||
if (m_prefixDD)
|
||||
return IX();
|
||||
// Must be FD prefix
|
||||
return IY();
|
||||
}
|
||||
|
||||
register16_t& RP2(const int rp) {
|
||||
ASSUME(rp >= 0);
|
||||
ASSUME(rp <= 3);
|
||||
@@ -326,23 +284,6 @@ namespace EightBit {
|
||||
}
|
||||
}
|
||||
|
||||
register16_t RP2(const int rp) const {
|
||||
ASSUME(rp >= 0);
|
||||
ASSUME(rp <= 3);
|
||||
switch (rp) {
|
||||
case 0:
|
||||
return BC();
|
||||
case 1:
|
||||
return DE();
|
||||
case 2:
|
||||
return HL2();
|
||||
case 3:
|
||||
return AF();
|
||||
default:
|
||||
UNREACHABLE;
|
||||
}
|
||||
}
|
||||
|
||||
static void adjustHalfCarryAdd(uint8_t& f, const uint8_t before, const uint8_t value, const int calculation) {
|
||||
setFlag(f, HC, calculateHalfCarryAdd(before, value, calculation));
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ EightBit::Disassembler::Disassembler() {
|
||||
m_formatter.exceptions(boost::io::all_error_bits ^ boost::io::too_many_args_bit);
|
||||
}
|
||||
|
||||
std::string EightBit::Disassembler::state(const Z80& cpu) {
|
||||
std::string EightBit::Disassembler::state(Z80& cpu) {
|
||||
|
||||
auto pc = cpu.PC();
|
||||
auto sp = cpu.SP();
|
||||
@@ -171,14 +171,14 @@ std::string EightBit::Disassembler::alu(int which) {
|
||||
throw std::logic_error("Unhandled alu operation");
|
||||
}
|
||||
|
||||
std::string EightBit::Disassembler::disassemble(const Z80& cpu) {
|
||||
std::string EightBit::Disassembler::disassemble(Z80& cpu) {
|
||||
m_prefixCB = m_prefixDD = m_prefixED = m_prefixFD = false;
|
||||
std::ostringstream output;
|
||||
disassemble(output, cpu, cpu.PC().word);
|
||||
return output.str();
|
||||
}
|
||||
|
||||
void EightBit::Disassembler::disassemble(std::ostringstream& output, const Z80& cpu, uint16_t pc) {
|
||||
void EightBit::Disassembler::disassemble(std::ostringstream& output, Z80& cpu, uint16_t pc) {
|
||||
|
||||
auto& bus = cpu.BUS();
|
||||
auto opcode = bus.peek(pc);
|
||||
@@ -423,7 +423,7 @@ void EightBit::Disassembler::disassembleED(
|
||||
|
||||
void EightBit::Disassembler::disassembleOther(
|
||||
std::ostringstream& output,
|
||||
const Z80& cpu,
|
||||
Z80& cpu,
|
||||
uint16_t pc,
|
||||
std::string& specification,
|
||||
int& dumpCount,
|
||||
|
||||
@@ -8,34 +8,18 @@ EightBit::Z80::Z80(Bus& bus, InputOutput& ports)
|
||||
m_ports(ports) {
|
||||
}
|
||||
|
||||
EightBit::register16_t EightBit::Z80::AF() const {
|
||||
return m_accumulatorFlags[m_accumulatorFlagsSet];
|
||||
}
|
||||
|
||||
EightBit::register16_t& EightBit::Z80::AF() {
|
||||
return m_accumulatorFlags[m_accumulatorFlagsSet];
|
||||
}
|
||||
|
||||
EightBit::register16_t EightBit::Z80::BC() const {
|
||||
return m_registers[m_registerSet][BC_IDX];
|
||||
}
|
||||
|
||||
EightBit::register16_t& EightBit::Z80::BC() {
|
||||
return m_registers[m_registerSet][BC_IDX];
|
||||
}
|
||||
|
||||
EightBit::register16_t EightBit::Z80::DE() const {
|
||||
return m_registers[m_registerSet][DE_IDX];
|
||||
}
|
||||
|
||||
EightBit::register16_t& EightBit::Z80::DE() {
|
||||
return m_registers[m_registerSet][DE_IDX];
|
||||
}
|
||||
|
||||
EightBit::register16_t EightBit::Z80::HL() const {
|
||||
return m_registers[m_registerSet][HL_IDX];
|
||||
}
|
||||
|
||||
EightBit::register16_t& EightBit::Z80::HL() {
|
||||
return m_registers[m_registerSet][HL_IDX];
|
||||
}
|
||||
|
||||
+2
-2
@@ -52,7 +52,7 @@ void Board::Cpu_ExecutingInstruction_Cpm(const EightBit::Z80& cpu) {
|
||||
}
|
||||
}
|
||||
|
||||
void Board::bdos() const {
|
||||
void Board::bdos() {
|
||||
switch (CPU().C()) {
|
||||
case 0x2:
|
||||
std::cout << CPU().E();
|
||||
@@ -73,7 +73,7 @@ void Board::Cpu_ExecutingInstruction_Profile(const EightBit::Z80& cpu) {
|
||||
m_profiler.addInstruction(peek(pc.word));
|
||||
}
|
||||
|
||||
void Board::Cpu_ExecutingInstruction_Debug(const EightBit::Z80& cpu) {
|
||||
void Board::Cpu_ExecutingInstruction_Debug(EightBit::Z80& cpu) {
|
||||
|
||||
std::cerr
|
||||
<< EightBit::Disassembler::state(cpu)
|
||||
|
||||
+3
-7
@@ -22,11 +22,7 @@ public:
|
||||
void initialise();
|
||||
|
||||
protected:
|
||||
virtual uint8_t& reference(uint16_t address) {
|
||||
return m_ram.reference(address);
|
||||
}
|
||||
|
||||
virtual uint8_t reference(uint16_t address) const {
|
||||
virtual uint8_t& reference(uint16_t address) final {
|
||||
return m_ram.reference(address);
|
||||
}
|
||||
|
||||
@@ -40,8 +36,8 @@ private:
|
||||
|
||||
void Cpu_ExecutingInstruction_Cpm(const EightBit::Z80& cpu);
|
||||
|
||||
void Cpu_ExecutingInstruction_Debug(const EightBit::Z80& cpu);
|
||||
void Cpu_ExecutingInstruction_Debug(EightBit::Z80& cpu);
|
||||
void Cpu_ExecutingInstruction_Profile(const EightBit::Z80& cpu);
|
||||
|
||||
void bdos() const;
|
||||
void bdos();
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user