OXYGENHUB
◆ main openmsx / src / sound / Y8950KeyboardConnector.cc
1.5 KiB · C++ · last changed chore(): initial commit 1 month ago source blame history raw
e8555c89 Andy McCall 1
#include "Y8950KeyboardConnector.hh"
2
3
#include "DummyY8950KeyboardDevice.hh"
4
#include "Y8950KeyboardDevice.hh"
5
6
#include "serialize.hh"
7
8
#include "checked_cast.hh"
9
10
#include <memory>
11
12
namespace openmsx {
13
14
Y8950KeyboardConnector::Y8950KeyboardConnector(
15
	PluggingController& pluggingController_)
16
	: Connector(pluggingController_, "audiokeyboardport",
17
	            std::make_unique<DummyY8950KeyboardDevice>())
18
{
19
}
20
21
void Y8950KeyboardConnector::write(uint8_t newData, EmuTime time)
22
{
23
	if (newData != data) {
24
		data = newData;
25
		getPluggedKeyb().write(data, time);
26
	}
27
}
28
29
uint8_t Y8950KeyboardConnector::read(EmuTime time) const
30
{
31
	return getPluggedKeyb().read(time);
32
}
33
34
uint8_t Y8950KeyboardConnector::peek(EmuTime time) const
35
{
36
	// TODO implement proper peek
37
	return read(time);
38
}
39
40
zstring_view Y8950KeyboardConnector::getDescription() const
41
{
42
	return "MSX-AUDIO keyboard connector";
43
}
44
45
zstring_view Y8950KeyboardConnector::getClass() const
46
{
47
	return "Y8950 Keyboard Port";
48
}
49
50
void Y8950KeyboardConnector::plug(Pluggable& dev, EmuTime time)
51
{
52
	Connector::plug(dev, time);
53
	getPluggedKeyb().write(data, time);
54
}
55
56
Y8950KeyboardDevice& Y8950KeyboardConnector::getPluggedKeyb() const
57
{
58
	return *checked_cast<Y8950KeyboardDevice*>(&getPlugged());
59
}
60
61
template<typename Archive>
62
void Y8950KeyboardConnector::serialize(Archive& ar, unsigned /*version*/)
63
{
64
	ar.template serializeBase<Connector>(*this);
65
	// don't serialize 'data', done in Y8950
66
}
67
INSTANTIATE_SERIALIZE_METHODS(Y8950KeyboardConnector);
68
69
} // namespace openmsx