Expand description
High-Level Emulation (HLE) for classic Macintosh applications.
systemless runs Mac OS Toolbox apps without a real ROM by intercepting
68k A-line trap instructions ($A000–$AFFF) and dispatching them
to native Rust handlers — the QuickDraw, Window Manager, Resource
Manager, Sound Manager, SANE, and the rest of the Toolbox are
reimplemented natively. The 68k CPU itself is interpreted by the
m68k crate.
See the crate’s README.md for the architecture overview.
§Quick start
use systemless::runner::{FixtureRunner, FixtureRunnerConfig};
// Allocate an 8 MiB guest, default config (kiosk mode — Mac menu
// bar suppressed; arrow keys not remapped to numpad).
let config = FixtureRunnerConfig::default();
let mut runner = FixtureRunner::new(8 * 1024 * 1024, config);
// Load a Mac executable (StuffIt archive, MacBinary, or raw
// resource fork — the loader auto-detects the format).
let bytes = std::fs::read("MyGame.sit").unwrap();
let _app = systemless::game::load_game(&mut runner, &bytes).unwrap();
// Step the guest until it halts or the budget runs out.
// The bool is `still_running` — false means the CPU halted.
let (steps_taken, still_running) = runner.run_steps(100_000, None);
println!("ran {} steps, still_running = {}", steps_taken, still_running);Modules§
- audio
- Host audio output backends.
- cpu
- CPU Backend - m68k wrapper
- display
- Shared framebuffer rendering for all Systemless frontends.
- game
- Shared game loading helpers.
- loader
- 68k loader data types: CODE 0 header, jump table entries, and the
LoadedAppstate record returned byFixtureRunner::load_app. - machine_
profile - Canonical guest machine profile used by Systemless’s accuracy harness.
- managers
- Toolbox managers
- memory
- Memory subsystem for Mac emulation
- oracle
- Cross-runtime parity oracle.
- quickdraw
- QuickDraw rendering primitives.
- runner
- Fixture Runner - Loading and execution infrastructure
- sound
- Sound Manager state and mixing engine.
- trap
- Trap Dispatcher - modular Mac OS trap handling.
Enums§
- Error
- Top-level error returned by
crate::runner::FixtureRunnerand the supporting traps. Variants:
Type Aliases§
- Result
Result<T, Error>shorthand for any systemless operation.