zx84
Health Warn
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Fail
- exec() — Shell command execution in mcp/beam.ts
- network request — Outbound network request in mcp/catalog.ts
- exec() — Shell command execution in mcp/media-source.ts
- network request — Outbound network request in mcp/media-source.ts
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
Sinclair ZX Spectrum emulator for your browser with MCP server
ZX84
A browser-based 8-bit computer emulator for the Sinclair ZX80, ZX81 and ZX Spectrum (and the Pentagon and Scorpion clones), Amstrad CPC (including the Plus range) and PCW, Tatung Einstein, MSX, Memotech MTX, Camputers Lynx, Jupiter Ace, Acorn BBC Micro and Electron, the Apple I and the Apple II family, and the Enterprise 64/128, with an MCP server for automated testing.
https://zx84.envytech.workers.dev
ZX84 is an 8-bit computer emulator with machine-specific hardware models, browser-based media management, inspection tools, and a configurable CRT presentation layer.
Supported Machines
Each machine has its own sheet covering its models, built-in hardware, peripherals, media formats, tools and known issues.
| Machine | Models | CPU |
|---|---|---|
| Sinclair ZX Spectrum | 16K, 48K, 128K, +2, +2A, +3 | Z80 |
| Sinclair clones | Pentagon 128, 512, 1024; Scorpion ZS-256 | Z80 |
| Sinclair ZX80 / ZX81 | ZX80, ZX81 | Z80 |
| Amstrad CPC | CPC 464, CPC 664, CPC 6128, 6128 Plus, GX4000 | Z80 |
| Amstrad PCW | 8256, 8512, 9256, 9512 | Z80 |
| Tatung Einstein | TC-01, 256 | Z80 |
| MSX | Toshiba HX-10, Sony HB-55, Sony HB-55P | Z80 |
| Memotech MTX | MTX500, MTX512, RS128 | Z80 |
| Camputers Lynx | 48K, 96K, 128K | Z80 |
| Jupiter Ace | Jupiter Ace | Z80 |
| Enterprise | 64, 128 | Z80 |
| Acorn BBC Micro | Model B | 6502 |
| Acorn Electron | Electron | 6502 |
| Apple I | Apple I | 6502 |
| Apple II | Apple ][, ][+, //e, Enhanced //e, //c | 6502 / 65C02 |
Features
Hardware And Peripherals
- Broad hardware support: shared CPU, video, sound and disk-controller cores, with each model's built-in hardware (memory paging, video chips, sound chips) emulated.
- Peripherals and expansions: floppy and microdrive interfaces, cartridge ports, cassette decks, joystick and mouse interfaces, memory expansions and other add-ons, fitted from the Hardware pane where the machine supports them.
- Real firmware: machines boot their own ROMs, which you supply, with custom ROMs selectable.
See the machine sheets for each machine's models, hardware, peripherals and media.
Inspection And Tools
- Debugger with breakpoints, watchpoints and stepping on every machine, plus memory and paging views, disassembly, and instruction tracing.
- OCR: screen text can be read back as text, on screen and through the MCP server.
- Machine-aware BASIC listings and system-variable views where applicable.
- A headless MCP server for scripted and AI-driven testing.
Media
Load by picker or drag-and-drop. ZIP archives are unpacked and routed to compatible machines where supported.
| Machine Or Device | Supported Media |
|---|---|
| Spectrum | Snapshots: .sna, .z80, .szx, .sp; tapes: .tap, .tzx, .cdt, .csw; +3 disks: .dsk, .hfe, .scp |
| Spectrum peripherals | Interface 2: .rom; Interface 1: .mdr, .mdv; MGT +D: .mgt, .img, .hfe, .scp; Beta Disk: .trd, .scl, .hfe, .scp |
| CPC | Snapshots: .sna; tapes: .cdt, .tzx, .tap; disks: .dsk, .hfe, .scp on disk-capable models; Plus cartridges: .cpr |
| Einstein | Disks: .dsk, .hfe, .scp |
| MSX | Cartridges: .rom; cassettes: .cas; disks (interface fitted): .dsk, .img, .dmk, .hfe, .scp, .td0, .edsk |
| Memotech MTX | ROM packs: .rom; logical cassettes: .mtx; FDX/SDX Type 03/07 disks: .mfloppy, .mfloppy-03, .mfloppy-07 |
| Camputers Lynx | Cassettes: .tap; disks: .ldf on the 96K/128K |
| Jupiter Ace | Cassettes: .tap, .tzx, .csw |
| Acorn BBC Micro | Disks: .ssd, .dsd, .img; tapes: .uef, .csw |
| Acorn Electron | Tapes: .uef, .csw; with the Plus 3, ADFS discs: .adf, .ads, .adm, .adl; with the Plus 1, cartridges: .rom |
| Apple I | Listings typed in at the keyboard: .txt, .hex; with the cassette interface fitted, cassettes: .wav |
| Apple II | Disks: .dsk, .do, .po (sector order detected, MacBinary headers read through); cassettes: .wav |
| Amstrad PCW | Disks: .dsk, .td0, .hfe, .scp |
| Enterprise | EXOS programs: .com, .bas (and multi-file .zip sets) through the FILE: device; with the EXDOS card, disks: .img |
The tape deck provides block navigation, transport controls, fast ROM loading, turbo loading, loading sound where applicable, and original-media download. The disk UI supports drive selection, write protection, disk sounds, changed-image saving, blank image creation, and flippy disks.
Media can also be mounted at startup from HTTP(S) URLs. URL-encode each value;
disk units are zero-based:
?snap=https%3A%2F%2Fexample.com%2Fstate.sna
&disk0=https%3A%2F%2Fexample.com%2Fsystem.dsk
&disk1=https%3A%2F%2Fexample.com%2Fdata.dsk
&tape=https%3A%2F%2Fexample.com%2Fgame.tap
Snapshots are applied first, then disks in unit order, then tape. Relative URLs
are supported. Cross-origin hosts must permit browser CORS access, and the URL
path or Content-Disposition response header must supply a recognised filename
extension.
The starting machine can be chosen with ?model= (alias ?machine=), e.g.?model=cpc6128&disk0=.... It takes precedence over the last-used machine,
becomes the new saved choice, and is removed from the address bar once applied.
Values are case-insensitive, and the same ids drive the MCP server's model
tool. The Spectrum's earlier ids (48k, +3, plus2a, …) still work in URLs.
Known models: zx16k zx48k zx128k zx128kplus2 zx128kplus2a zx128kplus3 pentagon128 pentagon512 pentagon1024 scorpion256 zx80 zx81 jupiter-acecpc464 cpc664 cpc6128 cpc6128plus gx4000 pcw8256 pcw8512pcw9256 pcw9512 einstein-tc01 einstein-256 hx-10 hb-55 hb-55p mtx500 mtx512rs128 lynx48 lynx96 lynx128 bbc-b electron apple1 apple2 apple2-plus apple2e apple2e-enhanced apple2c ep64 ep128.
Display And Audio
- WebGL CRT shader renderer with a Canvas fallback.
- Integer scaling plus HQx and xBR upscalers.
- Scanline accuracy controls, Spectrum rainbow rendering, selectable palettes, border cropping, and CPC pixel-aspect correction.
- CRT controls for brightness, contrast, saturation, gamma, scanlines, softness, noise, dot pitch, curvature, masks, and monitor presets.
- Shadow-mask, aperture-grille, slot-mask, LCD-grid, and attribute-mask options.
- Web Audio output with AudioWorklet and SharedArrayBuffer paths where available, plus a ScriptProcessor fallback.
- Master volume, beeper-to-AY mix, AY stereo placement, and ultrasonic-tone filtering.
Input And Interface
- Keyboard mapping, configurable two-player joystick mappings, physical gamepads, and touch/mouse D-pads.
- Spectrum joystick interfaces: Kempston, Cursor, Sinclair 1, and Sinclair 2.
- Kempston and AMX mouse modes on supported machines.
- Customizable pane ordering, placement, visibility, collapse state, and persistent per-pane settings.
Saving, Library, And Persistence
- Export Spectrum
.szxand.z80snapshots, CPC snapshots, screenshots, and supported screen/RAM exports. - Persist settings, pane layout, custom ROMs and fonts, and supported media in browser storage.
- Spectrum and ZX80/ZX81 software libraries with ZXDB-derived search, screenshots, automatic model selection, and cached catalog data.
Development
ZX84 is written in TypeScript with SolidJS and Vite, and runs entirely in the browser. Each machine is assembled from shared chip cores — Z80 and 6502 CPUs, video chips, sound chips and disk controllers — behind a common machine interface. That same interface powers the built-in developer tools: a debugger with breakpoints and stepping on every machine, memory and paging views, and, depending on the machine, BASIC listings, system variables, instruction tracing and screen-text extraction. It also powers a headless MCP server, so any machine can be driven by scripts and AI assistants for automated testing and reverse engineering.
- Developer tools — a guided tour of the debugger, memory, BASIC and tracing tools, with screenshots, and everything you need to build, test and contribute to ZX84.
- MCP server — set up the headless server and drive any machine from an MCP client: run, step and set breakpoints and watchpoints, read and write memory, load media, read the screen as text, and inspect disks.
License
The emulated machines, their names and associated trademarks, and their ROMs are copyright of their respective owners. The ROMs are not included in this repository and are not covered by the MIT licence.
Acknowledgments
zx84 stands on decades of work by people who documented, emulated and preserved these machines, and who have shared that work freely. Particular thanks to:
- Simon Owen, for SimCoupe and for his many years of work on SAM Coupé emulation, documentation and tools.
- Philip Kendall and the Fuse and libspectrum contributors, for Fuse, one of the most accurate and best-documented Spectrum emulators, and for the libspectrum file-format library.
- John Elliott, for JOYCE, LibDsk and his many emulators, tools and documents on the Amstrad PCW, CPC and disk formats.
- Andy Key, for MEMU and the Memotech MTX community resources, including his transcription of the FDX 80-column character font used in zx84.
- Ben Harris, for the Bedstead font, which carries the SAA5050 teletext glyphs.
- Einar Saukas and the contributors to ZXDB, the open database that powers the software library. The catalogs zx84 builds from it are derived from ZXDB and are meant to stay open.
- Hyllian, for the xBR scaling shaders.
- The MAME team, the openMSX team and the authors of Arnold, Caprice32, BeebEm, beebjit, HxC and the other open-source emulators and tools whose published behaviour and documentation taught us how the hardware works.
- Sean Young, Cliff Lawson, Jacob Nevins, the Grimware and CPCWiki contributors, and the many people who wrote hardware references, ROM disassemblies and technical notes.
- István Varga for ep128emu and Thomas Harte for Clock Signal, whose Enterprise emulation showed how Nick, Dave and EXOS behave.
- The ZX Spectrum, CPC, PCW, Einstein, MSX, MTX, Camputers Lynx, Jupiter Ace, Enterprise, SAM Coupé and BBC Micro communities, whose documentation, emulators and tools keep these machines alive.
Third-party code and data used in zx84, with their licences, are listed in THIRD_PARTY.md.
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found