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
AROS m68k Libraries Reference
Library
680x0
CPU-specific support functions for Motorola 68000-series processors
accounts
User account and authentication management
amigaguide
AmigaGuide hypertext help system supportaslStandard file, font, and screen requester library
asyncio
Asynchronous file and I/O operationsbluetooth
Bluetooth
subsystem and device support
bz2
BZip2 compression and decompression functions
camd
Commodore Amiga MIDI driver system
codesets
Character set conversion and encoding support
commodities
Support for Commodities and background utilities
coolimages
Collection of standard GUI icons and images
cybergraphics
RTG graphics API compatible with CyberGraphX
datatypes
Unified framework for loading and displaying many file types
decorator
Window decoration management
decortheme
Theme engine for window decorationsdiskfontLoading and managing disk-based fonts
dos64
DOS functions with 64-bit file size support
egl
EGL interface between graphics drivers and OpenGL ES
envoy
Networking and resource-sharing services
expat
XML parsing libraryfdFunction definition (FD) file handling support
freetype2
TrueType and OpenType font rendering
gallium
Gallium3D graphics driver framework
gl
OpenGL graphics API
glu
OpenGL Utility Library
identify
Hardware and system identification functions
iffparse
Parsing and handling IFF files
jfif
JPEG/JFIF image format support
kms
Kernel Mode Setting graphics support
locale
Localization and language support
lzma
LZMA compression and decompression
mathieee
IEEE-compliant mathematical functions
mathtrans
Advanced mathematical transformations
mesa3dgl26
Mesa 3D OpenGL implementation
muimaster
Main library of the MUI/Zune GUI framework
muiscreen
MUI support for managing custom screens
nipc
Network Inter-Process Communication services
openurl
Opens URLs in the user's preferred web browser
pccard
PCMCIA card support
png
PNG image format support
popupmenu
Context and popup menu management
poseidon
USB stack and USB device management
posixc
POSIX-compatible C runtime library
prometheus
Support for Prometheus PCI hardware systems
reaction
ReAction GUI classes and widgets
realtime
Real-time timing and event services
reqtools
Enhanced requesters and dialog functions
rexxsupport
Additional ARexx support functions
rexxsyslib
Core ARexx system library
services
Network service management functions
stdcio
Standard C input/output support
tiff
TIFF image format support
translator
Data translation and conversion services
usergroup
User and group management
utf8proc
UTF-8 processing and Unicode normalization
uuid
Generation of UUID/GUID identifiers
version
Version information and version checking
vmm
Virtual memory management
z1
Auxiliary library used by Zune/MUI components
zstd
standard compression and decompression
Functional Categories
CategoryLibraries
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
ahi.device
Audio Hardware Interface device providing unified access to sound hardware and audio playback.
clipboard.device
Manages clipboard operations, allowing applications to exchange text and other data.
diskimage.device
Mounts disk image files (ADF, ISO, etc.) as virtual devices.
fdsk.device
Low-level floppy disk access and control device.
narrator.device
Text-to-speech synthesis device used by speech applications.
netinfo.device
Provides network interface and network information services.
parallel.device
Controls access to the system's parallel port.
printer.device
Standard printer interface for sending output to printers.
printtofile.device
Redirects print output to a file instead of a physical printer.
printtotool.device
Redirects print jobs to an external tool or processing application.
serial.device
Provides access to serial communication ports (RS-232 and compatible interfaces).
speech.device
Speech synthesis interface used together with narrator-related components.
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.
gameport.device
4Handles joystick, mouse, and
game controller input on compatible systems.
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.
ahi.handler
Provides support for AHI audio streams and audio-related I/O operations.
aux.handler
Implements AUX: devices, typically used for serial terminal and communication connections.
debug.handler
Redirects output and diagnostic messages to debugging consoles or logs.
envoyfs.handler
Network file system handler used by the Envoy networking system for shared resources.
fat.handler
Provides access to FAT12, FAT16, and FAT32 file systems commonly used on PC media.
pfs3.handler
Supports the Professional File System 3 (PFS3), a high-performance Amiga file system.
pipe.handler
Creates named pipes for inter-process communication between applications.
port.handler
Provides DOS-style access to message ports as file-like objects.
sfs.handler
Supports the Smart File System (SFS), known for speed and reliability.
smb.handler
Allows access to SMB/CIFS network shares, such as Windows file servers and NAS devices.
speak.handler
Provides a speech output interface, typically used with speech synthesis devices and software.
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.
10. concept of datatypes
One of the most innovative features inherited from AmigaOS and implemented in AROS m68k is the DataTypes system. DataTypes provide a standardized and extensible way for applications to handle many different file formats without requiring built-in support for each format.
Basic Idea
Instead of every application implementing its own code to load JPEG images, PNG files, WAV audio, text documents, or other formats, AROS delegates this task to specialized datatype classes. An application simply asks the DataTypes system to open a file.
The system then:
Identifies the file type.
Loads the appropriate datatype class.
Creates an object representing the file.
Provides standardized methods for viewing, reading, printing, or processing the content.
The application does not need to know the file's actual format.
Application
│
▼
DataTypes System
│
├── jpeg.datatype
├── png.datatype
├── wave.datatype
├── html.datatype
└── text.datatype
│
▼
File Content
Advantages
Format Independence
Applications can support new formats automatically.
For example:
MultiView can display JPEG images. After installing png.datatype, MultiView can also display PNG images. No changes to MultiView itself are required.
Extensibility
New formats can be added simply by installing new datatype modules.
Examples:
Unified Programming Interface
From a programmer's perspective, all datatype objects are accessed through a common API.
An application can load:
text files
images
sounds
animations
using the same programming model.
Datatype Classes
DataTypes are organized in a hierarchy.
Generic Base Classes
These provide common functionality.
picture.datatype
Generic image handling
sound.datatype
Generic audio handling
text.datatype
Generic text handling
animation.datatype
Generic animations
binary.datatype
Generic binary files
Specialized Datatypes
These inherit from the base classes.
Example:
picture.datatype
│
├── jpeg.datatype
├── png.datatype
├── gif.datatype
├── tiff.datatype
├── bmp.datatype
└── webp.datatype
All image datatypes support common image operations while adding format-specific decoding.
Automatic Format Detection
DataTypes do not rely solely on filenames.
Many datatypes examine:
file headers
magic numbers
internal signatures
to identify a format.
For example, a JPEG image can often be recognized even if it lacks a ".jpg" extension.
Integration with MultiView
The classic example is MultiView.
MultiView itself contains very little format-specific code.
Instead, it:
Loads a file through DataTypes.
Displays whatever object is returned.
Uses the datatype to handle rendering.
As more datatypes are installed, MultiView automatically gains support for additional file formats.
Example Workflow
Suppose a user double-clicks: VacationPhoto.webp
AROS performs the following steps:
Detects the file type.
Loads webp.datatype.
Creates a picture object.
Passes the object to MultiView.
MultiView displays the image.
The application never needs to understand the WebP format itself.
Benefits for Developers
Developers can write software that works with entire categories of files rather than individual formats.
AROS Enhancements
While retaining compatibility with the classic AmigaOS architecture, modern AROS distributions often extend the DataTypes system with support for newer formats such as:
PNG
JPEG
WebP
HEIC
TIFF
HTML
This allows legacy applications to work with modern file formats through the same DataTypes mechanism.
8svx.datatype
Supports Amiga 8SVX audio files and sound playback.
amigaguide.datatype
Displays and processes AmigaGuide hypertext documents.
animation.datatype
Handles animated image and video-style file formats.
ascii.datatype
Supports plain ASCII text files.
binary.datatype
Provides generic handling for binary data files.
bmp.datatype
Loads and displays Microsoft BMP bitmap images.
degas.datatype
Supports Atari ST DEGAS image formats.
font.datatype
Handles font files and font preview functionality.
gemimage.datatype
Supports GEM image formats used on Atari systems.
gif.datatype
Loads and displays GIF images, including animations where supported.
heic.datatype
Provides support for HEIC/HEIF image files.
html.datatype
Displays and renders HTML documents.
ilbm.datatype
Supports Amiga IFF ILBM bitmap images.
jpeg.datatype
Loads and displays JPEG image files.
picture.datatype
Generic image datatype superclass for picture formats.
png.datatype
Loads and displays PNG images.
pnm.datatype
Supports Portable AnyMap formats (PBM, PGM, PPM).
sound.datatype
Generic audio datatype superclass for sound formats.
text.datatype
Generic text datatype supporting text viewing and processing.
tiff.datatype
Loads and displays TIFF image files.
wave.datatype
Supports Microsoft WAV audio files.
webp.datatype
Loads and displays WebP image files.