pub trait UlaPlusInner<'a>: Video + MemoryAccess {
    type ScreenSwapIter: Iterator<Item = VideoTs> + 'a;

Show 13 methods fn ula_write_earmic(&mut self, flags: UlaPortFlags, ts: VideoTs); fn push_screen_change(&mut self, ts: VideoTs); fn update_last_border_color(&mut self, border: BorderColor) -> bool; fn page1_screen0_shadow_bank(&self) -> Option<bool>; fn page1_screen1_shadow_bank(&self) -> Option<bool>; fn page3_screen0_shadow_bank(&self) -> Option<bool>; fn page3_screen1_shadow_bank(&self) -> Option<bool>; fn frame_cache_mut_mem_ref(
        &mut self
    ) -> (&mut UlaFrameCache<Self::VideoFrame>, &Self::Memory); fn shadow_frame_cache_mut_mem_ref(
        &mut self
    ) -> (&mut UlaFrameCache<Self::VideoFrame>, &Self::Memory); fn beg_screen_shadow(&self) -> bool; fn cur_screen_shadow(&self) -> bool; fn video_render_data_view(
        &'a mut self
    ) -> VideoRenderDataView<'a, Self::ScreenSwapIter, Self::Memory, Self::VideoFrame>; fn is_ula_port(port: u16) -> bool { ... }
}
Expand description

Implemented by chipsets that UlaPlus can enhance.

Required Associated Types§

Required Methods§

Sets the state of EarMic flags and optionally records an EarMic change.

Records a shadow screen swap.

Updates the border color, returns true if the border color has changed.

Returns Some(is_shadow) if a screen memory is accessible at page address: 0x4000-0x5FFF.

Returns Some(is_shadow) if a screen memory is accessible at page address: 0x6000-0x7FFF.

Returns Some(is_shadow) if a screen memory is accessible at page address: 0xC000-0xDFFF.

Returns Some(is_shadow) if a screen memory is accessible at page address: 0xE000-0xFFFF.

Returns a mutable reference to the normal frame cache and a memory reference.

Returns a mutable reference to the shadow frame cache and a memory reference.

Returns true if the shadow screen is displayed at the beginning of the video frame.

Returns true if the shadow screen is currently being displayed.

Returns references to components necessary for video rendering.

Provided Methods§

Returns true if port matches the ULA port.

Examples found in repository?
src/chip/plus/io.rs (line 63)
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
    fn write_io(&mut self, port: u16, data: u8, ts: VideoTs) -> (Option<()>, Option<NonZeroU16>) {
        if U::is_ula_port(port) {
            let border = BorderColor::from_bits_truncate(data);
            self.change_border_color(border, ts);
            self.ula.ula_write_earmic(UlaPortFlags::from_bits_truncate(data), ts);
        }
        else if ScldCtrlPortAddress::match_port(port) && !self.ulaplus_disabled {
            self.write_scld_ctrl_port(ScldCtrlFlags::from(data), ts);
        }
        else if PlusRegisterPortAddress::match_port(port) && !self.ulaplus_disabled {
            self.write_plus_regs_port(UlaPlusRegFlags::from(data), ts);
        }
        else if PlusDataPortAddress::match_port(port) && !self.ulaplus_disabled {
            self.write_plus_data_port(data, ts);
        }
        else {
            return self.ula.write_io(port, data, ts)
        }
        (None, None)
    }

Implementors§