Shows memory as pictures. Width W is in pixels and is rounded to whole bytes: 8 pixels (ZX, VGA), 2 pixels (EGA, 16C) or 1 pixel (256C). 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 1.36 | v1.36: 128K, vTR-DOS, ROM disk |
| ATM Turbo 1 | v4.50, 512K, BIOS v1.04.1R |
| ZX Evo BaseConf | 4096K; Turbo 2+ compatible (EGA 320x200, hires 640x200, text 80x25, CP/M) and Pentagon 128 / 1024; 3.5 / 7 / 14 MHz; SD (Z-Controller), NEMO IDE, CMOS, PS/2 keyboard and mouse; Reset Service |
| ZX Evo TS-Conf | 4096K, TS-BIOS; video ZX / 16c / 256c / text, 256x192 to 360x288, 256 colors of 32768; 2 tile layers, 85 sprites; DMA (copy, blitter, fill, SD, palette, sprites); INT by frame, line, DMA; 3.5 / 7 / 14 MHz; SD, CMOS; SPG programs; VDAC2 (FT812, up to 1280x1024): display list, co-processor (JPEG / PNG, zlib, matrices), no ROM fonts and widgets yet |
| Pentagon 128 | 48K/128K, TR-DOS 5.04TM, #EFF7 |
| Scorpion ZS 256 | 256K, ROM 2.95, TR-DOS 5.03 |
| Scorpion ZS 256 GMX | 2048K, 640x200 (own attributes, hardware scroll), turbo; flash 512K: GMX Loader 2.00 (Delete at start), Shadow Service Monitor 6.44 (NMI); SD (Z-Controller), SMUC, Dallas clock |
| 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 1.36 |
| iS-DOS Chic v5.01 | from HDD, Turbo 2+ xBIOS 1.36 |
| Wild Commander | from SD card, ZX Evo TS-Conf (GitHub) |
| NedoOS | from SD card, ZX Evo BaseConf (GitHub) |
| OSZ | multitasking OS, from SD card + OS.TRD, Scorpion ZS 256 GMX (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; GMX 640x200; TS-Conf 16c / 256c up to 360x288, text 720; 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, SD | IDE: ATM, NEMO, DIVIDE, SMUC, PROFI; SD card: Z-Controller |
| 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 from Xpeccy: registers and flags, disasm with labels and comments, assembler, breakpoints (address, memory, ports, INT, conditions), memory dump with pages, fill / save / load, stack, watches, screen (as shown, ZX, TS-Conf, CP/M), devices (AY, WD1793, tape, TS-Conf), projects |
| Graf Search | live memory viewer as graphics (ZX/EGA/VGA, TS-Conf 16C/256C) |
| File Commander | TRD/CPM/iS-DOS/HDD/VHD/RAM; viewer: txt/hex/Z80asm; Compile: sjasmplus (F9) |
| 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 |
| TS-Conf, TS-BIOS | TS-Labs (TSL), NedoPC; after the Verilog of the configuration and its datasheet |
| TASiS distributive | Maksagor (Maxim Timonin), NedoPC group |
| iS-DOS HDD boot, drivers | Yu. Korsunin |
| iS-DOS | Iskra Soft |
| Zuma Deluxe (TS-Conf) | port: andrewinsidelazarev (GitHub); ball sprites from Zuma-Deluxe-HD by GalaxyShad; the game © PopCap Games / EA |
| NedoOS | Alone Coder and NedoOS team (nedoos.ru) |
| Scorpion ZS 256, GMX | Scorpion; GMX board and Shadow Service Monitor: MOA (1993–1998) |
| GMX flash 2022–2025 | LW / PLM: GMX Loader 2.00, Shadow Service Monitor 6.44su, Navigator (ZS ProfRom) |
| OSZ | izzx (GitHub); with code of LW/PLM, S.V.Bulba, Kulich, Nihirash, ZORBA, GALSTAFF |
| 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 |
| sjasmplus (FC Compile) | Aprisobal, z00m128 and contributors (GitHub, BSD-3-Clause) |
| 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) |
| ~ (Shift + `) | hide / show the menu bar and the frame of the emulator window (also Options / Video; ATM mode: the key goes to the machine) |
| Shift+F12 | TS-Conf: reset into TS-BIOS Setup |
| Alt+F1 | Options (in ATM / PC keys mode it goes to the machine) |
| / | max speed on / off |
| Ctrl+Alt+Z | ATM mode (XT keyboard) on/off; ZX Evo TS-Conf: PC keys mode (F1-F12, Esc and the like go to the machine: Wild Commander) |
| 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 Evo BaseConf 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) |
| Touch: double tap | left button click |
| MB / RB | middle / right button: 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 |
| Programs | SPG (TS-Conf; starts ZX Evo TS-Conf), also from File Commander and REST snap= |
| Wild Commander | ZX Evo TS-Conf: a TR-DOS disk put into a drive is copied as .trd into the root of the SD card too, a .wmf program (Load, File Commander) goes there only; Enter on it in Wild Commander. The card has to be wc.zip without other changes, else it is replaced with wc.zip after a question |
| TS-Conf ZIP | a ZIP with an SD card image (.img / .vhd) or with boot.$C and its folders (Wild Commander) goes onto the SD card; TS-BIOS then starts boot.$C (Caps Shift + Reset). A .json next to the image, {"run": "folder/file.spg"}, names the file Wild Commander starts then (also with sd= in a link). An SPG that loads more files needs them on the card: start Wild Commander (TS-Conf) and copy them there (File Commander) |
| SD card ZIP | the .json next to the image may name the machine of the card and disks of the ZIP for the drives: {"model": "gmx", "a": "OS.TRD"} (OSZ). Load of the ZIP: that machine starts with the card, A: boots (Autostart). sd= in a link: the disks go in when the link has no a= / b= of its own |
| 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": the file (Autostart after load: a disk boots, a TS-Conf SD card runs its program). Use boot.b and Autostart TRDOS are for files of this computer. Tags: CPM HDD PRO SD TRD OS SPG (TS-Conf program: starts ZX Evo TS-Conf). A line that starts with # is a comment (trd.json, hdd.json, sd.json). A file in a link with no folder (sd=osz.zip in sd/sd.json) is in the list's folder; with a folder (trd/x.zip): from the site root |
| 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, 16 MB, with folders), Browser (the browser storage of Save / Load: kept for the next visits), Local server (the folder opened in Load / Local server, with its folders; read only). Active panel has orange frame; changes go to image right away (drive gets * mark: save it with Save).
F9 (Compile) assembles the file under the cursor with sjasmplus: it is the main source, its folder with its subfolders is the project (on any drive: RAM, SD card, HDD, a disk). INCLUDE / INCBIN paths are relative to the including file. The result goes to RAM disk, into the folder named as the main file: the files of SAVEBIN, SAVESNA, SAVETAP, SAVETRD, SAVEHOB, OUTPUT…, the listing (.lst), the labels (.sym) and the messages (.log); files with the same names are replaced. On errors the log opens in the viewer. Copy the result where needed (F5), Enter on .sna / .trd runs it. Upload a project to RAM: Files / Upload Files (a ZIP keeps its folders).
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).
Choose File, a file dropped on the screen and the files of Local server go the same way. Disks go into A:, HDD images into HDD 0, SD card images onto the SD card. B:, the ROM disk and HDD 1: Options / Disk.
| Disk | TRD SCL FDI UDI TD0 ISD PRO HOB $x IPF DSK. Autostart: reset to TR-DOS and RUN its boot. A disk without boot: boot.b menu (the emulator's boot, then the keys of "press") or first BASIC program (nothing is written to the disk) |
| +3 disk | DSK of 512-byte sectors: Spectrum +3 starts (always). Autostart: its menu, Loader |
| Tape | TAP TZX CSW. Autostart: reset to the 128 menu (BIOS menu of the machine), Tape Loader |
| Snapshot | SNA Z80 SP: runs at once, always |
| SPG | ZX Evo TS-Conf starts and runs it (always) |
| TS-Conf card | ZIP with an SD card image, or with boot.$C (a new card is made), or with an SPG: ZX Evo TS-Conf starts, Wild Commander boots. Autostart: the program named in the ZIP's .json ({"run": "dir/file.spg"}) runs too |
| HDD / SD | .hdd .hdf (or a ZIP with a .chs): HDD 0. .img .vhd .ima .bin .raw: the SD card on ZX Evo; on other machines you are asked (HDD 0 or SD card). An SD card with NedoOS (sd_boot.$C) or Wild Commander (boot.$C) is not asked about. Autostart + Boot from HDD / SD: the machine boots from it (xBIOS: Boot → HDD; ZX Evo: Reset Service, SD card; TS-Conf: Wild Commander and the card's program; others: Reset); a NedoOS card starts ZX Evo BaseConf, a Wild Commander card TS-Conf. Off: only mounted |
| ZIP | one file in it: as that file; several: you choose one |
Autostart off: the file is only mounted (Load stays open). A file for another machine (+3 disk, SPG, TS-Conf card) still switches it.
The files Save put into this browser (Where: Browser storage), the newest first; only in this browser on this device (clearing the site's data removes them). File Commander shows them as the drive Browser.
| Run | on the machine it was saved on, started as Local file with Autostart (an HDD / SD image boots) |
| Mount | loaded, the machine stays, Load stays open |
| Delete | out of the browser storage |
A folder of a web server on your network: its files open as Local file (the same Autostart). Once opened, File Commander shows it as the drive Local server (read only).
The entries of trd/trd.json, then hdd/hdd.json, then sd/sd.json, each as written: an image or an OS is written once, in its list (hdd.json / sd.json). An entry may have both: "url" (its image: Mount, and Options / Disk) and "run" (a link: Run), e.g. {"name": "NedoOS", "url": "nedoos.zip", "run": "?model=nedoos", "tag": "SD OS"}. A file with no folder is in the list's folder. Tag buttons: the entries with any of the chosen tags (several at once); All: every entry. In these files a line that starts with # is a comment.
| Run | an entry with a link: starts it as set on the server (machine, speed, disks, HDD / SD, program). Its ▾ puts Run or Mount on the button; the button does it |
| Mount | only its files go in (disk: A:, HDD 0, SD card); the machine stays, Load stays open. A TS-Conf card: Wild Commander boots, its program does not run |
Unsaved changes of a disk, HDD or SD card that a load replaces: you are asked first (Run: once, with the machine it switches to).
The machine and what is mounted now; * = changed, not saved. ⏏ ejects (as in Options / Disk). Settings (at its title): Options / Disk.
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, xbios136, atm450, evo, tsconf, 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; tsconf: 3.5, 7 or 14 (MHz) — the CPU Speed of TS-BIOS (programs may set their own). With speed= the visitor's True clock is off for this visit |
| trueclock=1 / 0 | True clock on / off for this visit (not stored): the machine's own clock, programs switch its turbo; speed= is not used then |
| 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, 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 |
| hidemenu=1 | no menu bar and frame of the emulator window for this visit (~ or the ☰ corner shows them; visitor's own setting is not changed) |
| 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.