Pages about Retrocomputing – page 1 of 2
-
Spaces in variable names in ZX Spectrum BASIC
Variables in ZX Spectrum BASIC can contain spaces, which is useful for naming variables with multiple words, but it makes parsing difficult.
-
Making the MOD player available
After fighting CSP and the browser security model, the MOD player is now available for anyone to use, on any web site, to play any MOD file.
-
Using music as a timing source for demos
In this article, I add a new feature to my JavaScript music player: the ability to subscribe to timing events based on the music.
-
Syncopation and a human touch
The final two effects are implemented, and they help demoscene musicians add some more feeling to their songs.
-
Adding pitch-related effects
The MOD player is progressing nicely. Vibrato, portamento and arpeggio effects are now implemented and working correctly.
-
Implementing looping and the first effects
Some of the effects needed to play some of the iconic demo tunes of the 1990s are now implemented, and samples can be looped correctly.
-
Playing a full song, almost
My MOD player is finally able to play a full song, almost. It's still missing the effects, but it's a good start.
-
Loading MOD files in the browser
The MOD file is a staple of the 90s demoscene. In this article, I'll read a MOD file in JavaScript, and learn a bit about the format along the way.
-
Generating sound in modern Web Audio API
My first steps in playing music in the browser using Web Audio API start with generating a simple sine wave in an Audio Worklet.
-
Modernizing Artsy
I'm modernizing my JavaScript Canvas remake of the 1993 Amiga demo Arte by Sanity.
-
Emulating ZX Spectrum graphics in JavaScript
I'm using EcmaScript 6 Proxy objects to keep track of dirty blocks in emulated ZX Spectrum video RAM in a browser. I describe how the ZX Spectrum video RAM works, and implement an emulator using modern JavaScript.
-
"Hello, World!" in ZX Spectrum machine code
A "Hello, World!" program in Z80 assembler for the ZX Spectrum can be written by calling the CHAN_OPEN and PRINT subroutines to send the "Hello, World!" string to the screen channel.