2017-06-11 08:45:34 +00:00
|
|
|
#include "stdafx.h"
|
|
|
|
#include "IntelProcessor.h"
|
|
|
|
|
2017-09-06 12:22:23 +00:00
|
|
|
EightBit::IntelProcessor::IntelProcessor(Bus& bus)
|
2018-08-17 20:53:49 +00:00
|
|
|
: LittleEndianProcessor(bus) {
|
2017-12-10 21:41:48 +00:00
|
|
|
for (int i = 0; i < 0x100; ++i)
|
2017-07-21 12:33:17 +00:00
|
|
|
m_decodedOpcodes[i] = i;
|
2017-06-11 08:45:34 +00:00
|
|
|
}
|
2017-09-01 15:01:40 +00:00
|
|
|
|
2018-08-25 00:34:30 +00:00
|
|
|
void EightBit::IntelProcessor::powerOn() {
|
|
|
|
Processor::powerOn();
|
2018-08-11 20:19:19 +00:00
|
|
|
SP() = AF() = BC() = DE() = HL() = Mask16;
|
2017-11-05 12:47:42 +00:00
|
|
|
}
|
|
|
|
|
2018-04-14 08:39:06 +00:00
|
|
|
void EightBit::IntelProcessor::push(const uint8_t value) {
|
2018-08-11 20:19:19 +00:00
|
|
|
BUS().write(--SP(), value);
|
2017-11-05 12:47:42 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
uint8_t EightBit::IntelProcessor::pop() {
|
2018-08-11 20:19:19 +00:00
|
|
|
return BUS().read(SP()++);
|
2017-11-05 12:47:42 +00:00
|
|
|
}
|
|
|
|
|
2018-02-25 19:48:01 +00:00
|
|
|
EightBit::register16_t EightBit::IntelProcessor::getWord() {
|
2018-08-17 20:53:49 +00:00
|
|
|
const auto returned = LittleEndianProcessor::getWord();
|
|
|
|
MEMPTR() = BUS().ADDRESS();
|
|
|
|
return returned;
|
2017-11-05 12:47:42 +00:00
|
|
|
}
|
|
|
|
|
2018-04-14 08:39:06 +00:00
|
|
|
void EightBit::IntelProcessor::setWord(const register16_t value) {
|
2018-08-17 20:53:49 +00:00
|
|
|
LittleEndianProcessor::setWord(value);
|
|
|
|
MEMPTR() = BUS().ADDRESS();
|
2017-11-05 12:47:42 +00:00
|
|
|
}
|
2018-11-25 10:43:51 +00:00
|
|
|
|
|
|
|
void EightBit::IntelProcessor::ret() {
|
|
|
|
Processor::ret();
|
|
|
|
MEMPTR() = PC();
|
|
|
|
}
|