The Spectrum programs below were originally written for Your Sinclair magazine, with the first three published in the Program Pitstop section. The remaining programs were completed, but either unsubmitted or simply unused.
Published in Issue 32 (Aug ‘88), page 80.
This was my first proper Z80 program, written when I was about 15. Before that I’d not really done much more than small routines to bounce sprites around the screen.
In addition to basic pixel editing the program provides mirror, invert, scroll and copying functions, for sprites up to 4 bytes wide. The code was based at 25000 to give a little room for BASIC, leaving most of memory for game graphics to examine/edit.
Published in Issue 34 (Oct ‘88), page 97.
Spurred on by the £50 prize from the first, I immediately began work on another utility. The sound effects generator was my first stab at using the 128K sound chip, which was a huge improvement on the original 48K beeper.
The program was designed in 2 parts — an editor to create the sound effect, and a compiler to compress the raw data down to a more manageable size. Unfortunately, the compiler part was never completed, so the published program included only the editor and raw data playback utility.
Published in Issue 38 (Feb ‘89), page 85.
Multi-Load is a flexible screen loader, giving control of how the screen data and attributes are loaded. One completed, the new loader is saved out to tape ready to use.
A menu-driven wizard prompts for the following input:
To show it in action I’ve prepared an Exolon screenshot, loaded attrs first in a spiral, data in random order, using a multi-coloured border, and maximum loading speed. Load the TZX image below into your favourite Spectrum emulator, and don’t forget to disable speed loading tapes or it’ll load instantly!
Despite being released as a music demo, this started life as a windowed menu utility aimed at Program Pitstop! I don’t think it was ever submitted, perhaps because another window utility was published in the meantime.
A separate wizard utility (not included) prompts for the menu caption and items, as well as colours and position. A routine called from BASIC shows the menu and waits for the user to select something. The returned value indicates which option was selected, or 255 if the selection was cancelled. A second route is called to remove the menu, restoring what was under it previously.
I created a showcase demo with 128K music ripped from various games, and that’s how the final program looks below.
Download Z80 Snapshot (108K)
MultiMania is a poke database containing cheats for hundreds of Spectrum games. It’s probably the closest thing I did to a traditional demo-scene demo. I submitted it to YS, but Spectrum magazines were already in decline and I never heard back.
The title screen includes a raster effect combining border+128K screen switching to give the bouncing yellow bars. The intro screen has a proportional font and strange bouncing logo letters. The main program has a large colour 50Hz scroller, with the top of the display used to scroll through pages of game names. A sub-screen on each shows the available pokes, which could be noted down for later use.
The biggest problem with this utility is that it takes a couple of minute to load from tape, so it was hardly a convenient reference! I loaded my own copy from +D disk (as featured on the title screen) in under 4 seconds, so it was still very useful.
Download Z80 Snapshot (43K)
I submitted this for the password challenge set in Issue 33 (Sept ‘88), though it wasn’t published.
The program uses some fiendish techniques to resist hacking the running program:
You have two attempts to get the 10-digit code correct before the machine is reset. The code for the demo snapshot below is
Download Z80 Snapshot (27K)
Regular scrolling messages had been done to death already, so I tried to make things a bit more interesting.
You can define your own scrolling message by replacing the
REM statement at the start of the BASIC listing. The following symbol characters have special meanings:
|#||Toggle Upright Characters|
|^||Scroll Speed (nn)|
|@||Text Height (nn)|
|_||Text Width (nn)|
|$||Scroll Position (nn)|
|£||Mark Loop Start Point|
|&||Loop Start Point|
|%||Return to BASIC|
Symbols marked (nn) should be followed by a 2-digit numeric argument.
The character set used is taken from the
CHARS system variable, so you can use your own by poking a new address into 23606/7. Oddly, I didn’t include a way to escape the above symbols to use them in the message itself.
The snapshot below also includes the HiSoft DevPac Assembler and scroller source code. Press Space to terminate the scrolling message and use
RANDOMIZE USR 26000 to enter the assembler.
Download Z80 Snapshot (19K)
That’s all so far, but if I find anything else I’ll add it here.