Well color me old! The ZX Spectrum was released 40 years ago today!
The Spectrum lives on in open source, public domain, and the hearts and minds of....
Here's my take on the top ten ZX Spectrum projects on GitHub today. You won't believe number 9!
Editors note: we've warned Lee before about these clickbaity comments, but it's that, or a terrible pun.
@Pacmancoder's aptly-named Rustzx is a cross-platform ZX Spectrum emulator written in Rust supporting tap
(tape), sna
(snapshot), scr
(screenshot), and rom
files. Yes, that's right - you can play your Spectrum games on macOS, Linux, and Windows... or even type out some old programs from your archives.
The Internet Archive has a healthy supply of ZX Spectrum games, and magazines like Sinclair User and Crash.
JSSpeccy 3 is a rewrite JSSpeccy 2 to make use of newer web technologies and APIs. The emulation runs in a Web Worker, freeing up the UI thread to handle screen and audio updates, with the emulator core running in WebAssembly, compiled from AssemblyScript (with a custom preprocessor) 🤯
https://github.com/mrcook/jetpac-disassembly
[ Embed YT video: https://www.youtube.com/watch?v=1eW39C1hQgU ]
Fluidcore is a 4 channel PCM wavetable player for the ZX Spectrum beeper, using looped 256 byte waveforms. It offers a total of 17 volume levels, and can handle up to ~860% overdrive when the maximum volume level is exceeded.
SkoolKit is a collection of utilities that can be used to disassemble a Spectrum game (or indeed any piece of Spectrum software written in machine code) into a format known as a skool file. Then, from this skool file, you can use SkoolKit to create a browsable disassembly in HTML format, or a re-assemblable disassembly in assembly language. So the skool file is - from start to finish as you develop it by organising and annotating the code - the common 'source' for both the reader-friendly HTML version of the disassembly, and the developer- and assembler-friendly version of the disassembly.
What is disassembling? This is the process of taking an executable and breaking it down into a representation in some form of assembler language so that it is readable by a human.
Example: https://dpt.github.io/The-Great-Escape/
https://github.com/dpt/The-Great-Escape-in-C
https://github.com/shred/tzxtools
A framework for test-driving assembly code for the Sinclair ZX Spectrum 48k.
include src/zx-spec.asm
spec_init
describe 'ld a,n'
it 'sets A register to value'
ld a,5
assert_a_equal 5
spec_end
Younger readers will have no idea what this device is.
https://github.com/raydac/zxtap-to-wav
https://github.com/jarikomppa/img2spec
https://github.com/Fabrizio-Caruso/CROSS-LIB
https://github.com/stefanbylund/zxnext_level9/tree/master/compilation