SoapyBASIC and long-term passion projects

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.


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *