The 1987 April Fool’s joke that ignited my embedded career

Here’s the anecdote that sheds some light on my roots…

SHARP PC-1500 Pocket Computer; Source http://www.pc1500.com

SHARP PC-1500 Pocket Computer; Image from http://www.pc1500.com

My dad bought a secondhand Sinclair ZX Spectrum 16K for me after I blindly typed in a BASIC program that locked up his Sharp PC-1500 Pocket Computer (containing crucial university notes). It was 1983 and I was 9 years old. I think this was one of the best career investments… thanks Dad! It was spartan, but as Hermann Hauser recalled how ARM successfully designed their first microprocessor:

“…when we decided to do a microprocessor on our own, I made two great decisions: I gave Steve Furber and Sophie Wilson two things which National, Intel and Motorola had never given their design teams. The first was no money; the second was no people. The only way they could do it was to keep it really simple.”

Less meant more: it sparked my imagination  and forced me to dig deeper.

ZX Spectrum 16k

“ZXSpectrum48k” by Bill Bertram – Own work. Licensed under CC BY-SA 2.5 via Wikimedia Commons

Fast forward a few years  to when I browsed through the April 1987 edition of ZX Computing and found an article to upgrade a 16K/48K Spectrum to 128K using a simple BASIC program:

ZX Computing Apr 1987 cover

ZX Computing Apr 1987 cover – Image from http://www.worldofspectrum.org

ZX Computing Apr 1987 page 57 - Image from http://www.worldofspectrum.org

ZX Computing Apr 1987 page 58 – Image from http://www.worldofspectrum.org

ZX Computing Apr 1987 page 58 - Image from http://www.worldofspectrum.org

ZX Computing Apr 1987 page 58 – Image from http://www.worldofspectrum.org

Have a read! The web was spun so fine and strong that I truly believed that I could turn my puny ZX Spectrum 16K into the powerful 128K version. Problem was, the BASIC program was hard-coded to only work on a 48K (even though the article states that it will also work on a 16K). It poked machine code to address 32768 onwards and then executed the machine code. This was a clever way to obfuscate the true purpose of the program.

I could not get the program to work and I spent almost a year learning enough about machine code and assembly to decode the machine code, fix the absolute addresses so that it would execute at a lower address and turn it into machine code again. Note that I was 13 years old at the time, my English was limited (Afrikaans is my first language) and I had absolute no one that could help me.

When I finally succeeded, this was the screen that greeted me:

April Fool screenshot

I looked a the cover of the magazine and noted that it was indeed the April 1987 edition. Alternative Program Register 1 indeed. I learned numerous lessons that day, but what stuck was a love of all things “bare metal“.

Thanks for indulging me… enjoy the rest of your day!

1 reply

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published.