Changelog
[0.9.5-beta5] - 2026-07-28
Added
- SD-card activity indicator — status-bar icon per Next slot: empty / read / write / unsaved-changes; tooltip shows file name + RO/RW mode.
- Corrupt-card warning — a corrupt/unformatted Next SD card raises a dialog (+ red status icon) instead of a blank “Error Mounting” guest screen.
- Scan / Fix SD Card — Media ▸ SD0/SD1 ▸ Scan / Fix…: FAT consistency check, with reformat-to-fix for an unreadable card.
Fixed
- Z80N flag accuracy:
ADD HL/DE/BC,Anow clear the carry andLDWScomputes it, matching the FPGA — programs branching on the carry after these no longer take the wrong path. - LGPL corresponding-source artifacts regenerated — the published
z80emupatch andz80-ffibridge source had drifted from the shipping library (missingZ80::set_haltand thez80ffi_imexport); both now reproduce it, verified by rebuilding the library from them alone. - First-run setup no longer recurs each launch — onboarding’s installed SD path is now persisted to the config.
- DZRP debugging fixed — the previous implementation was non-conformant and could not connect; DeZog now attaches, reads registers and memory, and stops at breakpoints.
--nexwas silently ignored outside--screenshot; the windowed and--headlesspaths now load it too.- IM2 daisy controller was gated on a stale interrupt mode in default (dynamic-link) builds — the bus mirrored
Cpu::inner()’s mode, so a program’sIM nwent unseen; a cheapim()read was added to the CPU library and the bus now mirrors the live mode. - Debugger reported stale (≈reset) CPU registers while the machine was running, in default (dynamic-link) builds only —
Cpu::inner()never pulled from the dlopen’dz80-ffilibrary; ADPreg/state/get cpu.*and Rhaireg()now read live state.
Changed
- Emulation is substantially faster — measured end to end on two machines (AMD x86_64 / Apple M4 Pro): TX-1696 +163% / +112%, NXModPlayer +111% / +81%, scrollnutter +92% / +66%. Interrupt-heavy and sprite-heavy programs gain most; output is byte-identical in every case.
- Save states now use the
.bzstextension (was.azst); the file format is unchanged, so existing states load under either name.
[0.9.4-beta4] - 2026-07-23
Added
- Save State / Load State — the File menu now saves the full machine state to a file and restores it later (the
--savestate/--loadstatecapability, now available interactively). - Re-runnable setup — Help ▸ Run Setup… (re-)downloads or locates the ROMs and Next SD card at any time, not just on first launch.
Changed
- The executable is now named
bizmuth(wasazimuth), matching the app name — so the Linux command and the application-menu title read “Bizmuth” consistently. - The Z80/Z80N CPU core now ships as a separate, replaceable library installed alongside Bizmuth (
z80_ffi.dllon Windows,libz80_ffi.soon Linux,libz80_ffi.dylibon macOS) instead of being compiled in — so the open-source (LGPL) CPU core can be swapped for your own build. If that library is missing from the install, Bizmuth will not start. - Faster interrupt-heavy programs — the IM2 daisy-chain interrupt controller no longer re-evaluates every peripheral on every bus cycle, giving roughly a 20% speed-up on interrupt-driven programs such as NXModPlayer and TX-1696 (output is byte-identical).
- Calmer idle screen — the no-machine screen is now a softer “No Input” backdrop with a bottom-left caption (was a bright “No ROMs!” test pattern), shown from launch until a machine boots so the window is never a plain black rectangle.
Fixed
- No more silent black screen when a Next can’t boot — a Next needs a bootable SD card in slot 0; if it’s missing or misconfigured (or ROMs are absent), Bizmuth now shows a clear dialog with Download / Preferences… / Quit and boots in place once you fix it, instead of a blank or near-blank screen. Config paths (ROM folder, SD images) are now stored and resolved as absolute, so launching from Finder or a different folder no longer fails to find them. A missing or unreadable boot ROM surfaces an error rather than a black screen.
- Menu tick marks stay correct — the Disk Write-Protect, Sprite RAM, Capture Mouse and SD Read-Only menu items now keep their check marks in sync with the actual state (previously only some menus reconciled, so these could show the wrong state after a change made outside the menu).
- Save-state restore fidelity — restoring a state while a program was running no longer leaves the machine slow or flickery: the CPU-speed, memory-wait and IM2-daisy settings, and any in-flight DMA→DAC audio stream, are now carried across the load. (The save-state format is now v2; states written by earlier builds can no longer be loaded.)
- Audio on high-rate USB DACs — the audio buffer is now sized by time rather than a fixed sample count, so it no longer under-runs (crackle/dropouts under load) on output devices running at high sample rates (96/192/384 kHz).
- Windows: no longer opens a console window on launch (runs as a GUI app); logs still print when started from a terminal.
[0.9.3-beta3] - 2026-07-20
Added
- In-app update check — on startup Bizmuth checks for a newer release and shows a notification (with a Preferences toggle to turn it off). The About box and
--versionnow report the exact build version, date and commit. - ADP debugger: page-qualified breakpoints (
page:off) for debugging banked memory, plus a headless server mode and apausestop-event.
Changed
- Reworked the About box into a custom dialog (logo, tagline, version, and a Check-for-updates link).
[0.9.1-beta2] - 2026-07-17
Added
- Emulates the 16K Spectrum (Machine menu /
--machine 16k). - ADP debugger: asynchronous
*stoppedevents (breakpoint hits reported without polling),mem write(poke), and step-over (next); command paths are now quote-aware.
Changed
- Every distribution now bundles a
THIRD-PARTY-LICENSESfile.
[0.9.0-beta1] - 2026-07-15
First public beta — a ZX Spectrum Next emulator built for developers.
Added
- Emulates the 48K, 128K, +2A and +3 Spectrums, and the full ZX Spectrum Next core (Z80N, Layer 2, sprites, tilemap, copper, DMA, CTC, audio) — verified against the FPGA.
- Source-level debugging: the ADP protocol (TCP :11001), DZRP for DeZog, a GUI debugger window, conditional breakpoints, memory watchpoints and Rhai event scripting.
- Loads
.nex,.sna/.snx/.z80snapshots,.tap/.tzxtapes and.dskdisks; NextZXOS SD-card images; full save-states; headless capture and scripting. - First-run setup assistant (fetches the ROM pack + SD image); keyboard, Kempston mouse and gamepad input.
- macOS (signed + notarised
.dmg), Windows (installer + portable zip) and Linux (AppImage /.deb/ Arch package).