#pragma once #include #include #include "Signal.h" #include "Register.h" namespace EightBit { class InputOutput final { private: std::array _input = {}; std::array _output = {}; public: Signal ReadingPort; Signal ReadPort; Signal WritingPort; Signal WrittenPort; [[nodiscard]] uint8_t read(register16_t port); [[nodiscard]] uint8_t readInputPort(register16_t port); void writeInputPort(register16_t port, uint8_t value); void write(register16_t port, uint8_t value); void writeOutputPort(register16_t port, uint8_t value); [[nodiscard]] uint8_t readOutputPort(register16_t port); }; }