Net/System
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 |