{"id":16276546,"url":"https://github.com/virgesmith/pico-zxspectrum","last_synced_at":"2026-03-01T17:02:47.030Z","repository":{"id":37014728,"uuid":"493387810","full_name":"virgesmith/pico-zxspectrum","owner":"virgesmith","description":"ZX Spectrum emulator using Ras Pi pico with 5cm screen","archived":false,"fork":false,"pushed_at":"2025-02-24T16:38:24.000Z","size":11323,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-18T21:16:23.337Z","etag":null,"topics":["raspberry-pi-pico"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/virgesmith.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-05-17T19:30:20.000Z","updated_at":"2024-05-10T18:18:13.000Z","dependencies_parsed_at":"2025-03-02T09:42:25.563Z","dependency_job_id":"07427cd4-686d-4315-9648-4964ad1cbbbc","html_url":"https://github.com/virgesmith/pico-zxspectrum","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/virgesmith/pico-zxspectrum","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/virgesmith%2Fpico-zxspectrum","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/virgesmith%2Fpico-zxspectrum/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/virgesmith%2Fpico-zxspectrum/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/virgesmith%2Fpico-zxspectrum/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/virgesmith","download_url":"https://codeload.github.com/virgesmith/pico-zxspectrum/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/virgesmith%2Fpico-zxspectrum/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29976272,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T16:35:47.903Z","status":"ssl_error","status_checked_at":"2026-03-01T16:35:44.899Z","response_time":124,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["raspberry-pi-pico"],"created_at":"2024-10-10T18:48:48.949Z","updated_at":"2026-03-01T17:02:46.997Z","avatar_url":"https://github.com/virgesmith.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pico-zxspectrum\n\nIt's been 40 years... I still remember the computery smell when I unboxed mine at Xmas (I *think* 1983)\n\nSo for old times' sake here's a ZX Spectrum emulator for the [Raspberry Pi pico](https://www.raspberrypi.com/documentation/microcontrollers/raspberry-pi-pico.html), using:\n\n- screen: a [5cm 320x240 TFT display](https://shop.pimoroni.com/products/pico-display-pack-2-0?variant=39374122582099) as screen.\n- keyboard: USB serial connection\n- sound: not sure yet...\n- cassette recorder: life's too short...\n\n## Status\n\n- [X] display: fully operational\n- [X] keyboard: serial works using a basic python client\n- [ ] sound\n- [ ] real-time(?) tape loading\n- [X] image loading over USB serial: Z80 and SNA formats supported\n- [X] image saving over USB serial: Z80 format\n- [X] save screenshot over USB serial: png format\n\n![boot](./doc/boot.jpg)\n\n![basic](./doc/basic.png) ![jetpac](./doc/jetpac.png)\n![chegg](./doc/chegg.png) ![manic](./doc/manic.png)\n\n\n## Dependencies\n\nRequires [pico-sdk](https://github.com/raspberrypi/pico-sdk) (and its dependencies e.g. tinyUSB...), plus the [pimoroni-pico](https://github.com/pimoroni/pimoroni-pico) libraries. In the repo root:\n\nEnsure tinyUSB sources are present in the `lib` subdir of the SDK (extract or symlink to a release here, or use git submodules), e.g.\n\n```sh\ncd pico-sdk-1.5.1/lib\nrmdir tinyusb # will be empty initially\nln -s ../../tinyusb-0.14.0 tinyusb\n```\n\nUsing tinyusb 0.15 or above results in a linker error that I don't know how to fix:\n\n```txt\n[100%] Linking CXX executable picozxspectrum.elf\n/usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/bin/ld: picozxspectrum.elf section `.bss' will not fit in region `RAM'\n/usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/bin/ld: region RAM overflowed\n/usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/bin/ld: section .stack1_dummy VMA [0000000020040000,00000000200407ff] overlaps section .bss VMA [0000000020001828,000000002004005f]\n/usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/bin/ld: region `RAM' overflowed by 96 bytes\ncollect2: error: ld returned 1 exit status\nmake[2]: *** [CMakeFiles/picozxspectrum.dir/build.make:1447: picozxspectrum.elf] Error 1\nmake[1]: *** [CMakeFiles/Makefile2:1541: CMakeFiles/picozxspectrum.dir/all] Error 2\nmake: *** [Makefile:91: all] Error 2\n```\n\n## Configuration\n\nSymlink Pico SDK and Pimoroni Pico:\n\n```sh\nln -s ../pico-sdk-1.5.1 pico-sdk # adjust version and location as necessary\nln -s pico-sdk/external/pico_sdk_import.cmake\nln -s ../pimoroni-pico # adjust to wherever you cloned it to\n```\n\n## Build\n\n```sh\nmkdir -p build \u0026\u0026 cd build\ncmake -DPICO_SDK=../pico_sdk ..\nmake -j\n```\n\n## Install\n\nStill in the build directory:\n\n```sh\ncp picozxspectrum.uf2 /media/$USER/RPI-RP2/\n```\n\nYou should see at this point a blank screen with the LED bright white.\n\n## Use\n\nInteraction requires a (rudimentary) keyboard driver written in python and depends on pyserial and pynput. It can also load an image (Z80 or SNA) on startup:\n\n```sh\npython zx.py [image]\n```\n\nKeys map closely to the ZX Spectrum keyboard (below), with `LShift`as caps shift, `RCtrl` is symbol shift. `LShift+RCtrl` enters extended mode. Various unmapped keys also work, such as `Backspace` and the arrow keys which emulate caps-shifted 0,5,6,7,8 respectively.\n\n~~`PrtScr`~~`Home` triggers a screenshot save (png format)\n\n`Ins` triggers an image save (registers and RAM in Z80 format)\n\n`Del` or the screen's `X` button resets the device to the last image loaded/saved, or ZX basic.\n\n`Esc` followed by `Ctrl+C` exits the keyboard listener.\n\n![spectrum-48-keyboard](./doc/spectrum-48-keyboard.png)\n\n## Acknowledgements\n\nMuch of the C and C++ source code originates from: https://github.com/Jean-MarcHarvengt/MCUME. Copyright notices, where present, have been preserved.\n\nThese were also very useful:\nhttp://www.breakintoprogram.co.uk/computers/zx-spectrum.\nhttps://github.com/fruit-bat/pico-zxspectrum\n\n\nKeyboard layout from https://dotneteer.github.io/spectnetide/getting-started/use-keyboard-tool\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvirgesmith%2Fpico-zxspectrum","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvirgesmith%2Fpico-zxspectrum","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvirgesmith%2Fpico-zxspectrum/lists"}