mirror of
https://github.com/MoleskiCoder/EightBit.git
synced 2026-04-25 15:18:01 +00:00
Moving towards Z80 cycle accuracy
This commit is contained in:
+37
-8
@@ -150,26 +150,55 @@ namespace EightBit {
|
||||
|
||||
//
|
||||
|
||||
register16_t& incrementPC() override;
|
||||
uint8_t fetchInstruction() override;
|
||||
|
||||
//
|
||||
|
||||
[[nodiscard]] register16_t getWord() final;
|
||||
void setWord(register16_t value) final;
|
||||
|
||||
//
|
||||
|
||||
virtual void restart(uint8_t address);
|
||||
virtual int callConditional(int condition);
|
||||
virtual int jumpConditional(int condition);
|
||||
virtual int returnConditional(int condition);
|
||||
virtual void jr(int8_t offset) noexcept;
|
||||
virtual int jrConditional(int condition);
|
||||
virtual void callConditional(bool condition);
|
||||
virtual void jumpConditional(bool condition);
|
||||
virtual void jumpRelativeConditional(bool condition);
|
||||
virtual void returnConditional(bool condition);
|
||||
virtual void jumpIndirect();
|
||||
virtual void jump();
|
||||
void callIndirect();
|
||||
void call();
|
||||
virtual void jumpRelative(int8_t offset) noexcept;
|
||||
void jumpRelative(uint8_t offset) noexcept { jumpRelative((int8_t)offset); }
|
||||
void ret() override;
|
||||
|
||||
virtual void fetchWordMEMPTR();
|
||||
|
||||
void jumpIndirect();
|
||||
void callIndirect();
|
||||
|
||||
void resetWorkingRegisters() noexcept;
|
||||
|
||||
[[nodiscard]] virtual bool convertCondition(int flag) noexcept = 0;
|
||||
|
||||
virtual void jumpConditionalFlag(int flag) {
|
||||
jumpConditional(convertCondition(flag));
|
||||
}
|
||||
|
||||
virtual void jumpRelativeConditionalFlag(int flag) {
|
||||
jumpRelativeConditional(convertCondition(flag));
|
||||
}
|
||||
|
||||
virtual void returnConditionalFlag(int flag) {
|
||||
returnConditional(convertCondition(flag));
|
||||
}
|
||||
|
||||
virtual void callConditionalFlag(int flag) {
|
||||
callConditional(convertCondition(flag));
|
||||
}
|
||||
|
||||
virtual void cpl() noexcept {
|
||||
A() = ~A();
|
||||
}
|
||||
|
||||
private:
|
||||
static std::array<int, 8> m_halfCarryTableAdd;
|
||||
static std::array<int, 8> m_halfCarryTableSub;
|
||||
|
||||
@@ -70,7 +70,13 @@ namespace EightBit {
|
||||
virtual uint8_t memoryRead();
|
||||
virtual uint8_t busRead();
|
||||
|
||||
virtual register16_t& incrementPC();
|
||||
virtual register16_t& decrementPC();
|
||||
|
||||
virtual void immediateAddress();
|
||||
|
||||
uint8_t fetchByte();
|
||||
virtual uint8_t fetchInstruction();
|
||||
|
||||
[[nodiscard]] virtual register16_t getWord() = 0;
|
||||
virtual void setWord(register16_t value) = 0;
|
||||
|
||||
Reference in New Issue
Block a user