EndBASIC is a free online BASIC interpreter for learning programming and building retro-style games. It runs in your browser with no installation, and is also available on desktop computers and embedded devices. Its DOS-like interface offers immediate feedback through an integrated editor and help system, a hybrid text/graphics console, basic sound playback, and direct hardware support.
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 and sound: Hybrid console with overlapping text and graphics plus simple audio primitives for retro-style demos and games.
Portable: Runs on the web, desktop operating systems, and embedded devices such as the EndBOX.
Runnable scripts: EndBASIC programs can be launched directly from the shell with a shebang and optional console metadata.
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.

Online BASIC interpreter
EndBASIC is a web-native BASIC interpreter that runs locally in your browser thanks to WebAssembly. You can start programming without installing anything, and use the interpreter on desktop and 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.
Ready?
Try EndBASIC right in your browser, now. Just press the button!