Shows memory as pictures. Width W is in pixels and is rounded to whole bytes: 8 pixels (ZX, VGA) or 2 pixels (EGA). Height follows window.
Live view: memory is redrawn 25 times a second while emulator runs; in debugger stopped state is shown.
Keys work while window has focus. − / + buttons repeat when held.
Not started yet: the bits set here (on = on and locked) are used when the model starts.
Locked bits stay as set here: programs cannot change them and Reset keeps them. Unlocked bits are set by programs and cleared on Reset. Bit 4 is always on.
On: music of other apps keeps playing together with the emulator, but the ring / silent switch mutes the emulator. Off: the emulator plays even in silent mode, and other apps' sound stops when it starts. iOS 17 or later.
| Turbo 2+ | v7.10, 1024K, BIOS v1.07.13, XT |
| Turbo 2+ xBIOS XT | v1.32XT: 128K, vTR-DOS, ROM disk |
| Turbo 2+ xBIOS 1.36 | v1.36: 128K, vTR-DOS, ROM disk |
| ATM Turbo 1 | v4.50, 512K, BIOS v1.04.1R |
| ZX Evolution | 4096K, BaseConf |
| Pentagon 128 | 48K/128K, TR-DOS 5.04TM, #EFF7 |
| Scorpion ZS 256 | 256K, ROM 2.95, TR-DOS 5.03 |
| Profi 1024 | 1024K, ROM BIOS 2.2 (Micco Software), CP/M: get fdd img |
| KAY 1024 | 1024K, JV Kramis 0.3 |
| Spectrum +3 | 128K, ROM 4.1, +3DOS (µPD765) |
| Quorum 1024 | 1024K, ROM-MENU 4.2 |
| TASiS v5.40 | from HDD, Turbo 2+ xBIOS XT |
| iS-DOS Chic v5.01 | from HDD, Turbo 2+ xBIOS XT |
| NedoOS | from SD card, ZX-Evolution (GitHub) |
| Custom ROM | own ROM or ROM set (128 / 48 / TR-DOS / service) on any of these machines; Save keeps ROM + json |
| Video | ZX 256x192; ATM 320x200, 640x200, 80x25; filters |
| Sound | AY/YM2149, TurboSound FM, SAA1099, Soundrive |
| ZXBUS cards | ZX-MultiSound Rev.A2 / Max (OPL3), ZXM-MoonSound (OPL4, YRW801 ROM) |
| General Sound | NeoGS: Z80, 512KB ROM, 2MB RAM, 8 ch |
| Disks | Beta 128 (WD1793), +3 (µPD765) |
| HDD | IDE: ATM, NEMO, DIVIDE, SMUC, PROFI |
| Input | ZX/XT/Joystick virt panel, Kempston mouse |
| CPU clock | 3.5 MHz x 0.1 … 20 |
| Debugger | almost full port from Unreal 0.39.0 |
| deBUGa | debugger after Xpeccy: registers, disasm with labels, memory, stack |
| Graf Search | live memory viewer as graphics (ZX/EGA/VGA) |
| File Commander | TRD/CPM/iS-DOS/HDD/VHD/RAM; viewer: txt/hex/Z80asm |
| Performance | live graphs: Z80 load, host time, memory, disk, I/O, frames |
| System Info | CPU, ports, disks, sound, host (live) |
| REST API link | fast link to start model (up to CP/M commands) |
| UnrealSpeccy | SMT (author), Alone Coder, deathsoft (0.38–0.39.0) and contributors; freeware with sources |
| eXtra BIOS, vTR-DOS | ukms[z], NedoPC |
| ZX-Evolution, ERS | NedoPC |
| TASiS distributive | Maksagor (Maxim Timonin), NedoPC group |
| iS-DOS HDD boot, drivers | Yu. Korsunin |
| iS-DOS | Iskra Soft |
| NedoOS | Alone Coder and NedoOS team (nedoos.ru) |
| TR-DOS | Technology Research Ltd. |
| CP/M 2.2 | Digital Research |
| ZX Spectrum | Sinclair Research / Amstrad |
| ATM Turbo 2+ hardware | MicroART |
| Honey Commander | Honey Soft |
| Xpeccy (deBUGa) | SAM style (Xpeccy, MIT) |
| Web port | ae485; WebAssembly: wasi-sdk, Binaryen |
| ZX-MultiSound | SeregaButylkin |
| ZXM-MoonSound | Mick Laboratory |
| YM2203, YMF262, YMF278B, YRW801-M | Yamaha Corporation |
| F1 | File Commander |
| Shift+F1 | debugger (which one: Options / System; F1 in it: its keys) |
| F2 | Save window |
| F3 | Load window |
| F4 | sound on / off |
| F5 | start / stop emulation |
| F7 | start / stop tape |
| F12 | reset (BIOS menu) |
| Alt+F1 | Options |
| / | max speed on / off |
| Ctrl+Alt+Z | ATM mode (XT keyboard) on/off |
| Esc | releases captured mouse |
Start a machine, disks and programs from a link: Tools / REST API link (? there lists every parameter).
| Shift / right Shift | CAPS SHIFT / SYMBOL SHIFT |
| ← → ↑ ↓ | cursor (CAPS SHIFT + 5…8) |
| Backspace | DELETE (CAPS SHIFT + 0) |
| Caps Lock | CAPS LOCK (CAPS SHIFT + 2) |
| Tab | EXTEND MODE (CAPS SHIFT + SYMBOL SHIFT) |
| Shift + Space | BREAK (CAPS SHIFT + SPACE) |
| ` (tilde), Esc | EDIT (CAPS SHIFT + 1); Esc first releases captured mouse or closes window in focus. ATM XT keyboard: Esc stays Esc |
| PgUp / PgDn | CAPS SHIFT + 3 / 4 |
| Ins / Home / End | SYMBOL SHIFT + W / Q / E |
| , . - + ; ' / \ | SYMBOL SHIFT combinations ([ZX.KEYS] in unreal.ini) |
| Numpad 1–9 | Kempston joystick, 5 = fire |
Turbo 2+, xBIOS, ZX-Evolution with ATM mode on (XT icon, bottom left): keys go to ATM keyboard controller. CP/M and other ATM programs get PC keys; ZX programs get ZX keys from controller's own table. On-screen XT panel sends same keys as real keyboard.
| letters, digits, Space, Enter | same keys |
| Shift / right Shift | CAPS SHIFT / SYMBOL SHIFT |
| Ctrl | EXTEND MODE (CAPS SHIFT + SYMBOL SHIFT) |
| Esc | EDIT (CAPS SHIFT + 1) |
| Caps Lock / Tab / Alt | CAPS SHIFT + 2 / 3 / 4 |
| ← ↓ ↑ → | cursor (CAPS SHIFT + 5…8) |
| Backspace, Del / End | DELETE (CAPS SHIFT + 0) / CAPS SHIFT + 9 |
| - = [ ] ; ' ` \ , . / | SYMBOL SHIFT + J L Y U O P A S N M V |
| F1–F10 / F11 F12 | SYMBOL SHIFT + 1…0 / H F |
| Mouse icon | capture mouse (Kempston), Esc releases |
| Touch: drag | moves pointer (start on it and it stays under finger) |
| Touch: 2nd finger | holds left button while it is down (drag with button held) |
| LB / RB | tap = click, long tap = button held until next tap |
| 1pps / 2pps | program's pointer speed (pixels per step): switch it if pointer runs ahead of / behind finger |
| Wheel | Kempston wheel |
| bottom left | XT keyboard on / off (ATM) |
| bottom right | on-screen ZX / XT keyboard and joystick |
| Disks | TRD, SCL, FDI, UDI, TD0, ISD, PRO, $B, $C; DSK, IPF (read-only) |
| Tapes | TAP, TZX, CSW |
| Snapshots | SNA, Z80, SP |
| Archives | ZIP: pick file inside |
| HDD | raw images (.hdd, .img …): Options → HDD |
| Save | disks TRD, SCL, FDI, UDI, TD0, ISD, PRO; HDD + .chs; SD as VHD; SNA; SCR; PNG; memory block BIN; Custom ROM (ROM + json) |
| ROM | Custom ROM (Options → System): .rom / .bin / .zip (ZIP with json: machine and pages come back) |
| Server list | trd/trd.json: [{"name": "…", "run": "?model=atm710&a=trd/x.zip&cpm=b:x&xt=1", "tag": "CPM"}]: Load starts REST link ("Autostart after load", machine can be changed) or only mounts its file; "url" instead of "run": file only. Tags: CPM HDD PRO SD TRD OS |
| Server ROMs | rom/<name>.zip (or rom/<name>.rom); parts for ROM sets: rom/roms.json |
Two panels, each on drive: A: / B: (TR-DOS, ATM CP/M, Profi CP/M .PRO, iS-DOS floppies), HDD 0 / 1 (ATM CP/M, iS-DOS or FAT drives), SD card (FAT), RAM (scratch disk for this session). Active panel has orange frame; changes go to image right away (drive gets * mark: save it with Save).
TR-DOS: 8 characters + type; CP/M and iS-DOS: 8.3; FAT: long names (NAME~1.EXT short name is added).
Split files (long file cut into parts with same name): shown as NAME.001, NAME.002…; copy joins them into one file (S3M, MOD, ZIP… by contents, otherwise BIN), except onto TR-DOS. File over 255 sectors copied or put onto TR-DOS is split same way.
Live graphs, updated twice a second. Big number is current value, line below explains it.
Where Z80 runs its code: 64K address space as 4 banks of 16K (page in each bank is signed), 1K blocks glow by how often program counter is there. Big number: hottest block. Below: share of time in ROM / RAM, busy = part of frame CPU is not halted.
How much of real time this browser spends emulating. Below: milliseconds per emulated frame (20 ms = real time limit).
RAM as map of 16K pages: written pages glow, pages mapped into Z80 address space now are outlined. Big number: pages written since last update.
Share of frames with floppy drive busy (reading or writing).
Z80 port accesses per frame (IN + OUT).
Emulated frames per second: 50 is real time; red above dashed line = faster than real time (Max speed, turbo).
Link to this page with parameters starts a machine as set: index.html?model=pentagon&fdd=a:trd/game.trd&run=game. Parameters may also follow #. Paths are on this site; full URL of another site works when that site allows it (CORS, e.g. raw.githubusercontent.com). What a link sets is not stored: visitor's own settings stay (only sd= switches Z-Controller on).
| rom= | Custom ROM ZIP: machine with its ROM and settings (instead of model=), see below |
| model= | atm710, xbiosxt, xbios136, atm450, evo, pentagon, scorpion, profi, kay, plus3, quorum, tasis, chic (TASiS / iS-DOS Chic from HDD), nedoos (NedoOS from SD card) |
| speed= | clock: 2 (×3.5 MHz) or 7mhz |
| fdd= | disk image (path on this site) with its drive: a:trd/game.trd or b:trd/work.trd; without drive (fdd=trd/game.trd) goes to A:. Two fdd= for both drives. Path from site root: a:/soft/game.trd. Old a= and b= work too. ATM CP/M works with A: only (its B:) |
| hdd0= hdd1= | HDD image for HDD 0 (master) or HDD 1 (slave): zip with image and its .chs, or .hdd (e.g. hdd0=hdd/cpm.zip); hdd= is HDD 0. ATM CP/M works with HDD 0 only (its C:) |
| sd= | SD card image for Z-Controller: .img, .vhd or zip with it (e.g. sd/card.zip) |
| tape= snap= | tape or snapshot |
| autorun=1 | start disk in A: (or tape): its boot; disk without boot: its first BASIC program (RUN "name" in TR-DOS, nothing written to disk); Profi with CP/M disk (.PRO): CP/M from FDD; not on +3 (no TR-DOS) |
| autorun=boot | as Load / Use boot.b: its boot; disk without boot gets the emulator's boot (boot.b menu, see press=) |
| press= | with autorun: keys for menu of the emulator's boot (0 = first program, enter); not sent to a boot of the disk's own |
| run= | start TR-DOS file from disk in A: (BASIC or code); no name: as autorun=1 |
| cpm= | ATM CP/M command (atm710, xbiosxt, xbios136, evo): b:alasm; several commands with | between them: b:|dir|alasm (CP/M B: = drive A:, C: = HDD) |
| xt=1 mute=1 | ATM mode on; sound off |
| swapmouse=1 | Kempston mouse buttons swapped (as Options / Input / Swap Mouse Buttons), for this visit only |
| kbd= | on-screen keyboard: zx, xt, joy; off = hidden (visitor's own setting is not changed) |
1. Options / System / Custom ROM: Select ROM, machine, slots (e.g. Quick Commander in 128), Start.
2. Set clock; Options / Disk: Accurate FDD, HDD interface.
3. Save / Custom ROM: ZIP with ROM and its .json.
4. Put ZIP on this site or on GitHub, link: ?rom=rom/my_machine.zip (or rom=https://raw.githubusercontent.com/…/my_machine.zip). Other parameters (fdd=, hdd0=, run=…) work with it.
| machine | PENT128, PENT1024, KAY, SCORPION, PROFSCORP, PROFI, PLUS3, QUORUM, ATM450, ATM710, EVO |
| pages | ROM set: 16K page of .rom for each slot (128, sos, dos, sys) |
| reset | start in: auto, SYS, MENU, BASIC, DOS |
| speed | clock: 1 = 3.5 MHz … 20 (nearest step is taken) |
| fdd | accurate (WD1793 timing, no TR-DOS traps) or fast |
| hdd | HDD interface: NONE, ATM, NEMO, NEMO-A8, NEMO-DIVIDE, SMUC, PROFI, DIVIDE |
| ini | any unreal.ini keys, by section (written by hand): {"BETA128": {"Traps": 0, "Fast": 1, "IL": 2}, "MISC": {"RAMSize": 512}} |
speed, fdd, hdd and ini keys win over what visitor has set in Options, while this machine runs. Order: link, then ZIP, then visitor's settings — speed= in link wins over speed of ZIP; HDD image from hdd= whose .chs has Interface= switches that interface on, over hdd of ZIP. Save / Custom ROM writes speed, fdd and hdd as machine runs now.