Sim8085
Sim8085 is a modern web-based development environment for the Intel 8085 microprocessor. It includes a graphical editor, assembler, and debugger designed to help students, educators, and enthusiasts explore 8085 assembly programming.
🖥️ Try it now at sim8085.com
✨ Features
- 📝 Syntax-highlighted editor for writing 8085 assembly code.
- 🐞 Interactive debugger with:
- ⚙️ Assembler with smart error messages, help fix common problems quickly.
- 🧠 Interrupt system that closely matches how the 8085 handles interrupts.
- ♾️ Supports long-running programs (e.g., waveform generators or infinite loops), safely handled in-browser.
- ⏱️ Instruction Timing Mode to simulate real-time delays.
- 🧹 Built-in code formatter that aligns mnemonics, operands, and comments into neatly spaced columns.
- 🚄 Near-native performance, powered by a C-based simulator compiled to highly optimized JavaScript via Emscripten.
- 📱 Mobile-friendly and works great in modern mobile browsers.
- 💾 Offline support: Once loaded, Sim8085 continues to work even without an internet connection thanks to full PWA support.
- 📦 Installable as an app: Add Sim8085 to your home screen or desktop like a native app, no App Store needed.
🎯 Accuracy and CPU Validation
Sim8085 is tested against independent, external references rather than only
against its own expectations. Everything below is reproducible from a clean
checkout with pnpm test. A fuller write-up, including what each suite
actually proves, is in the docs:
Accuracy and CPU Validation.
| Validation | Coverage | Status | | --- | --- | --- | | Instruction unit tests | 8085 semantics and flags, per mnemonic | Pass | | Opcode inventory | All 256 opcode bytes, cross-checked against the C dispatch | Pass | | Timing tests | T-states for every opcode (199 documented, 47 control-flow, 10 undocumented) | Pass | | 8080PRE | Preliminary 8080/8085 exerciser (Cringle, Bartholomew) | Pass | | TST8080 | 8080/8085 CPU Diagnostic v1.0 (Microcosm Associates, 1980) | Pass | | CPUTEST | Diagnostics II v1.2 CPU test (SuperSoft, 1981) | Pass | | 8080EXM | Full instruction exerciser, ~2.9 billion instructions | 25/25 CRC groups | | SDK-85 monitor ROM | Assembles byte-for-byte against Intel's own object code | Pass | | SDK-85 boot | Intel's complete monitor boots from reset and reaches its idle loop | Pass | | SDK-85 interrupts | TRAP, RST 5.5/6.5/7.5, EI, SIM, RIM | Pass | | Differential testing against physical 8085 silicon | Not performed | Not claimed |
What the exercisers add
The unit tests assert on cases we thought to write down. The CP/M exercisers walk the operand space and CRC the entire machine state after every instruction, comparing against CRCs captured from real hardware — a single wrong flag in a single addressing mode changes the result.
This is not theoretical: the exercisers found two real DAA defects on their
first run, in an instruction the unit tests already covered. See
src/tests/exerciser/README.md for the full
account, ROM provenance and checksums.
Because the ROMs were written for the 8080 and CRC the whole PSW byte, the harness enables a documented 8080 compatibility mode for the flag bits where the 8085 legitimately differs. The browser simulator always uses 8085 behaviour.
Reproducing it
pnpm test # everything except 8080EXM (~seconds)
RUN_8080EXM=1 npx vitest run src/tests/exerciser # adds the exhaustive run (~35s)
8080EXM is opt-in only because of its runtime, not because it is expected to
fail.
What is not claimed
Undocumented 8085 instructions (DSUB, ARHL, RDEL, LDHI, LDSI,
RSTV, SHLX, LHLX, JX5/JNX5) and the K/V flags are implemented and
tested, but their expected behaviour comes from documentation and community
reverse-engineering rather than from hardware measurement — no 8080 exerciser
can cover instructions the 8080 does not have. Corrections backed by silicon
are very welcome.
🖼️ Screenshot
🛠️ Development Setup
📦 Requirements
- Emscripten SDK
- Node.js ≥ 22.x and pnpm
🚧 Steps
- Install Emscripten (follow official instructions). You need this only if you are working on the instruction simulator code (
src/core/8085.c). - Clone this repo and install dependencies:
pnpm install
- Start the development server:
pnpm dev
🔧 Building the Emulator (C to JS)
If you make changes in src/core/8085.c:
- Build the updated simulator:
pnpm build-emulator
- Commit the modified JS file.
🚀 Production Build
- Make sure the emulator is built:
pnpm build-emulator
- Build the frontend:
pnpm build
- Final output will be in the
dist/directory.
💖 Support Sim8085
Sim8085 is a free and open-source project built with care to help students and educators learn 8085 programming with ease. If you find it useful and would like to support its continued development, consider donating:
Your support helps cover hosting, development time, and the addition of new features. Every little bit counts!© 2013-present Debjit Biswas. BSD-3-Clause License.