Adding program counter relative addresses

This commit is contained in:
AnonymusRaccoon
2020-02-11 13:14:53 +01:00
parent 7d51bc623e
commit f0ce5760a6
3 changed files with 33 additions and 0 deletions
+9
View File
@@ -325,4 +325,13 @@ namespace ComSquare::CPU
int8_t mod = this->_bus->read(this->_registers.pac++);
return pc + mod;
}
uint24_t CPU::_getProgramCounterRelativeLongAddr()
{
uint24_t pc = this->_registers.pac;
uint8_t val1 = this->_bus->read(this->_registers.pac++);
uint8_t val2 = this->_bus->read(this->_registers.pac++);
int16_t mod = val2 > 0x7F ? (static_cast<char>(val2) * 256 - val1) : (val1 | val2 << 8u);
return pc + mod;
}
}