19 , rom(
getName() +
" ROM",
"rom", config)
20 , flash(rom, std::vector<
AmdFlash::SectorInfo>(rom.getSize() / 0x10000, {0x10000,
false}),
21 0x01A4,
false, config)
25 nowindsInUse = getMotherBoard().getSharedStuff<NowindsInUse>(
"nowindsInUse");
28 while ((*nowindsInUse)[i]) {
29 if (++i == MAX_NOWINDS) {
33 (*nowindsInUse)[i] =
true;
34 basename[6] = char(
'a' + i);
36 command = std::make_unique<NowindCommand>(
37 basename, getCommandController(), *
this);
40 auto drive = command->createDiskChanger(basename, 0, getMotherBoard());
41 drive->createCommand();
42 drives.push_back(std::move(drive));
44 reset(EmuTime::dummy());
49 unsigned i = basename[6] -
'a';
50 assert((*nowindsInUse)[i]);
51 (*nowindsInUse)[i] =
false;
66 if (((0x2000 <= address) && (address < 0x4000)) ||
67 ((0x8000 <= address) && (address < 0xA000))) {
69 }
else if ((0x4000 <= address) && (address < 0xC000)) {
71 return flash.
peek(bank * 0x4000 + (address & 0x3FFF));
79 if (((0x2000 <= address) && (address < 0x4000)) ||
80 ((0x8000 <= address) && (address < 0xA000))) {
82 }
else if ((0x4000 <= address) && (address < 0xC000)) {
84 return flash.
read(bank * 0x4000 + (address & 0x3FFF));
92 if (((0x2000 <= address) && (address < 0x4000)) ||
93 ((0x8000 <= address) && (address < 0xA000))) {
96 }
else if ((0x4000 <= address) && (address < 0xC000)) {
106 if (address < 0x4000) {
107 flash.
write(bank * 0x4000 + address, value);
108 }
else if (((0x4000 <= address) && (address < 0x6000)) ||
109 ((0x8000 <= address) && (address < 0xA000))) {
111 host.
write(value, clock.getTicksTill(time));
112 }
else if (((0x6000 <= address) && (address < 0x8000)) ||
113 ((0xA000 <= address) && (address < 0xC000))) {
115 bank = (value <
max) ? value : value & (
max - 1);
123 if (address < 0xC000) {
132 template<
typename Archive>
135 ar.template serializeBase<MSXDevice>(*
this);
136 ar.serialize(
"flash", flash);
138 ar.serialize(
"nowindhost", host,