AmigaOS
From Free net encyclopedia
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.
Contents |
Components of AmigaOS
AmigaOS can be divided into two parts: the Kickstart (ROM) and Workbench disks. It used to be the case that versions of Kickstart and Workbench were released together, for use with each other. From Workbench 3.5 onwards, the first release after Commodore International stopped development, AmigaOS has become software-only, standardising on Kickstart version 3.1 in ROM.
Kickstart
Image:Amiga kickstart.png Kickstart is the name given to the bootstrap ROM. On the first Amiga model, the A1000, this was loaded from disk, although eventually the Kickstart was embedded in a ROM chip inside the computer. The Amiga 1000 could be modified to take these chips, and subsequent Amiga models all used ROM chips.
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.
Workbench
Workbench is the name given to both the core operating system software that is not stored in the Kickstart ROM (the "Workbench disk"), and also the native graphical shell for the Amiga computer. The Workbench environment does not have to be loaded for software to run. In fact, to take over the Amiga hardware and keep all memory and resources to themselves, many games boot directly from Kickstart (using a custom bootblock on the floppy disk).
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 user interface improvements
Until Workbench 2.0, there was no unified look and feel design standards - application developers had to write their own widgets (both buttons and menus), with Intuition providing minimal support. With Workbench 2.0 came gadtools.library, which provided standard widget sets, and the Amiga User Interface Style Guide, which explained how applications should be laid out for consistancy.
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 introducted 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.
Workbench icons
The icons that Workbench uses to represent the files in a volume or a drawer are stored in special .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: An executable program.
- Project: A data file of an executable program. The program which created the file is named in the icon file, double-clicking on the icon loads the program that created it.
- Drawer: A directory containing files, and other drawers.
- Volume: A physical disk or a RAM disk.
- Garbage: The Trashcan - a deleted file backup, which works in a similar way to the 'Recycle bin' in Microsoft Windows.
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.
AmigaDOS
AmigaDOS provides the disk operating system portion of the AmigaOS. This includes filesystems, file and directory manipulation, the command line interface, file redirection and so on.
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) [1] 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.
Graphics
Up to version 3.1, AmigaOS only supported the native Amiga graphics chipset, via graphics.library. This led developers to avoid OS functionality for drawing, and go straight for the underlying hardware. Third-party graphics cards were only supported via unofficial solutions. The ideal situation, where the AmigaOS could directly support any graphics system, was termed retargetable graphics (RTG) [2]. Starting with AmigaOS 3.5, some RTG systems were bundled with the OS, allowing the use of common hardware cards other than the native Amiga chipsets. The main RTG systems are CyberGraphX, Picasso 96 and EGS.
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.
Likewise, while the Amiga is well known for its ability to genlock with video, it had no video capture interface. Third party interfaces include VHI (Video Hardware Interface) by IOSPIRIT GmbH, tv.library by Elbox Computer and tvcard.library by Guido Mersmann.
Audio
Up to version 3.1, AmigaOS only supported the original Amiga chipset's sound capabilities, via audio.device. Support for third-party audio cards was vendor-dependent, until the creation and adoption of AHI [3] as a de facto standard. The Amiga did not have any special software support for MIDI, besides the standard serial driver serial.device. David Joiner's camd.library provides a specific MIDI support library.
ARexx
- Main article: ARexx
The Amiga OS had support for the Rexx language. It was called ARexx (short for "Amiga Rexx") and was a script language which allowed for full OS scripting, similar to BASH on Linux, intra-application scripting, similar to VBA in Microsoft Office, as well as inter-program communication. Having a single scripting language for any application on the operating system was beneficial to users, instead of having to learn a new language for each application.
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 email 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.
Ram Disk
The Amiga OS has the only dynamically sized RAM disk, which would resize itself automatically to its contents. Operating System configuration files were loaded into the RAM disk on boot, greatly speeding operating system usage. Other files could be copied to the RAM disk like any standard device for quick modification and retrieval.
The Amiga OS also had support for a fixed-capacity recoverable RAM disk, which functioned as a standard RAM disk, but could maintain its contents on restart.
Technical overview
The main modularization technique in AmigaOS is based on dynamically-loaded shared libraries, either stored as a file on disk with a ".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.
One standard AmigaOS library enjoys a special status: the exec.library is the only library in the system hooked to a fixed memory address (address 4), and it basically functions as the AmigaOS kernel.
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 means of message passing.
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" filesystems to the standard OFS and FFS. These filesystems 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 bitrate, 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 filesystem-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
- SYS:, which points to the boot drive's root directory; this is the only assign created automatically by the kickstart
- LIBS:, pointing to a directory containing the system's libraries, usually SYS:Libs/
- DEVS:, pointing to a directory containing the system's devices, usually SYS:Devs/
- C:, pointing to a directory containing shell commands, usually SYS:C/
AmigaOS versions
Kickstart/Workbench 1.0, 1.1, 1.2, 1.3
Image:Amiga Workbench 1 3 large.png The 1.x versions are the original implementation of AmigaOS. They defaulted to a distinctive blue and orange colour scheme which was designed to give high contrast on even the worst of television screens (it could easily be changed by the user). Versions 1.1 consisted mostly of bug fixes. Versions 1.0 and 1.1 were distributed only on floppy disks for the Amiga 1000.
Version 1.2 was the first to have Kickstart on a ROM and Workbench on one or two floppy disks. Workbench was then booted from floppy disk or installed on a hard disk on later machines. The early Kickstarts were still available on floppies for Amiga 1000 owners. These versions were shipped in ROM with the A500, A1500, CDTV (1.3 only) and A2000. Version 1.2 of Kickstart fixed many bugs, greatly improving the stability of the system, and added AutoConfig support which could automatically configure expansion boards. Release 1.3 had few changes to Kickstart (mainly to enable autobooting hard disks) but had many improvements in Workbench, including a much faster file system for hard disks, an improved CLI, and various extra programs.
AmigaBASIC and ABasiC
- Main article: AmigaBASIC
Version 1.1 shipped with AmigaBASIC, a BASIC implementation designed by Microsoft (this was the only software ever written by Microsoft for the Amiga).
AmigaBASIC was discontinued with the launch of Kickstart/Workbench 2.x.
Version 1.0 shipped instead with a different BASIC language, called ABasiC, implemented by MetaComCo. Where AmigaBASIC was oriented around creating graphical user interfaces, ABasiC was more similar to the BASIC interpreters shipped with older 8-bit systems, and was geared towards text based applications.
Kickstart/Workbench 1.4
Kickstart/Workbench 1.4 was a beta version of the upcoming 2.0 update and never released, but the Kickstart part was shipped in very small quantities with early Amiga 3000 computers, where it is often referred to as the "Superkickstart ROM". In these machines it is only used to bootstrap the machine and load the Kickstart that will be used to actually boot the system. The appearance is similar to that of 2.0 and higher, with just minor differences. It is, however, possible to dump out of the OS selection screen by clicking where one would expect to see a close gadget. This will cause the machine to boot Kickstart 1.4 using either the wb_2.x: partition, or from a floppy.
Kickstart/Workbench 2.0, 2.05, 2.1
Image:Wb 20.gif Kickstart/Workbench 2.0 introduced a lot of major advances to the Amiga operating system. Gone was the harsh blue and orange colourscheme, replaced with a much easier on the eye grey and light blue. The Workbench was no longer tied to the 640×256 (PAL) or 640×200 (NTSC) display modes, and much of the system was improved with an eye to making future expansion easier. For the first time, a standardised "look and feel" was added. This was done by creating the Amiga Style Guide, and including libraries and software which assisted developers in making conformant software. Technologies included the GUI element creation library gadtools, the software installation scripting language Installer, and the AmigaGuide hypertext help system.
Workbench 2.04 introduced ARexx, a system-wide scripting language. Programmers could add so-called "ARexx ports" to their programs, which allowed them to be controlled from ARexx scripts. Using ARexx, you could make two completely different programs from different vendors work together seamlessly. For example, you could batch-convert a directory of files to thumbnail images with an ARexx capable image manipulation program, create and index HTML table of the thumbnails linking to the original images, and display it in a web browser, all from one script. ARexx became very popular, and was widely adopted by programmers.
The AmigaDOS, previously written in BCPL and very difficult to develop for beyond basic file manipulation, was mostly rewritten in C.
Unfortunately, some badly written software – especially games – failed to run with 2.x, and so a lot of people were upset with this update. Most often, the failure occurred because programmers had used directly manipulated private structures maintained by the operating system, rather than using official function calls.
2.x shipped with the A500+ (2.04), A600 (2.05), A3000 and A3000T. Workbench 2.1 was the last in this series, and only released as a software update. It included useful features such as CrossDOS, to support working with floppy disks formatted for PCs. Since 2.1 was a software-only release, there was no Kickstart 2.1 ROM.
2.x also introduced PCMCIA card support, for the slot on the A600.
Kickstart/Workbench 3.0, 3.1
Image:Amiga Workbench 3.gif 3.x was another major update. Updates included:
- A universal data system, known as datatypes, that allowed programs to load pictures, sound and text in formats they didn't understand directly, through the use of standard plugs (see object-oriented operating system)
- A system-standard localization system, allowing the user to make an ordered list of preferred languages; when a locale-aware application runs, it asks the operating system to find the catalog (a file containing translations of the application's string) best matching the user's preferences
- Colour remapping for low-colour display modes
- Improved visual appearance
- Better support for background images
3.x shipped with the CD32, A1200, A4000 and A4000T.
AmigaOS 3.5, 3.9
Image:AmigaOS 3 9 Workbench.jpg After the demise of Commodore, the later owners of the Amiga trademark granted a license to a German company called Haage & Partner to update the Amiga's operating system. Along with this update came a change in the way people referred to the Amiga's operating system. Rather than specifying "Kickstart" or "Workbench", the updates were most often referred to as simply "AmigaOS".
Updates included:
- CD filesystem support as standard
- Distribution on CD instead of floppy disk
- Supplied with TCP/IP stack, web browser, and e-mail client
- Improved GUI, called "ReAction"
- AVI/MPEG movie player (OS3.9)
- Support for hard disks larger than 4Gb (a limitation from 1.x)
- HTML documentation
- MP3 and CD audio player (OS3.9)
- Dock program (OS3.9)
- Improved Workbench
- Find utility (OS3.9)
- ASync workbench (no more waiting for files to be copied)
AmigaOS 4
A new version of AmigaOS is being developed by Hyperion Entertainment under license from Amiga, Inc. The 4.0 version will be a major update a decade after the last official release.
The new version will be PowerPC native, finally abandoning the Motorola 68k processor. Since there is no more 68000 based Amiga hardware, AmigaOS 4.0 will run on PowerPC hardware, which currently only includes 1200 and 4000 with PowerPC accelerator boards and AmigaOne motherboards. Amiga, Inc.'s distribution policies for AmigaOS 4.0 and any later versions requires that for third party hardware the OS must be bundled with it, with the sole exception of Amigas with Phase 5 PowerPC accelerator boards, for which the OS will be sold separately.
As of April 2006, there is still only one license holder, which is the company that was consulted by Amiga, Inc. to create this distribution model, Eyetech. Eyetech offered until recently Mai Logic's Teron series motherboards under the licensed label "AmigaOne".
A developer pre-release version was sent to purchasers of AmigaOne hardware in June of 2004, and shipped with new AmigaOne boards. This does not have all of the features planned for the full release version, but includes a full SDK based on GCC, and VBCC C/C++ compilers.
Main features planned for AmigaOS 4.0:
- Tripos legacy code finally removed
- Improved TCP/IP networking
- Fully skinnable GUI
- Virtual memory
- Limited memory protection
- CD/DVD writer support, including Mt. Rainier
- Integrated debugger
- Integrated viewer for PDF and other document formats
- Enhanced shared library model
- Support for PowerPC (native) and 68k (emulated JIT) applications
- Improved input device support
- Support for modern hardware devices
- New USB stack
- New PCI stack
- New interface module (replaces the jump table of classic AmigaOS)
- Stack enlargement
- Resource tracking
- Faster memory allocation system, similar to what’s used on Solaris
- 2 GB file limit removed
- New version of AmiDock with plug in support
- New CDFilesystem with Joliet and HFS support, DVDRW support
- HDToolbox replacement
- New HD Recovery tool
- Added support for Truetype and Postscript fonts, with optional anti-aliasing
- Integrated Picasso 96 2D Graphics API
- Integrated Warp3D 3D Graphics API
- Integrated AHI Sound API
AmigaOS influence on other Operating Systems
AmigaOS has spawned at least two "clone" operating systems over time.
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.
Trivia
Some versions of AmigaOS included copyright messages as Easter eggs that required some trickery to access.
- In version 1.x, by holding down both Shift keys and both Alt keys and pressing the function keys F1 through F10, you could see copyright messages in the title bar. As an example, pressing F10 resulted in the message "Moral support: Joe Pillow and the Dancing Fools".
- In versions 2.x and 3.0, the secret message was accessed by repeatedly selecting the "About..." option from the Workbench menu, and leaving the resulting dialog box open. When there were enough (approximately 20) dialog boxes open at the same time, the next one had a secret message instead of the normal one. In version 3.1 the secret message was openly integrated into the "About..." dialog box.
- The Amiga 1000 Kickstart floppy diskette master for AmigaDOS 1.0 was not erased prior to duplication, and contains the remnants of various source code and header text files on the disk.
See also
External links
- Official AmigaOS 4 homepage
- AmigaOS homepage
- AmigaOS Support homepage
- The Workbench Nostalgia Page - Very detailed information on all known versions of AmigaOS.
- Amiga History Guide
- Reference Libraryca:AmigaOS
da:AmigaOS de:AmigaOS es:AmigaOS fr:AmigaOS gl:AmigaOS hr:Amiga OS it:AmigaOS lt:AmigaOS nl:AmigaOS pl:AmigaOS pt:AmigaOS ru:AmigaOS sv:AmigaOS