https://github.com/vgrichina/dos10
Build 86-DOS 1.00 from source via a JS SCP ASM clone, run it in a browser-based 8086 emulator.
https://github.com/vgrichina/dos10
8086 86-dos assembler dos emulator ms-dos retrocomputing
Last synced: 1 day ago
JSON representation
Build 86-DOS 1.00 from source via a JS SCP ASM clone, run it in a browser-based 8086 emulator.
- Host: GitHub
- URL: https://github.com/vgrichina/dos10
- Owner: vgrichina
- License: mit
- Created: 2026-05-07T01:21:23.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2026-05-07T02:02:33.000Z (about 1 month ago)
- Last Synced: 2026-05-07T03:35:50.172Z (about 1 month ago)
- Topics: 8086, 86-dos, assembler, dos, emulator, ms-dos, retrocomputing
- Language: JavaScript
- Homepage: https://86-dos.berrry.app
- Size: 149 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# dos10 — open-source DOS in the browser
Build [86-DOS 1.00](https://github.com/DOS-History/Paterson-Listings) (the genuine ancestor of MS-DOS 1.0, the source of which Microsoft released April 28, 2026) from source, with a JS-native re-implementation of Tim Paterson's SCP 8086 Assembler, and run it in a browser-based 8086 emulator.
**Live demo:** https://86-dos.berrry.app
## Upstream sources (gitignored — fetch with `scripts/fetch-sources.sh`)
- [DOS-History/Paterson-Listings](https://github.com/DOS-History/Paterson-Listings) — 86-DOS 1.00 source, PC-DOS 1.00 dev snapshots, SCP ASM 2.43 source. Released by Microsoft 2026-04-28, MIT-licensed.
- [microsoft/MS-DOS](https://github.com/microsoft/MS-DOS) — v1.25 / 2.0 source for cross-reference. MIT.
## Layout
- `tools/scpasm.js` — JS implementation of the SCP ASM 2.43 dialect.
- `tools/core/` — 8086 CPU + memory + IMD disk + nine-vector SCP BIOS shim
(`STAT/IN/OUT/PRINT/AUXIN/AUXOUT/READ/WRITE/DSKCHG`).
- `test/boot_smoke.js` — Node harness; boots the disk image headlessly and
asserts COMMAND.COM reaches its date prompt.
- `web/` — browser shell. `index.html` + `main.js` wire the CPU+BIOS to a
canvas-backed glass-TTY (`glass_tty.js`) modeling an SCP-era serial VDU
(80×24, BS/HT/LF/FF/CR/BEL, blinking block cursor).
- `assets/86dos114-tarbell-dd.imd` — 86-DOS 1.14 disk image (Tarbell DD).
- `build/` — generated binaries (gitignored).
- `scripts/fetch-sources.sh` — clones the upstream repos into `paterson/`
and `msdos-src/`.
## Build / run
```
npm run build:asm # ASM_2.43.ASM -> build/ASM.COM (self-host check)
npm run build:dos # 86DOS.ASM -> build/MSDOS.BIN
npm run boot:smoke # node test/boot_smoke.js (headless boot)
npm run web # python3 -m http.server 8000 (open /web/)
npm run deploy # bundle web/+tools/+assets to Berrry (needs .env.berrry)
```
The web shell currently boots the on-disk 86-DOS 1.14 image directly
(loader + BIOS read off cyl 0–1; INT 0xE0+idx trampolines patched over
the nine BIOS entry points), not the freshly-assembled `MSDOS.BIN` —
that's the next milestone.
## Hardware target
Seattle Computer Products S-100 8086 system: serial console, 8" floppy.
No video card, no IBM-PC BIOS — that's why the BIOS shim is nine
character/disk vectors and the terminal is a glass-TTY rather than a
framebuffer. PC-DOS 1.0 was Microsoft's port of this code to the IBM PC
hardware in 1981.
## Status
Boots to `COMMAND v. 1.10` date prompt; line input works. Disk writes,
file commands, and assemble-then-boot loop are TODO. See git log.