Skip to content

Libraries used by the Generic system

Core library

The Generic system logic — configurable screen size, IO memory locations, and a host-agnostic command-stream renderer — lives in:

This library has no UI, rendering, or I/O dependencies. It exposes abstractions that the implementation libraries below plug into.

Implementation libraries

Generic-specific host code lives in its own engine-plugin libraries, one per host technology, named Highbyte.DotNet6502.Impl.<Tech>.Generic. Each carries the Generic host config, an ISystemEnginePlugin that registers the Generic computer with the host app's DI container, and — unlike the C64 — its per-host input handler. Host apps discover these plugins at runtime — see Highbyte.DotNet6502.Systems.Plugins — and hold no direct project reference to them.

Engine-plugin library Host technology Used by app
Highbyte.DotNet6502.Impl.Avalonia.Generic Avalonia Avalonia Desktop, Avalonia Browser
Highbyte.DotNet6502.Impl.AspNet.Generic Blazor / JS interop Blazor WASM
Highbyte.DotNet6502.Impl.SilkNet.Generic Silk.NET SilkNetNative
Highbyte.DotNet6502.Impl.SadConsole.Generic SadConsole SadConsole
Highbyte.DotNet6502.Impl.Headless.Generic none (headless) Headless

The Generic system needs less host-specific code than the C64: it has no per-host renderer and no audio.

Render

The Generic system does not have a per-host renderer. It produces a stream of host-agnostic video commands via GenericVideoCommandStream; each host renders that stream using its host technology (SkiaSharp, Silk.NET, SadConsole, Avalonia) via that host's generic render target. The engine-plugin libraries contain no Generic render code.

Input

Unlike the C64, Generic input handlers are host-specific — one per host, under Generic/Input/ in each engine-plugin library:

Engine-plugin library Host technology Used by app
Highbyte.DotNet6502.Impl.Avalonia.Generic Avalonia Avalonia Desktop, Avalonia Browser
Highbyte.DotNet6502.Impl.AspNet.Generic Blazor / JS interop Blazor WASM
Highbyte.DotNet6502.Impl.SilkNet.Generic Silk.NET SilkNetNative
Highbyte.DotNet6502.Impl.SadConsole.Generic SadConsole SadConsole

Audio

The Generic system does not produce audio. No Generic audio code exists in the engine-plugin libraries.

For the cross-system view (which app uses which library, including C64), see the Implementation libraries overview.