pub mod keyboard;
pub mod midi;
pub mod romdisk;
use serde::Serialize;
use crate::core::peripherals::midi::MidiInterface;
use crate::core::peripherals::romdisk::RomDisk;
#[derive(Serialize, Default)]
pub enum UserPeripheral {
RomDisk(RomDisk),
Midi(MidiInterface),
#[default]
None,
}
impl UserPeripheral {
#[inline]
pub fn read_port_a(&self) -> u8 {
match self {
Self::RomDisk(disk) => disk.read_data(),
_ => 0xFF,
}
}
#[inline]
pub fn update(&mut self, port_a: u8, port_b: u8, port_c: u8, cycle_count: u64) -> bool {
match self {
Self::RomDisk(disk) => {
disk.update_addr(port_b, port_c);
false
}
Self::Midi(midi) => midi.update(port_a, port_c, cycle_count),
Self::None => false,
}
}
}