# prox2011/x16-pros architecture

> Architecture diagram of the GitHub repository prox2011/x16-pros, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/prox2011/x16-pros
- Repository: https://github.com/prox2011/x16-pros

## Overview

x16-PRos is a real-mode 16-bit x86 operating system. Its main user workflow is booting into the system, interacting through its terminal or GUI, then launching bundled applications or compatible DOS programs; setup and configuration personalize the installation. The README documents FAT12, multitasking PLE applications, native assembly, graphics, sound, mouse, and multiple-drive support. Some subsystem links reflect documented capabilities and directory layout; source excerpts were limited to utility scripts, so uncertain internal call paths are omitted.

Main entry points: [`src/kernel/kernel.asm`](https://github.com/prox2011/x16-pros/blob/main/src/kernel/kernel.asm) (Kernel), [`programs`](https://github.com/prox2011/x16-pros/tree/main/programs) (Bundled programs), [`src/bootloader/boot.asm`](https://github.com/prox2011/x16-pros/blob/main/src/bootloader/boot.asm) (Bootloader), [`src/kernel/init.asm`](https://github.com/prox2011/x16-pros/blob/main/src/kernel/init.asm) (System initialization)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_bootcore["Boot and kernel"]
  node_boot["Bootloader<br/>[boot.asm]"]
  node_kernel["Kernel<br/>[kernel.asm]"]
  node_init["System initialization<br/>[init.asm]"]
end

subgraph group_interfaces["User interfaces"]
  node_terminal["Terminal interface"]
  node_gui["PLE GUI"]
  node_setup["First-boot setup"]
end

subgraph group_runtime["Program runtime"]
  node_scheduler["PLE scheduler<br/>[sched.asm]"]
  node_ple["PLE runtime<br/>[ple.asm]"]
  node_com["COM compatibility<br/>[com.asm]"]
  node_exe["EXE compatibility<br/>[exe.asm]"]
  node_assembler["Native assembler<br/>[prasm.asm]"]
end

subgraph group_system["System services"]
  node_filesystem["FAT12 filesystem<br/>[fs.asm]"]
  node_systemapi["System API"]
  node_configuration["Configuration"]
  node_mouse["Mouse driver<br/>[ps2_mouse.asm]"]
  node_sound["Sound services<br/>[speaker.asm]"]
end

subgraph group_suite["Programs and assets"]
  node_launcher["Program launcher<br/>[launch.asm]"]
  node_apps["Bundled programs"]
  node_themes["Themes and fonts"]
  node_media["Audio and image assets"]
end

node_user(("User"))
node_hardware(("PC hardware"))

node_hardware -->|"boots from"| node_boot
node_boot -->|"loads"| node_kernel
node_kernel -->|"starts"| node_init
node_user -->|"interacts"| node_terminal
node_user -->|"configures"| node_setup
node_terminal -->|"launches"| node_launcher
node_launcher -->|"starts"| node_apps
node_kernel -->|"uses"| node_filesystem
node_kernel -->|"provides"| node_systemapi
node_init -->|"loads"| node_configuration
node_kernel -->|"supports"| node_scheduler
node_scheduler -->|"schedules"| node_ple
node_ple -->|"runs windowed"| node_gui
node_kernel -->|"supports"| node_com
node_kernel -->|"supports"| node_exe
node_apps -->|"includes"| node_assembler
node_kernel -->|"uses"| node_mouse
node_kernel -->|"provides"| node_sound
node_apps -->|"uses"| node_themes
node_apps -->|"uses"| node_media
node_mouse -->|"reads input"| node_hardware
node_sound -->|"outputs audio"| node_hardware

click node_boot "https://github.com/prox2011/x16-pros/blob/main/src/bootloader/boot.asm"
click node_kernel "https://github.com/prox2011/x16-pros/blob/main/src/kernel/kernel.asm"
click node_init "https://github.com/prox2011/x16-pros/blob/main/src/kernel/init.asm"
click node_terminal "https://github.com/prox2011/x16-pros/tree/main/src/kernel"
click node_gui "https://github.com/prox2011/x16-pros/tree/main/programs/PLE/src/gui"
click node_setup "https://github.com/prox2011/x16-pros/tree/main/programs/setup"
click node_filesystem "https://github.com/prox2011/x16-pros/blob/main/src/kernel/features/fs.asm"
click node_systemapi "https://github.com/prox2011/x16-pros/tree/main/src/kernel/features/api"
click node_configuration "https://github.com/prox2011/x16-pros/tree/main/src/kernel/configs"
click node_mouse "https://github.com/prox2011/x16-pros/blob/main/src/drivers/ps2_mouse.asm"
click node_sound "https://github.com/prox2011/x16-pros/blob/main/src/kernel/features/speaker.asm"
click node_scheduler "https://github.com/prox2011/x16-pros/blob/main/src/kernel/features/sched.asm"
click node_ple "https://github.com/prox2011/x16-pros/blob/main/src/kernel/features/ple/ple.asm"
click node_com "https://github.com/prox2011/x16-pros/blob/main/src/kernel/features/com/com.asm"
click node_exe "https://github.com/prox2011/x16-pros/blob/main/src/kernel/features/exe/exe.asm"
click node_assembler "https://github.com/prox2011/x16-pros/blob/main/programs/prasm.asm"
click node_launcher "https://github.com/prox2011/x16-pros/blob/main/programs/launch.asm"
click node_apps "https://github.com/prox2011/x16-pros/tree/main/programs"
click node_themes "https://github.com/prox2011/x16-pros/tree/main/assets/themes"
click node_media "https://github.com/prox2011/x16-pros/tree/main/assets"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_boot,node_kernel,node_init,node_user toneBlue
class node_terminal,node_gui,node_setup toneAmber
class node_scheduler,node_ple,node_com,node_exe,node_assembler toneMint
class node_filesystem,node_systemapi,node_configuration,node_mouse,node_sound toneRose
class node_launcher,node_apps,node_themes,node_media,node_hardware toneIndigo
```

## Components

### Boot and kernel

- [Bootloader](https://github.com/prox2011/x16-pros/blob/main/src/bootloader/boot.asm): `src/bootloader/boot.asm`
- [Kernel](https://github.com/prox2011/x16-pros/blob/main/src/kernel/kernel.asm): `src/kernel/kernel.asm`
- [System initialization](https://github.com/prox2011/x16-pros/blob/main/src/kernel/init.asm): `src/kernel/init.asm`

### User interfaces

- [Terminal interface](https://github.com/prox2011/x16-pros/tree/main/src/kernel): `src/kernel`
- [PLE GUI](https://github.com/prox2011/x16-pros/tree/main/programs/PLE/src/gui): `programs/PLE/src/gui`
- [First-boot setup](https://github.com/prox2011/x16-pros/tree/main/programs/setup): `programs/setup`

### Program runtime

- [PLE scheduler](https://github.com/prox2011/x16-pros/blob/main/src/kernel/features/sched.asm): `src/kernel/features/sched.asm`
- [PLE runtime](https://github.com/prox2011/x16-pros/blob/main/src/kernel/features/ple/ple.asm): `src/kernel/features/ple/ple.asm`
- [COM compatibility](https://github.com/prox2011/x16-pros/blob/main/src/kernel/features/com/com.asm): `src/kernel/features/com/com.asm`
- [EXE compatibility](https://github.com/prox2011/x16-pros/blob/main/src/kernel/features/exe/exe.asm): `src/kernel/features/exe/exe.asm`
- [Native assembler](https://github.com/prox2011/x16-pros/blob/main/programs/prasm.asm): `programs/prasm.asm`

### System services

- [FAT12 filesystem](https://github.com/prox2011/x16-pros/blob/main/src/kernel/features/fs.asm): `src/kernel/features/fs.asm`
- [System API](https://github.com/prox2011/x16-pros/tree/main/src/kernel/features/api): `src/kernel/features/api`
- [Configuration](https://github.com/prox2011/x16-pros/tree/main/src/kernel/configs): `src/kernel/configs`
- [Mouse driver](https://github.com/prox2011/x16-pros/blob/main/src/drivers/ps2_mouse.asm): `src/drivers/ps2_mouse.asm`
- [Sound services](https://github.com/prox2011/x16-pros/blob/main/src/kernel/features/speaker.asm): `src/kernel/features/speaker.asm`

### Programs and assets

- [Program launcher](https://github.com/prox2011/x16-pros/blob/main/programs/launch.asm): `programs/launch.asm`
- [Bundled programs](https://github.com/prox2011/x16-pros/tree/main/programs): `programs`
- [Themes and fonts](https://github.com/prox2011/x16-pros/tree/main/assets/themes): `assets/themes`
- [Audio and image assets](https://github.com/prox2011/x16-pros/tree/main/assets): `assets`

### Other components

- **User**
- **PC hardware**

## Connections

- PC hardware → Bootloader: boots from
- Bootloader → Kernel: loads
- Kernel → System initialization: starts
- User → Terminal interface: interacts
- User → First-boot setup: configures
- Terminal interface → Program launcher: launches
- Program launcher → Bundled programs: starts
- Kernel → FAT12 filesystem: uses
- Kernel → System API: provides
- System initialization → Configuration: loads
- Kernel → PLE scheduler: supports
- PLE scheduler → PLE runtime: schedules
- PLE runtime → PLE GUI: runs windowed
- Kernel → COM compatibility: supports
- Kernel → EXE compatibility: supports
- Bundled programs → Native assembler: includes
- Kernel → Mouse driver: uses
- Kernel → Sound services: provides
- Bundled programs → Themes and fonts: uses
- Bundled programs → Audio and image assets: uses
- Mouse driver → PC hardware: reads input
- Sound services → PC hardware: outputs audio
