Profile
Back to NewsBack
GitHub Trending 4 min
Reader Mode
debjitbis08/sim8085: Fast, accurate, and offline-capable Intel 8085 simulator with assembler and debugger. Works on desktop and mobile, no installation needed.

debjitbis08/sim8085: Fast, accurate, and offline-capable Intel 8085 simulator with assembler and debugger. Works on desktop and mobile, no installation needed.

5 hours ago

Sim8085

License</a> Website</a> Stars</a>

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:
- Step-by-step execution - Flag and register updates - Visual memory inspection
  • ⚙️ 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

Sim8085 Screenshot

🛠️ Development Setup

📦 Requirements

🚧 Steps

  1. Install Emscripten (follow official instructions). You need this only if you are working on the instruction simulator code (src/core/8085.c).
  2. Clone this repo and install dependencies:
pnpm install
  1. Start the development server:
pnpm dev

🔧 Building the Emulator (C to JS)

If you make changes in src/core/8085.c:

  1. Build the updated simulator:
pnpm build-emulator
  1. Commit the modified JS file.

🚀 Production Build

  1. Make sure the emulator is built:
pnpm build-emulator
  1. Build the frontend:
pnpm build
  1. 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.

Chat with me