Share i8080 and Z80 I/O implementations.

Signed-off-by: Adrian.Conlon <adrian.conlon@gmail.com>
This commit is contained in:
Adrian.Conlon
2017-08-28 21:41:10 +01:00
parent d710a28526
commit 91c8855183
12 changed files with 12 additions and 114 deletions
+3
View File
@@ -140,8 +140,10 @@
<ItemGroup>
<ClInclude Include="..\inc\AddressEventArgs.h" />
<ClInclude Include="..\inc\EventArgs.h" />
<ClInclude Include="..\inc\InputOutput.h" />
<ClInclude Include="..\inc\IntelProcessor.h" />
<ClInclude Include="..\inc\Memory.h" />
<ClInclude Include="..\inc\PortEventArgs.h" />
<ClInclude Include="..\inc\Processor.h" />
<ClInclude Include="..\inc\Signal.h" />
<ClInclude Include="..\inc\TestHarness.h" />
@@ -149,6 +151,7 @@
</ItemGroup>
<ItemGroup>
<ClCompile Include="EventArgs.cpp" />
<ClCompile Include="InputOutput.cpp" />
<ClCompile Include="IntelProcessor.cpp" />
<ClCompile Include="Memory.cpp" />
<ClCompile Include="Processor.cpp" />
+9
View File
@@ -35,6 +35,12 @@
<ClInclude Include="..\inc\AddressEventArgs.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\inc\InputOutput.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\inc\PortEventArgs.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="stdafx.cpp">
@@ -52,5 +58,8 @@
<ClCompile Include="IntelProcessor.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="InputOutput.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>
+38
View File
@@ -0,0 +1,38 @@
#include "stdafx.h"
#include "InputOutput.h"
EightBit::InputOutput::InputOutput() {
}
uint8_t EightBit::InputOutput::readInputPort(uint8_t port) {
OnReadingPort(port);
auto value = input[port];
OnReadPort(port);
return value;
}
void EightBit::InputOutput::writeOutputPort(uint8_t port, uint8_t value) {
OnWritingPort(port);
output[port] = value;
OnWrittenPort(port);
}
void EightBit::InputOutput::OnReadingPort(uint8_t port) {
PortEventArgs event(port);
ReadingPort.fire(event);
}
void EightBit::InputOutput::OnReadPort(uint8_t port) {
PortEventArgs event(port);
ReadPort.fire(event);
}
void EightBit::InputOutput::OnWritingPort(uint8_t port) {
PortEventArgs event(port);
WritingPort.fire(event);
}
void EightBit::InputOutput::OnWrittenPort(uint8_t port) {
PortEventArgs event(port);
WrittenPort.fire(event);
}