[−][src]Struct spectrusty::chip::plus::UlaPlus
Implementations
impl<'a, U> UlaPlus<U> where
U: UlaPlusInner<'a>,
[src]
U: UlaPlusInner<'a>,
pub fn can_read_scld_mode(&mut self) -> bool
[src]
Returns true
if reading the 0xFF
port returns the previous write or false
if bus data is being read.
pub fn enable_reading_scld_mode(&mut self, enable_reading: bool)
[src]
Determines if reading the 0xFF
port returns the previous write or bus data.
pub fn is_ulaplus_enabled(&self) -> bool
[src]
Returns true
if ULAplus modes and ports are enabled or false
otherwise.
pub fn enable_ulaplus_modes(&mut self, enable: bool)
[src]
Controls the ULAplus ports and graphics availability.
When disabled, ULAplus ports become available to the underlying devices and the screen and color modes are being reset to the default. However, palette entries are left unmodified. The last register port value written is also left unmodified.
When enabled, ULAplus ports become responsive again but the screen mode is not restored unless it has
been previously written to 0xFF
port. In this instance the screen mode gets restored from the last
value written to 0xFF
port. The color mode is always being restored.
pub fn render_mode(&self) -> RenderMode
[src]
Returns the current rendering mode.
pub fn source_mode(&self) -> SourceMode
[src]
Returns the current source mode.
pub fn ulaplus_palette(&self) -> &UlaPlusPalette
[src]
Returns the current palette view.
pub fn ulaplus_palette_mut(&mut self) -> &mut UlaPlusPalette
[src]
Returns the mutable reference to the current palette.
Trait Implementations
impl<A, U> AudioFrame<A> for UlaPlus<U> where
A: Blep,
U: Video + AudioFrame<A>,
[src]
A: Blep,
U: Video + AudioFrame<A>,
fn ensure_audio_frame_time(&self, blep: &mut A, sample_rate: u32, cpu_hz: f64)
[src]
fn get_audio_frame_end_time(&self) -> FTs
[src]
fn end_audio_frame(&self, blep: &mut B) -> usize
[src]
impl<A, U> AyAudioFrame<A> for UlaPlus<U> where
A: Blep,
U: Video + AyAudioFrame<A>,
[src]
A: Blep,
U: Video + AyAudioFrame<A>,
fn render_ay_audio_frame<V: AmpLevels<A::SampleDelta>>(
&mut self,
blep: &mut A,
chans: [usize; 3]
)
[src]
&mut self,
blep: &mut A,
chans: [usize; 3]
)
impl<U: Clone + Video> Clone for UlaPlus<U> where
U::VideoFrame: Clone,
U::VideoFrame: Clone,
[src]
U::VideoFrame: Clone,
U::VideoFrame: Clone,
impl<U, B, X> ControlUnit for UlaPlus<U> where
U: for<'a> UlaPlusInner<'a> + ControlUnit<BusDevice = B> + UlaControlExt + MemoryAccess<MemoryExt = X> + Memory<Timestamp = VideoTs> + Io<Timestamp = VideoTs, WrIoBreak = (), RetiBreak = ()>,
B: BusDevice,
B::Timestamp: From<VFrameTs<U::VideoFrame>>,
X: MemoryExtension,
[src]
U: for<'a> UlaPlusInner<'a> + ControlUnit<BusDevice = B> + UlaControlExt + MemoryAccess<MemoryExt = X> + Memory<Timestamp = VideoTs> + Io<Timestamp = VideoTs, WrIoBreak = (), RetiBreak = ()>,
B: BusDevice,
B::Timestamp: From<VFrameTs<U::VideoFrame>>,
X: MemoryExtension,
type BusDevice = U::BusDevice
A type of a chain of emulated peripheral devices should be declared here. Read more
fn bus_device_mut(&mut self) -> &mut Self::BusDevice
[src]
fn bus_device_ref(&self) -> &Self::BusDevice
[src]
fn into_bus_device(self) -> Self::BusDevice
[src]
fn reset<C: Cpu>(&mut self, cpu: &mut C, hard: bool)
[src]
fn nmi<C: Cpu>(&mut self, cpu: &mut C) -> bool
[src]
fn execute_next_frame<C: Cpu>(&mut self, cpu: &mut C)
[src]
fn ensure_next_frame(&mut self)
[src]
fn execute_single_step<C: Cpu, F: FnOnce(CpuDebug)>(
&mut self,
cpu: &mut C,
debug: Option<F>
) -> Result<(), ()>
[src]
&mut self,
cpu: &mut C,
debug: Option<F>
) -> Result<(), ()>
impl<U> Debug for UlaPlus<U> where
U: Debug + Video,
[src]
U: Debug + Video,
impl<U> Default for UlaPlus<U> where
U: Video + Default,
[src]
U: Video + Default,
impl<'de, U: Video> Deserialize<'de> for UlaPlus<U> where
U: Deserialize<'de>,
[src]
U: Deserialize<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
[src]
__D: Deserializer<'de>,
impl<U> EarIn for UlaPlus<U> where
U: Video + EarIn,
[src]
U: Video + EarIn,
fn set_ear_in(&mut self, ear_in: bool, delta_fts: u32)
[src]
fn feed_ear_in<I>(&mut self, fts_deltas: I, max_frames_threshold: Option<usize>) where
I: Iterator<Item = NonZeroU32>,
[src]
I: Iterator<Item = NonZeroU32>,
fn purge_ear_in_changes(&mut self, ear_in: bool)
[src]
fn read_ear_in_count(&self) -> u32
[src]
fn read_ear_mode(&self) -> ReadEarMode
[src]
fn set_read_ear_mode(&mut self, mode: ReadEarMode)
[src]
impl<A, U> EarInAudioFrame<A> for UlaPlus<U> where
A: Blep,
U: Video + EarInAudioFrame<A>,
[src]
A: Blep,
U: Video + EarInAudioFrame<A>,
fn render_ear_in_audio_frame<V: AmpLevels<A::SampleDelta>>(
&self,
blep: &mut A,
channel: usize
)
[src]
&self,
blep: &mut A,
channel: usize
)
impl<A, U> EarMicOutAudioFrame<A> for UlaPlus<U> where
A: Blep,
U: Video + EarMicOutAudioFrame<A>,
[src]
A: Blep,
U: Video + EarMicOutAudioFrame<A>,
fn render_earmic_out_audio_frame<V: AmpLevels<A::SampleDelta>>(
&self,
blep: &mut A,
channel: usize
)
[src]
&self,
blep: &mut A,
channel: usize
)
impl<U: HostConfig + Video> HostConfig for UlaPlus<U>
[src]
const CPU_HZ: u32
[src]
const FRAME_TSTATES: FTs
[src]
fn effective_cpu_rate(multiplier: f64) -> f64
[src]
fn effective_frame_duration_nanos(multiplier: f64) -> u32
[src]
fn effective_frame_duration(multiplier: f64) -> Duration
[src]
fn frame_duration_nanos() -> u32
[src]
fn frame_duration() -> Duration
[src]
impl<U> InnerAccess for UlaPlus<U> where
U: Video,
[src]
U: Video,
type Inner = U
fn inner_ref(&self) -> &Self::Inner
[src]
fn inner_mut(&mut self) -> &mut Self::Inner
[src]
fn into_inner(self) -> Self::Inner
[src]
impl<'a, U> Io for UlaPlus<U> where
U: UlaPlusInner<'a> + Io<Timestamp = VideoTs, WrIoBreak = (), RetiBreak = ()>,
[src]
U: UlaPlusInner<'a> + Io<Timestamp = VideoTs, WrIoBreak = (), RetiBreak = ()>,
type Timestamp = VideoTs
This type is being used for timestamping I/O operations. See also [Clock::Timestamp].
type WrIoBreak = ()
A value of this type is returned when a break is being requested by [Io::write_io].
type RetiBreak = ()
A value of this type is returned when a break is being requested by [Io::reti].
fn is_irq(&mut self, ts: VideoTs) -> bool
[src]
fn read_io(&mut self, port: u16, ts: VideoTs) -> (u8, Option<NonZeroU16>)
[src]
fn write_io(
&mut self,
port: u16,
data: u8,
ts: VideoTs
) -> (Option<()>, Option<NonZeroU16>)
[src]
&mut self,
port: u16,
data: u8,
ts: VideoTs
) -> (Option<()>, Option<NonZeroU16>)
fn irq_data(
&mut self,
pc: u16,
timestamp: Self::Timestamp
) -> (u8, Option<NonZeroU16>)
&mut self,
pc: u16,
timestamp: Self::Timestamp
) -> (u8, Option<NonZeroU16>)
fn reti(
&mut self,
address: u16,
timestamp: Self::Timestamp
) -> Option<Self::RetiBreak>
&mut self,
address: u16,
timestamp: Self::Timestamp
) -> Option<Self::RetiBreak>
impl<U> KeyboardInterface for UlaPlus<U> where
U: Video + KeyboardInterface,
[src]
U: Video + KeyboardInterface,
fn get_key_state(&self) -> ZXKeyboardMap
[src]
fn set_key_state(&mut self, keymap: ZXKeyboardMap)
[src]
impl<'a, U> Memory for UlaPlus<U> where
U: UlaPlusInner<'a> + Memory<Timestamp = VideoTs>,
[src]
U: UlaPlusInner<'a> + Memory<Timestamp = VideoTs>,
type Timestamp = VideoTs
This type is being used for timestamping memory operations. See also [Clock::Timestamp].
fn read_debug(&self, addr: u16) -> u8
[src]
fn read_mem(&self, addr: u16, ts: VideoTs) -> u8
[src]
fn read_mem16(&self, addr: u16, ts: VideoTs) -> u16
[src]
fn read_opcode(&mut self, pc: u16, ir: u16, ts: VideoTs) -> u8
[src]
fn write_mem(&mut self, addr: u16, val: u8, ts: VideoTs)
[src]
impl<U> MemoryAccess for UlaPlus<U> where
U: Video + MemoryAccess,
[src]
U: Video + MemoryAccess,
type Memory = U::Memory
type MemoryExt = U::MemoryExt
fn memory_ext_ref(&self) -> &Self::MemoryExt
[src]
fn memory_ext_mut(&mut self) -> &mut Self::MemoryExt
[src]
fn memory_mut(&mut self) -> &mut Self::Memory
[src]
fn memory_ref(&self) -> &Self::Memory
[src]
fn memory_with_ext_mut(&mut self) -> (&mut Self::Memory, &mut Self::MemoryExt)
[src]
impl<'a, U: 'a> MicOut<'a> for UlaPlus<U> where
U: Video + MicOut<'a>,
[src]
U: Video + MicOut<'a>,
type PulseIter = <U as MicOut<'a>>::PulseIter
fn mic_out_pulse_iter(&'a self) -> Self::PulseIter
[src]
impl<'a, U> ScreenDataProvider for UlaPlus<U> where
U: UlaPlusInner<'a>,
Self: Video,
[src]
U: UlaPlusInner<'a>,
Self: Video,
fn get_screen_mode(&self) -> ScrMode
[src]
fn set_screen_mode(&mut self, mode: ScrMode) -> bool
[src]
fn screen_primary_ref(&self) -> &ScreenArray
[src]
fn screen_primary_mut(&mut self) -> &mut ScreenArray
[src]
fn screen_secondary_ref(&self) -> &ScreenArray
[src]
fn screen_secondary_mut(&mut self) -> &mut ScreenArray
[src]
fn screen_palette_ref(&self) -> &[u8; 64]
[src]
fn screen_palette_mut(&mut self) -> &mut [u8; 64]
[src]
impl<U: Video> Serialize for UlaPlus<U> where
U: Serialize,
[src]
U: Serialize,
fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error> where
__S: Serializer,
[src]
__S: Serializer,
impl<'a, U> UlaControl for UlaPlus<U> where
U: UlaControl + UlaPlusInner<'a>,
[src]
U: UlaControl + UlaPlusInner<'a>,
fn has_late_timings(&self) -> bool
[src]
fn set_late_timings(&mut self, late_timings: bool)
[src]
fn ula128_mem_port_value(&self) -> Option<Ula128MemFlags>
[src]
fn set_ula128_mem_port_value(&mut self, value: Ula128MemFlags) -> bool
[src]
fn ula3_ctrl_port_value(&self) -> Option<Ula3CtrlFlags>
[src]
fn set_ula3_ctrl_port_value(&mut self, value: Ula3CtrlFlags) -> bool
[src]
fn scld_ctrl_port_value(&self) -> Option<ScldCtrlFlags>
[src]
fn set_scld_ctrl_port_value(&mut self, value: ScldCtrlFlags) -> bool
[src]
fn scld_mmu_port_value(&self) -> Option<u8>
[src]
fn set_scld_mmu_port_value(&mut self, value: u8) -> bool
[src]
fn ulaplus_reg_port_value(&self) -> Option<UlaPlusRegFlags>
[src]
fn set_ulaplus_reg_port_value(&mut self, value: UlaPlusRegFlags) -> bool
[src]
fn ulaplus_data_port_value(&self) -> Option<u8>
[src]
fn set_ulaplus_data_port_value(&mut self, value: u8) -> bool
[src]
impl<U> UlaControlExt for UlaPlus<U> where
U: for<'a> UlaPlusInner<'a> + ControlUnit + UlaControlExt,
[src]
U: for<'a> UlaPlusInner<'a> + ControlUnit + UlaControlExt,
fn prepare_next_frame<C: MemoryContention>(
&mut self,
vtsc: VFrameTsCounter<U::VideoFrame, C>
) -> VFrameTsCounter<U::VideoFrame, C>
[src]
&mut self,
vtsc: VFrameTsCounter<U::VideoFrame, C>
) -> VFrameTsCounter<U::VideoFrame, C>
fn ensure_next_frame_vtsc(
&mut self
) -> VFrameTsCounter<Self::VideoFrame, Self::Contention>
[src]
&mut self
) -> VFrameTsCounter<Self::VideoFrame, Self::Contention>
impl<U> Video for UlaPlus<U> where
U: for<'a> UlaPlusInner<'a>,
[src]
U: for<'a> UlaPlusInner<'a>,
const PIXEL_DENSITY: u32
[src]
type VideoFrame = U::VideoFrame
The type implementing VideoFrame, that is being used by the chipset emulator.
type Contention = U::Contention
The type implementing MemoryContention, that is being used by the chipset emulator.
fn border_color(&self) -> BorderColor
[src]
fn set_border_color(&mut self, border: BorderColor)
[src]
fn render_video_frame<'b, B: PixelBuffer<'b>, P: Palette<Pixel = B::Pixel>>(
&mut self,
buffer: &'b mut [u8],
pitch: usize,
border_size: BorderSize
)
[src]
&mut self,
buffer: &'b mut [u8],
pitch: usize,
border_size: BorderSize
)
fn current_video_ts(&self) -> VideoTs
[src]
fn visible_screen_bank(&self) -> usize
[src]
fn current_video_clock(
&self
) -> VFrameTsCounter<Self::VideoFrame, Self::Contention>
[src]
&self
) -> VFrameTsCounter<Self::VideoFrame, Self::Contention>
fn set_video_ts(&mut self, vts: VideoTs)
[src]
fn flash_state(&self) -> bool
[src]
fn render_size_pixels(border_size: BorderSize) -> (u32, u32)
[src]
fn pixel_density() -> u32
[src]
Auto Trait Implementations
impl<U> RefUnwindSafe for UlaPlus<U> where
U: RefUnwindSafe,
<U as Video>::VideoFrame: RefUnwindSafe,
U: RefUnwindSafe,
<U as Video>::VideoFrame: RefUnwindSafe,
impl<U> Send for UlaPlus<U> where
U: Send,
<U as Video>::VideoFrame: Send,
U: Send,
<U as Video>::VideoFrame: Send,
impl<U> Sync for UlaPlus<U> where
U: Sync,
<U as Video>::VideoFrame: Sync,
U: Sync,
<U as Video>::VideoFrame: Sync,
impl<U> Unpin for UlaPlus<U> where
U: Unpin,
<U as Video>::VideoFrame: Unpin,
U: Unpin,
<U as Video>::VideoFrame: Unpin,
impl<U> UnwindSafe for UlaPlus<U> where
U: UnwindSafe,
<U as Video>::VideoFrame: UnwindSafe,
U: UnwindSafe,
<U as Video>::VideoFrame: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> DeserializeOwned for T where
T: for<'de> Deserialize<'de>,
[src]
T: for<'de> Deserialize<'de>,
impl<U, I> FrameState for U where
I: FrameState,
U: InnerAccess<Inner = I>,
[src]
I: FrameState,
U: InnerAccess<Inner = I>,
fn current_frame(&self) -> u64
[src]
fn set_frame_counter(&mut self, fc: u64)
[src]
fn frame_tstate(&self) -> (u64, i32)
[src]
fn current_tstate(&self) -> i32
[src]
fn set_frame_tstate(&mut self, ts: i32)
[src]
fn is_frame_over(&self) -> bool
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<S, T> IntoSample<S> for T where
S: FromSample<T>,
[src]
S: FromSample<T>,
fn into_sample(self) -> S
[src]
impl<T> LoadScr for T where
T: ScreenDataProvider,
[src]
T: ScreenDataProvider,
fn load_scr<R>(&mut self, src: R) -> Result<(), Error> where
R: Read + Seek,
[src]
R: Read + Seek,
fn save_scr<W>(&self, dst: W) -> Result<(), Error> where
W: Write,
[src]
W: Write,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<B, U> UlaAudioFrame<B> for U where
B: Blep,
U: AudioFrame<B> + EarMicOutAudioFrame<B> + EarInAudioFrame<B> + AyAudioFrame<B>,
[src]
B: Blep,
U: AudioFrame<B> + EarMicOutAudioFrame<B> + EarInAudioFrame<B> + AyAudioFrame<B>,
impl<U> UlaCommon for U where
U: UlaControl + FrameState + ControlUnit + MemoryAccess + Video + KeyboardInterface + EarIn + for<'a> MicOut<'a>,
[src]
U: UlaControl + FrameState + ControlUnit + MemoryAccess + Video + KeyboardInterface + EarIn + for<'a> MicOut<'a>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,