Skip to content

What runs today

d/BASIC is in alpha. This page is the honesty ledger: every row names a receipt, and rows move only when a receipt moves. Last re-measured 2026-09-03.

Measured in this browser

Receipt Value How it was taken
Classic listings that compile unmodified 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 terminates by design
Classic listings that run to completion with no input 3 Bunny, Calendar, 3-D Plot
Classic listings that are interactive 84 they park on INPUT and continue when you answer in the console; the Classic Listings page says which play to their natural end with the conformance suite's reviewed answer scripts
Classic listings refused by name 8 each with line and rule id on the Classic Listings page
Semantic Intent routes mapped by the browser runtime 121 the shared runner's manifest, checked against the module on every load
Source libraries baked into the browser compiler 5 dworks.widgets, dworks.data, dworks.drag, dworks.interchange, gx
Instructions per bounded slice 5,000 SLICE_INSTRUCTIONS in the shared wasm runner; the worker yields between slices so a program cannot freeze the page

Built, with receipts

Piece State
Front end: QuickBASIC lexer and grammar, lowering, diagnostics with rule ids built; 89 of 96 corpus listings compile
Optimizer: constant interning, batched float trees, whole-array instructions, exact library binding built
.dbc container with append-only version rows and a version-movement gate built; spec 0.2, container vocabulary 1.10
Host runtime (dos-dbc-runtime) and the dbasic CLI: build, run, exec, trace built on macOS
A second, independent floor runtime (dos-dbc-mos) whose traces are byte-compared with the host's on every build built on the host: 219 of 224 committed cases byte-identical, zero divergences (the other five stop at a declared slice bound, an input boundary, or an unbound import); compiles for the mos-atari8-dos target, but the image does not fit a 6502 address space (see below)
Executing conformance suite: 129 named cases plus the 96 listings, every case run to a terminal outcome and counted built; no "compile" verdicts, no skip class
Browser playground: real compiler and runtime in WebAssembly, interactive console INPUT, WebGL2 320×192 surface, keyboard and pointer, widgets, the GX game-model library, DATA, pasteboard and drag built; this site
Record 1.1 (TYPE) admitted on both runtimes
Object 1.3 (CLASS) developer preview; production admission open
MATH family (SQR, RND, LOG, EXP, trig, ^, DOUBLE) built on the host lowering; RND is Microsoft's own sequence

Designed, not yet on silicon

Piece Honest state
The 6502 runtime on a real Atari, C64 or Apple II specified; the floor interpreter is built and its 6502 image is measured and refused by size, 183,662 bytes of code against a 65,008-byte address space, and classic SINGLE arithmetic has no float pack on the floor yet. The next rung is a hand-written 6502 interpreter with the cartridge as math coprocessor. Nothing has run on a 6502
The cartridge as math and graphics coprocessor ruled; unbuilt
d/OS product integration: catalog, dock launch, .dpk packages, SHA-256 verified launch designed and specified; not a shipping route yet
Console INPUT on the 6502 floor runtime the host and browser runtimes park on a question and resume; the floor runtime still answers only from a script
FILE in the browser the eight FILE rows are registered and mapped by the runner; this playground mounts no file provider, so they refuse by name
Networking, audio and named-media Intents described in the guide; not in the current registry
Windows and Linux macOS is the only host build measured so far; Windows and Linux builds and native window kits are next
General identifier crunching (FORI as FOR I) never: an authored name is one token. The number-keyword join (1TO3) is admitted; it is what let Super Star Trek run unchanged
Packaged developer kit download not published; the playground is the official way to use d/BASIC today

How to read a refusal

A refusal is not a crash. It names the class, the rule, and the line, and it is the same vocabulary at compile time, at load, and at run time. 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.