Libraries used by the Oric system¶
Core library¶
The Oric Atmos machine logic — ULA display, VIA, AY sound, keyboard matrix, joystick interfaces, BASIC support, and TAP transport — lives in:
This library is UI-agnostic. It exposes render, input, and audio providers that host-specific implementation libraries connect to their native technologies.
Implementation libraries¶
Oric-specific host integration is supplied by engine-plugin libraries. Host apps discover them
at runtime through
Highbyte.DotNet6502.Systems.Plugins instead
of referencing Oric from their system-agnostic host code.
| Engine-plugin library | Host technology | Used by app |
|---|---|---|
Highbyte.DotNet6502.Impl.Avalonia.Oric |
Avalonia + NAudio | Avalonia Desktop, Avalonia Browser |
Highbyte.DotNet6502.Impl.Terminal.Oric |
Terminal.Gui text cells | Terminal (TUI) |
Highbyte.DotNet6502.Impl.Headless.Oric |
No render/input/audio target | Headless |
The Avalonia and Terminal apps also discover system-specific shell plugins that contribute the Oric menu, Information panel, and configuration dialog:
Highbyte.DotNet6502.App.Avalonia.Shell.OricHighbyte.DotNet6502.App.Terminal.Shell.Oric
No SilkNetNative, SadConsole, or Blazor WASM Oric plugin exists.
Render¶
The system core provides two host-agnostic render paths:
OricRasterizerproduces the full pixel display for Avalonia's generic bitmap render target. It samples each visible line from the shared PAL raster clock, so display-memory changes made and restored within one frame can still produce raster effects.OricVideoCommandStreamproduces a 40 × 28 glyph stream for the generic Terminal render target. It preserves text cells, serial colors, inverse, and flashing attributes, but cannot represent hi-res pixels, double-height glyph shape, or RAM-defined custom glyph shapes.
Input¶
OricInputHandler, OricHostKeyboard, and OricInputConfig live in the Oric system core. Each
interactive host supplies native-key-to-HostKey translation through its generic input context;
the Oric handler applies the keyboard matrix, keyboard layout, and joystick mappings.
Audio¶
OricAySampleProvider produces mono PCM samples for the AY-3-8912. Avalonia connects it to its
generic NAudio sample target (OpenAL on Desktop and WebAudio in Browser). Terminal and Headless
disable audio.
The AY generator averages output over each PCM sample interval to reduce aliasing. Envelope
levels advance every 16 × period AY clocks (eight clocks for period zero), with all sixteen
shapes and retriggers supported. The mixer reserves fixed headroom for three channels; disabling
both tone and noise leaves a channel at its selected DAC level, and volume zero silences it.
Snapshots store the partial sample's phase and accumulated output in oric-ay module version 2.
Version 1 snapshots remain readable: their envelope timing is converted and the incomplete PCM
sample is discarded with a warning. Version 2 snapshots resume sample generation exactly.
For the cross-system view, see the Implementation libraries overview.