AROS Vision
Modern and free Amiga-Compatible Experience on Amiga and PC
Architecture
The architecture of AROS can be described as a modern
reimplementation of the classic AmigaOS design. It keeps the Amiga-like
structure and programming model, but is written as an open-source operating
system that can run on different hardware platforms. Basic idea AROS is not simply an emulator. It is an operating system
that is designed to be source-compatible with AmigaOS where possible.
This means that software written for AmigaOS can often be recompiled for AROS,
especially if it uses standard system APIs.
Its architecture is modular. The system is built from many
components such as libraries, devices, handlers, classes, and system services. Main architectural layers
1. Kernel and Exec layer
At the lowest level is the Exec-like kernel. This is
inspired by AmigaOS Exec.
It is responsible for:
task
scheduling
memory
management
message
passing
interrupts
semaphores
and signals
system
lists and resources
basic
device and library management
AROS, like AmigaOS, uses a lightweight multitasking model. Programs
run as tasks or processes and communicate through message ports.
2. Libraries
AROS uses shared system libraries heavily. Instead of
putting all functionality into one large kernel, many services are provided
through libraries.
Examples include:
graphics.library
intuition.library
dos.library
utility.library
layers.library
gadtools.library
Applications call these libraries to access system
functions. This is very similar to classic AmigaOS.
Common AROS libraries
exec.library
Core system library that
provides multitasking, memory management, signals, message ports, and basic
system services.
dos.library
Handles files, directories,
volumes, command execution, processes, assigns, and Shell-related functions.
intuition.library
Manages the graphical user
interface, including screens, windows, menus, gadgets, and user input events.
graphics.library
Provides low-level graphics
functions such as drawing, bitmaps, colors, viewports, and display handling.
layers.library Supports overlapping windows and
layered screen areas used by the graphical interface.
utility.library Offers general helper
functions, including tag handling, hooks, lists, string utilities, and system
support routines.
gadtools.library
Provides standard GUI gadgets
and tools for building simple Amiga-style application interfaces.
asl.library
Provides standard requesters,
such as file requesters, font requesters, and screen-mode requesters.
icon.library
Handles icon files and icon-related
information used by Wanderer and desktop applications.
datatypes.library
Allows applications to load
and display different file formats through a common datatype system.
diskfont.library
Loads and manages fonts stored
on disk so they can be used by applications and the system.
locale.library
Provides localization support
for languages, regional settings, catalogs, dates, and formatting.
keymap.library
Handles keyboard layouts and
translates physical key input into characters according to the selected
keymap.
commodities.library
Supports small background
tools, hotkeys, and system-wide input utilities known as commodities.
iffparse.library
Provides routines for reading
and writing IFF-based file formats commonly used on Amiga-like systems.
muimaster.library
Provides the base for Zune,
AROS’s MUI-compatible object-oriented GUI toolkit.
workbench.library
Provides desktop-related support
functions for Workbench-like behavior used by Wanderer and applications.
rexxsyslib.library
Provides ARexx-compatible
scripting support where available, allowing programs to communicate through
scripts.
3. Devices
Devices provide low-level access to hardware or virtual
hardware. They are not necessarily physical devices; they are system modules
that offer a standard interface.
Typical examples are:
keyboard
device
timer
device
input
device
audio
device
storage
devices
serial
or parallel devices
Applications and system components communicate with devices
using I/O requests and message passing.
Common AROS devices
timer.device
Provides timing functions,
delays, alarms, and time-based events for applications and system components.
input.device
Collects and distributes input
events from keyboard, mouse, and other input sources.
keyboard.device
Handles keyboard input and
passes key events into the input system.
console.device
Provides text console windows
used by the Shell and command-line programs.
audio.device
Offers basic audio output services
and sound-related I/O functions.
trackdisk.device
Controls floppy disk access on
systems that support Amiga-style disk drives.
scsi.device
Provides access to hard disks
and other mass-storage devices through SCSI-like interfaces.
ahi.device
Used by AHI-compatible audio
systems for more advanced sound playback and recording support.
gameport.device
4Handles joystick, mouse, and
game controller input on compatible systems.
parallel.device
Provides access to
parallel-port hardware, traditionally used for printers and other
peripherals.
serial.device
Provides access to serial-port
communication for modems, terminals, or other serial devices.
clipboard.device Supports clipboard-style data
exchange between applications.4
4. DOS layer
The DOS layer manages files, directories, volumes, command
execution, and processes from the user’s point of view.
It handles:
files
and directories
assigns
volumes
paths
command
execution
Shell
interaction
startup
scripts
This is where concepts like SYS:, C:, LIBS:, DEVS:, S: and
Prefs: become important. 5. Filesystem and handlers AROS uses handlers and filesystems to access different
storage systems.
A handler can represent:
a
disk filesystem
a
console
a
pipe
a
network resource
another
virtual device
This flexible design comes directly from the Amiga
tradition. For example, CON: or RAM: behave like special devices that can be
accessed through file-like paths.
6. Graphics system
The graphics system provides screen, window, bitmap, and
drawing support.
Important parts include:
graphics.library
for low-level graphics
layers.library
for overlapping windows
intuition.library
for windows, screens, menus, and gadgets
AROS keeps the Amiga concept of separate screens.
Applications can open their own screens or use the public screen.
7. Intuition and GUI systemIntuition is the central GUI system.
It manages:
windows
screens
menus
mouse
and keyboard events
gadgets
requesters
user
interaction
On top of this, AROS also uses higher-level GUI systems such
as Zune, which is an open-source implementation inspired by MUI. 8. Wanderer desktop The standard AROS desktop is called Wanderer. It is
comparable to Workbench on AmigaOS.
Wanderer provides:
icons
drawers
desktop
windows
file
management
program
launching
drag
and drop
It sits above the lower system layers and uses the standard
AROS APIs.
9. Hardware abstraction
AROS is designed to run on different architectures,
including:
x86
x86-64
ARM
PowerPC
m68k
Because of this, hardware-specific code is separated from
portable system code where possible.
On hosted versions, AROS runs on top of another operating
system like Linux or Windows. On native versions, it talks more directly to the
hardware.
Native, hosted, and m68k versions
AROS can exist in different forms:
Native AROS
Boots directly on hardware
Hosted AROS
Runs as a program on another OS
m68k AROS
Runs on Amiga-like m68k systems or UAE
AROS ROM
Can replace or complement Kickstart-like functionality
This flexibility is one of the major architectural
differences compared with the original AmigaOS.
How programs interact with AROS
A typical AROS program does not access hardware directly.
Instead, it uses system APIs.
For example:
to
open a window, it uses Intuition
to
draw graphics, it uses graphics.library
to
read files, it uses dos.library
to
use timers, it sends requests to timer.device
to
build a GUI, it may use Zune or GadTools
This keeps programs more portable and better integrated into
the system.
Summary AROS is built around a classic Amiga-style architecture:
small system modules, shared libraries, message passing, devices, handlers, and
a lightweight Exec-like kernel.
Its goal is to preserve the Amiga programming model while
making the system open-source, portable, and adaptable to modern or alternative
hardware. It feels familiar to AmigaOS users but is structured so it can run on
several platforms, from real m68k systems and UAE to x86 and hosted
environments.