Back in 2019, I got thinking about what a perfect or fantasy home computer would look like in 1981.
In 1981, I got my first home computer, a Sinclair ZX81, I quickly realised it couldn’t play Space Invaders to my satisfaction, or Galaxian or my new favourites, Defender and Scramble.
Why was this?
- No colour (yes, I’m British)
- Only character graphics (yes, I learned later that wasn’t true)
- No sound (ok, you could fake it with the cassette port)
- BASIC was so slow.
- Machine langage was hard, especially so on a 16K ZX81 with no assembler.
Time went by and I got a Dragon 32 in 1982, which solved some of the problems (bit mapped graphics, sound, 3x faster BASIC and much more approachable 6809 Assembler) – and a real keyboard – but not all of them.
Dragon 32 couldn’t have a fully black display, for example.
Then came an Amstrad CPC-464 in probably 1983 which saw me back with Z80, a great BASIC and graphics and sound that were almost there.
My early computer days continued with Amstrad CPC-6128 which gave me a disc (yes, I’m British) drive, CP/M, logo, C and so on, then an Atari 800 and a Commodore Amiga, but back in 1981 I had the dream of something better.
So my fantasy computer from the early 80s would have:
- Colourful bitmapped graphics
- Multi-channel sound, with wave control (I hadn’t really discovered sampled sound back then)
- Sprites. Lots of sprites.
- Hardware pixel-level scrolling of backgrounds
- BASIC fast enough to write games of the era.
- Plug into the a TV and just type stuff in from BASIC
I didn’t want a C64 or Spectrum emulator – there are lots of those. I didn’t want a re-imagined modern version of the same. I wanted what I wanted back then.
So I started with the BASIC. And I started writing it in Swift.
I’ve long had the domain name soapyfrog.com so it made sense to me to call it SoapyBASIC.
Starting in 2019, it was about 4 years before I finally finished the BASIC to my satisfaction, after many iterations – along with interpreter, code editor, semantic analyser, a fairly strong type system, reformatter and a VT100-based terminal emulator.
In the next post, I’ll go over my BASIC language design decisions and the fate of GOTO.
Leave a Reply