openMSX
Y8950Periphery.hh
Go to the documentation of this file.
1 #ifndef Y8950PERIPHERY_HH
2 #define Y8950PERIPHERY_HH
3 
4 #include "EmuTime.hh"
5 #include "openmsx.hh"
6 #include <memory>
7 #include <string>
8 
9 namespace openmsx {
10 
15 {
16 public:
17  virtual ~Y8950Periphery() = default;
18 
19  virtual void reset();
20 
29  virtual void write(nibble outputs, nibble values, EmuTime::param time) = 0;
30 
37  [[nodiscard]] virtual nibble read(EmuTime::param time) = 0;
38 
40  virtual void setSPOFF(bool value, EmuTime::param time);
41 
42  [[nodiscard]] virtual byte readMem(word address, EmuTime::param time);
43  [[nodiscard]] virtual byte peekMem(word address, EmuTime::param time) const;
44  virtual void writeMem(word address, byte value, EmuTime::param time);
45  [[nodiscard]] virtual const byte* getReadCacheLine(word start) const;
46  [[nodiscard]] virtual byte* getWriteCacheLine(word start) const;
47 };
48 
49 class MSXAudio;
50 class DeviceConfig;
51 
53 {
54 public:
55  [[nodiscard]] static std::unique_ptr<Y8950Periphery> create(
56  MSXAudio& audio, const DeviceConfig& config,
57  const std::string& soundDeviceName);
58 };
59 
60 } // namespace openmsx
61 
62 #endif
static std::unique_ptr< Y8950Periphery > create(MSXAudio &audio, const DeviceConfig &config, const std::string &soundDeviceName)
Models the 4 general purpose I/O pins on the Y8950 (controlled by registers r#18 and r#19)
virtual byte peekMem(word address, EmuTime::param time) const
virtual byte * getWriteCacheLine(word start) const
virtual const byte * getReadCacheLine(word start) const
virtual void write(nibble outputs, nibble values, EmuTime::param time)=0
Write to (some of) the pins.
virtual void writeMem(word address, byte value, EmuTime::param time)
virtual byte readMem(word address, EmuTime::param time)
virtual ~Y8950Periphery()=default
virtual void setSPOFF(bool value, EmuTime::param time)
SP-OFF bit (bit 3 in Y8950 register 7)
virtual nibble read(EmuTime::param time)=0
Read from (some of) the pins Some of the pins might be programmed as output, but this method doesn't ...
This file implemented 3 utility functions:
Definition: Autofire.cc:9
uint8_t nibble
4 bit integer
Definition: openmsx.hh:23
uint16_t word
16 bit unsigned integer
Definition: openmsx.hh:29
constexpr auto values(Map &&map)
Definition: view.hh:403