Skip to content

What runs today

This page tells you plainly what d/BASIC can do right now and what it cannot do yet. d/BASIC is in alpha. Every row below points to a measurement someone actually took, and a row changes only when the measurement changes. Last re-measured 2026-09-03.

Measured in this browser

What was measured Value How it was measured
Classic listings that compile without edits 88 / 96 every listing in /listings/ compiled by the shipped dbasic_compiler.wasm
Classic listings that need no keyboard at all 4 three that halt, plus Poetry, which never ends by design
Classic listings that run to the end with no input 3 Bunny, Calendar, 3-D Plot
Classic listings that are interactive 84 they pause at INPUT and continue when you answer in the console; the Classic Listings page says which ones play to their natural end using the test suite's reviewed scripts of answers
Classic listings that stop with a named error 8 each with its line and error code on the Classic Listings page
Intents (named requests such as "fill this rectangle") the browser runtime carries out 121 the shared runtime's manifest, checked against the module every time it loads
Source libraries built into the browser compiler 5 dworks.widgets, dworks.data, dworks.drag, dworks.interchange, gx
Instructions a program runs before the page gets a turn 5,000 SLICE_INSTRUCTIONS in the shared WebAssembly runtime; the worker pauses between slices so a program cannot freeze the page

Built and measured

Piece State
Front end: QuickBASIC lexer and grammar, lowering, error messages with codes built; 89 of 96 classic listings compile
Optimizer: each constant stored once, batched floating-point arithmetic, whole-array instructions, exact library binding built
The compiled program file, .dbc: a container whose version history only ever grows, with a check that stops a version from moving silently built; spec 0.2, container vocabulary 1.10
Desktop runtime (dos-dbc-runtime) and the dbasic command line: build, run, exec, trace built on macOS
A second, independent runtime written for the 6502 (dos-dbc-mos), whose output is compared byte for byte with the desktop runtime's on every build built on the desktop: 219 of 224 committed test cases byte-identical, zero disagreements (the other five stop at a declared instruction limit, at a point where input is needed, or at a library that is not linked); it compiles for the mos-atari8-dos target, but the result does not fit in a 6502's address space (see below)
A test suite that runs every case: 129 named tests plus the 96 listings, every one run to an end and counted built; nothing counts as passed just because it compiled, and nothing is skipped
Browser playground: the real compiler and runtime in WebAssembly, interactive console INPUT, a 320×192 WebGL2 drawing surface, keyboard and pointer, widgets, GX (the 2D game library), database intents, copy and paste, and drag built; this site
Record 1.1 (TYPE) passes the checks on both runtimes
Object 1.3 (CLASS) developer preview; whether it is ready for shipping products is still an open question
MATH family (SQR, RND, LOG, EXP, trig, ^, DOUBLE) built on the desktop runtime; RND is Microsoft's own sequence

Designed, not yet running on real hardware

Piece Where it stands
The 6502 runtime on a real Atari, C64 or Apple II specified; the second, smaller runtime for the 6502 is built, and its 6502 build has been measured and is too big to fit, 183,662 bytes of code against a 65,008-byte address space; classic SINGLE arithmetic also has no floating-point package on the 6502 yet. The next step is a hand-written 6502 interpreter with the cartridge, which carries a modern processor into the machine, doing the maths. Nothing has run on a 6502
The cartridge as maths and graphics helper decided; not built
d/OS integration: the catalog, launching from the dock, .dpk packages, a launch that checks the SHA-256 first designed and specified; not a shipping route yet
Console INPUT on the 6502 runtime the desktop and browser runtimes pause on a question and resume when you answer; the 6502 runtime still answers only from a prepared script
FILE in the browser the eight FILE commands are registered and wired into the runtime; this playground has no file provider (the part of the host that supplies files), so they stop and say exactly that
Networking, audio and named-media intents described in the guide; not yet in the official list of intents
Windows and Linux macOS is the only desktop build measured so far; Windows and Linux builds and native window kits are next
Splitting names the old interpreters' way (FORI as FOR I) never: a name you wrote is one word. A keyword glued to the end of a number (1TO3) is accepted; that is what let Super Star Trek run unchanged
A packaged developer kit to download not published; the playground is the official way to use d/BASIC today

When a program stops and says why

When d/BASIC cannot do something, that is not a crash. The message names the kind of problem, the error code, and the line, and it uses the same words whether the problem is found while compiling, while loading, or while running. When a listing on this site stops, the reason is on the page. When a capability above is missing, the program is told so by name. That is the rule the whole project is built on: publish what runs.