I have always loved Sinclair ZX Spectrum‘s characteristic tape loading method using yellow/blue stripes in the border. Contrary to Amstrad CPC‘s humble block-by-block loader with no visual feedback on screen, Spectrum offered a feast for the eye! So sexy, so catchy…
A bit of History
Major game developers/publishers of the 80s (Ocean, US Gold, Gremlin Graphics, Firebird, etc.) used turbo loaders on Amstrad by imitating the landmark tape loading system that Spectrum had introduced, not only for visual attraction but also for software protection. For the average user, it was very hard to duplicate Amstrad games released with custom turbo loaders. Some of these loaders were even capable of displaying a countdown timer and/or playing music while loading the game data. Thanks to the same CPU (Z80) used on both Amstrad and Sinclair, some of these loaders were cross-platform solutions. Speedlock, Alcatraz, Gremlin Loader and Bleepload were amongst these custom loaders.
A few years ago, I’ve written a tutorial (in Turkish) on coding a turbo loader in Z80 assembly language for Amstrad CPC home computers, demystifying the secrets behind the custom loaders of 8-bit era. Last year, it was released as an article on Retrojen, a retro-fanzine published in Turkey.
Although I’ve written the original turbo loader routine way back on December 24, 2010, I’m releasing the source codes, today!
For clarification purposes, I have tried to keep the code as simple as possible, and written descriptive inline comments where necessary. – (So, the code is not optimized for size/speed.)
These source code files are exactly the same files published in my article on Retrojen. With respect to editor-in-chief’s kind request, I am not putting a scan/screenshot of this article on my blog. It is only available as a printed material… No worries, you can always subscribe to this lovely fanzine. It is FREE!
Time to rewind the cassette tape!
My turbo loader tutorial/source files covers the following features:
- Using 2-colour stripes in the border (like an old Speccy),
- Displaying a bitmap based countdown timer (so that you can use your own fonts),
- Incremental raster scanning (no skipping lines, just displaying one after another).
There are 3 different source code files for this project:
– jScreenDump_16k_Mode1_Flat.pde: This is a very simple routine that I’ve written in Processing. (Yes, I love Processing! It is a great tool for writing quick and dirty routines without hassling details). This routine imports the .BMP file that you want to use as a title screen, and exports the image in .SCR format.
– jCDT_Generate.pde: This routine, again written in Processing, simply imports the .SCR file that you’ve created above, and generates a tape image in .CDT format.
– TurboLoader.asm: This is the turbo loader routine written in Z80 assembly language. You will assemble the code and execute it on your Amstrad (or WinAPE emulator).
If it sounds complicated, please have a look at this data flow diagram. It’s very simple, actually…
Let’s see the demo!
In case you want to skip all details above, and see a quick working demo on WinAPE emulator;
- Start WinAPE
- Press F3 – (view the Assembler window)
- Open TurboLoader.asm file
- Press F9 – (assemble & run the code), and press OK.
- Select File > Tape > Show Tape Control from the menu
- Click Open button, and select TurboTitleScreen.cdt file
- Press Play on the Tape Control window – Voilà!
Don’t forget to turn up the volume for nostalgic buzz 😉