Read the Blog, then check out the Preview, which
highlights a few of the original Demos.
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.
This section tracks what’s been completed ([x]) and what remains
([ ]). Items marked partial work, but with known gaps.
Boot and System Configuration
Boot sector that loads the BASIC-DOS drivers, kernel, and interpreter
Boot prompt when a hard disk is detected (press Esc to boot from it)
CONFIG.SYS support for BOOTKEY, CONSOLE, DEBUG, FILES, MEMSIZE,
SESSIONS, SHELL, and SWITCHAR
CON, with multiple console contexts (one per session)
COM, AUX, LPT, PRN, NUL, CLOCK$, and PIPE$ devices
Interrupt-driven, asynchronous I/O for CON and COM
Floppy disk reads, including multi-track requests and requests
that cross 64K boundaries
Floppy disk writes
Media check and BPB rebuilds (reads PC DOS 1.x and 2.x diskettes)
Write-with-verify (DDC_WRITEV), formatting, and hard disk support
“Popup” and background console contexts
Kernel: Processes, Memory, and Sessions
COM and EXE program loading, PSPs, EXEC, and exit codes
Memory allocation (MCBs), including per-program heap requests
Preemptive multitasking of multiple sessions
CTRL-C/CTRL-Break handling, and CTRL-ALT-DEL session aborts
Session STOP/END operations (currently TODOs)
TSR support (INT 27h and INT 21h function 31h)
Environment segments for EXEC (EPB_ENVSEG)
Kernel: File System
FAT12 file reading
Handle-based open, read, seek, IOCTL, and close
Find first/next, disk info (free space), and current drive/DTA
Handle-based file creation (function 3Ch) and writing (function 40h)
File deletion (function 41h) and renaming (function 56h)
FAT cluster allocation and freeing
Write-back of modified FAT and directory buffers (every FAT copy is
updated), including when the buffer is reused, on file close, disk
reset, and restart
partial: FCB support (open, close, and reads only; no create,
write, delete, or rename)
Truncating/extending a file with a zero-length write
Enforcing the read-only attribute on open, and getting/setting file
attributes (function 43h) and date/time (function 57h)
Subdirectories (MKDIR, RMDIR, CHDIR, and paths)
Absolute disk reads and writes (INT 25h and INT 26h)
FAT16, hard disks, and a larger buffer cache (there are currently
only two sector buffers: one for FAT sectors and one for directory
sectors)
Command Interpreter: DOS Commands
COPY, DATE, DIR, EXIT, HELP, KEYS, MEM, RESTART, TIME, TYPE, and VER
Running COM, EXE, BAT, and BAS files, and loading programs into
other sessions
Pipes (|) and redirection (>)
COPY creates (or truncates) the output file, and refuses to copy a
file onto itself
partial: Output redirection works only with existing files (it
should use DOS_HDL_CREATE, like COPY)
DEL/ERASE, REN/RENAME, and SAVE (for BASIC programs)
Disk utilities (eg, FORMAT, CHKDSK, SYS)
Command Interpreter: BASIC Language
32-bit integer variables, constants, and expressions (including
AND, OR, XOR, EQV, IMP, NOT, MOD, and shifts)
String variables, concatenation, and comparisons
CLS, COLOR, DEF FN, DEFINT, DEFSTR, ECHO, GOTO, IF/THEN/ELSE, LET,
PRINT, REM, and RETURN
LOAD, LIST, NEW, and RUN
Functions: ERRORLEVEL, MAXINT, and RND%
Control flow: GOSUB, FOR/NEXT, WHILE/WEND, and ON … GOTO/GOSUB