AmigaOS is the default native operating system of the Amiga personal computer. On top of a basic kernel called Exec, it includes an abstraction of the Amiga's unique hardware, a disk operating system called AmigaDOS, a windowing system called Intuition and a graphical user interface called Workbench.
Kickstart contained the code needed to boot the standard Amiga hardware and any Autoconfig expansion hardware. The Kickstart also contained many stock parts of the Amiga's operating system, such as Exec, Intuition and the core of AmigaDOS. This meant that a powered-on Amiga already had a lot of the essential parts of the operating system available. Later versions of the Kickstart contained drivers for IDE and SCSI controllers, PCMCIA ports and various other hardware that came built into Amigas. It can be compared to the BIOS in IBM PCs, however it has far more functionality available at boot time - the full windowing environment, for example.
With third party software, it is possible to have a different Kickstart loaded in RAM and to use it instead of the ROM one - for example Kickstart 1.3 may be loaded in order to run old games incompatible with Kickstart 2.0 and higher. These programs are called softkickers. There are also hardware Kickstart switchers which allow you to have more than one set of Kickstart chips inside the computer, which are selectable either by a switch or a keyboard shortcut when you first turn the machine on.
As the name suggests, the metaphor of a workbench is used, rather than a desktop; directories are depicted as drawers, executable files are tools, data files are projects and GUI widgets are gadgets. In many other aspects the interface resembles Mac OS, with the main desktop showing icons of inserted disks, and a single menu bar at the top of every screen. Unlike the Macintosh, the standard Amiga mouse has two buttons – the right mouse button operates the pull-down menus, with a Macintosh-style "release to select" mechanism.
A unique feature of Workbench is multiple screens. These are conceptually similar to X Window System virtual desktops or workspaces, but are generated dynamically by application programs as necessary. Each screen can have a different resolution and colour depth. A gadget in the top-right corner of the screen allows screens to be cycled - as the OS stores all screens in memory simultaneously, redrawing is instantaneous. Screens can also be dragged up and down by their title bars, on older Amigas this functionality was provided by the custom chipsets specially designed for the platform, since AmigaOS4 a new technique is adopted and the screens are draggable in any direction. Drag and drop between different screens is possible too.
Underlying the Workbench is the Intuition windowing system. This controls and draws screens, windows, gadgets and handles input from the keyboard and mouse, passing messages to programs.
Workbench 2.0 also added support for public screens. Instead of the Workbench screen being the only shareable screen, applications could create their own named screens to share with other applications.
Workbench 2.0 introduced AmigaGuide, a simple text-only hypertext markup scheme and browser, of providing online help inside applications. It also introduced Installer, a standard software installation program, driven by a LISP-like scripting language.
Finally, Workbench 2.0 rectified the problem of developers hooking directly into the input-events stream to capture keyboard and mouse movements, often locking up the whole system. Workbench 2.0 provided Commodities, a standard interface for modifying or scanning input events. This included a standard method for specifying global "hotkey" key-sequences, and a Commodities Exchange registry for the user to see what commodities were running.
.info files, with the name of the .info file matching the name of the file it represents. For example, the icon for NotePad, a text editor, is found in the file NotePad.info.
The .info file includes the graphical representation of the icon and its position in the volume or drawer window. The icon also specifies the type of the file, as used by Workbench. Workbench recognises five different file types:
Tool files can include "tool types" in the .info file. These are used as configuration options for the program. Each tool type is a single line of text, which can optionally include parameters, written after an = sign. Tool types can be commented out by writing them in parentheses. For example, the tooltype "CX_POPKEY=ctrl alt f1" says that the application (a Commodity) will pop up the user interface in response to the key sequence Ctrl-Alt-F1.
The colours used in the icon are normally only stored as indices to the Amiga Workbench screen's current palette. Because of this, the icons' colour scheme is inherently tied to the chosen hues in the screen's palette, and choosing non-standard colours can give the icons an ugly appearance. This problem was party solved by a third-party system called NewIcons, which adds additional features to the standard .info files. Unlike normal Workbench icons, NewIcons include actual RGB colour information, and the system tries its best to match the icons' colour hues to those in the screen palette.
Since AmigaOS 3.5, Workbench supports icons with up to 256 colors, still based on the screen palette. This release of AmigaOS features the Glowicons icon set by Matt Chaput. With AmigaOS 4.0, a screen palette independent system is used. The 4.0 icons, designed by Martin Merz, can use a palette of 256 colors each.
In AmigaOS 1.x, the AmigaDOS portion was based on a TRIPOS port by MetaComCo, written in BCPL. The more advanced functionality was only available to programs written in BCPL, C programmers were left in the cold. The third-party AmigaDOS Resource Project (arp.library) * provided the advanced functionality to C programmers. ARP also provided one of the first standardised file requesters for the Amiga.
From AmigaOS 2.x onwards, AmigaDOS was rewritten in C, retaining 1.x compatibility where possible.
The Amiga did not have any official 3D graphics capability, so it had no standard 3D graphics interface. Graphics card manufacturers provided their own standards, which include MiniGL, Warp3D, StormMesa (agl.library) and CyberGL. VideoScape 3D was one of the earliest 3D rendering & animation systems, as well as TrueSpace 3D.
Likewise, while the Amiga is well known for its ability to easily genlock with video, it had no built in video capture interface. Third party interfaces included Digiview, VHI (Video Hardware Interface) by IOSPIRIT GmbH, tv.library by Elbox Computer and tvcard.library by Guido Mersmann.
In the original 1.x releases, a Say program demo included with AmigaBASIC programming examples. For 2.0, Say became a standard utility program which did not need AmigaBASIC.
The speech synthesiser was occasionally used in third-party programs, often educational software. The word processor Prowrite could read out documents using the synthesiser.
Despite the limitation on the narrator.device's phonemes, Francesco Devitt wrote a new version of translator.library which could translate any language to phonemes, given it had a set of rules for that language, and thus provided multilingual speech synthesis. *
Programs could listen on an "ARexx port" for string messages. These messages could then be interpreted by the program in a similar fashion to a user pushing buttons. For example, an ARexx script when run in an e-mail program, could save the currently displayed email and invoke an external program which could extract and process information and then invoke a viewer program. This allowed applications to control other applications, send data back and forth directly with memory handles, instead of saving files to disk then reloading.
The Amiga OS also has support for a fixed-capacity recoverable RAM disk, which functions as a standard RAM disk, but can maintain its contents on restart. It was commonly called RAD disk and it can function as a start disk (with boot sector).
.library" filename extension, or stored in the Kickstart ROM. All libraries are accessed via an indirect jump table, which is always stored in RAM. That way, every library function can be patched or hooked at run-time, even if the library is stored in ROM.
The most important library in AmigaOS is exec.library, which can be considered a microkernel, as well as a library. As well as pre-emptive multitasking and access to other libraries, it provides high-level inter-process communication via message passing. (Other microkernels have had performance problems because of the need to copy messages between address spaces. Since the Amiga has only one address space, Exec message passing is quite efficient.) The only fixed memory address in the Amiga software (address 4) is a pointer to exec.library, which programs must use to find other libraries. Exec was designed and implemented by Carl Sassenrath.
Device drivers are also libraries, but they implement a standardised interface. Applications do not usually call devices directly as libraries, but use the exec.library I/O functions to indirectly access them. Like libraries, devices are either files on disk (with the ".device" extension), or stored in the Kickstart ROM.
The higher-level part of device and resource management is controlled by handlers, which are not libraries, but tasks, and communicate by passing messages.
One important type of handler is a filesystem handler. The AmigaOS can make use of any filesystem for which a handler has been written, a possibility that has been exploited by programs like CrossDOS and by a few "alternative" file systems to the standard OFS and FFS. These file systems allow one to add new features like journaling or file privileges, which aren't found in the standard operating system.
Handlers typically expose a device name to the DOS, which can be used to access the peripheral (if any) associated with the handler.
As an example of these concepts, the SPEAK: handler can have text sent to it. The handler makes use of translator.library, which converts text into phonemes, then it writes the phonemes to narrator.device, which translates the phonemes into intoned speech samples and itself uses audio.device to play them through the Amiga's audio hardware.
Device names are case insensitive (uppercase by convention) strings followed by a colon. After the colon a specifier can be added, which gives the handler additional information about what is being accessed and how. In the case of filesystem, the specifier usually consists of a path to a file in the filesystem; for other handlers, specifiers usually set characteristics of the desired input/ouput channel (for the SER: serial port driver, for example, the specifier will contain bit rate, start and stop bits, etc).
Filesystems expose drive names as their device names. For example, DF0: by default refers to the first floppy drive in the system, while DH0: is the first hard drive.
Filesystems also expose volume names, following the same syntax as device names: these identify the specific medium in the file system-managed drive. If DF0: contains a disk named "Workbench", then Workbench: will be a volume name that can be used to access files in DF0:.
If one wanted to access a file named "Bar" located in directory "Foo" of the disk with name "Work" in drive DF0:, one could write DF0:Foo/Bar or Work:Foo/Bar However, these are not completely equivalent, since when the latter form is used, the system knows that the wanted volume is "Work" and not just any volume in DF0:. Therefore, whenever a requested file on "Work" is being accessed without volume "Work" being present in any drive, it will say something to the effect of: Please insert volume Work in any drive
Programs often need to access files without knowing their physical location (either the drive or the volume): they only know the "logical path" of the file, i.e. whether the file is a library, a documentation file, a translation of the program's messages, etc.
This is solved in AmigaOS by the use of assigns. An assign follows, again, the same syntax as a device name; however, it already points to a directory inside the filesystem. The place an assign points to can be changed at any time by the user. Standard assigns that are generally present in an AmigaOS system include
AROS, or Amiga Research Operating System is an attempt to clone the AmigaOS API in a portable open-source operating system. Although not binary compatible with AmigaOS (unless running on 68k), users have reported it to be highly source code compatible.
MorphOS is a PowerPC native operating system, originally created when the future of the Amiga looked uncertain. It provides binary compatibility with system-friendly AmigaOS applications. A version which runs on Classic Amigas with PPC accelerator cards has been released.
Although not strictly Amiga related, a fork of the FreeBSD 4.8 release, called DragonFly BSD, has been created by a former FreeBSD developer and Amiga programmer Matt Dillon. DragonFly BSD aims to make the BSD core more like the Amiga architecturally, featuring a message-passing kernel and allowing for a very efficient and virtually mutex-free SMP design.
AtheOS was inspired by AmigaOS, and originally intended to be a clone of AmigaOS. Syllable is a fork of AtheOS, and includes some AmigaOS and BeOS like qualities.
AmigaOS | AmigaOS | AmigaOS | AmigaOS | AmigaOS | AmigaOS | Amiga OS | AmigaOS | AmigaOS | AmigaOS | AmigaOS | AmigaOS | AmigaOS | AmigaOS | AmigaOS