Remember: you do not have to download EndBASIC to play with it.You can click here to open up a fully-local, browser-based session! Launch interpreter Desktop releases The latest version of EndBASIC is 0.11.1 and was released on 2024-09-14. OS Platform Link Linux x86-64 endbasic-0.11.1-linux-x86_64-sdl.zip macOS arm64 endbasic-0.11.1-macos-arm64-sdl.zip Windows x86-64 endbasic-0.11.1-windows-x86_64-sdl.zip Linux Raspberry Pi (ARM v7) endbasic-0.11.1-linux-armv7-rpi.zip For more details visit t...| EndBASIC
EndBOX DIY kit now available| EndBASIC
Components to build the EndBOX I and the assembled EndBOX I Micro. About a month ago, I officially unveiled the EndBOX: a retro-style micro-computer designed to run the EndBOX OS. And what is the EndBOX OS, you ask? It’s a small NetBSD system engineered to launch you into an EndBASIC interpreter as fast as possible. Today, I’m excited to announce the DIY guide to build your very own EndBOX and the first official disk images of the EndBOX OS!| EndBASIC
Hello EndBASIC followers, and a warm welcome to everyone who joined us after the EndBOX unveiling! A big part of the previous announcement, which might have seemed premature since the EndBOX isn’t actually available yet, was to gauge interest in the project and determine whether building the EndBOX for public use is worthwhile. The response so far has been mixed: there has been significant news coverage, which tells me people are curious and excited to explore it, but conversions haven’t ...| EndBASIC
Remember when turning a computer on meant instantly jumping into code? No bloat, no distractions—just you and a prompt? That’s the experience I’ve been working to bring back with the EndBOX: a small, resilient, nostalgia-packed, all-screen computer that boots straight into the retro-inspired EndBASIC environment you already know. And today, six months after its inception, I’m excited to formally show you the first working prototypes—though they are still rough and need refinement. L...| EndBASIC
User projects File browser Presentations 2021-11-11: EndBASIC demo for Handmade Seattle 2021, showcasing graphics support, hardware manipulation, and the cloud to build a retro-looking pong clone!| EndBASIC
Introduction Launching the interpreter Writing your first program Loading and saving Getting help Language basics Case sensitivity Primitive types Arrays Operators Expressions GOTO and GOSUB Conditionals Loops Error handling Data blocks User-defined functions and subroutines Console Text manipulation Interactive interfaces Rendering graphics Efficient graphics rendering File system Drives and paths Drive providers Side-loading files Cloud service Accessing public content Signing up Logging in...| EndBASIC
Back in 2021, the distinguishing feature of the then-current EndBASIC 0.7 release was that it was “cloud-ready”: I created a file-sharing service and integrated it with EndBASIC so that you all had a mechanism to publish your creations with others. It then took the arrival of EndBASIC 0.9, which wasn’t released until a year later, to have the ability to automatically launch shared projects via an specially-crafted URL. But even with that feature, projects written and shared from within ...| EndBASIC
After a year-and-a-half long hiatus, I am pleased to announce that EndBASIC 0.11.0 is now available! 🥳 This release marks a significant milestone because it addresses the top feature request from you all, namely the ability to define custom functions and subroutines. But it also includes other goodies such as support for an LCD console, a shiny new disassembler, and a faster execution engine.| EndBASIC
Dear EndBASIC enthusiasts! In preparation for the imminent 0.11 release, which needs some beta-testing right now, I have created a brand-new “blog” section in the EndBASIC website.| EndBASIC
Since its inception two years ago, the EndBASIC interpreter has been using an AST-based execution engine. And during all this time, people have mocked the language for not allowing 10 GOTO 10. Well, fear not: the upcoming 0.10 release has full support for GOTO and GOSUB, features that were made possible by moving to a bytecode-based interpreter. Let’s take a peek at what the problems were and how I addressed them.| EndBASIC
It is with great pleasure that I announce the release of EndBASIC 0.9.0 😎️. The major feature in this new release is the ability to launch publicly-shared files via a click of a URL without having to create an account first. Here, try running my jmmv/bounce.bas or jmmv/paint.bas demos in your browser, now!| EndBASIC
A month has passed since the 0.4.0 announcement so it is about time to say hello to yet another EndBASIC release because 0.5.0 is here! So, what’s new? Not much… unless you look under the covers, in which case a ton has changed. About 30% of the codebase has been affected in one way or another to improve general quality, so read on to see how.| EndBASIC
About a month ago and after a long hiatus, I published EndBASIC 0.3 and the adrenaline rush that came with it got my wheels spinning again full-steam ahead. So here I am today, ready to announce the 0.4 release. But… “what could have possibly changed in just a month of someone’s free time”, you wonder? Enough, actually! EndBASIC 0.4 is the release that fulfills my original goal of being able to run a “guess the number” game.| EndBASIC
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...| EndBASIC
A couple of weeks ago, I announced EndBASIC: a simple BASIC language interpreter written in Rust with a goal to provide an environment for teaching my kids how to code. That first release provided what-I-think-is a robust interpreter, but that was about it: the language features were still minimal and the interactive features were non-existent. Well, EndBASIC 0.2.0 is here and things are changing! It’s still far from the vision I want to reach, but it’s slowly moving towards that direction.| EndBASIC
After a ton of work, a lot of which was unexpected, I am ecstatic to announce that EndBASIC is now a reality on the web! The whole language interpreter can now run as a fully client-side web app on a computer, on a tablet… and even on a phone. Yes: the whole thing, which is written in Rust (94%), works in a modern browser with just a tiny bit of JavaScript glue (1%).| EndBASIC
After a 6-month long hiatus caused by me hunting and changing jobs and cities, I am pleased to announce the release of EndBASIC 0.3! The Thanksgiving break has been as fruitful as I had hoped 😁 There are two major changes in this release. The first is the official debut of the web-based interface. I introduced this months ago and have had it running on a “push on green” model, which means that the web deployment of EndBASIC is always tracking Git HEAD.| EndBASIC
Several months have passed since the last EndBASIC release and, since then, you might have seen me talk nonstop about an “EndBASIC service” in social media… which has sounded like vaporware. That changes today. After about four months of work, I am ecstatic to announce that EndBASIC 0.7 is here. And these haven’t been four months of idle time. No, no, no. It has taken four months of my scarce free time to deliver this because 0.7 is a humongous release on various fronts.| EndBASIC
Introducing EndBASIC, a new interpreter for a BASIC-like language that is inspired by Amstrad’s Locomotive BASIC 1.1 and Microsoft’s QuickBASIC 4.5. Like the former, EndBASIC intends to provide an interactive environment that seamlessly merges coding with immediate visual feedback. Like the latter, EndBASIC offers higher-level programming constructs and strong typing. The main idea behind EndBASIC is to provide a playground for learning the foundations of programming in a simplified envir...| EndBASIC
Motivation The computers of today are too complex to understand. To the uninitiated, they feel overwhelming. They take a long time to boot. They offer cluttered interfaces with lots of icons, buttons, and options. They are built on dozens of layers of abstraction. And because of these reasons, they feel fragile and not something that can be experimented with. If you want to learn to code today, you face a steep learning curve.| EndBASIC
One thing that bothers me quite a lot about various language implementations is that the core of their interpreter isn’t clearly separate from their standard library. This makes it hard to embed those interpreters into other programs because it’s not obvious how to limit their side-effects and because the interpreter dependency can be heavy. In this post, we will see how EndBASIC’s design tries hard to keep the core as small as possible, and we will see some examples on how to use EndBA...| EndBASIC
Hello again Blog System/5 and sorry for the radio silence for the last couple of months. I had been writing too much in here and neglecting my side projects so I needed to get back to them. And now that I’ve made significant progress on cool new features for EndBASIC, it’s time to write about them a little! One of the defining characteristics of EndBASIC is its hybrid console: what looks like a simple text terminal at first glance can actually render overlapping graphics and text at the s...| EndBASIC
The original BASIC parser in EndBASIC 0.1 was very rudimentary and it stayed pretty much unmodified until the 0.10 release last month. This release brought major changes to the parser to support new features, but it wasn’t easy to implement them. In this post, I want to look into various difficulties that arose implementing certain BASIC constructs in EndBASIC. Overcoming these difficulties was difficult, but it was also fascinating because it gave me a glimpse of the design choices that th...| EndBASIC
After three months of early-morning hacking, I’m pleased to announce that EndBASIC 0.10 is now available—right on time for some holiday-time experimentation! This release marks a huge milestone because it makes the language usable for real-world development. You see, when I started this project over two years ago, I wrote a rudimentary interpreter for something that resembled BASIC and then launched EndBASIC 0.1. Since then, I have been piling onto those insufficient foundations by adding...| EndBASIC
After a very active month of development since the 0.5 announcement, it is time to welcome EndBASIC 0.6! This new 0.6 release is super-exciting for three reasons: preliminary GPIO support in the standard library specifically tailored to the Raspberry Pi; multidimensional array support in the language; and availability of binary releases for the most common platforms. You can dive right in by: visiting https://repl.endbasic.dev/ for an interactive session, reading more about the project at htt...| EndBASIC