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.