123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- // This class implements the mapping of the PPI (8255) into the SVI machine.
- #ifndef SVIPPI_HH
- #define SVIPPI_HH
- #include "MSXDevice.hh"
- #include "I8255Interface.hh"
- #include "I8255.hh"
- #include "Keyboard.hh"
- #include "KeyClick.hh"
- namespace openmsx {
- class CassettePortInterface;
- class JoystickPortIf;
- class SVIPPI final : public MSXDevice, public I8255Interface
- {
- public:
- SVIPPI(const DeviceConfig& config);
- void reset(EmuTime::param time) override;
- byte readIO(word port, EmuTime::param time) override;
- byte peekIO(word port, EmuTime::param time) const override;
- void writeIO(word port, byte value, EmuTime::param time) override;
- template<typename Archive>
- void serialize(Archive& ar, unsigned version);
- private:
- // I8255Interface
- byte readA(EmuTime::param time) override;
- byte readB(EmuTime::param time) override;
- nibble readC0(EmuTime::param time) override;
- nibble readC1(EmuTime::param time) override;
- byte peekA(EmuTime::param time) const override;
- byte peekB(EmuTime::param time) const override;
- nibble peekC0(EmuTime::param time) const override;
- nibble peekC1(EmuTime::param time) const override;
- void writeA(byte value, EmuTime::param time) override;
- void writeB(byte value, EmuTime::param time) override;
- void writeC0(nibble value, EmuTime::param time) override;
- void writeC1(nibble value, EmuTime::param time) override;
- CassettePortInterface& cassettePort;
- I8255 i8255;
- KeyClick click;
- Keyboard keyboard;
- JoystickPortIf* ports[2];
- nibble prevBits;
- nibble selectedRow;
- };
- } // namespace openmsx
- #endif
|