Graphics support has finally landed in EndBASIC and, with that, the 0.8 release is finally here.

This release marks a huge milestone in the development of EndBASIC. Supporting graphics is something I’ve had in mind since the very beginning but had been procrastinating on until a couple of months ago. I feared everything that would be involved in delivering this feature, and to be fair, I was right: getting the desktop console to work on all platforms, and especially getting it to work in CI for automated testing, was tedious. But it’s done now.

But why are graphics such a big deal? Simply because this feature brings EndBASIC closer to my original secret plan, which was to make this a platform suitable for writing retro-looking games. We aren’t there yet, though: graphics support is still quite rudimentary and doesn’t offer great performance, and the environment still lacks a major feature — generating sound — but it’s getting pretty close. To witness:

EndBASIC 0.8.0 running on the web showing a couple of graphical programs loaded from a cloud file share.

I hope you agree this is pretty cool, but aren’t there tons and tons of programming languages out there, also hosted on the web, that focus on offering commands to draw on a canvas? You can choose from Python interpreters to Logo interpreters, also passing by BASIC clones. And you are right, but EndBASIC is special 😊.

The EndBASIC console is special because it is hybrid, much like the console of the computers of the 1980s: you can combine text and graphics in the same console, which means you don’t have to reason about separate windows. This makes it ideal to understand how everything ties together when coding, and allows you to quickly play with the environment even if you don’t yet know what a program even is.

The hybrid console, rendering text and overlapping graphics at once, from the command prompt.

On this topic, what I find mind-boggling is that we lost the ability to trivially access hardware resources somewhere in the transition to modern operating systems. The computers of the 1980s let you do that with ease, right from their command line. The first PCs running MS-DOS also did, but at that point we already lost “transparency” because you had to explicitly write programs to leverage these resources. Nowadays, when you run a computer in text mode using, say, Linux, it’s incredibly hard to draw on the screen—even if what you are interacting with is a framebuffer. Yes, moving the cursor around and drawing text UIs is possible, but there is no way to draw graphics.

Anyhow. Leaving graphics aside, this release also comes with some extra usability improvements, like a better built-in editor with simplified usage: the editor now supports more keyboard movement shortcuts and tracks the name of the loaded program so that SAVE can do the right thing by default. See the extensive release notes for more information.

Now it’s your turn to play. Head to:

https://www.endbasic.dev/

and start rendering 😊 Hope you enjoy EndBASIC 0.8.0! 🎉


Edit (2021-11-23): Don’t miss out on the 5-minute demo I created for the Handmade Seattle 2021 conference, where I announced this new release!

EndBASIC demo for Handmade Seattle 2021, showcasing graphics support, hardware manipulation, and the cloud to build a retro-looking pong clone!