# eliaslucky/posix-and-dos-computers-mod architecture

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

- Interactive diagram: https://gitdiagram.com/eliaslucky/posix-and-dos-computers-mod
- Repository: https://github.com/eliaslucky/posix-and-dos-computers-mod

## Overview

POSIX and DOS Computers is a Minecraft mod that turns in-world computer blocks into retro operating environments, including DOS, UNIX/Linux-style shells, and QBasic. The main user workflow is to interact with a computer terminal, boot or configure its machine, enter commands, and receive terminal output; commands may run through shell pipelines and redirections. The product also includes virtual filesystems, BIOS setup, terminal applications, and peripheral drivers. The graph reflects documented capabilities and sampled shell/network code; unsampled runtime wiring is omitted where it cannot be confirmed.

Main entry points: [`src/main/java/com/eliaslucky/mc_dos/client/ComputerTerminalScreen.java`](https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/client/ComputerTerminalScreen.java) (Terminal screen), [`src/main/java/com/eliaslucky/mc_dos/api/shell/PipelineExecutor.java`](https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/api/shell/PipelineExecutor.java) (Pipeline executor), [`src/main/java/com/eliaslucky/mc_dos/blocks/computer/ComputerBlockEntity.java`](https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/blocks/computer/ComputerBlockEntity.java) (Computer block entity), [`src/main/java/com/eliaslucky/mc_dos/client/apps/qbasic/QBasicApplication.java`](https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/client/apps/qbasic/QBasicApplication.java) (QBasic application)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_machines["Computer Runtime"]
  node_computer["Computer block entity"]
  node_bios["BIOS and setup"]
  node_os["OS kernels"]
  node_processors["Command processors"]
  node_executables["Executable formats"]
end

subgraph group_shell["Shell And Files"]
  node_pipeline["Pipeline executor"]
  node_pipeline_data["Pipeline stages<br/>[Pipeline.java]"]
  node_stream_resolver["Stream resolver"]
  node_vfs["Virtual filesystem"]
  node_media["Removable media"]
end

subgraph group_apps["Terminal Applications"]
  node_qbasic_app["QBasic application"]
  node_qbasic_runtime["QBasic interpreter"]
  node_apps_registry["Terminal app registry"]
  node_bios_apps["BIOS setup apps"]
end

subgraph group_hardware["Hardware And Drivers"]
  node_bus["Peripheral bus"]
  node_drivers["Driver registry"]
  node_device_tables["OS device tables"]
  node_mccmd["Minecraft command peripheral"]
end

subgraph group_clientnet["Client And Network"]
  node_terminal["Terminal screen"]
  node_terminal_output["Terminal output packet"]
  node_terminal_state["Terminal state packet"]
  node_file_result["File write result packet"]
end

node_player(("Minecraft player"))

node_player -->|"interacts with"| node_terminal
node_pipeline -->|"executes stages"| node_pipeline_data
node_pipeline -->|"reads and writes streams"| node_stream_resolver
node_pipeline -->|"dispatches commands"| node_computer
node_computer -->|"selects processor"| node_processors
node_qbasic_app -->|"runs BASIC"| node_qbasic_runtime
node_terminal_output -->|"appends output"| node_terminal
node_terminal_state -->|"updates state"| node_terminal
node_file_result -->|"reports write result"| node_terminal

click node_computer "https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/blocks/computer/ComputerBlockEntity.java"
click node_bios "https://github.com/eliaslucky/posix-and-dos-computers-mod/tree/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/blocks/computer/bios"
click node_os "https://github.com/eliaslucky/posix-and-dos-computers-mod/tree/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/blocks/computer/kernel"
click node_processors "https://github.com/eliaslucky/posix-and-dos-computers-mod/tree/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/blocks/computer/processors"
click node_terminal "https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/client/ComputerTerminalScreen.java"
click node_pipeline "https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/api/shell/PipelineExecutor.java"
click node_pipeline_data "https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/api/shell/Pipeline.java"
click node_stream_resolver "https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/api/shell/StreamResolver.java"
click node_vfs "https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/blocks/computer/VirtualFileSystem.java"
click node_media "https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/items/RemovableMediaItem.java"
click node_executables "https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/api/exec/ExecutableRegistry.java"
click node_qbasic_app "https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/client/apps/qbasic/QBasicApplication.java"
click node_qbasic_runtime "https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/blocks/computer/basic/QBasicInterpreter.java"
click node_apps_registry "https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/client/apps/TerminalApplicationRegistry.java"
click node_bios_apps "https://github.com/eliaslucky/posix-and-dos-computers-mod/tree/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/client/apps/bios"
click node_bus "https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/blocks/computer/bus/AdjacentBlocksBus.java"
click node_drivers "https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/api/hardware/DriverRegistry.java"
click node_device_tables "https://github.com/eliaslucky/posix-and-dos-computers-mod/tree/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/blocks/computer/kernel"
click node_mccmd "https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/blocks/peripheral/mccmd/MinecraftCommandTranslatorBlockEntity.java"
click node_terminal_output "https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/network/ClientboundTerminalOutputPacket.java"
click node_terminal_state "https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/network/ClientboundTerminalStatePacket.java"
click node_file_result "https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/network/ClientboundFileWriteResultPacket.java"

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_computer,node_bios,node_os,node_processors,node_executables toneBlue
class node_pipeline,node_pipeline_data,node_stream_resolver,node_vfs,node_media toneAmber
class node_qbasic_app,node_qbasic_runtime,node_apps_registry,node_bios_apps toneMint
class node_bus,node_drivers,node_device_tables,node_mccmd toneRose
class node_terminal,node_terminal_output,node_terminal_state,node_file_result,node_player toneIndigo
```

## Components

### Computer Runtime

- [Computer block entity](https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/blocks/computer/ComputerBlockEntity.java): `src/main/java/com/eliaslucky/mc_dos/blocks/computer/ComputerBlockEntity.java`
- [BIOS and setup](https://github.com/eliaslucky/posix-and-dos-computers-mod/tree/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/blocks/computer/bios): `src/main/java/com/eliaslucky/mc_dos/blocks/computer/bios`
- [OS kernels](https://github.com/eliaslucky/posix-and-dos-computers-mod/tree/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/blocks/computer/kernel): `src/main/java/com/eliaslucky/mc_dos/blocks/computer/kernel`
- [Command processors](https://github.com/eliaslucky/posix-and-dos-computers-mod/tree/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/blocks/computer/processors): `src/main/java/com/eliaslucky/mc_dos/blocks/computer/processors`
- [Executable formats](https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/api/exec/ExecutableRegistry.java): `src/main/java/com/eliaslucky/mc_dos/api/exec/ExecutableRegistry.java`

### Shell And Files

- [Pipeline executor](https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/api/shell/PipelineExecutor.java): `src/main/java/com/eliaslucky/mc_dos/api/shell/PipelineExecutor.java`
- [Pipeline stages](https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/api/shell/Pipeline.java): `src/main/java/com/eliaslucky/mc_dos/api/shell/Pipeline.java`
- [Stream resolver](https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/api/shell/StreamResolver.java): `src/main/java/com/eliaslucky/mc_dos/api/shell/StreamResolver.java`
- [Virtual filesystem](https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/blocks/computer/VirtualFileSystem.java): `src/main/java/com/eliaslucky/mc_dos/blocks/computer/VirtualFileSystem.java`
- [Removable media](https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/items/RemovableMediaItem.java): `src/main/java/com/eliaslucky/mc_dos/items/RemovableMediaItem.java`

### Terminal Applications

- [QBasic application](https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/client/apps/qbasic/QBasicApplication.java): `src/main/java/com/eliaslucky/mc_dos/client/apps/qbasic/QBasicApplication.java`
- [QBasic interpreter](https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/blocks/computer/basic/QBasicInterpreter.java): `src/main/java/com/eliaslucky/mc_dos/blocks/computer/basic/QBasicInterpreter.java`
- [Terminal app registry](https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/client/apps/TerminalApplicationRegistry.java): `src/main/java/com/eliaslucky/mc_dos/client/apps/TerminalApplicationRegistry.java`
- [BIOS setup apps](https://github.com/eliaslucky/posix-and-dos-computers-mod/tree/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/client/apps/bios): `src/main/java/com/eliaslucky/mc_dos/client/apps/bios`

### Hardware And Drivers

- [Peripheral bus](https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/blocks/computer/bus/AdjacentBlocksBus.java): `src/main/java/com/eliaslucky/mc_dos/blocks/computer/bus/AdjacentBlocksBus.java`
- [Driver registry](https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/api/hardware/DriverRegistry.java): `src/main/java/com/eliaslucky/mc_dos/api/hardware/DriverRegistry.java`
- [OS device tables](https://github.com/eliaslucky/posix-and-dos-computers-mod/tree/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/blocks/computer/kernel): `src/main/java/com/eliaslucky/mc_dos/blocks/computer/kernel`
- [Minecraft command peripheral](https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/blocks/peripheral/mccmd/MinecraftCommandTranslatorBlockEntity.java): `src/main/java/com/eliaslucky/mc_dos/blocks/peripheral/mccmd/MinecraftCommandTranslatorBlockEntity.java`

### Client And Network

- [Terminal screen](https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/client/ComputerTerminalScreen.java): `src/main/java/com/eliaslucky/mc_dos/client/ComputerTerminalScreen.java`
- [Terminal output packet](https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/network/ClientboundTerminalOutputPacket.java): `src/main/java/com/eliaslucky/mc_dos/network/ClientboundTerminalOutputPacket.java`
- [Terminal state packet](https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/network/ClientboundTerminalStatePacket.java): `src/main/java/com/eliaslucky/mc_dos/network/ClientboundTerminalStatePacket.java`
- [File write result packet](https://github.com/eliaslucky/posix-and-dos-computers-mod/blob/mc1.20.1/release/src/main/java/com/eliaslucky/mc_dos/network/ClientboundFileWriteResultPacket.java): `src/main/java/com/eliaslucky/mc_dos/network/ClientboundFileWriteResultPacket.java`

### Other components

- **Minecraft player**

## Connections

- Minecraft player → Terminal screen: interacts with
- Pipeline executor → Pipeline stages: executes stages
- Pipeline executor → Stream resolver: reads and writes streams
- Pipeline executor → Computer block entity: dispatches commands
- Computer block entity → Command processors: selects processor
- QBasic application → QBasic interpreter: runs BASIC
- Terminal output packet → Terminal screen: appends output
- Terminal state packet → Terminal screen: updates state
- File write result packet → Terminal screen: reports write result
