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 first 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 it 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

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, 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.

DONKEY.BAS

DONKEY.BAS, from the original IBM PC DOS 1.00 diskette, is a good test of BASIC-DOS’s compatibility with IBM PC BASIC programs. These are the items it needed, followed by related work that remains. Since BASIC-DOS compiles an entire program before running it, every statement must at least be recognized, even ones that DONKEY.BAS rarely or never runs (eg, PLAY and CHAIN).

Build, Tests, and Documentation

Non-features

These aren’t project goals:

Roadmap

These are the next steps, roughly in priority order:

  1. RUN file, which BASICA programs use to run another program
  2. Remaining string and input/output features (comma print zones)
  3. The rest of runtime error handling (RESUME and RESUME NEXT, and messages for numeric errors)
  4. Common BASICA features that BASIC-DOS lacks: BEEP, TIMER, INPUT$, LPRINT, and CHAIN MERGE

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