Dorper Website of Paul Carver Harrison

Net/System

Net/System

Source Code Available on SDF Gitea

Net/System is a operating system with networking support and a collection of system software.

Net/Exec

Net/Exec is a minimal executive with networking support. NetExec's API is loosely based on the Amiga Executive, but with major changes, including greatly improved synchronization.

Lists

NetExec supports doubly linked lists and queues, like the Amiga.

Tasks

NetExec supports tasks with atomic value comparison based blocking, unlike the Amiga, as well as Amiga-like signal based blocking.

Semaphores

NetExec supports semaphores, mutexes, and Forbid/Permit.

Message Ports

NetExec supports pointer based message passing, like the Amiga.

Supported Devices

pclpt
PC Parallel Port
nsserial
National Semiconductor 8250-compatible UART (e.g. 8250, 16450, 16550)
bga
Bochs Graphics Adapter
ne2k_isa
Novell NE2000 Ethernet Adapter

Hardware Detection

BIOS Data Area

On IBM PC compatible platforms, the BIOS Data Area (BDA) is used to determine the presence and I/O port numbers for the serial and parallel ports. Example compat strings include:

bda()nsserial()
NS8250-compatible UART. COM1-COM4.
bda()pclpt()
PC parallel port. LPT1-LPT4.

PCI

On IBM PC compatible platforms, PCI is used to detect all sorts of devices.

Supported CPU Architectures

i686
Intel Pentium Pro (P6), AMD Athlon (K7), or VIA Cyrix 6x86MX or higher

Supported Platforms

pcmultiboot
IBM PC-compatible with GNU Multiboot compliant bootloader (GRUB, Limine, QEMU).

Notes

What is the HAL?

The Hardware Abstraction Layer (HAL) implements a standard set of platform specific functions that allow the Executive to interact with the base hardware. This hardware consists of an interrupt controller, a timer, and an output only port for debug communication. It also implements context switching, helper code for task creation, and hardware detection/enumeration.

What are "detects?"

Detects are definitions of devices detected to be present on the system. They are used by device drivers do determine the presence and resources of each unit. Resources include regions (memory and I/O ranges) and IRQ numbers.

Why does exec.library/Hal(Read|Write)IO(8|16|32) have an argument for address space?

Architectures like x86 have a port address space in addition to a memory address space. In order that drivers written for the PC platform can be reused, the address space must be specified. This allows nsserial, originally written for the pcmultiboot platform using port I/O with addresses sourced from the BIOS Data Area, to be used on Raspberry Pi or even on x86 when using MMIO (e.g. with PCI). The amount of overhead this introduces in minimal. However, it does mean driver writers must keep track of both the address and what address space is used. Detect regions also specify address space. This also means that I2C devices can be specified in address spaces as long as it is clear what address spaces other than AS_IO and AS_MEM mean in the HAL implementation.

Blog

Date Name
12/30/25 Hardware IDs
12/28/25 Amiga Exec Doubly Linked Priority Queue Explained