diff --git a/Machines/Commodore/1540/Implementation/C1540.cpp b/Machines/Commodore/1540/Implementation/C1540.cpp index 9a1d8ef95..ee7038f85 100644 --- a/Machines/Commodore/1540/Implementation/C1540.cpp +++ b/Machines/Commodore/1540/Implementation/C1540.cpp @@ -16,13 +16,19 @@ using namespace Commodore::C1540; -ROM::Request Machine::rom_request(Personality personality) { +namespace { +ROM::Name rom_name(Personality personality) { switch(personality) { default: - case Personality::C1540: return ROM::Request(ROM::Name::Commodore1540); - case Personality::C1541: return ROM::Request(ROM::Name::Commodore1541); + case Personality::C1540: return ROM::Name::Commodore1540; + case Personality::C1541: return ROM::Name::Commodore1541; } } +} + +ROM::Request Machine::rom_request(Personality personality) { + return ROM::Request(rom_name(personality)); +} MachineBase::MachineBase(Personality personality, const ROM::Map &roms) : Storage::Disk::Controller(1000000), @@ -30,34 +36,27 @@ MachineBase::MachineBase(Personality personality, const ROM::Map &roms) : serial_port_VIA_port_handler_(serial_port_VIA_), drive_VIA_(drive_VIA_port_handler_), serial_port_VIA_(serial_port_VIA_port_handler_) { - // attach the serial port to its VIA and vice versa + // Attach the serial port to its VIA and vice versa. serial_port_.set_serial_port_via(serial_port_VIA_port_handler_); serial_port_VIA_port_handler_.set_serial_port(serial_port_); - // set this instance as the delegate to receive interrupt requests from both VIAs + // Set this instance as the delegate to receive interrupt requests from both VIAs. serial_port_VIA_port_handler_.set_interrupt_delegate(this); drive_VIA_port_handler_.set_interrupt_delegate(this); drive_VIA_port_handler_.set_delegate(this); - // set a bit rate + // Set a bit rate. set_expected_bit_length(Storage::Encodings::CommodoreGCR::length_of_a_bit_in_time_zone(3)); - // attach the only drive there is + // Attach the only drive there is. emplace_drive(1000000, 300, 2); set_drive(1); - ROM::Name rom_name; - switch(personality) { - default: - case Personality::C1540: rom_name = ROM::Name::Commodore1540; break; - case Personality::C1541: rom_name = ROM::Name::Commodore1541; break; - } - - auto rom = roms.find(rom_name); + const auto rom = roms.find(rom_name(personality)); if(rom == roms.end()) { throw ROMMachine::Error::MissingROMs; } - std::memcpy(rom_, roms.find(rom_name)->second.data(), std::min(sizeof(rom_), roms.find(rom_name)->second.size())); + std::memcpy(rom_, rom->second.data(), std::min(sizeof(rom_), rom->second.size())); } Machine::Machine(Personality personality, const ROM::Map &roms) : @@ -242,7 +241,7 @@ void DriveVIA::set_port_output(MOS::MOS6522::Port port, uint8_t value, uint8_t) if(port) { if(previous_port_b_output_ != value) { // record drive motor state - drive_motor_ = !!(value&4); + drive_motor_ = value&4; // check for a head step int step_difference = ((value&3) - (previous_port_b_output_&3))&3; @@ -257,7 +256,7 @@ void DriveVIA::set_port_output(MOS::MOS6522::Port port, uint8_t value, uint8_t) } // post the LED status - if(observer_) observer_->set_led_status("Drive", !!(value&8)); + if(observer_) observer_->set_led_status("Drive", value&8); previous_port_b_output_ = value; } @@ -268,7 +267,7 @@ void DriveVIA::set_activity_observer(Activity::Observer *observer) { observer_ = observer; if(observer) { observer->register_led("Drive"); - observer->set_led_status("Drive", !!(previous_port_b_output_&8)); + observer->set_led_status("Drive", previous_port_b_output_&8); } }