UnoDOS is een ambitieus project van een familie van grafische besturingssystemen (GUI) die ontworpen is om op een breed scala aan architecturen te draaien. Het project is verdeeld in verschillende versies, waarbij pc64 het vlaggenschip is voor moderne x86-64 computers. Deze versie boot bare-metal via UEFI en beschikt over eigen drivers, een netwerkstack, browser, Office-suite en een hypervisor (unovirt) waarmee zelfs een Ubuntu-kernel kan worden gedraaid.
Naast de moderne variant is er het klassieke UnoDOS, volledig geschreven in x86 assembly voor IBM PC XT-compatibelen, dat klein genoeg is om op een enkele diskette te passen. De kracht van het project ligt in de contract-gestuurde architectuur (unodef), waardoor het OS eenvoudig gepoort kan worden naar diverse platformen. In totaal ondersteunt UnoDOS tientallen machines, waaronder:
- Homecomputers: Amiga, Commodore 64, Apple II en Mac.
- Consoles: NES, Sega Genesis, PlayStation 2 en Dreamcast.
- Boards en mobiel: Raspberry Pi en PinePhone.
Het systeem maakt gebruik van gedeelde bibliotheken voor widgets (unoui), media (unomedia) en binaire Microsoft-documentformaten (unodoc). Het project is gelicenseerd onder de Mozilla Public License 2.0.
UnoDOS
UnoDOS is een familie van grafische besturingssystemen. Het begon als een GUI-first, 16-bit real-mode OS, volledig geschreven in x86 assembly. Het paste een kernel, een windowmanager, twee bestandssystemen, coöperatieve multitasking en een volledige set applicaties op een enkele diskette van 1,44 MB. Sindsdien is het uitgegroeid tot een contract-gestuurde familie van poorten die homecomputers, consoles, handhelds, single-board computers en een telefoon beslaat. Het vlaggenschip is nu pc64: UnoDOS die bare-metal draait op elke moderne 64-bit pc, met eigen drivers, een eigen netwerkstack, browser, office-suite, compiler en hypervisor.
Uitproberen
Vooraf gebouwde images voor elk platform zijn beschikbaar op de releases-pagina:
- Een hybride ISO en USB-disk image voor moderne pc's.
- Cartridge ROM's voor consoles en handhelds.
- Disk images voor homecomputers.
- SD-kaart payloads voor boards.
De meeste versies kunnen binnen een minuut in een emulator worden gestart. De gebruikershandleiding legt uit hoe het booten op echte hardware werkt, inclusief one-click USB-flasher apps voor Windows en macOS.
Voor een overzicht van wat daadwerkelijk is geverifieerd (in tegenstelling tot wat simpelweg compileert), kan worden verwezen naar PLATFORMS.md. Hierin staat per platform wat is geboot op echte hardware (en op welke fysieke machine), wat alleen emulator-geverifieerd is, en welke hiaten er bekend zijn.
UnoDOS pc64: Het vlaggenschip voor moderne pc's
pc64 boot bare-metal op vrijwel elke x86-64 pc die sinds ongeveer 2007 is gemaakt. UEFI vervult hier de rol die de BIOS vervult voor het klassieke OS: de firmware overhandigt een framebuffer, een toetsenbord en het bootvolume. Op de meeste machines roept UnoDOS vervolgens ExitBootServices aan, waarna de firmware het proces verlaat en het OS volledig op eigen drivers draait. Een hybride disk image boot hetzelfde OS ook op legacy-BIOS machines.
Een complete desktop
De shell is gebouwd op unoui, de cross-platform widget toolkit van de familie. Deze biedt:
- Een vensterdesktop met taakbalk en virtuele desktops.
- Window snapping en een geanimeerde Alt-Tab switcher.
- Desktop-iconen en een programmamenu.
- Tien live-omschakelbare thema's, variërend van Aurora (de moderne platte standaard, in licht en donker) tot trouwe retro-looks (Mac OS 7, 1-bit Mac Plus, Windows 3.1, Amiga Workbench, C64, Apple II, NeXTSTEP).
- Tekst is kerned, anti-aliased TrueType met gebundelde open fonts.
- Elk bedieningselement is bereikbaar via de aanwijzer of het toetsenbord.
De applicaties
- UnoWord, UnoCalc, UnoShow: Een Office 97-klasse suite die de echte binaire Microsoft-formaten (.doc, .xls, .ppt) leest en schrijft via de in-tree
unodoc bibliotheek.
- Browser: Rendering van HTML, Markdown en CSS met cookies, cache, zoek- en opslagfuncties, HTTP en CA-gevalideerde TLS 1.2 HTTPS. Er zijn twee schakelbare JavaScript-engines: de in-tree
unojs bytecode VM en de vendored quickjs-ng, met een optie voor een layout-engine op basis van libcss.
- Studio: Een IDE die op het OS zelf draait, met syntax highlighting, een build-and-run loop, een AI-assistent en UnoC, een ingebouwde C-compiler die native UnoDOS-apps compileert op UnoDOS.
- Python: MicroPython als first-class runtime (
PYRT.UNO) met een uno-API voor de shell, het bestandssysteem en het netwerk.
- Music, UnoAmp, Photos: Zelfgeschreven WAV, MIDI, MP3 en AAC-LC decoders (
unomedia). UnoAmp is een Winamp 2-kloon die klassieke skins laadt; Photos bekijkt gangbare afbeeldingsformaten.
- SSH: Een native SSH-client (ed25519, in-tree crypto).
- Overige: Files, Editor, Paint, Tracker, Clock, Control Panel, System, een log-viewer, games (Dostris, Pac-Man, OutLast) en Runner3D (showcase voor de
uno3d 3D-bibliotheek).
Apps zijn loadbare .UNO modules met eigen descriptoren. Door er één in APPS\ te plaatsen, ontdekt de shell deze automatisch zonder dat een rebuild of reboot nodig is.
Eigen hardwareondersteuning
Alles onder de firmware-lijn is native geschreven voor deze bronboom:
- Opslag: AHCI, NVMe, SDHCI/eMMC en USB mass storage onder een gemeenschappelijke block-layer, een native FAT16/FAT32 driver, en GPT/ESP authoring.
- USB: Een polled xHCI host stack met hubs, HID-toetsenborden en -muizen, mass storage en USB Ethernet (ASIX AX88179, Realtek RTL8152).
- Netwerken: Bekabelde NIC's (Intel e1000/e1000e/igb, Realtek r8169) en Wi-Fi (Intel, Realtek, Marvell drivers) met WPA2, over een vanaf nul gebouwde TCP/IP-stack: ARP, IPv4, ICMP, UDP, TCP, DHCP, DNS, TLS (BearSSL), sockets en syslog.
- Input: PS/2, I2C-HID (native laptop trackpads) en USB HID.
- Audio: Intel HDA met AC'97 fallback naar een 48 kHz DMA ring.
- ACPI: Een in-tree AML interpreter (
unoacpi).
Hypervisor
unovirt start VMX-operaties op Intel-hardware en draait guests achter EPT met virtio-apparaten. Een echte Ubuntu-kernel boot onder UnoDOS, bereikt de userspace, reageert in de shell en mount een ext4-schijf die wordt geserveerd vanuit een bestand op een UnoDOS-volume. De Appliances-app en VM-manager beheren dit; een AMD/SVM-backend is geschreven en wacht op hardware-bewijs.
Installatie, beheer en automatisering
- Installer: Niet-destructieve installatie op de ESP van een bestaande schijf, of een volledige disk-clone. Een draaiende machine kan ook via het netwerk worden herinstalled.
- unosecure: Lokale accounts, RBAC en een audit trail.
- URC: Een remote-control kanaal (fail-closed verb gate, one-time console arming) dat machines headless aanstuurt voor het deployen van builds, uitvoeren van tests en streamen van het scherm.
- Debug builds: Een gedragsspecificatie (
pc64/SPEC.md) uitgevoerd als een on-metal conformance test, inclusief watchdogs, fault telemetry en een stress-harness.
Bewezen op echte machines
Gevalideerd op een Lenovo ThinkPad X1 Carbon Gen 8 (native trackpad, Wi-Fi, live thema- en resolutiewisselingen), op een always-on ZimaBlade testbox (boot vanaf USB, detacheert van de firmware, draait volledig native), en op QEMU+OVMF harnesses. De design notes in pc64/README.md documenteren de firmware-traps die alleen echte hardware blootlegt.
Bouwen
sudo apt install gcc-mingw-w64-x86-64 qemu-system-x86 ovmf python3 python3-pil
cd pc64
./build.sh # -> build/esp/EFI/BOOT/BOOTX64.EFI
./build.sh run # boot it in QEMU+OVMF
De volledige port bouwt met standaardpakketten, zonder EDK2. Zie pc64/DEVELOPMENT.md voor de setup van Linux- en Windows-omgevingen en pc64/README.md voor de volledige architectuurtour.
De familie
Eén contract, vele werelden
UnoDOS 3.1 is contract-gestuurd: één machine-leesbaar Contract (unodef/) definieert de schermgeometrie, de window- en event-layout en de gedeelde enums. Elke wereld wordt hiervan gegenereerd of hieraan getoetst. De assembly-poorten en de x86-referentie consumeren dit byte-identiek. Elf poorten zijn vers gebouwd op de 3.1-architectuur in plaats van gemigreerd, wat bewijst dat een nieuw doelplatform slechts een klein gegenereerd oppervlak kost. Zie docs/UNODOS-3.1-MIGRATION.md en docs/CONTRACT-ARCH.md.
De poorten
Elke poort boot een UnoDOS-desktop met de gedeelde app-set: Files, Notepad, Music, Theme, Tracker, Paint en de games (Dostris, OutLast, Pac-Man), geschaald naar wat de machine aankan (tot een launcher-profiel op 2 KB RAM). Een feature-by-feature vergelijking staat in docs/FEATURE-MATRIX.md.
Homecomputers
| Port | CPU | Highlights |
| IBM PC/XT (x86) | 8088+ | De referentie OS; � |
| echte hardware, incl. cycle-accurate 8088 |
| Amiga | 68000 | Self-booting ADF, copper/bitplanes, Paula audio, disk-loaded apps, PC-uitwisselbare FAT12 |
| Commodore 64 | 6510 | Hi-res bitmap desktop met per-cel kleur, SID, CIA TOD clock, alle apps disk-loaded |
| VIC-20 | 6502 | Verse 3.1 wereld op de 22×23 character matrix |
| Apple II | 6502 | Eigen GCR 6-and-2 RWTS, hi-res renderer, disk-loaded apps |
| Apple IIGS | 65C816 | Super Hi-Res desktop, Ensoniq DOC audio, FAT12 over SmartPort, volledige app-pariteit |
| Mac System 1–7 | 68000+ | Hosted Toolbox port (1-bit en Color QuickDraw), app-free core, loadbare modules |
| MacPlus (standalone) | 68000 | Bare-metal: eigen boot blocks, drivers en renderer. � |
| echte Mac SE |
| PowerPC Mac | PPC G3/G4 | Open Firmware client, de eerste big-endian PowerPC wereld |
Consoles en handhelds
| Port | CPU | Highlights |
| Sega Genesis | 68000 | VDP tile desktop, SRAM/tape/Sega-CD storage. � |
| boot op echte hardware |
| Super Nintendo | 65816 | Shadow+DMA tilemap model, SPC700 audio driver. 🟡 conditionele pass op clone hardware |
| NES | 6502 | 2 KB RAM. � |
| gevalideerd op een echte AV Famicom |
| PC Engine | HuC6280 | � |
| gevalideerd op een Turbo EverDrive |
| Master System / Game Gear | Z80 | De eerste contract-gestuurde port en zijn 12-bit-kleur broeder |
| Game Boy / Color | SM83 | Eén ROM boot zowel DMG greyscale als GBC colour |
| Game Boy Advance | ARM7TDMI | De eerste ARM wereld, op een Mode-3 framebuffer |
| WonderSwan | V30MZ | De eerste x86 handheld |
| PlayStation 2 | R5900 | Portable C core over de Graphics Synthesizer; memory-card storage, USB input |
| Dreamcast | SH-4 | Zelfde C core over PowerVR2; VMU storage; 60 fps in Flycast |
Boards en mobiel
| Port | CPU | Highlights |
| Raspberry Pi | AArch64 | De eerste 64-bit wereld, op de VideoCore mailbox framebuffer |
| PinePhone | AArch64 | Portret 480×640 op de Allwinner DE2, self-booting microSD |
Verschillende poorten zijn gevalideerd op echte hardware (NES, PC Engine, Genesis, Mac SE, de x86-lijn, pc64's laptop- en SBC-vloot); de rest is geverifieerd in emulators of op ROM-vrije instruction-level harnesses (Unicorn, py65, een vanaf nul gebouwde 65816 core), waardoor er geen propriëtaire ROM's nodig zijn om iets te bouwen of testen.
Het klassieke OS (de x86-referentie)
De originele UnoDOS 3: een GUI-first OS voor IBM PC XT-compatibelen, volledig geschreven in real-mode x86 assembly. Geen DOS, geen runtime, enkel de BIOS en een Intel 8088 of later.
- Boot vanaf een 1,44 MB diskette (of harde schijf, CompactFlash, USB) direct naar een vensterdesktop met sleepbare iconen, muisondersteuning en een z-ordered windowmanager voor 16 vensters.
- Een kernel van circa 46 KB die 106 systeemoproepen exposeert via
INT 0x80: graphics in vier videomodi (CGA 320×200 tot VESA 640×480), een GUI-toolkit met 15 widgets, FAT12 en FAT16 lees/schrijf, coöperatieve multitasking (5 gelijktijdige apps plus de shell in 640 KB), een systeemklembord, drie bitmap-lettertypen en PC-speaker audio.
- 19 applicaties, van een volledige teksteditor en bestandsbeheerder tot Paint, Tracker, Settings, een boot-floppy creator en drie games.
- Draait met volledige feature-pariteit op een genuine 8088 op 4,77 MHz, geverifieerd op een cycle-accurate XT (Microsoft seriemuis op COM1, XT-IDE CompactFlash boot) en op echte hardware van een 386SX tot een Atom netbook. Zie
docs/PORT-8088.md.
Bouwen en uitvoeren:
sudo apt install nasm qemu-system-x86 make python3
make floppy144 # build/unodos-144.img, een bootbare FAT12 floppy
make run144 # boot it in QEMU
make hd-image bouwt de 64 MB FAT16 hard-drive image. tools/write.ps1 schrijft images naar fysieke media op Windows, en dd doet dit op Linux.
Apps zijn platte NASM-binaries in hun eigen 64 KB segmenten; een minimale windowed app is ongeveer 60 regels. Start met de app-ontwikkelingsgids, de API-referentie (alle 106 calls met register-level detail) en docs/ARCHITECTURE.md.
Gedeelde subsystemen
De poorten blijven klein omdat de zware mechanismen worden gedeeld:
| Bibliotheek | Beschrijving |
| unodef | Het Contract: één machine-leesbare definitie waar elke wereld van is gegenereerd |
| unoui | Cross-platform widget toolkit en thema's (docs/UNOUI.md) |
| uno3d | Portable 3D pipeline met software, PS2 GS en Dreamcast PVR backends (docs/UNO3D.md) |
| unomedia | Beeld- en audiodecoders (WAV, MIDI, MP3, AAC-LC en gangbare afbeeldingsformaten), vanaf nul gebouwd |
| unodoc | Microsoft binaire documentformaten: CFB en .doc/.xls/.ppt, lezen en schrijven |
| unonet | De netwerkstack waar de pc64-drivers in voeden |
| unojs / unoweb | JavaScript engine en DOM/HTML/CSS layout engine |
| unofs, unosound, unosched, unobus, unoacpi | Bestandssystemen, audio-sequencing, scheduling, bussen, ACPI |
Repositories en branches
- master (hmofet/unodos): De voorwaartse, contract-gestuurde lijn en de thuisbasis van pc64. Alle huidige ontwikkeling vindt hier plaats.
- hmofet/unodos-3-legacy: Het originele, verschepende en op echte hardware gevalideerde OS en zijn poorten (tag
legacy-pre-3.1). Bevroren en gearchiveerd, "known-good".
Documentatie
- Gebruikershandleiding: Installatie, desktop, apps, netwerken, appliances en de ontwikkelaarsgids.
- docs/: Architectuur, API-referentie, port spec, feature matrix, storage en boot-chain internals, en de plan- en handoff-documenten per subsysteem.
- CHANGELOG.md: De volledige geschiedenis, 425+ builds. Huidige versie: v3.34.0.
- AGENTS.md en CONTRIBUTING.md: Hoe bijdragen aan deze boom werkt.
Licentie
Copyright (c) 2026 Arin Bakht. Dit project is gelicenseerd onder de Mozilla Public License 2.0 (MPL 2.0).
- Gebruik: Gratis, inclusief commercieel, zonder royalty's.
- Inspectie: De volledige broncode is hier beschikbaar en zal dat blijven.
- Modificatie: Toegestaan, maar als u een gewijzigde versie van een bestand uit dit project distribueert, moet de bron van dat bestand worden gepubliceerd onder MPL 2.0. UnoDOS kan niet privé worden gemaakt.
- Grotere werken: U mag UnoDOS combineren met eigen propriëtaire code en het gecombineerde werk licentiëren naar eigen inzicht. Alleen de UnoDOS-bestanden blijven MPL.
- Attributie: Vereist; behoud de copyright-notitie en de licentietekst.
Componenten van derden behouden hun eigen licenties (MIT, Apache-2.0, BSD-3-Clause, public domain, en CC BY voor twee lettertypen). Elk hiervan is vermeld in THIRD-PARTY.md.
UnoDOS
UnoDOS is een familie van grafische besturingssystemen. Het begon als een GUI-first, 16-bit real-mode OS, volledig geschreven in x86 assembly. Het paste een kernel, een windowmanager, twee bestandssystemen, coöperatieve multitasking en een volledige set applicaties op een enkele diskette van 1,44 MB. Sindsdien is het uitgegroeid tot een contract-gestuurde familie van poorten die homecomputers, consoles, handhelds, single-board computers en een telefoon beslaat. Het vlaggenschip is nu pc64: UnoDOS die bare-metal draait op elke moderne 64-bit pc, met eigen drivers, een eigen netwerkstack, browser, office-suite, compiler en hypervisor.
Uitproberen
Vooraf gebouwde images voor elk platform zijn beschikbaar op de releases-pagina:
- Een hybride ISO en USB-disk image voor moderne pc's.
- Cartridge ROM's voor consoles en handhelds.
- Disk images voor homecomputers.
- SD-kaart payloads voor boards.
De meeste versies kunnen binnen een minuut in een emulator worden gestart. De gebruikershandleiding legt uit hoe het booten op echte hardware werkt, inclusief one-click USB-flasher apps voor Windows en macOS.
Voor een overzicht van wat daadwerkelijk is geverifieerd (in tegenstelling tot wat simpelweg compileert), kan worden verwezen naar PLATFORMS.md. Hierin staat per platform wat is geboot op echte hardware (en op welke fysieke machine), wat alleen emulator-geverifieerd is, en welke hiaten er bekend zijn.
UnoDOS pc64: Het vlaggenschip voor moderne pc's
pc64 boot bare-metal op vrijwel elke x86-64 pc die sinds ongeveer 2007 is gemaakt. UEFI vervult hier de rol die de BIOS vervult voor het klassieke OS: de firmware overhandigt een framebuffer, een toetsenbord en het bootvolume. Op de meeste machines roept UnoDOS vervolgens ExitBootServices aan, waarna de firmware het proces verlaat en het OS volledig op eigen drivers draait. Een hybride disk image boot hetzelfde OS ook op legacy-BIOS machines.
Een complete desktop
De shell is gebouwd op unoui, de cross-platform widget toolkit van de familie. Deze biedt:
- Een vensterdesktop met taakbalk en virtuele desktops.
- Window snapping en een geanimeerde Alt-Tab switcher.
- Desktop-iconen en een programmamenu.
- Tien live-omschakelbare thema's, variërend van Aurora (de moderne platte standaard, in licht en donker) tot trouwe retro-looks (Mac OS 7, 1-bit Mac Plus, Windows 3.1, Amiga Workbench, C64, Apple II, NeXTSTEP).
- Tekst is kerned, anti-aliased TrueType met gebundelde open fonts.
- Elk bedieningselement is bereikbaar via de aanwijzer of het toetsenbord.
De applicaties
- UnoWord, UnoCalc, UnoShow: Een Office 97-klasse suite die de echte binaire Microsoft-formaten (.doc, .xls, .ppt) leest en schrijft via de in-tree
unodoc bibliotheek.
- Browser: Rendering van HTML, Markdown en CSS met cookies, cache, zoek- en opslagfuncties, HTTP en CA-gevalideerde TLS 1.2 HTTPS. Er zijn twee schakelbare JavaScript-engines: de in-tree
unojs bytecode VM en de vendored quickjs-ng, met een optie voor een layout-engine op basis van libcss.
- Studio: Een IDE die op het OS zelf draait, met syntax highlighting, een build-and-run loop, een AI-assistent en UnoC, een ingebouwde C-compiler die native UnoDOS-apps compileert op UnoDOS.
- Python: MicroPython als first-class runtime (
PYRT.UNO) met een uno-API voor de shell, het bestandssysteem en het netwerk.
- Music, UnoAmp, Photos: Zelfgeschreven WAV, MIDI, MP3 en AAC-LC decoders (
unomedia). UnoAmp is een Winamp 2-kloon die klassieke skins laadt; Photos bekijkt gangbare afbeeldingsformaten.
- SSH: Een native SSH-client (ed25519, in-tree crypto).
- Overige: Files, Editor, Paint, Tracker, Clock, Control Panel, System, een log-viewer, games (Dostris, Pac-Man, OutLast) en Runner3D (showcase voor de
uno3d 3D-bibliotheek).
Apps zijn loadbare .UNO modules met eigen descriptoren. Door er één in APPS\ te plaatsen, ontdekt de shell deze automatisch zonder dat een rebuild of reboot nodig is.
Eigen hardwareondersteuning
Alles onder de firmware-lijn is native geschreven voor deze bronboom:
- Opslag: AHCI, NVMe, SDHCI/eMMC en USB mass storage onder een gemeenschappelijke block-layer, een native FAT16/FAT32 driver, en GPT/ESP authoring.
- USB: Een polled xHCI host stack met hubs, HID-toetsenborden en -muizen, mass storage en USB Ethernet (ASIX AX88179, Realtek RTL8152).
- Netwerken: Bekabelde NIC's (Intel e1000/e1000e/igb, Realtek r8169) en Wi-Fi (Intel, Realtek, Marvell drivers) met WPA2, over een vanaf nul gebouwde TCP/IP-stack: ARP, IPv4, ICMP, UDP, TCP, DHCP, DNS, TLS (BearSSL), sockets en syslog.
- Input: PS/2, I2C-HID (native laptop trackpads) en USB HID.
- Audio: Intel HDA met AC'97 fallback naar een 48 kHz DMA ring.
- ACPI: Een in-tree AML interpreter (
unoacpi).
Hypervisor
unovirt start VMX-operaties op Intel-hardware en draait guests achter EPT met virtio-apparaten. Een echte Ubuntu-kernel boot onder UnoDOS, bereikt de userspace, reageert in de shell en mount een ext4-schijf die wordt geserveerd vanuit een bestand op een UnoDOS-volume. De Appliances-app en VM-manager beheren dit; een AMD/SVM-backend is geschreven en wacht op hardware-bewijs.
Installatie, beheer en automatisering
- Installer: Niet-destructieve installatie op de ESP van een bestaande schijf, of een volledige disk-clone. Een draaiende machine kan ook via het netwerk worden herinstalled.
- unosecure: Lokale accounts, RBAC en een audit trail.
- URC: Een remote-control kanaal (fail-closed verb gate, one-time console arming) dat machines headless aanstuurt voor het deployen van builds, uitvoeren van tests en streamen van het scherm.
- Debug builds: Een gedragsspecificatie (
pc64/SPEC.md) uitgevoerd als een on-metal conformance test, inclusief watchdogs, fault telemetry en een stress-harness.
Bewezen op echte machines
Gevalideerd op een Lenovo ThinkPad X1 Carbon Gen 8 (native trackpad, Wi-Fi, live thema- en resolutiewisselingen), op een always-on ZimaBlade testbox (boot vanaf USB, detacheert van de firmware, draait volledig native), en op QEMU+OVMF harnesses. De design notes in pc64/README.md documenteren de firmware-traps die alleen echte hardware blootlegt.
Bouwen
sudo apt install gcc-mingw-w64-x86-64 qemu-system-x86 ovmf python3 python3-pil
cd pc64
./build.sh # -> build/esp/EFI/BOOT/BOOTX64.EFI
./build.sh run # boot it in QEMU+OVMF
De volledige port bouwt met standaardpakketten, zonder EDK2. Zie pc64/DEVELOPMENT.md voor de setup van Linux- en Windows-omgevingen en pc64/README.md voor de volledige architectuurtour.
De familie
Eén contract, vele werelden
UnoDOS 3.1 is contract-gestuurd: één machine-leesbaar Contract (unodef/) definieert de schermgeometrie, de window- en event-layout en de gedeelde enums. Elke wereld wordt hiervan gegenereerd of hieraan getoetst. De assembly-poorten en de x86-referentie consumeren dit byte-identiek. Elf poorten zijn vers gebouwd op de 3.1-architectuur in plaats van gemigreerd, wat bewijst dat een nieuw doelplatform slechts een klein gegenereerd oppervlak kost. Zie docs/UNODOS-3.1-MIGRATION.md en docs/CONTRACT-ARCH.md.
De poorten
Elke poort boot een UnoDOS-desktop met de gedeelde app-set: Files, Notepad, Music, Theme, Tracker, Paint en de games (Dostris, OutLast, Pac-Man), geschaald naar wat de machine aankan (tot een launcher-profiel op 2 KB RAM). Een feature-by-feature vergelijking staat in docs/FEATURE-MATRIX.md.
Homecomputers
| Port | CPU | Highlights |
| IBM PC/XT (x86) | 8088+ | De referentie OS; � |
| echte hardware, incl. cycle-accurate 8088 |
| Amiga | 68000 | Self-booting ADF, copper/bitplanes, Paula audio, disk-loaded apps, PC-uitwisselbare FAT12 |
| Commodore 64 | 6510 | Hi-res bitmap desktop met per-cel kleur, SID, CIA TOD clock, alle apps disk-loaded |
| VIC-20 | 6502 | Verse 3.1 wereld op de 22×23 character matrix |
| Apple II | 6502 | Eigen GCR 6-and-2 RWTS, hi-res renderer, disk-loaded apps |
| Apple IIGS | 65C816 | Super Hi-Res desktop, Ensoniq DOC audio, FAT12 over SmartPort, volledige app-pariteit |
| Mac System 1–7 | 68000+ | Hosted Toolbox port (1-bit en Color QuickDraw), app-free core, loadbare modules |
| MacPlus (standalone) | 68000 | Bare-metal: eigen boot blocks, drivers en renderer. � |
| echte Mac SE |
| PowerPC Mac | PPC G3/G4 | Open Firmware client, de eerste big-endian PowerPC wereld |
Consoles en handhelds
| Port | CPU | Highlights |
| Sega Genesis | 68000 | VDP tile desktop, SRAM/tape/Sega-CD storage. � |
| boot op echte hardware |
| Super Nintendo | 65816 | Shadow+DMA tilemap model, SPC700 audio driver. 🟡 conditionele pass op clone hardware |
| NES | 6502 | 2 KB RAM. � |
| gevalideerd op een echte AV Famicom |
| PC Engine | HuC6280 | � |
| gevalideerd op een Turbo EverDrive |
| Master System / Game Gear | Z80 | De eerste contract-gestuurde port en zijn 12-bit-kleur broeder |
| Game Boy / Color | SM83 | Eén ROM boot zowel DMG greyscale als GBC colour |
| Game Boy Advance | ARM7TDMI | De eerste ARM wereld, op een Mode-3 framebuffer |
| WonderSwan | V30MZ | De eerste x86 handheld |
| PlayStation 2 | R5900 | Portable C core over de Graphics Synthesizer; memory-card storage, USB input |
| Dreamcast | SH-4 | Zelfde C core over PowerVR2; VMU storage; 60 fps in Flycast |
Boards en mobiel
| Port | CPU | Highlights |
| Raspberry Pi | AArch64 | De eerste 64-bit wereld, op de VideoCore mailbox framebuffer |
| PinePhone | AArch64 | Portret 480×640 op de Allwinner DE2, self-booting microSD |
Verschillende poorten zijn gevalideerd op echte hardware (NES, PC Engine, Genesis, Mac SE, de x86-lijn, pc64's laptop- en SBC-vloot); de rest is geverifieerd in emulators of op ROM-vrije instruction-level harnesses (Unicorn, py65, een vanaf nul gebouwde 65816 core), waardoor er geen propriëtaire ROM's nodig zijn om iets te bouwen of testen.
Het klassieke OS (de x86-referentie)
De originele UnoDOS 3: een GUI-first OS voor IBM PC XT-compatibelen, volledig geschreven in real-mode x86 assembly. Geen DOS, geen runtime, enkel de BIOS en een Intel 8088 of later.
- Boot vanaf een 1,44 MB diskette (of harde schijf, CompactFlash, USB) direct naar een vensterdesktop met sleepbare iconen, muisondersteuning en een z-ordered windowmanager voor 16 vensters.
- Een kernel van circa 46 KB die 106 systeemoproepen exposeert via
INT 0x80: graphics in vier videomodi (CGA 320×200 tot VESA 640×480), een GUI-toolkit met 15 widgets, FAT12 en FAT16 lees/schrijf, coöperatieve multitasking (5 gelijktijdige apps plus de shell in 640 KB), een systeemklembord, drie bitmap-lettertypen en PC-speaker audio.
- 19 applicaties, van een volledige teksteditor en bestandsbeheerder tot Paint, Tracker, Settings, een boot-floppy creator en drie games.
- Draait met volledige feature-pariteit op een genuine 8088 op 4,77 MHz, geverifieerd op een cycle-accurate XT (Microsoft seriemuis op COM1, XT-IDE CompactFlash boot) en op echte hardware van een 386SX tot een Atom netbook. Zie
docs/PORT-8088.md.
Bouwen en uitvoeren:
sudo apt install nasm qemu-system-x86 make python3
make floppy144 # build/unodos-144.img, een bootbare FAT12 floppy
make run144 # boot it in QEMU
make hd-image bouwt de 64 MB FAT16 hard-drive image. tools/write.ps1 schrijft images naar fysieke media op Windows, en dd doet dit op Linux.
Apps zijn platte NASM-binaries in hun eigen 64 KB segmenten; een minimale windowed app is ongeveer 60 regels. Start met de app-ontwikkelingsgids, de API-referentie (alle 106 calls met register-level detail) en docs/ARCHITECTURE.md.
Gedeelde subsystemen
De poorten blijven klein omdat de zware mechanismen worden gedeeld:
| Bibliotheek | Beschrijving |
| unodef | Het Contract: één machine-leesbare definitie waar elke wereld van is gegenereerd |
| unoui | Cross-platform widget toolkit en thema's (docs/UNOUI.md) |
| uno3d | Portable 3D pipeline met software, PS2 GS en Dreamcast PVR backends (docs/UNO3D.md) |
| unomedia | Beeld- en audiodecoders (WAV, MIDI, MP3, AAC-LC en gangbare afbeeldingsformaten), vanaf nul gebouwd |
| unodoc | Microsoft binaire documentformaten: CFB en .doc/.xls/.ppt, lezen en schrijven |
| unonet | De netwerkstack waar de pc64-drivers in voeden |
| unojs / unoweb | JavaScript engine en DOM/HTML/CSS layout engine |
| unofs, unosound, unosched, unobus, unoacpi | Bestandssystemen, audio-sequencing, scheduling, bussen, ACPI |
Repositories en branches
- master (hmofet/unodos): De voorwaartse, contract-gestuurde lijn en de thuisbasis van pc64. Alle huidige ontwikkeling vindt hier plaats.
- hmofet/unodos-3-legacy: Het originele, verschepende en op echte hardware gevalideerde OS en zijn poorten (tag
legacy-pre-3.1). Bevroren en gearchiveerd, "known-good".
Documentatie
- Gebruikershandleiding: Installatie, desktop, apps, netwerken, appliances en de ontwikkelaarsgids.
- docs/: Architectuur, API-referentie, port spec, feature matrix, storage en boot-chain internals, en de plan- en handoff-documenten per subsysteem.
- CHANGELOG.md: De volledige geschiedenis, 425+ builds. Huidige versie: v3.34.0.
- AGENTS.md en CONTRIBUTING.md: Hoe bijdragen aan deze boom werkt.
Licentie
Copyright (c) 2026 Arin Bakht. Dit project is gelicenseerd onder de Mozilla Public License 2.0 (MPL 2.0).
- Gebruik: Gratis, inclusief commercieel, zonder royalty's.
- Inspectie: De volledige broncode is hier beschikbaar en zal dat blijven.
- Modificatie: Toegestaan, maar als u een gewijzigde versie van een bestand uit dit project distribueert, moet de bron van dat bestand worden gepubliceerd onder MPL 2.0. UnoDOS kan niet privé worden gemaakt.
- Grotere werken: U mag UnoDOS combineren met eigen propriëtaire code en het gecombineerde werk licentiëren naar eigen inzicht. Alleen de UnoDOS-bestanden blijven MPL.
- Attributie: Vereist; behoud de copyright-notitie en de licentietekst.
Componenten van derden behouden hun eigen licenties (MIT, Apache-2.0, BSD-3-Clause, public domain, en CC BY voor twee lettertypen). Elk hiervan is vermeld in THIRD-PARTY.md.