EndBASIC is an interpreter for a BASIC dialect exposed via a DOS-like façade. The interface offers immediate feedback through an integrated editor and help system, a hybrid text/graphics console, and direct hardware support. Runs on the web, the desktop, and on embedded devices.
DIM SHARED max_radius: max_radius = 20
SUB render_dots_recursively(x1, y1, x2, y2, n)
x = x1 + RND(1) * (x2 - x1):
y = y1 + RND(1) * (y2 - y1)
radius = RND(1) * max_radius
COLOR RND(1) * 14 + 1
GFX_CIRCLEF x, y, radius
IF n > 0 THEN render_dots_recursively x1, y1, x2, y2, n - 1
END SUB
SUB render_dots(x1, y1, x2, y2, n)
COLOR 15
GFX_RECT x1, y1, x2, y2
x1 = x1 + max_radius: y1 = y1 + max_radius
x2 = x2 - max_radius: y2 = y2 - max_radius
render_dots_recursively x1, y1, x2, y2, n
END SUB
INPUT "How many dots"; n
render_dots 0, 0, GFX_WIDTH / 2, GFX_HEIGHT / 2, n
render_dots GFX_WIDTH / 2, GFX_HEIGHT / 2, GFX_WIDTH, GFX_HEIGHT, nFeatures
Structured programming: Supports IF and SELECT statements; FOR, LOOP and WHILE loops; and user-defined functions and subroutines.
Line numbers: Optional retro-style line-oriented development via GOTO and GOSUB.
Strong typing: Supports booleans, integers, doubles, and strings, all with optional retro-style type annotations like name$.
Fast execution: Bytecode-compiled language using a custom VM tailored to the language. Disassembler included for extra fun.
Interface: Integrated MS-DOS-like command line, REPL, and editor.
Graphics: Hybrid console with overlapping text and graphics.
Portable: Runs on the web, desktop operating systems, and embedded devices such as the EndBOX.
Cloud file sharing: Because you may want to share your creations.
Embeddable: The interpreter is written in Rust and can be easily used as an extension language from native binaries. Check out GitHub.

Back to basics
EndBASIC is an interpreter for a BASIC-like language and is inspired by Amstrad's Locomotive BASIC 1.1 from the 1980s and Microsoft's QuickBASIC 4.5 from the 1990s. 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.
EndBASIC's primary goal is to offer a simplified and restricted DOS-like environment to learn the foundations of programming and computing, and focuses on features that quickly reward the learner. These include a built-in text editor, commands to manipulate the screen, commands to interact with shared files, and even commands to interact with the hardware of a Raspberry Pi.

Play and edit games
A major goal of EndBASIC is to provide a playful environment in which to recreate old-style and simple videogames with ease, all while learning the foundations of programming. Proof of this is that, in just a couple hundred lines of code, you can replicate classics like Pong, Arkanoid, or Snake, and even implement more complex programs like Conway's Game of Life.

Built for the web and the cloud
EndBASIC is a web-native application that runs locally on your browser thanks to WASM. This allows you to enjoy the environment without having to install anything on your computer, and also lets you run the interpreter on mobile devices.
And... what are your creations if you are not able to share them with the world? In the 1980s, people shared their programs as magazine listings and you'd have to painfully type them in. That's a thing of the past though: EndBASIC lets you share your programs via a cloud file sharing service.