Expand Learn → Legacy Systems (v86) so OS / disk images are hosted on SpikerSoft infrastructure, achieving catalog parity with the public copy.sh/v86 emulator image list—without runtime dependency on copy.sh / third‑party CDN for fetching those payloads.
Motivation
Predictable uptime and same-origin caching.
No reliance on external hosts for curriculum-critical labs.
Align discovery UX with the familiar copy.sh catalogue (filters, presets, sizing notes).
Constraints / compliance
Many entries are historic proprietary software (Microsoft Windows lineage, proprietary BSD/OS, QNX demo, Unix V7, etc.). Before mirroring:
Legal review: redistribution rights vs “user supplies own ROM/disk image” carve-outs.
Separate tiers in UX: freely redistributable (e.g. many open‑source/OSI) vs bring-your-own-image placeholders where we cannot legally host.
Preserve upstream license + attribution per image in a machine-readable manifest (license, homepage, source URL, checksum).
Engineering approach (high level)
Bulk mirror or reproducible ingest pipeline → object storage + CDN under our domain (same-app path or authenticated bucket behind API—TBD).
Manifest (JSON/YAML): id, human name, RAM/VRAM hints, medium (CD/floppy/HDD), BIOS/kernel/initrd refs, sha256, size byte, emulator profile flags (ne2k/virtio, boot order).
Angular / v86 wiring: emulator loads from https://…/legacy-systems/v86/... (never hard-code copy.sh); optional staging CDN for DEV.
Version pin emulator core / sea‑of‑images with content-addressed blobs to avoid stale browser cache regressions.
Operational: total footprint is many GB–100+ GB depending on full mirror—document quotas, LRU eviction vs full pin, on-demand hydrate.
Acceptance criteria
Listing UI for Legacy Systems exposes parity set aligned with copy.sh catalogue, grouped/filterable analogous to copy.sh (family, arch, UI, medium, … — scope can phase).
Emulator boot succeeds against self-hosted blobs with no outbound fetch to copy.sh for mirrored images.
Checksum verification client-side optional or server-signed URLs.
Offline / degraded mode messaging when an image omitted for legal/size reasons.
Runbook for manifest updates when copy.sh publishes new BIOS/image metadata.
Target catalogue (parity list)
Stakeholder-authored tabular list spanning Linux/BSD/Hurd/Unices/Windows/DOS/custom hobby images is attached in comments #33–#35 (Linux/Unix/Windows/ReactOS/BSD lineage; DOS; Custom). Reconcile rows against copy.sh/v86 at implementation time—the site’s live table is authoritative for new BIOS pairs / image updates (e.g. build version footer 4e4bf556 as of stakeholder review). Replace any divergence with synced manifest exports.
## Summary
Expand **Learn → Legacy Systems** (v86) so OS / disk images are **hosted on SpikerSoft infrastructure**, achieving **catalog parity** with the public [**copy.sh/v86**](https://copy.sh/v86/) emulator image list—**without runtime dependency on copy.sh / third‑party CDN** for fetching those payloads.
## Motivation
- Predictable uptime and **same-origin caching**.
- **No reliance** on external hosts for curriculum-critical labs.
- Align discovery UX with the familiar copy.sh catalogue (filters, presets, sizing notes).
## Constraints / compliance
Many entries are **historic proprietary** software (Microsoft Windows lineage, proprietary BSD/OS, QNX demo, Unix V7, etc.). Before mirroring:
1. **Legal review**: redistribution rights vs “user supplies own ROM/disk image” carve-outs.
2. **Separate tiers** in UX: freely redistributable (e.g. many open‑source/OSI) vs **bring-your-own-image** placeholders where we cannot legally host.
3. Preserve upstream **license + attribution** per image in a machine-readable manifest (`license`, `homepage`, `source URL`, `checksum`).
## Engineering approach (high level)
- Bulk **mirror** or reproducible ingest pipeline → object storage **+** CDN under our domain (same-app path or authenticated bucket behind API—TBD).
- **Manifest** (JSON/YAML): id, human name, RAM/VRAM hints, medium (CD/floppy/HDD), BIOS/kernel/initrd refs, **`sha256`**, **`size`** byte, emulator profile flags (**ne2k/virtio**, boot order).
- **Angular / v86 wiring**: emulator loads from **`https://…/legacy-systems/v86/...`** (never hard-code copy.sh); optional **staging** CDN for DEV.
- **Version pin** emulator core / sea‑of‑images with **content-addressed** blobs to avoid stale browser cache regressions.
- **Operational**: total footprint is **many GB–100+ GB** depending on full mirror—document quotas, LRU eviction vs full pin, on-demand hydrate.
## Acceptance criteria
- [ ] Listing UI for Legacy Systems exposes **parity set** aligned with copy.sh catalogue, grouped/filterable analogous to [**copy.sh**](https://copy.sh/v86/) (family, arch, UI, medium, … — scope can phase).
- [ ] Emulator **boot succeeds** against **self-hosted blobs** with **no outbound fetch** to copy.sh for mirrored images.
- [ ] **Checksum verification** client-side optional or server-signed URLs.
- [ ] Offline / degraded mode messaging when an image omitted for legal/size reasons.
- [ ] Runbook for **manifest updates** when copy.sh publishes new BIOS/image metadata.
---
## Target catalogue (parity list)
Stakeholder-authored **tabular list** spanning Linux/BSD/Hurd/Unices/Windows/DOS/custom hobby images is attached in comments **#33**–**#35** (Linux/Unix/Windows/ReactOS/BSD lineage; DOS; Custom). Reconcile rows against [**copy.sh/v86**](https://copy.sh/v86/) at implementation time—the site’s live table is authoritative for **new BIOS pairs** / image updates (e.g. build version footer `4e4bf556` as of stakeholder review). Replace any divergence with synced manifest exports.
Complete stakeholder parity list (tabular paste — legal gate + checksum each line at ingest time). Source catalogue UI: copy.sh/v86.
Android 54+ MB Linux 32-bit Modern Open-source C++ CD Android x86 1.6-r2
Arch Linux 15+ MB Linux 32-bit Modern Open-source C 9pfs Various packages, including Xorg, Firefox and more
Buildroot Linux 4.9 MB Linux 32-bit Modern Open-source C bzImage Minimal Linux with Lua, ping, curl, telnet
Damn Small Linux 50 MB Linux 32-bit Historic Open-source C CD 4.11.rc2 with Firefox 2.0
ELKS 1.2 MB Linux-like 16-bit Modern Open-source C HD Linux for 8086
NodeOS 14 MB Linux 32-bit Modern Open-source C bzImage Linux with nodejs as /bin/init
Tilck 16 MB Linux-like 32-bit Modern Open-source C HD Tiny Linux-Compatible Kernel
FreeBSD 16+ MB BSD 32-bit Modern Open-source C HD FreeBSD 12.0
NetBSD 23+ MB BSD 32-bit Modern Open-source C HD NetBSD 4.0 with Xorg
OpenBSD 11+ MB BSD 32-bit Modern Open-source C HD OpenBSD 6.6
Arch Hurd 16+ MB Hurd 32-bit Modern Open-source C HD A port of Arch Linux to the GNU Hurd system
BSD/OS 10+ MB BSD 32-bit Historic Proprietary C HD A proprietary Unix released in 1993 as BSD/386. Includes gcc and perl5
FiwixOS 4.2+ MB Unix-like 32-bit Modern Open-source C HD With Doom
Minix 30+ MB Unix-like 32-bit Modern Open-source C CD Minix 3.3
Redox 31+ MB Unix-like 32-bit Modern Open-source Rust HD A Unix-like microkernel OS written in Rust
SerenityOS 16+ MB Unix-like 32-bit Modern Open-source C++ HD Web browser, various games and demos
Sortix 67 MB Unix-like 32-bit Modern Open-source C++ CD A small self-hosting Unix-like operating system
Soso 7.6 MB Unix-like 32-bit Modern Open-source C CD A Simple Unix-like operating system
Syllable 28+ MB Unix-like 32-bit Historic Open-source C++ HD A user friendly, POSIX compatible OS
Unix V7 0.5+ MB Unix 32-bit Historic Proprietary C HD Unix V7 port for x86, including Amsterdam Compiler Kit
QuantixOS 3.1 MB Unix-like 32-bit Modern Open-source C, ASM CD A UNIX-like operating system written in x86 Intel Assembly and C
BeOS 5 34+ MB BeOS 32-bit Historic Proprietary C++ HD With Opera 3.62, NetPositive
Haiku 36+ MB BeOS 32-bit Modern Open-source C++ HD Networking (WebPositive), OCaml, 2048, NetHack
AROS Broadway 25+ MB AmigaOS 32-bit Modern Open-source C CD AmigaOS-like graphical OS
Icaros Desktop 60+ MB AmigaOS 32-bit Modern Open-source C CD AmigaOS-like graphical OS
Tiny Aros 17+ MB AmigaOS 32-bit Modern Open-source C CD AmigaOS-like graphical OS
9front 5.2+ MB Plan 9 32-bit Modern Open-source C HD An actively maintained fork of Plan 9
9legacy 13 MB Plan 9 32-bit Historic Open-source C HD A set of patches based on the latest release of Plan 9
ReactOS 17+ MB Windows-like 32-bit Modern Open-source C++ HD QtWeb, LBreakout2, OpenTTD, Bochs, TCC
Windows 1.01 0.7 MB Windows 16-bit Historic Proprietary ASM, C Floppy The first release version of Windows
Windows 2.03 1.8 MB Windows 16-bit Historic Proprietary ASM, C HD Reversi, Paint
Windows 3.0 16 MB Windows 16-bit Historic Proprietary ASM, C HD CorelDRAW! 2.0, Actor 2.0, The Best of Microsoft Entertainment Pack
Windows 3.1 17 MB Windows 16-bit Historic Proprietary ASM, C HD QBasic, Minesweeper, Solitaire
Windows 95 19+ MB Windows 32-bit Historic Proprietary ASM, C HD Age of Empires, FASM, POV-Ray, Hover!
Windows 98 13+ MB Windows 32-bit Historic Proprietary ASM, C HD FreeCell, Hearts, sheep.exe, IE 5
Windows ME 28+ MB Windows 32-bit Historic Proprietary ASM, C HD Visual Basic, Office 97
Windows NT 3.1 18+ MB Windows 32-bit Historic Proprietary C++ HD The first retail version of Windows NT
Windows NT 3.51 28+ MB Windows 32-bit Historic Proprietary C++ HD Internet Explorer 3 and Visual FoxPro 3.0
Windows NT 4.0 16+ MB Windows 32-bit Historic Proprietary C++ HD Windows NT 4.0 Service Pack 1
Windows 2000 28+ MB Windows 32-bit Historic Proprietary C++ HD IE 6, K-Meleon, Winamp, Delphi, NetHack and more
(Part 2 follows — DOS + Custom — due to comment length)
Complete **stakeholder parity list** (tabular paste — legal gate + checksum each line at ingest time). Source catalogue UI: [copy.sh/v86](https://copy.sh/v86/).
```
Android 54+ MB Linux 32-bit Modern Open-source C++ CD Android x86 1.6-r2
Arch Linux 15+ MB Linux 32-bit Modern Open-source C 9pfs Various packages, including Xorg, Firefox and more
Buildroot Linux 4.9 MB Linux 32-bit Modern Open-source C bzImage Minimal Linux with Lua, ping, curl, telnet
Damn Small Linux 50 MB Linux 32-bit Historic Open-source C CD 4.11.rc2 with Firefox 2.0
ELKS 1.2 MB Linux-like 16-bit Modern Open-source C HD Linux for 8086
NodeOS 14 MB Linux 32-bit Modern Open-source C bzImage Linux with nodejs as /bin/init
Tilck 16 MB Linux-like 32-bit Modern Open-source C HD Tiny Linux-Compatible Kernel
FreeBSD 16+ MB BSD 32-bit Modern Open-source C HD FreeBSD 12.0
NetBSD 23+ MB BSD 32-bit Modern Open-source C HD NetBSD 4.0 with Xorg
OpenBSD 11+ MB BSD 32-bit Modern Open-source C HD OpenBSD 6.6
Arch Hurd 16+ MB Hurd 32-bit Modern Open-source C HD A port of Arch Linux to the GNU Hurd system
BSD/OS 10+ MB BSD 32-bit Historic Proprietary C HD A proprietary Unix released in 1993 as BSD/386. Includes gcc and perl5
FiwixOS 4.2+ MB Unix-like 32-bit Modern Open-source C HD With Doom
Minix 30+ MB Unix-like 32-bit Modern Open-source C CD Minix 3.3
Redox 31+ MB Unix-like 32-bit Modern Open-source Rust HD A Unix-like microkernel OS written in Rust
SerenityOS 16+ MB Unix-like 32-bit Modern Open-source C++ HD Web browser, various games and demos
Sortix 67 MB Unix-like 32-bit Modern Open-source C++ CD A small self-hosting Unix-like operating system
Soso 7.6 MB Unix-like 32-bit Modern Open-source C CD A Simple Unix-like operating system
Syllable 28+ MB Unix-like 32-bit Historic Open-source C++ HD A user friendly, POSIX compatible OS
Unix V7 0.5+ MB Unix 32-bit Historic Proprietary C HD Unix V7 port for x86, including Amsterdam Compiler Kit
QuantixOS 3.1 MB Unix-like 32-bit Modern Open-source C, ASM CD A UNIX-like operating system written in x86 Intel Assembly and C
BeOS 5 34+ MB BeOS 32-bit Historic Proprietary C++ HD With Opera 3.62, NetPositive
Haiku 36+ MB BeOS 32-bit Modern Open-source C++ HD Networking (WebPositive), OCaml, 2048, NetHack
AROS Broadway 25+ MB AmigaOS 32-bit Modern Open-source C CD AmigaOS-like graphical OS
Icaros Desktop 60+ MB AmigaOS 32-bit Modern Open-source C CD AmigaOS-like graphical OS
Tiny Aros 17+ MB AmigaOS 32-bit Modern Open-source C CD AmigaOS-like graphical OS
9front 5.2+ MB Plan 9 32-bit Modern Open-source C HD An actively maintained fork of Plan 9
9legacy 13 MB Plan 9 32-bit Historic Open-source C HD A set of patches based on the latest release of Plan 9
ReactOS 17+ MB Windows-like 32-bit Modern Open-source C++ HD QtWeb, LBreakout2, OpenTTD, Bochs, TCC
Windows 1.01 0.7 MB Windows 16-bit Historic Proprietary ASM, C Floppy The first release version of Windows
Windows 2.03 1.8 MB Windows 16-bit Historic Proprietary ASM, C HD Reversi, Paint
Windows 3.0 16 MB Windows 16-bit Historic Proprietary ASM, C HD CorelDRAW! 2.0, Actor 2.0, The Best of Microsoft Entertainment Pack
Windows 3.1 17 MB Windows 16-bit Historic Proprietary ASM, C HD QBasic, Minesweeper, Solitaire
Windows 95 19+ MB Windows 32-bit Historic Proprietary ASM, C HD Age of Empires, FASM, POV-Ray, Hover!
Windows 98 13+ MB Windows 32-bit Historic Proprietary ASM, C HD FreeCell, Hearts, sheep.exe, IE 5
Windows ME 28+ MB Windows 32-bit Historic Proprietary ASM, C HD Visual Basic, Office 97
Windows NT 3.1 18+ MB Windows 32-bit Historic Proprietary C++ HD The first retail version of Windows NT
Windows NT 3.51 28+ MB Windows 32-bit Historic Proprietary C++ HD Internet Explorer 3 and Visual FoxPro 3.0
Windows NT 4.0 16+ MB Windows 32-bit Historic Proprietary C++ HD Windows NT 4.0 Service Pack 1
Windows 2000 28+ MB Windows 32-bit Historic Proprietary C++ HD IE 6, K-Meleon, Winamp, Delphi, NetHack and more
```
(Part 2 follows — DOS + Custom — due to comment length)
86-DOS 0.1 MB DOS 16-bit Historic Proprietary ASM Floppy 86-DOS version 1.0
Exploring IBM 0.1 MB DOS 16-bit Historic Proprietary ASM Floppy Learning program on how to use a computer
FreeDOS 0.6 MB DOS 16-bit Modern Open-source ASM, C Floppy nasm, vim, debug.com, Rogue, various demos
FreeGEM 1.6+ MB DOS 16-bit Historic Open-source ASM, C HD Graphical desktop for FreeDOS
Xcom 1.3 MB DOS 16-bit Historic Open-source ASM, C Floppy Graphical desktop for FreeDOS
MS-DOS 4 0.5 MB DOS 16-bit Historic Proprietary ASM Floppy Contains EDLIN
MS-DOS 6.22 2.4+ MB DOS 16-bit Historic Proprietary ASM HD Doom, Sim City, OCaml 1.0, Turbo C and more
PC-MOS/386 0.7 MB DOS 32-bit Historic Proprietary ASM, C Floppy Multi-user and multi-tasking OS
PsychDOS 4.6+ MB DOS 16-bit Historic Open-source ASM HD ANSI-like graphical desktop for FreeDOS
lEEt/OS 0.5 MB DOS 32-bit Modern Open-source ASM, C Floppy Graphical desktop for ST-DOS
Doom On One Floppy 1.1 MB DOS 16-bit Modern Open-source C, ASM Floppy Doom Shareware that fits on one floppy disk
Chimaera OS 29 KB DOS 16-bit Modern Open-source ASM HD MS-DOS compatible operating system for i8086 and newer
**Part 2 of 3** — DOS family (full rows).
```
86-DOS 0.1 MB DOS 16-bit Historic Proprietary ASM Floppy 86-DOS version 1.0
Exploring IBM 0.1 MB DOS 16-bit Historic Proprietary ASM Floppy Learning program on how to use a computer
FreeDOS 0.6 MB DOS 16-bit Modern Open-source ASM, C Floppy nasm, vim, debug.com, Rogue, various demos
FreeGEM 1.6+ MB DOS 16-bit Historic Open-source ASM, C HD Graphical desktop for FreeDOS
Xcom 1.3 MB DOS 16-bit Historic Open-source ASM, C Floppy Graphical desktop for FreeDOS
MS-DOS 4 0.5 MB DOS 16-bit Historic Proprietary ASM Floppy Contains EDLIN
MS-DOS 6.22 2.4+ MB DOS 16-bit Historic Proprietary ASM HD Doom, Sim City, OCaml 1.0, Turbo C and more
PC-MOS/386 0.7 MB DOS 32-bit Historic Proprietary ASM, C Floppy Multi-user and multi-tasking OS
PsychDOS 4.6+ MB DOS 16-bit Historic Open-source ASM HD ANSI-like graphical desktop for FreeDOS
lEEt/OS 0.5 MB DOS 32-bit Modern Open-source ASM, C Floppy Graphical desktop for ST-DOS
Doom On One Floppy 1.1 MB DOS 16-bit Modern Open-source C, ASM Floppy Doom Shareware that fits on one floppy disk
Chimaera OS 29 KB DOS 16-bit Modern Open-source ASM HD MS-DOS compatible operating system for i8086 and newer
```
BleskOS 0.2 MB Custom 32-bit Modern Open-source C CD Alternative OS for older PCs
Blue Jay 83 KB Custom 16-bit Modern Open-source ASM Floppy Based on MikeOS
BoneOS 3.0 MB Custom 32-bit Modern Open-source C CD Simple hobby OS
BootChess 4.0 KB Custom 16-bit Modern Open-source ASM Floppy Chess in a bootsector
CatK 3.2 MB Custom 32-bit Modern Open-source C CD Simple Unix-like kernel
Crazierl 14 MB Custom 32-bit Modern Open-source C, Erlang Multiboot An Erlang Operating System
Dusk OS 0.4 MB Custom 32-bit Modern Open-source C HD A 32-bit Forth
Floppy Bird 6.5 KB Custom 16-bit Modern Open-source C Floppy Flappy Bird game in a bootsector
HelenOS 7.9 MB Custom 32-bit Modern Open-source C CD A microkernel-based multiserver OS
Hello v86 512 B Custom 16-bit Modern Open-source ASM Bootsector Small bootsector demo for v86
House 1.1 MB Custom 32-bit Modern Open-source Haskell Floppy Haskell User's Operating System and Environment
JX 1.3 MB Custom 32-bit Modern Open-source Java Floppy Java-based operating system
KolibriOS 1.3 MB Custom 32-bit Modern Open-source ASM Floppy Various apps, games and demos
Little Kernel 0.4 MB Custom 32-bit Modern Open-source C Multiboot An embedded kernel designed for small systems
M/CP 512 B Custom 16-bit Modern Open-source ASM Bootsector The Minimal Control Program
MikeOS 0.2 MB Custom 16-bit Modern Open-source ASM CD Contains a FORTH and BASIC interpreter and several games
Mobius 1.3 MB Custom 32-bit Modern Open-source C Floppy POSIX and Win32 compatible OS
Mu 0.2 MB Custom 16-bit Modern Open-source C HD Minimal-dependency hobbyist computing stack
NanoShell 3.5 MB Custom 32-bit Modern Open-source C CD Multi-tasked 32-bit OS with Win9x-like GUI
NewOS 0.6 MB Custom 32-bit Modern Open-source C++ Floppy Cross-platform portable OS
Nope OS 92 KB Custom 32-bit Modern Open-source C CD Simple OS with BASIC interpreter
Oberon 1.6 MB Custom 32-bit Historic Open-source Oberon HD Native Oberon 2.3.6
QNX 4.05 1.4 MB Custom 32-bit Historic Proprietary C Floppy 1999 demo disk
SectorLISP 512 B Custom 16-bit Modern Open-source ASM Bootsector Bootstrapping LISP in a Boot Sector
Skift 44 MB Custom 32-bit Modern Open-source C++ CD A hobby OS built from scratch using C/C++
Snowdrop 0.4 MB Custom 16-bit Modern Open-source ASM Floppy 16-bit hobby OS with GUI
Sol OS 0.3 MB Custom 32-bit Modern Proprietary ASM Floppy Simple graphical OS
Still Alive 10 KB Custom 32-bit Modern Open-source C Floppy Bootable demo that plays "Still Alive" from Portal
T3XFORTH 59 KB Custom 16-bit Historic Open-source ASM Floppy An old-school, plain vanilla FORTH system
TetrOS 512 B Custom 16-bit Modern Open-source ASM Bootsector Tetris that fits into the boot sector
ToaruOS 6.3 MB Custom 32-bit Modern Open-source C CD A hobby OS written from scratch
bootBASIC 512 B Custom 16-bit Modern Open-source ASM Bootsector A BASIC in 512 bytes of x86 machine code
Pillman 512 B Custom 16-bit Modern Open-source ASM Bootsector A yellow thing eats pills and is chased by monsters
bootLogo 512 B Custom 16-bit Modern Open-source ASM Bootsector Logo language in 508 bytes
bootRogue 512 B Custom 16-bit Modern Open-source ASM Bootsector A roguelike game that fits in a boot sector
dino 512 B Custom 16-bit Modern Open-source ASM Bootsector Chrome's t-rex based bootsector game
Invaders 512 B Custom 16-bit Modern Open-source ASM Bootsector Invaders in a bootsector
Sanos 0.5 MB Custom 32-bit Modern Open-source C HD Minimalistic 32-bit x86 OS
sectorforth 512 B Custom 16-bit Modern Open-source ASM Bootsector 16-bit x86 Forth in a bootsector
Dancy 1.3 MB Custom 32-bit Modern Open-source C CD Dancy Operating System
CuriOS 6.6 MB Custom 32-bit Modern Open-source C HD Simple GUI based OS inspired by AmigaOS
OS64 2.2 MB Custom 32-bit Modern Open-source C CD Commodore 64 emulator OS for x86 (slow)
netboot.xyz 1.0 MB Custom 32-bit Modern Open-source C CD Netboot into various operating systems (slow)
SqueakNOS 20 MB Custom 32-bit Modern Open-source C, Smalltalk CD Smalltalk as a Standalone OS
Chokanji 4 13+ MB Custom 32-bit Historic Proprietary C HD A Japanese OS based on the TRON project
Mojo OS 1.4 MB Custom 32-bit Modern Open-source C++ CD A simple operating system for the x86 architecture
Vanadium OS 0.7 MB Custom 32-bit Modern Open-source C CD A portable, multi-user Unix-like OS
PrettyOS 0.5 MB Custom 32-bit Modern Open-source C++ Floppy Simple OS for beginners
Asuro 2.1 MB Custom 32-bit Modern Open-source Pascal CD Asuro is a hobbyist operating system written in Pascal
XENUS 2.0 MB Custom 32-bit Modern Open-source C HD The Vanadium OS predecessor
bootOS 11 KB Custom 16-bit Modern Open-source ASM Floppy a monolithic operating system in 512 bytes of x86 machine code
Chip4504 18 KB Custom 16-bit Modern Open-source ASM Floppy CHIP-8 emulator operating system
ForthOS 1.3 MB Custom 32-bit Historic Open-source Forth HD Complete standalone Forth-based operating system
NewOS Notion 3.7 MB Custom 32-bit Modern Open-source C++ HD Modified NewOS with fast TCP-based window manager and Doom
**Part 3 of 3** — Custom / hobby OS (full rows).
```
BleskOS 0.2 MB Custom 32-bit Modern Open-source C CD Alternative OS for older PCs
Blue Jay 83 KB Custom 16-bit Modern Open-source ASM Floppy Based on MikeOS
BoneOS 3.0 MB Custom 32-bit Modern Open-source C CD Simple hobby OS
BootChess 4.0 KB Custom 16-bit Modern Open-source ASM Floppy Chess in a bootsector
CatK 3.2 MB Custom 32-bit Modern Open-source C CD Simple Unix-like kernel
Crazierl 14 MB Custom 32-bit Modern Open-source C, Erlang Multiboot An Erlang Operating System
Dusk OS 0.4 MB Custom 32-bit Modern Open-source C HD A 32-bit Forth
Floppy Bird 6.5 KB Custom 16-bit Modern Open-source C Floppy Flappy Bird game in a bootsector
HelenOS 7.9 MB Custom 32-bit Modern Open-source C CD A microkernel-based multiserver OS
Hello v86 512 B Custom 16-bit Modern Open-source ASM Bootsector Small bootsector demo for v86
House 1.1 MB Custom 32-bit Modern Open-source Haskell Floppy Haskell User's Operating System and Environment
JX 1.3 MB Custom 32-bit Modern Open-source Java Floppy Java-based operating system
KolibriOS 1.3 MB Custom 32-bit Modern Open-source ASM Floppy Various apps, games and demos
Little Kernel 0.4 MB Custom 32-bit Modern Open-source C Multiboot An embedded kernel designed for small systems
M/CP 512 B Custom 16-bit Modern Open-source ASM Bootsector The Minimal Control Program
MikeOS 0.2 MB Custom 16-bit Modern Open-source ASM CD Contains a FORTH and BASIC interpreter and several games
Mobius 1.3 MB Custom 32-bit Modern Open-source C Floppy POSIX and Win32 compatible OS
Mu 0.2 MB Custom 16-bit Modern Open-source C HD Minimal-dependency hobbyist computing stack
NanoShell 3.5 MB Custom 32-bit Modern Open-source C CD Multi-tasked 32-bit OS with Win9x-like GUI
NewOS 0.6 MB Custom 32-bit Modern Open-source C++ Floppy Cross-platform portable OS
Nope OS 92 KB Custom 32-bit Modern Open-source C CD Simple OS with BASIC interpreter
Oberon 1.6 MB Custom 32-bit Historic Open-source Oberon HD Native Oberon 2.3.6
QNX 4.05 1.4 MB Custom 32-bit Historic Proprietary C Floppy 1999 demo disk
SectorLISP 512 B Custom 16-bit Modern Open-source ASM Bootsector Bootstrapping LISP in a Boot Sector
Skift 44 MB Custom 32-bit Modern Open-source C++ CD A hobby OS built from scratch using C/C++
Snowdrop 0.4 MB Custom 16-bit Modern Open-source ASM Floppy 16-bit hobby OS with GUI
Sol OS 0.3 MB Custom 32-bit Modern Proprietary ASM Floppy Simple graphical OS
Still Alive 10 KB Custom 32-bit Modern Open-source C Floppy Bootable demo that plays "Still Alive" from Portal
T3XFORTH 59 KB Custom 16-bit Historic Open-source ASM Floppy An old-school, plain vanilla FORTH system
TetrOS 512 B Custom 16-bit Modern Open-source ASM Bootsector Tetris that fits into the boot sector
ToaruOS 6.3 MB Custom 32-bit Modern Open-source C CD A hobby OS written from scratch
bootBASIC 512 B Custom 16-bit Modern Open-source ASM Bootsector A BASIC in 512 bytes of x86 machine code
Pillman 512 B Custom 16-bit Modern Open-source ASM Bootsector A yellow thing eats pills and is chased by monsters
bootLogo 512 B Custom 16-bit Modern Open-source ASM Bootsector Logo language in 508 bytes
bootRogue 512 B Custom 16-bit Modern Open-source ASM Bootsector A roguelike game that fits in a boot sector
dino 512 B Custom 16-bit Modern Open-source ASM Bootsector Chrome's t-rex based bootsector game
Invaders 512 B Custom 16-bit Modern Open-source ASM Bootsector Invaders in a bootsector
Sanos 0.5 MB Custom 32-bit Modern Open-source C HD Minimalistic 32-bit x86 OS
sectorforth 512 B Custom 16-bit Modern Open-source ASM Bootsector 16-bit x86 Forth in a bootsector
Dancy 1.3 MB Custom 32-bit Modern Open-source C CD Dancy Operating System
CuriOS 6.6 MB Custom 32-bit Modern Open-source C HD Simple GUI based OS inspired by AmigaOS
OS64 2.2 MB Custom 32-bit Modern Open-source C CD Commodore 64 emulator OS for x86 (slow)
netboot.xyz 1.0 MB Custom 32-bit Modern Open-source C CD Netboot into various operating systems (slow)
SqueakNOS 20 MB Custom 32-bit Modern Open-source C, Smalltalk CD Smalltalk as a Standalone OS
Chokanji 4 13+ MB Custom 32-bit Historic Proprietary C HD A Japanese OS based on the TRON project
Mojo OS 1.4 MB Custom 32-bit Modern Open-source C++ CD A simple operating system for the x86 architecture
Vanadium OS 0.7 MB Custom 32-bit Modern Open-source C CD A portable, multi-user Unix-like OS
PrettyOS 0.5 MB Custom 32-bit Modern Open-source C++ Floppy Simple OS for beginners
Asuro 2.1 MB Custom 32-bit Modern Open-source Pascal CD Asuro is a hobbyist operating system written in Pascal
XENUS 2.0 MB Custom 32-bit Modern Open-source C HD The Vanadium OS predecessor
bootOS 11 KB Custom 16-bit Modern Open-source ASM Floppy a monolithic operating system in 512 bytes of x86 machine code
Chip4504 18 KB Custom 16-bit Modern Open-source ASM Floppy CHIP-8 emulator operating system
ForthOS 1.3 MB Custom 32-bit Historic Open-source Forth HD Complete standalone Forth-based operating system
NewOS Notion 3.7 MB Custom 32-bit Modern Open-source C++ HD Modified NewOS with fast TCP-based window manager and Doom
```
Status update from implementation pass (Cursor Agent)
Kicked off Phase 1 work in spikersoft-angular. Hit a tooling issue mid-stream where large file writes were silently dropping their payloads, so I'm parking progress here with a clear plan rather than leave half-baked code in the tree. Picking this up in a fresh session.
Decisions locked in with the stakeholder
Hosting / serving — Bytes live in a .gitignore-d folder under spikersoft-angular/projects/spikersoft/src/assets/v86/... so the runtime keeps using /assets/v86/... (same-origin, no CORS, no backend changes). A separate one-time copy script (built by the operator, out of scope for this PR) will populate the eventual production location. No runtime fetch of copy.sh or any third-party CDN.
Phase 1 scope — Make the existing 17 demos in v86-demos.ts actually work end-to-end plus expand the catalogue to all clearly-open-source entries from the parity list in this issue (~70 entries total). Proprietary entries (Microsoft Windows lineage, BeOS 5, BSD/OS, Unix V7, QNX 4.05, MS-DOS 4 / 6.22, 86-DOS, Sol OS, Chokanji 4, etc.) ship as bring-your-own-image (BYO) placeholders in the UI: a <input type="file"> feeds v86 via URL.createObjectURL, so we expose them in the catalogue UI without hosting any proprietary bytes ourselves. Legal review for hosting any of those is deferred to a follow-up issue.
Background context surfaced during research
The feature was effectively broken in main before this work: the runtime URLs in v86-emulator.component.ts / v86-demos.ts were already migrated to /assets/v86/... paths, but only v86.js is on disk — no v86.wasm, no bios/seabios.bin, no bios/vgabios.bin, no disk images. Every Start click 404s. The leftover v86-emulator.component.ts.backup still hard-codes https://copy.sh/v86/... URLs and needs to go.
spikersoft-angular/projects/spikersoft/src/assets/v86/README.md — canonical filename layout, hosted vs BYO explanation, instructions for adding a new image. This is the contract the operator's copy script reads against.
spikersoft-angular/projects/spikersoft/src/app/_components/_emulators/v86/v86-catalogue.ts (skeleton) — typed manifest with the full set of types (V86Family, V86Arch, V86Era, V86License, V86Medium, V86HostingTier, V86CatalogueEntry), boot-order / RAM helpers, and an empty V86_CATALOGUE array. Entry rows still need to be filled in (see below).
What's still to do (next session)
Populate V86_CATALOGUE in v86-catalogue.ts with rows for all parity entries from comments #1–#3 of this issue. Plan is ~85 entries: ~70 hosted-open-source + ~15 BYO-proprietary. Each row carries id, name, description, family, arch, era, license, language, medium, approxSizeMB, hostingTier, homepage, and the appropriate disk/cdrom/floppy/bzImage URL slot (or none for BYO).
Refactor v86-emulator.component.ts to consume the manifest directly (drop the current V86_DEMOS.map(...)).
Refactor v86-emulator.component.html to:
Replace the single <mat-select> with multi-select chip filters (family, arch, era, medium, license).
Group the resulting list by family.
Render BYO entries with a <input type="file"> instead of an immediate Start button; on file pick, build a Blob-backed disk ref via URL.createObjectURL and feed it through the existing start path.
Update v86-emulator.component.scss for filter chips + grouped list styling (theme tokens only, per angular-theming.mdc).
Update v86-emulator.component.spec.ts to assert (a) every URL in the manifest matches ^/assets/v86/, (b) BYO entries have no disk URLs, (c) filtering produces expected subsets.
Update component README.md — drop the misleading "Images are loaded on-demand from CDN" / "All external resources loaded from official v86 CDN" claims; document the manifest schema and BYO flow.
Delete v86-emulator.component.ts.backup (still contains hard-coded copy.sh URLs, would be a footgun if anyone copy-pasted from it).
Explicitly out of scope for this PR (separate follow-ups)
The one-time copy script that populates assets/v86/images, assets/v86/bios, and v86.wasm (operator-built).
Backend serving via TryConfigureStaticFiles + a FusionIO mount under /legacy-systems. Not needed yet because dev and prod will both serve from /assets/v86/... packaged with the Angular static host. Easy to add later if total payload outgrows what we want shipped from the Angular host.
sha256 verification (manifest schema reserves a slot, Phase 1 leaves it unset).
Sanity boot: drop kolibri.img + seabios.bin + vgabios.bin + v86.wasm into assets/v86/..., pick KolibriOS, click Start, OS boots end-to-end with no outbound network requests visible in DevTools.
## Status update from implementation pass (Cursor Agent)
Kicked off Phase 1 work in `spikersoft-angular`. Hit a tooling issue mid-stream where large file writes were silently dropping their payloads, so I'm parking progress here with a clear plan rather than leave half-baked code in the tree. Picking this up in a fresh session.
### Decisions locked in with the stakeholder
1. **Hosting / serving** — Bytes live in a `.gitignore`-d folder under `spikersoft-angular/projects/spikersoft/src/assets/v86/...` so the runtime keeps using `/assets/v86/...` (same-origin, no CORS, no backend changes). A separate one-time copy script (built by the operator, out of scope for this PR) will populate the eventual production location. No runtime fetch of `copy.sh` or any third-party CDN.
2. **Phase 1 scope** — Make the existing 17 demos in `v86-demos.ts` actually work end-to-end **plus** expand the catalogue to all clearly-open-source entries from the parity list in this issue (~70 entries total). Proprietary entries (Microsoft Windows lineage, BeOS 5, BSD/OS, Unix V7, QNX 4.05, MS-DOS 4 / 6.22, 86-DOS, Sol OS, Chokanji 4, etc.) ship as **bring-your-own-image (BYO)** placeholders in the UI: a `<input type="file">` feeds v86 via `URL.createObjectURL`, so we expose them in the catalogue UI without hosting any proprietary bytes ourselves. Legal review for hosting any of those is deferred to a follow-up issue.
### Background context surfaced during research
The feature was effectively broken in `main` before this work: the runtime URLs in `v86-emulator.component.ts` / `v86-demos.ts` were already migrated to `/assets/v86/...` paths, but only `v86.js` is on disk — no `v86.wasm`, no `bios/seabios.bin`, no `bios/vgabios.bin`, no disk images. Every Start click 404s. The leftover `v86-emulator.component.ts.backup` still hard-codes `https://copy.sh/v86/...` URLs and needs to go.
### What landed in this pass
- `spikersoft-angular/projects/spikersoft/src/assets/v86/.gitignore` — excludes `images/`, `bios/`, `*.wasm`; keeps `v86.js`, `README.md`, and `.gitignore` itself.
- `spikersoft-angular/projects/spikersoft/src/assets/v86/README.md` — canonical filename layout, hosted vs BYO explanation, instructions for adding a new image. This is the contract the operator's copy script reads against.
- `spikersoft-angular/projects/spikersoft/src/app/_components/_emulators/v86/v86-catalogue.ts` (skeleton) — typed manifest with the full set of types (`V86Family`, `V86Arch`, `V86Era`, `V86License`, `V86Medium`, `V86HostingTier`, `V86CatalogueEntry`), boot-order / RAM helpers, and an empty `V86_CATALOGUE` array. Entry rows still need to be filled in (see below).
### What's still to do (next session)
1. Populate `V86_CATALOGUE` in `v86-catalogue.ts` with rows for all parity entries from comments #1–#3 of this issue. Plan is ~85 entries: ~70 hosted-open-source + ~15 BYO-proprietary. Each row carries `id`, `name`, `description`, `family`, `arch`, `era`, `license`, `language`, `medium`, `approxSizeMB`, `hostingTier`, `homepage`, and the appropriate disk/cdrom/floppy/bzImage URL slot (or none for BYO).
2. Refactor `v86-emulator.component.ts` to consume the manifest directly (drop the current `V86_DEMOS.map(...)`).
3. Refactor `v86-emulator.component.html` to:
- Replace the single `<mat-select>` with multi-select chip filters (family, arch, era, medium, license).
- Group the resulting list by family.
- Render BYO entries with a `<input type="file">` instead of an immediate Start button; on file pick, build a `Blob`-backed disk ref via `URL.createObjectURL` and feed it through the existing start path.
4. Update `v86-emulator.component.scss` for filter chips + grouped list styling (theme tokens only, per `angular-theming.mdc`).
5. Update `v86-emulator.component.spec.ts` to assert (a) every URL in the manifest matches `^/assets/v86/`, (b) BYO entries have no disk URLs, (c) filtering produces expected subsets.
6. Update component `README.md` — drop the misleading "Images are loaded on-demand from CDN" / "All external resources loaded from official v86 CDN" claims; document the manifest schema and BYO flow.
7. Delete `v86-emulator.component.ts.backup` (still contains hard-coded `copy.sh` URLs, would be a footgun if anyone copy-pasted from it).
### Explicitly out of scope for this PR (separate follow-ups)
- The one-time copy script that populates `assets/v86/images`, `assets/v86/bios`, and `v86.wasm` (operator-built).
- Backend serving via `TryConfigureStaticFiles` + a FusionIO mount under `/legacy-systems`. Not needed yet because dev and prod will both serve from `/assets/v86/...` packaged with the Angular static host. Easy to add later if total payload outgrows what we want shipped from the Angular host.
- `sha256` verification (manifest schema reserves a slot, Phase 1 leaves it unset).
- Bulk ingest pipeline / runbook for syncing copy.sh BIOS / image updates.
- Legal review of proprietary images for actual hosting — those stay BYO.
### Acceptance check (will run after step 7)
- Repo grep for `copy.sh` returns zero hits in shipping code.
- Repo grep for `https?://` inside `v86-emulator.*` and `v86-catalogue.ts` returns zero non-doc hits.
- Filter UI renders >=70 entries; toggling License=Open-source hides every BYO row.
- Sanity boot: drop `kolibri.img` + `seabios.bin` + `vgabios.bin` + `v86.wasm` into `assets/v86/...`, pick KolibriOS, click Start, OS boots end-to-end with no outbound network requests visible in DevTools.
Board-sweep verified (medium confidence): angular PR #64 merged the 106-entry same-origin V86 catalogue (84 hosted + 22 BYO), faceted filters, and a spec asserting no copy.sh URLs — v86-catalogue.ts verified in tree; the stale 'parked' comment is superseded. Caveat: the hosted image BYTES are ops-side and unverifiable from the repos — if any catalogue entry 404s in prod, reopen with the entry name. Closing on the code evidence.
Board-sweep verified (medium confidence): angular PR #64 merged the 106-entry same-origin V86 catalogue (84 hosted + 22 BYO), faceted filters, and a spec asserting no copy.sh URLs — v86-catalogue.ts verified in tree; the stale 'parked' comment is superseded. Caveat: the hosted image BYTES are ops-side and unverifiable from the repos — if any catalogue entry 404s in prod, reopen with the entry name. Closing on the code evidence.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Expand Learn → Legacy Systems (v86) so OS / disk images are hosted on SpikerSoft infrastructure, achieving catalog parity with the public copy.sh/v86 emulator image list—without runtime dependency on copy.sh / third‑party CDN for fetching those payloads.
Motivation
Constraints / compliance
Many entries are historic proprietary software (Microsoft Windows lineage, proprietary BSD/OS, QNX demo, Unix V7, etc.). Before mirroring:
license,homepage,source URL,checksum).Engineering approach (high level)
sha256,sizebyte, emulator profile flags (ne2k/virtio, boot order).https://…/legacy-systems/v86/...(never hard-code copy.sh); optional staging CDN for DEV.Acceptance criteria
Target catalogue (parity list)
Stakeholder-authored tabular list spanning Linux/BSD/Hurd/Unices/Windows/DOS/custom hobby images is attached in comments #33–#35 (Linux/Unix/Windows/ReactOS/BSD lineage; DOS; Custom). Reconcile rows against copy.sh/v86 at implementation time—the site’s live table is authoritative for new BIOS pairs / image updates (e.g. build version footer
4e4bf556as of stakeholder review). Replace any divergence with synced manifest exports.Complete stakeholder parity list (tabular paste — legal gate + checksum each line at ingest time). Source catalogue UI: copy.sh/v86.
(Part 2 follows — DOS + Custom — due to comment length)
Part 2 of 3 — DOS family (full rows).
Part 3 of 3 — Custom / hobby OS (full rows).
Status update from implementation pass (Cursor Agent)
Kicked off Phase 1 work in
spikersoft-angular. Hit a tooling issue mid-stream where large file writes were silently dropping their payloads, so I'm parking progress here with a clear plan rather than leave half-baked code in the tree. Picking this up in a fresh session.Decisions locked in with the stakeholder
.gitignore-d folder underspikersoft-angular/projects/spikersoft/src/assets/v86/...so the runtime keeps using/assets/v86/...(same-origin, no CORS, no backend changes). A separate one-time copy script (built by the operator, out of scope for this PR) will populate the eventual production location. No runtime fetch ofcopy.shor any third-party CDN.v86-demos.tsactually work end-to-end plus expand the catalogue to all clearly-open-source entries from the parity list in this issue (~70 entries total). Proprietary entries (Microsoft Windows lineage, BeOS 5, BSD/OS, Unix V7, QNX 4.05, MS-DOS 4 / 6.22, 86-DOS, Sol OS, Chokanji 4, etc.) ship as bring-your-own-image (BYO) placeholders in the UI: a<input type="file">feeds v86 viaURL.createObjectURL, so we expose them in the catalogue UI without hosting any proprietary bytes ourselves. Legal review for hosting any of those is deferred to a follow-up issue.Background context surfaced during research
The feature was effectively broken in
mainbefore this work: the runtime URLs inv86-emulator.component.ts/v86-demos.tswere already migrated to/assets/v86/...paths, but onlyv86.jsis on disk — nov86.wasm, nobios/seabios.bin, nobios/vgabios.bin, no disk images. Every Start click 404s. The leftoverv86-emulator.component.ts.backupstill hard-codeshttps://copy.sh/v86/...URLs and needs to go.What landed in this pass
spikersoft-angular/projects/spikersoft/src/assets/v86/.gitignore— excludesimages/,bios/,*.wasm; keepsv86.js,README.md, and.gitignoreitself.spikersoft-angular/projects/spikersoft/src/assets/v86/README.md— canonical filename layout, hosted vs BYO explanation, instructions for adding a new image. This is the contract the operator's copy script reads against.spikersoft-angular/projects/spikersoft/src/app/_components/_emulators/v86/v86-catalogue.ts(skeleton) — typed manifest with the full set of types (V86Family,V86Arch,V86Era,V86License,V86Medium,V86HostingTier,V86CatalogueEntry), boot-order / RAM helpers, and an emptyV86_CATALOGUEarray. Entry rows still need to be filled in (see below).What's still to do (next session)
V86_CATALOGUEinv86-catalogue.tswith rows for all parity entries from comments #1–#3 of this issue. Plan is ~85 entries: ~70 hosted-open-source + ~15 BYO-proprietary. Each row carriesid,name,description,family,arch,era,license,language,medium,approxSizeMB,hostingTier,homepage, and the appropriate disk/cdrom/floppy/bzImage URL slot (or none for BYO).v86-emulator.component.tsto consume the manifest directly (drop the currentV86_DEMOS.map(...)).v86-emulator.component.htmlto:<mat-select>with multi-select chip filters (family, arch, era, medium, license).<input type="file">instead of an immediate Start button; on file pick, build aBlob-backed disk ref viaURL.createObjectURLand feed it through the existing start path.v86-emulator.component.scssfor filter chips + grouped list styling (theme tokens only, perangular-theming.mdc).v86-emulator.component.spec.tsto assert (a) every URL in the manifest matches^/assets/v86/, (b) BYO entries have no disk URLs, (c) filtering produces expected subsets.README.md— drop the misleading "Images are loaded on-demand from CDN" / "All external resources loaded from official v86 CDN" claims; document the manifest schema and BYO flow.v86-emulator.component.ts.backup(still contains hard-codedcopy.shURLs, would be a footgun if anyone copy-pasted from it).Explicitly out of scope for this PR (separate follow-ups)
assets/v86/images,assets/v86/bios, andv86.wasm(operator-built).TryConfigureStaticFiles+ a FusionIO mount under/legacy-systems. Not needed yet because dev and prod will both serve from/assets/v86/...packaged with the Angular static host. Easy to add later if total payload outgrows what we want shipped from the Angular host.sha256verification (manifest schema reserves a slot, Phase 1 leaves it unset).Acceptance check (will run after step 7)
copy.shreturns zero hits in shipping code.https?://insidev86-emulator.*andv86-catalogue.tsreturns zero non-doc hits.kolibri.img+seabios.bin+vgabios.bin+v86.wasmintoassets/v86/..., pick KolibriOS, click Start, OS boots end-to-end with no outbound network requests visible in DevTools.Board-sweep verified (medium confidence): angular PR #64 merged the 106-entry same-origin V86 catalogue (84 hosted + 22 BYO), faceted filters, and a spec asserting no copy.sh URLs — v86-catalogue.ts verified in tree; the stale 'parked' comment is superseded. Caveat: the hosted image BYTES are ops-side and unverifiable from the repos — if any catalogue entry 404s in prod, reopen with the entry name. Closing on the code evidence.