Skip to content

Asuro Namespace Refactoring Plan

Overview

Refactor all source files under src/ to use dotted namespace conventions (without the asuro. prefix — it's implicit). After refactoring, the only file at the src/ root will be asuro.pas (the kernel entry point, currently kernel.pas). All other units move into namespaced subdirectories.

Goals

  • Clear, hierarchical namespacing for every unit
  • Separation of x86-specific code under arch/x86/ to support future architectures
  • Drivers remain under driver/ with full namespacing
  • Services (timer-driven kernel processes) separated from user apps
  • Structure supports future additions (e.g. src/wasm/wasm.*)

Conventions

Rule Example
All filenames are lowercase driver.bus.pci.pas
Unit name matches filename (minus .pas) unit driver.bus.pci;
Dots in the name reflect the folder hierarchy a.b.c.pas lives in src/a/b/
If a unit has sub-units, it lives one level up driver.bus.usb.pas in driver/bus/, sub-units in driver/bus/usb/
system.pas keeps its name (FPC compiler requirement) src/arch/x86/system.pas
No asuro. prefix — the repo context is implicit arch.x86.gdt not asuro.arch.x86.gdt

New Directory Structure

src/
├── asuro.pas                              # Kernel entry point (was kernel.pas)
│
├── arch/
│   └── x86/
│       ├── system.pas                     # FPC system unit (unchanged name, x86 asm)
│       ├── arch.x86.gdt.pas
│       ├── arch.x86.idt.pas
│       ├── arch.x86.irq.pas
│       ├── arch.x86.isr.pas
│       ├── arch.x86.cpu.pas
│       ├── arch.x86.util.pas              # x86 I/O: outb/inb, CLI/STI, TSC, BSOD
│       ├── arch.x86.multiboot.pas
│       ├── arch.x86.bda.pas               # BIOS Data Area
│       ├── arch.x86.v86.pas               # Virtual 8086 monitor
│       │
│       ├── boot/
│       │   └── stub.asm                   # Multiboot boot stub (NASM)
│       │
│       ├── fault/
│       │   ├── arch.x86.fault.pas
│       │   ├── arch.x86.fault.ace.pas
│       │   ├── arch.x86.fault.bpe.pas
│       │   ├── arch.x86.fault.btsse.pas
│       │   ├── arch.x86.fault.cfe.pas
│       │   ├── arch.x86.fault.csoe.pas
│       │   ├── arch.x86.fault.dbge.pas
│       │   ├── arch.x86.fault.dbz.pas
│       │   ├── arch.x86.fault.dfe.pas
│       │   ├── arch.x86.fault.gpf.pas
│       │   ├── arch.x86.fault.idoe.pas
│       │   ├── arch.x86.fault.iope.pas
│       │   ├── arch.x86.fault.mce.pas
│       │   ├── arch.x86.fault.nce.pas
│       │   ├── arch.x86.fault.nmie.pas
│       │   ├── arch.x86.fault.oobe.pas
│       │   ├── arch.x86.fault.pf.pas
│       │   ├── arch.x86.fault.sfe.pas
│       │   ├── arch.x86.fault.snpe.pas
│       │   └── arch.x86.fault.uie.pas
│       │
│       ├── isr/
│       │   ├── arch.x86.isr.types.pas
│       │   ├── arch.x86.isr.mgr.pas
│       │   ├── arch.x86.isr.ioapic.pas
│       │   ├── arch.x86.isr.tmr0.pas
│       │   ├── arch.x86.isr.tmr1.pas
│       │   └── arch.x86.isr.ps2keyboard.pas
│       │
│       ├── proc/
│       │   ├── arch.x86.proc.sched.pas
│       │   └── arch.x86.proc.loader.pas
│       │
│       └── memory/
│           ├── arch.x86.memory.physical.pas
│           └── arch.x86.memory.virtual.pas
│
├── boot/
│   ├── boot.splash.pas                   # Boot splash screen
│   └── splash_tga.asm                    # Splash TGA data (incbin)
│
├── core/
│   ├── core.version.pas                  # Was include/asuro.pas (build metadata)
│   ├── core.util.pas                     # Portable helpers (IntToStr, min/max, etc.)
│   ├── core.strings.pas
│   ├── core.rand.pas
│   ├── core.types.pas
│   │
│   ├── ds/
│   │   ├── core.ds.types.pas             # Was dstypes.pas
│   │   ├── core.ds.lists.pas
│   │   ├── core.ds.hashmap.pas
│   │   ├── core.ds.fifo.pas
│   │   ├── core.ds.cfifo.pas
│   │   ├── core.ds.cfifols.pas
│   │   ├── core.ds.lifo.pas
│   │   ├── core.ds.circ.pas
│   │   ├── core.ds.bheap.pas
│   │   ├── core.ds.minh.pas
│   │   ├── core.ds.maxh.pas
│   │   └── core.ds.prio.pas
│   │
│   ├── enc/
│   │   ├── core.enc.md5.pas
│   │   ├── core.enc.sha1.pas
│   │   ├── core.enc.base64.pas
│   │   └── core.enc.crc.pas
│   │
│   ├── fmt/
│   │   └── core.fmt.targa.pas
│   │
│   └── gfx/
│       ├── core.gfx.color.pas
│       ├── core.gfx.fonts.pas
│       └── core.gfx.texture.pas
│
├── io/
│   ├── io.stdio.pas
│   └── io.syslog.pas
│
├── debug/
│   └── debug.tracer.pas
│
├── memory/
│   └── memory.heap.pas                   # Was lmemorymanager.pas
│
├── proc/
│   ├── proc.mgr.pas                      # Was processmanager.pas
│   ├── proc.types.pas                    # Was proctypes.pas
│   └── proc.testprocs.pas               # Was testprocs.pas
│
├── svc/
│   ├── svc.gfxd.pas                     # Timer-driven display refresh daemon
│   └── svc.usbd.pas                     # Timer-driven USB hotplug daemon
│
├── driver/
│   ├── driver.mgr.pas                    # Was drivermanagement.pas
│   ├── driver.types.pas                  # Was driver/include/drivertypes.pas
│   ├── driver.net.pas                    # Was driver/net/l1/net.pas
│   ├── driver.video.pas                  # Was driver/video/video.pas
│   │
│   ├── bus/
│   │   ├── driver.bus.pci.pas
│   │   ├── driver.bus.usb.pas            # Was driver/bus/usb/USB.pas
│   │   └── usb/
│   │       ├── driver.bus.usb.types.pas
│   │       ├── driver.bus.usb.core.pas
│   │       ├── driver.bus.usb.hub.pas
│   │       ├── driver.bus.usb.uhci.pas
│   │       ├── driver.bus.usb.ohci.pas
│   │       ├── driver.bus.usb.ehci.pas
│   │       └── driver.bus.usb.xhci.pas
│   │
│   ├── hid/
│   │   ├── driver.hid.keyboard.pas
│   │   ├── driver.hid.mouse.pas
│   │   ├── ps2/
│   │   │   ├── driver.hid.ps2.keyboard.pas
│   │   │   └── driver.hid.ps2.mouse.pas
│   │   └── usb/
│   │       ├── driver.hid.usb.keyboard.pas
│   │       └── driver.hid.usb.mouse.pas
│   │
│   ├── io/
│   │   └── driver.io.serial.pas
│   │
│   ├── timer/
│   │   └── driver.timer.rtc.pas
│   │
│   ├── storage/
│   │   ├── driver.storage.mgr.pas        # Was storagemanager.pas
│   │   ├── driver.storage.types.pas      # Was storagetypes.pas
│   │   ├── driver.storage.test.pas       # Was storagetest.pas
│   │   ├── driver.storage.vfs.pas
│   │   ├── driver.storage.fdtable.pas
│   │   ├── driver.storage.filedispatch.pas
│   │   ├── driver.storage.iobuffer.pas
│   │   ├── driver.storage.iorequest.pas
│   │   │
│   │   ├── con/
│   │   │   ├── driver.storage.ctl.usb.pas     # Was usb_storage.pas
│   │   │   ├── driver.storage.ctl.ram.pas     # Was ramdrive.pas
│   │   │   │
│   │   │   ├── ahci/
│   │   │   │   ├── driver.storage.ctl.ahci.pas
│   │   │   │   └── driver.storage.ctl.ahci.types.pas
│   │   │   │
│   │   │   └── ide/
│   │   │       ├── driver.storage.ctl.ide.pas
│   │   │       ├── driver.storage.ctl.ide.types.pas
│   │   │       ├── driver.storage.ctl.ide.ata.pas
│   │   │       └── driver.storage.ctl.ide.atapi.pas
│   │   │
│   │   ├── fs/
│   │   │   ├── driver.storage.fs.mgr.pas
│   │   │   ├── driver.storage.fs.fat32.pas
│   │   │   ├── driver.storage.fs.asfs.pas
│   │   │   ├── driver.storage.fs.flatfs.pas
│   │   │   └── driver.storage.fs.iso9660.pas
│   │   │
│   │   └── vol/
│   │       ├── driver.storage.vol.mgr.pas     # Was volumemanager.pas
│   │       ├── driver.storage.vol.table.pas
│   │       ├── driver.storage.vol.mbr.pas
│   │       └── driver.storage.vol.gpt.pas
│   │
│   ├── net/
│   │   ├── driver.net.types.pas
│   │   ├── driver.net.util.pas
│   │   │
│   │   ├── proto/
│   │   │   ├── driver.net.proto.eth2.pas
│   │   │   ├── driver.net.proto.arp.pas
│   │   │   ├── driver.net.proto.ipv4.pas
│   │   │   ├── driver.net.proto.icmp.pas
│   │   │   ├── driver.net.proto.tcp.pas
│   │   │   ├── driver.net.proto.udp.pas
│   │   │   └── driver.net.proto.dhcp.pas
│   │   │
│   │   └── dev/
│   │       └── driver.net.dev.e1000.pas
│   │
│   ├── video/
│   │   ├── driver.video.types.pas
│   │   ├── driver.video.gpu.pas
│   │   ├── driver.video.vesa.pas
│   │   ├── driver.video.vesa8.pas
│   │   ├── driver.video.vesa16.pas
│   │   ├── driver.video.vesa24.pas
│   │   ├── driver.video.vesa32.pas
│   │   ├── driver.video.doublebuffer.pas
│   │   ├── driver.video.bga.pas
│   │   ├── driver.video.lvgl.pas
│   │   ├── driver.video.windows.pas
│   │   └── driver.video.desktop.pas
│   │
│   └── exp/
│       └── driver.exp.testdriver.pas
│
├── app/
│   ├── app.mgr.pas                       # Was progmanager.pas
│   ├── app.vterminal.pas
│   ├── app.base64.pas                    # Was base64_prog.pas
│   ├── app.md5sum.pas
│   ├── app.dhclient.pas
│   ├── app.vbeinfo.pas
│   ├── app.diskcmd.pas
│   ├── app.diskutil.pas
│   ├── app.edit.pas
│   ├── app.filepicker.pas
│   ├── app.inio.pas
│   ├── app.meminfo.pas
│   ├── app.notepad.pas
│   ├── app.partcmd.pas
│   ├── app.ping.pas
│   ├── app.setres.pas
│   ├── app.testcmd.pas
│   ├── app.uidebug.pas
│   ├── app.volcmd.pas
│   │
│   └── wasm/
│       ├── app.wasm.cleanup.pas
│       ├── app.wasm.io.pas
│       ├── app.wasm.runner.pas
│       └── app.wasm.shim.pas

Complete Rename Mapping

Root Entry Point

Old path New path Old unit New unit
kernel.pas asuro.pas kernel asuro

Architecture — x86 (arch/x86/)

Old path New path Old unit New unit
include/system.pas arch/x86/system.pas system system
gdt.pas arch/x86/arch.x86.gdt.pas gdt arch.x86.gdt
idt.pas arch/x86/arch.x86.idt.pas idt arch.x86.idt
irq.pas arch/x86/arch.x86.irq.pas irq arch.x86.irq
isr.pas arch/x86/arch.x86.isr.pas isr arch.x86.isr
cpu.pas arch/x86/arch.x86.cpu.pas cpu arch.x86.cpu
faults.pas arch/x86/fault/arch.x86.fault.pas faults arch.x86.fault
contextswitcher.pas arch/x86/proc/arch.x86.proc.sched.pas contextswitcher arch.x86.proc.sched
processloader.pas arch/x86/proc/arch.x86.proc.loader.pas processloader arch.x86.proc.loader
v86.pas arch/x86/arch.x86.v86.pas v86 arch.x86.v86
include/multiboot.pas arch/x86/arch.x86.multiboot.pas multiboot arch.x86.multiboot
include/bios_data_area.pas arch/x86/arch.x86.bda.pas bios_data_area arch.x86.bda
include/util.pas (x86 parts) arch/x86/arch.x86.util.pas util (partial) arch.x86.util
stub/stub.asm arch/x86/boot/stub.asm — —

Architecture — x86 Faults (arch/x86/fault/)

Old path New path Old unit New unit
fault/ACE.pas arch/x86/fault/arch.x86.fault.ace.pas ACE arch.x86.fault.ace
fault/BPE.pas arch/x86/fault/arch.x86.fault.bpe.pas BPE arch.x86.fault.bpe
fault/BTSSE.pas arch/x86/fault/arch.x86.fault.btsse.pas BTSSE arch.x86.fault.btsse
fault/CFE.pas arch/x86/fault/arch.x86.fault.cfe.pas CFE arch.x86.fault.cfe
fault/CSOE.pas arch/x86/fault/arch.x86.fault.csoe.pas CSOE arch.x86.fault.csoe
fault/DBGE.pas arch/x86/fault/arch.x86.fault.dbge.pas DBGE arch.x86.fault.dbge
fault/DBZ.pas arch/x86/fault/arch.x86.fault.dbz.pas DBZ arch.x86.fault.dbz
fault/DFE.pas arch/x86/fault/arch.x86.fault.dfe.pas DFE arch.x86.fault.dfe
fault/GPF.pas arch/x86/fault/arch.x86.fault.gpf.pas GPF arch.x86.fault.gpf
fault/IDOE.pas arch/x86/fault/arch.x86.fault.idoe.pas IDOE arch.x86.fault.idoe
fault/IOPE.pas arch/x86/fault/arch.x86.fault.iope.pas IOPE arch.x86.fault.iope
fault/MCE.pas arch/x86/fault/arch.x86.fault.mce.pas MCE arch.x86.fault.mce
fault/NCE.pas arch/x86/fault/arch.x86.fault.nce.pas NCE arch.x86.fault.nce
fault/NMIE.pas arch/x86/fault/arch.x86.fault.nmie.pas NMIE arch.x86.fault.nmie
fault/OOBE.pas arch/x86/fault/arch.x86.fault.oobe.pas OOBE arch.x86.fault.oobe
fault/PF.pas arch/x86/fault/arch.x86.fault.pf.pas PF arch.x86.fault.pf
fault/SFE.pas arch/x86/fault/arch.x86.fault.sfe.pas SFE arch.x86.fault.sfe
fault/SNPE.pas arch/x86/fault/arch.x86.fault.snpe.pas SNPE arch.x86.fault.snpe
fault/UIE.pas arch/x86/fault/arch.x86.fault.uie.pas UIE arch.x86.fault.uie

Architecture — x86 ISR (arch/x86/isr/)

Old path New path Old unit New unit
isr/isr_types.pas arch/x86/isr/arch.x86.isr.types.pas isr_types arch.x86.isr.types
isr/isrmanager.pas arch/x86/isr/arch.x86.isr.mgr.pas isrmanager arch.x86.isr.mgr
isr/ioapic.pas arch/x86/isr/arch.x86.isr.ioapic.pas ioapic arch.x86.isr.ioapic
driver/timers/TMR_0_ISR.pas arch/x86/isr/arch.x86.isr.tmr0.pas TMR_0_ISR arch.x86.isr.tmr0
driver/timers/TMR_1_ISR.pas arch/x86/isr/arch.x86.isr.tmr1.pas TMR_1_ISR arch.x86.isr.tmr1
driver/hid/ps2/ps2_keyboard_isr.pas arch/x86/isr/arch.x86.isr.ps2keyboard.pas ps2_keyboard_isr arch.x86.isr.ps2keyboard

Architecture — x86 Memory (arch/x86/memory/)

Old path New path Old unit New unit
pmemorymanager.pas arch/x86/memory/arch.x86.memory.physical.pas pmemorymanager arch.x86.memory.physical
vmemorymanager.pas arch/x86/memory/arch.x86.memory.virtual.pas vmemorymanager arch.x86.memory.virtual

Boot (boot/)

Old path New path Old unit New unit
prog/splash.pas boot/boot.splash.pas splash boot.splash
stub/splash_tga.asm boot/splash_tga.asm — —

Core Libraries (core/)

Old path New path Old unit New unit
include/asuro.pas core/core.version.pas asuro core.version
include/util.pas (portable parts) core/core.util.pas util (partial) core.util
include/strings.pas core/core.strings.pas strings core.strings
include/rand.pas core/core.rand.pas rand core.rand
include/types.pas core/core.types.pas types core.types
include/targa.pas core/fmt/core.fmt.targa.pas targa core.fmt.targa

Core — Data Structures (core/ds/)

Old path New path Old unit New unit
include/data_structures/dstypes.pas core/ds/core.ds.types.pas dstypes core.ds.types
include/lists.pas core/ds/core.ds.lists.pas lists core.ds.lists
include/hashmap.pas core/ds/core.ds.hashmap.pas hashmap core.ds.hashmap
include/data_structures/fifo.pas core/ds/core.ds.fifo.pas fifo core.ds.fifo
include/data_structures/cfifo.pas core/ds/core.ds.cfifo.pas cfifo core.ds.cfifo
include/data_structures/cfifols.pas core/ds/core.ds.cfifols.pas cfifols core.ds.cfifols
include/data_structures/lifo.pas core/ds/core.ds.lifo.pas lifo core.ds.lifo
include/data_structures/circ.pas core/ds/core.ds.circ.pas circ core.ds.circ
include/data_structures/bheap.pas core/ds/core.ds.bheap.pas bheap core.ds.bheap
include/data_structures/minh.pas core/ds/core.ds.minh.pas minh core.ds.minh
include/data_structures/maxh.pas core/ds/core.ds.maxh.pas maxh core.ds.maxh
include/data_structures/prio.pas core/ds/core.ds.prio.pas prio core.ds.prio

Core — Encoding / Hashing (core/enc/)

Old path New path Old unit New unit
include/md5.pas core/enc/core.enc.md5.pas md5 core.enc.md5
include/sha1.pas core/enc/core.enc.sha1.pas sha1 core.enc.sha1
include/base64.pas core/enc/core.enc.base64.pas base64 core.enc.base64
include/crc.pas core/enc/core.enc.crc.pas crc core.enc.crc

Core — Graphics (core/gfx/)

Old path New path Old unit New unit
include/color.pas core/gfx/core.gfx.color.pas color core.gfx.color
include/fonts.pas core/gfx/core.gfx.fonts.pas fonts core.gfx.fonts
include/texture.pas core/gfx/core.gfx.texture.pas texture core.gfx.texture

IO (io/)

Old path New path Old unit New unit
stdio.pas io/io.stdio.pas stdio io.stdio
syslog.pas io/io.syslog.pas syslog io.syslog

Debug (debug/)

Old path New path Old unit New unit
tracer.pas debug/debug.tracer.pas tracer debug.tracer

Memory (memory/)

Old path New path Old unit New unit
lmemorymanager.pas memory/memory.heap.pas lmemorymanager memory.heap

Process Management (proc/)

Old path New path Old unit New unit
processmanager.pas proc/proc.mgr.pas processmanager proc.mgr
include/proctypes.pas proc/proc.types.pas proctypes proc.types
testprocs.pas proc/proc.testprocs.pas testprocs proc.testprocs

Services (svc/)

Old path New path Old unit New unit
prog/graphicsrefresh.pas svc/svc.gfxd.pas graphicsrefresh svc.gfxd
prog/usbhotplug.pas svc/svc.usbd.pas usbhotplug svc.usbd

Driver Framework (driver/)

Old path New path Old unit New unit
drivermanagement.pas driver/driver.mgr.pas drivermanagement driver.mgr
driver/include/drivertypes.pas driver/driver.types.pas drivertypes driver.types

Driver — Bus (driver/bus/)

Old path New path Old unit New unit
driver/bus/PCI.pas driver/bus/driver.bus.pci.pas PCI driver.bus.pci
driver/bus/usb/USB.pas driver/bus/driver.bus.usb.pas USB driver.bus.usb
driver/bus/usb/usbtypes.pas driver/bus/usb/driver.bus.usb.types.pas usbtypes driver.bus.usb.types
driver/bus/usb/usbcore.pas driver/bus/usb/driver.bus.usb.core.pas usbcore driver.bus.usb.core
driver/bus/usb/usbhub.pas driver/bus/usb/driver.bus.usb.hub.pas usbhub driver.bus.usb.hub
driver/bus/usb/UHCI.pas driver/bus/usb/driver.bus.usb.uhci.pas UHCI driver.bus.usb.uhci
driver/bus/usb/OHCI.pas driver/bus/usb/driver.bus.usb.ohci.pas OHCI driver.bus.usb.ohci
driver/bus/usb/EHCI.pas driver/bus/usb/driver.bus.usb.ehci.pas EHCI driver.bus.usb.ehci
driver/bus/usb/XHCI.pas driver/bus/usb/driver.bus.usb.xhci.pas XHCI driver.bus.usb.xhci

Driver — HID (driver/hid/)

Old path New path Old unit New unit
driver/hid/keyboard.pas driver/hid/driver.hid.keyboard.pas keyboard driver.hid.keyboard
driver/hid/mouse.pas driver/hid/driver.hid.mouse.pas mouse driver.hid.mouse
driver/hid/ps2/ps2_keyboard.pas driver/hid/ps2/driver.hid.ps2.keyboard.pas ps2_keyboard driver.hid.ps2.keyboard
driver/hid/ps2/ps2_mouse.pas driver/hid/ps2/driver.hid.ps2.mouse.pas ps2_mouse driver.hid.ps2.mouse
driver/hid/usb/usb_keyboard.pas driver/hid/usb/driver.hid.usb.keyboard.pas usb_keyboard driver.hid.usb.keyboard
driver/hid/usb/usb_mouse.pas driver/hid/usb/driver.hid.usb.mouse.pas usb_mouse driver.hid.usb.mouse

Driver — IO (driver/io/)

Old path New path Old unit New unit
driver/io/serial.pas driver/io/driver.io.serial.pas serial driver.io.serial

Driver — Timer (driver/timer/)

Old path New path Old unit New unit
driver/timers/RTC.pas driver/timer/driver.timer.rtc.pas RTC driver.timer.rtc

Driver — Storage (driver/storage/)

Old path New path Old unit New unit
driver/storage/storagemanager.pas driver/storage/driver.storage.mgr.pas storagemanager driver.storage.mgr
driver/storage/storagetypes.pas driver/storage/driver.storage.types.pas storagetypes driver.storage.types
driver/storage/storagetest.pas driver/storage/driver.storage.test.pas storagetest driver.storage.test
driver/storage/vfs.pas driver/storage/driver.storage.vfs.pas vfs driver.storage.vfs
driver/storage/fdtable.pas driver/storage/driver.storage.fdtable.pas fdtable driver.storage.fdtable
filedispatch.pas driver/storage/driver.storage.filedispatch.pas filedispatch driver.storage.filedispatch
driver/storage/iobuffer.pas driver/storage/driver.storage.iobuffer.pas iobuffer driver.storage.iobuffer
driver/storage/iorequest.pas driver/storage/driver.storage.iorequest.pas iorequest driver.storage.iorequest

Driver — Storage — Controllers (driver/storage/ctl/)

Old path New path Old unit New unit
driver/storage/usb_storage.pas driver/storage/ctl/driver.storage.ctl.usb.pas usb_storage driver.storage.ctl.usb
driver/storage/ramdrive.pas driver/storage/ctl/driver.storage.ctl.ram.pas ramdrive driver.storage.ctl.ram

Driver — Storage — Controllers — AHCI (driver/storage/ctl/ahci/)

Old path New path Old unit New unit
driver/storage/AHCI/AHCI.pas driver/storage/ctl/ahci/driver.storage.ctl.ahci.pas AHCI driver.storage.ctl.ahci
driver/storage/AHCI/AHCITypes.pas driver/storage/ctl/ahci/driver.storage.ctl.ahci.types.pas AHCITypes driver.storage.ctl.ahci.types

Driver — Storage — Controllers — IDE (driver/storage/ctl/ide/)

Old path New path Old unit New unit
driver/storage/IDE/IDE.pas driver/storage/ctl/ide/driver.storage.ctl.ide.pas IDE driver.storage.ctl.ide
driver/storage/IDE/idetypes.pas driver/storage/ctl/ide/driver.storage.ctl.ide.types.pas idetypes driver.storage.ctl.ide.types
driver/storage/IDE/ata.pas driver/storage/ctl/ide/driver.storage.ctl.ide.ata.pas ata driver.storage.ctl.ide.ata
driver/storage/IDE/atapi.pas driver/storage/ctl/ide/driver.storage.ctl.ide.atapi.pas atapi driver.storage.ctl.ide.atapi

Driver — Storage — Filesystems (driver/storage/fs/)

Old path New path Old unit New unit
driver/storage/Filesystems/filesystemmanager.pas driver/storage/fs/driver.storage.fs.mgr.pas filesystemmanager driver.storage.fs.mgr
driver/storage/Filesystems/fat32.pas driver/storage/fs/driver.storage.fs.fat32.pas fat32 driver.storage.fs.fat32
driver/storage/Filesystems/asfs.pas driver/storage/fs/driver.storage.fs.asfs.pas asfs driver.storage.fs.asfs
driver/storage/Filesystems/flatfs.pas driver/storage/fs/driver.storage.fs.flatfs.pas flatfs driver.storage.fs.flatfs
driver/storage/Filesystems/iso9660.pas driver/storage/fs/driver.storage.fs.iso9660.pas iso9660 driver.storage.fs.iso9660

Driver — Storage — Volume (driver/storage/vol/)

Old path New path Old unit New unit
driver/storage/volumemanager.pas driver/storage/vol/driver.storage.vol.mgr.pas volumemanager driver.storage.vol.mgr
driver/storage/partitiontable.pas driver/storage/vol/driver.storage.vol.table.pas partitiontable driver.storage.vol.table
driver/storage/MBR.pas driver/storage/vol/driver.storage.vol.mbr.pas MBR driver.storage.vol.mbr
driver/storage/gpt.pas driver/storage/vol/driver.storage.vol.gpt.pas gpt driver.storage.vol.gpt

Driver — Network (driver/net/)

Old path New path Old unit New unit
driver/net/l1/net.pas driver/driver.net.pas net driver.net
driver/net/include/nettypes.pas driver/net/driver.net.types.pas nettypes driver.net.types
driver/net/include/netutils.pas driver/net/driver.net.util.pas netutils driver.net.util
driver/net/l2/eth2.pas driver/net/proto/driver.net.proto.eth2.pas eth2 driver.net.proto.eth2
driver/net/l3/arp.pas driver/net/proto/driver.net.proto.arp.pas arp driver.net.proto.arp
driver/net/l3/ipv4.pas driver/net/proto/driver.net.proto.ipv4.pas ipv4 driver.net.proto.ipv4
driver/net/l4/icmp.pas driver/net/proto/driver.net.proto.icmp.pas icmp driver.net.proto.icmp
driver/net/l4/tcp.pas driver/net/proto/driver.net.proto.tcp.pas tcp driver.net.proto.tcp
driver/net/l4/udp.pas driver/net/proto/driver.net.proto.udp.pas udp driver.net.proto.udp
driver/net/l5/dhcp.pas driver/net/proto/driver.net.proto.dhcp.pas dhcp driver.net.proto.dhcp

Note: The old layer folders (l1/, l2/, l3/, l4/, l5/, include/) are now grouped under proto/ — protocol names are self-descriptive.

Driver — Network Device (driver/net/dev/)

Old path New path Old unit New unit
driver/netdev/E1000.pas driver/net/dev/driver.net.dev.e1000.pas E1000 driver.net.dev.e1000

Driver — Video (driver/video/)

Old path New path Old unit New unit
driver/video/video.pas driver/driver.video.pas video driver.video
driver/video/videotypes.pas driver/video/driver.video.types.pas videotypes driver.video.types
driver/video/gpu.pas driver/video/driver.video.gpu.pas gpu driver.video.gpu
driver/video/vesa.pas driver/video/driver.video.vesa.pas vesa driver.video.vesa
driver/video/vesa8.pas driver/video/driver.video.vesa8.pas vesa8 driver.video.vesa8
driver/video/vesa16.pas driver/video/driver.video.vesa16.pas vesa16 driver.video.vesa16
driver/video/vesa24.pas driver/video/driver.video.vesa24.pas vesa24 driver.video.vesa24
driver/video/vesa32.pas driver/video/driver.video.vesa32.pas vesa32 driver.video.vesa32
driver/video/doublebuffer.pas driver/video/driver.video.doublebuffer.pas doublebuffer driver.video.doublebuffer
driver/video/bga.pas driver/video/driver.video.bga.pas bga driver.video.bga
driver/video/lvgl.pas driver/video/driver.video.lvgl.pas lvgl driver.video.lvgl
driver/video/windows.pas driver/video/driver.video.windows.pas windows driver.video.windows
driver/video/desktop.pas driver/video/driver.video.desktop.pas desktop driver.video.desktop

Driver — Experimental (driver/exp/)

Old path New path Old unit New unit
driver/exp/testdriver.pas driver/exp/driver.exp.testdriver.pas testdriver driver.exp.testdriver

Applications (app/)

Old path New path Old unit New unit
progmanager.pas app/app.mgr.pas progmanager app.mgr
prog/vterminal.pas app/app.vterminal.pas vterminal app.vterminal
prog/base64_prog.pas app/app.base64.pas base64_prog app.base64
prog/md5sum.pas app/app.md5sum.pas md5sum app.md5sum
prog/dhclient.pas app/app.dhclient.pas dhclient app.dhclient
prog/vbeinfo.pas app/app.vbeinfo.pas vbeinfo app.vbeinfo
prog/diskcmd.pas app/app.diskcmd.pas diskcmd app.diskcmd
prog/diskutil.pas app/app.diskutil.pas diskutil app.diskutil
prog/edit.pas app/app.edit.pas edit app.edit
prog/filepicker.pas app/app.filepicker.pas filepicker app.filepicker
prog/inio.pas app/app.inio.pas inio app.inio
prog/meminfo.pas app/app.meminfo.pas meminfo app.meminfo
prog/notepad.pas app/app.notepad.pas notepad app.notepad
prog/partcmd.pas app/app.partcmd.pas partcmd app.partcmd
prog/ping.pas app/app.ping.pas ping app.ping
prog/setres.pas app/app.setres.pas setres app.setres
prog/testcmd.pas app/app.testcmd.pas testcmd app.testcmd
prog/uidebug.pas app/app.uidebug.pas uidebug app.uidebug
prog/volcmd.pas app/app.volcmd.pas volcmd app.volcmd

Applications — WASM (app/wasm/)

Old path New path Old unit New unit
prog/wasm/wasmcleanup.pas app/wasm/app.wasm.cleanup.pas wasmcleanup app.wasm.cleanup
prog/wasm/wasmio.pas app/wasm/app.wasm.io.pas wasmio app.wasm.io
prog/wasm/wasmrunner.pas app/wasm/app.wasm.runner.pas wasmrunner app.wasm.runner
prog/wasm/wasmshim.pas app/wasm/app.wasm.shim.pas wasmshim app.wasm.shim

Special Cases

system.pas

FPC requires the system unit to be named exactly system. It cannot be renamed. It moves to arch/x86/system.pas and the build system must add -Fuarch/x86 so FPC can find it.

util.pas Split

The current include/util.pas (~55 dependents) must be split into two units:

  • core.util — portable helpers: IntToStr, HexToStr, min/max, redraw, string/array utilities, sleep logic (calling into a clock abstraction)
  • arch.x86.util — x86 I/O: outb/inb/outw/inw/outl/inl, CLI/STI, TSC reads, BSOD (writes VGA text-mode memory at $B8000), anything with {$ASMMODE intel} inline assembly

Units that only use portable helpers: uses core.util Units that also do port I/O: uses core.util, arch.x86.util

include/asuro.pas → core.version

The old include/asuro.pas (version/build metadata) is renamed to core.version to avoid collision with the main entry point asuro.pas. All uses asuro references for version info become uses core.version.

stub.asm Entry Point

The assembly boot stub calls kmain (the Pascal entry point exported by kernel.pas). After renaming the unit to asuro, verify the FPC-mangled symbol name. If it changes, update the call instruction in stub.asm accordingly.


Future Namespace Reservations

Namespace Purpose
wasm.* WASM virtual machine (currently external wasuro/)
arch.arm.* ARM architecture port
arch.riscv.* RISC-V architecture port