Disclaimer: This is a work-in-progress project. Features, usage, and code structure may change rapidly. Use with care and check for updates frequently.
FLISP Emulator is a modular, Rust-based emulator and assembler workspace, targeting the FLISP architecture and tools. It is organized as a Rust multi-crate workspace with several focused sub-projects:
- assembler: Implements assembly source parsing, code generation, and related utilities.
- emulator: An internal library for simulating FLISP instructions, registers, and memory.
- flisp-core: Provides foundational types and utilities for FLISP emulation and assembly.
- cli: Command-line interface for interacting with the emulator and assembler.
- tui: Terminal UI for a richer emulation experience.
- FLISP assembler and emulator in pure Rust
- Extensible modular design via workspace crates
- CLI and TUI interfaces for user workflows
- Advanced editing, breakpoints, and state management
Prerequisites
- Rust 2024 edition, nightly channel recommended
- Supported on major OSes (Linux, macOS, Windows)
Install with Cargo:
cargo install --path .Or build all workspace binaries:
cargo build --releaseQuick Start: Run the CLI binary:
cargo run -p cli -- --helpExample CLI usage:
# Assemble a FLISP source file (.sflisp) to .s19 or .fmem
flisp-cli assemble program.sflisp
# Run and visualize a FLISP program. Input can be .sflisp, .s19 or .fmem
flisp-cli run program.sflisp
flisp-cli run compiled.s19
flisp-cli run memory_image.fmemGUI users can launch the TUI:
cargo run -p tui- assembler/: Assemblies FLISP source, provides parsing and codegen utilities.
- emulator/: Simulates system instructions, memory visualization, debugging, breakpoints.
- flisp-core/: Central logic and types shared across crates.
- cli/: Command-line interface for emulation and assembly tasks.
- tui/: Terminal UI, keybindings, and interactive features.
Clone and Build:
git clone <repo-url>
cd flisp-emulator
cargo buildDevelopment uses the nightly Rust toolchain. See rust-toolchain.toml for details.
Run all tests in the workspace:
cargo test --workspaceAssembler Sub-crate Testing:
To run assembler tests, you need the qaflisp assembler. This is often bundled with digiflisp. Download it from:
https://gbgmv.se/studies.html
See LICENSE for details.