Skip to content

georgik/rustzx-esp32

Repository files navigation

RustZX for ESP32

Rust Bare Metal implementation of ZX Spectrum for ESP32. The project is still work in progress.

Hardware (working):

Hardware (work-in-progress):

ZX Spectrum with USB keyboard over ESP-NOW (wireless)

Assembly

Assembly of the keyboard

  • plug USB keyboard to ESP32-S3-USB-OTG USB HOST connector
  • plug USB power supply to ESP32-S3-USB-OTG USB DEV connector
  • plug mini-USB connector to port for flashing

Flashing keyboard

  • use ESP-IDF 5.2
cd esp32-s3-usb-otg-keyboard
idf.py build flash monitor

Assembly of the main part

  • connect ESP32-S3-BOX or M5Stack CoreS3 with USB-C to computer and flash the application

Software setup

  • use espup to install Rust toolchain for Xtensa (ESP32-S3)
espup install
cargo install espflash
  • download a .tap file from Speccy archives and store it to data/hello.tap

Run

Flash and monitor the application.

ESP32-S3-BOX:

cd esp32-s3-box
cargo run --release

M5Stack CoreS3:

cd m5stack-cores3
cargo run --release

ESP32-C6-DevKitC-1:

cd esp32-c6
cargo run --release

ZX Spectrum with UART keyboard over espflash monitor

Software setup

  • use espup to install Rust toolchain for Xtensa (ESP32-S3)
espup install
cargo install espflash
  • download a .tap file from Speccy archives and store it to data/hello.tap

Run

Flash and monitor the application.

ESP32-C6-DevKitC-1:

cd esp32-c6
cargo run --release

Command cargo run --release will turn on espflash monitor after the flashing. You can use the monitor console as kkeyboard output.

ZX Spectrum PS/2 keyboard over UART (wired)

Assembly

Assmebly of the keyboard

git clone https://github.com/georgik/ps2keyboard-esp32c3.git --branch feature/serial-converter
cd ps2keyboard-esp32c3
cargo run --release

Assembly of the main part

  • connect ESP32-C3 keyboard converter and M5Stack CoreS3
GPIO4 RX (ESP32-C3 KB) - GPIO17 TX or T at Grove Port C (M5Stack CoreS3)
GPIO5 TX (ESP32-C3 KB) - GPIO18 RX or R at Grove Port C (M5Stack CoreS3)
GND (ESP32-C3 KB) - GND (M5Stack CoreS3)

Software setup

  • use espup to install Rust toolchain for Xtensa (ESP32-S3)
espup install
cargo install espflash
  • download a .tap file from Speccy archives and store it to data/hello.tap

Run

Flash and monitor the application:

cd m5stack-cores3-ps2-keyboard
cargo run --release

Hit enter to load the tape included in the memory.

References