BASIC-DOS

A PCjs Retro-Programming Project

BASIC-DOS is on Twitter Project maintained by jeffpar

PC DOS Reimagined

Read the Blog, check out the Preview, see a few of the original Demos, and then Download the current release.

BASIC-DOS 1.00

Download

The first BASIC-DOS release diskette is a bootable 360K diskette with BASIC-DOS, a “basic” set of utilities, a collection of BASIC samples (all from PC DOS 1.00), and a few demo programs. See it running on the BASIC-DOS Release page, or download BASICDOS-360K, a diskette image that most PC emulators can boot, or which can be written to a genuine 360K diskette.

When we say that BASIC-DOS comes with a “basic” set of utilities, we mean that both figuratively and literally, because while some are written in assembly language, most are in fact written in BASIC, including CHKDSK, FORMAT, MODE, and more. BASIC-DOS takes its commitment to BASIC integration, performance, and ease-of-use very seriously.

Project Status

BASIC-DOS began as a technology demo: a reimagining of what the first IBM PC operating system could have been, with a unified DOS and BASIC command interpreter, preemptive multitasking sessions, and other features that PC DOS wouldn’t offer for years (if ever). The goal now is to turn it into a usable product.

It is not a goal to provide every PC DOS function, or to be 100% compatible with PC DOS. BASIC-DOS implements what its own commands and BASIC programs need, plus enough of the PC DOS API to run typical DOS programs, so unchecked items below are possibilities, not commitments.

This section tracks what’s been completed ([x]) and what remains ([ ]). Items marked partial work, but with known gaps.

Boot and System Configuration

Device Drivers

Protected Mode

On an 80286 or later, BASIC-DOS runs in protected mode; it’s built and tested for the IBM PC AT, and an 80386 runs the same code. See Protected Mode for details, and the Protected Mode demo to try it.

Kernel: Processes, Memory, and Sessions

Kernel: File System

Command Interpreter: DOS Commands

Utilities

Utilities live in the EXT directory of every BASIC-DOS disk. The filters, HELP, SLEEP, VI, and DEBUG are assembly language, but utilities that don’t need that speed are written in BASIC-DOS BASIC: clean, succinctly commented programs, with every line indented by a tab (after a line number only where one is needed as a label), the style in which BASIC-DOS lists programs. The interpreter is extended as needed to make them possible (eg, IOCTL #, and opening unformatted volumes, for FORMAT).

Command Interpreter: BASIC Language

Floating-Point

BASIC-DOS will support only one floating-point type: IEEE 754 64-bit (double-precision) values. It won’t use any MBF (Microsoft Binary Format) code.

BASIC Samples

The poster child for BASIC samples support is DONKEY.BAS, from the original IBM PC DOS 1.00 diskette. DONKEY.BAS was our initial test candidate for BASIC-DOS’s compatibility with IBM PC BASIC programs. These are the items it needed, followed by related work that remains. Originally, BASIC-DOS compiled an entire program before running it, so there was a startup delay, and every statement had to be recognized, even those that DONKEY.BAS did not immediately need (eg, PLAY and CHAIN). However, BASIC-DOS now performs incremental compilation, so those are no longer concerns.

Build, Tests, and Documentation

Non-features

These aren’t project goals:

Roadmap

These are the next steps, roughly in priority order:

  1. Remaining string and input/output features (comma print zones)
  2. The rest of runtime error handling (messages for numeric errors other than “Division by zero”, such as “Overflow”)
  3. Common BASICA features that BASIC-DOS lacks: BEEP and COMMON
  4. The rest of protected mode on an 80286 or 80386: ring 3 for the programs that still need RING=0 (interrupt hooks that DOS or the ROM BIOS calls, and CPUTESTS); see Limitations
  5. Protected-mode versions of the remaining MZ-only build tools (MASM 4.00 is available now in TOOLS)

License

BASIC-DOS is an open-source project on GitHub released under the terms of an MIT License.

Copyright (c) 2020-2026 Jeff Parsons Released under MIT License