# RISC OS

RISC OS (/rɪsk.oʊˈɛs/) is an operating system designed to run on ARM computers. Originally designed in 1987 by Acorn Computers of England, it was made for use in its new line of ARM-based Archimedes personal computers and was then shipped with other computers produced by the company. Despite the demise of Acorn, RISC OS continues to be developed today by the RISC OS Open community on version 5.0 of the system that was open sourced in 2018.
RISC OS is a modular operating system and takes its name from the reduced instruction set computer (RISC) architecture it supports. It incorporates a graphical user interface and a windowing system. Between 1987 and 1998, RISC OS shipped with every ARM-based Acorn computer including the Archimedes line, Acorn's R line (with RISC iX as a dual-boot option), RiscPC, A7000, and prototype models such as the Acorn NewsPad and Phoebe computer. A version of the OS, named NCOS, was used in Oracle's Network Computer and compatible systems.
After the break-up of Acorn, development of the OS was forked and continued separately by several companies, including RISCOS Ltd, Pace Micro Technology, Castle Technology, and RISC OS Developments. Since then, it has been bundled with several ARM-based desktop computers such as the Iyonix PC and A9home. Most recent stable versions run on the ARMv3/ARMv4 RiscPC, the ARMv5 Iyonix, ARMv7 Cortex-A8 processors and Cortex-A9 processors and the low-cost educational Raspberry Pi series of computers, with the exception of the Raspberry Pi 5.

## History

The first version of RISC OS was originally released in 1987 as Arthur 1.20. The next version, Arthur 2, became RISC OS 2 and was released in April 1989. RISC OS 3.00 was released with the A5000 in 1991, and contained many new features. By 1996, RISC OS had been shipped on over 500,000 systems.
Acorn officially halted work on the OS in January 1999, renaming themselves Element 14. In March 1999 a new company, RISCOS Ltd, licensed the rights to develop a desktop version of RISC OS from Element 14, and continued the development of RISC OS 3.8, releasing it as RISC OS 4 in July 1999. Meanwhile, Element 14 had also kept a copy of RISC OS 3.8 in house, which they developed into NCOS for use in set-top boxes. In 2000, as part of the acquisition of Acorn Group plc by MSDW Investment, RISC OS was sold to Pace Micro Technology, who later sold it to Castle Technology Ltd.
In May 2001, RISCOS Ltd launched RISC OS Select, a subscription scheme allowing users access to the latest RISC OS 4 updates. These upgrades are released as soft-loadable ROM images, separate to the ROM where the boot OS is stored, and are loaded at boot time. Select 1 was shipped in May 2002, with Select 2 following in November 2002 and the final release of Select 3 in June 2004. In the same month, RISC OS 4.39, dubbed RISC OS Adjust, was released. RISC OS Adjust was a culmination of all the Select Scheme updates to date, released as a physical set of replaceable ROMs for the RiscPC and A7000 series of machines.
Meanwhile, in October 2002, Castle Technology released the Acorn clone Iyonix PC. This ran a 32-bit (in contrast to 26-bit) variant of RISC OS, named RISC OS 5. RISC OS 5 is a separate evolution of RISC OS based upon the NCOS work done by Pace. The following year, Castle Technology bought RISC OS from Pace for an undisclosed sum. In October 2006, Castle announced a shared source license plan, managed by RISC OS Open Limited, for elements of RISC OS 5.
In October 2018, RISC OS 5 was re-licensed under the Apache 2.0 license.
In 2018 RISC OS Developments acquired Castle Technology Ltd including its intellectual property.
In December 2020, the source code of RISC OS 3.71 was leaked to The Pirate Bay.

## Features
### OS core

The OS is single-user and employs cooperative multitasking (CMT). While most current desktop OSes use preemptive multitasking (PMT) and multithreading, RISC OS remains with a CMT system. By 2003, many users had called for the OS to migrate to PMT. The OS memory protection is not comprehensive.
The core of the OS is stored in ROM, giving a fast bootup time and safety from operating system corruption. RISC OS 4 and 5 are stored in 4 MB of flash memory, or as a ROM image on SD card on single board computers such as the Beagleboard or Raspberry Pi, allowing the operating system to be updated without having to replace the ROM chip. The OS is made up of several modules. These can be added to and replaced, including soft-loading of modules not present in ROM at run time and on-the-fly replacement. This design has led to OS developers releasing rolling updates to their versions of the OS, while third parties are able to write OS replacement modules to add new features. OS modules are accessed via software interrupts (SWIs), similar to system calls in other operating systems.
Most of the OS has defined application binary interfaces (ABIs) to handle filters and vectors. The OS provides many ways in which a program can intercept and modify its operation. This simplifies the task of modifying its behaviour, either in the GUI, or deeper. As a result, there are several third-party programs which allow customising the OS look and feel.

### File system

The file system is volume-oriented: the top level of the file hierarchy is a volume (disc, network share) prefixed by the file system type. To determine file type, the OS uses metadata instead of file extensions. Colons are used to separate the file system from the rest of the path; the root is represented by a dollar ($) sign and directories are separated by a full stop (.). Extensions from foreign file systems are shown using a slash (example.txt becomes example/txt). For example, ADFS::HardDisc4.$ is the root of the disc named HardDisc4 using the Advanced Disc Filing System (ADFS) file system. RISC OS filetypes can be preserved on other systems by appending the hexadecimal type as ',xxx' to filenames. When using cross-platform software, filetypes can be invoked on other systems by naming appending '/[extension]' to the filename under RISC OS.
A file system can present a file of a given type as a volume of its own, similar to a loop device. The OS refers to this function as an image filing system. This allows transparent handling of archives and similar files, which appear as directories with some special properties. Files inside the image file appear in the hierarchy underneath the parent archive. It is not necessary for the archive to contain the data it refers to: some symbolic link and network share file systems put a reference inside the image file and go elsewhere for the data.
The file system abstraction layer API uses 32-bit file offsets, making the largest single file 4 GiB (minus 1 byte) long. However, prior to RISC OS 5.20 the file system abstraction layer and many RISC OS-native file systems limited support to 31 bits (just under 2 GiB) to avoid dealing with apparently negative file extents when expressed in two's complement notation.

### File formats

The OS uses metadata to distinguish file formats. Some common file formats from other systems are mapped to filetypes by the MimeMap module.

### Kernel

The RISC OS kernel is single-tasking and controls handling of interrupts, DMA services, memory allocation and the video display; the cooperative multi-tasking is provided by the WindowManager module.

### Desktop

The WIMP interface is based on a stacking window manager and incorporates three mouse buttons (named Select, Menu and Adjust), context-sensitive menus, window order control (i.e. send to back) and dynamic window focus (a window can have input focus at any position on the stack). The icon bar (Dock) holds icons which represent mounted disc drives, RAM discs, running applications, system utilities and docked: files, directories or inactive applications. These icons have context-sensitive menus and support drag-and-drop operation. They represent the running application as a whole, irrespective of whether it has open windows.
The GUI functions on the concept of files. The Filer, a spatial file manager, displays the contents of a disc. Applications are run from the Filer view and files can be dragged to the Filer view from applications to perform saves, rather than opening a separate 'Save' dialog box where the user must navigate to a location already visible in the Finder. In addition, files can be directly transferred between applications by dragging a save icon into another application's window.
Application directories are used to store applications. The OS differentiates them from normal directories through the use of an exclamation mark (also called a pling or shriek) prefix. Double-clicking on such a directory launches the application rather than opening the directory. The application's executable files and resources are contained within the directory, but normally they remain hidden from the user. Because applications are self-contained, this allows drag-and-drop installing and removing.
The RISC OS Style Guide encourages a consistent look and feel across applications. This was introduced in RISC OS 3 and specifies application appearance and behaviour. Acorn's own main bundled applications were not updated to comply with the guide until RISCOS Ltd's Select release in 2001.

### Font manager

RISC OS was the first operating system to provide scalable anti-aliased fonts. Anti-aliased fonts were already familiar from Arthur, and their presence in RISC OS was confirmed in an early 1989 preview, featuring in the final RISC OS 2 product, launched in April 1989.
A new version of the font manager employing "new-style outline fonts" was made available after the release of RISC OS, offering full support for the printing of scalable fonts, and was provided with Acorn Desktop Publisher. It was also made available separately and bundled with other applications. This outline font manager provides support for the rendering of font outlines to bitmaps for screen and printer use, employing anti-aliasing for on-screen fonts, utilising sub-pixel anti-aliasing and caching for small font sizes. At the time of the introduction of Acorn's outline font manager, the developers of rival desktop systems were either contemplating or promising outline font support for still-unreleased products such as Macintosh System 7 and OS/2 version 2.
From 1993, starting with the German RISC OS 3.12, and in 1994 for RISC OS 3.5, it has been possible to use an outline anti-aliased font in the WindowManager for UI elements, rather than the bitmap system font from previous versions. RISC OS 4 does not support Unicode but "RISC OS 5 provides a Unicode Font Manager which is able to display Unicode characters and accept text in UTF-8, UTF-16 and UTF-32. Other parts of the RISC OS kernel and core modules support text described in UTF-8."
Support for the characters of RISC OS (and some other historic computers) was added to Unicode 13.0 (in 2020).

### Bundled applications

RISC OS is available in several distributions, all of which include a small standard set of desktop applications, but some of which also include a much wider set of useful programs. Some of those richer distributions are freely available, some are paid for.

## Backward compatibility

Limited software portability exists with subsequent versions of the OS and hardware. Single-tasking BBC BASIC applications often require only trivial changes, if any. Successive OS upgrades have raised more serious issues of backward compatibility for desktop applications and games. Applications still being maintained by their author(s) or others have sometimes historically been amended to provide compatibility.
The introduction of the RiscPC in 1994 and its later StrongARM upgrade raised issues of incompatible code sequences and proprietary squeezing (data compression). Patching of applications for the StrongARM was facilitated and Acorn's UnsqueezeAIF software unsqueezed images according to their AIF header. The incompatibilities prompted release by The ARM Club of its Game On! and StrongGuard software. They allowed some formerly incompatible software to run on new and upgraded systems. The version of the OS for the A9home prevented the running of software without an AIF header (in accord with Application Note 295) to stop "trashing the desktop".
The Iyonix PC (RISC OS 5) and A9home (custom RISC OS 4) saw further software incompatibility because of the deprecated 26-bit addressing modes. Most applications under active development have since been rewritten. Static code analysis to detect 26-bit-only sequences can be undertaken using ARMalyser. Its output can be helpful in making 32-bit versions of older applications for which the source code is unavailable. Some older 26-bit software can be run without modification using the Aemulor emulator.
Additional incompatibilities were introduced with newer ARM cores, such as ARMv7 in the BeagleBoard and ARMv8 in the Raspberry Pi 3. This includes changes to unaligned memory access in ARMv6/v7 and removal of the SWP instructions in ARMv8.

## Supported hardware

RISC OS has also been used by both Acorn and Pace Micro Technology in various TV connected set-top boxes, sometimes referred to instead as NCOS. A special cut down RISC OS Pico (for 16MiB cards and larger) styled to start up like a BBC Micro was released for BASIC's 50th anniversary. SD card images have been released for downloading free of charge to Raspberry Pi 1, 2, 3, & 4 users with a full graphical user interface (GUI) version and a command-line interface only version (RISC OS Pico, at 3.8 MB).
Versions of RISC OS run or have run on the following hardware: (RISC OS Open Limited adopted the 'even numbers are stable' version numbering scheme post version 5.14, hence some table entries above include two latest releases – the last stable one and the more recent development one.)
RISC OS compatible hardware :
| Machine | ARM architecture | Introduced | Acorn version | Acorn version | RISCOS Ltd version | RISCOS Ltd version | Castle Technology, RISC OS Open version | Castle Technology, RISC OS Open version |
| Machine | ARM architecture | Introduced | First | Last | First | Last | First | Latest |
| ARM with 26-bit program counter ||||||||
| Acorn Archimedes | ARMv2 | 1987–1992 | 0.20 | 3.1x | — | — | — | — |
| ARM with 26- & 32-bit program counter ||||||||
| Acorn Risc PC | ARMv3 / v4 | 1994 | 3.50 | 3.71 | 4.00 | 6.20 | 5.15 | 5.30/5.31 |
| Acorn A7000 and A7000+ | ARMv3 | 1995 – 1997 | 3.60 | 3.71 | 4.00 | 6.20 | 5.15 | 5.30/5.31 |
| Acorn Phoebe (cancelled) | ARMv4 | 1998 | 3.80 (Ursula) | — | — | — | — | — |
| MicroDigital Medi | ARMv3 | 1998 | 3.71 | — | 4.02 | 6.20 | — | — |
| MicroDigital Mico | ARMv3 | 1999 | — | — | 4.03 | 4.39 | — | — |
| RiscStation R7500 | ARMv3 | 1999 | — | — | 4.03 | 4.39 | — | — |
| Castle Kinetic RiscPC | ARMv4 | 2000 | — | — | 4.03 | 6.20 | 5.19 | 5.30/5.31 |
| MicroDigital Omega | ARMv4 | 2003 | — | — | 4.03 | 4.39 | — | — |
| Advantage Six A75 | ARMv3 | 2004 | — | — | 4.39 | | — | — |
| ARM with 32-bit program counter ||||||||
| Iyonix Ltd Iyonix PC | ARMv5TE | 2002 | — | — | — | — | 5.01 | 5.30/5.31 |
| Advantage Six A9 (Home/RM/Loc) | ARMv4T | 2005 | — | — | 4.42 | | — | — |
| BeagleBoard | ARMv7-A | 2008 | — | — | — | — | 5.15 | 5.30/5.31 |
| IGEPv2 | ARMv7-A | 2009 | — | — | — | — | 5.15 | 5.30/5.31 |
| DevKit8000 | ARMv7-A | ? | — | — | — | — | 5.15 | 5.30/5.31 |
| Always Innovating Touch Book | ARMv7-A | 2009 | — | — | — | — | 5.15 | 5.30/5.31 |
| OpenPandora's Pandora | ARMv7-A | 2010 | — | — | — | — | 5.17 | 5.30/5.31 |
| PandaBoard | ARMv7-A | 2011 | — | — | — | — | 5.17 | 5.30/5.31 |
| Raspberry Pi (1 - 4 and compatible) | ARMv6, v7-A, v8-A | 2012 | — | — | — | — | 5.19 | 5.30/5.31 |
| IGEPv5 | ARMv7-A | 2014 | — | — | — | — | 5.23 | 5.30/5.31 |
| Wandboard Quad | ARMv7-A | 2015 | — | — | — | — | 5.21 | 5.31 |
| Titanium | ARMv7-A | 2015 | — | — | — | — | 5.23 | 5.30/5.31 |
| Pinebook | ARMv8-A | 2017 | — | — | — | — | 5.27 | 5.31 |
RISC OS can also run on a range of computer system emulators that emulate the earlier Acorn machines listed above:
RISC OS capable hardware emulators :
| Emulator | Machines emulated | Host platforms supported | Latest release |
| !A310Emu | Archimedes | RISC OS | 0.59 |
| Archie | Archimedes | DOS, Windows | 0.9 – 10 February 2001 |
| ArchiEmu | Archimedes | RISC OS | 0.53.3 – 7 December 2014 |
| ArcEm | Archimedes | Windows, Linux, macOS, RISC OS | 1.50.1 – 18 December 2015 |
| Arculator | Archimedes | Windows, Linux | 2.2 – 24 June 2023 |
| Virtual A5000 | Archimedes | Windows | 1.4 |
| Red Squirrel | Archimedes, Risc PC, A7000 | Windows | 0.6 – 28 October 2002 |
| RPCEmu | Risc PC, A7000, Phoebe | Windows, Linux, macOS, OpenBSD | 0.9.4 – 30 October 2021 |
| VirtualRPC | Risc PC | Windows, macOS | 5 September 2014 |