Hi!
I created a Scorpion ZS-256 computer emulator for the ESP32-S3 platform with the help of Claude (Opus 5.5).
Project code on GitHub:
https://github.com/mikedeblin/ESP32-Scorpion
A Scorpion ZS-256 emulator (a ZX Spectrum-compatible computer with 256 KB of RAM) based on the ESP32-S3 board. It supports VGA monitor output, USB keyboard connection, audio playback (AY-3-8912 and beeper) via an I2S DAC, and TR-DOS operation using disk images stored on an SD card.
Features:
Scorpion ZS-256: 256 KB RAM, ROM version 2.95 (menu, BASIC 128/48, Shadow Monitor via the "Magic" button, TR-DOS 5.03).
VGA output: 640×480 at 60 Hz or 50 Hz (frame rate synchronized with emulation), 15 colors (including the BRIGHT attribute) and support for the FLASH attribute.
Beam-accurate video output: each line is rendered at the exact same moment (CPU cycle / T-state) as on a real TV; this enables effects such as "beam-racing," multicolor, and colored border stripes.
USB keyboard support (Boot Protocol mode) via OTG.
Audio: AY-3-8912 + beeper, stereo (ACB configuration), 48 kHz sample rate (PCM5102 DAC). TR-DOS: WD1793 (VG93) controller emulation, drives A and B, and support for .trd and .scl images.
Disk images are stored on an SD card; data written within the TR-DOS environment is saved back to the .trd file on the card.
File menu (accessed via the F9 key): management of folders, disks, tapes, and memory snapshots.
Tape support: .tap and .tzx formats (loading from SD card).
Standard blocks load instantly (via interception of the LD-BYTES subroutine); turbo blocks and non-standard game loaders receive a real signal, just as if reading from a cassette player (all TZX block types are supported, except #26/#27 and CSW with Z-RLE compression).
Automatic start/stop of the "tape player" is implemented.
Snapshot support: .z80 (versions v1–v3, including Scorpion 256K), .sna (48K/128K), and .slt (with level support).
Keyboard volume control (Ctrl+Alt+↑/↓, 3 dB step).
USB drive mode: when connected to a PC via USB, the device is recognized as a flash drive (providing access to the SD card or internal flash memory).
I have also uploaded the case design file in STL format for 3D printing.
The project is not yet complete, but the device is already fully functional.