

<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.amigaos.net/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Brian+Deneen</id>
	<title>AmigaOS Documentation Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.amigaos.net/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Brian+Deneen"/>
	<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/wiki/Special:Contributions/Brian_Deneen"/>
	<updated>2026-05-29T15:57:06Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=Workbench/Prefs/Workbench&amp;diff=12387</id>
		<title>Workbench/Prefs/Workbench</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=Workbench/Prefs/Workbench&amp;diff=12387"/>
		<updated>2023-11-08T19:27:51Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: Corrected &amp;quot;and /&amp;quot; after mouse pointer.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Workbench is the unique Graphical User Interface (GUI) of AmigaOS.  It provides one of the means of interaction with AmigaOS and is typically the first screen that is displayed when AmigaOS is finished booting.  It is composed of a menu system that is accessed by clicking the right mouse button or pointing the mouse pointer at the top of the screen and clicking the right mouse button; icons that are initially visible on the screen and can be displayed by double-clicking the individual image with the left mouse button; and an optional docking system that can be used to organize and control the look and feel of the icon display.&lt;br /&gt;
&lt;br /&gt;
Workbench Preferences allows the user to configure and control this GUI and the programs to which it refers. Currently (2023), the Preferences are found by pointing the mouse into the main area of the Workbench and clicking and holding the right mouse button.  A menu panel then appears which shows 11 choices, one of which is Workbench Preferences.  Hold down the right mouse button and hover over the Preferences menu item to access the 32 programs that determine, in large part, how the Workbench is presented and functions.&lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=Workbench/Prefs/Workbench&amp;diff=12386</id>
		<title>Workbench/Prefs/Workbench</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=Workbench/Prefs/Workbench&amp;diff=12386"/>
		<updated>2023-11-07T09:30:20Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: Added this item describing the Workbench Preferences menu for new users.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Workbench is the unique Graphical User Interface (GUI) of AmigaOS.  It provides one of the means of interaction with AmigaOS and is typically the first screen that is displayed when AmigaOS is finished booting.  It is composed of a menu system that is accessed by clicking the right mouse button and / or pointing the mouse pointer at the top of the screen and clicking the right mouse button; icons that are initially visible on the screen and can be displayed by double-clicking the individual image with the left mouse button; and an optional docking system that can be used to organize and control the look and feel of the icon display.&lt;br /&gt;
&lt;br /&gt;
Workbench Preferences allows the user to configure and control this GUI and the programs to which it refers. Currently (2023), the Preferences are found by pointing the mouse into the main area of the Workbench and clicking and holding the right mouse button.  A menu panel then appears which shows 11 choices, one of which is Workbench Preferences.  Hold down the right mouse button and hover over the Preferences menu item to access the 32 programs that determine, in large part, how the Workbench is presented and functions.&lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=Glossary&amp;diff=12385</id>
		<title>Glossary</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=Glossary&amp;diff=12385"/>
		<updated>2023-11-07T09:11:54Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: Added &amp;quot;Workbench&amp;quot; as a glossary item for new users.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Glossary]][[Category:Work_In_Progress]]&lt;br /&gt;
[[Amiga_25_Years|25 Years of Amiga and AmigaOS]]&lt;br /&gt;
&lt;br /&gt;
[[AAC_(Advanced_Audio_Coding)|AAC (Advanced Audio Coding)]]&lt;br /&gt;
&lt;br /&gt;
[[Acube_Systems|Acube Systems]]&lt;br /&gt;
&lt;br /&gt;
[[AISS_(Amiga_Image_Storage_System)|AISS (Amiga Image Storage System]]&lt;br /&gt;
&lt;br /&gt;
[[AmiDock|AmiDock]]&lt;br /&gt;
&lt;br /&gt;
[[AmigaGuide|AmigaGuide]]&lt;br /&gt;
&lt;br /&gt;
[[AmigaKit|AmigaKit]]&lt;br /&gt;
&lt;br /&gt;
[[AmigaOS.net|AmigaOS.net]]&lt;br /&gt;
&lt;br /&gt;
[[AmigaOne_X1000|AmigaOne X1000]]&lt;br /&gt;
&lt;br /&gt;
[[AmiGS|AmiGS]]&lt;br /&gt;
&lt;br /&gt;
[[Aminet|Aminet]]&lt;br /&gt;
&lt;br /&gt;
[[APPDIR|APPDIR]]&lt;br /&gt;
&lt;br /&gt;
[[ARexx|ARexx]]&lt;br /&gt;
&lt;br /&gt;
[[Assign_(Command)|Assign (Command)]]&lt;br /&gt;
&lt;br /&gt;
[[Broadband|Broadband]]&lt;br /&gt;
&lt;br /&gt;
[[Cairo|Cairo]]&lt;br /&gt;
&lt;br /&gt;
[[WBPattern|Changing the desktop background]]&lt;br /&gt;
&lt;br /&gt;
[[Screensaver|Changing the ScreenSaver/Blanker]]&lt;br /&gt;
&lt;br /&gt;
[[Close_All_Windows|Close All Drawers]]&lt;br /&gt;
&lt;br /&gt;
[[Close_Parent|Close Parent Drawer]]&lt;br /&gt;
&lt;br /&gt;
[[Context_Menus|Context Menus]]&lt;br /&gt;
&lt;br /&gt;
[[Cut_Copy_and_Paste|Cut, Copy and Paste]]&lt;br /&gt;
&lt;br /&gt;
[[Kicklayout|Kicklayout]]&lt;br /&gt;
&lt;br /&gt;
[[AmigaOS_Updates|Updating to the latest version of AmigaOS]]&lt;br /&gt;
&lt;br /&gt;
[[Workbench|Workbench]]&lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=Amiga_25_Years&amp;diff=12384</id>
		<title>Amiga 25 Years</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=Amiga_25_Years&amp;diff=12384"/>
		<updated>2023-11-07T09:09:50Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: Added period after &amp;quot;2010&amp;quot;, capitalized the following &amp;quot;The.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;Amiga 25 Years&#039; is a Video produced by one of the lead developers at Hyperion Entertainment showcasing 25 years of Amiga development.&lt;br /&gt;
&lt;br /&gt;
The video shows the development of AmigaOS from its birth up to 2010.  The animation in this video was realised using the open source software solution Gource.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Watch the Video on YouTube:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=5NJ1TlQwLTs&lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=UserDoc:How_AmigaOS_Works&amp;diff=12371</id>
		<title>UserDoc:How AmigaOS Works</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=UserDoc:How_AmigaOS_Works&amp;diff=12371"/>
		<updated>2023-10-03T15:51:28Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: /* Removing the JIT Emulator */ Removed excess &amp;quot;the&amp;quot; occurrences and changed punctuation for smoother reading.  Please see &amp;quot;Show Changes&amp;quot; page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As already mentioned, AmigaOS was a pioneer in the early days of personal computing in delivering sophistication that contemporary systems could only have dreamt of and pretended to offer. Today, AmigaOS continues to offer a straightforward elegance that seems to be overlooked in the development of other platforms. Thanks to the concepts behind AmigaOS, the system is easy to understand and to use by everyone.&lt;br /&gt;
&lt;br /&gt;
In this page we will explore all these concepts of AmigaOS. Also you will learn here the naming of all parts of the system.&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
AmigaOS is made of different components which are either mandatory (i.e.,  AmigaOS will not work without them) or components the user can choose to use or not. All these components can have one or mutiple interfaces a user or a developer can use to operate with the components and through them to control the operating system.&lt;br /&gt;
&lt;br /&gt;
= The most important components =&lt;br /&gt;
&lt;br /&gt;
== Exec, the AmigaOS kernel ==&lt;br /&gt;
&lt;br /&gt;
Exec is the kernel of AmigaOS. It is the component that pilots all other components. It is responsible for running programs, dealing with computer memory and managing low-level resources that programs may need. In other words, it organises everything to make the operating system run.&lt;br /&gt;
&lt;br /&gt;
It is made of different parts that cannot be moved outside the kernel: the scheduler, the memory pager and the 68k interpretive emulator.&lt;br /&gt;
&lt;br /&gt;
== AmigaDOS: the underlying system ==&lt;br /&gt;
&lt;br /&gt;
The word &amp;quot;DOS&amp;quot; was originally an acronym for &amp;quot;Disk Operating System&amp;quot;. Some say it should be &amp;quot;Disk Based Operating System&amp;quot; as it does a lot more than operate a disk and that it was really an operating system based (stored) on disks.  Some say it should be &amp;quot;Device Operating System&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The whole AmigaDOS system includes things such as:&lt;br /&gt;
&lt;br /&gt;
* A set of commands that can be used in the Shell window and elsewhere.&lt;br /&gt;
* A system for saving data to disk and retrieving it from disk.&lt;br /&gt;
* A system for filing data on disks.&lt;br /&gt;
* An interface for peripherals such as keyboards, monitors, printers, etc.&lt;br /&gt;
* A method of running programs&lt;br /&gt;
* A multitasking system for running more than one program at a time.&lt;br /&gt;
* etc. etc. etc.&lt;br /&gt;
&lt;br /&gt;
Read the [[AmigaDOS manual]] to understand and learn everything about AmigaDOS.&lt;br /&gt;
&lt;br /&gt;
== The Graphics library ==&lt;br /&gt;
&lt;br /&gt;
The Graphics library handles every low level graphic operation like designing pixels on the monitor, creating graphic elements (bobs, sprites) and also writing text output.&lt;br /&gt;
&lt;br /&gt;
== Intuition ==&lt;br /&gt;
&lt;br /&gt;
The Intuition library is responsible for every graphical object: windows, screens, gadgets, mouse pointers... It lies between any graphic program and the graphics library.&lt;br /&gt;
&lt;br /&gt;
== The Workbench ==&lt;br /&gt;
&lt;br /&gt;
The Workbench is the graphical place where you will manage your computer and all your files. The name was chosen because the user will use tools to create and work with the computer.&lt;br /&gt;
&lt;br /&gt;
[[File:Wb.png|320px]]&lt;br /&gt;
&lt;br /&gt;
== The Shell ==&lt;br /&gt;
&lt;br /&gt;
While some people prefer to control the operating system using their mouse, others prefer using the keyboard. The shell is a text based window when you can type commands to execute actions in the operating system. In the shell the commands will display the results of their execution.&lt;br /&gt;
&lt;br /&gt;
== ARexx - inter-program communication by scripting ==&lt;br /&gt;
&lt;br /&gt;
The ARexx scripting language can be used to operate the Workbench and other Amiga applications from a script containing ARexx commands. This is extremely useful in performing repetitive tasks or doing what the controlled application was not even designed to do.&lt;br /&gt;
After a learning curve, everybody can use ARexx as it is built into the system.  The scripts can be executed immediately like any other tool.&lt;br /&gt;
&lt;br /&gt;
= How is my data stored? =&lt;br /&gt;
== Files ==&lt;br /&gt;
=== Executable files ===&lt;br /&gt;
Programs you can start are stored in executable files. They contain binary code directly understandable by the computer. They are files with an executable bit, a flag that shows AmigaOS that such file will do something when started.&lt;br /&gt;
An example is a music player. When you start this executable, the player opens and you can start playing music files.&lt;br /&gt;
&lt;br /&gt;
AmigaOS can run two different kinds of executable files: the AmigaOS native programs made for the PowerPC processor and programs created for the Motorola 68k processors. The latter are executed inside an emulation that translates them into PowerPC code.&lt;br /&gt;
&lt;br /&gt;
==== Scripts ====&lt;br /&gt;
&lt;br /&gt;
Scripts are text files containing a list of commands.  They are not strictly executables like &#039;&#039;binary code&#039;&#039; files but they can be executed by AmigaOS as if they were.&lt;br /&gt;
This is the case with AmigaDOS and ARexx scripts. These files need to have the executable and script bits set.&lt;br /&gt;
&lt;br /&gt;
=== Data files ===&lt;br /&gt;
Files that are not executable are data files. These contain data that will be manipulated by programs. Some examples are a music file, a video file or a text document.&lt;br /&gt;
&lt;br /&gt;
== Directories/Drawers ==&lt;br /&gt;
In order to organise things, files are grouped together. We create &amp;quot;directories&amp;quot; which are like drawers of a cabinet to store different files of the same kind, for example.  &lt;br /&gt;
Often the name &#039;&#039;directory&#039;&#039; is used when talking about a directory which is stored on a disk. The graphical interface of AmigaOS is called &amp;quot;Workbench,&amp;quot; and directories are often called &#039;&#039;drawers&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Note: directories are often called &#039;&#039;folders&#039;&#039; on other systems.  The terms &amp;quot;directory,&amp;quot; &amp;quot;drawer&amp;quot; and &amp;quot;folder&amp;quot; are synonymous.&lt;br /&gt;
&lt;br /&gt;
== Disks, partitions and volumes ==&lt;br /&gt;
=== Disks ===&lt;br /&gt;
Disks are storage media you can purchase at a computer store. We use them to store our files. They can be internal hard disks, external hard drives, USB interface devices (i.e., SD cards, CF cards, &amp;quot;flash&amp;quot; drives, etc.), and floppy disk drives.&lt;br /&gt;
&lt;br /&gt;
=== Partitions ===&lt;br /&gt;
A disk is often very big and many users prefer to make it more organised. This is done by virtually splitting the disk into several smaller parts. This operation is known as creating partitions on a disk.&lt;br /&gt;
&lt;br /&gt;
[[File:Partitions.png|Small part of Media Toolbox showing different partitions on the harddisk]]&lt;br /&gt;
&lt;br /&gt;
On this screenshot you can see one harddisk with many partitions. Each color corresponds to a different filesystem which defines how data is stored. Also, you can see a greyed area which is a blank area on the disk (i.e., no partition is defined at this position).  Several different file systems can be used on the same Amiga drive.  It&#039;s your choice.&lt;br /&gt;
&lt;br /&gt;
=== Volumes ===&lt;br /&gt;
A partition is a physical area on a disk. To access it with AmigaOS we must read the physical data off the partition. To make it easier AmigaOS uses the concept of volumes. These are virtual representations of a partition. The volumes have a name so AmigaOS and therefore the user can access all files/directories stored on it in a very practical way: just by using its name.&lt;br /&gt;
&lt;br /&gt;
Volume names can refer to either a physical or virtual named space.  See the autodoc section for the ASSIGN command in the C: directory as well as the MOUNT command which provides more information on naming and the concept of volumes.&lt;br /&gt;
&lt;br /&gt;
= How to identify files/directories =&lt;br /&gt;
&lt;br /&gt;
== On the Workbench ==&lt;br /&gt;
&lt;br /&gt;
The Workbench being graphical, a lot of things are understandable just by looking at them. That&#039;s why icons are often enough to understand what kind of object it represents: a file, a directory, a disk...&lt;br /&gt;
&lt;br /&gt;
In case you have a doubt, just look at the information on an icon. The Workbench will tell you the type of the object. It is displayed next to its name.&lt;br /&gt;
&lt;br /&gt;
== In a shell ==&lt;br /&gt;
&lt;br /&gt;
In a shell the &#039;&#039;&#039;list&#039;&#039;&#039; command can be used to see if an object is a file or a directory.&lt;br /&gt;
&lt;br /&gt;
[[File:Files-dirs-in-shell.png|The &#039;&#039;&#039;list&#039;&#039;&#039; command shows a file of 925678 bytes and two directories]]&lt;br /&gt;
&lt;br /&gt;
A file will be displayed with its size, whereas a directory will be displayed with the text &#039;&#039;&#039;Dir&#039;&#039;&#039; next to it.&lt;br /&gt;
&lt;br /&gt;
Also, as you can see on the screenshot, the list command displays other characteristics on these 3 items: the protection bits and the date they were updated the last time. The command also sums up what it just listed.&lt;br /&gt;
&lt;br /&gt;
= All AmigaOS components =&lt;br /&gt;
&lt;br /&gt;
AmigaOS is made of components that are needed as soon as the system starts or later when the user or the system needs them.&lt;br /&gt;
&lt;br /&gt;
== Kickstart modules ==&lt;br /&gt;
&lt;br /&gt;
These components are the heart of AmigaOS. Their duty is to draw graphics, to handle discs or to handle all reads/writes to files. Also one of them is the AmigaOS kernel which is a kind of director handling the work of all other components.&lt;br /&gt;
These Kickstart modules are loaded at the beginning of the operating system boot process (read [[UserDoc:How_AmigaOS_Works#AmigaOS_boot_procedure|here]]). You can find them all in the &#039;&#039;&#039;Kickstart&#039;&#039;&#039; directory on the system volume. Here is a list:&lt;br /&gt;
&lt;br /&gt;
=== Mandatory modules ===&lt;br /&gt;
&lt;br /&gt;
The following modules are required in any AmigaOS system. Without one of these, the system will not start.&lt;br /&gt;
&lt;br /&gt;
* kernel - The kernel works like the conductor of an orchestra. Its job is to make everything work together. It creates processes, handles memory usage, defines the way other components will access peripherals...etc. Note that the AmigaOS kernel is not based on any other kernel. It is a unique kernel that has existed since 1983.&lt;br /&gt;
* loader - this component handles the loading of all other kickstart modules&lt;br /&gt;
* battclock.resource.kmod - this module handles reading/writing the battery backed up clock which is used on all computers to keep the date and time&lt;br /&gt;
* bootimage - this is the boot picture. It is displayed during the start sequence of AmigaOS&lt;br /&gt;
* bootmenu.kmod - this component handles the Early Startup Menu the user can employ to define some settings before starting AmigaOS&lt;br /&gt;
* con-handler.kmod - it directs read and write requests to the console window, to a serial AUX: device or any other supported interface&lt;br /&gt;
* console.device.kmod - it opens a window and reads/writes text to and from that window&lt;br /&gt;
* diskboot.kmod - handles the booting of AmigaOS from a supported disk&lt;br /&gt;
* diskboot.config - this is a text file experienced users can modify to change the boot behaviour of AmigaOS&lt;br /&gt;
* dos.library.kmod - this module is a collection of functions that any program can use to perform actions on disks, files and directories&lt;br /&gt;
* elf.library.kmod - handles the loading of executable programs&lt;br /&gt;
* env-handler.kmod - handles the reads/writes of environment variables&lt;br /&gt;
* FileSystem.resource.kmod - handles access to the different filesystems&lt;br /&gt;
* gadtools.library.kmod - a collection of functions used to create all graphic objects like gadgets, sliders, menus...&lt;br /&gt;
* gameport.device.kmod - handles the reads/writes of game pads and joysticks&lt;br /&gt;
* graphics.library.kmod - a collection of functions used to draw graphic elements on the monitor&lt;br /&gt;
* hunk.library.kmod - a set of functions to read a data stream into memory&lt;br /&gt;
* input.device.kmod - handles input events like keyboard events or mouse clicks&lt;br /&gt;
* intuition.library.kmod - a collection of functions to create and handle all graphic elements (screens, windows, the mouse pointer...)&lt;br /&gt;
* layers.library.kmod - set of functions to be used to handle different layers in graphic operations&lt;br /&gt;
* keyboard.device.kmod - driver for the keyboard&lt;br /&gt;
* keymap.library.kmod - functions to handle different keymaps&lt;br /&gt;
* newlib.library.kmod - collection of functions to perform memory operations (allocating memory, copying memory areas... )&lt;br /&gt;
* nonvolatile.library.kmod - provides a simple means for an application developer to manage nonvolatile storage&lt;br /&gt;
* nvram.resource.kmod - handles the reads/writes to the NVRAM chip present on many AmigaOS computers&lt;br /&gt;
* PCIGraphics.card - driver that supports the use of different graphic cards&lt;br /&gt;
* ram-handler.kmod - functions that handle the &#039;&#039;&#039;Ram disk:&#039;&#039;&#039;.&lt;br /&gt;
* ramdrive.device.kmod - device that allows the usage of the ramdrive device &#039;&#039;&#039;RAD:&#039;&#039;&#039; disk&lt;br /&gt;
* ramlib.kmod - loads disk based libraries and devices for exec.library&lt;br /&gt;
* rtg.library - library of functions to perform low level graphic operations on graphics cards&lt;br /&gt;
* shell.kmod - the AmigaOS command line interface&lt;br /&gt;
* strap.kmod - module that handles booting on different disk devices&lt;br /&gt;
* timer.device.kmod - driver to give access to timing functions&lt;br /&gt;
&lt;br /&gt;
=== Filesystem support ===&lt;br /&gt;
&lt;br /&gt;
These kickstart modules can be loaded optionally. If you want to use a particular filesystem on your disk partitions, you need to load the corresponding filesystem module.&lt;br /&gt;
&lt;br /&gt;
* CDFileSystem - handles the CD-ROM disks with data stored in different formats: ISO9660, HFS...&lt;br /&gt;
* SmartFilesystem - allows the usage of partitions in SFS0 and SFS2 layouts&lt;br /&gt;
* JXFileSystem - allows the usage of partitions in JXFS layout (now obsolescent)&lt;br /&gt;
* FastFileSystem - allows the usage of partitions in FFS and FFS2 layouts&lt;br /&gt;
* NGFileSystem - an experimental file system designed to gradually replace the FastFileSystem&lt;br /&gt;
* diskcache.library.kmod - component required by the SmartFileSystem and JXFileSystem modules&lt;br /&gt;
&lt;br /&gt;
=== Hardware drivers ===&lt;br /&gt;
&lt;br /&gt;
==== Graphic cards drivers ====&lt;br /&gt;
&lt;br /&gt;
* 3dfxVoodoo.chip&lt;br /&gt;
* 3DLabsPermedia2.chip&lt;br /&gt;
* ATIRadeon.chip&lt;br /&gt;
* RadeonHD.chip&lt;br /&gt;
* siliconmotion502.chip&lt;br /&gt;
&lt;br /&gt;
==== Disk drivers ====&lt;br /&gt;
&lt;br /&gt;
Each of these drivers allows the use of disks connected to a disk controller. These files are named after the controller they support. As an example, the &#039;&#039;&#039;sii3114ide.device.kmod&#039;&#039;&#039; allows the use of disks connected to a &#039;&#039;&#039;Silicon Image SiI3114&#039;&#039;&#039; controller chip.&lt;br /&gt;
&lt;br /&gt;
* it8212ide.device.kmod&lt;br /&gt;
* lsi53c8xx.device.kmod&lt;br /&gt;
* sam460sata.device.kmod&lt;br /&gt;
* sii3112ide.device.kmod&lt;br /&gt;
* sii3512ide.device.kmod&lt;br /&gt;
* sii3114ide.device.kmod&lt;br /&gt;
* sii0680ide.device.kmod&lt;br /&gt;
* sii3132ide.device.kmod&lt;br /&gt;
&lt;br /&gt;
==== USB drivers ====&lt;br /&gt;
&lt;br /&gt;
* hub.usbfd&lt;br /&gt;
* usbsys.device&lt;br /&gt;
* usbresource.library&lt;br /&gt;
* ehci.usbhcd&lt;br /&gt;
* ohci.usbhcd&lt;br /&gt;
* uhci.usbhcd&lt;br /&gt;
* massstorage.usbfd&lt;br /&gt;
&lt;br /&gt;
==== Other drivers ====&lt;br /&gt;
&lt;br /&gt;
* bootkeyboard.usbfd - allows a USB keyboard to be used even before the USB stack is loaded&lt;br /&gt;
* bootmouse.usbfd - allows a USB mouse to be used even before the USB stack is loaded&lt;br /&gt;
* fpga.resource.kmod - allows to use the FPGA components which are present on some Amiga computers&lt;br /&gt;
* i2c.resource.kmod - allows to use the i2c interface present on some Amiga computers&lt;br /&gt;
* xena.resource.kmod - provides access to the Xena chip on the AmigaOne X1000&lt;br /&gt;
&lt;br /&gt;
==== Misc modules ====&lt;br /&gt;
&lt;br /&gt;
* petunia.library.kmod - this module contains the Just-In-Time emulator that allows AmigaOS to run programs made for the Motorola 68k processor&lt;br /&gt;
&lt;br /&gt;
== Control of the Kickstart ==&lt;br /&gt;
&lt;br /&gt;
The Kickstart/ drawer contains an ASCII file called &amp;quot;Kicklayout&amp;quot;. This file lists all the modules that must be loaded from the system volume during the boot process. It is read by the boot loaders &amp;quot;SLB&amp;quot; or &amp;quot;amigaboot&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The Kicklayout file consists of a number of configurations, each of which describes a set of Kickstart modules. Each configuration has a label and the various configurations are listed by label on the boot screen. The user may elect to load the default configuration or to select any one of the other configurations. Often a developer will have several configurations in his/her Kicklayout file, some of which may be experimental, while the default is a &amp;quot;known good&amp;quot; configuration to which (s)he can fall back.&lt;br /&gt;
&lt;br /&gt;
You can edit the Kicklayout file using Notepad or any other ASCII editor. You are strongly advised to leave the original configuration unchanged (as a fall-back) and to add new configurations at the end of the file, each with its own label. That way you can still recover if you make a mistake while editing.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;; Configuration name&lt;br /&gt;
LABEL MainSystem&lt;br /&gt;
; Exec name&lt;br /&gt;
EXEC Kickstart/loader.of&lt;br /&gt;
;&lt;br /&gt;
; PPC native modules&lt;br /&gt;
;&lt;br /&gt;
MODULE Kickstart/kernel&lt;br /&gt;
;&lt;br /&gt;
MODULE Kickstart/FastFileSystem&lt;br /&gt;
MODULE Kickstart/CDFileSystem&lt;br /&gt;
MODULE Kickstart/NGFileSystem&lt;br /&gt;
;&lt;br /&gt;
(etc)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that lines that start with a semicolon (&amp;quot;;&amp;quot;) are treated as comments and are ignored. Each configuration must start with a &amp;quot;LABEL&amp;quot; keyword and should be separated from the previous configuration by a blank line. The blank line signifies &amp;quot;Stop loading here&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Each module to be loaded is defined by the &amp;quot;MODULE&amp;quot; keyword, followed by the path and file name. You can use any path &#039;&#039;on the system volume&#039;&#039;, so you could have two or more drawers containing Kickstart modules and address them independently if you so wished. You can not refer to modules on other volumes, since they have not been mounted by DOS (which does not exist yet) and only the system volume is available at this early stage.&lt;br /&gt;
&lt;br /&gt;
=== Selecting the Default Configuration ===&lt;br /&gt;
&lt;br /&gt;
You can specify in the NVRAM the label of the default configuration in the Kicklayout. For instance, if your default configuration is called &amp;quot;MainSystem&amp;quot;, the LABEL line will look like this:&lt;br /&gt;
&lt;br /&gt;
LABEL MainSystem&lt;br /&gt;
&lt;br /&gt;
You can define an NVRAM variable called &amp;quot;boot_config&amp;quot; using U-Boot, CFE or the &amp;quot;nvsetvar&amp;quot; tool. Simply type:&lt;br /&gt;
&lt;br /&gt;
nvsetvar boot_config &amp;quot;MainSystem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[Note that nvsetvar may be inhibited from writing to the NVRAM on some systems, in which case you will have to use U-Boot or CFE to set the variable]&lt;br /&gt;
&lt;br /&gt;
If you do not specify a default configuration with the &amp;quot;boot_config&amp;quot; variable, the boot loader will default to the first configuration in the Kicklayout.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== System components ==&lt;br /&gt;
&lt;br /&gt;
[[File:Workbench_directory_listing.png|frame|right|List of directories and files present at the root of any AmigaOS system]]&lt;br /&gt;
&lt;br /&gt;
Beside the kickstart modules, AmigaOS uses many different components that can be loaded only when needed. These files are stored in different directories in the system volume.&lt;br /&gt;
A default AmigaOS installation looks like this:&lt;br /&gt;
&lt;br /&gt;
* C&lt;br /&gt;
This directory contains AmigaDOS &#039;&#039;&#039;C&#039;&#039;&#039;ommands&lt;br /&gt;
* Classes&lt;br /&gt;
contains different object elements easy to be used in any program: gadgets, requesters, graphic table, windows...&lt;br /&gt;
* Devs&lt;br /&gt;
contains definitions for &#039;&#039;&#039;Dev&#039;&#039;&#039;ices&lt;br /&gt;
* Emulation&lt;br /&gt;
contains files used for the 68k emulation (though E-UAE)&lt;br /&gt;
* Fonts&lt;br /&gt;
contains various systems fonts&lt;br /&gt;
* Internet&lt;br /&gt;
contains Internet-related files and configurations&lt;br /&gt;
* Kickstart&lt;br /&gt;
contains the kickstart modules&lt;br /&gt;
* L&lt;br /&gt;
contains hand&#039;&#039;&#039;l&#039;&#039;&#039;ers and filesystems&lt;br /&gt;
* Libs&lt;br /&gt;
contains dynamic &#039;&#039;&#039;Lib&#039;&#039;&#039;rairies of functions&lt;br /&gt;
* Locale&lt;br /&gt;
contains all files used to customise the system for your locality (catalogs, keymaps...)&lt;br /&gt;
* MUI&lt;br /&gt;
contains the files needed for programs that use the MUI third party graphic interface&lt;br /&gt;
* [[Prefs]]&lt;br /&gt;
contains the preference programs used to customise AmigaOS&lt;br /&gt;
* S&lt;br /&gt;
contains the system&#039;s &#039;&#039;&#039;S&#039;&#039;&#039;cripts&lt;br /&gt;
* SObjs&lt;br /&gt;
contains .so shared object library files&lt;br /&gt;
* Storage&lt;br /&gt;
contains other optional files, not currently used&lt;br /&gt;
* System&lt;br /&gt;
contains some programs used by the system itself (i.e. you don&#039;t need to run them yourself) or low-level programs like disk tools&lt;br /&gt;
* [[Utilities]]&lt;br /&gt;
contains several programs you can use to achieve some tasks on AmigaOS&lt;br /&gt;
&lt;br /&gt;
= Motorola 680x0 Emulators =&lt;br /&gt;
&lt;br /&gt;
For a long time Amigas have had the famous Motorola 680x0 processors as the central unit for execution. Unfortunately the time of the 680x0 series is passing in favor of other architectures. The new era of processors reached the Amiga some time ago, when expansion boards became available for extending the Classic systems with the raw power of a PowerPC processor.&lt;br /&gt;
&lt;br /&gt;
In the old operating system (AmigaOS 3.x) it was not possible to gain the full advantage of the new processors. The system itself and most of the applications required the original Motorola 680x0 processor. There was no 680x0 emulation available for the PowerPCs, so the 680x0 could not be &amp;quot;switched off&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Thus the new processors remained as a powerful, but mostly unused adjunct to the main 680x0 processor. &amp;quot;Native&amp;quot; PowerPC programs were rare, and every time a PowerPC program called the system, a so called &amp;quot;context switch&amp;quot; occurred between the 680x0 and PowerPC code, often causing a large performance penalty.&lt;br /&gt;
&lt;br /&gt;
The new Amiga platform is based on the PowerPC processor family, therefore the new version of the AmigaOS has to smooth the transition from the 680x0 series, which is achieved by emulating the old processor architecture. The operating system itself is written almost 100 percent for the PowerPC processors, but the 680x0 legacy applications require an emulated 680x0 processor. &lt;br /&gt;
&lt;br /&gt;
== Two 680x0 Emulators ==&lt;br /&gt;
&lt;br /&gt;
In version 4.0 of AmigaOS, two different emulators were implemented. One is the successor of BlackBox emulation.  It is an interpretive emulator with mediocre emulation speed. On the other hand, it has a very low &amp;quot;reaction time&amp;quot; and is ideal for time critical parts, such as interrupts.&lt;br /&gt;
&lt;br /&gt;
The other is Petunia, the &amp;quot;JIT emulator&amp;quot;, a fast but less compatible way of emulation of the legacy Motorola processors. It is intended mainly for emulating applications. When execution of the application leaves the bounds of the application&#039;s code segment, emulation falls back to the interpretive method, where it does its job and returns to the JIT emulation again.&lt;br /&gt;
&lt;br /&gt;
Dynamic recompilation (also called just-in-time compilation or simply JIT compilation) is a technique of translating foreign processor machine code to native machine code &amp;quot;on the fly&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This technique is common nowadays in JAVA virtual machines.  It is also used with success in several emulators. In dynamic recompilation, there is the possibility of runtime optimization of the emulated code by collecting statistics of the execution process. Therefore (theoretically) the final executed code can be even faster than the original code on its original processor.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Emulated opcodes:&lt;br /&gt;
* all user and supervisor level opcodes of the Motorola 68040&lt;br /&gt;
* all FPU opcodes of the Motorola 68881/68882 &lt;br /&gt;
&lt;br /&gt;
AmigaOS claims only 68020/68881 compatibility to applications because this is the safest compatibility level, but both emulators are compatible with the machine code up to the level of 68040/060 processors.&lt;br /&gt;
&lt;br /&gt;
At compile time, a low level flag and branch control analysis allows on-the-fly optimizations of compiled code.&lt;br /&gt;
&lt;br /&gt;
== Removing the JIT Emulator ==&lt;br /&gt;
&lt;br /&gt;
Using dynamic translation requires a lot more memory than interpretive emulation. The translated code needs to be stored somewhere, not to mention the data collection tables.&lt;br /&gt;
&lt;br /&gt;
If speed is not as important as the memory consumption of the system, the JIT emulator can be removed, leaving the job to the interpretive emulator.&lt;br /&gt;
&lt;br /&gt;
Thanks to the modular design of AmigaOS kickstart, all you need to do is edit the &amp;quot;Sys:Kickstart/Kicklayout&amp;quot; file. Simply put a semicolon (;) at the beginning of the module line &amp;quot;Petunia.library.kmod&amp;quot;. After executing a &amp;quot;cold&amp;quot; system reboot, the JIT emulator will not be reloaded. Make sure that you alter the appropriate configuration in the Kicklayout file.  There may be several alternative configurations with different names, such as &amp;quot;DefaultJIT&amp;quot; or &amp;quot;DefaultNoJIT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Configuring the Emulators ==&lt;br /&gt;
&lt;br /&gt;
Petunia cooperates with a so called &amp;quot;black list&amp;quot;. By default, Petunia emulates every 680x0 program or library that is loaded by DOS.library/LoadSeg function, but if an executable or library shows incompatibilities with Petunia, then it can be explicitly inhibited from the dynamic recompilation by specifying it in a list.&lt;br /&gt;
&lt;br /&gt;
If an executable needs to be added to the list, then it can be done by extending the file &amp;quot;DEVS:applications.dos&amp;quot; with the &#039;&#039;&#039;Compatibility&#039;&#039;&#039; preferences program from the Prefs drawer of the system. Adding a program name to the list and checking it will prevent Petunia from emulating that program, and it will be interpreted instead by the built-in interpreter.&lt;br /&gt;
&lt;br /&gt;
Removing a program from the list or unchecking (thus allowing Petunia to emulate it again) can be done with the same preferences program.&lt;br /&gt;
&lt;br /&gt;
Please note: some programs consist of multiple executables (shared libraries, plugins). If you want to fully disable the translation of such programs, then every part must be added to the list.&lt;br /&gt;
&lt;br /&gt;
For example to disable UnArc fully, you would have to add to the list all files from libs:xad and also xadmaster.library. &lt;br /&gt;
&lt;br /&gt;
= AmigaOS boot procedure =&lt;br /&gt;
&lt;br /&gt;
Classic Amigas with PowerPC accelerators, the original AmigaOne SE/XE and the Sam series of Amigas all use the Second Level Booter (SLB) to read their Kickstart modules from the system volume. The newer A-Eon machines (X1000, X5000, A1222) all use a loader called AmigaBoot. In the X1000, AmigaBoot must be read from an FFS partition, while in the later machines, it is stored in the on-board CF card. The process of loading the kickstart modules is the same in all cases.&lt;br /&gt;
&lt;br /&gt;
Basically a computer with AmigaOS does the following when the power button is pushed:&lt;br /&gt;
&lt;br /&gt;
* [[File:Uboot.jpg|200px]]&lt;br /&gt;
The BIOS ([[UserDoc:BIOS|Uboot]] or [[UserDoc:BIOS|CFE]]) of the computer initialises the hardware: graphic card, USB ports... At this point, the monitor wakes up and the first information is displayed. This shows if hardware is correctly recognised. As an example you can see if a hard drive is correctly connected into the machine and your BIOS is correctly set up to make this drive useable.&lt;br /&gt;
* Depending on the machine type, the BIOS will look on the harddisk to find the Second Level Booter (SLB) or AmigaBoot, or will execute the AmigaBoot program from the on-board NVRAM. Whereas the BIOS does not know about AmigaOS disk structure, the SLB/AmigaBoot can &#039;&#039;understand&#039;&#039; the AmigaOS partitions and file systems. In other words, it is the link between the BIOS and the rest of the boot procedure. Its goal is also to give you the ability to start several configurations present on the same drive.&lt;br /&gt;
* [[File:SLB.png|200px]]&lt;br /&gt;
SLB/AmigaBoot analyses all Amiga partitions on the system disk. It reads each system configuration it finds on the partition and displays them all for the user to select one to load. AmigaBoot (not SLB) also displays configurations from Kickstart/Kicklayout files on every &amp;quot;bootable&amp;quot; partition.&lt;br /&gt;
The user can [[UserDoc:How_AmigaOS_Works#Control_of_the_Kickstart|define]] many different kickstart configurations to choose from. Also both AmigaOS and Linux can be selected for boot.&lt;br /&gt;
* [[File:Kmods loading.png|200px]]&lt;br /&gt;
SLB/AmigaBoot loads the kickstart files of the selected configuration and executes the &#039;&#039;&#039;Loader&#039;&#039;&#039; module&lt;br /&gt;
* &#039;&#039;&#039;Loader&#039;&#039;&#039; executes the kickstart modules (Exec, devices, libraries...)&lt;br /&gt;
* AmigaOS becomes alive displaying the AmigaOS boot picture on the monitor&lt;br /&gt;
* The AmigaDOS library executes the [[UserDoc:System_Scripts#startup-sequence|startup-sequence]] script found on the system volume&lt;br /&gt;
* The Startup-sequence will be executed and all commands it contains are executed. It means that starting from here the boot procedure is easy to follow and understand.&lt;br /&gt;
* The Workbench is started&lt;br /&gt;
&lt;br /&gt;
At this point the user can use his/her computer.&lt;br /&gt;
&lt;br /&gt;
= How to make a Bootable USB Memory Stick for AmigaOS 4.1 =&lt;br /&gt;
&lt;br /&gt;
By Julian Margetson (&amp;quot;Spectre660&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Prerequisites:&lt;br /&gt;
* USB memory stick of 2 GB or less in size.&lt;br /&gt;
* It is best to only have one USB mass storage device connected while you are creating your bootable USB memory stick.&lt;br /&gt;
* Plug the USB memory stick into a USB port on your machine.&lt;br /&gt;
* Note that the device will be formatted so make sure that you use an empty memory stick or one that does not contain any data that you need or backup the contents before you begin.&lt;br /&gt;
&lt;br /&gt;
Procedure:&lt;br /&gt;
# You use Media Toolbox in the System: drawer to prepare the USB stick. On starting Media Toolbox select &#039;&#039;usbdisk.device&#039;&#039; as the device to use.&lt;br /&gt;
# Make certain that you have selected usbdisk.device and not any other device.&lt;br /&gt;
# Click on &amp;quot;Start&amp;quot;&lt;br /&gt;
# You will see the usb mass storage unit connected in a list.&lt;br /&gt;
# Make sure that the Unit type displayed for the USB memory stick is &amp;quot;Removable hard disk&amp;quot;&lt;br /&gt;
# Select that Unit by clicking on it.&lt;br /&gt;
# The first thing that you need to do is to install the RDB onto the USB Memory Stick.&lt;br /&gt;
# Click on the  &amp;quot;Install&amp;quot; button.&lt;br /&gt;
# A window Labeled &amp;quot;RDB/disk geometry editing&amp;quot; comes up.&lt;br /&gt;
## Towards the bottom of the window is the &amp;quot;AmigaOne boot code (SLB)&amp;quot; section.&lt;br /&gt;
## Select the &amp;quot;Install&amp;quot; button .&lt;br /&gt;
## A file requester  &amp;quot;Select AmigaOne Boot Code&amp;quot; now comes  up with the Drawer choice defaulting to &amp;quot;l:&amp;quot;&lt;br /&gt;
## Select file &amp;quot;slb_v2&amp;quot;. &lt;br /&gt;
## Select Ok.&lt;br /&gt;
## You are now returned to the &amp;quot;RDB/disk geometry editing window&amp;quot;.&lt;br /&gt;
## Select &amp;quot;Ok-accept changes&amp;quot;.&lt;br /&gt;
# You are now returned to the display showing the attached USB unit.&lt;br /&gt;
# Select &amp;quot;Edit partitions and Filesystems&amp;quot;. You will now see the Window &#039;Editing partitions for disk&amp;quot;&lt;br /&gt;
# Select &amp;quot;Add partition&amp;quot;&lt;br /&gt;
# This defaults to using the whole device as a single partition.&lt;br /&gt;
# It is possible to use create more partitions but for this tutorial we will only use one.&lt;br /&gt;
# You now need to give the partition a unique name (e.g. USB0 or something that is different from any of the existing partitions on your hard drive). This is done by changing the default DH0 in the &amp;quot;Name&amp;quot; box.&lt;br /&gt;
# Now make sure that the Boxes &amp;quot;Automount&amp;quot; and &amp;quot;Bootable&amp;quot; are  selected and show the &amp;quot;Tick mark&amp;quot;.&lt;br /&gt;
# You need to set &amp;quot;Boot priority&amp;quot; to higher than the boot priority of your hard drive boot partition(s). This is done by increasing Boot priority by clicking on the &amp;quot;+&amp;quot; to the right of the &amp;quot;boot priority&amp;quot; box. Normally you can set the boot priority to 2 .&lt;br /&gt;
# Next it is time to select the file system to use.&lt;br /&gt;
# Select &amp;quot;Select filesystem/edit details&amp;quot;.&lt;br /&gt;
# The Window &amp;quot;Editing details for partition &#039;USB0&#039;&amp;quot;  ,or whatever partition name you used, comes up.&lt;br /&gt;
## Select the file system that you are going to use by selecting the pull down menu under &amp;quot;Filesystem chooser&amp;quot;.&lt;br /&gt;
## Only filesystems SFS/00 or SFS/02 will work for a bootable device.&lt;br /&gt;
## The option that gives the most flexibility at the moment is SFS/00 as a USB stick in this format can be read from and written to using another compatible system in the event that you need to make modifications after it is created without a booting AmigaOS 4.1 machine.&lt;br /&gt;
## Next select Blocksize from the &amp;quot;Blocksize&amp;quot; pull down menu. 512 is the correct size to use.&lt;br /&gt;
## Now Select &amp;quot;Ok-accept changes&amp;quot;.&lt;br /&gt;
## Your are now returned to the &amp;quot;Edit partitions for disk&amp;quot; window.&lt;br /&gt;
## Again select &amp;quot;Ok-accept changes&amp;quot;&lt;br /&gt;
# You are now returned to the window showing the USB mass storage unit list.&lt;br /&gt;
# Select &amp;quot;Save to disk&amp;quot;&lt;br /&gt;
# A requester pops up with the options &amp;quot;Yes, Save.&amp;quot; or &amp;quot;No!&amp;quot;&lt;br /&gt;
# Select the &amp;quot;Yes, save.&amp;quot; option.&lt;br /&gt;
# You now close Media Toolbox by clicking on the close icon (X) on the left of the Media Toolbox window.&lt;br /&gt;
# This will give you a requester advising that you need to reboot the machine for the changes to take effect. At this point you need to remove the USB memory stick for the machine. If you do not then the Machine will attempt boot from it before it is formatted and the required Kickstart and AmigaOS 4.1 files are copied to it.&lt;br /&gt;
# Select &amp;quot;Yes, reboot NOW!&amp;quot;.&lt;br /&gt;
# Once you have rebooted connect your USB Memory Stick to a USB port.&lt;br /&gt;
# A disk icon &amp;quot;USB0:Uninitialized&amp;quot; (or whatever partition name you used) appears on Workbench.&lt;br /&gt;
# You now need to format the device.&lt;br /&gt;
# To format Select this Icon and go to the Workbench &amp;quot;Icons&amp;quot; menu .&lt;br /&gt;
# Select &amp;quot;Format Disk&amp;quot;&lt;br /&gt;
# You can give the USB Memory Stick a unique name and  select whether you want a Trashcan or not.&lt;br /&gt;
# You can use either a full Format or a  Quick Format. Full Format may take a few minutes.&lt;br /&gt;
# Once formatted the USB Memory Stick is ready for you to copy the required files from you hard drive or AmigaOS Install CD to it in order to boot AmigaOS 4.1 from it.&lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=UserDoc:How_AmigaOS_Works&amp;diff=12370</id>
		<title>UserDoc:How AmigaOS Works</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=UserDoc:How_AmigaOS_Works&amp;diff=12370"/>
		<updated>2023-10-03T15:41:43Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: /* Two 680x0 Emulators */ Various reconstruction of sentences for clarity.  Please see the &amp;quot;Show changes&amp;quot; page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As already mentioned, AmigaOS was a pioneer in the early days of personal computing in delivering sophistication that contemporary systems could only have dreamt of and pretended to offer. Today, AmigaOS continues to offer a straightforward elegance that seems to be overlooked in the development of other platforms. Thanks to the concepts behind AmigaOS, the system is easy to understand and to use by everyone.&lt;br /&gt;
&lt;br /&gt;
In this page we will explore all these concepts of AmigaOS. Also you will learn here the naming of all parts of the system.&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
AmigaOS is made of different components which are either mandatory (i.e.,  AmigaOS will not work without them) or components the user can choose to use or not. All these components can have one or mutiple interfaces a user or a developer can use to operate with the components and through them to control the operating system.&lt;br /&gt;
&lt;br /&gt;
= The most important components =&lt;br /&gt;
&lt;br /&gt;
== Exec, the AmigaOS kernel ==&lt;br /&gt;
&lt;br /&gt;
Exec is the kernel of AmigaOS. It is the component that pilots all other components. It is responsible for running programs, dealing with computer memory and managing low-level resources that programs may need. In other words, it organises everything to make the operating system run.&lt;br /&gt;
&lt;br /&gt;
It is made of different parts that cannot be moved outside the kernel: the scheduler, the memory pager and the 68k interpretive emulator.&lt;br /&gt;
&lt;br /&gt;
== AmigaDOS: the underlying system ==&lt;br /&gt;
&lt;br /&gt;
The word &amp;quot;DOS&amp;quot; was originally an acronym for &amp;quot;Disk Operating System&amp;quot;. Some say it should be &amp;quot;Disk Based Operating System&amp;quot; as it does a lot more than operate a disk and that it was really an operating system based (stored) on disks.  Some say it should be &amp;quot;Device Operating System&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The whole AmigaDOS system includes things such as:&lt;br /&gt;
&lt;br /&gt;
* A set of commands that can be used in the Shell window and elsewhere.&lt;br /&gt;
* A system for saving data to disk and retrieving it from disk.&lt;br /&gt;
* A system for filing data on disks.&lt;br /&gt;
* An interface for peripherals such as keyboards, monitors, printers, etc.&lt;br /&gt;
* A method of running programs&lt;br /&gt;
* A multitasking system for running more than one program at a time.&lt;br /&gt;
* etc. etc. etc.&lt;br /&gt;
&lt;br /&gt;
Read the [[AmigaDOS manual]] to understand and learn everything about AmigaDOS.&lt;br /&gt;
&lt;br /&gt;
== The Graphics library ==&lt;br /&gt;
&lt;br /&gt;
The Graphics library handles every low level graphic operation like designing pixels on the monitor, creating graphic elements (bobs, sprites) and also writing text output.&lt;br /&gt;
&lt;br /&gt;
== Intuition ==&lt;br /&gt;
&lt;br /&gt;
The Intuition library is responsible for every graphical object: windows, screens, gadgets, mouse pointers... It lies between any graphic program and the graphics library.&lt;br /&gt;
&lt;br /&gt;
== The Workbench ==&lt;br /&gt;
&lt;br /&gt;
The Workbench is the graphical place where you will manage your computer and all your files. The name was chosen because the user will use tools to create and work with the computer.&lt;br /&gt;
&lt;br /&gt;
[[File:Wb.png|320px]]&lt;br /&gt;
&lt;br /&gt;
== The Shell ==&lt;br /&gt;
&lt;br /&gt;
While some people prefer to control the operating system using their mouse, others prefer using the keyboard. The shell is a text based window when you can type commands to execute actions in the operating system. In the shell the commands will display the results of their execution.&lt;br /&gt;
&lt;br /&gt;
== ARexx - inter-program communication by scripting ==&lt;br /&gt;
&lt;br /&gt;
The ARexx scripting language can be used to operate the Workbench and other Amiga applications from a script containing ARexx commands. This is extremely useful in performing repetitive tasks or doing what the controlled application was not even designed to do.&lt;br /&gt;
After a learning curve, everybody can use ARexx as it is built into the system.  The scripts can be executed immediately like any other tool.&lt;br /&gt;
&lt;br /&gt;
= How is my data stored? =&lt;br /&gt;
== Files ==&lt;br /&gt;
=== Executable files ===&lt;br /&gt;
Programs you can start are stored in executable files. They contain binary code directly understandable by the computer. They are files with an executable bit, a flag that shows AmigaOS that such file will do something when started.&lt;br /&gt;
An example is a music player. When you start this executable, the player opens and you can start playing music files.&lt;br /&gt;
&lt;br /&gt;
AmigaOS can run two different kinds of executable files: the AmigaOS native programs made for the PowerPC processor and programs created for the Motorola 68k processors. The latter are executed inside an emulation that translates them into PowerPC code.&lt;br /&gt;
&lt;br /&gt;
==== Scripts ====&lt;br /&gt;
&lt;br /&gt;
Scripts are text files containing a list of commands.  They are not strictly executables like &#039;&#039;binary code&#039;&#039; files but they can be executed by AmigaOS as if they were.&lt;br /&gt;
This is the case with AmigaDOS and ARexx scripts. These files need to have the executable and script bits set.&lt;br /&gt;
&lt;br /&gt;
=== Data files ===&lt;br /&gt;
Files that are not executable are data files. These contain data that will be manipulated by programs. Some examples are a music file, a video file or a text document.&lt;br /&gt;
&lt;br /&gt;
== Directories/Drawers ==&lt;br /&gt;
In order to organise things, files are grouped together. We create &amp;quot;directories&amp;quot; which are like drawers of a cabinet to store different files of the same kind, for example.  &lt;br /&gt;
Often the name &#039;&#039;directory&#039;&#039; is used when talking about a directory which is stored on a disk. The graphical interface of AmigaOS is called &amp;quot;Workbench,&amp;quot; and directories are often called &#039;&#039;drawers&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Note: directories are often called &#039;&#039;folders&#039;&#039; on other systems.  The terms &amp;quot;directory,&amp;quot; &amp;quot;drawer&amp;quot; and &amp;quot;folder&amp;quot; are synonymous.&lt;br /&gt;
&lt;br /&gt;
== Disks, partitions and volumes ==&lt;br /&gt;
=== Disks ===&lt;br /&gt;
Disks are storage media you can purchase at a computer store. We use them to store our files. They can be internal hard disks, external hard drives, USB interface devices (i.e., SD cards, CF cards, &amp;quot;flash&amp;quot; drives, etc.), and floppy disk drives.&lt;br /&gt;
&lt;br /&gt;
=== Partitions ===&lt;br /&gt;
A disk is often very big and many users prefer to make it more organised. This is done by virtually splitting the disk into several smaller parts. This operation is known as creating partitions on a disk.&lt;br /&gt;
&lt;br /&gt;
[[File:Partitions.png|Small part of Media Toolbox showing different partitions on the harddisk]]&lt;br /&gt;
&lt;br /&gt;
On this screenshot you can see one harddisk with many partitions. Each color corresponds to a different filesystem which defines how data is stored. Also, you can see a greyed area which is a blank area on the disk (i.e., no partition is defined at this position).  Several different file systems can be used on the same Amiga drive.  It&#039;s your choice.&lt;br /&gt;
&lt;br /&gt;
=== Volumes ===&lt;br /&gt;
A partition is a physical area on a disk. To access it with AmigaOS we must read the physical data off the partition. To make it easier AmigaOS uses the concept of volumes. These are virtual representations of a partition. The volumes have a name so AmigaOS and therefore the user can access all files/directories stored on it in a very practical way: just by using its name.&lt;br /&gt;
&lt;br /&gt;
Volume names can refer to either a physical or virtual named space.  See the autodoc section for the ASSIGN command in the C: directory as well as the MOUNT command which provides more information on naming and the concept of volumes.&lt;br /&gt;
&lt;br /&gt;
= How to identify files/directories =&lt;br /&gt;
&lt;br /&gt;
== On the Workbench ==&lt;br /&gt;
&lt;br /&gt;
The Workbench being graphical, a lot of things are understandable just by looking at them. That&#039;s why icons are often enough to understand what kind of object it represents: a file, a directory, a disk...&lt;br /&gt;
&lt;br /&gt;
In case you have a doubt, just look at the information on an icon. The Workbench will tell you the type of the object. It is displayed next to its name.&lt;br /&gt;
&lt;br /&gt;
== In a shell ==&lt;br /&gt;
&lt;br /&gt;
In a shell the &#039;&#039;&#039;list&#039;&#039;&#039; command can be used to see if an object is a file or a directory.&lt;br /&gt;
&lt;br /&gt;
[[File:Files-dirs-in-shell.png|The &#039;&#039;&#039;list&#039;&#039;&#039; command shows a file of 925678 bytes and two directories]]&lt;br /&gt;
&lt;br /&gt;
A file will be displayed with its size, whereas a directory will be displayed with the text &#039;&#039;&#039;Dir&#039;&#039;&#039; next to it.&lt;br /&gt;
&lt;br /&gt;
Also, as you can see on the screenshot, the list command displays other characteristics on these 3 items: the protection bits and the date they were updated the last time. The command also sums up what it just listed.&lt;br /&gt;
&lt;br /&gt;
= All AmigaOS components =&lt;br /&gt;
&lt;br /&gt;
AmigaOS is made of components that are needed as soon as the system starts or later when the user or the system needs them.&lt;br /&gt;
&lt;br /&gt;
== Kickstart modules ==&lt;br /&gt;
&lt;br /&gt;
These components are the heart of AmigaOS. Their duty is to draw graphics, to handle discs or to handle all reads/writes to files. Also one of them is the AmigaOS kernel which is a kind of director handling the work of all other components.&lt;br /&gt;
These Kickstart modules are loaded at the beginning of the operating system boot process (read [[UserDoc:How_AmigaOS_Works#AmigaOS_boot_procedure|here]]). You can find them all in the &#039;&#039;&#039;Kickstart&#039;&#039;&#039; directory on the system volume. Here is a list:&lt;br /&gt;
&lt;br /&gt;
=== Mandatory modules ===&lt;br /&gt;
&lt;br /&gt;
The following modules are required in any AmigaOS system. Without one of these, the system will not start.&lt;br /&gt;
&lt;br /&gt;
* kernel - The kernel works like the conductor of an orchestra. Its job is to make everything work together. It creates processes, handles memory usage, defines the way other components will access peripherals...etc. Note that the AmigaOS kernel is not based on any other kernel. It is a unique kernel that has existed since 1983.&lt;br /&gt;
* loader - this component handles the loading of all other kickstart modules&lt;br /&gt;
* battclock.resource.kmod - this module handles reading/writing the battery backed up clock which is used on all computers to keep the date and time&lt;br /&gt;
* bootimage - this is the boot picture. It is displayed during the start sequence of AmigaOS&lt;br /&gt;
* bootmenu.kmod - this component handles the Early Startup Menu the user can employ to define some settings before starting AmigaOS&lt;br /&gt;
* con-handler.kmod - it directs read and write requests to the console window, to a serial AUX: device or any other supported interface&lt;br /&gt;
* console.device.kmod - it opens a window and reads/writes text to and from that window&lt;br /&gt;
* diskboot.kmod - handles the booting of AmigaOS from a supported disk&lt;br /&gt;
* diskboot.config - this is a text file experienced users can modify to change the boot behaviour of AmigaOS&lt;br /&gt;
* dos.library.kmod - this module is a collection of functions that any program can use to perform actions on disks, files and directories&lt;br /&gt;
* elf.library.kmod - handles the loading of executable programs&lt;br /&gt;
* env-handler.kmod - handles the reads/writes of environment variables&lt;br /&gt;
* FileSystem.resource.kmod - handles access to the different filesystems&lt;br /&gt;
* gadtools.library.kmod - a collection of functions used to create all graphic objects like gadgets, sliders, menus...&lt;br /&gt;
* gameport.device.kmod - handles the reads/writes of game pads and joysticks&lt;br /&gt;
* graphics.library.kmod - a collection of functions used to draw graphic elements on the monitor&lt;br /&gt;
* hunk.library.kmod - a set of functions to read a data stream into memory&lt;br /&gt;
* input.device.kmod - handles input events like keyboard events or mouse clicks&lt;br /&gt;
* intuition.library.kmod - a collection of functions to create and handle all graphic elements (screens, windows, the mouse pointer...)&lt;br /&gt;
* layers.library.kmod - set of functions to be used to handle different layers in graphic operations&lt;br /&gt;
* keyboard.device.kmod - driver for the keyboard&lt;br /&gt;
* keymap.library.kmod - functions to handle different keymaps&lt;br /&gt;
* newlib.library.kmod - collection of functions to perform memory operations (allocating memory, copying memory areas... )&lt;br /&gt;
* nonvolatile.library.kmod - provides a simple means for an application developer to manage nonvolatile storage&lt;br /&gt;
* nvram.resource.kmod - handles the reads/writes to the NVRAM chip present on many AmigaOS computers&lt;br /&gt;
* PCIGraphics.card - driver that supports the use of different graphic cards&lt;br /&gt;
* ram-handler.kmod - functions that handle the &#039;&#039;&#039;Ram disk:&#039;&#039;&#039;.&lt;br /&gt;
* ramdrive.device.kmod - device that allows the usage of the ramdrive device &#039;&#039;&#039;RAD:&#039;&#039;&#039; disk&lt;br /&gt;
* ramlib.kmod - loads disk based libraries and devices for exec.library&lt;br /&gt;
* rtg.library - library of functions to perform low level graphic operations on graphics cards&lt;br /&gt;
* shell.kmod - the AmigaOS command line interface&lt;br /&gt;
* strap.kmod - module that handles booting on different disk devices&lt;br /&gt;
* timer.device.kmod - driver to give access to timing functions&lt;br /&gt;
&lt;br /&gt;
=== Filesystem support ===&lt;br /&gt;
&lt;br /&gt;
These kickstart modules can be loaded optionally. If you want to use a particular filesystem on your disk partitions, you need to load the corresponding filesystem module.&lt;br /&gt;
&lt;br /&gt;
* CDFileSystem - handles the CD-ROM disks with data stored in different formats: ISO9660, HFS...&lt;br /&gt;
* SmartFilesystem - allows the usage of partitions in SFS0 and SFS2 layouts&lt;br /&gt;
* JXFileSystem - allows the usage of partitions in JXFS layout (now obsolescent)&lt;br /&gt;
* FastFileSystem - allows the usage of partitions in FFS and FFS2 layouts&lt;br /&gt;
* NGFileSystem - an experimental file system designed to gradually replace the FastFileSystem&lt;br /&gt;
* diskcache.library.kmod - component required by the SmartFileSystem and JXFileSystem modules&lt;br /&gt;
&lt;br /&gt;
=== Hardware drivers ===&lt;br /&gt;
&lt;br /&gt;
==== Graphic cards drivers ====&lt;br /&gt;
&lt;br /&gt;
* 3dfxVoodoo.chip&lt;br /&gt;
* 3DLabsPermedia2.chip&lt;br /&gt;
* ATIRadeon.chip&lt;br /&gt;
* RadeonHD.chip&lt;br /&gt;
* siliconmotion502.chip&lt;br /&gt;
&lt;br /&gt;
==== Disk drivers ====&lt;br /&gt;
&lt;br /&gt;
Each of these drivers allows the use of disks connected to a disk controller. These files are named after the controller they support. As an example, the &#039;&#039;&#039;sii3114ide.device.kmod&#039;&#039;&#039; allows the use of disks connected to a &#039;&#039;&#039;Silicon Image SiI3114&#039;&#039;&#039; controller chip.&lt;br /&gt;
&lt;br /&gt;
* it8212ide.device.kmod&lt;br /&gt;
* lsi53c8xx.device.kmod&lt;br /&gt;
* sam460sata.device.kmod&lt;br /&gt;
* sii3112ide.device.kmod&lt;br /&gt;
* sii3512ide.device.kmod&lt;br /&gt;
* sii3114ide.device.kmod&lt;br /&gt;
* sii0680ide.device.kmod&lt;br /&gt;
* sii3132ide.device.kmod&lt;br /&gt;
&lt;br /&gt;
==== USB drivers ====&lt;br /&gt;
&lt;br /&gt;
* hub.usbfd&lt;br /&gt;
* usbsys.device&lt;br /&gt;
* usbresource.library&lt;br /&gt;
* ehci.usbhcd&lt;br /&gt;
* ohci.usbhcd&lt;br /&gt;
* uhci.usbhcd&lt;br /&gt;
* massstorage.usbfd&lt;br /&gt;
&lt;br /&gt;
==== Other drivers ====&lt;br /&gt;
&lt;br /&gt;
* bootkeyboard.usbfd - allows a USB keyboard to be used even before the USB stack is loaded&lt;br /&gt;
* bootmouse.usbfd - allows a USB mouse to be used even before the USB stack is loaded&lt;br /&gt;
* fpga.resource.kmod - allows to use the FPGA components which are present on some Amiga computers&lt;br /&gt;
* i2c.resource.kmod - allows to use the i2c interface present on some Amiga computers&lt;br /&gt;
* xena.resource.kmod - provides access to the Xena chip on the AmigaOne X1000&lt;br /&gt;
&lt;br /&gt;
==== Misc modules ====&lt;br /&gt;
&lt;br /&gt;
* petunia.library.kmod - this module contains the Just-In-Time emulator that allows AmigaOS to run programs made for the Motorola 68k processor&lt;br /&gt;
&lt;br /&gt;
== Control of the Kickstart ==&lt;br /&gt;
&lt;br /&gt;
The Kickstart/ drawer contains an ASCII file called &amp;quot;Kicklayout&amp;quot;. This file lists all the modules that must be loaded from the system volume during the boot process. It is read by the boot loaders &amp;quot;SLB&amp;quot; or &amp;quot;amigaboot&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The Kicklayout file consists of a number of configurations, each of which describes a set of Kickstart modules. Each configuration has a label and the various configurations are listed by label on the boot screen. The user may elect to load the default configuration or to select any one of the other configurations. Often a developer will have several configurations in his/her Kicklayout file, some of which may be experimental, while the default is a &amp;quot;known good&amp;quot; configuration to which (s)he can fall back.&lt;br /&gt;
&lt;br /&gt;
You can edit the Kicklayout file using Notepad or any other ASCII editor. You are strongly advised to leave the original configuration unchanged (as a fall-back) and to add new configurations at the end of the file, each with its own label. That way you can still recover if you make a mistake while editing.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;; Configuration name&lt;br /&gt;
LABEL MainSystem&lt;br /&gt;
; Exec name&lt;br /&gt;
EXEC Kickstart/loader.of&lt;br /&gt;
;&lt;br /&gt;
; PPC native modules&lt;br /&gt;
;&lt;br /&gt;
MODULE Kickstart/kernel&lt;br /&gt;
;&lt;br /&gt;
MODULE Kickstart/FastFileSystem&lt;br /&gt;
MODULE Kickstart/CDFileSystem&lt;br /&gt;
MODULE Kickstart/NGFileSystem&lt;br /&gt;
;&lt;br /&gt;
(etc)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that lines that start with a semicolon (&amp;quot;;&amp;quot;) are treated as comments and are ignored. Each configuration must start with a &amp;quot;LABEL&amp;quot; keyword and should be separated from the previous configuration by a blank line. The blank line signifies &amp;quot;Stop loading here&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Each module to be loaded is defined by the &amp;quot;MODULE&amp;quot; keyword, followed by the path and file name. You can use any path &#039;&#039;on the system volume&#039;&#039;, so you could have two or more drawers containing Kickstart modules and address them independently if you so wished. You can not refer to modules on other volumes, since they have not been mounted by DOS (which does not exist yet) and only the system volume is available at this early stage.&lt;br /&gt;
&lt;br /&gt;
=== Selecting the Default Configuration ===&lt;br /&gt;
&lt;br /&gt;
You can specify in the NVRAM the label of the default configuration in the Kicklayout. For instance, if your default configuration is called &amp;quot;MainSystem&amp;quot;, the LABEL line will look like this:&lt;br /&gt;
&lt;br /&gt;
LABEL MainSystem&lt;br /&gt;
&lt;br /&gt;
You can define an NVRAM variable called &amp;quot;boot_config&amp;quot; using U-Boot, CFE or the &amp;quot;nvsetvar&amp;quot; tool. Simply type:&lt;br /&gt;
&lt;br /&gt;
nvsetvar boot_config &amp;quot;MainSystem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[Note that nvsetvar may be inhibited from writing to the NVRAM on some systems, in which case you will have to use U-Boot or CFE to set the variable]&lt;br /&gt;
&lt;br /&gt;
If you do not specify a default configuration with the &amp;quot;boot_config&amp;quot; variable, the boot loader will default to the first configuration in the Kicklayout.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== System components ==&lt;br /&gt;
&lt;br /&gt;
[[File:Workbench_directory_listing.png|frame|right|List of directories and files present at the root of any AmigaOS system]]&lt;br /&gt;
&lt;br /&gt;
Beside the kickstart modules, AmigaOS uses many different components that can be loaded only when needed. These files are stored in different directories in the system volume.&lt;br /&gt;
A default AmigaOS installation looks like this:&lt;br /&gt;
&lt;br /&gt;
* C&lt;br /&gt;
This directory contains AmigaDOS &#039;&#039;&#039;C&#039;&#039;&#039;ommands&lt;br /&gt;
* Classes&lt;br /&gt;
contains different object elements easy to be used in any program: gadgets, requesters, graphic table, windows...&lt;br /&gt;
* Devs&lt;br /&gt;
contains definitions for &#039;&#039;&#039;Dev&#039;&#039;&#039;ices&lt;br /&gt;
* Emulation&lt;br /&gt;
contains files used for the 68k emulation (though E-UAE)&lt;br /&gt;
* Fonts&lt;br /&gt;
contains various systems fonts&lt;br /&gt;
* Internet&lt;br /&gt;
contains Internet-related files and configurations&lt;br /&gt;
* Kickstart&lt;br /&gt;
contains the kickstart modules&lt;br /&gt;
* L&lt;br /&gt;
contains hand&#039;&#039;&#039;l&#039;&#039;&#039;ers and filesystems&lt;br /&gt;
* Libs&lt;br /&gt;
contains dynamic &#039;&#039;&#039;Lib&#039;&#039;&#039;rairies of functions&lt;br /&gt;
* Locale&lt;br /&gt;
contains all files used to customise the system for your locality (catalogs, keymaps...)&lt;br /&gt;
* MUI&lt;br /&gt;
contains the files needed for programs that use the MUI third party graphic interface&lt;br /&gt;
* [[Prefs]]&lt;br /&gt;
contains the preference programs used to customise AmigaOS&lt;br /&gt;
* S&lt;br /&gt;
contains the system&#039;s &#039;&#039;&#039;S&#039;&#039;&#039;cripts&lt;br /&gt;
* SObjs&lt;br /&gt;
contains .so shared object library files&lt;br /&gt;
* Storage&lt;br /&gt;
contains other optional files, not currently used&lt;br /&gt;
* System&lt;br /&gt;
contains some programs used by the system itself (i.e. you don&#039;t need to run them yourself) or low-level programs like disk tools&lt;br /&gt;
* [[Utilities]]&lt;br /&gt;
contains several programs you can use to achieve some tasks on AmigaOS&lt;br /&gt;
&lt;br /&gt;
= Motorola 680x0 Emulators =&lt;br /&gt;
&lt;br /&gt;
For a long time Amigas have had the famous Motorola 680x0 processors as the central unit for execution. Unfortunately the time of the 680x0 series is passing in favor of other architectures. The new era of processors reached the Amiga some time ago, when expansion boards became available for extending the Classic systems with the raw power of a PowerPC processor.&lt;br /&gt;
&lt;br /&gt;
In the old operating system (AmigaOS 3.x) it was not possible to gain the full advantage of the new processors. The system itself and most of the applications required the original Motorola 680x0 processor. There was no 680x0 emulation available for the PowerPCs, so the 680x0 could not be &amp;quot;switched off&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Thus the new processors remained as a powerful, but mostly unused adjunct to the main 680x0 processor. &amp;quot;Native&amp;quot; PowerPC programs were rare, and every time a PowerPC program called the system, a so called &amp;quot;context switch&amp;quot; occurred between the 680x0 and PowerPC code, often causing a large performance penalty.&lt;br /&gt;
&lt;br /&gt;
The new Amiga platform is based on the PowerPC processor family, therefore the new version of the AmigaOS has to smooth the transition from the 680x0 series, which is achieved by emulating the old processor architecture. The operating system itself is written almost 100 percent for the PowerPC processors, but the 680x0 legacy applications require an emulated 680x0 processor. &lt;br /&gt;
&lt;br /&gt;
== Two 680x0 Emulators ==&lt;br /&gt;
&lt;br /&gt;
In version 4.0 of AmigaOS, two different emulators were implemented. One is the successor of BlackBox emulation.  It is an interpretive emulator with mediocre emulation speed. On the other hand, it has a very low &amp;quot;reaction time&amp;quot; and is ideal for time critical parts, such as interrupts.&lt;br /&gt;
&lt;br /&gt;
The other is Petunia, the &amp;quot;JIT emulator&amp;quot;, a fast but less compatible way of emulation of the legacy Motorola processors. It is intended mainly for emulating applications. When execution of the application leaves the bounds of the application&#039;s code segment, emulation falls back to the interpretive method, where it does its job and returns to the JIT emulation again.&lt;br /&gt;
&lt;br /&gt;
Dynamic recompilation (also called just-in-time compilation or simply JIT compilation) is a technique of translating foreign processor machine code to native machine code &amp;quot;on the fly&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This technique is common nowadays in JAVA virtual machines.  It is also used with success in several emulators. In dynamic recompilation, there is the possibility of runtime optimization of the emulated code by collecting statistics of the execution process. Therefore (theoretically) the final executed code can be even faster than the original code on its original processor.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Emulated opcodes:&lt;br /&gt;
* all user and supervisor level opcodes of the Motorola 68040&lt;br /&gt;
* all FPU opcodes of the Motorola 68881/68882 &lt;br /&gt;
&lt;br /&gt;
AmigaOS claims only 68020/68881 compatibility to applications because this is the safest compatibility level, but both emulators are compatible with the machine code up to the level of 68040/060 processors.&lt;br /&gt;
&lt;br /&gt;
At compile time, a low level flag and branch control analysis allows on-the-fly optimizations of compiled code.&lt;br /&gt;
&lt;br /&gt;
== Removing the JIT Emulator ==&lt;br /&gt;
&lt;br /&gt;
Using the dynamic translation requires a lot more memory than the interpretive emulation. The translated code needs to be stored somewhere, not to mention the data collection tables.&lt;br /&gt;
&lt;br /&gt;
If speed is not as important as the memory consumption of the system, then the JIT emulator can be removed, leaving the job to the interpretive emulator.&lt;br /&gt;
&lt;br /&gt;
Thanks to the modular design of AmigaOS kickstart, all you need to do is edit the &amp;quot;Sys:Kickstart/Kicklayout&amp;quot; file, simply put a semicolon (;) at the beginning of the module line of Petunia.library.kmod. After rebooting the system from cold, the JIT emulator will not be reloaded. Make sure that you alter the appropriate configuration in the Kicklayout file, there may be several alternative configurations, with different names like &amp;quot;DefaultJIT&amp;quot;, or &amp;quot;DefaultNoJIT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Configuring the Emulators ==&lt;br /&gt;
&lt;br /&gt;
Petunia cooperates with a so called &amp;quot;black list&amp;quot;. By default, Petunia emulates every 680x0 program or library that is loaded by DOS.library/LoadSeg function, but if an executable or library shows incompatibilities with Petunia, then it can be explicitly inhibited from the dynamic recompilation by specifying it in a list.&lt;br /&gt;
&lt;br /&gt;
If an executable needs to be added to the list, then it can be done by extending the file &amp;quot;DEVS:applications.dos&amp;quot; with the &#039;&#039;&#039;Compatibility&#039;&#039;&#039; preferences program from the Prefs drawer of the system. Adding a program name to the list and checking it will prevent Petunia from emulating that program, and it will be interpreted instead by the built-in interpreter.&lt;br /&gt;
&lt;br /&gt;
Removing a program from the list or unchecking (thus allowing Petunia to emulate it again) can be done with the same preferences program.&lt;br /&gt;
&lt;br /&gt;
Please note: some programs consist of multiple executables (shared libraries, plugins). If you want to fully disable the translation of such programs, then every part must be added to the list.&lt;br /&gt;
&lt;br /&gt;
For example to disable UnArc fully, you would have to add to the list all files from libs:xad and also xadmaster.library. &lt;br /&gt;
&lt;br /&gt;
= AmigaOS boot procedure =&lt;br /&gt;
&lt;br /&gt;
Classic Amigas with PowerPC accelerators, the original AmigaOne SE/XE and the Sam series of Amigas all use the Second Level Booter (SLB) to read their Kickstart modules from the system volume. The newer A-Eon machines (X1000, X5000, A1222) all use a loader called AmigaBoot. In the X1000, AmigaBoot must be read from an FFS partition, while in the later machines, it is stored in the on-board CF card. The process of loading the kickstart modules is the same in all cases.&lt;br /&gt;
&lt;br /&gt;
Basically a computer with AmigaOS does the following when the power button is pushed:&lt;br /&gt;
&lt;br /&gt;
* [[File:Uboot.jpg|200px]]&lt;br /&gt;
The BIOS ([[UserDoc:BIOS|Uboot]] or [[UserDoc:BIOS|CFE]]) of the computer initialises the hardware: graphic card, USB ports... At this point, the monitor wakes up and the first information is displayed. This shows if hardware is correctly recognised. As an example you can see if a hard drive is correctly connected into the machine and your BIOS is correctly set up to make this drive useable.&lt;br /&gt;
* Depending on the machine type, the BIOS will look on the harddisk to find the Second Level Booter (SLB) or AmigaBoot, or will execute the AmigaBoot program from the on-board NVRAM. Whereas the BIOS does not know about AmigaOS disk structure, the SLB/AmigaBoot can &#039;&#039;understand&#039;&#039; the AmigaOS partitions and file systems. In other words, it is the link between the BIOS and the rest of the boot procedure. Its goal is also to give you the ability to start several configurations present on the same drive.&lt;br /&gt;
* [[File:SLB.png|200px]]&lt;br /&gt;
SLB/AmigaBoot analyses all Amiga partitions on the system disk. It reads each system configuration it finds on the partition and displays them all for the user to select one to load. AmigaBoot (not SLB) also displays configurations from Kickstart/Kicklayout files on every &amp;quot;bootable&amp;quot; partition.&lt;br /&gt;
The user can [[UserDoc:How_AmigaOS_Works#Control_of_the_Kickstart|define]] many different kickstart configurations to choose from. Also both AmigaOS and Linux can be selected for boot.&lt;br /&gt;
* [[File:Kmods loading.png|200px]]&lt;br /&gt;
SLB/AmigaBoot loads the kickstart files of the selected configuration and executes the &#039;&#039;&#039;Loader&#039;&#039;&#039; module&lt;br /&gt;
* &#039;&#039;&#039;Loader&#039;&#039;&#039; executes the kickstart modules (Exec, devices, libraries...)&lt;br /&gt;
* AmigaOS becomes alive displaying the AmigaOS boot picture on the monitor&lt;br /&gt;
* The AmigaDOS library executes the [[UserDoc:System_Scripts#startup-sequence|startup-sequence]] script found on the system volume&lt;br /&gt;
* The Startup-sequence will be executed and all commands it contains are executed. It means that starting from here the boot procedure is easy to follow and understand.&lt;br /&gt;
* The Workbench is started&lt;br /&gt;
&lt;br /&gt;
At this point the user can use his/her computer.&lt;br /&gt;
&lt;br /&gt;
= How to make a Bootable USB Memory Stick for AmigaOS 4.1 =&lt;br /&gt;
&lt;br /&gt;
By Julian Margetson (&amp;quot;Spectre660&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Prerequisites:&lt;br /&gt;
* USB memory stick of 2 GB or less in size.&lt;br /&gt;
* It is best to only have one USB mass storage device connected while you are creating your bootable USB memory stick.&lt;br /&gt;
* Plug the USB memory stick into a USB port on your machine.&lt;br /&gt;
* Note that the device will be formatted so make sure that you use an empty memory stick or one that does not contain any data that you need or backup the contents before you begin.&lt;br /&gt;
&lt;br /&gt;
Procedure:&lt;br /&gt;
# You use Media Toolbox in the System: drawer to prepare the USB stick. On starting Media Toolbox select &#039;&#039;usbdisk.device&#039;&#039; as the device to use.&lt;br /&gt;
# Make certain that you have selected usbdisk.device and not any other device.&lt;br /&gt;
# Click on &amp;quot;Start&amp;quot;&lt;br /&gt;
# You will see the usb mass storage unit connected in a list.&lt;br /&gt;
# Make sure that the Unit type displayed for the USB memory stick is &amp;quot;Removable hard disk&amp;quot;&lt;br /&gt;
# Select that Unit by clicking on it.&lt;br /&gt;
# The first thing that you need to do is to install the RDB onto the USB Memory Stick.&lt;br /&gt;
# Click on the  &amp;quot;Install&amp;quot; button.&lt;br /&gt;
# A window Labeled &amp;quot;RDB/disk geometry editing&amp;quot; comes up.&lt;br /&gt;
## Towards the bottom of the window is the &amp;quot;AmigaOne boot code (SLB)&amp;quot; section.&lt;br /&gt;
## Select the &amp;quot;Install&amp;quot; button .&lt;br /&gt;
## A file requester  &amp;quot;Select AmigaOne Boot Code&amp;quot; now comes  up with the Drawer choice defaulting to &amp;quot;l:&amp;quot;&lt;br /&gt;
## Select file &amp;quot;slb_v2&amp;quot;. &lt;br /&gt;
## Select Ok.&lt;br /&gt;
## You are now returned to the &amp;quot;RDB/disk geometry editing window&amp;quot;.&lt;br /&gt;
## Select &amp;quot;Ok-accept changes&amp;quot;.&lt;br /&gt;
# You are now returned to the display showing the attached USB unit.&lt;br /&gt;
# Select &amp;quot;Edit partitions and Filesystems&amp;quot;. You will now see the Window &#039;Editing partitions for disk&amp;quot;&lt;br /&gt;
# Select &amp;quot;Add partition&amp;quot;&lt;br /&gt;
# This defaults to using the whole device as a single partition.&lt;br /&gt;
# It is possible to use create more partitions but for this tutorial we will only use one.&lt;br /&gt;
# You now need to give the partition a unique name (e.g. USB0 or something that is different from any of the existing partitions on your hard drive). This is done by changing the default DH0 in the &amp;quot;Name&amp;quot; box.&lt;br /&gt;
# Now make sure that the Boxes &amp;quot;Automount&amp;quot; and &amp;quot;Bootable&amp;quot; are  selected and show the &amp;quot;Tick mark&amp;quot;.&lt;br /&gt;
# You need to set &amp;quot;Boot priority&amp;quot; to higher than the boot priority of your hard drive boot partition(s). This is done by increasing Boot priority by clicking on the &amp;quot;+&amp;quot; to the right of the &amp;quot;boot priority&amp;quot; box. Normally you can set the boot priority to 2 .&lt;br /&gt;
# Next it is time to select the file system to use.&lt;br /&gt;
# Select &amp;quot;Select filesystem/edit details&amp;quot;.&lt;br /&gt;
# The Window &amp;quot;Editing details for partition &#039;USB0&#039;&amp;quot;  ,or whatever partition name you used, comes up.&lt;br /&gt;
## Select the file system that you are going to use by selecting the pull down menu under &amp;quot;Filesystem chooser&amp;quot;.&lt;br /&gt;
## Only filesystems SFS/00 or SFS/02 will work for a bootable device.&lt;br /&gt;
## The option that gives the most flexibility at the moment is SFS/00 as a USB stick in this format can be read from and written to using another compatible system in the event that you need to make modifications after it is created without a booting AmigaOS 4.1 machine.&lt;br /&gt;
## Next select Blocksize from the &amp;quot;Blocksize&amp;quot; pull down menu. 512 is the correct size to use.&lt;br /&gt;
## Now Select &amp;quot;Ok-accept changes&amp;quot;.&lt;br /&gt;
## Your are now returned to the &amp;quot;Edit partitions for disk&amp;quot; window.&lt;br /&gt;
## Again select &amp;quot;Ok-accept changes&amp;quot;&lt;br /&gt;
# You are now returned to the window showing the USB mass storage unit list.&lt;br /&gt;
# Select &amp;quot;Save to disk&amp;quot;&lt;br /&gt;
# A requester pops up with the options &amp;quot;Yes, Save.&amp;quot; or &amp;quot;No!&amp;quot;&lt;br /&gt;
# Select the &amp;quot;Yes, save.&amp;quot; option.&lt;br /&gt;
# You now close Media Toolbox by clicking on the close icon (X) on the left of the Media Toolbox window.&lt;br /&gt;
# This will give you a requester advising that you need to reboot the machine for the changes to take effect. At this point you need to remove the USB memory stick for the machine. If you do not then the Machine will attempt boot from it before it is formatted and the required Kickstart and AmigaOS 4.1 files are copied to it.&lt;br /&gt;
# Select &amp;quot;Yes, reboot NOW!&amp;quot;.&lt;br /&gt;
# Once you have rebooted connect your USB Memory Stick to a USB port.&lt;br /&gt;
# A disk icon &amp;quot;USB0:Uninitialized&amp;quot; (or whatever partition name you used) appears on Workbench.&lt;br /&gt;
# You now need to format the device.&lt;br /&gt;
# To format Select this Icon and go to the Workbench &amp;quot;Icons&amp;quot; menu .&lt;br /&gt;
# Select &amp;quot;Format Disk&amp;quot;&lt;br /&gt;
# You can give the USB Memory Stick a unique name and  select whether you want a Trashcan or not.&lt;br /&gt;
# You can use either a full Format or a  Quick Format. Full Format may take a few minutes.&lt;br /&gt;
# Once formatted the USB Memory Stick is ready for you to copy the required files from you hard drive or AmigaOS Install CD to it in order to boot AmigaOS 4.1 from it.&lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=UserDoc:How_AmigaOS_Works&amp;diff=12369</id>
		<title>UserDoc:How AmigaOS Works</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=UserDoc:How_AmigaOS_Works&amp;diff=12369"/>
		<updated>2023-10-03T15:26:31Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: /* How to make a Bootable USB Memory Stick for AmigaOS 4.1 */ 20.3. Added &amp;quot;from&amp;quot; after &amp;quot;read&amp;quot; to maintain parallel construction.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As already mentioned, AmigaOS was a pioneer in the early days of personal computing in delivering sophistication that contemporary systems could only have dreamt of and pretended to offer. Today, AmigaOS continues to offer a straightforward elegance that seems to be overlooked in the development of other platforms. Thanks to the concepts behind AmigaOS, the system is easy to understand and to use by everyone.&lt;br /&gt;
&lt;br /&gt;
In this page we will explore all these concepts of AmigaOS. Also you will learn here the naming of all parts of the system.&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
AmigaOS is made of different components which are either mandatory (i.e.,  AmigaOS will not work without them) or components the user can choose to use or not. All these components can have one or mutiple interfaces a user or a developer can use to operate with the components and through them to control the operating system.&lt;br /&gt;
&lt;br /&gt;
= The most important components =&lt;br /&gt;
&lt;br /&gt;
== Exec, the AmigaOS kernel ==&lt;br /&gt;
&lt;br /&gt;
Exec is the kernel of AmigaOS. It is the component that pilots all other components. It is responsible for running programs, dealing with computer memory and managing low-level resources that programs may need. In other words, it organises everything to make the operating system run.&lt;br /&gt;
&lt;br /&gt;
It is made of different parts that cannot be moved outside the kernel: the scheduler, the memory pager and the 68k interpretive emulator.&lt;br /&gt;
&lt;br /&gt;
== AmigaDOS: the underlying system ==&lt;br /&gt;
&lt;br /&gt;
The word &amp;quot;DOS&amp;quot; was originally an acronym for &amp;quot;Disk Operating System&amp;quot;. Some say it should be &amp;quot;Disk Based Operating System&amp;quot; as it does a lot more than operate a disk and that it was really an operating system based (stored) on disks.  Some say it should be &amp;quot;Device Operating System&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The whole AmigaDOS system includes things such as:&lt;br /&gt;
&lt;br /&gt;
* A set of commands that can be used in the Shell window and elsewhere.&lt;br /&gt;
* A system for saving data to disk and retrieving it from disk.&lt;br /&gt;
* A system for filing data on disks.&lt;br /&gt;
* An interface for peripherals such as keyboards, monitors, printers, etc.&lt;br /&gt;
* A method of running programs&lt;br /&gt;
* A multitasking system for running more than one program at a time.&lt;br /&gt;
* etc. etc. etc.&lt;br /&gt;
&lt;br /&gt;
Read the [[AmigaDOS manual]] to understand and learn everything about AmigaDOS.&lt;br /&gt;
&lt;br /&gt;
== The Graphics library ==&lt;br /&gt;
&lt;br /&gt;
The Graphics library handles every low level graphic operation like designing pixels on the monitor, creating graphic elements (bobs, sprites) and also writing text output.&lt;br /&gt;
&lt;br /&gt;
== Intuition ==&lt;br /&gt;
&lt;br /&gt;
The Intuition library is responsible for every graphical object: windows, screens, gadgets, mouse pointers... It lies between any graphic program and the graphics library.&lt;br /&gt;
&lt;br /&gt;
== The Workbench ==&lt;br /&gt;
&lt;br /&gt;
The Workbench is the graphical place where you will manage your computer and all your files. The name was chosen because the user will use tools to create and work with the computer.&lt;br /&gt;
&lt;br /&gt;
[[File:Wb.png|320px]]&lt;br /&gt;
&lt;br /&gt;
== The Shell ==&lt;br /&gt;
&lt;br /&gt;
While some people prefer to control the operating system using their mouse, others prefer using the keyboard. The shell is a text based window when you can type commands to execute actions in the operating system. In the shell the commands will display the results of their execution.&lt;br /&gt;
&lt;br /&gt;
== ARexx - inter-program communication by scripting ==&lt;br /&gt;
&lt;br /&gt;
The ARexx scripting language can be used to operate the Workbench and other Amiga applications from a script containing ARexx commands. This is extremely useful in performing repetitive tasks or doing what the controlled application was not even designed to do.&lt;br /&gt;
After a learning curve, everybody can use ARexx as it is built into the system.  The scripts can be executed immediately like any other tool.&lt;br /&gt;
&lt;br /&gt;
= How is my data stored? =&lt;br /&gt;
== Files ==&lt;br /&gt;
=== Executable files ===&lt;br /&gt;
Programs you can start are stored in executable files. They contain binary code directly understandable by the computer. They are files with an executable bit, a flag that shows AmigaOS that such file will do something when started.&lt;br /&gt;
An example is a music player. When you start this executable, the player opens and you can start playing music files.&lt;br /&gt;
&lt;br /&gt;
AmigaOS can run two different kinds of executable files: the AmigaOS native programs made for the PowerPC processor and programs created for the Motorola 68k processors. The latter are executed inside an emulation that translates them into PowerPC code.&lt;br /&gt;
&lt;br /&gt;
==== Scripts ====&lt;br /&gt;
&lt;br /&gt;
Scripts are text files containing a list of commands.  They are not strictly executables like &#039;&#039;binary code&#039;&#039; files but they can be executed by AmigaOS as if they were.&lt;br /&gt;
This is the case with AmigaDOS and ARexx scripts. These files need to have the executable and script bits set.&lt;br /&gt;
&lt;br /&gt;
=== Data files ===&lt;br /&gt;
Files that are not executable are data files. These contain data that will be manipulated by programs. Some examples are a music file, a video file or a text document.&lt;br /&gt;
&lt;br /&gt;
== Directories/Drawers ==&lt;br /&gt;
In order to organise things, files are grouped together. We create &amp;quot;directories&amp;quot; which are like drawers of a cabinet to store different files of the same kind, for example.  &lt;br /&gt;
Often the name &#039;&#039;directory&#039;&#039; is used when talking about a directory which is stored on a disk. The graphical interface of AmigaOS is called &amp;quot;Workbench,&amp;quot; and directories are often called &#039;&#039;drawers&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Note: directories are often called &#039;&#039;folders&#039;&#039; on other systems.  The terms &amp;quot;directory,&amp;quot; &amp;quot;drawer&amp;quot; and &amp;quot;folder&amp;quot; are synonymous.&lt;br /&gt;
&lt;br /&gt;
== Disks, partitions and volumes ==&lt;br /&gt;
=== Disks ===&lt;br /&gt;
Disks are storage media you can purchase at a computer store. We use them to store our files. They can be internal hard disks, external hard drives, USB interface devices (i.e., SD cards, CF cards, &amp;quot;flash&amp;quot; drives, etc.), and floppy disk drives.&lt;br /&gt;
&lt;br /&gt;
=== Partitions ===&lt;br /&gt;
A disk is often very big and many users prefer to make it more organised. This is done by virtually splitting the disk into several smaller parts. This operation is known as creating partitions on a disk.&lt;br /&gt;
&lt;br /&gt;
[[File:Partitions.png|Small part of Media Toolbox showing different partitions on the harddisk]]&lt;br /&gt;
&lt;br /&gt;
On this screenshot you can see one harddisk with many partitions. Each color corresponds to a different filesystem which defines how data is stored. Also, you can see a greyed area which is a blank area on the disk (i.e., no partition is defined at this position).  Several different file systems can be used on the same Amiga drive.  It&#039;s your choice.&lt;br /&gt;
&lt;br /&gt;
=== Volumes ===&lt;br /&gt;
A partition is a physical area on a disk. To access it with AmigaOS we must read the physical data off the partition. To make it easier AmigaOS uses the concept of volumes. These are virtual representations of a partition. The volumes have a name so AmigaOS and therefore the user can access all files/directories stored on it in a very practical way: just by using its name.&lt;br /&gt;
&lt;br /&gt;
Volume names can refer to either a physical or virtual named space.  See the autodoc section for the ASSIGN command in the C: directory as well as the MOUNT command which provides more information on naming and the concept of volumes.&lt;br /&gt;
&lt;br /&gt;
= How to identify files/directories =&lt;br /&gt;
&lt;br /&gt;
== On the Workbench ==&lt;br /&gt;
&lt;br /&gt;
The Workbench being graphical, a lot of things are understandable just by looking at them. That&#039;s why icons are often enough to understand what kind of object it represents: a file, a directory, a disk...&lt;br /&gt;
&lt;br /&gt;
In case you have a doubt, just look at the information on an icon. The Workbench will tell you the type of the object. It is displayed next to its name.&lt;br /&gt;
&lt;br /&gt;
== In a shell ==&lt;br /&gt;
&lt;br /&gt;
In a shell the &#039;&#039;&#039;list&#039;&#039;&#039; command can be used to see if an object is a file or a directory.&lt;br /&gt;
&lt;br /&gt;
[[File:Files-dirs-in-shell.png|The &#039;&#039;&#039;list&#039;&#039;&#039; command shows a file of 925678 bytes and two directories]]&lt;br /&gt;
&lt;br /&gt;
A file will be displayed with its size, whereas a directory will be displayed with the text &#039;&#039;&#039;Dir&#039;&#039;&#039; next to it.&lt;br /&gt;
&lt;br /&gt;
Also, as you can see on the screenshot, the list command displays other characteristics on these 3 items: the protection bits and the date they were updated the last time. The command also sums up what it just listed.&lt;br /&gt;
&lt;br /&gt;
= All AmigaOS components =&lt;br /&gt;
&lt;br /&gt;
AmigaOS is made of components that are needed as soon as the system starts or later when the user or the system needs them.&lt;br /&gt;
&lt;br /&gt;
== Kickstart modules ==&lt;br /&gt;
&lt;br /&gt;
These components are the heart of AmigaOS. Their duty is to draw graphics, to handle discs or to handle all reads/writes to files. Also one of them is the AmigaOS kernel which is a kind of director handling the work of all other components.&lt;br /&gt;
These Kickstart modules are loaded at the beginning of the operating system boot process (read [[UserDoc:How_AmigaOS_Works#AmigaOS_boot_procedure|here]]). You can find them all in the &#039;&#039;&#039;Kickstart&#039;&#039;&#039; directory on the system volume. Here is a list:&lt;br /&gt;
&lt;br /&gt;
=== Mandatory modules ===&lt;br /&gt;
&lt;br /&gt;
The following modules are required in any AmigaOS system. Without one of these, the system will not start.&lt;br /&gt;
&lt;br /&gt;
* kernel - The kernel works like the conductor of an orchestra. Its job is to make everything work together. It creates processes, handles memory usage, defines the way other components will access peripherals...etc. Note that the AmigaOS kernel is not based on any other kernel. It is a unique kernel that has existed since 1983.&lt;br /&gt;
* loader - this component handles the loading of all other kickstart modules&lt;br /&gt;
* battclock.resource.kmod - this module handles reading/writing the battery backed up clock which is used on all computers to keep the date and time&lt;br /&gt;
* bootimage - this is the boot picture. It is displayed during the start sequence of AmigaOS&lt;br /&gt;
* bootmenu.kmod - this component handles the Early Startup Menu the user can employ to define some settings before starting AmigaOS&lt;br /&gt;
* con-handler.kmod - it directs read and write requests to the console window, to a serial AUX: device or any other supported interface&lt;br /&gt;
* console.device.kmod - it opens a window and reads/writes text to and from that window&lt;br /&gt;
* diskboot.kmod - handles the booting of AmigaOS from a supported disk&lt;br /&gt;
* diskboot.config - this is a text file experienced users can modify to change the boot behaviour of AmigaOS&lt;br /&gt;
* dos.library.kmod - this module is a collection of functions that any program can use to perform actions on disks, files and directories&lt;br /&gt;
* elf.library.kmod - handles the loading of executable programs&lt;br /&gt;
* env-handler.kmod - handles the reads/writes of environment variables&lt;br /&gt;
* FileSystem.resource.kmod - handles access to the different filesystems&lt;br /&gt;
* gadtools.library.kmod - a collection of functions used to create all graphic objects like gadgets, sliders, menus...&lt;br /&gt;
* gameport.device.kmod - handles the reads/writes of game pads and joysticks&lt;br /&gt;
* graphics.library.kmod - a collection of functions used to draw graphic elements on the monitor&lt;br /&gt;
* hunk.library.kmod - a set of functions to read a data stream into memory&lt;br /&gt;
* input.device.kmod - handles input events like keyboard events or mouse clicks&lt;br /&gt;
* intuition.library.kmod - a collection of functions to create and handle all graphic elements (screens, windows, the mouse pointer...)&lt;br /&gt;
* layers.library.kmod - set of functions to be used to handle different layers in graphic operations&lt;br /&gt;
* keyboard.device.kmod - driver for the keyboard&lt;br /&gt;
* keymap.library.kmod - functions to handle different keymaps&lt;br /&gt;
* newlib.library.kmod - collection of functions to perform memory operations (allocating memory, copying memory areas... )&lt;br /&gt;
* nonvolatile.library.kmod - provides a simple means for an application developer to manage nonvolatile storage&lt;br /&gt;
* nvram.resource.kmod - handles the reads/writes to the NVRAM chip present on many AmigaOS computers&lt;br /&gt;
* PCIGraphics.card - driver that supports the use of different graphic cards&lt;br /&gt;
* ram-handler.kmod - functions that handle the &#039;&#039;&#039;Ram disk:&#039;&#039;&#039;.&lt;br /&gt;
* ramdrive.device.kmod - device that allows the usage of the ramdrive device &#039;&#039;&#039;RAD:&#039;&#039;&#039; disk&lt;br /&gt;
* ramlib.kmod - loads disk based libraries and devices for exec.library&lt;br /&gt;
* rtg.library - library of functions to perform low level graphic operations on graphics cards&lt;br /&gt;
* shell.kmod - the AmigaOS command line interface&lt;br /&gt;
* strap.kmod - module that handles booting on different disk devices&lt;br /&gt;
* timer.device.kmod - driver to give access to timing functions&lt;br /&gt;
&lt;br /&gt;
=== Filesystem support ===&lt;br /&gt;
&lt;br /&gt;
These kickstart modules can be loaded optionally. If you want to use a particular filesystem on your disk partitions, you need to load the corresponding filesystem module.&lt;br /&gt;
&lt;br /&gt;
* CDFileSystem - handles the CD-ROM disks with data stored in different formats: ISO9660, HFS...&lt;br /&gt;
* SmartFilesystem - allows the usage of partitions in SFS0 and SFS2 layouts&lt;br /&gt;
* JXFileSystem - allows the usage of partitions in JXFS layout (now obsolescent)&lt;br /&gt;
* FastFileSystem - allows the usage of partitions in FFS and FFS2 layouts&lt;br /&gt;
* NGFileSystem - an experimental file system designed to gradually replace the FastFileSystem&lt;br /&gt;
* diskcache.library.kmod - component required by the SmartFileSystem and JXFileSystem modules&lt;br /&gt;
&lt;br /&gt;
=== Hardware drivers ===&lt;br /&gt;
&lt;br /&gt;
==== Graphic cards drivers ====&lt;br /&gt;
&lt;br /&gt;
* 3dfxVoodoo.chip&lt;br /&gt;
* 3DLabsPermedia2.chip&lt;br /&gt;
* ATIRadeon.chip&lt;br /&gt;
* RadeonHD.chip&lt;br /&gt;
* siliconmotion502.chip&lt;br /&gt;
&lt;br /&gt;
==== Disk drivers ====&lt;br /&gt;
&lt;br /&gt;
Each of these drivers allows the use of disks connected to a disk controller. These files are named after the controller they support. As an example, the &#039;&#039;&#039;sii3114ide.device.kmod&#039;&#039;&#039; allows the use of disks connected to a &#039;&#039;&#039;Silicon Image SiI3114&#039;&#039;&#039; controller chip.&lt;br /&gt;
&lt;br /&gt;
* it8212ide.device.kmod&lt;br /&gt;
* lsi53c8xx.device.kmod&lt;br /&gt;
* sam460sata.device.kmod&lt;br /&gt;
* sii3112ide.device.kmod&lt;br /&gt;
* sii3512ide.device.kmod&lt;br /&gt;
* sii3114ide.device.kmod&lt;br /&gt;
* sii0680ide.device.kmod&lt;br /&gt;
* sii3132ide.device.kmod&lt;br /&gt;
&lt;br /&gt;
==== USB drivers ====&lt;br /&gt;
&lt;br /&gt;
* hub.usbfd&lt;br /&gt;
* usbsys.device&lt;br /&gt;
* usbresource.library&lt;br /&gt;
* ehci.usbhcd&lt;br /&gt;
* ohci.usbhcd&lt;br /&gt;
* uhci.usbhcd&lt;br /&gt;
* massstorage.usbfd&lt;br /&gt;
&lt;br /&gt;
==== Other drivers ====&lt;br /&gt;
&lt;br /&gt;
* bootkeyboard.usbfd - allows a USB keyboard to be used even before the USB stack is loaded&lt;br /&gt;
* bootmouse.usbfd - allows a USB mouse to be used even before the USB stack is loaded&lt;br /&gt;
* fpga.resource.kmod - allows to use the FPGA components which are present on some Amiga computers&lt;br /&gt;
* i2c.resource.kmod - allows to use the i2c interface present on some Amiga computers&lt;br /&gt;
* xena.resource.kmod - provides access to the Xena chip on the AmigaOne X1000&lt;br /&gt;
&lt;br /&gt;
==== Misc modules ====&lt;br /&gt;
&lt;br /&gt;
* petunia.library.kmod - this module contains the Just-In-Time emulator that allows AmigaOS to run programs made for the Motorola 68k processor&lt;br /&gt;
&lt;br /&gt;
== Control of the Kickstart ==&lt;br /&gt;
&lt;br /&gt;
The Kickstart/ drawer contains an ASCII file called &amp;quot;Kicklayout&amp;quot;. This file lists all the modules that must be loaded from the system volume during the boot process. It is read by the boot loaders &amp;quot;SLB&amp;quot; or &amp;quot;amigaboot&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The Kicklayout file consists of a number of configurations, each of which describes a set of Kickstart modules. Each configuration has a label and the various configurations are listed by label on the boot screen. The user may elect to load the default configuration or to select any one of the other configurations. Often a developer will have several configurations in his/her Kicklayout file, some of which may be experimental, while the default is a &amp;quot;known good&amp;quot; configuration to which (s)he can fall back.&lt;br /&gt;
&lt;br /&gt;
You can edit the Kicklayout file using Notepad or any other ASCII editor. You are strongly advised to leave the original configuration unchanged (as a fall-back) and to add new configurations at the end of the file, each with its own label. That way you can still recover if you make a mistake while editing.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;; Configuration name&lt;br /&gt;
LABEL MainSystem&lt;br /&gt;
; Exec name&lt;br /&gt;
EXEC Kickstart/loader.of&lt;br /&gt;
;&lt;br /&gt;
; PPC native modules&lt;br /&gt;
;&lt;br /&gt;
MODULE Kickstart/kernel&lt;br /&gt;
;&lt;br /&gt;
MODULE Kickstart/FastFileSystem&lt;br /&gt;
MODULE Kickstart/CDFileSystem&lt;br /&gt;
MODULE Kickstart/NGFileSystem&lt;br /&gt;
;&lt;br /&gt;
(etc)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that lines that start with a semicolon (&amp;quot;;&amp;quot;) are treated as comments and are ignored. Each configuration must start with a &amp;quot;LABEL&amp;quot; keyword and should be separated from the previous configuration by a blank line. The blank line signifies &amp;quot;Stop loading here&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Each module to be loaded is defined by the &amp;quot;MODULE&amp;quot; keyword, followed by the path and file name. You can use any path &#039;&#039;on the system volume&#039;&#039;, so you could have two or more drawers containing Kickstart modules and address them independently if you so wished. You can not refer to modules on other volumes, since they have not been mounted by DOS (which does not exist yet) and only the system volume is available at this early stage.&lt;br /&gt;
&lt;br /&gt;
=== Selecting the Default Configuration ===&lt;br /&gt;
&lt;br /&gt;
You can specify in the NVRAM the label of the default configuration in the Kicklayout. For instance, if your default configuration is called &amp;quot;MainSystem&amp;quot;, the LABEL line will look like this:&lt;br /&gt;
&lt;br /&gt;
LABEL MainSystem&lt;br /&gt;
&lt;br /&gt;
You can define an NVRAM variable called &amp;quot;boot_config&amp;quot; using U-Boot, CFE or the &amp;quot;nvsetvar&amp;quot; tool. Simply type:&lt;br /&gt;
&lt;br /&gt;
nvsetvar boot_config &amp;quot;MainSystem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[Note that nvsetvar may be inhibited from writing to the NVRAM on some systems, in which case you will have to use U-Boot or CFE to set the variable]&lt;br /&gt;
&lt;br /&gt;
If you do not specify a default configuration with the &amp;quot;boot_config&amp;quot; variable, the boot loader will default to the first configuration in the Kicklayout.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== System components ==&lt;br /&gt;
&lt;br /&gt;
[[File:Workbench_directory_listing.png|frame|right|List of directories and files present at the root of any AmigaOS system]]&lt;br /&gt;
&lt;br /&gt;
Beside the kickstart modules, AmigaOS uses many different components that can be loaded only when needed. These files are stored in different directories in the system volume.&lt;br /&gt;
A default AmigaOS installation looks like this:&lt;br /&gt;
&lt;br /&gt;
* C&lt;br /&gt;
This directory contains AmigaDOS &#039;&#039;&#039;C&#039;&#039;&#039;ommands&lt;br /&gt;
* Classes&lt;br /&gt;
contains different object elements easy to be used in any program: gadgets, requesters, graphic table, windows...&lt;br /&gt;
* Devs&lt;br /&gt;
contains definitions for &#039;&#039;&#039;Dev&#039;&#039;&#039;ices&lt;br /&gt;
* Emulation&lt;br /&gt;
contains files used for the 68k emulation (though E-UAE)&lt;br /&gt;
* Fonts&lt;br /&gt;
contains various systems fonts&lt;br /&gt;
* Internet&lt;br /&gt;
contains Internet-related files and configurations&lt;br /&gt;
* Kickstart&lt;br /&gt;
contains the kickstart modules&lt;br /&gt;
* L&lt;br /&gt;
contains hand&#039;&#039;&#039;l&#039;&#039;&#039;ers and filesystems&lt;br /&gt;
* Libs&lt;br /&gt;
contains dynamic &#039;&#039;&#039;Lib&#039;&#039;&#039;rairies of functions&lt;br /&gt;
* Locale&lt;br /&gt;
contains all files used to customise the system for your locality (catalogs, keymaps...)&lt;br /&gt;
* MUI&lt;br /&gt;
contains the files needed for programs that use the MUI third party graphic interface&lt;br /&gt;
* [[Prefs]]&lt;br /&gt;
contains the preference programs used to customise AmigaOS&lt;br /&gt;
* S&lt;br /&gt;
contains the system&#039;s &#039;&#039;&#039;S&#039;&#039;&#039;cripts&lt;br /&gt;
* SObjs&lt;br /&gt;
contains .so shared object library files&lt;br /&gt;
* Storage&lt;br /&gt;
contains other optional files, not currently used&lt;br /&gt;
* System&lt;br /&gt;
contains some programs used by the system itself (i.e. you don&#039;t need to run them yourself) or low-level programs like disk tools&lt;br /&gt;
* [[Utilities]]&lt;br /&gt;
contains several programs you can use to achieve some tasks on AmigaOS&lt;br /&gt;
&lt;br /&gt;
= Motorola 680x0 Emulators =&lt;br /&gt;
&lt;br /&gt;
For a long time Amigas have had the famous Motorola 680x0 processors as the central unit for execution. Unfortunately the time of the 680x0 series is passing in favor of other architectures. The new era of processors reached the Amiga some time ago, when expansion boards became available for extending the Classic systems with the raw power of a PowerPC processor.&lt;br /&gt;
&lt;br /&gt;
In the old operating system (AmigaOS 3.x) it was not possible to gain the full advantage of the new processors. The system itself and most of the applications required the original Motorola 680x0 processor. There was no 680x0 emulation available for the PowerPCs, so the 680x0 could not be &amp;quot;switched off&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Thus the new processors remained as a powerful, but mostly unused adjunct to the main 680x0 processor. &amp;quot;Native&amp;quot; PowerPC programs were rare, and every time a PowerPC program called the system, a so called &amp;quot;context switch&amp;quot; occurred between the 680x0 and PowerPC code, often causing a large performance penalty.&lt;br /&gt;
&lt;br /&gt;
The new Amiga platform is based on the PowerPC processor family, therefore the new version of the AmigaOS has to smooth the transition from the 680x0 series, which is achieved by emulating the old processor architecture. The operating system itself is written almost 100 percent for the PowerPC processors, but the 680x0 legacy applications require an emulated 680x0 processor. &lt;br /&gt;
&lt;br /&gt;
== Two 680x0 Emulators ==&lt;br /&gt;
&lt;br /&gt;
In version 4.0 of AmigaOS, two different emulators were implemented; one is the successor of BlackBox emulation, it is an interpretive emulator, thus the emulation speed is mediocre. On the other hand it has a very low &amp;quot;reaction time&amp;quot;, and is ideal for time critical parts, such as interrupts.&lt;br /&gt;
&lt;br /&gt;
The other is Petunia, the &amp;quot;JIT emulator&amp;quot;. A fast, but less compatible way of emulation of the legacy Motorola processors. It is intended mainly for emulating applications, and therefore, when execution of the application leaves the bounds of the application&#039;s code segment, emulation falls back to the interpretive method, where it does its job and returns to the JIT emulation again.&lt;br /&gt;
&lt;br /&gt;
Dynamic recompilation (also called just-in-time compilation or simply JIT compilation) is a technique of translating foreign processor machine code to native machine code, &amp;quot;on the fly&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This technique is common nowadays, commonly applied in JAVA virtual machines, and it is also used with success in several emulators. In dynamic recompilation there is the possibility of runtime optimization of the emulated code by collecting statistics of the execution process. Therefore (theoretically) the final executed code can be even faster than the original code on its original processor.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Emulated opcodes:&lt;br /&gt;
* all user and supervisor level opcodes of the Motorola 68040&lt;br /&gt;
* all FPU opcodes of the Motorola 68881/68882 &lt;br /&gt;
&lt;br /&gt;
AmigaOS claims only 68020/68881 compatibility to applications because this is the safest compatibility level, but both emulators are compatible with the machine code up to the level of 68040/060 processors.&lt;br /&gt;
&lt;br /&gt;
At compile time, a low level flag and branch control analysis allows on-the-fly optimizations of compiled code.&lt;br /&gt;
&lt;br /&gt;
== Removing the JIT Emulator ==&lt;br /&gt;
&lt;br /&gt;
Using the dynamic translation requires a lot more memory than the interpretive emulation. The translated code needs to be stored somewhere, not to mention the data collection tables.&lt;br /&gt;
&lt;br /&gt;
If speed is not as important as the memory consumption of the system, then the JIT emulator can be removed, leaving the job to the interpretive emulator.&lt;br /&gt;
&lt;br /&gt;
Thanks to the modular design of AmigaOS kickstart, all you need to do is edit the &amp;quot;Sys:Kickstart/Kicklayout&amp;quot; file, simply put a semicolon (;) at the beginning of the module line of Petunia.library.kmod. After rebooting the system from cold, the JIT emulator will not be reloaded. Make sure that you alter the appropriate configuration in the Kicklayout file, there may be several alternative configurations, with different names like &amp;quot;DefaultJIT&amp;quot;, or &amp;quot;DefaultNoJIT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Configuring the Emulators ==&lt;br /&gt;
&lt;br /&gt;
Petunia cooperates with a so called &amp;quot;black list&amp;quot;. By default, Petunia emulates every 680x0 program or library that is loaded by DOS.library/LoadSeg function, but if an executable or library shows incompatibilities with Petunia, then it can be explicitly inhibited from the dynamic recompilation by specifying it in a list.&lt;br /&gt;
&lt;br /&gt;
If an executable needs to be added to the list, then it can be done by extending the file &amp;quot;DEVS:applications.dos&amp;quot; with the &#039;&#039;&#039;Compatibility&#039;&#039;&#039; preferences program from the Prefs drawer of the system. Adding a program name to the list and checking it will prevent Petunia from emulating that program, and it will be interpreted instead by the built-in interpreter.&lt;br /&gt;
&lt;br /&gt;
Removing a program from the list or unchecking (thus allowing Petunia to emulate it again) can be done with the same preferences program.&lt;br /&gt;
&lt;br /&gt;
Please note: some programs consist of multiple executables (shared libraries, plugins). If you want to fully disable the translation of such programs, then every part must be added to the list.&lt;br /&gt;
&lt;br /&gt;
For example to disable UnArc fully, you would have to add to the list all files from libs:xad and also xadmaster.library. &lt;br /&gt;
&lt;br /&gt;
= AmigaOS boot procedure =&lt;br /&gt;
&lt;br /&gt;
Classic Amigas with PowerPC accelerators, the original AmigaOne SE/XE and the Sam series of Amigas all use the Second Level Booter (SLB) to read their Kickstart modules from the system volume. The newer A-Eon machines (X1000, X5000, A1222) all use a loader called AmigaBoot. In the X1000, AmigaBoot must be read from an FFS partition, while in the later machines, it is stored in the on-board CF card. The process of loading the kickstart modules is the same in all cases.&lt;br /&gt;
&lt;br /&gt;
Basically a computer with AmigaOS does the following when the power button is pushed:&lt;br /&gt;
&lt;br /&gt;
* [[File:Uboot.jpg|200px]]&lt;br /&gt;
The BIOS ([[UserDoc:BIOS|Uboot]] or [[UserDoc:BIOS|CFE]]) of the computer initialises the hardware: graphic card, USB ports... At this point, the monitor wakes up and the first information is displayed. This shows if hardware is correctly recognised. As an example you can see if a hard drive is correctly connected into the machine and your BIOS is correctly set up to make this drive useable.&lt;br /&gt;
* Depending on the machine type, the BIOS will look on the harddisk to find the Second Level Booter (SLB) or AmigaBoot, or will execute the AmigaBoot program from the on-board NVRAM. Whereas the BIOS does not know about AmigaOS disk structure, the SLB/AmigaBoot can &#039;&#039;understand&#039;&#039; the AmigaOS partitions and file systems. In other words, it is the link between the BIOS and the rest of the boot procedure. Its goal is also to give you the ability to start several configurations present on the same drive.&lt;br /&gt;
* [[File:SLB.png|200px]]&lt;br /&gt;
SLB/AmigaBoot analyses all Amiga partitions on the system disk. It reads each system configuration it finds on the partition and displays them all for the user to select one to load. AmigaBoot (not SLB) also displays configurations from Kickstart/Kicklayout files on every &amp;quot;bootable&amp;quot; partition.&lt;br /&gt;
The user can [[UserDoc:How_AmigaOS_Works#Control_of_the_Kickstart|define]] many different kickstart configurations to choose from. Also both AmigaOS and Linux can be selected for boot.&lt;br /&gt;
* [[File:Kmods loading.png|200px]]&lt;br /&gt;
SLB/AmigaBoot loads the kickstart files of the selected configuration and executes the &#039;&#039;&#039;Loader&#039;&#039;&#039; module&lt;br /&gt;
* &#039;&#039;&#039;Loader&#039;&#039;&#039; executes the kickstart modules (Exec, devices, libraries...)&lt;br /&gt;
* AmigaOS becomes alive displaying the AmigaOS boot picture on the monitor&lt;br /&gt;
* The AmigaDOS library executes the [[UserDoc:System_Scripts#startup-sequence|startup-sequence]] script found on the system volume&lt;br /&gt;
* The Startup-sequence will be executed and all commands it contains are executed. It means that starting from here the boot procedure is easy to follow and understand.&lt;br /&gt;
* The Workbench is started&lt;br /&gt;
&lt;br /&gt;
At this point the user can use his/her computer.&lt;br /&gt;
&lt;br /&gt;
= How to make a Bootable USB Memory Stick for AmigaOS 4.1 =&lt;br /&gt;
&lt;br /&gt;
By Julian Margetson (&amp;quot;Spectre660&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Prerequisites:&lt;br /&gt;
* USB memory stick of 2 GB or less in size.&lt;br /&gt;
* It is best to only have one USB mass storage device connected while you are creating your bootable USB memory stick.&lt;br /&gt;
* Plug the USB memory stick into a USB port on your machine.&lt;br /&gt;
* Note that the device will be formatted so make sure that you use an empty memory stick or one that does not contain any data that you need or backup the contents before you begin.&lt;br /&gt;
&lt;br /&gt;
Procedure:&lt;br /&gt;
# You use Media Toolbox in the System: drawer to prepare the USB stick. On starting Media Toolbox select &#039;&#039;usbdisk.device&#039;&#039; as the device to use.&lt;br /&gt;
# Make certain that you have selected usbdisk.device and not any other device.&lt;br /&gt;
# Click on &amp;quot;Start&amp;quot;&lt;br /&gt;
# You will see the usb mass storage unit connected in a list.&lt;br /&gt;
# Make sure that the Unit type displayed for the USB memory stick is &amp;quot;Removable hard disk&amp;quot;&lt;br /&gt;
# Select that Unit by clicking on it.&lt;br /&gt;
# The first thing that you need to do is to install the RDB onto the USB Memory Stick.&lt;br /&gt;
# Click on the  &amp;quot;Install&amp;quot; button.&lt;br /&gt;
# A window Labeled &amp;quot;RDB/disk geometry editing&amp;quot; comes up.&lt;br /&gt;
## Towards the bottom of the window is the &amp;quot;AmigaOne boot code (SLB)&amp;quot; section.&lt;br /&gt;
## Select the &amp;quot;Install&amp;quot; button .&lt;br /&gt;
## A file requester  &amp;quot;Select AmigaOne Boot Code&amp;quot; now comes  up with the Drawer choice defaulting to &amp;quot;l:&amp;quot;&lt;br /&gt;
## Select file &amp;quot;slb_v2&amp;quot;. &lt;br /&gt;
## Select Ok.&lt;br /&gt;
## You are now returned to the &amp;quot;RDB/disk geometry editing window&amp;quot;.&lt;br /&gt;
## Select &amp;quot;Ok-accept changes&amp;quot;.&lt;br /&gt;
# You are now returned to the display showing the attached USB unit.&lt;br /&gt;
# Select &amp;quot;Edit partitions and Filesystems&amp;quot;. You will now see the Window &#039;Editing partitions for disk&amp;quot;&lt;br /&gt;
# Select &amp;quot;Add partition&amp;quot;&lt;br /&gt;
# This defaults to using the whole device as a single partition.&lt;br /&gt;
# It is possible to use create more partitions but for this tutorial we will only use one.&lt;br /&gt;
# You now need to give the partition a unique name (e.g. USB0 or something that is different from any of the existing partitions on your hard drive). This is done by changing the default DH0 in the &amp;quot;Name&amp;quot; box.&lt;br /&gt;
# Now make sure that the Boxes &amp;quot;Automount&amp;quot; and &amp;quot;Bootable&amp;quot; are  selected and show the &amp;quot;Tick mark&amp;quot;.&lt;br /&gt;
# You need to set &amp;quot;Boot priority&amp;quot; to higher than the boot priority of your hard drive boot partition(s). This is done by increasing Boot priority by clicking on the &amp;quot;+&amp;quot; to the right of the &amp;quot;boot priority&amp;quot; box. Normally you can set the boot priority to 2 .&lt;br /&gt;
# Next it is time to select the file system to use.&lt;br /&gt;
# Select &amp;quot;Select filesystem/edit details&amp;quot;.&lt;br /&gt;
# The Window &amp;quot;Editing details for partition &#039;USB0&#039;&amp;quot;  ,or whatever partition name you used, comes up.&lt;br /&gt;
## Select the file system that you are going to use by selecting the pull down menu under &amp;quot;Filesystem chooser&amp;quot;.&lt;br /&gt;
## Only filesystems SFS/00 or SFS/02 will work for a bootable device.&lt;br /&gt;
## The option that gives the most flexibility at the moment is SFS/00 as a USB stick in this format can be read from and written to using another compatible system in the event that you need to make modifications after it is created without a booting AmigaOS 4.1 machine.&lt;br /&gt;
## Next select Blocksize from the &amp;quot;Blocksize&amp;quot; pull down menu. 512 is the correct size to use.&lt;br /&gt;
## Now Select &amp;quot;Ok-accept changes&amp;quot;.&lt;br /&gt;
## Your are now returned to the &amp;quot;Edit partitions for disk&amp;quot; window.&lt;br /&gt;
## Again select &amp;quot;Ok-accept changes&amp;quot;&lt;br /&gt;
# You are now returned to the window showing the USB mass storage unit list.&lt;br /&gt;
# Select &amp;quot;Save to disk&amp;quot;&lt;br /&gt;
# A requester pops up with the options &amp;quot;Yes, Save.&amp;quot; or &amp;quot;No!&amp;quot;&lt;br /&gt;
# Select the &amp;quot;Yes, save.&amp;quot; option.&lt;br /&gt;
# You now close Media Toolbox by clicking on the close icon (X) on the left of the Media Toolbox window.&lt;br /&gt;
# This will give you a requester advising that you need to reboot the machine for the changes to take effect. At this point you need to remove the USB memory stick for the machine. If you do not then the Machine will attempt boot from it before it is formatted and the required Kickstart and AmigaOS 4.1 files are copied to it.&lt;br /&gt;
# Select &amp;quot;Yes, reboot NOW!&amp;quot;.&lt;br /&gt;
# Once you have rebooted connect your USB Memory Stick to a USB port.&lt;br /&gt;
# A disk icon &amp;quot;USB0:Uninitialized&amp;quot; (or whatever partition name you used) appears on Workbench.&lt;br /&gt;
# You now need to format the device.&lt;br /&gt;
# To format Select this Icon and go to the Workbench &amp;quot;Icons&amp;quot; menu .&lt;br /&gt;
# Select &amp;quot;Format Disk&amp;quot;&lt;br /&gt;
# You can give the USB Memory Stick a unique name and  select whether you want a Trashcan or not.&lt;br /&gt;
# You can use either a full Format or a  Quick Format. Full Format may take a few minutes.&lt;br /&gt;
# Once formatted the USB Memory Stick is ready for you to copy the required files from you hard drive or AmigaOS Install CD to it in order to boot AmigaOS 4.1 from it.&lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=Main_Page&amp;diff=12368</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=Main_Page&amp;diff=12368"/>
		<updated>2023-10-03T15:15:49Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: /* For Users */ removed &amp;quot;the&amp;quot; before &amp;quot;AmigaDOS&amp;quot; as redundant&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Welcome to the AmigaOS Documentation Wiki =&lt;br /&gt;
&lt;br /&gt;
This is the AmigaOS Documentation Wiki. Here we collect all information for users and developers of AmigaOS version 4.0 and beyond.&lt;br /&gt;
&lt;br /&gt;
== For Users ==&lt;br /&gt;
The [[UserDoc:Main|User Documentation Section]] is meant as a starting point for users. It begins by explaining the concepts of AmigaOS, AmigaDOS commands and the Workbench environment. It shows how to use Menus, the Keyboard Shortcuts available, and later how to configure the Workbench and AmigaOS from the look and feel of the desktop (e.g. changing the background image) to more comprehensive tasks such as setting up a network, configuring Sound Cards and similar information.&lt;br /&gt;
&lt;br /&gt;
== For Developers ==&lt;br /&gt;
Documentation is organized into multiple sections. The [[DeveloperDoc:Main|Developer Section]] contains documentation that is useful for developing applications, device drivers, games and other programming projects on AmigaOS. The [[Tutorials:Main|Tutorial Section]] contains a couple of hands-on tutorials that are intended to allow beginning developers to get into programming with step-by-step examples. Finally, the [[Autodocs:Main|Autodocs section]] contains the well-known &#039;&#039;autodocs&#039;&#039;, function-by-function documentation of libraries and devices in the AmigaOS system.&lt;br /&gt;
&lt;br /&gt;
== For Wiki Editors ==&lt;br /&gt;
&lt;br /&gt;
The [[EditorDoc:Main|Editor Documentation Section]] is meant for editors to communicate with each other on the do&#039;s and don&#039;ts of editing this wiki.&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
&lt;br /&gt;
Thank you to our [[Wiki Author Credits|contributors]] that helped with the material found on this wiki.&lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=AmigaDOS_Introduction&amp;diff=8724</id>
		<title>AmigaDOS Introduction</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=AmigaDOS_Introduction&amp;diff=8724"/>
		<updated>2016-09-17T01:34:55Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: /* About AmigaDOS */ replaced &amp;quot;memorize&amp;quot; with &amp;quot;data storage&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:DOS]]{{WIP}}&lt;br /&gt;
= About AmigaDOS =&lt;br /&gt;
&lt;br /&gt;
AmigaDOS is the name given to a subsystem group of modules which give to the AmigaOS capability to handle I/O with data storage units like hard disks, SSD etc.&lt;br /&gt;
&lt;br /&gt;
AmigaDOS extends AmigaOS capabilities with:&lt;br /&gt;
&lt;br /&gt;
*[[DOS Library|dos.library]]: the AmigaDOS core library, it gives many utility functions to manage I/O of files, directories, processes, etc...;&lt;br /&gt;
*&#039;&#039;&#039;File System&#039;&#039;&#039;: an AmigaDOS (dos.library) process which handles how system organizes data on phisical memory units like hard disks, SSD, etc...;&lt;br /&gt;
*&#039;&#039;&#039;CLI&#039;&#039;&#039;: Command Line Interface for user with which he can interact with AmigaDOS processes without use of GUI paradigm;&lt;br /&gt;
   &lt;br /&gt;
AmigaDOS provides a process that you can use, called &#039;&#039;&#039;Command Line Interface&#039;&#039;&#039; or &#039;&#039;&#039;Shell&#039;&#039;&#039;. There may be several Shell processes running simultaneously, numbered from 1 onwards. The Shell processes read &#039;&#039;&#039;commands&#039;&#039;&#039;&lt;br /&gt;
and then execute them. To make additional Shell processes, you use the NEWSHELL or RUN commands. To remove a Shell process use the ENDSHELL command. (You can find a full description of these commands in Chapter 2).&lt;br /&gt;
&lt;br /&gt;
= Console Handling =&lt;br /&gt;
&lt;br /&gt;
You can direct information that you enter at the terminal to a Command&lt;br /&gt;
Line Interface (Shell) that tells AmigaDOS to load a program, or you can&lt;br /&gt;
direct the information to a program running under that Shell. In either&lt;br /&gt;
case, &#039;&#039;&#039;console&#039;&#039;&#039; (or &#039;&#039;&#039;terminal&#039;&#039;&#039;) &#039;&#039;&#039;handler&#039;&#039;&#039; processes input and output. This&lt;br /&gt;
handler also performs local line editing and certain other functions. You&lt;br /&gt;
can type ahead as many as 512 characters - the maximum line length.&lt;br /&gt;
&lt;br /&gt;
To correct mistakes, you press the BACKSPACE key. This erases the last&lt;br /&gt;
character you typed. To rub out an entire line, hold down the Ctrl key&lt;br /&gt;
while you press X. This &#039;&#039;&#039;control combination&#039;&#039;&#039; is referred to from this point&lt;br /&gt;
on in the manual as Ctrl-X. You may also use the left and right cursor&lt;br /&gt;
keys to move within the command line to insert or remove characters if you&lt;br /&gt;
make a mistake.&lt;br /&gt;
&lt;br /&gt;
You can also search for the most recent occurrence of a specific command&lt;br /&gt;
by typing the command line, or the beginning of it, then pressing Shift-Up&lt;br /&gt;
(or Ctrl-R). For instance, if you type DIR and press Shift-Up, you will be&lt;br /&gt;
returned to the last command to perform a DIR of any directory. Pressing&lt;br /&gt;
Shift-Down moves you to the bottom of the history buffer, leaving the&lt;br /&gt;
cursor on a blank line.&lt;br /&gt;
&lt;br /&gt;
In addition to command line editing, the Shell also provides command&lt;br /&gt;
history, which allows you to recall previously-entered command lines, edit&lt;br /&gt;
them, and re-enter them. This is useful when you want to repeat a command&lt;br /&gt;
or enter several very similar commands.&lt;br /&gt;
&lt;br /&gt;
The shell uses a 2K command line buffer to retain command lines. The&lt;br /&gt;
exact number of lines varies depending on [the] lengths of the lines&lt;br /&gt;
actually stored. When the buffer fills up, the oldest lines are lost. You&lt;br /&gt;
access lines in the buffer through the up and down cursor keys:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| up cursor || Moves backwards in the history buffer (earlier lines).&lt;br /&gt;
|-&lt;br /&gt;
| down cursor || Moves forwards in the history buffer (later lines).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If you type anything, AmigaDOS waits until you have finished typing before&lt;br /&gt;
displaying any other output. Because AmigaDOS waits for you to finish, you&lt;br /&gt;
can type ahead without your input and output becoming intermixed. AmigaDOS&lt;br /&gt;
recognizes that you have finished a line when you press the RETURN key.&lt;br /&gt;
You can also tell AmigaDOS that you have finished with a line by&lt;br /&gt;
cancelling it. To cancel a line, you can either press Ctrl-X or press&lt;br /&gt;
BACKSPACE until all the characters on the line have been erased. Once&lt;br /&gt;
AmigaDOS is satisfied that you have finished, it starts to display the&lt;br /&gt;
output that it was holding back. If you wish to stop the output so that&lt;br /&gt;
you can read it, simply type any character (pressing the space bar is the&lt;br /&gt;
easiest), and the output stops. To restart output, press BACKSPACE,&lt;br /&gt;
Ctrl-X, or RETURN. Pressing RETURN causes AmigaDOS to try to execute the&lt;br /&gt;
command line typed after the current program exits.&lt;br /&gt;
&lt;br /&gt;
AmigaDOS recognizes Ctrl-\\ as an end-of-file indicator. In certain&lt;br /&gt;
circumstances, you use this combination to terminate an input file. (For a&lt;br /&gt;
circumstance when you would use Ctrl-\\, see &amp;quot;Understanding Device Names&amp;quot;,&lt;br /&gt;
below).&lt;br /&gt;
&lt;br /&gt;
If you find that strange characters appear on the screen when you type&lt;br /&gt;
anything on the keyboard, you have probably pressed Ctrl-O by mistake.&lt;br /&gt;
AmigaDOS recognizes this control combination as an instruction to the&lt;br /&gt;
console device (CON:) to display the alternative character set. To undo&lt;br /&gt;
this condition, you press Ctrl-N. Any further characters should then&lt;br /&gt;
appear as normal. You could press Esc-C to reset the console. This clears&lt;br /&gt;
the screen and displays normal text.&lt;br /&gt;
&lt;br /&gt;
The table below summarizes the editing capabilities of the Amiga&#039;s Shell&lt;br /&gt;
interface:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Key&lt;br /&gt;
! Shell Editing Commands&lt;br /&gt;
|-&lt;br /&gt;
| left cursor || Moves cursor one character to the left.&lt;br /&gt;
|-&lt;br /&gt;
| right cursor || Moves cursor one character to the right.&lt;br /&gt;
|-&lt;br /&gt;
| Shift-left cursor || Moves cursor to the beginning of the line.&lt;br /&gt;
|-&lt;br /&gt;
| Shift-right cursor || Moves cursor to the end of the line.&lt;br /&gt;
|-&lt;br /&gt;
| Backspace || Deletes the character to the left of the cursor.&lt;br /&gt;
|-&lt;br /&gt;
| Del || Deletes the character highlighted by the cursor.&lt;br /&gt;
|-&lt;br /&gt;
| Ctrl-H || Deletes the last character (same as BACKSPACE).&lt;br /&gt;
|-&lt;br /&gt;
| Ctrl-M || Processes the command line (same as RETURN).&lt;br /&gt;
|-&lt;br /&gt;
| Ctrl-J || Adds a line feed.&lt;br /&gt;
|-&lt;br /&gt;
| Ctrl-W || Deletes the word to the left of the cursor&lt;br /&gt;
|-&lt;br /&gt;
| Ctrl-X || Deletes the current line.&lt;br /&gt;
|-&lt;br /&gt;
| Ctrl-K || Deletes everything from the cursor forwards to the end of the line.&lt;br /&gt;
|-&lt;br /&gt;
| Ctrl-Y || Replaces the characters deleted with Ctrl-K.&lt;br /&gt;
|-&lt;br /&gt;
| Ctrl-U || Deletes everything from the cursor backwards to the start of the line.&lt;br /&gt;
|-&lt;br /&gt;
| Space bar (or any printable character) || Suspends output (stops scrolling).&lt;br /&gt;
|-&lt;br /&gt;
| Backspace || Resumes output (continues scrolling).&lt;br /&gt;
|-&lt;br /&gt;
| Ctrl-C || Sends a BREAK command to the current process (halts the process).&lt;br /&gt;
|-&lt;br /&gt;
| Ctrl-D || Sends a BREAK command to the current script (halts the script).&lt;br /&gt;
|-&lt;br /&gt;
| Ctrl-S || Suspends output.&lt;br /&gt;
|-&lt;br /&gt;
| Ctrl-Q || Resumes output if it was suspended with Ctrl-S.&lt;br /&gt;
|-&lt;br /&gt;
| Ctrl-\ || Closes the Shell window.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Finally, AmigaDOS recognizes all commands and argument typed in either&lt;br /&gt;
upper or lower case. AmigaDOS displays a filename with the characters in&lt;br /&gt;
the case used when it was created, but finds the file no matter what&lt;br /&gt;
combination of cases you use to specify the filename.&lt;br /&gt;
&lt;br /&gt;
= Using the Filing System =&lt;br /&gt;
&lt;br /&gt;
This section describes the AmigaDOS filing system. In particular, it&lt;br /&gt;
explains how to name, organize, and recall your files.&lt;br /&gt;
&lt;br /&gt;
A file is the smallest named object used by AmigaDOS. The simplest&lt;br /&gt;
identification of a file is by its filename, discussed below in &amp;quot;Naming&lt;br /&gt;
Files&amp;quot;. However, it may be necessary to identify a file more fully. Such&lt;br /&gt;
an identification may include the device or volume name, and/or directory&lt;br /&gt;
name(s) as well as the filename. These will be discussed in [the]&lt;br /&gt;
following sections.&lt;br /&gt;
&lt;br /&gt;
== Naming Files ==&lt;br /&gt;
&lt;br /&gt;
AmigaDOS holds information on disks in a number of files, named so that&lt;br /&gt;
you can identify and recall them. The filing system allows filenames to&lt;br /&gt;
have up to 30 characters, where the characters may be any printing&lt;br /&gt;
character except slash (/) and colon (:). This means that you can include&lt;br /&gt;
space ( ), equals (=), plus (+) and double quote (&amp;quot;), all special&lt;br /&gt;
characters recognized by the CLI, within a filename. However, if you use&lt;br /&gt;
these special characters, you must enclose the entire filename within&lt;br /&gt;
double quotes. To introduce a double quote character within a filename,&lt;br /&gt;
you must type an asterisk (*) immediately before that character. In&lt;br /&gt;
addition, to introduce an asterisk, you must type another asterisk. This&lt;br /&gt;
means that a file named:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
A*B = C&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
should be typed as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;A**B = C*&amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
for the CLI to accept it.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &#039;&#039;Note:&#039;&#039; This use of the asterisk is in contrast to many other operating systems where it is used as a universal &#039;&#039;wild card&#039;&#039;. An asterisk by itself in AmigaDOS represents the keyboard and the current window. For example,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
COPY filename TO *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
copies the filename to the screen. On the Amiga, the universal wild card is #?.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When spaces are used within a file, directory, or device name, quotes&lt;br /&gt;
are required when accessing the name. For example,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
COPY &amp;quot;df0:My file&amp;quot; TO ram:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Avoid spaces before or after filenames because they may cause confusion.&lt;br /&gt;
&lt;br /&gt;
== Using Directories ==&lt;br /&gt;
&lt;br /&gt;
The filing system also allows the use of directories as a way to group files together into logical units. For example, you may use two different&lt;br /&gt;
directories to separate program source from program documentation, or to keep files belonging to one person distinct from those belonging to another.&lt;br /&gt;
&lt;br /&gt;
Each file on a disk must belong to a directory. An empty disk contains one directory, called the root directory. If you create a file on an empty disk, then that file belongs to the root directory. However, directories may themselves contain other directories. Each directory may therefore contain files, or yet more directories, or a mixture of both. Any filename is unique only within the directory it belongs to, so that the file &amp;quot;fred&amp;quot; in the directory &amp;quot;bill&amp;quot; is a completely different file from the one called &amp;quot;fred&amp;quot; in the directory &amp;quot;mary&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This filing structure means that two people sharing a disk do not have to worry about accidentally overwriting files created by someone else, as&lt;br /&gt;
long as they always create files in their own directories.&lt;br /&gt;
&lt;br /&gt;
{{Note|title=WARNING|text=When you create a file with a filename that already exists, AmigaDOS deletes the previous contents of that file. No message to that effect appears on the screen. You can also use this directory structure to organize information on the disk, keeping different sorts of files in different directories.}}&lt;br /&gt;
&lt;br /&gt;
An example might help to clarify this. Consider a disk that contains two directories, called &amp;quot;bill&amp;quot; and &amp;quot;mary&amp;quot;. The directory &amp;quot;bill&amp;quot; contains two files, called &amp;quot;text&amp;quot; and &amp;quot;letter&amp;quot;. The directory &amp;quot;mary&amp;quot; contains a file called &amp;quot;data&amp;quot; and two directories called &amp;quot;letter&amp;quot; and &amp;quot;invoice&amp;quot;. These subdirectories each contain a file called &amp;quot;jun18&amp;quot;. [This figure] represents this structure as follows:&lt;br /&gt;
&lt;br /&gt;
                        ROOT&lt;br /&gt;
                          |&lt;br /&gt;
               +----------+----------+&lt;br /&gt;
               |                     |&lt;br /&gt;
             BILL                  MARY&lt;br /&gt;
               |                     |&lt;br /&gt;
          +----+----+           +--------+--------+&lt;br /&gt;
          |         |           |        |        |&lt;br /&gt;
        TEXT     LETTER       DATA    LETTER   INVOICE&lt;br /&gt;
                                         |        |&lt;br /&gt;
                                       JUN18    JUN18&lt;br /&gt;
&lt;br /&gt;
{{Note|text=The directory &amp;quot;bill&amp;quot; has a file called &amp;quot;letter&amp;quot;, while the directory &amp;quot;mary&amp;quot; contains a directory called &amp;quot;letter&amp;quot;. However, there is no confusion because both...are in different directories. There is no limit to the depth that you can &amp;quot;nest&amp;quot; directories.}}&lt;br /&gt;
&lt;br /&gt;
To specify a file fully, you must include the directory that owns it, the directory owning that directory, and so on. To specify a file, you&lt;br /&gt;
give the names of all the directories on the path to the desired file. To separate each directory name from the next directory or filename, you type a following slash (/). Thus, the full specification of the data files on the disk shown...above is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bill/text&lt;br /&gt;
bill/letter&lt;br /&gt;
mary/data&lt;br /&gt;
mary/letter/jun18&lt;br /&gt;
mary/invoice/jun18&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting the Current Directory ==&lt;br /&gt;
&lt;br /&gt;
A full file description can get extremely cumbersome to type, so the&lt;br /&gt;
filing system maintains the idea of a current directory. The filing&lt;br /&gt;
system searches for files in this current directory. To specify the&lt;br /&gt;
current directory, you use the CD (&#039;&#039;&#039;C&#039;&#039;&#039;urrent &#039;&#039;&#039;D&#039;&#039;&#039;irectory) command. If you have&lt;br /&gt;
set &amp;quot;mary&amp;quot; as your current directory, then the following names would be&lt;br /&gt;
sufficient to specify the files in that directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
data&lt;br /&gt;
letter/jun18&lt;br /&gt;
invoice/jun18&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can set any directory as the current directory. To specify any files&lt;br /&gt;
within that directory, simply type the name of the file. To specify files&lt;br /&gt;
within subdirectories, you need to type the names of the directories on&lt;br /&gt;
the path from the current directory specified.&lt;br /&gt;
&lt;br /&gt;
All the files on the disk are still available even though you&#039;ve set up&lt;br /&gt;
a current directory. To instruct AmigaDOS to search through the&lt;br /&gt;
directories from the root (top level) directory of a volume (disk or&lt;br /&gt;
partition), you type a colon (:) at the beginning of the file description.&lt;br /&gt;
Thus, when your file description [sic] has the current directory set to&lt;br /&gt;
&amp;quot;mary&amp;quot;, you can also obtain the file &amp;quot;data&amp;quot; by typing the description&lt;br /&gt;
&amp;quot;:mary/data&amp;quot;. Using the current directory method simply saves typing,&lt;br /&gt;
because all you have to do is specify the filename &amp;quot;data&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To obtain the other files on the disk, first type &amp;quot;:bill/text&amp;quot; and&lt;br /&gt;
&amp;quot;:bill/letter&amp;quot;, respectively. Another way might be to CD or type / before&lt;br /&gt;
the filename. Slash [(/)] does not mean &amp;quot;root&amp;quot; as in some systems, but&lt;br /&gt;
refers to the directory above the current directory. AmigaDOS allows&lt;br /&gt;
multiple slashes. Each slash refers to the level above. So a UNIX ../ is a&lt;br /&gt;
/ in AmigaDOS. Similarly, an MS-DOS ..\\ is a / in AmigaDOS. Thus, if the&lt;br /&gt;
current directory is &amp;quot;:mary/letter&amp;quot;, you may specify the file&lt;br /&gt;
&amp;quot;:mary/invoice/jun18&amp;quot; as &amp;quot;/invoice/jun18&amp;quot;. To refer to the files in&lt;br /&gt;
&amp;quot;:bill&amp;quot;, you could type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CD :bill&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CD //bill&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you could specify any file in &amp;quot;bill&amp;quot; with a single filename. Of&lt;br /&gt;
course, you could always use the // feature to refer directly to a&lt;br /&gt;
specific file. For example,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TYPE //bill/letter&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
displays the file without your first setting &amp;quot;bill&amp;quot; as the current&lt;br /&gt;
directory. To go straight to the root level, always type a colon (:)&lt;br /&gt;
followed by a directory name. If you use slashes, you must know the exact&lt;br /&gt;
numbewr of levels back desired.&lt;br /&gt;
&lt;br /&gt;
== Setting the Current Device ==&lt;br /&gt;
&lt;br /&gt;
Finally, you may have many disk drives. Each [floppy] disk device has a name in the form DFn (for example DF1), where the &amp;quot;n&amp;quot; refers to the number of the device. (Currently, AmigaDOS accepts the device names DF0 to DF3.) Each individual disk is also associated with a unique name, known as a volume name (see below for more details).&lt;br /&gt;
&lt;br /&gt;
In addition, the logical device SYS: is assigned to the disk you started the system up from. You can use this name in place of a disk device name (like DF0:).&lt;br /&gt;
&lt;br /&gt;
The current directory is also associated with a current drive, the drive where you may find the [current] directory. As you know, prefacing a file description with a colon serves to identify the root of the current drive. However, to give the root directory of a specific drive, you precede the colon  with the drive name. Thus, you have yet another way of specifying the file &amp;quot;data&amp;quot; in directory &amp;quot;mary&amp;quot;, that is &amp;quot;DF1:mary/data&amp;quot;. This assumes that you have inserted the disk into drive DF1. So, to reference a file on the drive DF0 called &amp;quot;project-report&amp;quot; in directory &amp;quot;peter&amp;quot;, you would type &amp;quot;DF0:peter/project-report&amp;quot;, no matter which directory you had set as the current one.&lt;br /&gt;
&lt;br /&gt;
{{Note|text=When you refer to a disk drive or any other device, on its own or with a directory name, you should always type the colon; for example, DF1:.}}&lt;br /&gt;
&lt;br /&gt;
This table illustrates the structure of a file description&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Left of the :&lt;br /&gt;
! Right of the :&lt;br /&gt;
! Right of a /&lt;br /&gt;
|-&lt;br /&gt;
| Device name or Volume name&lt;br /&gt;
| Directory name or Filename&lt;br /&gt;
| Subdirectory name or Filename&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Here are some examples of valid file descriptions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SYS:commands&lt;br /&gt;
DF0:bill&lt;br /&gt;
DF1:mary/letter&lt;br /&gt;
DF2:mary/letter/jun18&lt;br /&gt;
DOC:report/section1/figure&lt;br /&gt;
FONTS:silly-font&lt;br /&gt;
C:cls&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To gain access to a file on a particular disk, you can type its unique name, which is known as the disk&#039;s volume name, instead of the device&lt;br /&gt;
name. For instance, if the file is on the disk &amp;quot;MCC&amp;quot;, you can specify the same file by typing the name &amp;quot;MCC:peter/project-report&amp;quot;. You can use the volume name to refer to a disk regardless of the drive it is in. You assign a volume name to a disk when you format it. You can also change the volume name using the RELABEL command.&lt;br /&gt;
&lt;br /&gt;
A device name, unlike a volume name, is not really part of the name. For example, AmigaDOS can read a file you created on DF0: from another drive, such as DF1:, if you place the disk in that drive, assuming of course that the drives are interchangeable. That is, if you created a file called &amp;quot;bill&amp;quot; on a disk in drive DF0:, the file is known as &amp;quot;DF0:bill&amp;quot;. If you then move the disk to drive DF1:, AmigaDOS can still read the file, which is then known as &amp;quot;DF1:bill&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Attaching a Filenote ==&lt;br /&gt;
&lt;br /&gt;
Although a filename can give some information about its contents, it is&lt;br /&gt;
often necessary to look in the file itself to find out more. AmigaDOS&lt;br /&gt;
provides a simple solution to this problem. You can use the command called&lt;br /&gt;
FILENOTE to attach an associated comment. You can make up a comment of up&lt;br /&gt;
to 80 characters (you must enclose comments containing spaces in double&lt;br /&gt;
quotes). Anything can be put in a file comment: the day of the file&#039;s&lt;br /&gt;
creation, whether or not a bug has been fixed, the version number of a&lt;br /&gt;
program, and anything else that may help to identify it.&lt;br /&gt;
&lt;br /&gt;
You must associate a comment with a particular file - not all files have&lt;br /&gt;
them. To attach comments, you use the FILENOTE command. If you create a&lt;br /&gt;
new file, it will not have a comment. Even if the new file is a copy of a&lt;br /&gt;
file that has a comment, the comment is not copied to the new file.&lt;br /&gt;
However, any comment attached to a file which is overwritten is retained.&lt;br /&gt;
To write a program to copy a file and its comment, you&#039;ll have to do some&lt;br /&gt;
extra work to copy the comment.&lt;br /&gt;
&lt;br /&gt;
When you rename a file, the comment associated with it doesn&#039;t change.&lt;br /&gt;
The RENAME command only change the name of the file. The file&#039;s contents&lt;br /&gt;
and comment remain the same regardless of the name change.&lt;br /&gt;
&lt;br /&gt;
== Understanding Device Names ==&lt;br /&gt;
&lt;br /&gt;
Devices have names so that you can refer to them by name. Disk names such as DF0: are examples of device names. Note that you may refer to device names, like filenames, using either upper or lower case. For disks, you follow the device name by a filename because AmigaDOS supports files on these devices. Furthermore, the filename can include directories because AmigaDOS also supports directories.&lt;br /&gt;
&lt;br /&gt;
You can also create files in memory with the device called RAM:. RAM: implements a filing system in memory that supports any of the normal filing system comands.&lt;br /&gt;
&lt;br /&gt;
Once the RAM: device exists, you can, for instance, create a directory to copy all the commands into memory. To do this, type the following&lt;br /&gt;
commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAKEDIR ram:c&lt;br /&gt;
COPY sys:c TO ram:c&lt;br /&gt;
ASSIGN C: ram:c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You could then look at the output with DIR RAM:. It would include the direcotry &amp;quot;c&amp;quot; (DIR lists this as &amp;quot;c (dir)&amp;quot;). This would make loading commands very quick but would leave little room in memory for anything else. Any files in the RAM: device are lost when you reset the machine.&lt;br /&gt;
&lt;br /&gt;
AmigaDOS also provides a number of other devices that you can use instead of a reference to a disk file. The following paragraphs describe&lt;br /&gt;
these devices including NIL:, SER:, PAR:, PRT:, CON:, and RAW:. In particular, the device NIL: is a dummy device. AmigaDOS simply throws away&lt;br /&gt;
output written to NIL:. While reading from NIL:, AmigaDOS gives an immediate &amp;quot;end-of-file&amp;quot; indication. For example, you would type the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EDIT abc TO nil:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to use the editor to browse through a file, while AmigaDOS throws away the edited output.&lt;br /&gt;
&lt;br /&gt;
You use the device called SER: to refer to any device connected to the serial line (often a [modem or] printer). Thus, you would type the following command sequence:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
COPY xyz TO ser:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to instruct AmigaDOS to send the contents of the file &amp;quot;xyz&amp;quot; down the serial line. Note that the serial device only copies in multiples of 400&lt;br /&gt;
bytes at a time. Copying with SER: can therefore appear granular.&lt;br /&gt;
&lt;br /&gt;
The device PAR: refers to the parallel port in the same way.&lt;br /&gt;
&lt;br /&gt;
AmigaDOS also provides the device PRT: (for PRinTer). PRT: is the printer you chose in the Preferences program. In this program, you can define your printer to be connected through either the serial or parallel port. Thus, the command sequence:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
COPY xyz TO prt:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
prints the file &amp;quot;xyz&amp;quot;, no matter how the printer is connected.&lt;br /&gt;
&lt;br /&gt;
All output sent to PRT: is translated through the printer driver selected in Preferences. The printer driver will translate standard ANSI&lt;br /&gt;
escape codes into the specific code required by the printer. PRT: translates every linefeed character in a file to carriage return plus linefeed. Some printers, however, require files without translation. To send a file with the linefeeds as just linefeeds, you use PRT:RAW instead of PRT:.&lt;br /&gt;
&lt;br /&gt;
AmigaDOS supports multiple windows. To make a new window, you can specify the device CON:. The format for CON: is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CON:x/y/width/height/[title]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;quot;x&amp;quot; and &amp;quot;y&amp;quot; are coordinates, &amp;quot;width&amp;quot; and &amp;quot;height&amp;quot; are integers describing the width and height of the new window, and &amp;quot;title&amp;quot;, which is&lt;br /&gt;
optional, is a string. The title appears on the window&#039;s title bar. You must include all the slashes, including the last one. Your title can&lt;br /&gt;
include up to 30 characters (including spaces). If the title has spaces, you must enclose the whole description in double quotes (&amp;quot;) as shown in&lt;br /&gt;
the following example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;CON:20/10/300/100/my window&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is another window device called RAW:, but it is of little use to the general user. You can use RAW: to create a raw window device similar to CON:. However, unlike CON:, RAW: does no character translation and does not allow you to change the contents of a line. That is to say, RAW: accepts input and returns output in exactly the same form that it was originally typed. This means characters are sent to a program immediately without letting you erase anything with the BACKSPACE key. You usually use RAW: from a program where you might want to do input and output without character translation.&lt;br /&gt;
&lt;br /&gt;
{{Note|title=WARNING|text=RAW: is intended for the advanced user. Do not use RAW: experimentally.}}&lt;br /&gt;
&lt;br /&gt;
There is one special name, which is * (asterisk). You use this to refer to the current window, both for input or for output. You can use the COPY command to copy from one file to another. Using *, you can copy from the current window to another window, for example,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
COPY * TO CON:20/20/350/150/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
from the current window to the current window, for example,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
COPY * TO *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or from a file to the current window, for example,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
COPY bill/letter TO *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
AmigaDOS finishes copying when it comes to the end of the file. To tell AmigaDOS to stop copying from *, you must give the Ctrl-\ combination.&lt;br /&gt;
Note that * is NOT the universal wild card.&lt;br /&gt;
&lt;br /&gt;
== Using Directory Conventions and Logical Devices ==&lt;br /&gt;
&lt;br /&gt;
In addition to the aforementioned physical devices, AmigaDOS supports a&lt;br /&gt;
variety of useful &#039;&#039;logical devices&#039;&#039;. AmigaDOS uses these devices to find&lt;br /&gt;
the files that your programs require from time to time. (So that your&lt;br /&gt;
programs can refer to a standard device name regardless of where the file&lt;br /&gt;
actually is.) All of these &amp;quot;logical devices&amp;quot; may be reassigned by you to&lt;br /&gt;
reference any directory.&lt;br /&gt;
&lt;br /&gt;
The logical devices described in this section are as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Logical Device Name&lt;br /&gt;
! Description&lt;br /&gt;
! Directory&lt;br /&gt;
|-&lt;br /&gt;
| SYS: || System disk root directory || SYS:&lt;br /&gt;
|-&lt;br /&gt;
| C: || Commands directory || SYS:C&lt;br /&gt;
|-&lt;br /&gt;
| L: || Library directory || SYS:L&lt;br /&gt;
|-&lt;br /&gt;
| S: || Script directory || SYS:S&lt;br /&gt;
|-&lt;br /&gt;
| LIBS: || Directory for OpenLibrary() calls || SYS:LIBS&lt;br /&gt;
|-&lt;br /&gt;
| DEVS: || Directory for OpenDevice() calls || SYS:DEVS&lt;br /&gt;
|-&lt;br /&gt;
| FONTS: || Loadable fonts for OpenFonts() calls || SYS:FONTS&lt;br /&gt;
|-&lt;br /&gt;
| T: || Temporary workspace || RAM:T&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SYS: ===&lt;br /&gt;
&lt;br /&gt;
Typical directory name: Workbench:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;SYS&amp;quot; represents the &#039;&#039;&#039;SYS&#039;&#039;&#039;tem disk root directory. When you first start up&lt;br /&gt;
the Amiga system [from floppy], AmigaDOS assigns SYS: to the root&lt;br /&gt;
directory name of the disk in DF0:. If, for instance, the disk in drive&lt;br /&gt;
DF0: has the volume name Workbench, then AmigaDOS assigns SYS: to&lt;br /&gt;
Workbench:. After this assignment, any programs that refer to SYS: use&lt;br /&gt;
that disk&#039;s root directory.&lt;br /&gt;
&lt;br /&gt;
=== C: ===&lt;br /&gt;
&lt;br /&gt;
Typical directory name: Workbench:C&lt;br /&gt;
&lt;br /&gt;
&amp;quot;C&amp;quot; represents the &#039;&#039;&#039;C&#039;&#039;&#039;ommands direcotry. When you type a command to the CLI&lt;br /&gt;
(DIR, for example), AmigaDOS first searches for that command in your&lt;br /&gt;
cuurent directory. If the system cannot find the command in the current&lt;br /&gt;
directory, it then look for &amp;quot;C:DIR&amp;quot;. So that, if you have assigned &amp;quot;C:&amp;quot; to&lt;br /&gt;
another directory (for example, &amp;quot;Boot_disk.c&amp;quot;), AmigaDOS reads and&lt;br /&gt;
executes from &amp;quot;Boot_disk:c/DIR&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== L: ===&lt;br /&gt;
&lt;br /&gt;
Typical directory name: Workbench:L&lt;br /&gt;
&lt;br /&gt;
&amp;quot;L&amp;quot; represents the &#039;&#039;&#039;L&#039;&#039;&#039;ibrary directory. This directory keeps the overlays&lt;br /&gt;
for large commands and nonresident parts of the operating system. For&lt;br /&gt;
instance, the disk-based run-time libraries (Aux-Handler, Port-Handler,&lt;br /&gt;
and so forth) are kept here. AmigaDOS requires this directory to operate.&lt;br /&gt;
&lt;br /&gt;
=== S: ===&lt;br /&gt;
&lt;br /&gt;
Typical directory name: Workbench:S&lt;br /&gt;
&lt;br /&gt;
&amp;quot;S&amp;quot; represents the &#039;&#039;&#039;S&#039;&#039;&#039;cript directory. This directory contains command&lt;br /&gt;
scripts that the EXECUTE command searches for and uses. EXECUTE first&lt;br /&gt;
looks for the script (or batch) file in your current directory. If EXECUTE&lt;br /&gt;
cannot find it there, it looks in the directory that you have assigned S:&lt;br /&gt;
to.&lt;br /&gt;
&lt;br /&gt;
=== LIBS: ===&lt;br /&gt;
&lt;br /&gt;
Typical directory name: Workbench:Libs&lt;br /&gt;
&lt;br /&gt;
IExec-&amp;gt;OpenLibrary() looks here for the library if it is not already loaded in memory.&lt;br /&gt;
&lt;br /&gt;
=== DEVS: ===&lt;br /&gt;
&lt;br /&gt;
Typical directory name: Workbench:Devs&lt;br /&gt;
&lt;br /&gt;
IExec-&amp;gt;OpenDevice() looks here for the device if it is not already loaded in memory.&lt;br /&gt;
&lt;br /&gt;
=== FONTS: ===&lt;br /&gt;
&lt;br /&gt;
Typical directory name: Workbench:Fonts&lt;br /&gt;
&lt;br /&gt;
OpenFonts() looks here for your loadable fonts if they are not already loaded in memory.&lt;br /&gt;
&lt;br /&gt;
=== T: ===&lt;br /&gt;
&lt;br /&gt;
Typical directory name: RAM:T&lt;br /&gt;
&lt;br /&gt;
You use this directory to store temporary files. Programs such as editors place their temporary work files, or backup copies of the last file edited, in this directory. If you run out of space on a disk, this is one of the first places you should look for files that are no longer needed.&lt;br /&gt;
&lt;br /&gt;
=== During booting ===&lt;br /&gt;
&lt;br /&gt;
When the system is first booted, AmigaDOS initially assigns C: to the :C&lt;br /&gt;
directory. This means that if you boot with a disk that you had formatted&lt;br /&gt;
by issuing the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FORMAT DRIVE DF0: NAME &amp;quot;My.Boot.Disk&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SYS: is assigned to &amp;quot;My.Boot.Disk&amp;quot;. The &amp;quot;logical device&amp;quot; C: is assigned to&lt;br /&gt;
the C: directory on the same disk (that is, My.Boot.Disk:c). Likewise, the&lt;br /&gt;
following assignments are made:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C:             My.Boot.Disk:c&lt;br /&gt;
L:             My.Boot.Disk:l&lt;br /&gt;
S:             My.Boot.Disk:s&lt;br /&gt;
LIBS:          My.Boot.Disk:libs&lt;br /&gt;
DEVS:          My.Boot.Disk:devs&lt;br /&gt;
FONTS:         My.Boot.Disk:fonts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If a directory is not present, the corresponding logical device is&lt;br /&gt;
assigned to the root directory.&lt;br /&gt;
&lt;br /&gt;
If you have a non-bootable hard disk (here called DH0:) and you want to&lt;br /&gt;
use the system files on it, you must issue the following commands to the&lt;br /&gt;
system:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ASSIGN SYS:    DH0:&lt;br /&gt;
ASSIGN C:      DH0:c&lt;br /&gt;
ASSIGN L:      DH0:l&lt;br /&gt;
ASSIGN S:      DH0:s&lt;br /&gt;
ASSIGN LIBS:   DH0:libs&lt;br /&gt;
ASSIGN DEVS:   DH0:devs&lt;br /&gt;
ASSIGN FONTS:  DH0:fonts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your hard disk is bootable, you don&#039;t need to make these assigns since&lt;br /&gt;
the system handles it for you.&lt;br /&gt;
&lt;br /&gt;
Please keep in mind that assignments are global to all Shell processes.&lt;br /&gt;
Changing an assignment within one window changes it for all windows.&lt;br /&gt;
&lt;br /&gt;
If you want to use your own special font library, type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ASSIGN FONTS: &amp;quot;Special font disk:myfonts&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want your commands to load faster (and you have memory &amp;quot;to burn&amp;quot;),&lt;br /&gt;
type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAKEDIR ram:c&lt;br /&gt;
COPY sys:c ram:c ALL&lt;br /&gt;
ASSIGN c: ram:c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This copies all of the normal AmigaDOS commands to the RAM disk and&lt;br /&gt;
reassigns the commands directoy so that the system finds them there.&lt;br /&gt;
Another way to speed up AmigaDOS commands is by making them resident.&lt;br /&gt;
See the description of the RESIDENT command.&lt;br /&gt;
&lt;br /&gt;
= Using AmigaDOS Commands =&lt;br /&gt;
&lt;br /&gt;
An AmigaDOS command consists of the command name and its arguments, if any. To execute an AmigaDOS command, you type the command name and its&lt;br /&gt;
arguments after the Shell prompt.&lt;br /&gt;
&lt;br /&gt;
When you type a command name, the command runs as part of the Command Line Interface (Shell). You can type other command names ahead, but AmigaDOS does not execute them until the current command has finished. When a command has finished, the current Shell prompt appears. In this&lt;br /&gt;
case, the command is running interactively.&lt;br /&gt;
&lt;br /&gt;
The Shell prompt is initially n&amp;gt; where n is the number of the Shell process. However, it can be changed to something else with the PROMPT&lt;br /&gt;
command.&lt;br /&gt;
&lt;br /&gt;
{{Note|title=WARNING|text=If you run a command interactively and it fails, AmigaDOS continues to execute the next command you typed anyway. Therefore, it can be dangerous to type many commands ahead. For example, if you type&amp;lt;br/&amp;gt;&lt;br /&gt;
COPY a TO b&amp;lt;br/&amp;gt;&lt;br /&gt;
DELETE a&amp;lt;br/&amp;gt;&lt;br /&gt;
and the COPY command fails (perhaps because the disk is full), then DELETE executes and you lose your file.}}&lt;br /&gt;
&lt;br /&gt;
== Running Commands in the Background ==&lt;br /&gt;
&lt;br /&gt;
You can instruct AmigaDOS to run a command, or commands, in the&lt;br /&gt;
background. To do this, you use the RUN command. This creates a new Shell&lt;br /&gt;
as a separate process of the same priority. In this case, AmigaDOS&lt;br /&gt;
executes subsequent command lines at the same time as those that have been&lt;br /&gt;
RUN. For example, you can examine the contents of your directory at the&lt;br /&gt;
same time as sending a copy of your text file to the printer. To do this,&lt;br /&gt;
type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RUN TYPE text_file TO prt:&lt;br /&gt;
LIST&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
RUN creates a new Shell and carries out your printing while you list your&lt;br /&gt;
directory files on your original Shell window.&lt;br /&gt;
&lt;br /&gt;
You can ask AmigaDOS to carry out several commands using RUN. RUN takes&lt;br /&gt;
each command and carries it out in the given order. The line containing&lt;br /&gt;
commands after RUN is called a command line. To terminate the command&lt;br /&gt;
line, press RETURN. To extend your command line over several lines, type a&lt;br /&gt;
plus sign (+) before pressing RETURN on every line except the last. For&lt;br /&gt;
example,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RUN JOIN text_file1 text_file2 AS text_file +&lt;br /&gt;
SORT text_file TO sorted_text +&lt;br /&gt;
TYPE sorted_text TO prt:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to start a command using RUN and then close the Shell window&lt;br /&gt;
from which it was launched, you will have to redirect input and output. To&lt;br /&gt;
do this use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RUN &amp;lt;NIL: &amp;gt;NIL: command&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Executing Command Files ==&lt;br /&gt;
&lt;br /&gt;
You can also use the EXECUTE command to execute command lines in a file&lt;br /&gt;
instead of typing them in directly. The Shell reads the sequence of&lt;br /&gt;
commands from the file until it finds an error the end of the file. If it&lt;br /&gt;
finds an error, AmigaDOS does not execute subsequent commands on the RUN&lt;br /&gt;
line or in the file used by EXECUTE, unless you have used the FAILAT&lt;br /&gt;
command. The Shell only&lt;br /&gt;
gives prompts after executing commands that have run interactively.&lt;br /&gt;
&lt;br /&gt;
== Directing Command Input and Output ==&lt;br /&gt;
&lt;br /&gt;
AmigaDOS provides a way for you to redirect standard input and output. You&lt;br /&gt;
use the &amp;gt; and &amp;lt; symbols as commands. When you type a command, AmigaDOS&lt;br /&gt;
usually displays the output from that command on the screen. To tell&lt;br /&gt;
AmigaDOS to send the output to a file, you can use the &amp;gt; command. To tell&lt;br /&gt;
AmigaDOS to accept the input to a program from the specified file rather&lt;br /&gt;
than from the keyboard, you use the &amp;lt; command. The &amp;lt; and &amp;gt; commands act&lt;br /&gt;
like traffic cops who direct the flow of information. For example, to&lt;br /&gt;
direct the output from the DATE command and write it to the file named&lt;br /&gt;
&amp;quot;text_file&amp;quot;, you would type the following command line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DATE &amp;gt; text_file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to redirect output to a file that already exists use &amp;gt;&amp;gt;. For&lt;br /&gt;
example, to direct the output of the TYPE command to a file that already&lt;br /&gt;
exists use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TYPE &amp;gt;&amp;gt;more_text original_text&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The text stored in the file original_text will be appended to any text&lt;br /&gt;
that is already stored in the file my_text. Under 2.0 and later versions&lt;br /&gt;
of AmigaDOS, if you redirect output to a file using &amp;gt;&amp;gt; and the file does&lt;br /&gt;
not exist, then the file will be created for you.&lt;br /&gt;
&lt;br /&gt;
= Interrupting AmigaDOS =&lt;br /&gt;
&lt;br /&gt;
AmigaDOS allows you to indicate four levels of attention interrupt with Ctrl-C, Ctrl-D, Ctrl-E, and Ctrl-F. To stop the current command from&lt;br /&gt;
whatever it was doing, press Ctrl-C. In some cases, such as EDIT, pressing Ctrl-C instructs the command to stop what it was doing and then to return to reading more EDIT commands. To tell the CLI to stop a command sequence initiated by the EXECUTE command as soon as the current command being executed finishes, press Ctrl-D. Ctrl-E and Ctrl-F are only used by certain commands in special cases.&lt;br /&gt;
&lt;br /&gt;
{{Note|text=It is the programmer&#039;s responsibility to detect and respond to these interruption flags. AmigaDOS will not kill a program by itself.}}&lt;br /&gt;
&lt;br /&gt;
= Restart Validation Process =&lt;br /&gt;
&lt;br /&gt;
When you first insert a disk for updating, AmigaDOS creates a process at&lt;br /&gt;
low priority. This validates the entire structure on the disk. Until the&lt;br /&gt;
restart process has completed this job, you cannot create files on the&lt;br /&gt;
disk. It is possible, however, to read files.&lt;br /&gt;
&lt;br /&gt;
Older versions of AmigaDOS (1.3 and earlier) do some additional&lt;br /&gt;
processing when a disk is inserted. When the restart process completes,&lt;br /&gt;
AmigaDOS checks to see if you have set the system date and time. To set&lt;br /&gt;
the date and time, you use the DATE command, the SETCLOCK command or the&lt;br /&gt;
TIME command. If you do not specify the system date,&lt;br /&gt;
AmigaDOS sets the system date to the date and time of the most recently&lt;br /&gt;
created file on the inserted disk. This ensures that newer versions of&lt;br /&gt;
files have more recent dates, even though the actual time and date will be&lt;br /&gt;
incorrect.&lt;br /&gt;
&lt;br /&gt;
= Commonly Used Commands =&lt;br /&gt;
&lt;br /&gt;
This manual describes the AmigaDOS and its commands. The Command Line&lt;br /&gt;
Interpreter (CLI) reads AmigaDOS commands typed into a CLI window and&lt;br /&gt;
translates them into actions performed by the computer. In this sense, the&lt;br /&gt;
CLI is similar to more &amp;quot;traditional&amp;quot; computer interfaces: you type in&lt;br /&gt;
commands and the interface displays text in return.&lt;br /&gt;
&lt;br /&gt;
== Using the Shell ==&lt;br /&gt;
&lt;br /&gt;
To use the Shell interface, select the Shell window and type the desired&lt;br /&gt;
Shell commands (described within this manual). The Shell window(s) may be&lt;br /&gt;
sized and moved just like many others. To close the Shell window, type&lt;br /&gt;
&amp;quot;ENDSHELL&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Not all programs or commands can be run under both the Workbench and the&lt;br /&gt;
Shell environment. Many of the AmigaDOS commands described in Chapter 2&lt;br /&gt;
can be run only from the Shell.&lt;br /&gt;
&lt;br /&gt;
Throughout this book, the terms &amp;quot;CLI&amp;quot; and &amp;quot;Shell&amp;quot; are used to refer to&lt;br /&gt;
the special window where you can type in AmigaDOS. Although the terms are&lt;br /&gt;
used to mean the same thing, there is a slight difference. Just keep in&lt;br /&gt;
mind that the CLI and the Shell both refer to the place where you can type&lt;br /&gt;
in AmigaDOS commands.&lt;br /&gt;
&lt;br /&gt;
= Some AmigaDOS Commands =&lt;br /&gt;
&lt;br /&gt;
Alhough all the commands that are available through the Shell are&lt;br /&gt;
explained in deleted in Chapter 2 of this book, we have found that most&lt;br /&gt;
users will use very few of the advanced options. Therefore we have&lt;br /&gt;
provided a summary here showing various commands in their most common&lt;br /&gt;
form.&lt;br /&gt;
&lt;br /&gt;
The commands summarized below (along with the actual AmigaDOS command&lt;br /&gt;
name) ask AmigaDOS to do such operations as:&lt;br /&gt;
&lt;br /&gt;
* Copy a disk (DISKCOPY)&lt;br /&gt;
* Format a new disk (FORMAT)&lt;br /&gt;
* Make a formatted disk bootable (INSTALL)&lt;br /&gt;
* Create a CLI disk&lt;br /&gt;
* Relabel a disk (RELABEL)&lt;br /&gt;
* Look at the directories of a disk (DIR)&lt;br /&gt;
* Get information about files (LIST)&lt;br /&gt;
* Prevent a file from accidental deletion (PROTECT)&lt;br /&gt;
* Get information about a file system (INFO)&lt;br /&gt;
* Change a current directory (CD)&lt;br /&gt;
* Set the date and time (DATE)&lt;br /&gt;
* Redirect the output of a command (&amp;gt;)&lt;br /&gt;
* Type a text file to the screen (TYPE)&lt;br /&gt;
* Rename a file (RENAME)&lt;br /&gt;
* Delete a file (DELETE)&lt;br /&gt;
* Create a new directory (MAKEDIR)&lt;br /&gt;
* Copy files on a dual-drive system (COPY)&lt;br /&gt;
* Copy files on a single-drive system (COPY)&lt;br /&gt;
* Find files on a disk (DIR OPT A)&lt;br /&gt;
* Do something automatically at boot time (using Startup-Sequence)&lt;br /&gt;
* Tell AmigaDOS where to look for certain things (ASSIGN)&lt;br /&gt;
* Open a new Shell window (NEWSHELL)&lt;br /&gt;
* Close an existing Shell window (ENDSHELL)&lt;br /&gt;
&lt;br /&gt;
== For a New User ==&lt;br /&gt;
&lt;br /&gt;
For a new user, we suggest that you read and try each of these items in&lt;br /&gt;
sequence. Each command that is shown below leaves a test disk in a known&lt;br /&gt;
state so that the command that immediately follows will work exactly as&lt;br /&gt;
shown. Later, when you are more familiar with the system, the subsection&lt;br /&gt;
titles shown below will serve to refresh your memory.&lt;br /&gt;
&lt;br /&gt;
== How to Begin ==&lt;br /&gt;
&lt;br /&gt;
Before you begin this section, be sure you have two blank, double-sided&lt;br /&gt;
disks, and your Workbench disk. Before you begin, write protect your&lt;br /&gt;
master disk, and write enable the blank disks. Most of the commands given&lt;br /&gt;
below assume that you have a single-drive system; however, for [the]&lt;br /&gt;
convenience of those with dual-drive systems, the dual-drive version of&lt;br /&gt;
the command is occasionally given.&lt;br /&gt;
&lt;br /&gt;
Commands that instruct AmigaDOS to execute are shown in the following&lt;br /&gt;
sections, indented from the left margin. After typing each command, press&lt;br /&gt;
the RETURN key to return control to AmigaDOS. Although the commands are&lt;br /&gt;
all shown in capital letters, this is simply to distinguish them from the&lt;br /&gt;
rest of the text. AmigaDOS will accept the commands in lower case as well&lt;br /&gt;
as upper case.&lt;br /&gt;
&lt;br /&gt;
In the sections that follow, the notations &amp;quot;DF0:&amp;quot; and &amp;quot;drive 0&amp;quot; refer to&lt;br /&gt;
the disk drive that is built into the Amiga. The notation &amp;quot;DF1:&amp;quot; refers to&lt;br /&gt;
the first external 3½-inch disk drive. (Some systems use &amp;quot;DF2:&amp;quot; to refer&lt;br /&gt;
to the [second] external drive.)&lt;br /&gt;
&lt;br /&gt;
You will occasionally see a semicolon [(;)] on a command line that you&lt;br /&gt;
are told to type. What follows the semicolon is treated as a comment by&lt;br /&gt;
AmigaDOS. Since AmigaDOS ignores the rest of the line, you don&#039;t need to&lt;br /&gt;
type the comment along with the command. It is for your information only.&lt;br /&gt;
&lt;br /&gt;
For most commands, you can get a very limited form of help by typing the&lt;br /&gt;
command name, followed by a question mark (?) and pressing RETURN. It&lt;br /&gt;
shows you the &amp;quot;template&amp;quot; of a command, containing the sequence of&lt;br /&gt;
parameters it expects and the keywords it recognizes.&lt;br /&gt;
&lt;br /&gt;
=== Copying a Disk ===&lt;br /&gt;
&lt;br /&gt;
You can use this sequence to back up your system master disk or any other&lt;br /&gt;
disk.&lt;br /&gt;
&lt;br /&gt;
For a one-disk system:&lt;br /&gt;
&lt;br /&gt;
    DISKCOPY FROM df0: TO df0:&lt;br /&gt;
&lt;br /&gt;
For a two-disk system:&lt;br /&gt;
&lt;br /&gt;
    DISKCOPY FROM df0: TO df1:&lt;br /&gt;
&lt;br /&gt;
Follow the instructions as they appear. For a single-drive system, you&#039;ll&lt;br /&gt;
be instructed to insert the master (FROM) disk. Then, as the copying&lt;br /&gt;
progresses, AmigaDOS asks you to insert the copy (TO) disk, swapping&lt;br /&gt;
master and copy in and out until all of the disk has been duplicated. For&lt;br /&gt;
a two-disk system, you&#039;ll be instructed to put the master disk into drive&lt;br /&gt;
DF0: (The built-in drive) and the copy disk onto which to copy into DF1:&lt;br /&gt;
(the first external drive).&lt;br /&gt;
&lt;br /&gt;
Remove your master disk and put your master disk in a safe place. Leave&lt;br /&gt;
the copy write-enabled so that you can store information on it. Insert the&lt;br /&gt;
copy you have just made into the built-in drive [(DF0:)] and reboot your&lt;br /&gt;
system from the copy. (See &amp;quot;Making a Disk Bootable&amp;quot;, below.)&lt;br /&gt;
  After the reboot, reenter the CLI mode again.&lt;br /&gt;
&lt;br /&gt;
=== Formatting a Disk ===&lt;br /&gt;
&lt;br /&gt;
To try this command, your Workbench or CLI disk copy should be in drive 0,&lt;br /&gt;
and you should have a blank disk available.&lt;br /&gt;
&lt;br /&gt;
Sometimes rather than simply copy a disk, you&#039;ll want to prepare a data&lt;br /&gt;
disk for your system. Then later you can copy selected files to this data&lt;br /&gt;
disk. Format your second blank disk by using the FORMAT command.&lt;br /&gt;
&lt;br /&gt;
    FORMAT DRIVE df0: NAME &amp;quot;AnyName&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Follow the instructions. You can format disks in either drive 0 (DF0:,&lt;br /&gt;
built into your Amiga) or an external drive.&lt;br /&gt;
&lt;br /&gt;
After the format is completed, wait for the disk activity light to go&lt;br /&gt;
off and remove the freshly formatted disk. Reinsert your Workbench. The&lt;br /&gt;
formatted disk can now be used to hold data files. It is not bootable,&lt;br /&gt;
however.&lt;br /&gt;
&lt;br /&gt;
=== Making a Disk Bootable ===&lt;br /&gt;
&lt;br /&gt;
To try this command, your Workbench disk copy should be in drive 0, and&lt;br /&gt;
your should have your freshly formatted disk available.&lt;br /&gt;
&lt;br /&gt;
A bootable disk is one that you can use to start up your Amiga following&lt;br /&gt;
the Kickstart process. You can change a formatted disk into a bootable&lt;br /&gt;
disk by typing the command:&lt;br /&gt;
&lt;br /&gt;
    INSTALL ?&lt;br /&gt;
&lt;br /&gt;
AmigaDOS responds:&lt;br /&gt;
&lt;br /&gt;
    DRIVE/A,NOBOOT/S,CHECK/S&lt;br /&gt;
&lt;br /&gt;
Remove your Workbench disk copy and insert the formatted disk. Then type:&lt;br /&gt;
&lt;br /&gt;
    df0:&lt;br /&gt;
&lt;br /&gt;
and press RETURN. AmigaDOS writes boot sectors to the disk in DF0:. Now,&lt;br /&gt;
if you wait until the disk activity light goes out, you can then perform a&lt;br /&gt;
full reset (Ctrl-Amiga-Amiga). When the system reboots, you will go&lt;br /&gt;
directly into the CLI rather than into the Workbench.&lt;br /&gt;
&lt;br /&gt;
Your formatted disk now contains a CLI and nothing else. This means that&lt;br /&gt;
although you see the interpreter, it can&#039;t perform any of the commands&lt;br /&gt;
shown in this section. A CLI needs several files before its commands can&lt;br /&gt;
be performed. All of the command files are located in the C directory of&lt;br /&gt;
your master disk.&lt;br /&gt;
&lt;br /&gt;
=== Making a CLI Disk ===&lt;br /&gt;
&lt;br /&gt;
There is another way to make a bootable disk that gives you a more useful&lt;br /&gt;
disk in that it leaves the CLI command directories intact. Here is a step-&lt;br /&gt;
by-step process to change a writable copy of a Workbench diskette into a&lt;br /&gt;
CLI disk:&lt;br /&gt;
&lt;br /&gt;
    1.  Copy your Workbench disk.&lt;br /&gt;
    2.  Open the Shell as described above.&lt;br /&gt;
    3.  Select the Shell window and type the command:&lt;br /&gt;
&lt;br /&gt;
    RENAME FROM s/startup-sequence TO s/NO-startup-sequence&lt;br /&gt;
&lt;br /&gt;
Now if you wait for the disk activity light to go off and perform a full&lt;br /&gt;
reset, your Workbench disk copy will have become a CLI disk. To restore&lt;br /&gt;
the Workbench, perform the rename again, but with the name sequence&lt;br /&gt;
reversed. You see, if AmigaDOS can&#039;t find a file with the exact name&lt;br /&gt;
&amp;quot;Startup-sequence&amp;quot; ins the &amp;quot;s&amp;quot; directory, it will enter command mode and&lt;br /&gt;
wait for you to type a command.&lt;br /&gt;
&lt;br /&gt;
=== Relabeling a Disk ===&lt;br /&gt;
&lt;br /&gt;
Before you try this command, your Workbench or CLI disk copy should be in&lt;br /&gt;
drive 0.&lt;br /&gt;
&lt;br /&gt;
If, after either copying or formatting a disk, you are not satisfied&lt;br /&gt;
with the volume name you have given it, you can change the name of the&lt;br /&gt;
volume by using the RELABEL command:&lt;br /&gt;
&lt;br /&gt;
    RELABEL df0: DifferentName&lt;br /&gt;
&lt;br /&gt;
This command changes the volume of the disk in drive DF0: to&lt;br /&gt;
&amp;quot;DifferentName&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Looking at the Directory ===&lt;br /&gt;
&lt;br /&gt;
Before you try this command, your Workbench or CLI disk copy should be in&lt;br /&gt;
drive 0.&lt;br /&gt;
&lt;br /&gt;
You look at the contents of a disk with [either of] the commands:&lt;br /&gt;
&lt;br /&gt;
    DIR or DIR df0:&lt;br /&gt;
&lt;br /&gt;
This lists the contents of your current directory. You can list the&lt;br /&gt;
contents of a different directory by specifying the pathname for that&lt;br /&gt;
directory. For example, the command:&lt;br /&gt;
&lt;br /&gt;
    DIR df0:c or DIR c&lt;br /&gt;
&lt;br /&gt;
lists the contents of the c (directory) on drive DF0:. Directories are&lt;br /&gt;
equivelent to the drawers you see when the Workbench screen is visible.&lt;br /&gt;
&lt;br /&gt;
You can look at the directory of a different disk unit, if you have one,&lt;br /&gt;
by specifying its name. For example:&lt;br /&gt;
&lt;br /&gt;
    DIR df1:&lt;br /&gt;
&lt;br /&gt;
lists the contents of a disk inserted in drive DF1:.&lt;br /&gt;
&lt;br /&gt;
You can even look at the directory of a disk that isn&#039;t currently in the&lt;br /&gt;
drive by specifying its volume name. For example, the contents of that&lt;br /&gt;
freshly formatted disk whose name we changed can be displayed by the&lt;br /&gt;
command:&lt;br /&gt;
&lt;br /&gt;
    DIR DifferentName:&lt;br /&gt;
&lt;br /&gt;
AmigaDOS will ask you to insert disk DifferentName into [any] drive so&lt;br /&gt;
that DIR can read it and report the contents of the directory. Don&#039;t do it&lt;br /&gt;
yet, however, because there are no files present for DIR to read. We&#039;ll&lt;br /&gt;
add some files later.&lt;br /&gt;
&lt;br /&gt;
=== Using the LIST Command ===&lt;br /&gt;
&lt;br /&gt;
To try this command, your Workbench or CLI disk copy should be in drive 0.&lt;br /&gt;
&lt;br /&gt;
The DIR command tells you the names of files that are in your directory.&lt;br /&gt;
The LIST command provides additional information about those files. Type&lt;br /&gt;
the command:&lt;br /&gt;
&lt;br /&gt;
    LIST&lt;br /&gt;
&lt;br /&gt;
AmigaDOS provides information about all files in the current directory,&lt;br /&gt;
including how large each file is, the protection flags for each file,&lt;br /&gt;
whether it is a file or a directory, and the date and time of its&lt;br /&gt;
creation.&lt;br /&gt;
&lt;br /&gt;
If you specify the name of a directory with LIST, it lists information&lt;br /&gt;
about the files within that directory:&lt;br /&gt;
&lt;br /&gt;
    LIST c&lt;br /&gt;
&lt;br /&gt;
In the second column after the filename you will see the protection flags&lt;br /&gt;
for the file. The acronym &amp;quot;rwed&amp;quot; refers to protection flags, for read,&lt;br /&gt;
write, execute, and delete. When each flag is set, using the PROTECT&lt;br /&gt;
command, a file is supposed to be readable, writable, executable, [and]&lt;br /&gt;
deletable.&lt;br /&gt;
&lt;br /&gt;
=== Using the PROTECT Command ===&lt;br /&gt;
&lt;br /&gt;
To try this command, your Workbench or CLI disk copy should be in drive 0.&lt;br /&gt;
This command protects (or unprotects) a file from being deleted&lt;br /&gt;
accidentally. Try the command&lt;br /&gt;
&lt;br /&gt;
    DATE &amp;gt;myfile&lt;br /&gt;
    PROTECT myfile&lt;br /&gt;
    LIST myfile&lt;br /&gt;
&lt;br /&gt;
You will see that all of the protect flags have been set to &amp;quot;--------&amp;quot;.&lt;br /&gt;
Now if you try:&lt;br /&gt;
&lt;br /&gt;
    DELETE myfile&lt;br /&gt;
&lt;br /&gt;
AmigaDOS responds&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;Not deleted - file is protected from deletion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To reenable deletion of the file, type:&lt;br /&gt;
&lt;br /&gt;
    PROTECT myfile d&lt;br /&gt;
&lt;br /&gt;
For more information about file protection flags, see the discussion of&lt;br /&gt;
the PROTECT command.&lt;br /&gt;
&lt;br /&gt;
=== Getting Information About the File System ===&lt;br /&gt;
&lt;br /&gt;
Your Workbench or CLI disk copy should still be in drive 0. Type the&lt;br /&gt;
command&lt;br /&gt;
&lt;br /&gt;
    INFO&lt;br /&gt;
&lt;br /&gt;
It tells you how much space is used and how much is free on your disks,&lt;br /&gt;
whether they are read-only or read-write, and the name of the volume.&lt;br /&gt;
You can make more space on the disk by deleting files. You can change&lt;br /&gt;
the name of the volume by using the RELABEL command.&lt;br /&gt;
&lt;br /&gt;
If you want to get information about a disk that isn&#039;t in your single&lt;br /&gt;
drive at the moment, issue the command as&lt;br /&gt;
&lt;br /&gt;
    INFO ?&lt;br /&gt;
&lt;br /&gt;
AmigaDOS responds&lt;br /&gt;
&lt;br /&gt;
    DEVICE:&lt;br /&gt;
&lt;br /&gt;
AmigaDOS has loaded the INFO command from your CLI disk and shows you the&lt;br /&gt;
template for the command. The response &amp;quot;DEVICE:&amp;quot; says that you can enter&lt;br /&gt;
any device name to get information about it. But you don&#039;t have to type&lt;br /&gt;
anything other than a RETURN key to have it perform the command. Remove&lt;br /&gt;
your CLI disk and insert the disk on which you want INFO to operate. Wait&lt;br /&gt;
for the disk activity light to go on and off. Then press RETURN. AmigaDOS&lt;br /&gt;
gives you INFO about this other disk. This works for DIR as well as INFO.&lt;br /&gt;
&lt;br /&gt;
=== Changing Your Current Directory ===&lt;br /&gt;
&lt;br /&gt;
Until now, we have only stayed at the &amp;quot;root&amp;quot; or topmost hierarchical level&lt;br /&gt;
of the disk directory. You will find more information about the directory&lt;br /&gt;
tree structure in &amp;quot;Using Directories&amp;quot; earlier. To see the level at which&lt;br /&gt;
you are currently positioned in your directory tree, you use the command:&lt;br /&gt;
&lt;br /&gt;
    CD&lt;br /&gt;
&lt;br /&gt;
To change to a different current directory, you tell the system which&lt;br /&gt;
directory is to become the current one. For example, when you did a DIR&lt;br /&gt;
command on DF0:, the CLI disk, you say an entry &amp;quot;c (dir)&amp;quot;. If you want to&lt;br /&gt;
make this directory the current one, you issue the command:&lt;br /&gt;
&lt;br /&gt;
    CD df0:c&lt;br /&gt;
&lt;br /&gt;
Now when you issue the command DIR, it shows the contents of this level of&lt;br /&gt;
the filing system. The command CD (alone) shows you the name of your&lt;br /&gt;
current directory. You go up to the root directory (the top level) by&lt;br /&gt;
specifying:&lt;br /&gt;
&lt;br /&gt;
    CD :&lt;br /&gt;
&lt;br /&gt;
on the current volume (if you refer to your disks by volume name) or&lt;br /&gt;
&lt;br /&gt;
    CD df0:&lt;br /&gt;
&lt;br /&gt;
on the built-in drive.&lt;br /&gt;
&lt;br /&gt;
=== Setting the Date and Time ===&lt;br /&gt;
&lt;br /&gt;
You can set the AmigaDOS clock by using the DATE command:&lt;br /&gt;
&lt;br /&gt;
    DATE 12:00:00 12-oct-85&lt;br /&gt;
&lt;br /&gt;
Now the system clock counts up from this date and time. If your system has&lt;br /&gt;
a battery-backed, real-time clock, you can set it using the DATE command&lt;br /&gt;
as described followed by the command:&lt;br /&gt;
&lt;br /&gt;
    SETCLOCK SAVE&lt;br /&gt;
&lt;br /&gt;
The SETCLOCK SAVE command copies AmigaDOS time to the real-time clock.&lt;br /&gt;
&lt;br /&gt;
=== Redirecting the Output of a Command ===&lt;br /&gt;
&lt;br /&gt;
Before you try this command, your Workbench or CLI disk should be in drive&lt;br /&gt;
0.&lt;br /&gt;
&lt;br /&gt;
Normally the output of all commands goes to the monitor screen. You can&lt;br /&gt;
change where the system puts the output by using the redirect command &amp;quot;&amp;gt;&amp;quot;.&lt;br /&gt;
The forward arrow symbol means send the output towards this output&lt;br /&gt;
filename. Here&#039;s an example:&lt;br /&gt;
&lt;br /&gt;
    DATE &amp;gt;datefile&lt;br /&gt;
&lt;br /&gt;
Execute the command so that you can use the datefile described below. This&lt;br /&gt;
command creates (or overwrites) a file named &amp;quot;datefile&amp;quot; in your current&lt;br /&gt;
directory.&lt;br /&gt;
&lt;br /&gt;
=== Typing a Text File to the Screen ===&lt;br /&gt;
&lt;br /&gt;
You can see the contents of a text file by using the TYPE command:&lt;br /&gt;
&lt;br /&gt;
    TYPE datefile&lt;br /&gt;
&lt;br /&gt;
This command will display whatever you have in the specified file. If you&lt;br /&gt;
wish to stop the output momentarily to read something on the screen, press&lt;br /&gt;
the space bar. To restart it press the BACKSPACE key. If you wish to end&lt;br /&gt;
the TYPE command, hold down the Ctrl key, and press the C key.&lt;br /&gt;
&lt;br /&gt;
=== Changing the Name of a File ===&lt;br /&gt;
&lt;br /&gt;
Before you try this command, your Workbench or CLI disk copy should be in&lt;br /&gt;
drive 0.&lt;br /&gt;
&lt;br /&gt;
You can change the name of a file by using the RENAME command:&lt;br /&gt;
&lt;br /&gt;
    RENAME FROM datefile TO newname&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
    RENAME dateile newname&lt;br /&gt;
&lt;br /&gt;
Now use TYPE to verify that the new new refers to the same contents.&lt;br /&gt;
&lt;br /&gt;
    TYPE newname&lt;br /&gt;
&lt;br /&gt;
Notice that the alternate form of the command doesn&#039;t require that you use&lt;br /&gt;
the FROM and TO. Most of the AmigaDOS commands have an alternate form,&lt;br /&gt;
abbreviated from that shown in this tutorial section. The longer form has&lt;br /&gt;
been used primarily to introduce you to what the command does. Be sure to&lt;br /&gt;
examine the summary pages to familiarize yourself with the alternate&lt;br /&gt;
command forms that are available.&lt;br /&gt;
&lt;br /&gt;
=== Deleting Files ===&lt;br /&gt;
&lt;br /&gt;
To try this command, your Workbench or CLI disk should be in drive 0.&lt;br /&gt;
&lt;br /&gt;
You may be working on several versions of a program or text file, and eventually wish to delete versions of that file that you don&#039;t need anymore. The DELETE command lets you erase files and releases the disk space to AmigaDOS for resuse.&lt;br /&gt;
&lt;br /&gt;
{{Note|text=If you DELETE files, it is not always possible to retrieve them. Be certain that you really do wish to delete them.}}&lt;br /&gt;
&lt;br /&gt;
Here is a sample command sequence, that creates a file using the redirection command, types it to verify that it is really there, then deletes it.&lt;br /&gt;
&lt;br /&gt;
    DIR &amp;gt;directorystuff&lt;br /&gt;
    TYPE directorystuff&lt;br /&gt;
    DELETE directorystuff&lt;br /&gt;
    TYPE directorystuff&lt;br /&gt;
&lt;br /&gt;
To the final command in the above sequence, AmigaDOS responds:&lt;br /&gt;
&lt;br /&gt;
    Can&#039;t open directorystuff&lt;br /&gt;
&lt;br /&gt;
indicating that the file can&#039;t be found, because you deleted it.&lt;br /&gt;
&lt;br /&gt;
=== Copying Files ===&lt;br /&gt;
&lt;br /&gt;
Before you enter this command, your Workbench or CLI disk should be in&lt;br /&gt;
drive 0.&lt;br /&gt;
&lt;br /&gt;
On a dual-drive system, copying files is easy:&lt;br /&gt;
&lt;br /&gt;
    COPY FROM df0:sourcepath TO df1:destinationpath&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
    COPY df0:sourcepath df1:destinationpath&lt;br /&gt;
&lt;br /&gt;
On a single-drive system, copying files is a little more complex. You&lt;br /&gt;
must copy certain files from your system diskette into the system memory.&lt;br /&gt;
This is also called the RAM: device, or RAM disk. Copy the file(s) to the&lt;br /&gt;
RAM disk, change your directory to the RAM disk, then copy from the RAM&lt;br /&gt;
disk onto the destination disk. Here is a sample sequence.&lt;br /&gt;
&lt;br /&gt;
Be sure your Workbench or CLI disk is in the internal disk drive. Issue&lt;br /&gt;
the commands:&lt;br /&gt;
&lt;br /&gt;
    COPY df0:c/cd ram:&lt;br /&gt;
    COPY df0:c/copy ram:&lt;br /&gt;
    CD ram:&lt;br /&gt;
&lt;br /&gt;
Insert the source data disk into the drive. (For this example, copy the&lt;br /&gt;
EXECUTE command from the Workbench or CLI disk, which is already in the&lt;br /&gt;
drive.) Type:&lt;br /&gt;
&lt;br /&gt;
    COPY df0:c/execute ram:execute&lt;br /&gt;
               or&lt;br /&gt;
    COPY df0:c/execute ram:&lt;br /&gt;
&lt;br /&gt;
Remove the source disk, and insert the destination disk into the drive.&lt;br /&gt;
The destination disk can be any Amiga disk that has been formatted. Type:&lt;br /&gt;
&lt;br /&gt;
    COPY ram:execute df0:execute&lt;br /&gt;
&lt;br /&gt;
The EXECUTE command has now been copied from the source disk to the&lt;br /&gt;
destination disk.&lt;br /&gt;
&lt;br /&gt;
Remove the destination disk and inset your CLI or Workbench disk again.&lt;br /&gt;
Type:&lt;br /&gt;
&lt;br /&gt;
    CD df0:&lt;br /&gt;
&lt;br /&gt;
and you are back where you started. The only other command you may want to&lt;br /&gt;
perform is:&lt;br /&gt;
&lt;br /&gt;
    DELETE ram:cd ram:copy ram:execute&lt;br /&gt;
&lt;br /&gt;
which releases the RAM disk memory to the system for other uses.&lt;br /&gt;
&lt;br /&gt;
=== Creating a New Directory ===&lt;br /&gt;
&lt;br /&gt;
You can create a new diretory (newdrawer) within the current directory by&lt;br /&gt;
using the MAKEDIR command:&lt;br /&gt;
&lt;br /&gt;
    MAKEDIR newdrawer&lt;br /&gt;
&lt;br /&gt;
Now if you issue the DIR command, you will see that there is an entry for:&lt;br /&gt;
&lt;br /&gt;
    newdrawer (dir)&lt;br /&gt;
&lt;br /&gt;
You can also use the RENAME command to move a file from one directory&lt;br /&gt;
(drawer) to another on the same disk:&lt;br /&gt;
&lt;br /&gt;
    MAKEDIR newdrawer&lt;br /&gt;
    RENAME FROM newname TO newdrawer/newname&lt;br /&gt;
&lt;br /&gt;
moves the file from the current directory into the newdrawer you have&lt;br /&gt;
created. To check tht it has really been moved, issue the command:&lt;br /&gt;
&lt;br /&gt;
    DIR&lt;br /&gt;
&lt;br /&gt;
Then type:&lt;br /&gt;
&lt;br /&gt;
    DIR newdrawer&lt;br /&gt;
&lt;br /&gt;
AmigaDOS looks in the newdrawer, and shows you that the file named&lt;br /&gt;
&amp;quot;newname&amp;quot; is there.&lt;br /&gt;
&lt;br /&gt;
=== Is My File Somewhere on This Disk? ===&lt;br /&gt;
&lt;br /&gt;
Before you enter this command, your Workbench or CLI disk copy should be&lt;br /&gt;
in drive 0.&lt;br /&gt;
&lt;br /&gt;
Sometimes you wish to see everything on the disk, instead of only one&lt;br /&gt;
directory at a time. You can use the DIR command with one of its options:&lt;br /&gt;
&lt;br /&gt;
    DIR OPT A&lt;br /&gt;
&lt;br /&gt;
which lists all directories and subdirectories on the disk. Keep in mind&lt;br /&gt;
the space/BACKSPACE combination to pause and restart the listing.&lt;br /&gt;
&lt;br /&gt;
To get a closer look at the disk&#039;s contents, you might redirect the&lt;br /&gt;
output to a file:&lt;br /&gt;
&lt;br /&gt;
    DIR &amp;gt;mydiskdir ALL&lt;br /&gt;
&lt;br /&gt;
Notice that the redirect-the-output command character [(&amp;gt;)] and filename&lt;br /&gt;
MUST come before the list of options for the DIR command.&lt;br /&gt;
&lt;br /&gt;
Now, if you wish, you can TYPE the file mydiskdir and press the space&lt;br /&gt;
bar to pause the listing. Use the RETURN [or BACKSPACE] key to resume the&lt;br /&gt;
listing. Or, you can use ED to view the file, as follows:&lt;br /&gt;
&lt;br /&gt;
    ED mydiskdir&lt;br /&gt;
&lt;br /&gt;
Use the cursor keys to move up and down in the file.&lt;br /&gt;
&lt;br /&gt;
Use the key combination Esc then T &amp;lt;RETURN&amp;gt; to move to the top of the&lt;br /&gt;
file. Such a combination can be referred to as &amp;quot;Esc-T&amp;quot;, meaning Esc&lt;br /&gt;
followed by T.&lt;br /&gt;
&lt;br /&gt;
Use the key combination Esc-B &amp;lt;RETURN&amp;gt; to move to the bottom of the&lt;br /&gt;
file.&lt;br /&gt;
&lt;br /&gt;
Use the key combination Esc-M then a number &amp;lt;RETURN&amp;gt; to move to a&lt;br /&gt;
specific line number within the file.&lt;br /&gt;
&lt;br /&gt;
Use the key combination Esc-Q &amp;lt;RETURN&amp;gt; to quit without changing the&lt;br /&gt;
file; or&lt;br /&gt;
&lt;br /&gt;
Use Esc-X &amp;lt;RETURN&amp;gt; to write any changes to your file back into the&lt;br /&gt;
original filename.&lt;br /&gt;
&lt;br /&gt;
=== Automating the Boot Sequence ===&lt;br /&gt;
&lt;br /&gt;
There is a file in the &amp;quot;S&amp;quot; directory on your Workbench or CLI disk called startup-sequence. This is a script file. It contains a sequence of CLI&lt;br /&gt;
commands that AmigaDOS performs whenever you reboot the system. Also in your Workbench disk startup-sequence are LOADWB (load the Workbench&lt;br /&gt;
program) and ENCLI which basically leaves the Workbench program in control. You can make up your own startup-sequence file using NotePad to create a custom version of an EXECUTE command sequence. The EXECUTE command summary and tutorial section has details about various commands that you can have in this file. Note that startup-sequence can also be used to auto-run a program.&lt;br /&gt;
&lt;br /&gt;
{{Note|text=The startup-sequence looks for a file called s:user-startup and executes it if one is found. Whenever possible, place all your startup additions and assignments in a file called s:user-startup rather than modifying the s:startup-sequence.}}&lt;br /&gt;
&lt;br /&gt;
=== Assigning a Disk ===&lt;br /&gt;
&lt;br /&gt;
Before you enter this command, your Workbench or CLI disk copy should be&lt;br /&gt;
in drive 0.&lt;br /&gt;
&lt;br /&gt;
Occasionally, you might wish to change to a different disk and then&lt;br /&gt;
continue your work. For example, you may have booted the system using a&lt;br /&gt;
Workbench disk, then wish to change to a CLI disk. If the CLI disk has a&lt;br /&gt;
directory on it that contains the executable commands you want to perform&lt;br /&gt;
(for example, a &amp;quot;c&amp;quot; directory), you can change to that disk by using the&lt;br /&gt;
ASSIGN command.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t use ASSIGN, you will have to swap disks to get commands&lt;br /&gt;
done. Here is an example. The intent is to change disks and begin using&lt;br /&gt;
&amp;quot;mydisk:&amp;quot; as the main disk. Before you begin, you must first create a disk&lt;br /&gt;
called &amp;quot;mydisk&amp;quot;. To do this, make a copy of Workbench (refer to the&lt;br /&gt;
instructions for copying a disk given at the beginning of this section).&lt;br /&gt;
Then use the RELABEL command described earlier to change the name of the&lt;br /&gt;
new copy to &amp;quot;mydisk&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
    CD mydisk:&lt;br /&gt;
&lt;br /&gt;
AmigaDOS responds &amp;quot;Insert volume mydisk into any drive&amp;quot;. Insert it, then&lt;br /&gt;
type:&lt;br /&gt;
&lt;br /&gt;
    DIR&lt;br /&gt;
&lt;br /&gt;
AmigaDOS prompts &amp;quot;Insert volume Workbench [or whatever the boot disk name&lt;br /&gt;
was] into any drive&amp;quot;. It knows, from boot time, that the DIR command is in&lt;br /&gt;
the boot disk&#039;s &amp;quot;c&amp;quot; directory. AmigaDOS reads the DIR command, then asks&lt;br /&gt;
&amp;quot;insert mydisk in any drive&amp;quot;. Any other AmigaDOS command also results in&lt;br /&gt;
the need for a disk swap. To avoid this, use the ASSIGN command as&lt;br /&gt;
follows:&lt;br /&gt;
&lt;br /&gt;
    ASSIGN c: mydisk:c&lt;br /&gt;
&lt;br /&gt;
AmigaDOS asks &amp;quot;Insert volume mydisk into any drive&amp;quot;. From now on, all&lt;br /&gt;
commands  to AmigaDOS will be sought from the command (&amp;quot;c&amp;quot;) directory of&lt;br /&gt;
mydisk and AmigaDOS won&#039;t ask for the original disk back for simple&lt;br /&gt;
commands.&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve done this, you&#039;ll probably want to type:&lt;br /&gt;
&lt;br /&gt;
    CD mydisk:&lt;br /&gt;
&lt;br /&gt;
There are other things that AmigaDOS can assign. If you issue the command:&lt;br /&gt;
&lt;br /&gt;
    ASSIGN LIST&lt;br /&gt;
&lt;br /&gt;
you will see the other things as well. If you run a program that requires&lt;br /&gt;
a serial device (modem, printer) or a parallel device (printer), AmigaDOS&lt;br /&gt;
looks in the directory currently assigned to DEVS: to locate the device.&lt;br /&gt;
If all the system directories are on this new main disk, you can avoid&lt;br /&gt;
having AmigaDOS ask you to reinsert the original disk by providing a&lt;br /&gt;
script file on your disks that reassigns all devices to that disk. The&lt;br /&gt;
contents of this script file for a disk named &amp;quot;mydisk&amp;quot; are as follows:&lt;br /&gt;
&lt;br /&gt;
    ASSIGN SYS:   mydisk:&lt;br /&gt;
    ASSIGN S:     mydisk:s&lt;br /&gt;
    ASSIGN DEVS:  mydisk:devs&lt;br /&gt;
    ASSIGN L:     mydisk:l&lt;br /&gt;
    ASSIGN FONTS: mydisk:fonts&lt;br /&gt;
    ASSIGN LIBS:  mydisk:libs&lt;br /&gt;
&lt;br /&gt;
To create4 this script file, use the command:&lt;br /&gt;
&lt;br /&gt;
    COPY FROM * TO reassign&lt;br /&gt;
&lt;br /&gt;
Then type the above ASSIGN lines. After you&#039;ve typed the last line, enter&lt;br /&gt;
the key combination Ctrl-\\ which ends the file. The &amp;quot;*&amp;quot; stands for the&lt;br /&gt;
keyboard and current CLI window, so this method of creating a file is one&lt;br /&gt;
possible alternative to using ED or EDIT.&lt;br /&gt;
&lt;br /&gt;
Once you have created the script file, you can run it by typing:&lt;br /&gt;
&lt;br /&gt;
    EXECUTE reassign&lt;br /&gt;
&lt;br /&gt;
Now all the ASSIGNs that the system uses are set up for &amp;quot;mydisk&amp;quot; instead&lt;br /&gt;
of the original boot disk.&lt;br /&gt;
&lt;br /&gt;
= Closing Comments =&lt;br /&gt;
&lt;br /&gt;
Chapter 2 contains a reference section that shows the templates for each&lt;br /&gt;
of the commands in AmigaDOS. You can look at the description for each&lt;br /&gt;
command to find more information. Once you are familiar with the commands,&lt;br /&gt;
and the forms in which you can use them, the quick reference listing at&lt;br /&gt;
the end of the chapter will be useful to remind you of the commands that&lt;br /&gt;
are available.&lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=Workbench_Library&amp;diff=8551</id>
		<title>Workbench Library</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=Workbench_Library&amp;diff=8551"/>
		<updated>2016-05-18T16:43:21Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: /* The Info File */ Moved the sentence starting with &amp;quot;The icon type can be set. . .&amp;quot; from the end of the paragraph to the beginning.  It is the topic sentence, not the conclusion.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Workbench Library ==&lt;br /&gt;
&lt;br /&gt;
Workbench is the graphic user interface to the Amiga file system that uses symbols called icons to represent disks, directories and files. This article shows how to use workbench.library.&lt;br /&gt;
&lt;br /&gt;
Workbench is both a system program and a screen. Normally it is the first thing the user sees when the machine is booted providing a friendly operating environment for launching applications and performing other important system activities like navigating through the Amiga&#039;s hierarchical filing system.&lt;br /&gt;
&lt;br /&gt;
All application programs should be compatible with Workbench. There are only two things you need to know to do this: how to make icons for your application, data files and directories; and how to get arguments if your application is launched from Workbench.&lt;br /&gt;
&lt;br /&gt;
== The Info File ==&lt;br /&gt;
&lt;br /&gt;
The iconic representation of Amiga filing system objects is implemented through &#039;&#039;.info&#039;&#039; files. In general, for each file, disk or directory that is visible in the Workbench environment, there is an associated &#039;&#039;.info&#039;&#039; file which contains the icon imagery and other information needed by Workbench.&lt;br /&gt;
&lt;br /&gt;
Icons are associated with a particular file or directory by name. For example, the icon for a file named &#039;&#039;myapp&#039;&#039; would be stored in a &#039;&#039;.info&#039;&#039; file named &#039;&#039;myapp.info&#039;&#039; in the same directory.&lt;br /&gt;
&lt;br /&gt;
To make your application program accessible (and visible) in the Workbench environment, you need only supply a &#039;&#039;.info&#039;&#039; file with the appropriate name and type. The are four main types of icons (and &#039;&#039;.info&#039;&#039; files) used to represent Amiga filing system objects.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Basic Workbench Icon Types&lt;br /&gt;
! Workbench Icon Type&lt;br /&gt;
! Image&lt;br /&gt;
! Filing System Object&lt;br /&gt;
! Result When Icon Is Activated&lt;br /&gt;
|-&lt;br /&gt;
| Disk || [[File:LibDiskIcon.png]] || The root level directory || Window opens showing files and subdirectories&lt;br /&gt;
|-&lt;br /&gt;
| Drawer || [[File:LibDrawerIcon.png]] || A subdirectory || Window opens showing files and subdirectories&lt;br /&gt;
|-&lt;br /&gt;
| Tool || [[File:LibToolIcon.png]] || An executable file || Application runs (i.e., an application)&lt;br /&gt;
|-&lt;br /&gt;
| Project || [[File:LibProjectIcon.png]] || A data file || Typically, the application that created the data file runs and the data file is automatically loaded into it.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Icons can be created with the IconEdit program (in the Tools directory of the Extras disk), or by copying an existing &#039;&#039;.info&#039;&#039; file of the correct type. Icons can also be created under program control with PutDiskObject(). See [[Icon Library]] for a discussion of the icon library functions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The icon type can be set and the icon imagery edited with the IconEdit program.&#039;&#039;&#039;  For an executable file the icon type must be set to tool. For a data file the icon type must be set to project. Create icons for your application disk and directories too. For a directory, the icon is stored in a &#039;&#039;.info&#039;&#039; file at the same level where the directory name appears (not in the directory itself). The icon type should be set to drawer. The icon for a disk should always be stored in a file named &#039;&#039;disk.info&#039;&#039; at the root level directory of the disk. The icon type should be set to disk.&lt;br /&gt;
&lt;br /&gt;
== Workbench Environment ==&lt;br /&gt;
&lt;br /&gt;
On the Amiga there are at least two ways to start a program running:&lt;br /&gt;
&lt;br /&gt;
* By activating a tool or project icon in Workbench (an icon is activated by pointing to it with the mouse and double-clicking the mouse select button.)&lt;br /&gt;
* By typing the name of an executable file at the Shell (also known as the CLI or Command Line Interface)&lt;br /&gt;
&lt;br /&gt;
In the Workbench environment, a program is run as a separate process. A process is simply a task with additional information needed to use DOS library.&lt;br /&gt;
&lt;br /&gt;
By default, a Workbench program does not have a window to which its output will go. Therefore, &#039;&#039;stdin&#039;&#039;, &#039;&#039;stdout&#039;&#039; and &#039;&#039;stderr&#039;&#039; do not point to legal file handles. This means you cannot use &#039;&#039;stdio&#039;&#039; functions such as printf() if your program is started from Workbench unless you first set up a &#039;&#039;stdio&#039;&#039; window.&lt;br /&gt;
&lt;br /&gt;
Some compilers have options or defaults to provide a &#039;&#039;stdio&#039;&#039; window for programs started from Workbench. Applications can use an auto console window for &#039;&#039;stdio&#039;&#039; when started from Workbench by opening &amp;amp;quot;CON:0/0/640/200/auto/close/wait&amp;amp;quot; as a file. An auto console window will only open if &#039;&#039;stdio&#039;&#039; input or output occurs. This can also be handled in the startup code module that comes with your compiler.&lt;br /&gt;
&lt;br /&gt;
=== Argument Passing in Workbench ===&lt;br /&gt;
&lt;br /&gt;
Applications started from Workbench receive arguments in the form of a WBStartup structure. This is similar to obtaining arguments from a command line interface through argc and argv. The WBStartup message contains an argument count and a pointer to a list of file and directory names.&lt;br /&gt;
&lt;br /&gt;
==== One Argument ====&lt;br /&gt;
&lt;br /&gt;
A program started by activating its tool icon gets one argument in the WBStartup message: the name of the tool itself.&lt;br /&gt;
&lt;br /&gt;
==== Two Arguments ====&lt;br /&gt;
&lt;br /&gt;
All project icons (data files) have a &#039;&#039;default tool&#039;&#039; field associated with them that tells Workbench which application tool to run in order to operate on the data that the icon represents. When the user activates a project icon, Workbench runs the application specified in the default tool field passing it two arguments in the WBStartup message: the name of the tool and the project icon that the user activated.&lt;br /&gt;
&lt;br /&gt;
==== Multiple Arguments ====&lt;br /&gt;
&lt;br /&gt;
With &#039;&#039;extended select&#039;&#039;, the user can activate many icons at once. (Extended select means the user holds down the Shift key while clicking the mouse select button once on each icon in a group, double-clicking on the last icon.) If one of the icons in a group activated with extended select is an application tool, Workbench runs that application passing it the name of all the other icons in the group. This allows the user to start an application with multiple project files as arguments. If none of the icons in a group activated with extended select is a tool icon, then Workbench looks in the default tool field of each icon in the order they were selected and runs the first tool it finds.&lt;br /&gt;
&lt;br /&gt;
=== WBStartup Message ===&lt;br /&gt;
&lt;br /&gt;
When Workbench loads and starts a program, its sends the program a WBStartup message containing the arguments as summarized above. Normally, the startup code supplied with your compiler will place a pointer to WBStartup in argv for you, set argc to zero and call your program.&lt;br /&gt;
&lt;br /&gt;
The WBStartup message, whose structure is outlined in &amp;amp;lt;workbench/startup.h&amp;amp;gt;, has the following structure elements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
struct WBStartup&lt;br /&gt;
{&lt;br /&gt;
    struct Message      sm_Message;     /* a standard message structure */&lt;br /&gt;
    struct MsgPort *    sm_Process;     /* the process descriptor for you */&lt;br /&gt;
    BPTR                sm_Segment;     /* a descriptor for your code */&lt;br /&gt;
    LONG                sm_NumArgs;     /* the number of elements in ArgList */&lt;br /&gt;
    char *              sm_ToolWindow;  /* reserved for future use */&lt;br /&gt;
    struct WBArg *      sm_ArgList;     /* the arguments themselves */&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The fields of the WBStartup structure are used as follows.&lt;br /&gt;
&lt;br /&gt;
; sm_Message&lt;br /&gt;
: A standard Exec message. The reply port is set to the Workbench.&lt;br /&gt;
&lt;br /&gt;
; sm_Process&lt;br /&gt;
: The process descriptor for the tool (as returned by CreateProcess())&lt;br /&gt;
&lt;br /&gt;
; sm_Segment&lt;br /&gt;
: The loaded code for the tool (returned by LoadSeg())&lt;br /&gt;
&lt;br /&gt;
; sm_NumArgs&lt;br /&gt;
: The number of arguments in sm_ArgList&lt;br /&gt;
&lt;br /&gt;
; sm_ToolWindow&lt;br /&gt;
: Reserved (not currently passed in startup message)&lt;br /&gt;
&lt;br /&gt;
; sm_ArgList&lt;br /&gt;
: This is the argument list itself. It is a pointer to an array of WBArg structures with sm_NumArgs elements.&lt;br /&gt;
&lt;br /&gt;
Workbench arguments are passed as an array of WBArg structures in the sm_ArgList field of WBStartup. The first WBArg in the list is always the tool itself. If multiple icons have been selected when a tool is activated, the selected icons are passed to the tool as additional WBArgs. If the tool was derived from a default tool, the project will be the second WBArg. If extended select was used, arguments other than the tool are passed in the order of selection; the first icon selected will be first (after the tool), and so on.&lt;br /&gt;
&lt;br /&gt;
Each argument is a struct WBArg and has two parts: wa_Name and wa_Lock.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
struct WBArg&lt;br /&gt;
{&lt;br /&gt;
    BPTR   wa_Lock; /* a lock descriptor */&lt;br /&gt;
    BYTE * wa_Name; /* a string relative to that lock */&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The wa_Name element is the name of an AmigaDOS filing system object. The wa_Name field of the first WBArg is always the name of your program and the wa_Lock field is an AmigaDOS Lock on the directory where your program is stored.&lt;br /&gt;
&lt;br /&gt;
If your program was started by activating a project icon, then you get a second WBarg with the wa_Name field containing the file name of the project and the wa_Lock containing an AmigaDOS Lock on the directory where the project file is stored.&lt;br /&gt;
&lt;br /&gt;
If your program was started through extended select, then you get one WBArg for each icon in the selected group in the order they were selected. The wa_Name field contains the file name corresponding to each icon unless the icon is for a directory, disk, or the Trashcan in which case the wa_Name is set to NULL. The wa_Lock field contains an AmigaDOS Lock on the directory where the file is stored. (For disk or drawer icons the wa_Lock is a lock on the directory represented by the icon. Or, wa_Lock may be NULL if the icon type does not support locks.)&lt;br /&gt;
&lt;br /&gt;
{{Note|title=Workbench Locks Belong to Workbench|text=You must never call UnLock() on a wa_Lock. These locks belong to Workbench, and Workbench will UnLock() them when the WBStartup message is replied by your startup code. You must also never UnLock() your program&#039;s initial current directory lock (i.e., the lock returned by an initial CurrentDir() call). The classic symptom caused by unlocking Workbench locks is a system hang after your program exits, even though the same program exits with no problems when started from the Shell.}}&lt;br /&gt;
&lt;br /&gt;
You should save the lock returned from an initial CurrentDir(), and CurrentDir() back to it before exiting. In the Workbench environment, depending on your startup code, the current directory will generally be set to one of the wa_Locks. By using CurrentDir(wa_Lock) and then referencing wa_Name, you can find, read, and modify the files that have been passed to your program as WBArgs.&lt;br /&gt;
&lt;br /&gt;
=== Example of Parsing Workbench Arguments ===&lt;br /&gt;
&lt;br /&gt;
The following example will display all WBArgs if started from Workbench, and all Shell arguments if started from the Shell.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
/* prargs.c&lt;br /&gt;
**&lt;br /&gt;
** PrArgs.c - This program prints all Workbench or Shell (CLI) arguments.&lt;br /&gt;
*/&lt;br /&gt;
#include &amp;lt;exec/types.h&amp;gt;&lt;br /&gt;
#include &amp;lt;workbench/startup.h&amp;gt;&lt;br /&gt;
#include &amp;lt;proto/dos.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char **argv)&lt;br /&gt;
{&lt;br /&gt;
    struct WBStartup *argmsg;&lt;br /&gt;
    struct WBArg *wb_arg;&lt;br /&gt;
    int32 ktr;&lt;br /&gt;
    BPTR olddir;&lt;br /&gt;
    BPTR outFile;&lt;br /&gt;
&lt;br /&gt;
    /* argc is zero when run from the Workbench,&lt;br /&gt;
    **         positive when run from the CLI.&lt;br /&gt;
    */&lt;br /&gt;
    if (argc == 0)&lt;br /&gt;
    {&lt;br /&gt;
    /* AmigaDOS has a special facility that allows a window  */&lt;br /&gt;
    /* with a console and a file handle to be easily created. */&lt;br /&gt;
    /* CON: windows allow you to use fprintf() with no hassle */&lt;br /&gt;
    if (ZERO != (outFile = IDOS-&amp;gt;Open(&amp;quot;CON:0/0/640/200/PrArgs&amp;quot;, MODE_NEWFILE)))&lt;br /&gt;
        {&lt;br /&gt;
        /* In AmigaOS, argv is a pointer to the WBStartup message&lt;br /&gt;
        ** when argc is zero.  (run under the Workbench.)&lt;br /&gt;
        */&lt;br /&gt;
        argmsg = (struct WBStartup *)argv ;&lt;br /&gt;
        wb_arg = argmsg-&amp;gt;sm_ArgList ;         /* head of the arg list */&lt;br /&gt;
&lt;br /&gt;
        IDOS-&amp;gt;FPrintf(outFile, &amp;quot;Run from the workbench, %ld args.\n&amp;quot;,&lt;br /&gt;
                         argmsg-&amp;gt;sm_NumArgs);&lt;br /&gt;
&lt;br /&gt;
        for (ktr = 0; ktr &amp;lt; argmsg-&amp;gt;sm_NumArgs; ktr++, wb_arg++)&lt;br /&gt;
            {&lt;br /&gt;
            if (ZERO != wb_arg-&amp;gt;wa_Lock)&lt;br /&gt;
                {&lt;br /&gt;
                /* locks supported, change to the proper directory */&lt;br /&gt;
                olddir = IDOS-&amp;gt;CurrentDir(wb_arg-&amp;gt;wa_Lock) ;&lt;br /&gt;
&lt;br /&gt;
                /* process the file.&lt;br /&gt;
                ** If you have done the CurrentDir() above, then you can&lt;br /&gt;
                ** access the file by its name.  Otherwise, you have to&lt;br /&gt;
                ** examine the lock to get a complete path to the file.&lt;br /&gt;
                */&lt;br /&gt;
                IDOS-&amp;gt;FPrintf(outFile, &amp;quot;\tArg %2.2ld (w/ lock): &#039;%s&#039;.\n&amp;quot;,&lt;br /&gt;
                                 ktr, wb_arg-&amp;gt;wa_Name);&lt;br /&gt;
&lt;br /&gt;
                /* change back to the original directory when done.&lt;br /&gt;
                ** be sure to change back before you exit.&lt;br /&gt;
                */&lt;br /&gt;
                IDOS-&amp;gt;CurrentDir(olddir) ;&lt;br /&gt;
                }&lt;br /&gt;
            else&lt;br /&gt;
                {&lt;br /&gt;
                /* something that does not support locks */&lt;br /&gt;
                IDOS-&amp;gt;FPrintf(outFile, &amp;quot;\tArg %2.2ld (no lock): &#039;%s&#039;.\n&amp;quot;,&lt;br /&gt;
                                 ktr, wb_arg-&amp;gt;wa_Name);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        /* wait before closing down */&lt;br /&gt;
        IDOS-&amp;gt;Delay(500L);&lt;br /&gt;
        IDOS-&amp;gt;Close(outFile);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
    /* using &#039;tinymain&#039; from lattice c.&lt;br /&gt;
    ** define a place to send the output (originating CLI window = &amp;quot;*&amp;quot;)&lt;br /&gt;
    ** Note - if you open &amp;quot;CONSOLE:&amp;quot; and your program is RUN, the user will not&lt;br /&gt;
    ** be able to close the CLI window until you close the &amp;quot;CONSOLE:&amp;quot; file.&lt;br /&gt;
    */&lt;br /&gt;
    if (ZERO != (outFile = IDOS-&amp;gt;Open(&amp;quot;CONSOLE:&amp;quot;, MODE_NEWFILE)))&lt;br /&gt;
        {&lt;br /&gt;
        IDOS-&amp;gt;FPrintf(outFile, &amp;quot;Run from the CLI, %d args.\n&amp;quot;, argc);&lt;br /&gt;
&lt;br /&gt;
        for ( ktr = 0; ktr &amp;lt; argc; ktr++)&lt;br /&gt;
            {&lt;br /&gt;
            /* print an arg, and its number */&lt;br /&gt;
            IDOS-&amp;gt;FPrintf(outFile, &amp;quot;\tArg %2.2ld: &#039;%s&#039;.\n&amp;quot;, ktr, argv[ktr]);&lt;br /&gt;
            }&lt;br /&gt;
        IDOS-&amp;gt;Close(outFile);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Workbench Library ==&lt;br /&gt;
&lt;br /&gt;
Workbench arguments are sent to an application when it is started. There are also special facilities that allow an application that is already running to get additional arguments. These special facilities are known as AppWindow, AppIcon and AppMenuItem.&lt;br /&gt;
&lt;br /&gt;
An AppWindow is a special kind of window that allows the user to drag icons into it. Applications that set up an AppWindow will receive a message from Workbench whenever the user moves an icon into the AppWindow. The message contains the name of the file or directory that the icon represents.&lt;br /&gt;
&lt;br /&gt;
An AppIcon is similar to an AppWindow. It is a special type of icon that allows the user to drag other icons on top of it. Like AppWindows, an application that sets up an AppIcon will receive a message from Workbench whenever the user moves another icon on top of the AppIcon. The message contains the name of the file or directory that the moved icon represents.&lt;br /&gt;
&lt;br /&gt;
An AppMenuItem allows an application to add a custom menu item to the usual set of menu choices supported by Workbench. An application that sets up an AppMenuItem will receive a message from Workbench whenever the user picks that item from the Workbench menus.&lt;br /&gt;
&lt;br /&gt;
When an application receives the messages described above, the message will include struct WBArg *am_ArgList containing the names (wa_Name) and directory locks (wa_Lock) of all selected icons that were passed as arguments by the user. This am_ArgList has the same format as the sm_ArgList of a WBStartup message.&lt;br /&gt;
&lt;br /&gt;
=== The AppMessage Structure ===&lt;br /&gt;
&lt;br /&gt;
When Workbench notifies an application of AppWindow, AppIcon, or AppMenuItem activity, it sends an AppMessage to the application&#039;s message port (from &amp;lt;workbench/workbench.h&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
    #define      AM_VERSION     1&lt;br /&gt;
&lt;br /&gt;
    struct AppMessage {&lt;br /&gt;
        struct Message am_Message;    /* standard message structure */&lt;br /&gt;
        UWORD am_Type;                /* message type */&lt;br /&gt;
        ULONG am_UserData;            /* application specific */&lt;br /&gt;
        ULONG am_ID;                  /* application definable ID */&lt;br /&gt;
        LONG am_NumArgs;              /* # of elements in arglist */&lt;br /&gt;
        struct WBArg *am_ArgList;     /* the arguments themselves */&lt;br /&gt;
        UWORD am_Version;             /* will be AM_VERSION */&lt;br /&gt;
        UWORD am_Class;               /* message class */&lt;br /&gt;
        WORD am_MouseX;               /* mouse x position of event */&lt;br /&gt;
        WORD am_MouseY;               /* mouse y position of event */&lt;br /&gt;
        ULONG am_Seconds;             /* current system clock time */&lt;br /&gt;
        ULONG am_Micros;              /* current system clock time */&lt;br /&gt;
        ULONG am_Reserved[8];&lt;br /&gt;
    };&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The AppMessage&#039;s am_Type field tells the application which type of AppObject the message is about.  The field will be:&lt;br /&gt;
* AMTYPE_APPWINDOW if the message is about an AppWindow,&lt;br /&gt;
* AMTYPE_APPICON if the message is about an AppIcon, or&lt;br /&gt;
* AMTYPE_APPMENUITEM if the message is about an AppMenuItem.&lt;br /&gt;
&lt;br /&gt;
When an application creates an AppObject, it can assign the AppObject application specific data (most likely a pointer) and an ID. Workbench will pass an AppObject&#039;s data and ID back to the application when it sends an AppMessage about the AppObject. The AppMessage&#039;s am_UserData and am_ID fields hold the user data and the ID.&lt;br /&gt;
&lt;br /&gt;
The am_NumArgs field tells how many icons were involved in the user&#039;s AppObject action. For an AppWindow or AppIcon, am_NumArgs is the number of icons the user dropped on the AppWindow or AppIcon. For an AppMenuItem, am_NumArgs represents the number of icons that were selected when the user selected this AppMenuItem. If no icons were selected during an AppMenuItem event or the user double-clicked on an AppIcon, am_NumArgs will be zero. Workbench does not send AppMessages if the user double-clicks an AppWindow.&lt;br /&gt;
&lt;br /&gt;
The am_ArgList field is a pointer to a list of WBArgs (from &amp;lt;workbench/startup.h&amp;gt;) corresponding to each icon dropped (or selected). If there were no icons dropped or selected, this field will be NULL.&lt;br /&gt;
&lt;br /&gt;
For future expansion possibilities, the AppMessage structure has a version number. The version number is #defined as AM_VERSION in &amp;lt;workbench/workbench.h&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The am_MouseX and am_MouseY fields apply only to AppWindows and contain the coordinates of the mouse pointer when the user dropped the icon(s). These coordinates are relative to the AppWindow&#039;s upper left corner.&lt;br /&gt;
&lt;br /&gt;
The am_Seconds and am_Micros fields represent the time that the event took place.&lt;br /&gt;
&lt;br /&gt;
Any remaining fields are undefined at present and should be set to NULL.&lt;br /&gt;
&lt;br /&gt;
=== Workbench Library Functions ===&lt;br /&gt;
&lt;br /&gt;
AppWindows, AppIcons and AppMenuItems extend the user&#039;s ability to perform operations with the Workbench iconic interface. They all provide graphical methods for passing arguments to a running application. In order to manage AppWindows, AppIcons and AppMenuItems, the Amiga OS includes these Workbench library functions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
struct AppIcon *AddAppIconA( ULONG, ULONG, char *, struct MsgPort *, struct FileLock *,&lt;br /&gt;
  struct DiskObject *, struct *TagItem );&lt;br /&gt;
struct AppMenuItem *AddAppMenuItemA( ULONG, ULONG, char *, struct MsgPort *, struct *TagItem);&lt;br /&gt;
struct AppWindow *AddAppWindowA( ULONG, ULONG, struct Window *, struct MsgPort *, struct *TagItem);&lt;br /&gt;
&lt;br /&gt;
BOOL RemoveAppIcon(struct AppIcon *);&lt;br /&gt;
BOOL RemoveAppMenuItem(struct AppMenuItem *);&lt;br /&gt;
BOOL RemoveAppWindow(struct AppWindow  *);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The functions AddAppMenuItemA(), AddAppWindowA() and AddAppIconA() have alternate entry points using the same function name without the trailing A. The alternate functions accept any TagItem arguments on the stack instead of from an array. See the listings below for examples.&lt;br /&gt;
&lt;br /&gt;
=== An AppIcon Example ===&lt;br /&gt;
&lt;br /&gt;
The example listed here shows how to create an AppIcon and obtain arguments from Workbench when the user drops other icons on top of it. The AppIcon will appear as a disk icon named &amp;quot;TestAppIcon&amp;quot; on the Workbench screen. (All AppIcons appear on the Workbench screen or window.)&lt;br /&gt;
&lt;br /&gt;
For convenience, this example code uses GetDefDiskObject() to create the icon imagery for the AppIcon. Applications should never do this. Use your own custom imagery for AppIcons instead.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
/* appicon.c&lt;br /&gt;
/* Works from the Shell (CLI) only */&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;exec/types.h&amp;gt;          /* Need this for the Amiga variable types  */&lt;br /&gt;
#include &amp;lt;workbench/workbench.h&amp;gt; /* This has DiskObject and AppIcon structs */&lt;br /&gt;
#include &amp;lt;workbench/startup.h&amp;gt;   /* This has WBStartup and WBArg structs    */&lt;br /&gt;
#include &amp;lt;exec/libraries.h&amp;gt;      /* Need this to check library versions     */&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;proto/icon.h&amp;gt;          /* Icon (DiskObject) function prototypes   */&lt;br /&gt;
#include &amp;lt;proto/exec.h&amp;gt;          /* Exec message, port and library functions*/&lt;br /&gt;
#include &amp;lt;proto/workbench.h&amp;gt;     /* AppIcon function protos                 */&lt;br /&gt;
&lt;br /&gt;
struct Library *IconBase;&lt;br /&gt;
struct Library *WorkbenchBase;&lt;br /&gt;
struct IconIFace *IIcon;&lt;br /&gt;
struct WorkbenchIFace *IWorkbench;&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char **argv)&lt;br /&gt;
{&lt;br /&gt;
  struct DiskObject   *dobj=NULL;&lt;br /&gt;
  struct MsgPort    *myport=NULL;&lt;br /&gt;
  struct AppIcon   *appicon=NULL;&lt;br /&gt;
  struct AppMessage *appmsg=NULL;&lt;br /&gt;
&lt;br /&gt;
  LONG dropcount=0L;&lt;br /&gt;
  ULONG x;&lt;br /&gt;
  BOOL success=0L;&lt;br /&gt;
&lt;br /&gt;
  IconBase = IExec-&amp;gt;OpenLibrary(&amp;quot;icon.library&amp;quot;, 50);&lt;br /&gt;
  WorkbenchBase = IExec-&amp;gt;OpenLibrary(&amp;quot;workbench.library&amp;quot;, 50);&lt;br /&gt;
  &lt;br /&gt;
  IIcon = (struct IconIFace*)IExec-&amp;gt;GetInterface(IconBase, &amp;quot;main&amp;quot;, 1, NULL);&lt;br /&gt;
  IWorkbench = (struct WorkbenchIFace*)IExec-&amp;gt;GetInterface(WorkbenchBase, &amp;quot;main&amp;quot;, 1, NULL);&lt;br /&gt;
  &lt;br /&gt;
  /* Get the the right version of the Icon Library, initialize IconBase */&lt;br /&gt;
  if(IIcon != NULL &amp;amp;&amp;amp; IWorkbench != NULL)&lt;br /&gt;
  {&lt;br /&gt;
    /* This is the easy way to get some icon imagery */&lt;br /&gt;
    /* Real applications should use custom imagery   */&lt;br /&gt;
    dobj = IIcon-&amp;gt;GetDefDiskObject(WBDISK);&lt;br /&gt;
    if(dobj != 0)&lt;br /&gt;
      {&lt;br /&gt;
      /* The type must be set to NULL for a WBAPPICON */&lt;br /&gt;
      dobj-&amp;gt;do_Type = NULL;&lt;br /&gt;
&lt;br /&gt;
      myport = IExec-&amp;gt;AllocSysObjectTags(ASOT_PORT, NULL);&lt;br /&gt;
      if(myport)&lt;br /&gt;
        {&lt;br /&gt;
        /* Put the AppIcon up on the Workbench window */&lt;br /&gt;
        appicon = IWorkbench-&amp;gt;AddAppIconA(0L,0L,&amp;quot;TestAppIcon&amp;quot;,myport,NULL,dobj,NULL);&lt;br /&gt;
        if(appicon)&lt;br /&gt;
          {&lt;br /&gt;
          /* For the sake of this example, we allow the AppIcon */&lt;br /&gt;
          /* to be activated only five times.                   */&lt;br /&gt;
          IDOS-&amp;gt;Printf(&amp;quot;Drop files on the Workbench AppIcon\n&amp;quot;);&lt;br /&gt;
          IDOS-&amp;gt;Printf(&amp;quot;Example exits after 5 drops\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
          while(dropcount&amp;lt;5)&lt;br /&gt;
            {&lt;br /&gt;
            /* Here&#039;s the main event loop where we wait for */&lt;br /&gt;
            /* messages to show up from the AppIcon         */&lt;br /&gt;
            IExec-&amp;gt;WaitPort(myport);&lt;br /&gt;
&lt;br /&gt;
            /* Might be more than one message at the port... */&lt;br /&gt;
            while(appmsg=(struct AppMessage *)IExec-&amp;gt;GetMsg(myport))&lt;br /&gt;
              {&lt;br /&gt;
              if(appmsg-&amp;gt;am_NumArgs==0L)&lt;br /&gt;
                {&lt;br /&gt;
                /* If NumArgs is 0 the AppIcon was activated directly */&lt;br /&gt;
                IDOS-&amp;gt;Printf(&amp;quot;User activated the AppIcon.\n&amp;quot;);&lt;br /&gt;
                IDOS-&amp;gt;Printf(&amp;quot;A Help window for the user would be good here\n&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
              else if(appmsg-&amp;gt;am_NumArgs&amp;gt;0L)&lt;br /&gt;
                {&lt;br /&gt;
                /* If NumArgs is &amp;gt;0 the AppIcon was activated by */&lt;br /&gt;
                /* having one or more icons dropped on top of it */&lt;br /&gt;
                IDOS-&amp;gt;Printf(&amp;quot;User dropped %ld icons on the AppIcon\n&amp;quot;,&lt;br /&gt;
                                              appmsg-&amp;gt;am_NumArgs);&lt;br /&gt;
                for(x=0;x&amp;lt;appmsg-&amp;gt;am_NumArgs;x++)&lt;br /&gt;
                  {&lt;br /&gt;
                  IDOS-&amp;gt;Printf(&amp;quot;#%ld name=&#039;%s&#039;\n&amp;quot;,x+1,appmsg-&amp;gt;am_ArgList[x].wa_Name);&lt;br /&gt;
                  }&lt;br /&gt;
                }&lt;br /&gt;
              /* Let Workbench know we&#039;re done with the message */&lt;br /&gt;
              IExec-&amp;gt;ReplyMsg((struct Message *)appmsg);&lt;br /&gt;
              }&lt;br /&gt;
            dropcount++;&lt;br /&gt;
            }&lt;br /&gt;
          success = IWorkbench-&amp;gt;RemoveAppIcon(appicon);&lt;br /&gt;
          }&lt;br /&gt;
        /* Clear away any messages that arrived at the last moment */&lt;br /&gt;
        while(appmsg = (struct AppMessage *)IExec-&amp;gt;GetMsg(myport))&lt;br /&gt;
            IExec-&amp;gt;ReplyMsg((struct Message *)appmsg);&lt;br /&gt;
        IExec-&amp;gt;FreeSysObject(ASOT_PORT, myport);&lt;br /&gt;
        }&lt;br /&gt;
      IIcon-&amp;gt;FreeDiskObject(dobj);&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
  IExec-&amp;gt;DropInterface((struct Interface*)IWorkbench);&lt;br /&gt;
  IExec-&amp;gt;DropInterface((struct Interface*)IIcon);&lt;br /&gt;
&lt;br /&gt;
  IExec-&amp;gt;CloseLibrary(WorkbenchBase);&lt;br /&gt;
  IEec-&amp;gt;CloseLibrary(IconBase);&lt;br /&gt;
  &lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== An AppMenuItem Example ===&lt;br /&gt;
&lt;br /&gt;
This example shows how to create an AppMenuItem. The example adds a menu item named &amp;quot;Browse Files&amp;quot; to the Workbench Tools menu. (All AppMenuItems appear in the Workbench Tools menu.) When the menu item is activated, the example program receives a message from Workbench and then attempts to start up an instance of the More program. (The More program is in the Utilities directory of the Workbench volume.)&lt;br /&gt;
&lt;br /&gt;
The example starts up the More program as a separate, asynchronous process using the SystemTags() function. When the AppMenuItem has been activated five times, the program exits after freeing any system resources it has used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
/* appmenuitem.c&lt;br /&gt;
/* Works from the Shell (CLI) only */&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;exec/types.h&amp;gt;          /* Need this for the Amiga variable types  */&lt;br /&gt;
#include &amp;lt;workbench/workbench.h&amp;gt; /* This has DiskObject and AppIcon structs */&lt;br /&gt;
#include &amp;lt;workbench/startup.h&amp;gt;   /* This has WBStartup and WBArg structs    */&lt;br /&gt;
#include &amp;lt;exec/libraries.h&amp;gt;&lt;br /&gt;
#include &amp;lt;dos/dostags.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;proto/dos.h&amp;gt;&lt;br /&gt;
#include &amp;lt;proto/exec.h&amp;gt;          /* Exec message, port and library functions*/&lt;br /&gt;
#include &amp;lt;proto/workbench.h&amp;gt;     /* AppMenuItem function protos             */&lt;br /&gt;
&lt;br /&gt;
struct Library *WorkbenchBase;&lt;br /&gt;
struct WorkbenchIFace *IWorkbench;&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char **argv)&lt;br /&gt;
{&lt;br /&gt;
  struct MsgPort      *myport=NULL;&lt;br /&gt;
  struct AppMenuItem *appitem=NULL;&lt;br /&gt;
  struct AppMessage   *appmsg=NULL;&lt;br /&gt;
  LONG result, x, count=0L;&lt;br /&gt;
  BOOL success=0L;&lt;br /&gt;
  BPTR file;&lt;br /&gt;
&lt;br /&gt;
  WorkbenchBase = IExec-&amp;gt;OpenLibrary(&amp;quot;workbench.library&amp;quot;, 50);&lt;br /&gt;
  IWorkbench = (struct WorkbenchIFace*)IExec-&amp;gt;GetInterface(WorkbenchBase, &amp;quot;main&amp;quot;, 1, NULL);&lt;br /&gt;
  &lt;br /&gt;
  if (IWorkbench != NULL)&lt;br /&gt;
  {&lt;br /&gt;
    if(myport = IExec-&amp;gt;AllocSysObjectTags(ASOT_PORT, NULL))&lt;br /&gt;
    {&lt;br /&gt;
    /* Add our own AppMenuItem to the Workbench Tools Menu */&lt;br /&gt;
    appitem = IWorkbench-&amp;gt;AddAppMenuItemA(0L,                   /* Our ID# for item */&lt;br /&gt;
                    (ULONG)&amp;quot;SYS:Utilities/More&amp;quot;,  /* Our UserData     */&lt;br /&gt;
                           &amp;quot;Browse Files&amp;quot;,        /* MenuItem Text    */&lt;br /&gt;
                            myport,NULL);         /* MsgPort, no tags */&lt;br /&gt;
    if(appitem)&lt;br /&gt;
      {&lt;br /&gt;
      IDOS-&amp;gt;Printf(&amp;quot;Select Workbench Tools demo menuitem &#039;Browse Files&#039;\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
      /* For this example, we allow the AppMenuItem to be selected */&lt;br /&gt;
      /* only once, then we remove it and exit                     */&lt;br /&gt;
      IExec-&amp;gt;WaitPort(myport);&lt;br /&gt;
      while((appmsg = (struct AppMessage *)IExec-&amp;gt;GetMsg(myport)) &amp;amp;&amp;amp; (count&amp;lt;1))&lt;br /&gt;
        {&lt;br /&gt;
        /* Handle messages from the AppMenuItem - we have only one  */&lt;br /&gt;
        /* item so we don&#039;t have to check its appmsg-&amp;gt;am_ID number. */&lt;br /&gt;
        /* We&#039;ll System() the command string that we passed as      */&lt;br /&gt;
        /* userdata when we added the menu item.                    */&lt;br /&gt;
        /* We find our userdata pointer in appmsg-&amp;gt;am_UserData      */&lt;br /&gt;
&lt;br /&gt;
        IDOS-&amp;gt;Printf(&amp;quot;User picked AppMenuItem with %ld icons selected\n&amp;quot;,&lt;br /&gt;
                                                appmsg-&amp;gt;am_NumArgs);&lt;br /&gt;
        for(x=0;x&amp;lt;appmsg-&amp;gt;am_NumArgs;x++)&lt;br /&gt;
           IDOS-&amp;gt;Printf(&amp;quot;  #%ld name=&#039;%s&#039;\n&amp;quot;,x+1,appmsg-&amp;gt;am_ArgList[x].wa_Name);&lt;br /&gt;
&lt;br /&gt;
        count++;&lt;br /&gt;
        if( file=Open(&amp;quot;CON:0/40/640/150/AppMenu Example/auto/close/wait&amp;quot;,&lt;br /&gt;
                         MODE_OLDFILE)  )     /* for any stdio output */&lt;br /&gt;
          {&lt;br /&gt;
          result=IDOS-&amp;gt;SystemTags((UBYTE *)appmsg-&amp;gt;am_UserData,SYS_Input,file,&lt;br /&gt;
                                                         SYS_Output,NULL,&lt;br /&gt;
                                                         SYS_Asynch,TRUE,&lt;br /&gt;
                                                         TAG_END);&lt;br /&gt;
          /* If Asynch System() itself fails, we must close file */&lt;br /&gt;
          if(result == -1) IDOS-&amp;gt;Close(file);&lt;br /&gt;
          }&lt;br /&gt;
        IExec-&amp;gt;ReplyMsg((struct Message *)appmsg);&lt;br /&gt;
        }&lt;br /&gt;
      success = IWorkbench-&amp;gt;RemoveAppMenuItem(appitem);&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
    /* Clear away any messages that arrived at the last moment */&lt;br /&gt;
    /* and let Workbench know we&#039;re done with the messages     */&lt;br /&gt;
    while(appmsg=(struct AppMessage *)IExec-&amp;gt;GetMsg(myport))&lt;br /&gt;
      {&lt;br /&gt;
      IExec-&amp;gt;ReplyMsg((struct Message *)appmsg);&lt;br /&gt;
      }&lt;br /&gt;
    IExec-&amp;gt;FreeSysObject(ASOT_PORT, myport);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
  IExec-&amp;gt;DropInterface((struct Interface*)IWorkbench);&lt;br /&gt;
  IExec-&amp;gt;CloseLibrary(WorkbenchBase);&lt;br /&gt;
  &lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== An AppWindow Example ===&lt;br /&gt;
&lt;br /&gt;
This example shows how to create an AppWindow and obtain arguments from Workbench when the user drops an icon into it. The AppWindow will appear on the Workbench screen with the name &amp;quot;AppWindow&amp;quot; and will run until the window&#039;s close gadget is selected. If any icons are dropped into the AppWindow, the program prints their arguments in the Shell window.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
/* appwindow.c */&lt;br /&gt;
/* Works from the Shell (CLI) only */&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;exec/types.h&amp;gt;          /* Need this for the Amiga variable types  */&lt;br /&gt;
#include &amp;lt;workbench/workbench.h&amp;gt; /* This has DiskObject and AppWindow       */&lt;br /&gt;
#include &amp;lt;workbench/startup.h&amp;gt;   /* This has WBStartup and WBArg structs    */&lt;br /&gt;
#include &amp;lt;exec/libraries.h&amp;gt;      /* Need this to check library versions     */&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;proto/exec.h&amp;gt;&lt;br /&gt;
#include &amp;lt;proto/dos.h&amp;gt;&lt;br /&gt;
#include &amp;lt;proto/intuition.h&amp;gt;&lt;br /&gt;
#include &amp;lt;proto/workbench.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
struct Library        *IntuitionBase;&lt;br /&gt;
struct Library        *WorkbenchBase;&lt;br /&gt;
struct IntuitionIFace *IIntuition;&lt;br /&gt;
struct WorkbenchIFace *IWorkbench;&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char **argv)&lt;br /&gt;
{&lt;br /&gt;
  struct MsgPort *awport;&lt;br /&gt;
  struct Window  *win;&lt;br /&gt;
  struct AppWindow *appwin;&lt;br /&gt;
  struct IntuiMessage *imsg;&lt;br /&gt;
  struct AppMessage *amsg;&lt;br /&gt;
  struct WBArg   *argptr;&lt;br /&gt;
&lt;br /&gt;
  ULONG           winsig, appwinsig, signals, id = 1, userdata = 0;&lt;br /&gt;
  BOOL            done = FALSE;&lt;br /&gt;
  int             i;&lt;br /&gt;
&lt;br /&gt;
  IntuitionBase = IExec-&amp;gt;OpenLibrary(&amp;quot;intuition.library&amp;quot;, 50);&lt;br /&gt;
  WorkbenchBase = IExec-&amp;gt;OpenLibrary(&amp;quot;workbench.library&amp;quot;, 50);&lt;br /&gt;
  &lt;br /&gt;
  IIntuition = (struct IntuitionIFace*)IExec-&amp;gt;GetInterface(IntuitionBase, &amp;quot;main&amp;quot;, 1, NULL);&lt;br /&gt;
  IWorkbench = (struct WorkbenchIFace*)IExec-&amp;gt;GetInterface(WorkbenchBase, &amp;quot;main&amp;quot;, 1, NULL);&lt;br /&gt;
&lt;br /&gt;
  if (IIntuition != NULL)&lt;br /&gt;
  {&lt;br /&gt;
    if (IWorkbench != NULL)&lt;br /&gt;
    {&lt;br /&gt;
      if (awport = IExec-&amp;gt;AllocSysObjectTags(ASOT_PORT, NULL))&lt;br /&gt;
         {&lt;br /&gt;
         if (win = IIntuition-&amp;gt;OpenWindowTags(NULL,&lt;br /&gt;
                                  WA_Width, 200,        WA_Height, 50,&lt;br /&gt;
                                  WA_IDCMP, CLOSEWINDOW,&lt;br /&gt;
                                  WA_Flags, WINDOWCLOSE | WINDOWDRAG,&lt;br /&gt;
                                  WA_Title, &amp;quot;AppWindow&amp;quot;,&lt;br /&gt;
                                  TAG_END))&lt;br /&gt;
          {&lt;br /&gt;
          if (appwin = IWorkbench-&amp;gt;AddAppWindow(id, userdata, win, awport, NULL))&lt;br /&gt;
            {&lt;br /&gt;
            IDOS-&amp;gt;Printf(&amp;quot;AppWindow added... Drag files into AppWindow\n&amp;quot;);&lt;br /&gt;
            winsig    = 1L &amp;lt;&amp;lt; win-&amp;gt;UserPort-&amp;gt;mp_SigBit;&lt;br /&gt;
            appwinsig = 1L &amp;lt;&amp;lt; awport-&amp;gt;mp_SigBit;&lt;br /&gt;
&lt;br /&gt;
            while (! done)&lt;br /&gt;
              {&lt;br /&gt;
              /* Wait for IDCMP messages and AppMessages */&lt;br /&gt;
              signals = IExec-&amp;gt;Wait( winsig | appwinsig );&lt;br /&gt;
&lt;br /&gt;
              if(signals &amp;amp; winsig)      /* Got an IDCMP message */&lt;br /&gt;
                {&lt;br /&gt;
                while (imsg = (struct IntuiMessage *) IExec-&amp;gt;GetMsg(win-&amp;gt;UserPort))&lt;br /&gt;
                  {&lt;br /&gt;
                  if (imsg-&amp;gt;Class = CLOSEWINDOW)   done = TRUE;&lt;br /&gt;
                  IExec-&amp;gt;ReplyMsg((struct Message *) imsg);&lt;br /&gt;
                  }&lt;br /&gt;
                }&lt;br /&gt;
              if(signals &amp;amp; appwinsig)   /* Got an AppMessage */&lt;br /&gt;
                {&lt;br /&gt;
                while (amsg = (struct AppMessage *) IExec-&amp;gt;GetMsg(awport))&lt;br /&gt;
                  {&lt;br /&gt;
                  IDOS-&amp;gt;Printf(&amp;quot;AppMsg: Type=%ld, ID=%ld, NumArgs=%ld\n&amp;quot;,&lt;br /&gt;
                           amsg-&amp;gt;am_Type, amsg-&amp;gt;am_ID, amsg-&amp;gt;am_NumArgs);&lt;br /&gt;
                  argptr = amsg-&amp;gt;am_ArgList;&lt;br /&gt;
                  for (i = 0; i &amp;lt; amsg-&amp;gt;am_NumArgs; i++)&lt;br /&gt;
                    {&lt;br /&gt;
                    IDOS-&amp;gt;Printf(&amp;quot;   arg(%ld): Name=&#039;%s&#039;, Lock=%lx\n&amp;quot;,&lt;br /&gt;
                             i, argptr-&amp;gt;wa_Name, argptr-&amp;gt;wa_Lock);&lt;br /&gt;
                    argptr++;&lt;br /&gt;
                    }&lt;br /&gt;
                  IExec-&amp;gt;ReplyMsg((struct Message *) amsg);&lt;br /&gt;
                  }&lt;br /&gt;
                }&lt;br /&gt;
              }     /* done */&lt;br /&gt;
            IWorkbench-&amp;gt;RemoveAppWindow(appwin);&lt;br /&gt;
            }&lt;br /&gt;
          IIntuition-&amp;gt;CloseWindow(win);&lt;br /&gt;
          }&lt;br /&gt;
        /* Make sure there are no more outstanding messages */&lt;br /&gt;
        while(amsg = (struct AppMessage *)IExec-&amp;gt;GetMsg(awport))&lt;br /&gt;
              IExec-&amp;gt;ReplyMsg((struct Message *)amsg);&lt;br /&gt;
        IExec-&amp;gt;FreeSysObject(ASOT_PORT, awport);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    IExec-&amp;gt;DropInterface((struct Interface*)IIntuition);&lt;br /&gt;
    IExec-&amp;gt;DropInterface((struct Interface*)IWorkbench);&lt;br /&gt;
    IExec-&amp;gt;CloseLibrary(IntuitionBase);&lt;br /&gt;
    IExec-&amp;gt;CloseLibrary(WorkbenchBase);&lt;br /&gt;
    &lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Workbench and the Startup Code Module ==&lt;br /&gt;
&lt;br /&gt;
Standard startup code handles the detail work of interfacing with the arguments and environment of Workbench and the Shell (or CLI). This section describes the behavior of standard startup modules such as the ones supplied with newlib and clib2.&lt;br /&gt;
&lt;br /&gt;
The environment for a program started from Workbench is quite different from the environment for a program started from the Shell. The Shell does not create a new process for a program; it jumps to the program&#039;s code and the program shares the process with the Shell. Programs run under the Shell have access to all the Shell&#039;s environment, including the ability to modify that environment. (Programs run from the Shell should be careful to restore all values that existed on startup.) Workbench starts a program as a new DOS process, explicitly passing the execution environment to the program.&lt;br /&gt;
&lt;br /&gt;
=== Workbench Startup ===&lt;br /&gt;
&lt;br /&gt;
When the user activates a project or tool icon, the program is run as a separate process asynchronous to Workbench. This allows the user to take full advantage of the multitasking features of the Amiga. A process is simply a task with additional information needed to use DOS library.&lt;br /&gt;
&lt;br /&gt;
When Workbench loads and starts a program, it sends the program a WBStartup message containing the arguments as described earlier. The WBStartup also contains a pointer to the new Process structure which describes the execution environment of the program. The WBStartup message is posted to the message port of the program&#039;s Process structure.&lt;br /&gt;
&lt;br /&gt;
The Process message port is for the exclusive use of DOS, so this message must be removed from the port before using any DOS library functions. Normally this is handled by the startup code module that comes with your compiler so you don&#039;t have to worry about this unless you are writing your own startup code.&lt;br /&gt;
&lt;br /&gt;
Standard startup code modules also set up SysBase, the pointer to the Exec master library, and open the DOS library setting up DOSBase. That is why Exec and AmigaDOS functions can be called by C applications without first opening a library; the startup code that applications are linked with handles this. Some special startups may also set up NIL: input and output streams, or may open a &#039;&#039;stdio&#039;&#039; window so that the Workbench applications can use stdio functions such as printf().&lt;br /&gt;
&lt;br /&gt;
The startup code can tell if it is running in the Workbench environment because the pr_CLI field of the Process structure will contain NULL. In that case the startup code removes the WBStartup message from the Process message port with GetMsg() before using any functions in the DOS library.&lt;br /&gt;
&lt;br /&gt;
{{Note|title=Do Not Use the Process Message Port for Anything Else|text=The message port in a Process structure is for the exclusive use of the DOS library.}}&lt;br /&gt;
&lt;br /&gt;
Standard startup code will pass the WBStartup message pointer in argv and 0 (zero) in argc if the program is started from Workbench. The startup code calls the application code that it is linked with as a function. When the application code exits back to the startup code, the startup code closes and frees all opens and allocations it made. It will then Forbid(), and ReplyMsg() the WBStartup message, notifying Workbench that the application Process may be terminated and its code unloaded from memory.&lt;br /&gt;
&lt;br /&gt;
{{Note|title=Avoid the DOS Exit() function|text=The DOS Exit() function does &#039;&#039;not&#039;&#039; return an application to the startup code that called it. If you wish to exit your application, use the exit function provided by your startup code (usually lower-case exit(), or _exit for assembler), passing it a valid DOS return code as listed in the include file &amp;amp;lt;libraries/dos.h&amp;amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
=== Shell Startup ===&lt;br /&gt;
&lt;br /&gt;
When a program is started from the Shell (or a Shell script), standard startup modules will parse the command line into an array of pointers to individual argument strings placing them in argv, and an argument count in argc.&lt;br /&gt;
&lt;br /&gt;
If a program is started from the Shell, argc will always equal at least one and the first element in argv will always be a pointer to the command name. Other command line arguments are stored in turn. For example, if the command line was:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
df0:myprogram &amp;quot;my file1&amp;quot; file2 ;this is a comment&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then argc will be 3, argv[0] will be &amp;quot;df0:myprogram&amp;quot;, argv[1] will be &amp;quot;my file1&amp;quot;, and argv[2] will be &amp;quot;file2&amp;quot;. Correct startup code will strip spaces between arguments and trailing spaces from the last argument and will also properly deal with quoted arguments with embedded spaces.&lt;br /&gt;
&lt;br /&gt;
As with Workbench, standard startup code for the Shell sets up SysBase, the pointer to the Exec master library, and opens the DOS library setting up DOSBase. C applications that are linked with standard startup code can call an Exec or AmigaDOS functions without opening the library first.&lt;br /&gt;
&lt;br /&gt;
The startup code also fills in the &#039;&#039;stdio&#039;&#039; file handles (_stdin, _stdout, etc.) for the application. Finally argv and argc, are pushed onto the stack and the application is called. When the application returns or exits back to the startup code, the startup code closes and frees all opens and allocations it has made for the application, and then returns to the system with the whatever value the program exited with.&lt;br /&gt;
&lt;br /&gt;
Link your applications only with standard, tested startup code of some type such as the module supplied with your compiler. Startup code provides your programs with correct, consistent handling of Shell command line and Workbench arguments and will perform some initializations and cleanups which would otherwise need to be handled by your own code. Very small startups can be used for programs that do not require command line arguments.&lt;br /&gt;
&lt;br /&gt;
A few words of warning for those of you who do not use standard startup code:&lt;br /&gt;
&lt;br /&gt;
* If you are started as a Workbench process, you &#039;&#039;must&#039;&#039; GetMsg() the WBStartup message before using any functions in the DOS library.&lt;br /&gt;
* You &#039;&#039;must&#039;&#039; turn off task switching (with Forbid()) before replying the WBStartup message from Workbench. This will prevent Workbench from unloading your code before you can exit properly.&lt;br /&gt;
* If you do your own command line parsing, you &#039;&#039;must&#039;&#039; provide the user with consistent and correct handling of command line arguments.&lt;br /&gt;
&lt;br /&gt;
== Function Reference ==&lt;br /&gt;
&lt;br /&gt;
The following are brief descriptions of the functions in workbench.library. See SDK for details on each function call.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Workbench Library Functions&lt;br /&gt;
|-&lt;br /&gt;
! Function&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| AddAppIcon()&lt;br /&gt;
| Add an AppIcon to Workbench&lt;br /&gt;
|-&lt;br /&gt;
| AddAppMenuItem()&lt;br /&gt;
| Add an AppMenuItem to the Workbench Tools menu&lt;br /&gt;
|-&lt;br /&gt;
| AddAppWindow()&lt;br /&gt;
| Add an AppWindow to Workbench&lt;br /&gt;
|-&lt;br /&gt;
| RemoveAppIcon()&lt;br /&gt;
| Remove an AppIcon to Workbench&lt;br /&gt;
|-&lt;br /&gt;
| RemoveAppMenuItem()&lt;br /&gt;
| Remove an AppMenuItem to the Workbench Tools menu&lt;br /&gt;
|-&lt;br /&gt;
| RemoveAppWindow()&lt;br /&gt;
| Remove an AppWindow to Workbench&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=AmigaOS_Manual:_Workbench_Glossary&amp;diff=8550</id>
		<title>AmigaOS Manual: Workbench Glossary</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=AmigaOS_Manual:_Workbench_Glossary&amp;diff=8550"/>
		<updated>2016-05-18T16:34:07Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: */Tool Type/* added a link to the UI Style Guide list of default tool types&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This glossary provides definitions of terms used in the Amiga manuals.&lt;br /&gt;
&lt;br /&gt;
; acceleration&lt;br /&gt;
: An option, selected through the Input editor, that causes the pointer movement to increase as the mouse is moved at a constant speed. Acceleration provides a higher degree of control for small mouse movements and less control, but greater mouse speed, for large movements.&lt;br /&gt;
&lt;br /&gt;
; action gadget&lt;br /&gt;
: A gadget in a window that performs an operation in the window when you select the gadget. Common action gadgets are Save, Continue, and Cancel.&lt;br /&gt;
&lt;br /&gt;
; active&lt;br /&gt;
: Used in reference to the screen, Shell window, or Workbench window that is accepting input..&lt;br /&gt;
&lt;br /&gt;
; Advanced Graphics Architecture (AGA)&lt;br /&gt;
: An Amiga custom chip set that delivers more displayable colors and improved performance.&lt;br /&gt;
&lt;br /&gt;
; alias&lt;br /&gt;
: An alternative name for an AmigaDOS command or command string, specified with the ALIAS command.&lt;br /&gt;
&lt;br /&gt;
; AmigaDOS&lt;br /&gt;
: The disk operating system (DOS) used by Amiga computers. A disk operating system provides the basic functions of the computer.&lt;br /&gt;
&lt;br /&gt;
; AppIcon&lt;br /&gt;
: An icon created and used by an application.&lt;br /&gt;
&lt;br /&gt;
; application&lt;br /&gt;
: A program or collection of programs that perform a specific task, such as a word processor, database, or video title.&lt;br /&gt;
&lt;br /&gt;
; AppWindow&lt;br /&gt;
: An application window into which you can drag an icon to load the icon file into the application. The MultiView window and Amiga file requester are AppWindows.&lt;br /&gt;
&lt;br /&gt;
; archive&lt;br /&gt;
# (n) A backup copy of a file or files.&lt;br /&gt;
# (v) To copy files to disk or tape for backup purposes. &lt;br /&gt;
&lt;br /&gt;
; argument&lt;br /&gt;
: An additional piece of information, such as a file name, value, or option, included along with a command. This information determines the exact actions of the command.&lt;br /&gt;
&lt;br /&gt;
; argument passing&lt;br /&gt;
: Specifying parameters on the command line for a program or command to follow.&lt;br /&gt;
&lt;br /&gt;
; ASCII (American Standard Code for Information Interchange)&lt;br /&gt;
: A standardized format for text that assigns code numbers to characters, allowing the exchange of information between different types of computers.&lt;br /&gt;
&lt;br /&gt;
; aspect ratio&lt;br /&gt;
: The proportion of an image&#039;s height to its width.&lt;br /&gt;
&lt;br /&gt;
; assign&lt;br /&gt;
: To link a logical device name to a directory name with the ASSIGN command. This lets programs that use that directory use a single device name in all cases. For example, the device name T: is commonly assigned to the directory name RAM:T.&lt;br /&gt;
&lt;br /&gt;
; attributes&lt;br /&gt;
: A series of flags stored with every file. Attributes indicate file type and control the operations (read, write, delete, and so forth) permissible on the file. Also called protection bits.&lt;br /&gt;
&lt;br /&gt;
; autoscroll&lt;br /&gt;
: To automatically move a screen when the pointer reaches the edges of the viewable area.&lt;br /&gt;
&lt;br /&gt;
; backdrop&lt;br /&gt;
: A special type of window that has no borders, is as large as the screen, and is always behind all other windows on the screen.&lt;br /&gt;
&lt;br /&gt;
; backup&lt;br /&gt;
: A copy of a file on disk or tape used to replace lost data.&lt;br /&gt;
&lt;br /&gt;
; back up&lt;br /&gt;
: To make a backup copy.&lt;br /&gt;
&lt;br /&gt;
; baud rate&lt;br /&gt;
: The speed at which a device receives or transmits information in serial communication. Roughly equivalent to bits per second.&lt;br /&gt;
&lt;br /&gt;
; binary&lt;br /&gt;
: The base-2 number system that uses only the digits 0 and 1.&lt;br /&gt;
&lt;br /&gt;
; bit&lt;br /&gt;
: A single binary digit (1 or 0).&lt;br /&gt;
&lt;br /&gt;
; bitplane&lt;br /&gt;
: An area of RAM that holds screen graphics data. Each bit in a bitplane controls one screen pixel. The number of bitplanes for a screen controls the maximum number of simultaneous colors possible for that screen.&lt;br /&gt;
&lt;br /&gt;
; block&lt;br /&gt;
# A contiguous series of bytes (usually 512) treated as a single logical unit in RAM or permanent storage media.&lt;br /&gt;
# A user-marked area of a text file. &lt;br /&gt;
&lt;br /&gt;
; boot&lt;br /&gt;
: To start the system by reading the information needed from a storage device, such as a floppy or hard disk, into the computer&#039;s memory. Also refers to items used in this process: the boot disk. (See reboot.)&lt;br /&gt;
&lt;br /&gt;
; bootable&lt;br /&gt;
: Refers to a device from which the Amiga can boot. A bootable disk must contain all the system files needed for the computer to start operation.&lt;br /&gt;
&lt;br /&gt;
; Bridgeboard&lt;br /&gt;
: An expansion board from Commodore that allows hardware emulation of PC-compatible computers.&lt;br /&gt;
&lt;br /&gt;
; brush&lt;br /&gt;
: An IFF graphics file, usually a section cut from a full-sized picture.&lt;br /&gt;
&lt;br /&gt;
; buffer&lt;br /&gt;
: A temporary storage area in RAM.&lt;br /&gt;
&lt;br /&gt;
; bug&lt;br /&gt;
: An error in software or hardware.&lt;br /&gt;
&lt;br /&gt;
; busy pointer&lt;br /&gt;
: An image of a stopwatch that appears in place of the normal pointer when the Workbench is busy and cannot accept further input. Also called the wait pointer.&lt;br /&gt;
&lt;br /&gt;
; byte&lt;br /&gt;
: A unit of memory consisting of eight bits, usually equivalent to one character.&lt;br /&gt;
&lt;br /&gt;
; cache memory&lt;br /&gt;
: A temporary area in memory with extremely fast access that improves the system performance.&lt;br /&gt;
&lt;br /&gt;
; catalog&lt;br /&gt;
: The files that contain the system texts and messages translated to a different language.&lt;br /&gt;
&lt;br /&gt;
; CD-ROM&lt;br /&gt;
: A read only storage media. Stores upward of 550 MB on a disk similar to an audio compact disc.&lt;br /&gt;
&lt;br /&gt;
; check box&lt;br /&gt;
: A gadget that lets you turn an option on or off. When a check mark appears in the box, the option is selected, or on.&lt;br /&gt;
&lt;br /&gt;
; chip&lt;br /&gt;
: A miniaturized electronic circuit, housed in a small, black, rectangular block edged by metal connector pins. A computer is made up of a variety of specialized chips.&lt;br /&gt;
&lt;br /&gt;
; Chip RAM&lt;br /&gt;
: The area of RAM accessible to the Amiga&#039;s custom chip set. This memory is used for graphics and sound data. Also called graphics memory.&lt;br /&gt;
&lt;br /&gt;
; clear&lt;br /&gt;
# To change a bit or flag to its 0, off, or disabled state. Opposite of set.&lt;br /&gt;
# To erase a screen or window display. &lt;br /&gt;
&lt;br /&gt;
; CLI (Command Line Interface)&lt;br /&gt;
: A means of communicating with a computer by issuing commands from the keyboard. The Shell is the Amiga&#039;s CLI.&lt;br /&gt;
&lt;br /&gt;
; click&lt;br /&gt;
: To press and release a mouse button. Refers to the selection (left) mouse button unless otherwise specified.&lt;br /&gt;
&lt;br /&gt;
; Clipboard&lt;br /&gt;
: An area in memory that is used to store text and graphics while they are being transferred between programs.&lt;br /&gt;
&lt;br /&gt;
; close&lt;br /&gt;
: To remove a window from the screen, to end a program, or to finish the access to a data file.&lt;br /&gt;
&lt;br /&gt;
; close gadget&lt;br /&gt;
: A gadget that can appear in the upper left corner of a window to allow you to close the window.&lt;br /&gt;
&lt;br /&gt;
; cold boot&lt;br /&gt;
: To boot the Amiga from a powered off state.&lt;br /&gt;
&lt;br /&gt;
; color correction&lt;br /&gt;
: A printing option, selected through the PrinterGfx editor, that tries to better match the colors of a printout to the colors on the screen.&lt;br /&gt;
&lt;br /&gt;
; command&lt;br /&gt;
: A statement given to the Amiga to perform a task or achieve a result.&lt;br /&gt;
&lt;br /&gt;
; command history&lt;br /&gt;
: A feature of the Shell that allows you to recall previously entered command lines by using the cursor keys.&lt;br /&gt;
&lt;br /&gt;
; command line&lt;br /&gt;
: The line on which commands and their arguments are typed. Also, all the information that has been typed on the line.&lt;br /&gt;
&lt;br /&gt;
; console window&lt;br /&gt;
: A window used for the input and output of text, such as a Shell window.&lt;br /&gt;
&lt;br /&gt;
; Control-key combination&lt;br /&gt;
: A key combination that performs a special function, entered by holding down Ctrl while pressing another key on the keyboard. Some Control-key combinations are executed as soon as they are pressed, such as when Ctrl+C is used to abort the execution of an AmigaDOS command. Some produce a reversed character image and have no immediate effect.&lt;br /&gt;
&lt;br /&gt;
; coprocessor&lt;br /&gt;
: A separate processor chip that assists the CPU by performing specific tasks, such as mathematical computations or rapid data transfer.&lt;br /&gt;
&lt;br /&gt;
; copy and paste&lt;br /&gt;
: The act of copying a block of text or graphics and inserting it at a new location.&lt;br /&gt;
&lt;br /&gt;
; CPU (Central Processing Unit)&lt;br /&gt;
: The &amp;quot;brain&amp;quot; of a computer; the integrated circuit chip primarily responsible for executing the instructions in a program.&lt;br /&gt;
&lt;br /&gt;
; current directory&lt;br /&gt;
: The current location in the directory structure. The directory AmigaDOS uses as the default directory to operate within, if no other directory is specified.&lt;br /&gt;
&lt;br /&gt;
; current window&lt;br /&gt;
: The highlighted window that accepts input from the keyboard. A Shell window is current when it is opened.&lt;br /&gt;
&lt;br /&gt;
; cursor&lt;br /&gt;
: A highlighted rectangle or vertical bar on the screen used to indicate text position.&lt;br /&gt;
&lt;br /&gt;
; cycle gadget&lt;br /&gt;
: A gadget for selecting one of several options. One option is displayed at a time and as the gadget is selected, the other options become visible. The displayed option is the selected option.&lt;br /&gt;
&lt;br /&gt;
; cylinder&lt;br /&gt;
: A logical division of a magnetic storage disk. Amiga 3.5 inch floppy disks are divided into 80 cylinders during the formatting process.&lt;br /&gt;
&lt;br /&gt;
; data&lt;br /&gt;
: A collection of information.&lt;br /&gt;
&lt;br /&gt;
; dead key&lt;br /&gt;
: A key, or key combination, that modifies the output of the next key to be pressed. For example, on an American keyboard. Alt+H superimposes a caret (^) symbol over the next key to be pressed. Alt+H is a dead key combination.&lt;br /&gt;
&lt;br /&gt;
; debug&lt;br /&gt;
: To find and fix mistakes in software or hardware.&lt;br /&gt;
&lt;br /&gt;
; default&lt;br /&gt;
: A value or action assumed if you have not specified something else.&lt;br /&gt;
&lt;br /&gt;
; Default Tool&lt;br /&gt;
: A tool specified in a project icon&#039;s Information window. When the project icon is opened, the Default Tool is automatically loaded and run.&lt;br /&gt;
&lt;br /&gt;
; delete&lt;br /&gt;
: To erase or discard a file, buffer, or other stored item.&lt;br /&gt;
&lt;br /&gt;
; delimiter&lt;br /&gt;
: A special character marking the beginning and end of a string.&lt;br /&gt;
&lt;br /&gt;
; density&lt;br /&gt;
: The number of printer dots per inch. Many printers support several print densities. Usually, the higher the density, the darker and sharper the printout.&lt;br /&gt;
&lt;br /&gt;
; depth gadget&lt;br /&gt;
: A gadget that may appear in the upper right corner of a window or screen for moving that window or screen in front of or behind other windows or screens. This is sometimes referred to as depth arranging.&lt;br /&gt;
&lt;br /&gt;
; destination&lt;br /&gt;
: The device, directory, or file that is receiving information.&lt;br /&gt;
&lt;br /&gt;
; device&lt;br /&gt;
: A physical mechanism, such as a printer or disk drive, or a software entity (logical device), such as CON: or NIL:, used as a source or destination for information.&lt;br /&gt;
&lt;br /&gt;
; device name&lt;br /&gt;
: A short name, such as DF0:, PC1:, or PRT:, that identifies a particular hardware or software device. Device names must end in a colon (:).&lt;br /&gt;
&lt;br /&gt;
; directory&lt;br /&gt;
: A subdivision in a computer&#039;s filing system used to organize files and other directories (subdirectories). Directories are represented on the Workbench by drawer icons.&lt;br /&gt;
&lt;br /&gt;
; disk&lt;br /&gt;
: A medium for mass storage of computer data. Most computer disks store information magnetically; optical (laser-read) disks are also used.&lt;br /&gt;
&lt;br /&gt;
; disk drive&lt;br /&gt;
: A storage device that reads and writes data from and to a storage disk such as a floppy disk.&lt;br /&gt;
&lt;br /&gt;
; disk operating system (DOS)&lt;br /&gt;
: The software that controls the basic input and storage functions of a computer.&lt;br /&gt;
&lt;br /&gt;
; display box&lt;br /&gt;
: A rectangular box, usually under a scroll gadget or next to a selection gadget, that displays the current selection. You cannot edit a display box.&lt;br /&gt;
&lt;br /&gt;
; display mode&lt;br /&gt;
: A name given to the set of parameters, such as resolution and scan frequency, that define a screen. For example, a High Res display mode is 640 pixels wide and 200 pixels high (for NTSC Amigas).&lt;br /&gt;
&lt;br /&gt;
; dithering&lt;br /&gt;
# Creating smoother color or grey scale shading of screen or printed displays by altering pixel color or density. The PrinterGfx and PrinterPS Preferences editors provides several settings for automatic dithering of printed graphics.&lt;br /&gt;
# Creating the illusion of a color by using a pattern of other colors. For example, creating the illusion of purple by alternating pixels of red and blue. &lt;br /&gt;
&lt;br /&gt;
; double-click&lt;br /&gt;
: To quickly press and release the selection button twice.&lt;br /&gt;
&lt;br /&gt;
; drag&lt;br /&gt;
: To move an icon, window, gadget, or screen across the display by pointing to the object, holding down the selection button, and moving the mouse.&lt;br /&gt;
&lt;br /&gt;
; drag selection&lt;br /&gt;
: The process of selecting several icons at once by holding down the selection button and using the mouse to draw a box around the icons you want to select. When you release the mouse button, all the icons in the box are selected.&lt;br /&gt;
&lt;br /&gt;
; drawer&lt;br /&gt;
: A subdivision of a disk storage area. A drawer corresponds to an AmigaDOS directory.&lt;br /&gt;
&lt;br /&gt;
; drive name&lt;br /&gt;
: The device name assigned to a disk drive, such as DF0: or DH1:.&lt;br /&gt;
&lt;br /&gt;
; dump&lt;br /&gt;
: A printout of the image displayed on the screen.&lt;br /&gt;
&lt;br /&gt;
; ECS (Enhanced Chip Set)&lt;br /&gt;
: The upgraded versions of the Amiga&#039;s Agnus and Denise coprocessor chips. The Enhanced Chip Set offers additional display modes (ECS modes) and expands previous graphics capabilities. Many of the benefits of the ECS are available only in conjunction with Release 2 or higher of the operating system.&lt;br /&gt;
&lt;br /&gt;
; editor&lt;br /&gt;
: A program that lets you create and/or modify certain types of files. The Amiga provides Preferences editors to change Prefs settings and the text editors, MEmacs and ED, for changing text files.&lt;br /&gt;
&lt;br /&gt;
; escape sequence&lt;br /&gt;
: A sequence of characters, beginning with the Escape character, that performs a special function when entered on a command line or printed as part of a string. Escape sequences are typically used to alter the style of type used by a printer or in a console window.&lt;br /&gt;
&lt;br /&gt;
; execute&lt;br /&gt;
: To carry out the instructions in a command line, program, or script.&lt;br /&gt;
&lt;br /&gt;
; extended selection&lt;br /&gt;
: The process of selecting several icons at once by holding down Shift while selecting each icon with the mouse.&lt;br /&gt;
&lt;br /&gt;
; extension&lt;br /&gt;
: A sequence of characters beginning with a period, such as .info, added to the end of a filename to identify the type of file.&lt;br /&gt;
&lt;br /&gt;
; Extra Halfbrite&lt;br /&gt;
: A special graphics mode that doubles the number of colors on the screen by duplicating existing colors at half their brightness.&lt;br /&gt;
&lt;br /&gt;
; Fast RAM&lt;br /&gt;
: General memory used by programs and data. As the name implies, normally faster than Chip RAM.&lt;br /&gt;
&lt;br /&gt;
; field&lt;br /&gt;
: The screen area behind the text of a Workbench icon label. The color of the field can be changed with the Font editor.&lt;br /&gt;
&lt;br /&gt;
; file&lt;br /&gt;
: An organized collection of data referred to by a name and stored on some type of media.&lt;br /&gt;
&lt;br /&gt;
; file system&lt;br /&gt;
: The organization and software that controls the data, files, and directories stored on a volume. The primary types of Amiga file systems are FFS (FastFileSystem) and OFS (OldFileSystem).&lt;br /&gt;
&lt;br /&gt;
; floppy disk&lt;br /&gt;
: A removable magnetic storage medium. The Amiga uses 3.5 inch, double-sided, floppy disk in a rigid plastic case.&lt;br /&gt;
&lt;br /&gt;
; font&lt;br /&gt;
: Also called typeface. A particular design of a set of letters, symbols, and numbers used for text display, such as Topaz and Helvetica. Fonts are usually available in several sizes, defined in points (10 point, 12 point, and so on).&lt;br /&gt;
&lt;br /&gt;
; format&lt;br /&gt;
# To prepare a disk for use with the Amiga. Formatting a disk erases all previously stored data.&lt;br /&gt;
# A way of describing the proper syntax for AmigaDOS commands. &lt;br /&gt;
&lt;br /&gt;
; fragmentation&lt;br /&gt;
: A scattered distribution of data on a disk or in memory. Disk fragmentation results in slower disk performance; memory fragmentation can prevent some programs from running properly.&lt;br /&gt;
&lt;br /&gt;
; function keys&lt;br /&gt;
: Keys at the top of the Amiga keyboard, labeled F1 to F10, that can be programmed to perform special tasks.&lt;br /&gt;
&lt;br /&gt;
; gadget&lt;br /&gt;
: Any of various programmed graphic images that may appear in a window, requester, or screen and can be manipulated with the mouse to perform a certain function. Each gadget is of a specific type and performs a specific action. Most gadgets appear raised and when selected, appear to sink into the screen.&lt;br /&gt;
&lt;br /&gt;
; genlock&lt;br /&gt;
: A piece of hardware that allows Amiga graphics to be overlaid onto another video source, for example, from a camera or VCR. A genlock is typically used for applying titles or captions to video media.&lt;br /&gt;
&lt;br /&gt;
; ghosting&lt;br /&gt;
: Displaying menu or gadget items on the screen less distinctly than normal to indicate that they are currently unavailable.&lt;br /&gt;
&lt;br /&gt;
; graphics memory&lt;br /&gt;
: See Chip RAM.&lt;br /&gt;
&lt;br /&gt;
; GUI (Graphical User Interface)&lt;br /&gt;
: A visually-oriented system allowing you to tell a computer what to do by manipulating graphic symbols rather than by typing in commands. The Workbench is the Amiga GUI.&lt;br /&gt;
&lt;br /&gt;
; HAM (Hold And Modify)&lt;br /&gt;
: An Amiga graphics mode that allows the full Amiga color palette to be displayed on the screen.&lt;br /&gt;
&lt;br /&gt;
; handshaking&lt;br /&gt;
: The electronic protocol required for serial communication between two computing devices.&lt;br /&gt;
&lt;br /&gt;
; hard disk&lt;br /&gt;
: A high-speed, large-capacity mass-storage device from which the disks usually cannot be removed. Often called a hard drive or hard disk drive.&lt;br /&gt;
&lt;br /&gt;
; hierarchical&lt;br /&gt;
: A term used to describe the multi-leveled AmigaDOS file structure in which directories can contain other directories and/or files.&lt;br /&gt;
&lt;br /&gt;
; history buffer&lt;br /&gt;
: A section of memory that stores the most recent commands for a given Shell.&lt;br /&gt;
&lt;br /&gt;
; hold down&lt;br /&gt;
: To continually press a mouse button until instructed to release it.&lt;br /&gt;
&lt;br /&gt;
; hot key&lt;br /&gt;
: A key or key combination used by Commodity Exchange programs to open a hidden window.&lt;br /&gt;
&lt;br /&gt;
; hot spot&lt;br /&gt;
: The pixel in a pointer, normally the tip of an arrow or the center of a crosshair, that must be touching an object on the screen to select it.&lt;br /&gt;
&lt;br /&gt;
; icon&lt;br /&gt;
: An image appearing on the screen to represent a disk, drawer, project or tool. Icons can be moved and selected with the mouse to allow you to work with the items they represent.&lt;br /&gt;
&lt;br /&gt;
; IFF (Interchange File Format)&lt;br /&gt;
: The standardized format in which the Amiga stores picture, sound, and other types of data.&lt;br /&gt;
&lt;br /&gt;
; .info file&lt;br /&gt;
: A file containing the image and position data for an icon (referred to as &amp;quot;dot-info&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
; initialize&lt;br /&gt;
: A synonym for format.&lt;br /&gt;
&lt;br /&gt;
; input buffer&lt;br /&gt;
: An area of memory used during serial communication to hold incoming information.&lt;br /&gt;
&lt;br /&gt;
; interlace&lt;br /&gt;
: A property of some Amiga display modes that doubles the vertical screen resolution.&lt;br /&gt;
&lt;br /&gt;
; Internal&lt;br /&gt;
: Refers to an AmigaDOS command that is built into the Shell, rather than loaded from disk.&lt;br /&gt;
&lt;br /&gt;
; KB (Kilobyte)&lt;br /&gt;
: 1024 bytes. Often abbreviated as K.&lt;br /&gt;
&lt;br /&gt;
; keyboard shortcut&lt;br /&gt;
: A method for performing a mouse action by pressing a key or key combination.&lt;br /&gt;
&lt;br /&gt;
; keymap&lt;br /&gt;
: A file that determines the arrangement of characters on the keyboard and determines the meaning of each key. Different languages have different keymaps.&lt;br /&gt;
&lt;br /&gt;
; keyword&lt;br /&gt;
: A word recognized by an AmigaDOS command or a Tool Type entry as ientifying an argument or specifying an option.&lt;br /&gt;
&lt;br /&gt;
; Kickstart&lt;br /&gt;
: Refers to the portion of the Amiga operating system that is in ROM.&lt;br /&gt;
&lt;br /&gt;
; library&lt;br /&gt;
: An integrated set of functions and data that can be used by different programs. Libraries can be found in ROM and in the LIBS: drawer.&lt;br /&gt;
&lt;br /&gt;
; macro&lt;br /&gt;
: A single command that represents a sequence of commands. Many editors and applications support the use of macros to facilitate commonly used command sequences. ARexx programs are often called macros.&lt;br /&gt;
&lt;br /&gt;
; MB (Megabyte)&lt;br /&gt;
: 1024KB (1,048,576 bytes). Often abbreviated as M or Meg.&lt;br /&gt;
&lt;br /&gt;
; memory&lt;br /&gt;
: The Amiga&#039;s internal storage circuitry that holds programs and data. The Amiga has Chip (graphics) memory. Fast (normal) memory, and ROM (Read Only Memory). The amount of RAM (Random Access Memory) limits the size and number of programs that can be operating within the Amiga at one time.&lt;br /&gt;
&lt;br /&gt;
; menu&lt;br /&gt;
: A list of on-screen options, displayed by using the menu button, from which you can choose commands that control a program.&lt;br /&gt;
&lt;br /&gt;
; menu bar&lt;br /&gt;
: The list of headings that appears across the top of the screen when the menu button is held down.&lt;br /&gt;
&lt;br /&gt;
; menu button&lt;br /&gt;
: The right mouse button.&lt;br /&gt;
&lt;br /&gt;
; menu item&lt;br /&gt;
: An option that appears in a menu. For example, New Drawer is the first menu item in the Workbench&#039;s window menu.&lt;br /&gt;
&lt;br /&gt;
; modem&lt;br /&gt;
: A device allowing serial communication over telephone lines.&lt;br /&gt;
&lt;br /&gt;
; monitor&lt;br /&gt;
: A video display terminal on which a computer&#039;s visual output is shown. There are many types of monitors; the Amiga&#039;s standard output uses an analog RGB color monitor to display both graphics and text.&lt;br /&gt;
&lt;br /&gt;
; mouse&lt;br /&gt;
: The device used to move the pointer on the screen and to communicate with the Amiga. Ist buttons can be used for displaying menus, and for selecting and dragging icons, windows and screens.&lt;br /&gt;
&lt;br /&gt;
; multiscan&lt;br /&gt;
: A type of video monitor than can accept several different scan rates (types of video output).&lt;br /&gt;
&lt;br /&gt;
; multitasking&lt;br /&gt;
: The ability to Perform more than one operation, or task, at a time. The Amiga&#039;s multiasking operating system can have several independent programs running at once. For instance, you could simultaneously be displaying an animation, playing a sound file, communicating with another computer, and formatting a floppy disk.&lt;br /&gt;
&lt;br /&gt;
; nonproportional font&lt;br /&gt;
: A font, such as Topaz, in which each character takes up an equal amount of space. For example, an uppercase W is allotted the same amount of space as a lowercase 1. Also calls a monospaced font.&lt;br /&gt;
&lt;br /&gt;
; offset&lt;br /&gt;
: To shift or move over.&lt;br /&gt;
&lt;br /&gt;
; open&lt;br /&gt;
: To make the selected object available for use. Open an icon by double-clicking on it or by selecting it then choosing the Open menu item from the Icons menu. When you open a disk or drawer icon, a window appears, displaying its contents. When you open a project or tool icon, a program is started.&lt;br /&gt;
&lt;br /&gt;
; operating system (OS)&lt;br /&gt;
: Software, in ROM or supplied on floppy or hard disk, that controls the basic functions of a computer.&lt;br /&gt;
&lt;br /&gt;
; overscan area&lt;br /&gt;
: The normally unused area surrounding a standard-size screen. The Overscan editor allows you to expand your screen to fill this area.&lt;br /&gt;
&lt;br /&gt;
; overwrite&lt;br /&gt;
: To write information to memory, a file, or disk, replacing any information that previously was stored there.&lt;br /&gt;
&lt;br /&gt;
; parallel&lt;br /&gt;
: An interface port that transfers data one complete byte (8 bits) at a time, contrasted to a serial interface that sends a single bit at a time. The Amiga has an external parallel port to which a printer can be connected.&lt;br /&gt;
&lt;br /&gt;
; parent&lt;br /&gt;
: The window from which another window was generated. The directory that contains the current directory a drawer.&lt;br /&gt;
&lt;br /&gt;
; parity&lt;br /&gt;
: A method of detecting errors in serial communication by attaching an extra bit to bytes of data.&lt;br /&gt;
&lt;br /&gt;
; partition&lt;br /&gt;
: A section of the hard disk that the system treats as if it were a separate drive.&lt;br /&gt;
&lt;br /&gt;
; path&lt;br /&gt;
: The series of volume and drawer names that define the location of a file.&lt;br /&gt;
&lt;br /&gt;
; pattern matching&lt;br /&gt;
: An AmigaDOS feature that lets you specify file and directory names by using wildcard characters. With wildcards, you can create search patterns that allow you to refer to a number of files whose names share a common text pattern without naming each file individually.&lt;br /&gt;
&lt;br /&gt;
; peripheral&lt;br /&gt;
: An external hardware device connected to the Amiga.&lt;br /&gt;
&lt;br /&gt;
; pitch&lt;br /&gt;
: The number of characters printed in a horizontal inch.&lt;br /&gt;
&lt;br /&gt;
; pixel&lt;br /&gt;
: The dots of light that make up the Amiga screen display. A pixel is the smallest unit of display information on a given screen. Derived from &amp;quot;Picture Element&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; point&lt;br /&gt;
: (v) To place the mouse pointer so that its hot spot is touching the object pointed to.: (n) The unit of measurement of vertical font size. Traditionally this is 1/72 of an inch; on the Amiga it means one screen pixel. &lt;br /&gt;
&lt;br /&gt;
; pointer&lt;br /&gt;
: An image on the screen, usually arrow-shaped, that moves as you move the mouse. Use the pointer to select icons and gadgets and to choose menu items.&lt;br /&gt;
&lt;br /&gt;
; PostScript printer&lt;br /&gt;
: A high-resolution printer that can accept text and graphics information in the PostScript page description language.&lt;br /&gt;
&lt;br /&gt;
; Preferences (Prefs)&lt;br /&gt;
: A Workbench drawer containing editors that let you configure and customize your Amiga environment, such as changing the colors of your screen and setting the specifications for communication through the serial port.&lt;br /&gt;
&lt;br /&gt;
; printer driver&lt;br /&gt;
: A program that enables the Amiga to communicate with a given printer. A printer driver works as a translator between a computer and a printer, taking the information in a standardized form (ASCII characters and ANSI escape sequences) from the computer and presenting it to the printer in a format that the printer can understand.&lt;br /&gt;
&lt;br /&gt;
; program&lt;br /&gt;
: A series of instructions that tell the Amiga how to perform certain tasks. Applications and system software are programs.&lt;br /&gt;
&lt;br /&gt;
; project&lt;br /&gt;
: A file in which information crated or used by a tool is stored. For example, files created with a text editor or paint program are projects.&lt;br /&gt;
&lt;br /&gt;
; prompt&lt;br /&gt;
: A message or symbol that indicates that text input to the computer is expected.&lt;br /&gt;
&lt;br /&gt;
; protection bits&lt;br /&gt;
: (See attributes.)&lt;br /&gt;
&lt;br /&gt;
; pseudo-icon&lt;br /&gt;
: An icon that is displayed for an object that does not have a .info file when the Show All Files menu item is chosen.&lt;br /&gt;
&lt;br /&gt;
; pure&lt;br /&gt;
: Describes a command or program that can be made resident. If a file is pure, the p attribute is set.&lt;br /&gt;
&lt;br /&gt;
; qualifier&lt;br /&gt;
: A key, such as Shift, Ctrl, or Alt, that change the Amiga&#039;s interpretation of a simultaneous or subsequent keystroke or mouse click. Commonly used with Commodity Exchange programs.&lt;br /&gt;
&lt;br /&gt;
; radio button&lt;br /&gt;
: A circular gadget beside an option on a list. To select an option, select its radio button. You can only option from the list at a time.&lt;br /&gt;
&lt;br /&gt;
; RAM (Random Access Memory)&lt;br /&gt;
: Part of the Amiga&#039;s internal memory that can be used for data storage and is directly accessible by the CPU. Applications are loaded into RAM from disk and use additional RAM to process and store data while the computer is on. Data in RAM is lost when the Amiga is rebooted or powered off.&lt;br /&gt;
&lt;br /&gt;
; Ram Disk&lt;br /&gt;
: A section of RAM set aside to function as if it were a disk drive. This is much faster than a physical drive, since there are no mechanical elements.&lt;br /&gt;
&lt;br /&gt;
; read&lt;br /&gt;
: To retrieve stored information.&lt;br /&gt;
&lt;br /&gt;
; Read Only&lt;br /&gt;
: If disk status is Read Only, you can only look at the contents of the disk, you cannot alter them.&lt;br /&gt;
&lt;br /&gt;
; Read/Write&lt;br /&gt;
: If disk status is Read/Write, you can both look at and alter the contents of the disk.&lt;br /&gt;
&lt;br /&gt;
; reboot&lt;br /&gt;
: To reset the Amiga by pressing Ctrl, left Amiga, and right Amiga. This is roughly equivalent to turning the power off, then on again. Memory is reset. Also called warm boot.&lt;br /&gt;
&lt;br /&gt;
; redirect&lt;br /&gt;
: To change the source or destination of a command&#039;s input or output from the default by using the special characters &amp;lt; or &amp;gt;.&lt;br /&gt;
&lt;br /&gt;
; requester&lt;br /&gt;
: A window that appears when the system needs a response from you. A requester contains action gadgets that give you a choice of continuing or aborting the operation in progress. To exit the requester, you must select one of the displayed gadgets.&lt;br /&gt;
&lt;br /&gt;
; resident&lt;br /&gt;
: Describes a command or program that has been copied into memory, with the RESIDENT command, for quicker execution. Resident commands are specially set up to prevent reloading on subsequent executions. Only pure files can be made resident.&lt;br /&gt;
&lt;br /&gt;
; resolution&lt;br /&gt;
: The dimensions, in pixels, associated with a particular display mode. For example, a normal NTSC High Res screen has a resolution of 640 (horizontal) by 200 (vertical) pixels.&lt;br /&gt;
&lt;br /&gt;
; RGB (Red-Green-Blue)&lt;br /&gt;
: A type of video signal in which the three primary color signals are sent separately. Standard Amiga output uses an RGB monitor.&lt;br /&gt;
&lt;br /&gt;
; ROM (Read Only Memory)&lt;br /&gt;
: Permanent memory that is pre-programmed with system instructions and does not change. The contents of ROM are not affected by user commands or program operation.&lt;br /&gt;
&lt;br /&gt;
; root block&lt;br /&gt;
: The area of a disk that contains the name of the disk and information pertaining to the disk layout. If the root block is erased, you cannot retrieve any information from the disk -- it is effectively blank.&lt;br /&gt;
&lt;br /&gt;
; root directory&lt;br /&gt;
: The main directory on a volume. The root directory is at the top of the filing hierarchy and is created when a volume is formatted. All other directories on the volume exist within the root. The root directory is specified by the volume name followed by a colon.&lt;br /&gt;
&lt;br /&gt;
; scaling&lt;br /&gt;
: Changing the size of an image or font for printing or display. Usually, a screen image is scaled down to a smaller size for printing, but you can also enlarge, or scale up, an image.&lt;br /&gt;
&lt;br /&gt;
; screen&lt;br /&gt;
: An area of the display that has certain graphical attributes, such as resolution and colors. Screens are always at least the full width of the viewable area. The Amiga can have several screens with different attributes open and visible at once.&lt;br /&gt;
&lt;br /&gt;
; script&lt;br /&gt;
: A text file containing a series of commands that can be automatically executed to perform a complex or repetitive task. An example of a script is the Startup-sequence file executed when you boot your Amiga.&lt;br /&gt;
&lt;br /&gt;
; scroll&lt;br /&gt;
: To move through the viewing area of a window or list.&lt;br /&gt;
&lt;br /&gt;
; scroll arrows&lt;br /&gt;
: Gadgets that may appear in a window to allow you to move the viewing area continuously.&lt;br /&gt;
&lt;br /&gt;
; scroll bar&lt;br /&gt;
: The highlighted area within the scroll boy that can be dragged to display the hidden contents of a window. It changes in size to indicate the portion of the window that is currently visible.&lt;br /&gt;
&lt;br /&gt;
; scroll box&lt;br /&gt;
: The shaded area within which the scroll bar can be dragged. You can click in the scroll box to move the scroll bar.&lt;br /&gt;
&lt;br /&gt;
; scroll gadget&lt;br /&gt;
: A gadget that can appear in a window to let you move through a list of options or through the viewing area of a window. A scroll gadget is made up of the scroll bar, scroll box, and scroll arrows.&lt;br /&gt;
&lt;br /&gt;
; scrolling list&lt;br /&gt;
: The options that appear inside a scroll gadget. If the list is too long to be displayed in the scroll gadget, you can use the scroll bar or scroll arrows to move (scroll) through the list.&lt;br /&gt;
&lt;br /&gt;
; search path&lt;br /&gt;
: The list of directories that AmigaDOS uses when it is looking for a command. Directories are added or removed from the search path with the PATH command.&lt;br /&gt;
&lt;br /&gt;
; select&lt;br /&gt;
: To choose an item to work with by pointing to it with the mouse, then clicking the selection button.&lt;br /&gt;
&lt;br /&gt;
; selection button&lt;br /&gt;
: The left mouse button.&lt;br /&gt;
&lt;br /&gt;
; selection gadget&lt;br /&gt;
: A gadget from which you can choose one of several displayed options, often used for colors.&lt;br /&gt;
&lt;br /&gt;
; serial&lt;br /&gt;
: An interface port that transfers data a single bit at a time, contrasted to a parallel interface which sends one complete byte (eight bits) at a time. The Amiga has an external serial port to which a modem, MIDI interface, or printer is often connected.&lt;br /&gt;
&lt;br /&gt;
; set&lt;br /&gt;
: To change a bit or flag to its on or enabled state. Opposite of clear.&lt;br /&gt;
&lt;br /&gt;
; Shell&lt;br /&gt;
: The command line interface used to send typed commands to the Amiga. The Shell is a console window that supports many special features, such as command-line history, aliases, and copy and paste operations.&lt;br /&gt;
&lt;br /&gt;
; sizing gadget&lt;br /&gt;
: A gadget that can appear in the lower right corner of a window to allow you to enlarge or shrink the size of the window.&lt;br /&gt;
&lt;br /&gt;
; slider gadget&lt;br /&gt;
: A gadget from which you can select a value by dragging a bar through the gadget. As you move the slider bar, different values are displayed.&lt;br /&gt;
&lt;br /&gt;
; slider value&lt;br /&gt;
: A number that appears next to a slider gadget to indicate the currently selected value.&lt;br /&gt;
&lt;br /&gt;
; smoothing&lt;br /&gt;
: A printing option available in the PrinterGfx editor that attempts to eliminate, or smooth, jagged lines that can sometimes appear in printouts.&lt;br /&gt;
&lt;br /&gt;
; snapshot&lt;br /&gt;
: To save the positions of a window and/or the icons within it.&lt;br /&gt;
&lt;br /&gt;
; source&lt;br /&gt;
: A device, drawer, or file that is supplying information. for example, when you copy a disk, the disk you are copying is the source disk.&lt;br /&gt;
&lt;br /&gt;
; stack&lt;br /&gt;
: A special area of RAM reserved by a program for temporary storage.&lt;br /&gt;
&lt;br /&gt;
; Startup-sequence&lt;br /&gt;
: An AmigaDOS script file, executed when the Amiga is booted, that helps set up the hardware and directory systems.&lt;br /&gt;
&lt;br /&gt;
; stop bits&lt;br /&gt;
: Extra bits added to signal the end of a character, used during serial communication.&lt;br /&gt;
&lt;br /&gt;
; string&lt;br /&gt;
: A piece of text treated as a single unit.&lt;br /&gt;
&lt;br /&gt;
; subdirectory&lt;br /&gt;
: A directory that is within another directory; equivalent to a drawer within a drawer.&lt;br /&gt;
&lt;br /&gt;
; submenu&lt;br /&gt;
: A secondary menu that appears when some menu items are highlighted. If a menu item has a submenu, a » symbol appears to the right of the menu item.&lt;br /&gt;
&lt;br /&gt;
; swap&lt;br /&gt;
: To alternately place different floppy disks into the same drive, as when performing a single-drive disk copy.&lt;br /&gt;
&lt;br /&gt;
; SYS:&lt;br /&gt;
: The name assigned to the volume that the Amiga searches for its system files and directories. Usually the volume booted from.&lt;br /&gt;
&lt;br /&gt;
; text gadget&lt;br /&gt;
: A rectangular box in which you can type information, such as a filename or command. Text gadgets are used by the Rename and Execute Command menu items, as well as many programs.&lt;br /&gt;
&lt;br /&gt;
; threshold&lt;br /&gt;
: A PrinterGfx value related to color intensity. It determines which colors are printed as black and which are printed as white during black-and-white printing.&lt;br /&gt;
&lt;br /&gt;
; timestamp&lt;br /&gt;
: The date and time associated with a file or directory. This is usually the date and time when the file or directory was created or last modified.&lt;br /&gt;
&lt;br /&gt;
; title bar&lt;br /&gt;
: The top border of a screen or window, which commonly displays the name of the screen or window.&lt;br /&gt;
&lt;br /&gt;
; toggle&lt;br /&gt;
: An option that can be switched between two states, such as on and off.&lt;br /&gt;
&lt;br /&gt;
; tool&lt;br /&gt;
: A program that creates or uses data, such as a text editor or paint program.&lt;br /&gt;
&lt;br /&gt;
; Tool Type&lt;br /&gt;
: An optional parameter that you can enter in an icon&#039;s Information window to control a program. For example, if you enter the SECONDS Tool Type in the Clock&#039;s Information window, the Clock displays the seconds when it is opened.  For a list of standard Tool Types and a basic explanation of how they work refer to the [[UI_Style_Guide_Workbench#Tool_Types_and_Default_Tool|Amiga User Interface Style Guide]].&lt;br /&gt;
&lt;br /&gt;
; Trashcan&lt;br /&gt;
: A directory for storing files that you want to delete.&lt;br /&gt;
&lt;br /&gt;
; type ahead&lt;br /&gt;
: A feature of the Shell that lets you enter commands as a previous command&#039;s output is being displayed.&lt;br /&gt;
&lt;br /&gt;
; User-startup&lt;br /&gt;
: A user-created file containing specific system settings that are red and executed during the system startup sequence.&lt;br /&gt;
&lt;br /&gt;
; volume&lt;br /&gt;
: A mounted storage unit, such as a floppy disk or hard disk partition.&lt;br /&gt;
&lt;br /&gt;
; volume name&lt;br /&gt;
: The name of a volume, as distinguished from its device name. Renaming a disk changes its volume name, not its device name.&lt;br /&gt;
&lt;br /&gt;
; wildcard&lt;br /&gt;
: A symbol used in pattern matching to represent a range of possible values, such as when specifying filenames that all start or end with the same character. The question mark (?), for example, is used as a wildcard to match any single character.&lt;br /&gt;
&lt;br /&gt;
; window&lt;br /&gt;
: A rectangular screen area that can accept or display information. A window has a title bar identifying it and may contain gadgets in its border.&lt;br /&gt;
&lt;br /&gt;
; Workbench&lt;br /&gt;
: The Amiga&#039;s icon-based, graphical user interface.&lt;br /&gt;
&lt;br /&gt;
; write&lt;br /&gt;
: To record data in memory or on a storage medium such as a floppy disk.&lt;br /&gt;
&lt;br /&gt;
; write-enable&lt;br /&gt;
: To allow information to be written onto a storage device. When a floppy disk is write-enabled or Read/Write, a small, plastic tab is covering the hole in the corner of the disk.&lt;br /&gt;
&lt;br /&gt;
; write-protect&lt;br /&gt;
: To prevent information from being written onto a storage device. Floppy disks have a plastic tab that can be moved to write-protect the entire disk, making it read-only. Also called write-inhibit.&lt;br /&gt;
&lt;br /&gt;
; zoom gadget&lt;br /&gt;
: A gadget that may appear in the upper right corner of a window to allow the window to alternate between two sizes.&lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=Icon_Library&amp;diff=8549</id>
		<title>Icon Library</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=Icon_Library&amp;diff=8549"/>
		<updated>2016-05-18T15:55:53Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: /* The Tool Types Array */ added actual link to the UI Style Guide list of standard tool types&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The Icon Library =&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;.info&#039;&#039; file is the center of interaction between applications and Workbench. To help support the Workbench iconic interface and manage &#039;&#039;.info&#039;&#039; files, the Amiga operating system provides the icon library. The icon library allows you to create icons for data files and directories under program control and examine icons to obtain their Tool Types and other characteristics.&lt;br /&gt;
&lt;br /&gt;
= Icon Library Data Structures =&lt;br /&gt;
&lt;br /&gt;
The preceding sections discussed how icons are used to pass file name arguments to an application run from the Workbench. Workbench allows other types of arguments to be passed in the Tool Types array of an icon. To examine the Tool Types array or find other characteristics of the icon such as its type, applications need to read in the &#039;&#039;.info&#039;&#039; file for the icon.&lt;br /&gt;
&lt;br /&gt;
== The DiskObject Structure ==&lt;br /&gt;
&lt;br /&gt;
The actual data present in the &#039;&#039;.info&#039;&#039; file is organized as a DiskObject structure which is defined in the include file &amp;amp;lt;workbench/workbench.h&amp;amp;gt;. For a complete listing, see the SDK. The DiskObject structure contains the following elements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
struct DiskObject&lt;br /&gt;
    {&lt;br /&gt;
    UWORD              do_Magic;       /* magic number at start of file */&lt;br /&gt;
    UWORD              do_Version;     /* so we can change structure    */&lt;br /&gt;
    struct Gadget      do_Gadget;      /* a copy of in core gadget      */&lt;br /&gt;
    UBYTE              do_Type;&lt;br /&gt;
    char              *do_DefaultTool;&lt;br /&gt;
    char             **do_ToolTypes;&lt;br /&gt;
    LONG               do_CurrentX;&lt;br /&gt;
    LONG               do_CurrentY;&lt;br /&gt;
    struct DrawerData *do_DrawerData;&lt;br /&gt;
    char              *do_ToolWindow;  /* only applies to tools */&lt;br /&gt;
    LONG               do_StackSize;   /* only applies to tools */&lt;br /&gt;
    };&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; do_Magic&lt;br /&gt;
: A magic number that the icon library looks for to make sure that the file it is reading really contains an icon. It should be the manifest constant WB_DISKMAGIC. PutDiskObject() will put this value in the structure, and GetDiskObject will not believe that a file is really an icon unless this value is correct.&lt;br /&gt;
&lt;br /&gt;
; do_Version&lt;br /&gt;
: This provides a way to enhance the .info file in an upwardly-compatible way. It should be WB_DISKVERSION. The icon library will set this value for you and will not believe weird values.&lt;br /&gt;
&lt;br /&gt;
; do_Gadget&lt;br /&gt;
: This contains all the imagery for the icon. See the &amp;quot;Gadget Structure&amp;quot; section below for more details.&lt;br /&gt;
&lt;br /&gt;
; do_Type&lt;br /&gt;
: The type of the icon; can be set to any of the following values.&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| WBDISK || The root of a disk&lt;br /&gt;
|-&lt;br /&gt;
| WBDRAWER || A directory on the disk&lt;br /&gt;
|-&lt;br /&gt;
| WBTOOL || An executable program&lt;br /&gt;
|-&lt;br /&gt;
| WBPROJECT || A data file&lt;br /&gt;
|-&lt;br /&gt;
| WBGARBAGE || The Trashcan directory&lt;br /&gt;
|-&lt;br /&gt;
| WBKICK || A Kickstart disk&lt;br /&gt;
|-&lt;br /&gt;
| WBAPPICON || Any object not directly associated with a filing system object, such as a print spooler.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
; do_DefaultTool&lt;br /&gt;
: Default tools are used for project and disk icons. For projects (data files), the default tool is the program Workbench runs when the project is activated. Any valid AmigaDOS path may be entered in this field such as &amp;quot;SYS:myprogram&amp;quot;, &amp;quot;df0:mypaint&amp;quot;, &amp;quot;myeditor&amp;quot; or &amp;quot;:work/mytool&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
: For disk icons, the default tool is the diskcopy program (&amp;quot;SYS:System/DiskCopy&amp;quot;) that will be used when &#039;&#039;this disk is the source&#039;&#039; of a copy.&lt;br /&gt;
&lt;br /&gt;
; do_ToolTypes&lt;br /&gt;
: This is an array of free-format strings. Workbench does not enforce any rules on these strings, but they are useful for passing environment information. See the section on &amp;quot;The ToolTypes Array&amp;quot; below for more information.&lt;br /&gt;
&lt;br /&gt;
; do_CurrentX, do_CurrentY&lt;br /&gt;
: Drawers have a virtual coordinate system. The user can scroll around in this system using the scroll gadgets on the window that opens when the drawer is activated. Each icon in the drawer has a position in the coordinate system. CurrentX and CurrentY contain the icon&#039;s current position in the drawer. Picking a position for a newly created icon can be tricky. NO_ICON_POSITION is a system constant for do_CurrentX and do_CurrentY that instructs Workbench to pick a reasonable place for the icon. Workbench will place the icon in an unused region of the drawer. If there is no space in the drawers window, the icon will be placed just to the right of the visible region.&lt;br /&gt;
&lt;br /&gt;
; do_DrawerData&lt;br /&gt;
: If the icon is associated with a directory (WBDISK, WBDRAWER, WBGARBAGE), it needs a DrawerData structure to go with it. This structure contains an Intuition NewWindow structure (see [[Intuition Windows]] for more information):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
struct DrawerData&lt;br /&gt;
{&lt;br /&gt;
    struct NewWindow dd_NewWindow; /* structure to open window       */&lt;br /&gt;
    LONG             dd_CurrentX;  /* current x coordinate of origin */&lt;br /&gt;
    LONG             dd_CurrentY;  /* current y coordinate of origin */&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: Workbench uses this to hold the current window position and size of the window so it will reopen in the same place.&lt;br /&gt;
&lt;br /&gt;
; do_ToolWindow&lt;br /&gt;
: This field is reserved for future use.&lt;br /&gt;
&lt;br /&gt;
; do_StackSize&lt;br /&gt;
: This is the size of the stack (in bytes) used for running the tool. If this is NULL, then Workbench will use a reasonable default stack size (currently 4K bytes).&lt;br /&gt;
&lt;br /&gt;
{{Note|title=Stack Size is Taken from the Project Icon|text=When a tool is run &#039;&#039;via the default tool mechanism&#039;&#039; (i.e., a project was activated, not the tool itself), Workbench uses the stack size specified in the project&#039;s &#039;&#039;.info&#039;&#039; file and the tool&#039;s &#039;&#039;.info&#039;&#039; file is ignored.}}&lt;br /&gt;
&lt;br /&gt;
== The Gadget Structure ==&lt;br /&gt;
&lt;br /&gt;
To hold the icon&#039;s image, Workbench uses an Intuition Gadget structure, defined in &amp;amp;lt;intuition/intuition.h&amp;amp;gt;. Workbench restricts some of the values of the gadget. All unused fields should be set to 0 or NULL. The Intuition gadget structure members that Workbench icons use are listed below.&lt;br /&gt;
&lt;br /&gt;
; Width&lt;br /&gt;
: This is the width (in pixels) of the icon&#039;s active region. Any mouse button press within this range will be interpreted as having selected this icon.&lt;br /&gt;
&lt;br /&gt;
; Height&lt;br /&gt;
: This is the height (in pixels) of the icon&#039;s active region. Any mouse button press within this range will be interpreted as having selected this icon.&lt;br /&gt;
&lt;br /&gt;
; Flags&lt;br /&gt;
: The gadget &#039;&#039;must&#039;&#039; be of type GADGIMAGE. Three highlight modes are supported: GADGHCOMP, GADGHIMAGE, and GADGBACKFILL. GADGHCOMP complements everything within the area defined by CurrentX, CurrentY, Width, Height. GADGHIMAGE uses an alternate selection image. GADGBACKFILL is similar to GADGHCOMP, but ensures that there is no &amp;quot;ring&amp;quot; around the selected image. It does this by first complementing the image, and then flooding all color 3 pixels that are on the border of the image to color 0. All other flag bits should be 0.&lt;br /&gt;
&lt;br /&gt;
; Activation&lt;br /&gt;
: The activation should have only RELVERIFY and GADGIMMEDIATE set.&lt;br /&gt;
&lt;br /&gt;
; Type&lt;br /&gt;
: The gadget type should be BOOLGADGET.&lt;br /&gt;
&lt;br /&gt;
; GadgetRender&lt;br /&gt;
: Set this to an appropriate Image structure.&lt;br /&gt;
&lt;br /&gt;
; SelectRender&lt;br /&gt;
: Set this to an appropriate alternate Image structure if and only if the highlight mode is GADGHIMAGE.&lt;br /&gt;
&lt;br /&gt;
The Image structure is typically the same size as the gadget, except that Height is often one pixel less than the gadget height. This allows a blank line between the icon image and the icon name. The image depth &#039;&#039;must&#039;&#039; be 2; PlanePick &#039;&#039;must&#039;&#039; be 3; and PlaneOnOff should be 0. The NextImage field should be null.&lt;br /&gt;
&lt;br /&gt;
= Icon Library Functions =&lt;br /&gt;
&lt;br /&gt;
The icon library functions do all the work needed to read, write and examine an icon&#039;s &#039;&#039;.info&#039;&#039; file and corresponding DiskObject structure:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
struct DiskObject *GetDiskObject(UBYTE *name);&lt;br /&gt;
struct DiskObject *GetDiskObjectNew(UBYTE *name);&lt;br /&gt;
BOOL PutDiskObject(UBYTE *name, struct DiskObject *diskobj);&lt;br /&gt;
void FreeDiskObject(struct DiskObject *diskobj);&lt;br /&gt;
BOOL DeleteDiskObject(UBYTE *);&lt;br /&gt;
&lt;br /&gt;
UBYTE *FindToolType(UBYTE **toolTypeArray, UBYTE *typeName);&lt;br /&gt;
BOOL MatchToolValue(UBYTE *typeString, UBYTE *value);&lt;br /&gt;
&lt;br /&gt;
struct DiskObject *GetDefDiskObjectNew(LONG type);&lt;br /&gt;
BOOL PutDefDiskObject(struct DiskObject *diskobj);&lt;br /&gt;
&lt;br /&gt;
UBYTE *BumpRevision(UBYTE *newbuf, UBYTE *oldname);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The icon library routine GetDiskObject() reads an icon&#039;s &#039;&#039;.info&#039;&#039; file from disk into a DiskObject structure it creates in memory where it can be examined or altered. PutDiskObject() writes the DiskObject out to disk and FreeDiskObject() frees the memory it used. If you modify any pointers in a DiskObject acquired via GetDiskObject(), replace the old pointers before calling FreeDiskObject() so that the proper memory will be freed.&lt;br /&gt;
&lt;br /&gt;
GetDiskObjectNew() works the same as GetDiskObject() except that if no &#039;&#039;.info&#039;&#039; file is found, a default DiskObject will be created for you. DeleteDiskObject() is for removing &#039;&#039;.info&#039;&#039; files from disk, and the functions GetDefDiskObject() and PutDefDiskObject() allow the default icons to be copied or replaced with new defaults.&lt;br /&gt;
&lt;br /&gt;
Once an icon&#039;s &#039;&#039;.info&#039;&#039; file has been read into a DiskObject structure, the functions FindToolType() and MatchToolType() can be used to examine the icon&#039;s Tool Types array.&lt;br /&gt;
&lt;br /&gt;
= The Tool Types Array =&lt;br /&gt;
&lt;br /&gt;
Earlier sections discussed how Workbench passes filenames as arguments to a program that&#039;s about to run. Workbench also allows other types of arguments to be passed in the Tool Types array of an icon. The Tool Types array is found in the do_ToolTypes field of the icon&#039;s DiskObject structure.&lt;br /&gt;
&lt;br /&gt;
In brief, Tool Types is an array of pointers to strings that contain any information an application wants to store such as the program options that were in effect when the icon was created. These strings can be used to encode information which will be available to all applications that read the icon&#039;s &#039;&#039;.info&#039;&#039; file. Users can enter and change a selected icon&#039;s Tool Types by choosing Information in the Workbench Icons menu.&lt;br /&gt;
&lt;br /&gt;
Workbench does not place many restrictions on the Tool Types array, but there are a few conventions you should follow. A string may be no more than 128 bytes long. The alphabet used is 8-bit ANSI (for example, normal ASCII with foreign-language extensions). This means that users may enter Tool Type strings containing international characters. Avoid special or nonprinting characters. The case of the characters is currently significant, so the string &amp;quot;Window&amp;quot; is not equal to &amp;quot;WINDOW&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The general format for a Tool Types entry is &amp;amp;lt;&#039;&#039;name&#039;&#039;&amp;amp;gt;=&amp;amp;lt;&#039;&#039;value&#039;&#039;&amp;amp;gt;[|&amp;amp;lt;&#039;&#039;value&#039;&#039;&amp;amp;gt;], where &amp;amp;lt;&#039;&#039;name&#039;&#039;&amp;amp;gt; is the field name and &amp;amp;lt;&#039;&#039;value&#039;&#039;&amp;amp;gt; is the text to associate with that name. Multiple values for one name may be separated by a vertical bar. The values may be the type of the file, programs that can access the data, parameters to be passed to an application, etc. For example, a paint program might set:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FILETYPE = PaintProgram | ILBM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This Tool Type indicates that the file is an ILBM, perhaps with some additional chunks of data specific to PaintProgram.&lt;br /&gt;
&lt;br /&gt;
Tool Type strings have few restrictions but there are some reserved Tool Types that are parsed by Workbench itself when an application is started from an icon. The reserved Tool Types are TOOLPRI=&#039;&#039;n&#039;&#039; (sets the Exec task priority at which Workbench will start the application), STARTPRI=&#039;&#039;n&#039;&#039; (sets the starting order for icons in the Wbstartup drawer), and DONOTWAIT (tells Workbench not to wait for the return of a program started via an icon in the Wbstartup drawer). In addition to the reserved Tool Types, which applications should not use, there are standard Tool Types, which applications should use only in the standard way. For a list of standard Tool Types refer to the [[UI_Style_Guide_Workbench#Tool_Types_and_Default_Tool|Amiga User Interface Style Guide]].&lt;br /&gt;
&lt;br /&gt;
Two routines are provided to help you deal with the Tool Types array. FindToolType() returns the value of a Tool Type element. Using the above example, if you are looking for FILETYPE, the string &amp;quot;PaintProgram|ILBM&amp;quot; will be returned. MatchToolValue() returns nonzero if the specified string is in the reference value string. This routine knows how to parse vertical bars. For example, using the reference value strings of &amp;quot;PaintProgram&amp;quot; or &amp;quot;ILBM&amp;quot;, MatchToolValue() will return TRUE for &amp;quot;ILBM&amp;quot; and &amp;quot;PaintProgram&amp;quot; and FALSE for everything else.&lt;br /&gt;
&lt;br /&gt;
= Example of Reading Icons and Parsing Tool Types =&lt;br /&gt;
&lt;br /&gt;
The following example demonstrates icon creation, icon reading and Tool Type parsing in the Workbench environment. When called from the Shell, the example creates a small data file in RAM: and creates or updates a project icon for the data file. The created project icon points to this example as its default tool. When the new project icon is double-clicked, Workbench will invoke the default tool (this example) as a Workbench process, and pass it a description of the project data file as a Workbench argument (WBArg) in the WBStartup message.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
** iconexample.c - Workbench icon startup, creation, and parsing example&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;exec/types.h&amp;gt;&lt;br /&gt;
#include &amp;lt;libraries/dos.h&amp;gt;&lt;br /&gt;
#include &amp;lt;workbench/workbench.h&amp;gt;&lt;br /&gt;
#include &amp;lt;workbench/startup.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;proto/exec.h&amp;gt;&lt;br /&gt;
#include &amp;lt;proto/dos.h&amp;gt;&lt;br /&gt;
#include &amp;lt;proto/icon.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* our functions */&lt;br /&gt;
void cleanexit(UBYTE *,LONG);&lt;br /&gt;
void cleanup(void);&lt;br /&gt;
void message(UBYTE *);&lt;br /&gt;
BOOL makeIcon(UBYTE *, char **, char *);&lt;br /&gt;
BOOL showToolTypes(struct WBArg *);&lt;br /&gt;
&lt;br /&gt;
UBYTE *projname     = &amp;quot;RAM:Example_Project&amp;quot;;&lt;br /&gt;
UBYTE *conwinname   = &amp;quot;CON:10/10/620/180/iconexample&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
UBYTE deftoolname[] = {&amp;quot;iconexample&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
USHORT IconImageData1[] =  {&lt;br /&gt;
/* Plane 0 */&lt;br /&gt;
    0x0000,0x0000,0x0000,0x1000,0x0000,0x0000,0x0000,0x3000,&lt;br /&gt;
    0x0FFF,0xFFFC,0x0000,0x3000,0x0800,0x0004,0x0000,0x3000,&lt;br /&gt;
    0x0800,0x07FF,0xFFC0,0x3000,0x08A8,0xA400,0x00A0,0x3000,&lt;br /&gt;
    0x0800,0x0400,0x0090,0x3000,0x08AA,0xA400,0x0088,0x3000,&lt;br /&gt;
    0x0800,0x042A,0xA0FC,0x3000,0x082A,0xA400,0x0002,0x3000,&lt;br /&gt;
    0x0800,0x0400,0x0002,0x3000,0x0800,0xA42A,0xA0A2,0x3000,&lt;br /&gt;
    0x0800,0x0400,0x0002,0x3000,0x0950,0xA42A,0x8AA2,0x3000,&lt;br /&gt;
    0x0800,0x0400,0x0002,0x3000,0x082A,0xA400,0x0002,0x3000,&lt;br /&gt;
    0x0800,0x042A,0x2AA2,0x3000,0x0FFF,0xFC00,0x0002,0x3000,&lt;br /&gt;
    0x0000,0x0400,0x0002,0x3000,0x0000,0x07FF,0xFFFE,0x3000,&lt;br /&gt;
    0x0000,0x0000,0x0000,0x3000,0x7FFF,0xFFFF,0xFFFF,0xF000,&lt;br /&gt;
/* Plane 1 */&lt;br /&gt;
    0xFFFF,0xFFFF,0xFFFF,0xE000,0xD555,0x5555,0x5555,0x4000,&lt;br /&gt;
    0xD000,0x0001,0x5555,0x4000,0xD7FF,0xFFF9,0x5555,0x4000,&lt;br /&gt;
    0xD7FF,0xF800,0x0015,0x4000,0xD757,0x5BFF,0xFF55,0x4000,&lt;br /&gt;
    0xD7FF,0xFBFF,0xFF65,0x4000,0xD755,0x5BFF,0xFF75,0x4000,&lt;br /&gt;
    0xD7FF,0xFBD5,0x5F01,0x4000,0xD7D5,0x5BFF,0xFFFD,0x4000,&lt;br /&gt;
    0xD7FF,0xFBFF,0xFFFD,0x4000,0xD7FF,0x5BD5,0x5F5D,0x4000,&lt;br /&gt;
    0xD7FF,0xFBFF,0xFFFD,0x4000,0xD6AF,0x5BD5,0x755D,0x4000,&lt;br /&gt;
    0xD7FF,0xFBFF,0xFFFD,0x4000,0xD7D5,0x5BFF,0xFFFD,0x4000,&lt;br /&gt;
    0xD7FF,0xFBD5,0xD55D,0x4000,0xD000,0x03FF,0xFFFD,0x4000,&lt;br /&gt;
    0xD555,0x53FF,0xFFFD,0x4000,0xD555,0x5000,0x0001,0x4000,&lt;br /&gt;
    0xD555,0x5555,0x5555,0x4000,0x8000,0x0000,0x0000,0x0000,&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct Image iconImage1 =&lt;br /&gt;
    {&lt;br /&gt;
    0, 0,                /* Top Corner */&lt;br /&gt;
    52, 22, 2,           /* Width, Height, Depth */&lt;br /&gt;
    &amp;amp;IconImageData1[0],  /* Image Data */&lt;br /&gt;
    0x003, 0x000,        /* PlanePick,PlaneOnOff */&lt;br /&gt;
    NULL                 /* Next Image */&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
UBYTE *toolTypes[] =&lt;br /&gt;
    {&lt;br /&gt;
    &amp;quot;FILETYPE=text&amp;quot;,&lt;br /&gt;
    &amp;quot;FLAGS=BOLD|ITALICS&amp;quot;,&lt;br /&gt;
    NULL&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
struct DiskObject projIcon =&lt;br /&gt;
    {&lt;br /&gt;
    WB_DISKMAGIC,                   /* Magic Number */&lt;br /&gt;
    WB_DISKVERSION,                 /* Version */&lt;br /&gt;
        {                           /* Embedded Gadget Structure */&lt;br /&gt;
        NULL,                       /* Next Gadget Pointer */&lt;br /&gt;
        97,12,52,23,                /* Left,Top,Width,Height */&lt;br /&gt;
        GADGIMAGE|GADGHBOX,         /* Flags */&lt;br /&gt;
        GADGIMMEDIATE|RELVERIFY,    /* Activation Flags */&lt;br /&gt;
        BOOLGADGET,                 /* Gadget Type */&lt;br /&gt;
        (APTR)&amp;amp;iconImage1,          /* Render Image */&lt;br /&gt;
        NULL,                       /* Select Image */&lt;br /&gt;
        NULL,                       /* Gadget Text */&lt;br /&gt;
        NULL,                       /* Mutual Exclude */&lt;br /&gt;
        NULL,                       /* Special Info */&lt;br /&gt;
        0,                          /* Gadget ID */&lt;br /&gt;
        NULL                        /* User Data */&lt;br /&gt;
        },&lt;br /&gt;
    WBPROJECT,                      /* Icon Type */&lt;br /&gt;
    deftoolname,                    /* Default Tool */&lt;br /&gt;
    toolTypes,                      /* Tool Type Array */&lt;br /&gt;
    NO_ICON_POSITION,               /* Current X */&lt;br /&gt;
    NO_ICON_POSITION,               /* Current Y */&lt;br /&gt;
    NULL,                           /* Drawer Structure */&lt;br /&gt;
    NULL,                           /* Tool Window */&lt;br /&gt;
    4000                            /* Stack Size */&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
/* Opens and allocations we must clean up */&lt;br /&gt;
struct Library *IconBase = NULL;&lt;br /&gt;
struct IconIFace *IIcon = NULL;&lt;br /&gt;
FILE *conwin = NULL;&lt;br /&gt;
LONG olddir = -1;&lt;br /&gt;
&lt;br /&gt;
BOOL FromWb;&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char **argv)&lt;br /&gt;
{&lt;br /&gt;
    struct WBStartup *WBenchMsg;&lt;br /&gt;
    struct WBArg *wbarg;&lt;br /&gt;
    FILE  *file;&lt;br /&gt;
    LONG  wLen;&lt;br /&gt;
    SHORT i;&lt;br /&gt;
&lt;br /&gt;
    FromWb = (argc==0) ? TRUE : FALSE;&lt;br /&gt;
&lt;br /&gt;
    /* Open icon.library */&lt;br /&gt;
    IconBase = IExec-&amp;gt;OpenLibrary(&amp;quot;icon.library&amp;quot;, 50);&lt;br /&gt;
    IIcon = (struct IconIFace*)IExec-&amp;gt;GetInterface(IconBase, &amp;quot;main&amp;quot;, 1, NULL);&lt;br /&gt;
    if (IIcon == NULL)&lt;br /&gt;
         cleanexit(&amp;quot;Can&#039;t open icon.library\n&amp;quot;,RETURN_FAIL);&lt;br /&gt;
&lt;br /&gt;
    /* If started from CLI, this example will create a small text&lt;br /&gt;
     * file RAM:Example_Project, and create an icon for the file&lt;br /&gt;
     * which points to this program as its default tool.&lt;br /&gt;
     */&lt;br /&gt;
    if(!FromWb)&lt;br /&gt;
        {&lt;br /&gt;
        /* Make a sample project (data) file */&lt;br /&gt;
        wLen = -1;&lt;br /&gt;
        if(file=fopen(projname,&amp;quot;w&amp;quot;))&lt;br /&gt;
            {&lt;br /&gt;
            wLen = fprintf(file,&amp;quot;Have a nice day\n&amp;quot;);&lt;br /&gt;
            fclose(file);&lt;br /&gt;
            }&lt;br /&gt;
        if(wLen &amp;lt; 0) cleanexit(&amp;quot;Error writing data file\n&amp;quot;,RETURN_FAIL);&lt;br /&gt;
&lt;br /&gt;
        /* Now save/update icon for this data file */&lt;br /&gt;
        if(makeIcon(projname, toolTypes, deftoolname))&lt;br /&gt;
             {&lt;br /&gt;
             IDOS-&amp;gt;Printf(&amp;quot;%s data file and icon saved.\n&amp;quot;,projname);&lt;br /&gt;
             IDOS-&amp;gt;Printf(&amp;quot;Use Workbench menu Icon Information to examine the icon.\n&amp;quot;);&lt;br /&gt;
             IDOS-&amp;gt;Printf(&amp;quot;Then copy this example (iconexample) to RAM:\n&amp;quot;);&lt;br /&gt;
             IDOS-&amp;gt;Printf(&amp;quot;and double-click the %s project icon\n&amp;quot;,projname);&lt;br /&gt;
             }&lt;br /&gt;
        else cleanexit(&amp;quot;Error writing icon\n&amp;quot;,RETURN_FAIL);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    else  /* Else we are FromWb - ie. we were either&lt;br /&gt;
           * started by a tool icon, or as in this case,&lt;br /&gt;
           * by being the default tool of a project icon.&lt;br /&gt;
           */&lt;br /&gt;
        {&lt;br /&gt;
        if(!(conwin = fopen(conwinname,&amp;quot;r+&amp;quot;)))&lt;br /&gt;
             cleanexit(&amp;quot;Can&#039;t open output window\n&amp;quot;,RETURN_FAIL);&lt;br /&gt;
&lt;br /&gt;
        WBenchMsg = (struct WBStartup *)argv;&lt;br /&gt;
&lt;br /&gt;
        /* Note wbarg++ at end of FOR statement steps through wbargs.&lt;br /&gt;
         * First arg is our executable (tool).  Any additional args&lt;br /&gt;
         * are projects/icons passed to us via either extend select&lt;br /&gt;
         * or default tool method.&lt;br /&gt;
         */&lt;br /&gt;
        for(i=0, wbarg=WBenchMsg-&amp;gt;sm_ArgList;&lt;br /&gt;
            i &amp;lt; WBenchMsg-&amp;gt;sm_NumArgs;&lt;br /&gt;
            i++, wbarg++)&lt;br /&gt;
            {&lt;br /&gt;
            /* if there&#039;s a directory lock for this wbarg, CD there */&lt;br /&gt;
            olddir = -1;&lt;br /&gt;
            if((wbarg-&amp;gt;wa_Lock)&amp;amp;&amp;amp;(*wbarg-&amp;gt;wa_Name))&lt;br /&gt;
                olddir = IDOS-&amp;gt;CurrentDir(wbarg-&amp;gt;wa_Lock);&lt;br /&gt;
&lt;br /&gt;
            showToolTypes(wbarg);&lt;br /&gt;
&lt;br /&gt;
            if((i&amp;gt;0)&amp;amp;&amp;amp;(*wbarg-&amp;gt;wa_Name))&lt;br /&gt;
                fprintf(conwin,&amp;quot;In Main. We could open the %s file here\n&amp;quot;,&lt;br /&gt;
                                 wbarg-&amp;gt;wa_Name);&lt;br /&gt;
            if(olddir != -1)  IDOS-&amp;gt;CurrentDir(olddir); /* CD back where we were */&lt;br /&gt;
            }&lt;br /&gt;
        IDOS-&amp;gt;Delay(500);&lt;br /&gt;
        }&lt;br /&gt;
    cleanup();&lt;br /&gt;
    return RETURN_OK;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
BOOL makeIcon(UBYTE *name, char **newtooltypes, char *newdeftool)&lt;br /&gt;
{&lt;br /&gt;
    struct DiskObject *dobj;&lt;br /&gt;
    char *olddeftool;&lt;br /&gt;
    char **oldtooltypes;&lt;br /&gt;
    BOOL success = FALSE;&lt;br /&gt;
&lt;br /&gt;
    if(dobj = IIcon-&amp;gt;GetDiskObject(name))&lt;br /&gt;
        {&lt;br /&gt;
        /* If file already has an icon, we will save off any fields we&lt;br /&gt;
         * need to update, update those fields, put the object, restore&lt;br /&gt;
         * the old field pointers and then free the object.  This will&lt;br /&gt;
         * preserve any custom imagery the user has, and the user&#039;s&lt;br /&gt;
         * current placement of the icon.  If your application does&lt;br /&gt;
         * not know where the user currently keeps your application,&lt;br /&gt;
         * you should not update his dobj-&amp;gt;do_DefaultTool.&lt;br /&gt;
         */&lt;br /&gt;
         oldtooltypes = dobj-&amp;gt;do_ToolTypes;&lt;br /&gt;
         olddeftool = dobj-&amp;gt;do_DefaultTool;&lt;br /&gt;
&lt;br /&gt;
         dobj-&amp;gt;do_ToolTypes = newtooltypes;&lt;br /&gt;
         dobj-&amp;gt;do_DefaultTool = newdeftool;&lt;br /&gt;
&lt;br /&gt;
         success = IIcon-&amp;gt;PutDiskObject(name,dobj);&lt;br /&gt;
&lt;br /&gt;
         /* we must restore the original pointers before freeing */&lt;br /&gt;
         dobj-&amp;gt;do_ToolTypes = oldtooltypes;&lt;br /&gt;
         dobj-&amp;gt;do_DefaultTool = olddeftool;&lt;br /&gt;
         IIcon-&amp;gt;FreeDiskObject(dobj);&lt;br /&gt;
         }&lt;br /&gt;
    /* Else, put our default icon */&lt;br /&gt;
    if(!success)  success = IIcon-&amp;gt;PutDiskObject(name,&amp;amp;projIcon);&lt;br /&gt;
    return(success);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
BOOL showToolTypes(struct WBArg *wbarg)&lt;br /&gt;
{&lt;br /&gt;
    struct DiskObject *dobj;&lt;br /&gt;
    char **toolarray;&lt;br /&gt;
    char *s;&lt;br /&gt;
    BOOL success = FALSE;&lt;br /&gt;
&lt;br /&gt;
    fprintf(conwin,&amp;quot;\nWBArg Lock=0x%lx, Name=%s\n&amp;quot;,&lt;br /&gt;
                           wbarg-&amp;gt;wa_Lock,wbarg-&amp;gt;wa_Name);&lt;br /&gt;
&lt;br /&gt;
    if((*wbarg-&amp;gt;wa_Name) &amp;amp;&amp;amp; (dobj = IIcon-&amp;gt;GetDiskObject(wbarg-&amp;gt;wa_Name)))&lt;br /&gt;
        {&lt;br /&gt;
        fprintf(conwin,&amp;quot;  We have read the DiskObject (icon) for this arg\n&amp;quot;);&lt;br /&gt;
        toolarray = (char **)dobj-&amp;gt;do_ToolTypes;&lt;br /&gt;
&lt;br /&gt;
        if(s=(char *)IIcon-&amp;gt;FindToolType(toolarray,&amp;quot;FILETYPE&amp;quot;))&lt;br /&gt;
            {&lt;br /&gt;
            fprintf(conwin,&amp;quot;    Found tooltype FILETYPE with value %s\n&amp;quot;,s);&lt;br /&gt;
            }&lt;br /&gt;
        if(s=(char *)IIcon-&amp;gt;FindToolType(toolarray,&amp;quot;FLAGS&amp;quot;))&lt;br /&gt;
            {&lt;br /&gt;
            fprintf(conwin,&amp;quot;    Found tooltype FLAGS with value %s\n&amp;quot;,s);&lt;br /&gt;
            if(IIcon-&amp;gt;MatchToolValue(s,&amp;quot;BOLD&amp;quot;))&lt;br /&gt;
                fprintf(conwin,&amp;quot;      BOLD flag requested\n&amp;quot;);&lt;br /&gt;
            if(IIcon-&amp;gt;MatchToolValue(s,&amp;quot;ITALICS&amp;quot;))&lt;br /&gt;
                fprintf(conwin,&amp;quot;      ITALICS flag requested\n&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        /* Free the diskobject we got */&lt;br /&gt;
        IIcon-&amp;gt;FreeDiskObject(dobj);&lt;br /&gt;
        success = TRUE;&lt;br /&gt;
        }&lt;br /&gt;
    else if(!(*wbarg-&amp;gt;wa_Name))&lt;br /&gt;
        fprintf(conwin,&amp;quot;  Must be a disk or drawer icon\n&amp;quot;);&lt;br /&gt;
    else&lt;br /&gt;
        fprintf(conwin,&amp;quot;  Can&#039;t find any DiskObject (icon) for this WBArg\n&amp;quot;);&lt;br /&gt;
    return(success);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Workbench-started programs with no output window may want to display&lt;br /&gt;
 * messages in a different manner (requester, window title, etc)&lt;br /&gt;
 */&lt;br /&gt;
void message(UBYTE *s)&lt;br /&gt;
{&lt;br /&gt;
    if(FromWb &amp;amp;&amp;amp; conwin)  fprintf(conwin,s,strlen(s));&lt;br /&gt;
    else if (!FromWb) printf(s);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void cleanexit(UBYTE *s, LONG n)&lt;br /&gt;
{&lt;br /&gt;
    if(*s)  message(s);&lt;br /&gt;
    cleanup();&lt;br /&gt;
    exit(n);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void cleanup()&lt;br /&gt;
{&lt;br /&gt;
   if(conwin)    fclose(conwin);&lt;br /&gt;
   IExec-&amp;gt;DropInterface((struct Interface*)IIcon);&lt;br /&gt;
   IExec-&amp;gt;CloseLibrary(IconBase);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Function Reference =&lt;br /&gt;
&lt;br /&gt;
The following are brief descriptions of the functions in icon.library. See SDK for details on each function call.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Icon Library Functions&lt;br /&gt;
|-&lt;br /&gt;
! Function&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| GetDiskObject()&lt;br /&gt;
| Read the &#039;&#039;.info&#039;&#039; file of an icon into a DiskObject structure&lt;br /&gt;
|-&lt;br /&gt;
| GetDiskObjectNew()&lt;br /&gt;
| Same as GetDiskObject() but returns a default icon if none exists&lt;br /&gt;
|-&lt;br /&gt;
| PutDiskObject()&lt;br /&gt;
| Write a DiskObject structure to disk as a &#039;&#039;.info&#039;&#039; file&lt;br /&gt;
|-&lt;br /&gt;
| FreeDiskObject()&lt;br /&gt;
| Free the DiskObject structure created by GetDiskObject()&lt;br /&gt;
|-&lt;br /&gt;
| DeleteDiskObject()&lt;br /&gt;
| Deletes a given &#039;&#039;.info&#039;&#039; file from disk&lt;br /&gt;
|-&lt;br /&gt;
| FindToolType()&lt;br /&gt;
| Return the value of an entry in the icon&#039;s Tool Type array&lt;br /&gt;
|-&lt;br /&gt;
| MatchToolValue()&lt;br /&gt;
| Check a Tool Type entry against a given value&lt;br /&gt;
|-&lt;br /&gt;
| GetDefDiskObject()&lt;br /&gt;
| Read the default icon for a given icon type&lt;br /&gt;
|-&lt;br /&gt;
| PutDefDiskObject()&lt;br /&gt;
| Replace the default icon for a given icon type&lt;br /&gt;
|-&lt;br /&gt;
| AddFreeList()&lt;br /&gt;
| Add memory you have allocated to a FreeList&lt;br /&gt;
|-&lt;br /&gt;
| FreeFreeList()&lt;br /&gt;
| Free all the memory for entries in the FreeList&lt;br /&gt;
|-&lt;br /&gt;
| BumpRevision()&lt;br /&gt;
| Create a new name for a second copy of a Workbench object&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=AmigaOS_Manual:_AmigaDOS_Advanced_Features&amp;diff=8548</id>
		<title>AmigaOS Manual: AmigaDOS Advanced Features</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=AmigaOS_Manual:_AmigaDOS_Advanced_Features&amp;diff=8548"/>
		<updated>2016-05-18T14:43:06Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: /* Using PIPE: */ corrected typo &amp;quot;yource&amp;quot; to &amp;quot;source&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The information in this appendix is intended for experienced AmigaDOS users. It includes the following:&lt;br /&gt;
&lt;br /&gt;
* Customizing the window&lt;br /&gt;
* Customizing your Shell environment&lt;br /&gt;
* Using Escape sequences&lt;br /&gt;
* Customizing startup files&lt;br /&gt;
&lt;br /&gt;
= Customizing the Window =&lt;br /&gt;
&lt;br /&gt;
The Shell supports a WINDOW Tool Type in the Shell icon that allows you to specify the size, position, and features of the Shell window. The format of the Tool Types is as follows:&lt;br /&gt;
&lt;br /&gt;
 WINDOW=CON:x/y/width/height/title/option/options&lt;br /&gt;
&lt;br /&gt;
For a description of the options and arguments for the Shell window specification, see the description of the NEWSHELL command in Chapter 6 and the examples in Chapter 8.&lt;br /&gt;
&lt;br /&gt;
== Public Screens - PUBSCREEN Option ==&lt;br /&gt;
&lt;br /&gt;
Applications creating screens can mark them as public, enabling other applications and utilities to open windows on the same screen. AmigaDOS commands that have PUBSCREEN/K in their templates allow the commands to open windows on public screens.&lt;br /&gt;
&lt;br /&gt;
For example, the Input Preferences editor template contains PUBSCREEN/K; open this editor on a public screen by entering the following:&lt;br /&gt;
&lt;br /&gt;
 1&amp;gt; INPUT PUBSCREEN &amp;quot;public screen name&amp;quot;&lt;br /&gt;
&lt;br /&gt;
You must supply the name of the public screen. The internal names for public screens are given by applications and do not necessarily match the screen title printed in the screen&#039;s title bar. A screen&#039;s name can be the same as the application&#039;s name; however, consult the application&#039;s documentation to determine if it opens public screens and how it names them.&lt;br /&gt;
&lt;br /&gt;
= Customizing the Shell =&lt;br /&gt;
&lt;br /&gt;
You can customize your Shell environment by changing the S:Shell-startup file, which is a script that is executed each time a new Shell is opened. You can edit Shell-startup to set up command aliases and to change the Shell prompt.&lt;br /&gt;
&lt;br /&gt;
== Using Aliases ==&lt;br /&gt;
&lt;br /&gt;
An aliases is an abbreviation for a long and/or frequently used command. Aliases can be local or global. Local aliases are entered in a Shell window and are only recognized in that Shell. Global aliases area entered into the Shell-startup file and are recognized by all Shells.&lt;br /&gt;
&lt;br /&gt;
The Alias format is as follows:&lt;br /&gt;
&lt;br /&gt;
 ALIAS &amp;lt;name&amp;gt; &amp;lt;string&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;name&amp;gt; is the alias name to be entered at the Shell prompt to execute a command. The &amp;lt;string&amp;gt; is the command line to be executed.&lt;br /&gt;
&lt;br /&gt;
See Chapter 6 for a full description of the ALIAS command and Chapter 8 for a list of useful aliases.&lt;br /&gt;
&lt;br /&gt;
== Changing the Prompt ==&lt;br /&gt;
&lt;br /&gt;
The PROMPT command lets you customize the Shell prompt. By default, it shows the process number, a period, the current directory, a right angle bracket (&amp;gt;), and a space:&lt;br /&gt;
&lt;br /&gt;
 1.Workbench:&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The prompt can display almost anything, with or without the process number and directory information. The return code of the last command executed can be included. The prompt can contain escape sequences, allowing you to change text color and style in the prompt string or clear the screen.&lt;br /&gt;
&lt;br /&gt;
Benefits of customizing your Shell prompt include making the prompt:&lt;br /&gt;
&lt;br /&gt;
* Easier to distinguish from commands and their output&lt;br /&gt;
* Match a prompt style with which you are familiar&lt;br /&gt;
* More informative&lt;br /&gt;
* Shorter&lt;br /&gt;
&lt;br /&gt;
See Chapter 8 for examples of how to use escape sequences to make the prompt more readable.&lt;br /&gt;
&lt;br /&gt;
= Using Escape Sequences =&lt;br /&gt;
&lt;br /&gt;
Escape sequences can control how the text appears in a console window, such as the texrt color, style (bold, italics, underline), and margins. AmigaDOS recognizes standard ANSI X3.64 sequences entered on the command line or embedded in strings. Escape sequences consist of one or more characters, sometimes with a numerical argument, prefaced by the escape character. Spaces are not normally used in the sequence of characters.&lt;br /&gt;
&lt;br /&gt;
The escape sequence is shown using the following format:&lt;br /&gt;
&lt;br /&gt;
 Esc[#X&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Esc || Represents the Escape key. Press Esc or substitute *E if you are in an application such as ED that uses the Esc key for its own purposes. When you press Esc, a reversed-color open bracket ([) appears in the console window.&lt;br /&gt;
|-&lt;br /&gt;
| [ || Represents the open bracket key, displayed in Figure D-1. If you country&#039;s keyboard does not have an open bracket key, press Alt plus the key shown, regardless of what is shown on the keycap.&lt;br /&gt;
|-&lt;br /&gt;
| # || Represents a numerical argument.&lt;br /&gt;
|-&lt;br /&gt;
| X || Represents an alphabetic key. Escape codes are case-sensitive. If an upper case letter is shown, press Shift and the key. If a lower case letter is shown, press the unshifted key.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:DosFigD-1.png|center|frame|Open Bracket Key Location]]&lt;br /&gt;
&lt;br /&gt;
The standard escape sequences for console windows are:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Sequence !! Action&lt;br /&gt;
|-&lt;br /&gt;
| Escc || Clears the window and resets all modes to defaults.&lt;br /&gt;
|-&lt;br /&gt;
| Esc[0m || Resets graphics modes to defaults.&lt;br /&gt;
|-&lt;br /&gt;
| Esc[1m || Turns on text boldface.&lt;br /&gt;
|-&lt;br /&gt;
| Esc[3m || Turns on text italic.&lt;br /&gt;
|-&lt;br /&gt;
| Esc[4m || Turns on text underlining.&lt;br /&gt;
|-&lt;br /&gt;
| Esc[7m || Turns on reverse video text.&lt;br /&gt;
|-&lt;br /&gt;
| Esc[8m || Makes text match background color.&lt;br /&gt;
|-&lt;br /&gt;
| Esc[22m || Turns off boldface.&lt;br /&gt;
|-&lt;br /&gt;
| Esc[23m || Turns off italics.&lt;br /&gt;
|-&lt;br /&gt;
| Esc[24m || Turns off underlining.&lt;br /&gt;
|-&lt;br /&gt;
| Esc[27m || Turns off reverse video.&lt;br /&gt;
|-&lt;br /&gt;
| Esc[28m || Returns the text color to normal.&lt;br /&gt;
|-&lt;br /&gt;
| Esc[30m || Turns on text color0 (background, default grey).&lt;br /&gt;
|-&lt;br /&gt;
| Esc[31m || Turns on text color1 (shadow, default black).&lt;br /&gt;
|-&lt;br /&gt;
| Esc[32m || Turns on text color2 (shine, default white).&lt;br /&gt;
|-&lt;br /&gt;
| Esc[33m || Turns on text color3 (accent, default blue).&lt;br /&gt;
|-&lt;br /&gt;
| Esc[3#m || Turns on text color# (4-7).&lt;br /&gt;
|-&lt;br /&gt;
| Esc[39m || Turns on text default color (color1).&lt;br /&gt;
|-&lt;br /&gt;
| Esc[40m || Turns on text background color0 (default grey).&lt;br /&gt;
|-&lt;br /&gt;
| Esc[41m || Turns on text background color1 (default black).&lt;br /&gt;
|-&lt;br /&gt;
| Esc[42m || Turns on text background color2 (default white).&lt;br /&gt;
|-&lt;br /&gt;
| Esc[43, || Turns on text background color3 (default blue).&lt;br /&gt;
|-&lt;br /&gt;
| Esc[4#m || Turns on text background color# (4-7).&lt;br /&gt;
|-&lt;br /&gt;
| Esc[49m || Turns on default text background color (color0).&lt;br /&gt;
|-&lt;br /&gt;
| Esc[#u || Sets maximum length of lines in window to #.&lt;br /&gt;
|-&lt;br /&gt;
| Esc[#t || Sets maximum number of lines in window to #.&lt;br /&gt;
|-&lt;br /&gt;
| Esc[#x || Starts text # pixels from left edge of window.&lt;br /&gt;
|-&lt;br /&gt;
| Esc[#y || Starts text # pixels from top edge of window.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The escape sequence is executed when you press Return or when the string containing the sequence is printed.&lt;br /&gt;
&lt;br /&gt;
Certain characters cannot normally be used in string arguments for AmgaDOS commands. Preceding these characters with an asterisk allows them to be used in string arguments for most commands, as follows.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| *E || Represents the Escape key in a string.&lt;br /&gt;
|-&lt;br /&gt;
| *N || Forces a new line in the output.&lt;br /&gt;
|-&lt;br /&gt;
| *&amp;quot; || Allows a quotation mark character inside quotation marks.&lt;br /&gt;
|-&lt;br /&gt;
| ** || Gives a single asterisk.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Customizing Startup Files =&lt;br /&gt;
&lt;br /&gt;
Each time your Amiga is booted, it executes the Startup-sequence script file Startup-sequence script file located in the S: directory. The Startup-sequence file allocates disk buffers, makes device assignments, reads saved Preferences settings, and performs other functions that configure the Amiga for use.&lt;br /&gt;
&lt;br /&gt;
Because any errors introduced into the Startup-sequence file can cause a fatal disruption of the normal system startup, we strongly recommend that you do not alter your Startup-sequence file. Instead, we recommend that you create a file called User-startup in the S:directory. Creating a User-startup file allows you to customize your system at startup while preventing any disruption of the normal booting process. This file is automatically executed by the Startup-sequence before opening Workbench.&lt;br /&gt;
&lt;br /&gt;
{{Note|Do not modify the original Startup-sequence file. Altering your Startup-sequence file can cause fatal system startup errors.}}&lt;br /&gt;
&lt;br /&gt;
The User-startup and other startup files in the S:directory can be modified to run programs at startup, print special introductory messages, or automatically open a Shell window on the Workbench screen. Any AmigaDOS command can appear in a startup script, including commands to execute other scripts.&lt;br /&gt;
&lt;br /&gt;
Refer to Chapters 6 and 7 for complete specifications about each command before making changes to any existing script.&lt;br /&gt;
&lt;br /&gt;
= Editing Startup Files =&lt;br /&gt;
&lt;br /&gt;
If you have a floppy-only system, make changes to your startup files only if you are working on a copy of your Workbench disk, not the original. If you make a mistake in your startup files and the execution of the Startup-sequence is aborted, only a Shell prompt remains. Normally, the FAILAT 21 command ensures that the Startup-sequence completes execution even after an error.&lt;br /&gt;
&lt;br /&gt;
As long as you do not alter your standard Startup-sequence file, the possibility of a serious startup error is unlikely. If you attempt to boot from a disk that has no file named S:Startup-sequence or there is serious error in the startup process, you may see a screen similar to that shown in Figure D-2.&lt;br /&gt;
&lt;br /&gt;
[[File:DosFigD-2.png|center|frame|AmigaDOS Boot Failure Shell Window]]&lt;br /&gt;
&lt;br /&gt;
This is a Shell window at which you can enter commands, but from which your usual aliases and search path may not be available. This Shell allows you to try to edit the startup file that caused the problem. Because the system has not been fully configured, this can be difficult. It is usually easier to reboot using a different disk.&lt;br /&gt;
&lt;br /&gt;
When editing your User-startup file:&lt;br /&gt;
&lt;br /&gt;
* Be sure to use the correct command syntax. Test any commands you plan to insert into the User-startup in a Shell window first. If a command works properly in the Shell, it should work as expected in the User-startup.&lt;br /&gt;
* Pay attention to the order of commands commands:order of commands in script in the script. Some commands, such ECHOcommands:ECHO and RESIDENT, can be put anywhere. However, when inserting commands that refer to directories and files, an error can result if you reference anything that has not yet been created, assigned, or given a valid path.&lt;br /&gt;
* Specify the complete path to directories that you wish to access.&lt;br /&gt;
* Add commands to your scripts. If you insert a semicolon at the end of a command line, anything to the right of the semicolon is ignored by AmigaDOS, but appears in the script as a comment. For example:&lt;br /&gt;
: ASSIGN T: RAM:T ; set up directory for scripts&lt;br /&gt;
: explains why you inserted the command.&lt;br /&gt;
* Test changes to your User-startup file. When experimenting with your User-startup file, reboot your Amiga after each change to test the result. However, be sure to wait until you are sure the file is completely written to disk before the reboot to avoid potential data loss.&lt;br /&gt;
&lt;br /&gt;
== Common Additions to the Startup Files ==&lt;br /&gt;
&lt;br /&gt;
The following is a list of some of the most common additions that can be made to your startup files.&lt;br /&gt;
&lt;br /&gt;
* Opening a Shell window&lt;br /&gt;
* Adding directories to the search path&lt;br /&gt;
* Adding logical device names to the assign list&lt;br /&gt;
* Making additional commands resident&lt;br /&gt;
* Starting input commodities and other programs&lt;br /&gt;
* Adding drive cache buffers&lt;br /&gt;
&lt;br /&gt;
= Using PIPE: =&lt;br /&gt;
&lt;br /&gt;
The PIPE: device transfers data from one program to another using temporary storage in RAM. Use a pipe: when you wish to apply output from one process as input to another process. Using a pipe to transfer data reduces the possibility of running out of memory when working with very large files and eliminates the need to create, save, and later delete a file needed only once.&lt;br /&gt;
&lt;br /&gt;
The source and destination processes cannot be the same when using PIPE:. As you write information to the pipe, another process can read the data in First In First Out (FIFO) order. Providing a name after PIPE: gives the pipe a name.&lt;br /&gt;
&lt;br /&gt;
Data sent to PIPE: is buffered in memory. When another application reds the pipe it gets the data in the order it came in. The pipe stays in RAM until its contents are emptied by the reading processes or until the next reboot.&lt;br /&gt;
&lt;br /&gt;
PIPE: uses at least a 4 KB buffer per pipe-name. When the maximum buffer capacity is reached, PIPE: stops accepting data until another process reads data out of the buffer. If a process is reading data, it waits until more data arrives in the buffer. Buffer size can only be specified on the first reference to a particular channel.&lt;br /&gt;
&lt;br /&gt;
The following are the options for PIPE:PIPE:options.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| channel_name || A unique channel name. Must begin with a non-numeric character. The channel_name is optional; using PIPE: alone is possible if not using multiple pipes.&lt;br /&gt;
|-&lt;br /&gt;
| Buf_size || Size in bytes of the buffer to allocate. (The default size is 4 KB). The buf_size is optional.&lt;br /&gt;
|-&lt;br /&gt;
| max_buffers || Maximum number of buffers allowed. Suspends the output channel if exceeded. Max_buffers = 0 indicates there should be no fixed limit on the number of buffers allocated.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
PIPE: can be used from other programs, such as word processors or terminal programs. You can use any pipe-name. If the application reads the file sequentially, you can specify PIPE:&amp;lt;name&amp;gt; and it appears the same as an ordinary file to the application.&lt;br /&gt;
&lt;br /&gt;
Information from one pipe can be copied to another. For example:&lt;br /&gt;
&lt;br /&gt;
Shell window 1:&lt;br /&gt;
 COPY Hugefile PIPE:a&lt;br /&gt;
&lt;br /&gt;
Shell window 2:&lt;br /&gt;
 COPY PIPE:a PIPE:b&lt;br /&gt;
&lt;br /&gt;
Shell window 3:&lt;br /&gt;
 COPY PIPE:b PIPE:c&lt;br /&gt;
&lt;br /&gt;
Shell window 4:&lt;br /&gt;
 COPY PIPE:b PIPE:d&lt;br /&gt;
&lt;br /&gt;
Shell window 5:&lt;br /&gt;
 COPY PIPE:d PIPE:e&lt;br /&gt;
&lt;br /&gt;
Shell window 6:&lt;br /&gt;
 TYPE PIPE:e ;Hugefile is TYPEd&lt;br /&gt;
&lt;br /&gt;
The DOSDrivers mount file for PIPE: mount files:for PIPE:is as follows:&lt;br /&gt;
&lt;br /&gt;
 Handler = L:Queue Handler&lt;br /&gt;
 Priority = 5&lt;br /&gt;
 StackSize = 3000&lt;br /&gt;
 GlobVec = -1&lt;br /&gt;
&lt;br /&gt;
PIPE: is mounted by default during the standard Startup-sequence.&lt;br /&gt;
&lt;br /&gt;
See Chapter 8 for additional PIPE: examples.&lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=AmigaOS_Manual:_AmigaDOS_Advanced_Features&amp;diff=8547</id>
		<title>AmigaOS Manual: AmigaDOS Advanced Features</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=AmigaOS_Manual:_AmigaDOS_Advanced_Features&amp;diff=8547"/>
		<updated>2016-05-18T14:39:52Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: /* Customizing Startup Files */ removed redundant &amp;quot;User-startup file&amp;quot; phrase&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The information in this appendix is intended for experienced AmigaDOS users. It includes the following:&lt;br /&gt;
&lt;br /&gt;
* Customizing the window&lt;br /&gt;
* Customizing your Shell environment&lt;br /&gt;
* Using Escape sequences&lt;br /&gt;
* Customizing startup files&lt;br /&gt;
&lt;br /&gt;
= Customizing the Window =&lt;br /&gt;
&lt;br /&gt;
The Shell supports a WINDOW Tool Type in the Shell icon that allows you to specify the size, position, and features of the Shell window. The format of the Tool Types is as follows:&lt;br /&gt;
&lt;br /&gt;
 WINDOW=CON:x/y/width/height/title/option/options&lt;br /&gt;
&lt;br /&gt;
For a description of the options and arguments for the Shell window specification, see the description of the NEWSHELL command in Chapter 6 and the examples in Chapter 8.&lt;br /&gt;
&lt;br /&gt;
== Public Screens - PUBSCREEN Option ==&lt;br /&gt;
&lt;br /&gt;
Applications creating screens can mark them as public, enabling other applications and utilities to open windows on the same screen. AmigaDOS commands that have PUBSCREEN/K in their templates allow the commands to open windows on public screens.&lt;br /&gt;
&lt;br /&gt;
For example, the Input Preferences editor template contains PUBSCREEN/K; open this editor on a public screen by entering the following:&lt;br /&gt;
&lt;br /&gt;
 1&amp;gt; INPUT PUBSCREEN &amp;quot;public screen name&amp;quot;&lt;br /&gt;
&lt;br /&gt;
You must supply the name of the public screen. The internal names for public screens are given by applications and do not necessarily match the screen title printed in the screen&#039;s title bar. A screen&#039;s name can be the same as the application&#039;s name; however, consult the application&#039;s documentation to determine if it opens public screens and how it names them.&lt;br /&gt;
&lt;br /&gt;
= Customizing the Shell =&lt;br /&gt;
&lt;br /&gt;
You can customize your Shell environment by changing the S:Shell-startup file, which is a script that is executed each time a new Shell is opened. You can edit Shell-startup to set up command aliases and to change the Shell prompt.&lt;br /&gt;
&lt;br /&gt;
== Using Aliases ==&lt;br /&gt;
&lt;br /&gt;
An aliases is an abbreviation for a long and/or frequently used command. Aliases can be local or global. Local aliases are entered in a Shell window and are only recognized in that Shell. Global aliases area entered into the Shell-startup file and are recognized by all Shells.&lt;br /&gt;
&lt;br /&gt;
The Alias format is as follows:&lt;br /&gt;
&lt;br /&gt;
 ALIAS &amp;lt;name&amp;gt; &amp;lt;string&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;name&amp;gt; is the alias name to be entered at the Shell prompt to execute a command. The &amp;lt;string&amp;gt; is the command line to be executed.&lt;br /&gt;
&lt;br /&gt;
See Chapter 6 for a full description of the ALIAS command and Chapter 8 for a list of useful aliases.&lt;br /&gt;
&lt;br /&gt;
== Changing the Prompt ==&lt;br /&gt;
&lt;br /&gt;
The PROMPT command lets you customize the Shell prompt. By default, it shows the process number, a period, the current directory, a right angle bracket (&amp;gt;), and a space:&lt;br /&gt;
&lt;br /&gt;
 1.Workbench:&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The prompt can display almost anything, with or without the process number and directory information. The return code of the last command executed can be included. The prompt can contain escape sequences, allowing you to change text color and style in the prompt string or clear the screen.&lt;br /&gt;
&lt;br /&gt;
Benefits of customizing your Shell prompt include making the prompt:&lt;br /&gt;
&lt;br /&gt;
* Easier to distinguish from commands and their output&lt;br /&gt;
* Match a prompt style with which you are familiar&lt;br /&gt;
* More informative&lt;br /&gt;
* Shorter&lt;br /&gt;
&lt;br /&gt;
See Chapter 8 for examples of how to use escape sequences to make the prompt more readable.&lt;br /&gt;
&lt;br /&gt;
= Using Escape Sequences =&lt;br /&gt;
&lt;br /&gt;
Escape sequences can control how the text appears in a console window, such as the texrt color, style (bold, italics, underline), and margins. AmigaDOS recognizes standard ANSI X3.64 sequences entered on the command line or embedded in strings. Escape sequences consist of one or more characters, sometimes with a numerical argument, prefaced by the escape character. Spaces are not normally used in the sequence of characters.&lt;br /&gt;
&lt;br /&gt;
The escape sequence is shown using the following format:&lt;br /&gt;
&lt;br /&gt;
 Esc[#X&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Esc || Represents the Escape key. Press Esc or substitute *E if you are in an application such as ED that uses the Esc key for its own purposes. When you press Esc, a reversed-color open bracket ([) appears in the console window.&lt;br /&gt;
|-&lt;br /&gt;
| [ || Represents the open bracket key, displayed in Figure D-1. If you country&#039;s keyboard does not have an open bracket key, press Alt plus the key shown, regardless of what is shown on the keycap.&lt;br /&gt;
|-&lt;br /&gt;
| # || Represents a numerical argument.&lt;br /&gt;
|-&lt;br /&gt;
| X || Represents an alphabetic key. Escape codes are case-sensitive. If an upper case letter is shown, press Shift and the key. If a lower case letter is shown, press the unshifted key.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:DosFigD-1.png|center|frame|Open Bracket Key Location]]&lt;br /&gt;
&lt;br /&gt;
The standard escape sequences for console windows are:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Sequence !! Action&lt;br /&gt;
|-&lt;br /&gt;
| Escc || Clears the window and resets all modes to defaults.&lt;br /&gt;
|-&lt;br /&gt;
| Esc[0m || Resets graphics modes to defaults.&lt;br /&gt;
|-&lt;br /&gt;
| Esc[1m || Turns on text boldface.&lt;br /&gt;
|-&lt;br /&gt;
| Esc[3m || Turns on text italic.&lt;br /&gt;
|-&lt;br /&gt;
| Esc[4m || Turns on text underlining.&lt;br /&gt;
|-&lt;br /&gt;
| Esc[7m || Turns on reverse video text.&lt;br /&gt;
|-&lt;br /&gt;
| Esc[8m || Makes text match background color.&lt;br /&gt;
|-&lt;br /&gt;
| Esc[22m || Turns off boldface.&lt;br /&gt;
|-&lt;br /&gt;
| Esc[23m || Turns off italics.&lt;br /&gt;
|-&lt;br /&gt;
| Esc[24m || Turns off underlining.&lt;br /&gt;
|-&lt;br /&gt;
| Esc[27m || Turns off reverse video.&lt;br /&gt;
|-&lt;br /&gt;
| Esc[28m || Returns the text color to normal.&lt;br /&gt;
|-&lt;br /&gt;
| Esc[30m || Turns on text color0 (background, default grey).&lt;br /&gt;
|-&lt;br /&gt;
| Esc[31m || Turns on text color1 (shadow, default black).&lt;br /&gt;
|-&lt;br /&gt;
| Esc[32m || Turns on text color2 (shine, default white).&lt;br /&gt;
|-&lt;br /&gt;
| Esc[33m || Turns on text color3 (accent, default blue).&lt;br /&gt;
|-&lt;br /&gt;
| Esc[3#m || Turns on text color# (4-7).&lt;br /&gt;
|-&lt;br /&gt;
| Esc[39m || Turns on text default color (color1).&lt;br /&gt;
|-&lt;br /&gt;
| Esc[40m || Turns on text background color0 (default grey).&lt;br /&gt;
|-&lt;br /&gt;
| Esc[41m || Turns on text background color1 (default black).&lt;br /&gt;
|-&lt;br /&gt;
| Esc[42m || Turns on text background color2 (default white).&lt;br /&gt;
|-&lt;br /&gt;
| Esc[43, || Turns on text background color3 (default blue).&lt;br /&gt;
|-&lt;br /&gt;
| Esc[4#m || Turns on text background color# (4-7).&lt;br /&gt;
|-&lt;br /&gt;
| Esc[49m || Turns on default text background color (color0).&lt;br /&gt;
|-&lt;br /&gt;
| Esc[#u || Sets maximum length of lines in window to #.&lt;br /&gt;
|-&lt;br /&gt;
| Esc[#t || Sets maximum number of lines in window to #.&lt;br /&gt;
|-&lt;br /&gt;
| Esc[#x || Starts text # pixels from left edge of window.&lt;br /&gt;
|-&lt;br /&gt;
| Esc[#y || Starts text # pixels from top edge of window.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The escape sequence is executed when you press Return or when the string containing the sequence is printed.&lt;br /&gt;
&lt;br /&gt;
Certain characters cannot normally be used in string arguments for AmgaDOS commands. Preceding these characters with an asterisk allows them to be used in string arguments for most commands, as follows.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| *E || Represents the Escape key in a string.&lt;br /&gt;
|-&lt;br /&gt;
| *N || Forces a new line in the output.&lt;br /&gt;
|-&lt;br /&gt;
| *&amp;quot; || Allows a quotation mark character inside quotation marks.&lt;br /&gt;
|-&lt;br /&gt;
| ** || Gives a single asterisk.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Customizing Startup Files =&lt;br /&gt;
&lt;br /&gt;
Each time your Amiga is booted, it executes the Startup-sequence script file Startup-sequence script file located in the S: directory. The Startup-sequence file allocates disk buffers, makes device assignments, reads saved Preferences settings, and performs other functions that configure the Amiga for use.&lt;br /&gt;
&lt;br /&gt;
Because any errors introduced into the Startup-sequence file can cause a fatal disruption of the normal system startup, we strongly recommend that you do not alter your Startup-sequence file. Instead, we recommend that you create a file called User-startup in the S:directory. Creating a User-startup file allows you to customize your system at startup while preventing any disruption of the normal booting process. This file is automatically executed by the Startup-sequence before opening Workbench.&lt;br /&gt;
&lt;br /&gt;
{{Note|Do not modify the original Startup-sequence file. Altering your Startup-sequence file can cause fatal system startup errors.}}&lt;br /&gt;
&lt;br /&gt;
The User-startup and other startup files in the S:directory can be modified to run programs at startup, print special introductory messages, or automatically open a Shell window on the Workbench screen. Any AmigaDOS command can appear in a startup script, including commands to execute other scripts.&lt;br /&gt;
&lt;br /&gt;
Refer to Chapters 6 and 7 for complete specifications about each command before making changes to any existing script.&lt;br /&gt;
&lt;br /&gt;
= Editing Startup Files =&lt;br /&gt;
&lt;br /&gt;
If you have a floppy-only system, make changes to your startup files only if you are working on a copy of your Workbench disk, not the original. If you make a mistake in your startup files and the execution of the Startup-sequence is aborted, only a Shell prompt remains. Normally, the FAILAT 21 command ensures that the Startup-sequence completes execution even after an error.&lt;br /&gt;
&lt;br /&gt;
As long as you do not alter your standard Startup-sequence file, the possibility of a serious startup error is unlikely. If you attempt to boot from a disk that has no file named S:Startup-sequence or there is serious error in the startup process, you may see a screen similar to that shown in Figure D-2.&lt;br /&gt;
&lt;br /&gt;
[[File:DosFigD-2.png|center|frame|AmigaDOS Boot Failure Shell Window]]&lt;br /&gt;
&lt;br /&gt;
This is a Shell window at which you can enter commands, but from which your usual aliases and search path may not be available. This Shell allows you to try to edit the startup file that caused the problem. Because the system has not been fully configured, this can be difficult. It is usually easier to reboot using a different disk.&lt;br /&gt;
&lt;br /&gt;
When editing your User-startup file:&lt;br /&gt;
&lt;br /&gt;
* Be sure to use the correct command syntax. Test any commands you plan to insert into the User-startup in a Shell window first. If a command works properly in the Shell, it should work as expected in the User-startup.&lt;br /&gt;
* Pay attention to the order of commands commands:order of commands in script in the script. Some commands, such ECHOcommands:ECHO and RESIDENT, can be put anywhere. However, when inserting commands that refer to directories and files, an error can result if you reference anything that has not yet been created, assigned, or given a valid path.&lt;br /&gt;
* Specify the complete path to directories that you wish to access.&lt;br /&gt;
* Add commands to your scripts. If you insert a semicolon at the end of a command line, anything to the right of the semicolon is ignored by AmigaDOS, but appears in the script as a comment. For example:&lt;br /&gt;
: ASSIGN T: RAM:T ; set up directory for scripts&lt;br /&gt;
: explains why you inserted the command.&lt;br /&gt;
* Test changes to your User-startup file. When experimenting with your User-startup file, reboot your Amiga after each change to test the result. However, be sure to wait until you are sure the file is completely written to disk before the reboot to avoid potential data loss.&lt;br /&gt;
&lt;br /&gt;
== Common Additions to the Startup Files ==&lt;br /&gt;
&lt;br /&gt;
The following is a list of some of the most common additions that can be made to your startup files.&lt;br /&gt;
&lt;br /&gt;
* Opening a Shell window&lt;br /&gt;
* Adding directories to the search path&lt;br /&gt;
* Adding logical device names to the assign list&lt;br /&gt;
* Making additional commands resident&lt;br /&gt;
* Starting input commodities and other programs&lt;br /&gt;
* Adding drive cache buffers&lt;br /&gt;
&lt;br /&gt;
= Using PIPE: =&lt;br /&gt;
&lt;br /&gt;
The PIPE: device transfers data from one program to another using temporary storage in RAM. Use a pipe: when you wish to apply output from one process as input to another process. Using a pipe to transfer data reduces the possibility of running out of memory when working with very large files and eliminates the need to create, save, and later delete a file needed only once.&lt;br /&gt;
&lt;br /&gt;
The yource and destination processes cannot be the same when using PIPE:. As you write information to the pipe, another process can read the data in First In First Out (FIFO) order. Providing a name after PIPE: gives the pipe a name.&lt;br /&gt;
&lt;br /&gt;
Data sent to PIPE: is buffered in memory. When another application reds the pipe it gets the data in the order it came in. The pipe stays in RAM until its contents are emptied by the reading processes or until the next reboot.&lt;br /&gt;
&lt;br /&gt;
PIPE: uses at least a 4 KB buffer per pipe-name. When the maximum buffer capacity is reached, PIPE: stops accepting data until another process reads data out of the buffer. If a process is reading data, it waits until more data arrives in the buffer. Buffer size can only be specified on the first reference to a particular channel.&lt;br /&gt;
&lt;br /&gt;
The following are the options for PIPE:PIPE:options.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| channel_name || A unique channel name. Must begin with a non-numeric character. The channel_name is optional; using PIPE: alone is possible if not using multiple pipes.&lt;br /&gt;
|-&lt;br /&gt;
| Buf_size || Size in bytes of the buffer to allocate. (The default size is 4 KB). The buf_size is optional.&lt;br /&gt;
|-&lt;br /&gt;
| max_buffers || Maximum number of buffers allowed. Suspends the output channel if exceeded. Max_buffers = 0 indicates there should be no fixed limit on the number of buffers allocated.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
PIPE: can be used from other programs, such as word processors or terminal programs. You can use any pipe-name. If the application reads the file sequentially, you can specify PIPE:&amp;lt;name&amp;gt; and it appears the same as an ordinary file to the application.&lt;br /&gt;
&lt;br /&gt;
Information from one pipe can be copied to another. For example:&lt;br /&gt;
&lt;br /&gt;
Shell window 1:&lt;br /&gt;
 COPY Hugefile PIPE:a&lt;br /&gt;
&lt;br /&gt;
Shell window 2:&lt;br /&gt;
 COPY PIPE:a PIPE:b&lt;br /&gt;
&lt;br /&gt;
Shell window 3:&lt;br /&gt;
 COPY PIPE:b PIPE:c&lt;br /&gt;
&lt;br /&gt;
Shell window 4:&lt;br /&gt;
 COPY PIPE:b PIPE:d&lt;br /&gt;
&lt;br /&gt;
Shell window 5:&lt;br /&gt;
 COPY PIPE:d PIPE:e&lt;br /&gt;
&lt;br /&gt;
Shell window 6:&lt;br /&gt;
 TYPE PIPE:e ;Hugefile is TYPEd&lt;br /&gt;
&lt;br /&gt;
The DOSDrivers mount file for PIPE: mount files:for PIPE:is as follows:&lt;br /&gt;
&lt;br /&gt;
 Handler = L:Queue Handler&lt;br /&gt;
 Priority = 5&lt;br /&gt;
 StackSize = 3000&lt;br /&gt;
 GlobVec = -1&lt;br /&gt;
&lt;br /&gt;
PIPE: is mounted by default during the standard Startup-sequence.&lt;br /&gt;
&lt;br /&gt;
See Chapter 8 for additional PIPE: examples.&lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=UserDoc:How_AmigaOS_Works&amp;diff=7917</id>
		<title>UserDoc:How AmigaOS Works</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=UserDoc:How_AmigaOS_Works&amp;diff=7917"/>
		<updated>2015-05-29T06:44:08Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: /* Volumes */ Added reference to C: autodocs and corrected usage&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As already mentioned, AmigaOS was a pioneer in the early days of personal computing in delivering sophistication that contemporary systems could only have dreamt of and pretended to offer. Today, AmigaOS continues to offer a straightforward elegance that seems to be overlooked in the development of other platforms. Thanks to the concepts behind AmigaOS, the system is easy to understand and to use by everyone.&lt;br /&gt;
&lt;br /&gt;
In this page we will explore all these concepts of AmigaOS. Also you will learn here the naming of all parts of the system.&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
AmigaOS is made of different components which are either mandatory (i.e.,  AmigaOS will not work without them) or components the user can choose to use or not. All these components can have one or mutiple interfaces a user or a developer can use to operate with the components and through them to control the operating system.&lt;br /&gt;
&lt;br /&gt;
= The most important components =&lt;br /&gt;
&lt;br /&gt;
== Exec, the AmigaOS kernel ==&lt;br /&gt;
&lt;br /&gt;
Exec is the kernel of AmigaOS. It is the component that pilots all other components. It is responsible for running programs, dealing with computer memory and managing low-level resources that programs may need. In other words, it organises everything to make the operating system run.&lt;br /&gt;
&lt;br /&gt;
It is made of different parts that cannot be moved outside the kernel: the scheduler, the memory pager and the 68k interpretive emulator.&lt;br /&gt;
&lt;br /&gt;
== AmigaDOS: the underlying system ==&lt;br /&gt;
&lt;br /&gt;
The word &amp;quot;DOS&amp;quot; was originally an acronym for &amp;quot;Disk Operating System&amp;quot;. Some say it should be &amp;quot;Disk Based Operating System&amp;quot; as it does a lot more than operate a disk and that it was really an operating system based (stored) on disks.  Some say it should be &amp;quot;Device Operating System&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The whole AmigaDOS system includes things such as:&lt;br /&gt;
&lt;br /&gt;
* A set of commands that can be used in the Shell window and elsewhere.&lt;br /&gt;
* A system for saving data to disk and retrieving it from disk.&lt;br /&gt;
* A system for filing data on disks.&lt;br /&gt;
* An interface for peripherals such as keyboards, monitors, printers, etc.&lt;br /&gt;
* A method of running programs&lt;br /&gt;
* A multitasking system for running more than one program at a time.&lt;br /&gt;
* etc. etc. etc.&lt;br /&gt;
&lt;br /&gt;
Read the [[AmigaDOS manual]] to understand and learn everything about AmigaDOS.&lt;br /&gt;
&lt;br /&gt;
== The Graphics library ==&lt;br /&gt;
&lt;br /&gt;
The Graphics library handles every low level graphic operation like designing pixels on the monitor, creating graphic elements (bobs, sprites) and also writing text output.&lt;br /&gt;
&lt;br /&gt;
== Intuition ==&lt;br /&gt;
&lt;br /&gt;
The Intuition library is responsible for every graphical object: windows, screens, gadgets, mouse pointers... It lies between any graphic program and the graphics library.&lt;br /&gt;
&lt;br /&gt;
== The Workbench ==&lt;br /&gt;
&lt;br /&gt;
The Workbench is the graphical place where you will manage your computer and all your files. The name was chosen because the user will use tools to create and work with the computer.&lt;br /&gt;
&lt;br /&gt;
[[File:Wb.png|320px]]&lt;br /&gt;
&lt;br /&gt;
== The Shell ==&lt;br /&gt;
&lt;br /&gt;
While some people prefer to control the operating system using their mouse, others prefer using the keyboard. The shell is a text based window when you can type commands to execute actions in the operating system. In the shell the commands will display the results of their execution.&lt;br /&gt;
&lt;br /&gt;
== ARexx - inter-program communication by scripting ==&lt;br /&gt;
&lt;br /&gt;
The ARexx scripting language can be used to operate the Workbench and other Amiga applications from a script containing ARexx commands. This is extremely useful in performing repetitive tasks or doing what the controlled application was not even designed to do.&lt;br /&gt;
After a learning curve, everybody can use ARexx as it is built into the system.  The scripts can be executed immediately like any other tool.&lt;br /&gt;
&lt;br /&gt;
= How is my data stored? =&lt;br /&gt;
== Files ==&lt;br /&gt;
=== Executable files ===&lt;br /&gt;
Programs you can start are stored in executable files. They contain binary code directly understandable by the computer. They are files with an executable bit, a flag that shows AmigaOS that such file will do something when started.&lt;br /&gt;
An example is a music player. When you start this executable, the player opens and you can start playing music files.&lt;br /&gt;
&lt;br /&gt;
AmigaOS can run two different kinds of executable files: the AmigaOS native programs made for the PowerPC processor and programs created for the Motorola 68k processors. The latter are executed inside an emulation that transcripts them into PowerPC code.&lt;br /&gt;
&lt;br /&gt;
==== Scripts ====&lt;br /&gt;
&lt;br /&gt;
Scripts are text files containing a list of commands.  They are not strictly executables like &#039;&#039;binary code&#039;&#039; files but they can be executed by AmigaOS as if they were.&lt;br /&gt;
This is the case with AmigaDOS and ARexx scripts. These files need to have the executable bit, and the script bit.&lt;br /&gt;
&lt;br /&gt;
=== Data files ===&lt;br /&gt;
Files that are not executable are data files. These contain data that will be manipulated by programs. Some examples are a music file, a video file or a text document.&lt;br /&gt;
&lt;br /&gt;
== Directories/Drawers ==&lt;br /&gt;
In order to organise things, files are grouped together. We create &amp;quot;directories&amp;quot; which are like drawers of a cabinet to store different files of the same kind, for example.  &lt;br /&gt;
Often the name &#039;&#039;directory&#039;&#039; is used when talking about a directory which is stored on a disk. The graphical interface of AmigaOS is called &amp;quot;Workbench,&amp;quot; and directories are often called &#039;&#039;drawers&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Note: directories are often called &#039;&#039;folders&#039;&#039; on other systems.  The terms &amp;quot;directory,&amp;quot; &amp;quot;drawer&amp;quot; and &amp;quot;folder&amp;quot; are synonymous.&lt;br /&gt;
&lt;br /&gt;
== Disks, partitions and volumes ==&lt;br /&gt;
=== Disks ===&lt;br /&gt;
Disks are storage media you can purchase at a computer store. We use them to store our files. They can be internal hard disks, external hard drives, USB interface devices (i.e., SD cards, CF cards, &amp;quot;flash&amp;quot; drives, etc.), and floppy disk drives.&lt;br /&gt;
&lt;br /&gt;
=== Partitions ===&lt;br /&gt;
A disk is often very big and many users prefer to make it more organised. This is done by virtually splitting the disk into several smaller parts. This operation is known as creating partitions on a disk.&lt;br /&gt;
&lt;br /&gt;
[[File:Partitions.png|Small part of Media Toolbox showing different partitions on the harddisk]]&lt;br /&gt;
&lt;br /&gt;
On this screenshot you can see one harddisk with many partitions. Each color corresponds to a different filesystem which defines how data is stored. Also, you can see a greyed area which is a blank area on the disk (i.e., no partition is defined at this position).  Several different file systems can be used on the same Amiga drive.  It&#039;s your choice.&lt;br /&gt;
&lt;br /&gt;
=== Volumes ===&lt;br /&gt;
A partition is a physical area on a disk. To access it with AmigaOS we could read the physical data off the partition. To make it easier AmigaOS uses the concept of volumes. These are virtual representations of a partition. The volumes have a name so AmigaOS and therefore the user can access all files/directories stored on it in a very practical way: just by using its name.&lt;br /&gt;
&lt;br /&gt;
Volume names can refer to either a physical or virtual named space.  See the autodoc section for the ASSIGN command in the C: directory as well as the MOUNT command which provides more information on naming and the concept of volumes.&lt;br /&gt;
&lt;br /&gt;
= How to identify files/directories =&lt;br /&gt;
&lt;br /&gt;
== On the Workbench ==&lt;br /&gt;
&lt;br /&gt;
The Workbench being graphical, a lot of things are understandable just by looking at them. That&#039;s why icons are often enough to understand what kind of object it represents: a file, a directory, a disk...&lt;br /&gt;
&lt;br /&gt;
In case you have a doubt, just look at the information on an icon. The Workbench will tell you the type of the object. It is displayed next to its name.&lt;br /&gt;
&lt;br /&gt;
== In a shell ==&lt;br /&gt;
&lt;br /&gt;
In a shell the &#039;&#039;&#039;list&#039;&#039;&#039; command can be used to see if an object is a file or a directory.&lt;br /&gt;
&lt;br /&gt;
[[File:Files-dirs-in-shell.png|The &#039;&#039;&#039;list&#039;&#039;&#039; command shows a file of 925678 bytes and two directories]]&lt;br /&gt;
&lt;br /&gt;
A file will be displayed with its size, whereas a directory will be displayed with the text &#039;&#039;&#039;Dir&#039;&#039;&#039; next to it.&lt;br /&gt;
&lt;br /&gt;
Also, as you can see on the screenshot, the list command displays other characteristics on these 3 items: the protection bits and the date they were updated the last time. The command also sums up what it just listed.&lt;br /&gt;
&lt;br /&gt;
= All AmigaOS components =&lt;br /&gt;
&lt;br /&gt;
AmigaOS is made of components that are needed as soon as the system starts or later when the user or the system needs them.&lt;br /&gt;
&lt;br /&gt;
== Kickstart modules ==&lt;br /&gt;
&lt;br /&gt;
These components are the heart of AmigaOS. Their duties is to do graphics, to handle discs or to handle all reads/writes to files. Also one of them is the AmigaOS kernel which is a kind of director handling the work of all other components.&lt;br /&gt;
These Kickstart modules are loaded at the beginning of the operating system boot process (read [[UserDoc:How_AmigaOS_Works#AmigaOS_boot_procedure|here]]). You can find all them in the &#039;&#039;&#039;Kickstart&#039;&#039;&#039; directory in the system volume. Here is a list:&lt;br /&gt;
&lt;br /&gt;
=== Mandatory modules ===&lt;br /&gt;
&lt;br /&gt;
The following modules are required in any AmigaOS system. Without one of these, the system will not start.&lt;br /&gt;
&lt;br /&gt;
* kernel - The kernel works like a conductor in an orchestra. Its job is to make everything works together. It creates processes, handle memory usage, defines the way other components will access peripherals...etc. Note that the AmigaOS kernel is not based on any other kernel. It is a self made kernel that works since 1983.&lt;br /&gt;
* loader - this component handles the loading of all other kickstart modules&lt;br /&gt;
* battclock.resource.kmod - this module handles reading/writing the battery backed up clock which is used on all computers to keep the date and time&lt;br /&gt;
* bootimage - this is the boot picture. It is displayed during the start sequence of AmigaOS&lt;br /&gt;
* bootmenu.kmod - this component handles the Early Startup Menu the use can use to define some settings before starting AmigaOS&lt;br /&gt;
* con-handler.kmod - it directs the read and write requests to the console window, to a serial AUX: device or any other supported interface&lt;br /&gt;
* console.device.kmod - it opens a window and reads/writes text to and from that window&lt;br /&gt;
* diskboot.kmod - handles the booting of AmigaOS from a supported disk&lt;br /&gt;
* diskboot.config - this is a text file experienced users can modify to change the boot behaviour of AmigaOS&lt;br /&gt;
* dos.library.kmod - this module is a collection of functions that any program can use to perform actions on disks, files and directories&lt;br /&gt;
* elf.library.kmod - handles the loading of executable programs&lt;br /&gt;
* env-handler.kmod - handles the read/writes of environment variables&lt;br /&gt;
* FileSystem.resource.kmod - handles the use of the different filesystems&lt;br /&gt;
* gadtools.library.kmod - collection of functions used to create all graphic objects like gadgets, sliders, menus...&lt;br /&gt;
* gameport.device.kmod - handles the read/writes of game pads and joysticks&lt;br /&gt;
* graphics.library.kmod - collection of functions used to draw graphic elements on the monitor&lt;br /&gt;
* hunk.library.kmod - set of functions to read a data stream into memory&lt;br /&gt;
* input.device.kmod - handles of input events like keyboard events or mouse clicks&lt;br /&gt;
* intuition.library.kmod - collection of functions to create and handle all graphic elements (screens, windows, the mouse pointer...)&lt;br /&gt;
* layers.library.kmod - set of functions to be used to handle different layers in graphic operations&lt;br /&gt;
* keyboard.device.kmod - driver for the keyboard&lt;br /&gt;
* keymap.library.kmod - functions to handle different keymaps&lt;br /&gt;
* newlib.library.kmod - collection of functions to perform memory operations (allocating memory, copying memory areas... )&lt;br /&gt;
* nonvolatile.library.kmod - provides a simple means for an application developer to manage nonvolatile storage&lt;br /&gt;
* nvram.resource.kmod - handles the read/writes to the EEPROM chip present on many AmigaOS computers&lt;br /&gt;
* PCIGraphics.card - driver that supports the use of different graphic cards&lt;br /&gt;
* ram-handler.kmod - functions that handles the &#039;&#039;&#039;Ram disk:&#039;&#039;&#039; special disk&lt;br /&gt;
* ramdrive.device.kmod - device that allows the usage of the ramdrive device &#039;&#039;&#039;RAD:&#039;&#039;&#039; disk&lt;br /&gt;
* ramlib.kmod - loads disk based libraries and devices for exec.library&lt;br /&gt;
* rtg.library - library of functions to perform lowlevel graphic operations on graphic cards&lt;br /&gt;
* shell.kmod - the AmigaOS command line interface&lt;br /&gt;
* strap.kmod - module that handles booting on different disk devices&lt;br /&gt;
* timer.device.kmod - driver to give access to timing functions&lt;br /&gt;
&lt;br /&gt;
=== Filesystem support ===&lt;br /&gt;
&lt;br /&gt;
These kickstart modules can be loaded or left aside. If you want to use a particular filesystem on your disk partitions, you need to load the corresponding filesystem module.&lt;br /&gt;
&lt;br /&gt;
* CDFileSystem - handles the CD-ROM disks with data stored in different formats: ISO9660, HFS...&lt;br /&gt;
* SmartFilesystem - allows the usage of partitions in SFS0 and SFS2 layouts&lt;br /&gt;
* JXFileSystem - allows the usage of partitions in JXFS layout&lt;br /&gt;
* FastFileSystem - allows the usage of partitions in FFS and FFS2 layouts&lt;br /&gt;
* diskcache.library.kmod - component required by the SmartFileSystem and JXFileSystem modules&lt;br /&gt;
&lt;br /&gt;
=== Hardware drivers ===&lt;br /&gt;
&lt;br /&gt;
==== Graphic cards drivers ====&lt;br /&gt;
&lt;br /&gt;
* 3dfxVoodoo.chip&lt;br /&gt;
* 3DLabsPermedia2.chip&lt;br /&gt;
* ATIRadeon.chip&lt;br /&gt;
* RadeonHD.chip&lt;br /&gt;
* siliconmotion502.chip&lt;br /&gt;
&lt;br /&gt;
==== Disk drivers ====&lt;br /&gt;
&lt;br /&gt;
Each of these drivers allow the use of disks connected to a disk controller. These files are named with the name of the controller they support. As an example, the &#039;&#039;&#039;sii3114ide.device.kmod&#039;&#039;&#039; allows to use disks connected on a &#039;&#039;&#039;Silicon Image SiI3114&#039;&#039;&#039; controller chip.&lt;br /&gt;
&lt;br /&gt;
* it8212ide.device.kmod&lt;br /&gt;
* lsi53c8xx.device.kmod&lt;br /&gt;
* sam460sata.device.kmod&lt;br /&gt;
* sii3112ide.device.kmod&lt;br /&gt;
* sii3512ide.device.kmod&lt;br /&gt;
* sii3114ide.device.kmod&lt;br /&gt;
* sii0680ide.device.kmod&lt;br /&gt;
* sii3132ide.device.kmod&lt;br /&gt;
&lt;br /&gt;
==== USB drivers ====&lt;br /&gt;
&lt;br /&gt;
* hub.usbfd&lt;br /&gt;
* usbsys.device&lt;br /&gt;
* usbresource.library&lt;br /&gt;
* ehci.usbhcd&lt;br /&gt;
* ohci.usbhcd&lt;br /&gt;
* uhci.usbhcd&lt;br /&gt;
* massstorage.usbfd&lt;br /&gt;
&lt;br /&gt;
==== Other drivers ====&lt;br /&gt;
&lt;br /&gt;
* bootkeyboard.usbfd - allows a USB keyboard to be used even before the USB stack is loaded&lt;br /&gt;
* bootmouse.usbfd - allows a USB mouse to be used even before the USB stack is loaded&lt;br /&gt;
* fpga.resource.kmod - allows to use the FPGA components which are present on some Amiga computers&lt;br /&gt;
* i2c.resource.kmod - allows to use the i2c interface present on some Amiga computers&lt;br /&gt;
* xena.resource.kmod - provides access to the Xena chip on the AmigaOne X1000&lt;br /&gt;
&lt;br /&gt;
=== Misc modules ===&lt;br /&gt;
&lt;br /&gt;
* petunia.library.kmod - this module contains the Just-In-Time emulator that allows AmigaOS to run programs made for the Motorola 68k processor&lt;br /&gt;
&lt;br /&gt;
== System components ==&lt;br /&gt;
&lt;br /&gt;
[[File:Workbench_directory_listing.png|frame|right|List of directories and files present at the root of any AmigaOS system]]&lt;br /&gt;
&lt;br /&gt;
Beside the kickstart modules, AmigaOS uses many different components that can be loaded only when used. These files are stored in different directories in the system volume.&lt;br /&gt;
Here is described a default AmigaOS installation.&lt;br /&gt;
&lt;br /&gt;
* C&lt;br /&gt;
This directory contains AmigaDOS &#039;&#039;&#039;C&#039;&#039;&#039;ommands&lt;br /&gt;
* Classes&lt;br /&gt;
contains different object elements easy to be used in any program: gadgets, requesters, graphic table, windows...&lt;br /&gt;
* Devs&lt;br /&gt;
contains definition for &#039;&#039;&#039;Dev&#039;&#039;&#039;ices&lt;br /&gt;
* Emulation&lt;br /&gt;
contains files used for the 68k emulation (though E-UAE)&lt;br /&gt;
* Fonts&lt;br /&gt;
contains various systems fonts&lt;br /&gt;
* Internet&lt;br /&gt;
contains a dialer to connect to Internet&lt;br /&gt;
* Kickstart&lt;br /&gt;
contains the kickstart modules&lt;br /&gt;
* L&lt;br /&gt;
contains hand&#039;&#039;&#039;l&#039;&#039;&#039;ers and filesystems&lt;br /&gt;
* Libs&lt;br /&gt;
contains dynamic &#039;&#039;&#039;Libr&#039;&#039;&#039;airies of functions&lt;br /&gt;
* Locale&lt;br /&gt;
contains all files used to localise the system (catalogs, keymaps...)&lt;br /&gt;
* MUI&lt;br /&gt;
contains the needed files for programs that use the MUI third party graphic interface&lt;br /&gt;
* [[Prefs]]&lt;br /&gt;
contains the preference programs used to customise AmigaOS&lt;br /&gt;
* S&lt;br /&gt;
contains the &#039;&#039;&#039;S&#039;&#039;&#039;cripts&lt;br /&gt;
* SObjs&lt;br /&gt;
contains .so shared object library files&lt;br /&gt;
* Storage&lt;br /&gt;
contains other optional files&lt;br /&gt;
* System&lt;br /&gt;
contains some programs used by the system itself (i.e. you don&#039;t need to run them yourself) or low-level programs like disk tools&lt;br /&gt;
* [[Utilities]]&lt;br /&gt;
contains several programs you can use to achieve some tasks on AmigaOS&lt;br /&gt;
&lt;br /&gt;
= Motorola 680x0 Emulators =&lt;br /&gt;
&lt;br /&gt;
For a long time Amigas have had the famous Motorola 680x0 processors as the central unit for execution. Unfortunately the time of the 680x0 series is passing in favor of other architectures. The new era of processors reached the Amiga some time ago, when expansion boards became available for extending the Classic systems with the raw power of a PowerPC processor.&lt;br /&gt;
&lt;br /&gt;
In the old operating system (AmigaOS 3.x) it was not possible to gain the full advantage of the new processors. The system itself and most of the applications required the original Motorola 680x0 processor. There was no 680x0 emulation available for the PowerPCs, so the 680x0 could not be &amp;quot;switched off&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Thus the new processors remained as a powerful, but mostly unused adjunct to the main 680x0 processor. &amp;quot;Native&amp;quot; PowerPC programs were rare, and every time a PowerPC program called the system, a so called &amp;quot;context switch&amp;quot; occurred between the 680x0 and PowerPC code, often causing a large performance penalty.&lt;br /&gt;
&lt;br /&gt;
The new Amiga platform is based on the PowerPC processor family, therefore the new version of the AmigaOS has to smooth the transition from the 680x0 series, which is achieved by emulating the old processor architecture. The operating system itself is written almost 100 percent for the PowerPC processors, but the 680x0 legacy applications require an emulated 680x0 processor. &lt;br /&gt;
&lt;br /&gt;
== Two 680x0 Emulators ==&lt;br /&gt;
&lt;br /&gt;
In version 4.0 of AmigaOS, two different emulators were implemented; one is the successor of BlackBox emulation, it is an interpretive emulator, thus the emulation speed is mediocre. On the other hand it has a very low &amp;quot;reaction time&amp;quot;, and is ideal for time critical parts, such as interrupts.&lt;br /&gt;
&lt;br /&gt;
The other is Petunia, the &amp;quot;JIT emulator&amp;quot;. A fast, but less compatible way of emulation of the legacy Motorola processors. It is intended mainly for emulating applications, and therefore, when execution of the application leaves the bounds of the application&#039;s code segment, emulation falls back to the interpretive method, where it does its job and returns to the JIT emulation again.&lt;br /&gt;
&lt;br /&gt;
Dynamic recompilation (also called just-in-time compilation or simply JIT compilation) is a technique of translating foreign processor machine code to native machine code, &amp;quot;on the fly&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This technique is common nowadays, commonly applied in JAVA virtual machines, and it is also used with success in several emulators. In dynamic recompilation there is the possibility of runtime optimization of the emulated code by collecting statistics of the execution process. Therefore (theoretically) the final executed code can be even faster than the original code on its original processor.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Emulated opcodes:&lt;br /&gt;
* all user and supervisor level opcodes of the Motorola 68040&lt;br /&gt;
* all FPU opcodes of the Motorola 68881/68882 &lt;br /&gt;
&lt;br /&gt;
AmigaOS claims only 68020/68881 compatibility to applications because this is the safest compatibility level, but both emulators are compatible with the machine code up to the level of 68040/060 processors.&lt;br /&gt;
&lt;br /&gt;
At compile time, a low level flag and branch control analysis allows on-the-fly optimizations of compiled code.&lt;br /&gt;
&lt;br /&gt;
== Removing the JIT Emulator ==&lt;br /&gt;
&lt;br /&gt;
Using the dynamic translation requires a lot more memory than the interpretive emulation. The translated code needs to be stored somewhere, not to mention the data collection tables.&lt;br /&gt;
&lt;br /&gt;
If speed is not as important as the memory consumption of the system, then the JIT emulator can be removed, leaving the job to the interpretive emulator.&lt;br /&gt;
&lt;br /&gt;
Thanks to the modular design of AmigaOS kickstart, all you need to do is edit the &amp;quot;Sys:Kickstart/Kicklayout&amp;quot; file, simply put a semicolon (;) at the beginning of the module line of Petunia.library.kmod. After rebooting the system from cold, the JIT emulator will not be reloaded. Make sure that you alter the appropriate configuration in the Kicklayout file, there may be several alternative configurations, with different names like &amp;quot;DefaultJIT&amp;quot;, or &amp;quot;DefaultNoJIT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Configuring the Emulators ==&lt;br /&gt;
&lt;br /&gt;
Petunia cooperates with a so called &amp;quot;black list&amp;quot;. By default Petunia emulates every 680x0 program or library that is loaded by DOS.library/LoadSeg function, but if an executable or library shows incompatibilities with Petunia, then it can be explicitly inhibited from the dynamic recompilation by specifying it in a list file.&lt;br /&gt;
&lt;br /&gt;
If an executable needs to be added to the list, then it can be done by extending the file &amp;quot;DEVS:applications.dos&amp;quot; with the &#039;&#039;&#039;Compatibility&#039;&#039;&#039; preferences program from the Prefs drawer of the system. Adding a program name to the list and checking it will prevent Petunia from emulating that program, and it will be interpreted instead by the built-in interpreter.&lt;br /&gt;
&lt;br /&gt;
Removing a program from the list or unchecking (thus allowing Petunia to emulate it again) can be done with the same preferences program.&lt;br /&gt;
&lt;br /&gt;
Please note: some programs consist of multiple executables (shared libraries, plugins). If you want to fully disable the translation of such programs, then every part must be added to the list.&lt;br /&gt;
&lt;br /&gt;
For example to disable UnArc fully, you would have to add all files from libs:xad and also xadmaster.library to the list. &lt;br /&gt;
&lt;br /&gt;
= AmigaOS boot procedure =&lt;br /&gt;
&lt;br /&gt;
Basically a computer with AmigaOS does the following when the power button is pushed:&lt;br /&gt;
&lt;br /&gt;
* [[File:Uboot.jpg|200px]]&lt;br /&gt;
the BIOS ([[UserDoc:BIOS|Uboot]] or [[UserDoc:BIOS|CFE]]) of the computer initialises the hardware: graphic card, USB ports... At this point, the monitor wakes up and the first information are displayed. This allows to see if hardware is correctly recognised. As an example you can see if a hard drive is correctly connected into the machine and your BIOS is correctly setup to make this drive useable.&lt;br /&gt;
* depending on how you setup the BIOS it will look on the harddisk to find the Second Level Booter (SLB). This program is stored on the first sectors of the disk. Whereas the BIOS does not know about AmigaOS disk structure, the SLB will be able to &#039;&#039;understand&#039;&#039; the AmigaOS partitions and files. In other words, it is the link between the BIOS and the rest of the boot procedure. Its goal is also to give you the ability to start several configurations present on the same drive.&lt;br /&gt;
* [[File:SLB.png|200px]]&lt;br /&gt;
the SLB will analyses all Amiga partitions on the disk it is installed on. It will read each [[UserDoc:kickstart_configuration|system configuration]] it finds on the partitions. It will show all available configurations for the user to select one to load.&lt;br /&gt;
The user can define many different kickstart configurations to choose from. Also both AmigaOS and Linux can be selected for boot.&lt;br /&gt;
* [[File:Kmods loading.png|200px]]&lt;br /&gt;
the SLB loads the kickstart files of the selected configuration and executes the &#039;&#039;&#039;Loader&#039;&#039;&#039; module&lt;br /&gt;
* &#039;&#039;&#039;Loader&#039;&#039;&#039; executes the kickstart modules (Exec, devices, libraries...)&lt;br /&gt;
* AmigaOS becomes alive displaying the AmigaOS boot picture on the monitor&lt;br /&gt;
* the AmigaDOS library executes the [[UserDoc:System_Scripts#startup-sequence|startup-sequence]] script found on the system volume&lt;br /&gt;
* the Startup-sequence will be executed and all commands it contains are executed. It means that starting from here the boot procedure is easy to follow and understand.&lt;br /&gt;
* the Workbench is started&lt;br /&gt;
&lt;br /&gt;
At this point the user can use his/her computer.&lt;br /&gt;
&lt;br /&gt;
= How to make a Bootable USB Memory Stick for AmigaOS 4.1 =&lt;br /&gt;
&lt;br /&gt;
By Julian Margetson (&amp;quot;Spectre660&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Prerequisites:&lt;br /&gt;
* USB memory stick of 2 GB or less in size.&lt;br /&gt;
* It is best to only have one USB mass storage device connected while you are creating your bootable USB memory stick.&lt;br /&gt;
* Plug the USB memory stick into a USB port on your machine.&lt;br /&gt;
* Note that the device will be formatted so make sure that you use an empty memory stick or one that does not contain any data that you need or backup the contents before you begin.&lt;br /&gt;
&lt;br /&gt;
Procedure:&lt;br /&gt;
# You use Media Toolbox in the System: drawer to prepare the USB stick. On starting Media Toolbox select &#039;&#039;usbdisk.device&#039;&#039; as the device to use.&lt;br /&gt;
# Make certain that you have selected usbdisk.device and not any other device.&lt;br /&gt;
# Click on &amp;quot;Start&amp;quot;&lt;br /&gt;
# You will see the usb mass storage unit connected in a list.&lt;br /&gt;
# Make sure that the Unit type displayed for the USB memory stick is &amp;quot;Removable hard disk&amp;quot;&lt;br /&gt;
# Select that Unit by clicking on it.&lt;br /&gt;
# The first thing that you need to do is to install the RDB onto the USB Memory Stick.&lt;br /&gt;
# Click on the  &amp;quot;Install&amp;quot; button.&lt;br /&gt;
# A window Labeled &amp;quot;RDB/disk geometry editing&amp;quot; comes up.&lt;br /&gt;
## Towards the bottom of the window is the &amp;quot;AmigaOne boot code (SLB)&amp;quot; section.&lt;br /&gt;
## Select the &amp;quot;Install&amp;quot; button .&lt;br /&gt;
## A file requester  &amp;quot;Select AmigaOne Boot Code&amp;quot; now comes  up with the Drawer choice defaulting to &amp;quot;l:&amp;quot;&lt;br /&gt;
## Select file &amp;quot;slb_v2&amp;quot;. &lt;br /&gt;
## Select Ok.&lt;br /&gt;
## You are now returned to the &amp;quot;RDB/disk geometry editing window&amp;quot;.&lt;br /&gt;
## Select &amp;quot;Ok-accept changes&amp;quot;.&lt;br /&gt;
# You are now returned to the display showing the attached USB unit.&lt;br /&gt;
# Select &amp;quot;Edit partitions and Filesystems&amp;quot;. You will now see the Window &#039;Editing partitions for disk&amp;quot;&lt;br /&gt;
# Select &amp;quot;Add partition&amp;quot;&lt;br /&gt;
# This defaults to using the whole device as a single partition.&lt;br /&gt;
# It is possible to use create more partitions but for this tutorial we will only use one.&lt;br /&gt;
# You now need to give the partition a unique name (e.g. USB0 or something that is different from any of the existing partitions on your hard drive). This is done by changing the default DH0 in the &amp;quot;Name&amp;quot; box.&lt;br /&gt;
# Now make sure that the Boxes &amp;quot;Automount&amp;quot; and &amp;quot;Bootable&amp;quot; are  selected and show the &amp;quot;Tick mark&amp;quot;.&lt;br /&gt;
# You need to set &amp;quot;Boot priority&amp;quot; to higher than the boot priority of your hard drive boot partition(s). This is done by increasing Boot priority by clicking on the &amp;quot;+&amp;quot; to the right of the &amp;quot;boot priority&amp;quot; box. Normally you can set the boot priority to 2 .&lt;br /&gt;
# Next it is time to select the file system to use.&lt;br /&gt;
# Select &amp;quot;Select filesystem/edit details&amp;quot;.&lt;br /&gt;
# The Window &amp;quot;Editing details for partition &#039;USB0&#039;&amp;quot;  ,or whatever partition name you used, comes up.&lt;br /&gt;
## Select the file system that you are going to use by selecting the pull down menu under &amp;quot;Filesystem chooser&amp;quot;.&lt;br /&gt;
## Only filesystems SFS/00 or SFS/02 will work for a bootable device.&lt;br /&gt;
## The option that gives the most flexibility at the moment is SFS/00 as a USB stick in this format can be read and written to using another compatible system in the event that you need to make modifications after it is created without a booting AmigaOS 4.1 machine.&lt;br /&gt;
## Next select Blocksize from the &amp;quot;Blocksize&amp;quot; pull down menu. 512 is the correct size to use.&lt;br /&gt;
## Now Select &amp;quot;Ok-accept changes&amp;quot;.&lt;br /&gt;
## Your are now returned to the &amp;quot;Edit partitions for disk&amp;quot; window.&lt;br /&gt;
## Again select &amp;quot;Ok-accept changes&amp;quot;&lt;br /&gt;
# You are now returned to the window showing the USB mass storage unit list.&lt;br /&gt;
# Select &amp;quot;Save to disk&amp;quot;&lt;br /&gt;
# A requester pops up with the options &amp;quot;Yes, Save.&amp;quot; or &amp;quot;No!&amp;quot;&lt;br /&gt;
# Select the &amp;quot;Yes, save.&amp;quot; option.&lt;br /&gt;
# You now close Media Toolbox by clicking on the close icon (X) on the left of the Media Toolbox window.&lt;br /&gt;
# This will give you a requester advising that you need to reboot the machine for the changes to take effect. At this point you need to remove the USB memory stick for the machine. If you do not then the Machine will attempt boot from it before it is formatted and the required Kickstart and AmigaOS 4.1 files are copied to it.&lt;br /&gt;
# Select &amp;quot;Yes, reboot NOW!&amp;quot;.&lt;br /&gt;
# Once you have rebooted connect your USB Memory Stick to a USB port.&lt;br /&gt;
# A disk icon &amp;quot;USB0:Uninitialized&amp;quot; (or whatever partition name you used) appears on Workbench.&lt;br /&gt;
# You now need to format the device.&lt;br /&gt;
# To format Select this Icon and go to the Workbench &amp;quot;Icons&amp;quot; menu .&lt;br /&gt;
# Select &amp;quot;Format Disk&amp;quot;&lt;br /&gt;
# You can give the USB Memory Stick a unique name and  select whether you want a Trashcan or not.&lt;br /&gt;
# You can use either a full Format or a  Quick Format. Full Format may take a few minutes.&lt;br /&gt;
# Once formatted the USB Memory Stick is ready for you to copy the required files from you hard drive or AmigaOS Install CD to it in order to boot AmigaOS 4.1 from it.&lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=UserDoc:How_AmigaOS_Works&amp;diff=7916</id>
		<title>UserDoc:How AmigaOS Works</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=UserDoc:How_AmigaOS_Works&amp;diff=7916"/>
		<updated>2015-05-29T06:30:28Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: /* Partitions */ corrected usage, added multiple file system comment.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As already mentioned, AmigaOS was a pioneer in the early days of personal computing in delivering sophistication that contemporary systems could only have dreamt of and pretended to offer. Today, AmigaOS continues to offer a straightforward elegance that seems to be overlooked in the development of other platforms. Thanks to the concepts behind AmigaOS, the system is easy to understand and to use by everyone.&lt;br /&gt;
&lt;br /&gt;
In this page we will explore all these concepts of AmigaOS. Also you will learn here the naming of all parts of the system.&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
AmigaOS is made of different components which are either mandatory (i.e.,  AmigaOS will not work without them) or components the user can choose to use or not. All these components can have one or mutiple interfaces a user or a developer can use to operate with the components and through them to control the operating system.&lt;br /&gt;
&lt;br /&gt;
= The most important components =&lt;br /&gt;
&lt;br /&gt;
== Exec, the AmigaOS kernel ==&lt;br /&gt;
&lt;br /&gt;
Exec is the kernel of AmigaOS. It is the component that pilots all other components. It is responsible for running programs, dealing with computer memory and managing low-level resources that programs may need. In other words, it organises everything to make the operating system run.&lt;br /&gt;
&lt;br /&gt;
It is made of different parts that cannot be moved outside the kernel: the scheduler, the memory pager and the 68k interpretive emulator.&lt;br /&gt;
&lt;br /&gt;
== AmigaDOS: the underlying system ==&lt;br /&gt;
&lt;br /&gt;
The word &amp;quot;DOS&amp;quot; was originally an acronym for &amp;quot;Disk Operating System&amp;quot;. Some say it should be &amp;quot;Disk Based Operating System&amp;quot; as it does a lot more than operate a disk and that it was really an operating system based (stored) on disks.  Some say it should be &amp;quot;Device Operating System&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The whole AmigaDOS system includes things such as:&lt;br /&gt;
&lt;br /&gt;
* A set of commands that can be used in the Shell window and elsewhere.&lt;br /&gt;
* A system for saving data to disk and retrieving it from disk.&lt;br /&gt;
* A system for filing data on disks.&lt;br /&gt;
* An interface for peripherals such as keyboards, monitors, printers, etc.&lt;br /&gt;
* A method of running programs&lt;br /&gt;
* A multitasking system for running more than one program at a time.&lt;br /&gt;
* etc. etc. etc.&lt;br /&gt;
&lt;br /&gt;
Read the [[AmigaDOS manual]] to understand and learn everything about AmigaDOS.&lt;br /&gt;
&lt;br /&gt;
== The Graphics library ==&lt;br /&gt;
&lt;br /&gt;
The Graphics library handles every low level graphic operation like designing pixels on the monitor, creating graphic elements (bobs, sprites) and also writing text output.&lt;br /&gt;
&lt;br /&gt;
== Intuition ==&lt;br /&gt;
&lt;br /&gt;
The Intuition library is responsible for every graphical object: windows, screens, gadgets, mouse pointers... It lies between any graphic program and the graphics library.&lt;br /&gt;
&lt;br /&gt;
== The Workbench ==&lt;br /&gt;
&lt;br /&gt;
The Workbench is the graphical place where you will manage your computer and all your files. The name was chosen because the user will use tools to create and work with the computer.&lt;br /&gt;
&lt;br /&gt;
[[File:Wb.png|320px]]&lt;br /&gt;
&lt;br /&gt;
== The Shell ==&lt;br /&gt;
&lt;br /&gt;
While some people prefer to control the operating system using their mouse, others prefer using the keyboard. The shell is a text based window when you can type commands to execute actions in the operating system. In the shell the commands will display the results of their execution.&lt;br /&gt;
&lt;br /&gt;
== ARexx - inter-program communication by scripting ==&lt;br /&gt;
&lt;br /&gt;
The ARexx scripting language can be used to operate the Workbench and other Amiga applications from a script containing ARexx commands. This is extremely useful in performing repetitive tasks or doing what the controlled application was not even designed to do.&lt;br /&gt;
After a learning curve, everybody can use ARexx as it is built into the system.  The scripts can be executed immediately like any other tool.&lt;br /&gt;
&lt;br /&gt;
= How is my data stored? =&lt;br /&gt;
== Files ==&lt;br /&gt;
=== Executable files ===&lt;br /&gt;
Programs you can start are stored in executable files. They contain binary code directly understandable by the computer. They are files with an executable bit, a flag that shows AmigaOS that such file will do something when started.&lt;br /&gt;
An example is a music player. When you start this executable, the player opens and you can start playing music files.&lt;br /&gt;
&lt;br /&gt;
AmigaOS can run two different kinds of executable files: the AmigaOS native programs made for the PowerPC processor and programs created for the Motorola 68k processors. The latter are executed inside an emulation that transcripts them into PowerPC code.&lt;br /&gt;
&lt;br /&gt;
==== Scripts ====&lt;br /&gt;
&lt;br /&gt;
Scripts are text files containing a list of commands.  They are not strictly executables like &#039;&#039;binary code&#039;&#039; files but they can be executed by AmigaOS as if they were.&lt;br /&gt;
This is the case with AmigaDOS and ARexx scripts. These files need to have the executable bit, and the script bit.&lt;br /&gt;
&lt;br /&gt;
=== Data files ===&lt;br /&gt;
Files that are not executable are data files. These contain data that will be manipulated by programs. Some examples are a music file, a video file or a text document.&lt;br /&gt;
&lt;br /&gt;
== Directories/Drawers ==&lt;br /&gt;
In order to organise things, files are grouped together. We create &amp;quot;directories&amp;quot; which are like drawers of a cabinet to store different files of the same kind, for example.  &lt;br /&gt;
Often the name &#039;&#039;directory&#039;&#039; is used when talking about a directory which is stored on a disk. The graphical interface of AmigaOS is called &amp;quot;Workbench,&amp;quot; and directories are often called &#039;&#039;drawers&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Note: directories are often called &#039;&#039;folders&#039;&#039; on other systems.  The terms &amp;quot;directory,&amp;quot; &amp;quot;drawer&amp;quot; and &amp;quot;folder&amp;quot; are synonymous.&lt;br /&gt;
&lt;br /&gt;
== Disks, partitions and volumes ==&lt;br /&gt;
=== Disks ===&lt;br /&gt;
Disks are storage media you can purchase at a computer store. We use them to store our files. They can be internal hard disks, external hard drives, USB interface devices (i.e., SD cards, CF cards, &amp;quot;flash&amp;quot; drives, etc.), and floppy disk drives.&lt;br /&gt;
&lt;br /&gt;
=== Partitions ===&lt;br /&gt;
A disk is often very big and many users prefer to make it more organised. This is done by virtually splitting the disk into several smaller parts. This operation is known as creating partitions on a disk.&lt;br /&gt;
&lt;br /&gt;
[[File:Partitions.png|Small part of Media Toolbox showing different partitions on the harddisk]]&lt;br /&gt;
&lt;br /&gt;
On this screenshot you can see one harddisk with many partitions. Each color corresponds to a different filesystem which defines how data is stored. Also, you can see a greyed area which is a blank area on the disk (i.e., no partition is defined at this position).  Several different file systems can be used on the same Amiga drive.  It&#039;s your choice.&lt;br /&gt;
&lt;br /&gt;
=== Volumes ===&lt;br /&gt;
A partition is a physical area on a disk. To access it with AmigaOS we could read the physical data off the partition but it&#039;s not an easy way. To make it easier AmigaOS uses the concept of volumes. These are virtual representations of a partition. The volumes have a name so AmigaOS and therefore the user can access all files/directories stored on it in a very practical way: just by using its name.&lt;br /&gt;
&lt;br /&gt;
= How to identify files/directories =&lt;br /&gt;
&lt;br /&gt;
== On the Workbench ==&lt;br /&gt;
&lt;br /&gt;
The Workbench being graphical, a lot of things are understandable just by looking at them. That&#039;s why icons are often enough to understand what kind of object it represents: a file, a directory, a disk...&lt;br /&gt;
&lt;br /&gt;
In case you have a doubt, just look at the information on an icon. The Workbench will tell you the type of the object. It is displayed next to its name.&lt;br /&gt;
&lt;br /&gt;
== In a shell ==&lt;br /&gt;
&lt;br /&gt;
In a shell the &#039;&#039;&#039;list&#039;&#039;&#039; command can be used to see if an object is a file or a directory.&lt;br /&gt;
&lt;br /&gt;
[[File:Files-dirs-in-shell.png|The &#039;&#039;&#039;list&#039;&#039;&#039; command shows a file of 925678 bytes and two directories]]&lt;br /&gt;
&lt;br /&gt;
A file will be displayed with its size, whereas a directory will be displayed with the text &#039;&#039;&#039;Dir&#039;&#039;&#039; next to it.&lt;br /&gt;
&lt;br /&gt;
Also, as you can see on the screenshot, the list command displays other characteristics on these 3 items: the protection bits and the date they were updated the last time. The command also sums up what it just listed.&lt;br /&gt;
&lt;br /&gt;
= All AmigaOS components =&lt;br /&gt;
&lt;br /&gt;
AmigaOS is made of components that are needed as soon as the system starts or later when the user or the system needs them.&lt;br /&gt;
&lt;br /&gt;
== Kickstart modules ==&lt;br /&gt;
&lt;br /&gt;
These components are the heart of AmigaOS. Their duties is to do graphics, to handle discs or to handle all reads/writes to files. Also one of them is the AmigaOS kernel which is a kind of director handling the work of all other components.&lt;br /&gt;
These Kickstart modules are loaded at the beginning of the operating system boot process (read [[UserDoc:How_AmigaOS_Works#AmigaOS_boot_procedure|here]]). You can find all them in the &#039;&#039;&#039;Kickstart&#039;&#039;&#039; directory in the system volume. Here is a list:&lt;br /&gt;
&lt;br /&gt;
=== Mandatory modules ===&lt;br /&gt;
&lt;br /&gt;
The following modules are required in any AmigaOS system. Without one of these, the system will not start.&lt;br /&gt;
&lt;br /&gt;
* kernel - The kernel works like a conductor in an orchestra. Its job is to make everything works together. It creates processes, handle memory usage, defines the way other components will access peripherals...etc. Note that the AmigaOS kernel is not based on any other kernel. It is a self made kernel that works since 1983.&lt;br /&gt;
* loader - this component handles the loading of all other kickstart modules&lt;br /&gt;
* battclock.resource.kmod - this module handles reading/writing the battery backed up clock which is used on all computers to keep the date and time&lt;br /&gt;
* bootimage - this is the boot picture. It is displayed during the start sequence of AmigaOS&lt;br /&gt;
* bootmenu.kmod - this component handles the Early Startup Menu the use can use to define some settings before starting AmigaOS&lt;br /&gt;
* con-handler.kmod - it directs the read and write requests to the console window, to a serial AUX: device or any other supported interface&lt;br /&gt;
* console.device.kmod - it opens a window and reads/writes text to and from that window&lt;br /&gt;
* diskboot.kmod - handles the booting of AmigaOS from a supported disk&lt;br /&gt;
* diskboot.config - this is a text file experienced users can modify to change the boot behaviour of AmigaOS&lt;br /&gt;
* dos.library.kmod - this module is a collection of functions that any program can use to perform actions on disks, files and directories&lt;br /&gt;
* elf.library.kmod - handles the loading of executable programs&lt;br /&gt;
* env-handler.kmod - handles the read/writes of environment variables&lt;br /&gt;
* FileSystem.resource.kmod - handles the use of the different filesystems&lt;br /&gt;
* gadtools.library.kmod - collection of functions used to create all graphic objects like gadgets, sliders, menus...&lt;br /&gt;
* gameport.device.kmod - handles the read/writes of game pads and joysticks&lt;br /&gt;
* graphics.library.kmod - collection of functions used to draw graphic elements on the monitor&lt;br /&gt;
* hunk.library.kmod - set of functions to read a data stream into memory&lt;br /&gt;
* input.device.kmod - handles of input events like keyboard events or mouse clicks&lt;br /&gt;
* intuition.library.kmod - collection of functions to create and handle all graphic elements (screens, windows, the mouse pointer...)&lt;br /&gt;
* layers.library.kmod - set of functions to be used to handle different layers in graphic operations&lt;br /&gt;
* keyboard.device.kmod - driver for the keyboard&lt;br /&gt;
* keymap.library.kmod - functions to handle different keymaps&lt;br /&gt;
* newlib.library.kmod - collection of functions to perform memory operations (allocating memory, copying memory areas... )&lt;br /&gt;
* nonvolatile.library.kmod - provides a simple means for an application developer to manage nonvolatile storage&lt;br /&gt;
* nvram.resource.kmod - handles the read/writes to the EEPROM chip present on many AmigaOS computers&lt;br /&gt;
* PCIGraphics.card - driver that supports the use of different graphic cards&lt;br /&gt;
* ram-handler.kmod - functions that handles the &#039;&#039;&#039;Ram disk:&#039;&#039;&#039; special disk&lt;br /&gt;
* ramdrive.device.kmod - device that allows the usage of the ramdrive device &#039;&#039;&#039;RAD:&#039;&#039;&#039; disk&lt;br /&gt;
* ramlib.kmod - loads disk based libraries and devices for exec.library&lt;br /&gt;
* rtg.library - library of functions to perform lowlevel graphic operations on graphic cards&lt;br /&gt;
* shell.kmod - the AmigaOS command line interface&lt;br /&gt;
* strap.kmod - module that handles booting on different disk devices&lt;br /&gt;
* timer.device.kmod - driver to give access to timing functions&lt;br /&gt;
&lt;br /&gt;
=== Filesystem support ===&lt;br /&gt;
&lt;br /&gt;
These kickstart modules can be loaded or left aside. If you want to use a particular filesystem on your disk partitions, you need to load the corresponding filesystem module.&lt;br /&gt;
&lt;br /&gt;
* CDFileSystem - handles the CD-ROM disks with data stored in different formats: ISO9660, HFS...&lt;br /&gt;
* SmartFilesystem - allows the usage of partitions in SFS0 and SFS2 layouts&lt;br /&gt;
* JXFileSystem - allows the usage of partitions in JXFS layout&lt;br /&gt;
* FastFileSystem - allows the usage of partitions in FFS and FFS2 layouts&lt;br /&gt;
* diskcache.library.kmod - component required by the SmartFileSystem and JXFileSystem modules&lt;br /&gt;
&lt;br /&gt;
=== Hardware drivers ===&lt;br /&gt;
&lt;br /&gt;
==== Graphic cards drivers ====&lt;br /&gt;
&lt;br /&gt;
* 3dfxVoodoo.chip&lt;br /&gt;
* 3DLabsPermedia2.chip&lt;br /&gt;
* ATIRadeon.chip&lt;br /&gt;
* RadeonHD.chip&lt;br /&gt;
* siliconmotion502.chip&lt;br /&gt;
&lt;br /&gt;
==== Disk drivers ====&lt;br /&gt;
&lt;br /&gt;
Each of these drivers allow the use of disks connected to a disk controller. These files are named with the name of the controller they support. As an example, the &#039;&#039;&#039;sii3114ide.device.kmod&#039;&#039;&#039; allows to use disks connected on a &#039;&#039;&#039;Silicon Image SiI3114&#039;&#039;&#039; controller chip.&lt;br /&gt;
&lt;br /&gt;
* it8212ide.device.kmod&lt;br /&gt;
* lsi53c8xx.device.kmod&lt;br /&gt;
* sam460sata.device.kmod&lt;br /&gt;
* sii3112ide.device.kmod&lt;br /&gt;
* sii3512ide.device.kmod&lt;br /&gt;
* sii3114ide.device.kmod&lt;br /&gt;
* sii0680ide.device.kmod&lt;br /&gt;
* sii3132ide.device.kmod&lt;br /&gt;
&lt;br /&gt;
==== USB drivers ====&lt;br /&gt;
&lt;br /&gt;
* hub.usbfd&lt;br /&gt;
* usbsys.device&lt;br /&gt;
* usbresource.library&lt;br /&gt;
* ehci.usbhcd&lt;br /&gt;
* ohci.usbhcd&lt;br /&gt;
* uhci.usbhcd&lt;br /&gt;
* massstorage.usbfd&lt;br /&gt;
&lt;br /&gt;
==== Other drivers ====&lt;br /&gt;
&lt;br /&gt;
* bootkeyboard.usbfd - allows a USB keyboard to be used even before the USB stack is loaded&lt;br /&gt;
* bootmouse.usbfd - allows a USB mouse to be used even before the USB stack is loaded&lt;br /&gt;
* fpga.resource.kmod - allows to use the FPGA components which are present on some Amiga computers&lt;br /&gt;
* i2c.resource.kmod - allows to use the i2c interface present on some Amiga computers&lt;br /&gt;
* xena.resource.kmod - provides access to the Xena chip on the AmigaOne X1000&lt;br /&gt;
&lt;br /&gt;
=== Misc modules ===&lt;br /&gt;
&lt;br /&gt;
* petunia.library.kmod - this module contains the Just-In-Time emulator that allows AmigaOS to run programs made for the Motorola 68k processor&lt;br /&gt;
&lt;br /&gt;
== System components ==&lt;br /&gt;
&lt;br /&gt;
[[File:Workbench_directory_listing.png|frame|right|List of directories and files present at the root of any AmigaOS system]]&lt;br /&gt;
&lt;br /&gt;
Beside the kickstart modules, AmigaOS uses many different components that can be loaded only when used. These files are stored in different directories in the system volume.&lt;br /&gt;
Here is described a default AmigaOS installation.&lt;br /&gt;
&lt;br /&gt;
* C&lt;br /&gt;
This directory contains AmigaDOS &#039;&#039;&#039;C&#039;&#039;&#039;ommands&lt;br /&gt;
* Classes&lt;br /&gt;
contains different object elements easy to be used in any program: gadgets, requesters, graphic table, windows...&lt;br /&gt;
* Devs&lt;br /&gt;
contains definition for &#039;&#039;&#039;Dev&#039;&#039;&#039;ices&lt;br /&gt;
* Emulation&lt;br /&gt;
contains files used for the 68k emulation (though E-UAE)&lt;br /&gt;
* Fonts&lt;br /&gt;
contains various systems fonts&lt;br /&gt;
* Internet&lt;br /&gt;
contains a dialer to connect to Internet&lt;br /&gt;
* Kickstart&lt;br /&gt;
contains the kickstart modules&lt;br /&gt;
* L&lt;br /&gt;
contains hand&#039;&#039;&#039;l&#039;&#039;&#039;ers and filesystems&lt;br /&gt;
* Libs&lt;br /&gt;
contains dynamic &#039;&#039;&#039;Libr&#039;&#039;&#039;airies of functions&lt;br /&gt;
* Locale&lt;br /&gt;
contains all files used to localise the system (catalogs, keymaps...)&lt;br /&gt;
* MUI&lt;br /&gt;
contains the needed files for programs that use the MUI third party graphic interface&lt;br /&gt;
* [[Prefs]]&lt;br /&gt;
contains the preference programs used to customise AmigaOS&lt;br /&gt;
* S&lt;br /&gt;
contains the &#039;&#039;&#039;S&#039;&#039;&#039;cripts&lt;br /&gt;
* SObjs&lt;br /&gt;
contains .so shared object library files&lt;br /&gt;
* Storage&lt;br /&gt;
contains other optional files&lt;br /&gt;
* System&lt;br /&gt;
contains some programs used by the system itself (i.e. you don&#039;t need to run them yourself) or low-level programs like disk tools&lt;br /&gt;
* [[Utilities]]&lt;br /&gt;
contains several programs you can use to achieve some tasks on AmigaOS&lt;br /&gt;
&lt;br /&gt;
= Motorola 680x0 Emulators =&lt;br /&gt;
&lt;br /&gt;
For a long time Amigas have had the famous Motorola 680x0 processors as the central unit for execution. Unfortunately the time of the 680x0 series is passing in favor of other architectures. The new era of processors reached the Amiga some time ago, when expansion boards became available for extending the Classic systems with the raw power of a PowerPC processor.&lt;br /&gt;
&lt;br /&gt;
In the old operating system (AmigaOS 3.x) it was not possible to gain the full advantage of the new processors. The system itself and most of the applications required the original Motorola 680x0 processor. There was no 680x0 emulation available for the PowerPCs, so the 680x0 could not be &amp;quot;switched off&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Thus the new processors remained as a powerful, but mostly unused adjunct to the main 680x0 processor. &amp;quot;Native&amp;quot; PowerPC programs were rare, and every time a PowerPC program called the system, a so called &amp;quot;context switch&amp;quot; occurred between the 680x0 and PowerPC code, often causing a large performance penalty.&lt;br /&gt;
&lt;br /&gt;
The new Amiga platform is based on the PowerPC processor family, therefore the new version of the AmigaOS has to smooth the transition from the 680x0 series, which is achieved by emulating the old processor architecture. The operating system itself is written almost 100 percent for the PowerPC processors, but the 680x0 legacy applications require an emulated 680x0 processor. &lt;br /&gt;
&lt;br /&gt;
== Two 680x0 Emulators ==&lt;br /&gt;
&lt;br /&gt;
In version 4.0 of AmigaOS, two different emulators were implemented; one is the successor of BlackBox emulation, it is an interpretive emulator, thus the emulation speed is mediocre. On the other hand it has a very low &amp;quot;reaction time&amp;quot;, and is ideal for time critical parts, such as interrupts.&lt;br /&gt;
&lt;br /&gt;
The other is Petunia, the &amp;quot;JIT emulator&amp;quot;. A fast, but less compatible way of emulation of the legacy Motorola processors. It is intended mainly for emulating applications, and therefore, when execution of the application leaves the bounds of the application&#039;s code segment, emulation falls back to the interpretive method, where it does its job and returns to the JIT emulation again.&lt;br /&gt;
&lt;br /&gt;
Dynamic recompilation (also called just-in-time compilation or simply JIT compilation) is a technique of translating foreign processor machine code to native machine code, &amp;quot;on the fly&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This technique is common nowadays, commonly applied in JAVA virtual machines, and it is also used with success in several emulators. In dynamic recompilation there is the possibility of runtime optimization of the emulated code by collecting statistics of the execution process. Therefore (theoretically) the final executed code can be even faster than the original code on its original processor.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Emulated opcodes:&lt;br /&gt;
* all user and supervisor level opcodes of the Motorola 68040&lt;br /&gt;
* all FPU opcodes of the Motorola 68881/68882 &lt;br /&gt;
&lt;br /&gt;
AmigaOS claims only 68020/68881 compatibility to applications because this is the safest compatibility level, but both emulators are compatible with the machine code up to the level of 68040/060 processors.&lt;br /&gt;
&lt;br /&gt;
At compile time, a low level flag and branch control analysis allows on-the-fly optimizations of compiled code.&lt;br /&gt;
&lt;br /&gt;
== Removing the JIT Emulator ==&lt;br /&gt;
&lt;br /&gt;
Using the dynamic translation requires a lot more memory than the interpretive emulation. The translated code needs to be stored somewhere, not to mention the data collection tables.&lt;br /&gt;
&lt;br /&gt;
If speed is not as important as the memory consumption of the system, then the JIT emulator can be removed, leaving the job to the interpretive emulator.&lt;br /&gt;
&lt;br /&gt;
Thanks to the modular design of AmigaOS kickstart, all you need to do is edit the &amp;quot;Sys:Kickstart/Kicklayout&amp;quot; file, simply put a semicolon (;) at the beginning of the module line of Petunia.library.kmod. After rebooting the system from cold, the JIT emulator will not be reloaded. Make sure that you alter the appropriate configuration in the Kicklayout file, there may be several alternative configurations, with different names like &amp;quot;DefaultJIT&amp;quot;, or &amp;quot;DefaultNoJIT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Configuring the Emulators ==&lt;br /&gt;
&lt;br /&gt;
Petunia cooperates with a so called &amp;quot;black list&amp;quot;. By default Petunia emulates every 680x0 program or library that is loaded by DOS.library/LoadSeg function, but if an executable or library shows incompatibilities with Petunia, then it can be explicitly inhibited from the dynamic recompilation by specifying it in a list file.&lt;br /&gt;
&lt;br /&gt;
If an executable needs to be added to the list, then it can be done by extending the file &amp;quot;DEVS:applications.dos&amp;quot; with the &#039;&#039;&#039;Compatibility&#039;&#039;&#039; preferences program from the Prefs drawer of the system. Adding a program name to the list and checking it will prevent Petunia from emulating that program, and it will be interpreted instead by the built-in interpreter.&lt;br /&gt;
&lt;br /&gt;
Removing a program from the list or unchecking (thus allowing Petunia to emulate it again) can be done with the same preferences program.&lt;br /&gt;
&lt;br /&gt;
Please note: some programs consist of multiple executables (shared libraries, plugins). If you want to fully disable the translation of such programs, then every part must be added to the list.&lt;br /&gt;
&lt;br /&gt;
For example to disable UnArc fully, you would have to add all files from libs:xad and also xadmaster.library to the list. &lt;br /&gt;
&lt;br /&gt;
= AmigaOS boot procedure =&lt;br /&gt;
&lt;br /&gt;
Basically a computer with AmigaOS does the following when the power button is pushed:&lt;br /&gt;
&lt;br /&gt;
* [[File:Uboot.jpg|200px]]&lt;br /&gt;
the BIOS ([[UserDoc:BIOS|Uboot]] or [[UserDoc:BIOS|CFE]]) of the computer initialises the hardware: graphic card, USB ports... At this point, the monitor wakes up and the first information are displayed. This allows to see if hardware is correctly recognised. As an example you can see if a hard drive is correctly connected into the machine and your BIOS is correctly setup to make this drive useable.&lt;br /&gt;
* depending on how you setup the BIOS it will look on the harddisk to find the Second Level Booter (SLB). This program is stored on the first sectors of the disk. Whereas the BIOS does not know about AmigaOS disk structure, the SLB will be able to &#039;&#039;understand&#039;&#039; the AmigaOS partitions and files. In other words, it is the link between the BIOS and the rest of the boot procedure. Its goal is also to give you the ability to start several configurations present on the same drive.&lt;br /&gt;
* [[File:SLB.png|200px]]&lt;br /&gt;
the SLB will analyses all Amiga partitions on the disk it is installed on. It will read each [[UserDoc:kickstart_configuration|system configuration]] it finds on the partitions. It will show all available configurations for the user to select one to load.&lt;br /&gt;
The user can define many different kickstart configurations to choose from. Also both AmigaOS and Linux can be selected for boot.&lt;br /&gt;
* [[File:Kmods loading.png|200px]]&lt;br /&gt;
the SLB loads the kickstart files of the selected configuration and executes the &#039;&#039;&#039;Loader&#039;&#039;&#039; module&lt;br /&gt;
* &#039;&#039;&#039;Loader&#039;&#039;&#039; executes the kickstart modules (Exec, devices, libraries...)&lt;br /&gt;
* AmigaOS becomes alive displaying the AmigaOS boot picture on the monitor&lt;br /&gt;
* the AmigaDOS library executes the [[UserDoc:System_Scripts#startup-sequence|startup-sequence]] script found on the system volume&lt;br /&gt;
* the Startup-sequence will be executed and all commands it contains are executed. It means that starting from here the boot procedure is easy to follow and understand.&lt;br /&gt;
* the Workbench is started&lt;br /&gt;
&lt;br /&gt;
At this point the user can use his/her computer.&lt;br /&gt;
&lt;br /&gt;
= How to make a Bootable USB Memory Stick for AmigaOS 4.1 =&lt;br /&gt;
&lt;br /&gt;
By Julian Margetson (&amp;quot;Spectre660&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Prerequisites:&lt;br /&gt;
* USB memory stick of 2 GB or less in size.&lt;br /&gt;
* It is best to only have one USB mass storage device connected while you are creating your bootable USB memory stick.&lt;br /&gt;
* Plug the USB memory stick into a USB port on your machine.&lt;br /&gt;
* Note that the device will be formatted so make sure that you use an empty memory stick or one that does not contain any data that you need or backup the contents before you begin.&lt;br /&gt;
&lt;br /&gt;
Procedure:&lt;br /&gt;
# You use Media Toolbox in the System: drawer to prepare the USB stick. On starting Media Toolbox select &#039;&#039;usbdisk.device&#039;&#039; as the device to use.&lt;br /&gt;
# Make certain that you have selected usbdisk.device and not any other device.&lt;br /&gt;
# Click on &amp;quot;Start&amp;quot;&lt;br /&gt;
# You will see the usb mass storage unit connected in a list.&lt;br /&gt;
# Make sure that the Unit type displayed for the USB memory stick is &amp;quot;Removable hard disk&amp;quot;&lt;br /&gt;
# Select that Unit by clicking on it.&lt;br /&gt;
# The first thing that you need to do is to install the RDB onto the USB Memory Stick.&lt;br /&gt;
# Click on the  &amp;quot;Install&amp;quot; button.&lt;br /&gt;
# A window Labeled &amp;quot;RDB/disk geometry editing&amp;quot; comes up.&lt;br /&gt;
## Towards the bottom of the window is the &amp;quot;AmigaOne boot code (SLB)&amp;quot; section.&lt;br /&gt;
## Select the &amp;quot;Install&amp;quot; button .&lt;br /&gt;
## A file requester  &amp;quot;Select AmigaOne Boot Code&amp;quot; now comes  up with the Drawer choice defaulting to &amp;quot;l:&amp;quot;&lt;br /&gt;
## Select file &amp;quot;slb_v2&amp;quot;. &lt;br /&gt;
## Select Ok.&lt;br /&gt;
## You are now returned to the &amp;quot;RDB/disk geometry editing window&amp;quot;.&lt;br /&gt;
## Select &amp;quot;Ok-accept changes&amp;quot;.&lt;br /&gt;
# You are now returned to the display showing the attached USB unit.&lt;br /&gt;
# Select &amp;quot;Edit partitions and Filesystems&amp;quot;. You will now see the Window &#039;Editing partitions for disk&amp;quot;&lt;br /&gt;
# Select &amp;quot;Add partition&amp;quot;&lt;br /&gt;
# This defaults to using the whole device as a single partition.&lt;br /&gt;
# It is possible to use create more partitions but for this tutorial we will only use one.&lt;br /&gt;
# You now need to give the partition a unique name (e.g. USB0 or something that is different from any of the existing partitions on your hard drive). This is done by changing the default DH0 in the &amp;quot;Name&amp;quot; box.&lt;br /&gt;
# Now make sure that the Boxes &amp;quot;Automount&amp;quot; and &amp;quot;Bootable&amp;quot; are  selected and show the &amp;quot;Tick mark&amp;quot;.&lt;br /&gt;
# You need to set &amp;quot;Boot priority&amp;quot; to higher than the boot priority of your hard drive boot partition(s). This is done by increasing Boot priority by clicking on the &amp;quot;+&amp;quot; to the right of the &amp;quot;boot priority&amp;quot; box. Normally you can set the boot priority to 2 .&lt;br /&gt;
# Next it is time to select the file system to use.&lt;br /&gt;
# Select &amp;quot;Select filesystem/edit details&amp;quot;.&lt;br /&gt;
# The Window &amp;quot;Editing details for partition &#039;USB0&#039;&amp;quot;  ,or whatever partition name you used, comes up.&lt;br /&gt;
## Select the file system that you are going to use by selecting the pull down menu under &amp;quot;Filesystem chooser&amp;quot;.&lt;br /&gt;
## Only filesystems SFS/00 or SFS/02 will work for a bootable device.&lt;br /&gt;
## The option that gives the most flexibility at the moment is SFS/00 as a USB stick in this format can be read and written to using another compatible system in the event that you need to make modifications after it is created without a booting AmigaOS 4.1 machine.&lt;br /&gt;
## Next select Blocksize from the &amp;quot;Blocksize&amp;quot; pull down menu. 512 is the correct size to use.&lt;br /&gt;
## Now Select &amp;quot;Ok-accept changes&amp;quot;.&lt;br /&gt;
## Your are now returned to the &amp;quot;Edit partitions for disk&amp;quot; window.&lt;br /&gt;
## Again select &amp;quot;Ok-accept changes&amp;quot;&lt;br /&gt;
# You are now returned to the window showing the USB mass storage unit list.&lt;br /&gt;
# Select &amp;quot;Save to disk&amp;quot;&lt;br /&gt;
# A requester pops up with the options &amp;quot;Yes, Save.&amp;quot; or &amp;quot;No!&amp;quot;&lt;br /&gt;
# Select the &amp;quot;Yes, save.&amp;quot; option.&lt;br /&gt;
# You now close Media Toolbox by clicking on the close icon (X) on the left of the Media Toolbox window.&lt;br /&gt;
# This will give you a requester advising that you need to reboot the machine for the changes to take effect. At this point you need to remove the USB memory stick for the machine. If you do not then the Machine will attempt boot from it before it is formatted and the required Kickstart and AmigaOS 4.1 files are copied to it.&lt;br /&gt;
# Select &amp;quot;Yes, reboot NOW!&amp;quot;.&lt;br /&gt;
# Once you have rebooted connect your USB Memory Stick to a USB port.&lt;br /&gt;
# A disk icon &amp;quot;USB0:Uninitialized&amp;quot; (or whatever partition name you used) appears on Workbench.&lt;br /&gt;
# You now need to format the device.&lt;br /&gt;
# To format Select this Icon and go to the Workbench &amp;quot;Icons&amp;quot; menu .&lt;br /&gt;
# Select &amp;quot;Format Disk&amp;quot;&lt;br /&gt;
# You can give the USB Memory Stick a unique name and  select whether you want a Trashcan or not.&lt;br /&gt;
# You can use either a full Format or a  Quick Format. Full Format may take a few minutes.&lt;br /&gt;
# Once formatted the USB Memory Stick is ready for you to copy the required files from you hard drive or AmigaOS Install CD to it in order to boot AmigaOS 4.1 from it.&lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=UserDoc:How_AmigaOS_Works&amp;diff=7915</id>
		<title>UserDoc:How AmigaOS Works</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=UserDoc:How_AmigaOS_Works&amp;diff=7915"/>
		<updated>2015-05-29T06:27:51Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: /* Disks */ corrected usage, added device names&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As already mentioned, AmigaOS was a pioneer in the early days of personal computing in delivering sophistication that contemporary systems could only have dreamt of and pretended to offer. Today, AmigaOS continues to offer a straightforward elegance that seems to be overlooked in the development of other platforms. Thanks to the concepts behind AmigaOS, the system is easy to understand and to use by everyone.&lt;br /&gt;
&lt;br /&gt;
In this page we will explore all these concepts of AmigaOS. Also you will learn here the naming of all parts of the system.&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
AmigaOS is made of different components which are either mandatory (i.e.,  AmigaOS will not work without them) or components the user can choose to use or not. All these components can have one or mutiple interfaces a user or a developer can use to operate with the components and through them to control the operating system.&lt;br /&gt;
&lt;br /&gt;
= The most important components =&lt;br /&gt;
&lt;br /&gt;
== Exec, the AmigaOS kernel ==&lt;br /&gt;
&lt;br /&gt;
Exec is the kernel of AmigaOS. It is the component that pilots all other components. It is responsible for running programs, dealing with computer memory and managing low-level resources that programs may need. In other words, it organises everything to make the operating system run.&lt;br /&gt;
&lt;br /&gt;
It is made of different parts that cannot be moved outside the kernel: the scheduler, the memory pager and the 68k interpretive emulator.&lt;br /&gt;
&lt;br /&gt;
== AmigaDOS: the underlying system ==&lt;br /&gt;
&lt;br /&gt;
The word &amp;quot;DOS&amp;quot; was originally an acronym for &amp;quot;Disk Operating System&amp;quot;. Some say it should be &amp;quot;Disk Based Operating System&amp;quot; as it does a lot more than operate a disk and that it was really an operating system based (stored) on disks.  Some say it should be &amp;quot;Device Operating System&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The whole AmigaDOS system includes things such as:&lt;br /&gt;
&lt;br /&gt;
* A set of commands that can be used in the Shell window and elsewhere.&lt;br /&gt;
* A system for saving data to disk and retrieving it from disk.&lt;br /&gt;
* A system for filing data on disks.&lt;br /&gt;
* An interface for peripherals such as keyboards, monitors, printers, etc.&lt;br /&gt;
* A method of running programs&lt;br /&gt;
* A multitasking system for running more than one program at a time.&lt;br /&gt;
* etc. etc. etc.&lt;br /&gt;
&lt;br /&gt;
Read the [[AmigaDOS manual]] to understand and learn everything about AmigaDOS.&lt;br /&gt;
&lt;br /&gt;
== The Graphics library ==&lt;br /&gt;
&lt;br /&gt;
The Graphics library handles every low level graphic operation like designing pixels on the monitor, creating graphic elements (bobs, sprites) and also writing text output.&lt;br /&gt;
&lt;br /&gt;
== Intuition ==&lt;br /&gt;
&lt;br /&gt;
The Intuition library is responsible for every graphical object: windows, screens, gadgets, mouse pointers... It lies between any graphic program and the graphics library.&lt;br /&gt;
&lt;br /&gt;
== The Workbench ==&lt;br /&gt;
&lt;br /&gt;
The Workbench is the graphical place where you will manage your computer and all your files. The name was chosen because the user will use tools to create and work with the computer.&lt;br /&gt;
&lt;br /&gt;
[[File:Wb.png|320px]]&lt;br /&gt;
&lt;br /&gt;
== The Shell ==&lt;br /&gt;
&lt;br /&gt;
While some people prefer to control the operating system using their mouse, others prefer using the keyboard. The shell is a text based window when you can type commands to execute actions in the operating system. In the shell the commands will display the results of their execution.&lt;br /&gt;
&lt;br /&gt;
== ARexx - inter-program communication by scripting ==&lt;br /&gt;
&lt;br /&gt;
The ARexx scripting language can be used to operate the Workbench and other Amiga applications from a script containing ARexx commands. This is extremely useful in performing repetitive tasks or doing what the controlled application was not even designed to do.&lt;br /&gt;
After a learning curve, everybody can use ARexx as it is built into the system.  The scripts can be executed immediately like any other tool.&lt;br /&gt;
&lt;br /&gt;
= How is my data stored? =&lt;br /&gt;
== Files ==&lt;br /&gt;
=== Executable files ===&lt;br /&gt;
Programs you can start are stored in executable files. They contain binary code directly understandable by the computer. They are files with an executable bit, a flag that shows AmigaOS that such file will do something when started.&lt;br /&gt;
An example is a music player. When you start this executable, the player opens and you can start playing music files.&lt;br /&gt;
&lt;br /&gt;
AmigaOS can run two different kinds of executable files: the AmigaOS native programs made for the PowerPC processor and programs created for the Motorola 68k processors. The latter are executed inside an emulation that transcripts them into PowerPC code.&lt;br /&gt;
&lt;br /&gt;
==== Scripts ====&lt;br /&gt;
&lt;br /&gt;
Scripts are text files containing a list of commands.  They are not strictly executables like &#039;&#039;binary code&#039;&#039; files but they can be executed by AmigaOS as if they were.&lt;br /&gt;
This is the case with AmigaDOS and ARexx scripts. These files need to have the executable bit, and the script bit.&lt;br /&gt;
&lt;br /&gt;
=== Data files ===&lt;br /&gt;
Files that are not executable are data files. These contain data that will be manipulated by programs. Some examples are a music file, a video file or a text document.&lt;br /&gt;
&lt;br /&gt;
== Directories/Drawers ==&lt;br /&gt;
In order to organise things, files are grouped together. We create &amp;quot;directories&amp;quot; which are like drawers of a cabinet to store different files of the same kind, for example.  &lt;br /&gt;
Often the name &#039;&#039;directory&#039;&#039; is used when talking about a directory which is stored on a disk. The graphical interface of AmigaOS is called &amp;quot;Workbench,&amp;quot; and directories are often called &#039;&#039;drawers&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Note: directories are often called &#039;&#039;folders&#039;&#039; on other systems.  The terms &amp;quot;directory,&amp;quot; &amp;quot;drawer&amp;quot; and &amp;quot;folder&amp;quot; are synonymous.&lt;br /&gt;
&lt;br /&gt;
== Disks, partitions and volumes ==&lt;br /&gt;
=== Disks ===&lt;br /&gt;
Disks are storage media you can purchase at a computer store. We use them to store our files. They can be internal hard disks, external hard drives, USB interface devices (i.e., SD cards, CF cards, &amp;quot;flash&amp;quot; drives, etc.), and floppy disk drives.&lt;br /&gt;
&lt;br /&gt;
=== Partitions ===&lt;br /&gt;
A disk is often very big and many users prefer to make it more organised. This is done virtually splitting the disk into several smaller parts. This operation is known as creating partitions on a disk.&lt;br /&gt;
&lt;br /&gt;
[[File:Partitions.png|Small part of Media Toolbox showing different partitions on the harddisk]]&lt;br /&gt;
&lt;br /&gt;
On this screenshot you can see one harddisk with many partitions. Each color corresponds to a different filesystem which defines how data is stored. Also you can see a greyed area which is a blank area on the disk i.e. no partition is defined at this position.&lt;br /&gt;
&lt;br /&gt;
=== Volumes ===&lt;br /&gt;
A partition is a physical area on a disk. To access it with AmigaOS we could read the physical data off the partition but it&#039;s not an easy way. To make it easier AmigaOS uses the concept of volumes. These are virtual representations of a partition. The volumes have a name so AmigaOS and therefore the user can access all files/directories stored on it in a very practical way: just by using its name.&lt;br /&gt;
&lt;br /&gt;
= How to identify files/directories =&lt;br /&gt;
&lt;br /&gt;
== On the Workbench ==&lt;br /&gt;
&lt;br /&gt;
The Workbench being graphical, a lot of things are understandable just by looking at them. That&#039;s why icons are often enough to understand what kind of object it represents: a file, a directory, a disk...&lt;br /&gt;
&lt;br /&gt;
In case you have a doubt, just look at the information on an icon. The Workbench will tell you the type of the object. It is displayed next to its name.&lt;br /&gt;
&lt;br /&gt;
== In a shell ==&lt;br /&gt;
&lt;br /&gt;
In a shell the &#039;&#039;&#039;list&#039;&#039;&#039; command can be used to see if an object is a file or a directory.&lt;br /&gt;
&lt;br /&gt;
[[File:Files-dirs-in-shell.png|The &#039;&#039;&#039;list&#039;&#039;&#039; command shows a file of 925678 bytes and two directories]]&lt;br /&gt;
&lt;br /&gt;
A file will be displayed with its size, whereas a directory will be displayed with the text &#039;&#039;&#039;Dir&#039;&#039;&#039; next to it.&lt;br /&gt;
&lt;br /&gt;
Also, as you can see on the screenshot, the list command displays other characteristics on these 3 items: the protection bits and the date they were updated the last time. The command also sums up what it just listed.&lt;br /&gt;
&lt;br /&gt;
= All AmigaOS components =&lt;br /&gt;
&lt;br /&gt;
AmigaOS is made of components that are needed as soon as the system starts or later when the user or the system needs them.&lt;br /&gt;
&lt;br /&gt;
== Kickstart modules ==&lt;br /&gt;
&lt;br /&gt;
These components are the heart of AmigaOS. Their duties is to do graphics, to handle discs or to handle all reads/writes to files. Also one of them is the AmigaOS kernel which is a kind of director handling the work of all other components.&lt;br /&gt;
These Kickstart modules are loaded at the beginning of the operating system boot process (read [[UserDoc:How_AmigaOS_Works#AmigaOS_boot_procedure|here]]). You can find all them in the &#039;&#039;&#039;Kickstart&#039;&#039;&#039; directory in the system volume. Here is a list:&lt;br /&gt;
&lt;br /&gt;
=== Mandatory modules ===&lt;br /&gt;
&lt;br /&gt;
The following modules are required in any AmigaOS system. Without one of these, the system will not start.&lt;br /&gt;
&lt;br /&gt;
* kernel - The kernel works like a conductor in an orchestra. Its job is to make everything works together. It creates processes, handle memory usage, defines the way other components will access peripherals...etc. Note that the AmigaOS kernel is not based on any other kernel. It is a self made kernel that works since 1983.&lt;br /&gt;
* loader - this component handles the loading of all other kickstart modules&lt;br /&gt;
* battclock.resource.kmod - this module handles reading/writing the battery backed up clock which is used on all computers to keep the date and time&lt;br /&gt;
* bootimage - this is the boot picture. It is displayed during the start sequence of AmigaOS&lt;br /&gt;
* bootmenu.kmod - this component handles the Early Startup Menu the use can use to define some settings before starting AmigaOS&lt;br /&gt;
* con-handler.kmod - it directs the read and write requests to the console window, to a serial AUX: device or any other supported interface&lt;br /&gt;
* console.device.kmod - it opens a window and reads/writes text to and from that window&lt;br /&gt;
* diskboot.kmod - handles the booting of AmigaOS from a supported disk&lt;br /&gt;
* diskboot.config - this is a text file experienced users can modify to change the boot behaviour of AmigaOS&lt;br /&gt;
* dos.library.kmod - this module is a collection of functions that any program can use to perform actions on disks, files and directories&lt;br /&gt;
* elf.library.kmod - handles the loading of executable programs&lt;br /&gt;
* env-handler.kmod - handles the read/writes of environment variables&lt;br /&gt;
* FileSystem.resource.kmod - handles the use of the different filesystems&lt;br /&gt;
* gadtools.library.kmod - collection of functions used to create all graphic objects like gadgets, sliders, menus...&lt;br /&gt;
* gameport.device.kmod - handles the read/writes of game pads and joysticks&lt;br /&gt;
* graphics.library.kmod - collection of functions used to draw graphic elements on the monitor&lt;br /&gt;
* hunk.library.kmod - set of functions to read a data stream into memory&lt;br /&gt;
* input.device.kmod - handles of input events like keyboard events or mouse clicks&lt;br /&gt;
* intuition.library.kmod - collection of functions to create and handle all graphic elements (screens, windows, the mouse pointer...)&lt;br /&gt;
* layers.library.kmod - set of functions to be used to handle different layers in graphic operations&lt;br /&gt;
* keyboard.device.kmod - driver for the keyboard&lt;br /&gt;
* keymap.library.kmod - functions to handle different keymaps&lt;br /&gt;
* newlib.library.kmod - collection of functions to perform memory operations (allocating memory, copying memory areas... )&lt;br /&gt;
* nonvolatile.library.kmod - provides a simple means for an application developer to manage nonvolatile storage&lt;br /&gt;
* nvram.resource.kmod - handles the read/writes to the EEPROM chip present on many AmigaOS computers&lt;br /&gt;
* PCIGraphics.card - driver that supports the use of different graphic cards&lt;br /&gt;
* ram-handler.kmod - functions that handles the &#039;&#039;&#039;Ram disk:&#039;&#039;&#039; special disk&lt;br /&gt;
* ramdrive.device.kmod - device that allows the usage of the ramdrive device &#039;&#039;&#039;RAD:&#039;&#039;&#039; disk&lt;br /&gt;
* ramlib.kmod - loads disk based libraries and devices for exec.library&lt;br /&gt;
* rtg.library - library of functions to perform lowlevel graphic operations on graphic cards&lt;br /&gt;
* shell.kmod - the AmigaOS command line interface&lt;br /&gt;
* strap.kmod - module that handles booting on different disk devices&lt;br /&gt;
* timer.device.kmod - driver to give access to timing functions&lt;br /&gt;
&lt;br /&gt;
=== Filesystem support ===&lt;br /&gt;
&lt;br /&gt;
These kickstart modules can be loaded or left aside. If you want to use a particular filesystem on your disk partitions, you need to load the corresponding filesystem module.&lt;br /&gt;
&lt;br /&gt;
* CDFileSystem - handles the CD-ROM disks with data stored in different formats: ISO9660, HFS...&lt;br /&gt;
* SmartFilesystem - allows the usage of partitions in SFS0 and SFS2 layouts&lt;br /&gt;
* JXFileSystem - allows the usage of partitions in JXFS layout&lt;br /&gt;
* FastFileSystem - allows the usage of partitions in FFS and FFS2 layouts&lt;br /&gt;
* diskcache.library.kmod - component required by the SmartFileSystem and JXFileSystem modules&lt;br /&gt;
&lt;br /&gt;
=== Hardware drivers ===&lt;br /&gt;
&lt;br /&gt;
==== Graphic cards drivers ====&lt;br /&gt;
&lt;br /&gt;
* 3dfxVoodoo.chip&lt;br /&gt;
* 3DLabsPermedia2.chip&lt;br /&gt;
* ATIRadeon.chip&lt;br /&gt;
* RadeonHD.chip&lt;br /&gt;
* siliconmotion502.chip&lt;br /&gt;
&lt;br /&gt;
==== Disk drivers ====&lt;br /&gt;
&lt;br /&gt;
Each of these drivers allow the use of disks connected to a disk controller. These files are named with the name of the controller they support. As an example, the &#039;&#039;&#039;sii3114ide.device.kmod&#039;&#039;&#039; allows to use disks connected on a &#039;&#039;&#039;Silicon Image SiI3114&#039;&#039;&#039; controller chip.&lt;br /&gt;
&lt;br /&gt;
* it8212ide.device.kmod&lt;br /&gt;
* lsi53c8xx.device.kmod&lt;br /&gt;
* sam460sata.device.kmod&lt;br /&gt;
* sii3112ide.device.kmod&lt;br /&gt;
* sii3512ide.device.kmod&lt;br /&gt;
* sii3114ide.device.kmod&lt;br /&gt;
* sii0680ide.device.kmod&lt;br /&gt;
* sii3132ide.device.kmod&lt;br /&gt;
&lt;br /&gt;
==== USB drivers ====&lt;br /&gt;
&lt;br /&gt;
* hub.usbfd&lt;br /&gt;
* usbsys.device&lt;br /&gt;
* usbresource.library&lt;br /&gt;
* ehci.usbhcd&lt;br /&gt;
* ohci.usbhcd&lt;br /&gt;
* uhci.usbhcd&lt;br /&gt;
* massstorage.usbfd&lt;br /&gt;
&lt;br /&gt;
==== Other drivers ====&lt;br /&gt;
&lt;br /&gt;
* bootkeyboard.usbfd - allows a USB keyboard to be used even before the USB stack is loaded&lt;br /&gt;
* bootmouse.usbfd - allows a USB mouse to be used even before the USB stack is loaded&lt;br /&gt;
* fpga.resource.kmod - allows to use the FPGA components which are present on some Amiga computers&lt;br /&gt;
* i2c.resource.kmod - allows to use the i2c interface present on some Amiga computers&lt;br /&gt;
* xena.resource.kmod - provides access to the Xena chip on the AmigaOne X1000&lt;br /&gt;
&lt;br /&gt;
=== Misc modules ===&lt;br /&gt;
&lt;br /&gt;
* petunia.library.kmod - this module contains the Just-In-Time emulator that allows AmigaOS to run programs made for the Motorola 68k processor&lt;br /&gt;
&lt;br /&gt;
== System components ==&lt;br /&gt;
&lt;br /&gt;
[[File:Workbench_directory_listing.png|frame|right|List of directories and files present at the root of any AmigaOS system]]&lt;br /&gt;
&lt;br /&gt;
Beside the kickstart modules, AmigaOS uses many different components that can be loaded only when used. These files are stored in different directories in the system volume.&lt;br /&gt;
Here is described a default AmigaOS installation.&lt;br /&gt;
&lt;br /&gt;
* C&lt;br /&gt;
This directory contains AmigaDOS &#039;&#039;&#039;C&#039;&#039;&#039;ommands&lt;br /&gt;
* Classes&lt;br /&gt;
contains different object elements easy to be used in any program: gadgets, requesters, graphic table, windows...&lt;br /&gt;
* Devs&lt;br /&gt;
contains definition for &#039;&#039;&#039;Dev&#039;&#039;&#039;ices&lt;br /&gt;
* Emulation&lt;br /&gt;
contains files used for the 68k emulation (though E-UAE)&lt;br /&gt;
* Fonts&lt;br /&gt;
contains various systems fonts&lt;br /&gt;
* Internet&lt;br /&gt;
contains a dialer to connect to Internet&lt;br /&gt;
* Kickstart&lt;br /&gt;
contains the kickstart modules&lt;br /&gt;
* L&lt;br /&gt;
contains hand&#039;&#039;&#039;l&#039;&#039;&#039;ers and filesystems&lt;br /&gt;
* Libs&lt;br /&gt;
contains dynamic &#039;&#039;&#039;Libr&#039;&#039;&#039;airies of functions&lt;br /&gt;
* Locale&lt;br /&gt;
contains all files used to localise the system (catalogs, keymaps...)&lt;br /&gt;
* MUI&lt;br /&gt;
contains the needed files for programs that use the MUI third party graphic interface&lt;br /&gt;
* [[Prefs]]&lt;br /&gt;
contains the preference programs used to customise AmigaOS&lt;br /&gt;
* S&lt;br /&gt;
contains the &#039;&#039;&#039;S&#039;&#039;&#039;cripts&lt;br /&gt;
* SObjs&lt;br /&gt;
contains .so shared object library files&lt;br /&gt;
* Storage&lt;br /&gt;
contains other optional files&lt;br /&gt;
* System&lt;br /&gt;
contains some programs used by the system itself (i.e. you don&#039;t need to run them yourself) or low-level programs like disk tools&lt;br /&gt;
* [[Utilities]]&lt;br /&gt;
contains several programs you can use to achieve some tasks on AmigaOS&lt;br /&gt;
&lt;br /&gt;
= Motorola 680x0 Emulators =&lt;br /&gt;
&lt;br /&gt;
For a long time Amigas have had the famous Motorola 680x0 processors as the central unit for execution. Unfortunately the time of the 680x0 series is passing in favor of other architectures. The new era of processors reached the Amiga some time ago, when expansion boards became available for extending the Classic systems with the raw power of a PowerPC processor.&lt;br /&gt;
&lt;br /&gt;
In the old operating system (AmigaOS 3.x) it was not possible to gain the full advantage of the new processors. The system itself and most of the applications required the original Motorola 680x0 processor. There was no 680x0 emulation available for the PowerPCs, so the 680x0 could not be &amp;quot;switched off&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Thus the new processors remained as a powerful, but mostly unused adjunct to the main 680x0 processor. &amp;quot;Native&amp;quot; PowerPC programs were rare, and every time a PowerPC program called the system, a so called &amp;quot;context switch&amp;quot; occurred between the 680x0 and PowerPC code, often causing a large performance penalty.&lt;br /&gt;
&lt;br /&gt;
The new Amiga platform is based on the PowerPC processor family, therefore the new version of the AmigaOS has to smooth the transition from the 680x0 series, which is achieved by emulating the old processor architecture. The operating system itself is written almost 100 percent for the PowerPC processors, but the 680x0 legacy applications require an emulated 680x0 processor. &lt;br /&gt;
&lt;br /&gt;
== Two 680x0 Emulators ==&lt;br /&gt;
&lt;br /&gt;
In version 4.0 of AmigaOS, two different emulators were implemented; one is the successor of BlackBox emulation, it is an interpretive emulator, thus the emulation speed is mediocre. On the other hand it has a very low &amp;quot;reaction time&amp;quot;, and is ideal for time critical parts, such as interrupts.&lt;br /&gt;
&lt;br /&gt;
The other is Petunia, the &amp;quot;JIT emulator&amp;quot;. A fast, but less compatible way of emulation of the legacy Motorola processors. It is intended mainly for emulating applications, and therefore, when execution of the application leaves the bounds of the application&#039;s code segment, emulation falls back to the interpretive method, where it does its job and returns to the JIT emulation again.&lt;br /&gt;
&lt;br /&gt;
Dynamic recompilation (also called just-in-time compilation or simply JIT compilation) is a technique of translating foreign processor machine code to native machine code, &amp;quot;on the fly&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This technique is common nowadays, commonly applied in JAVA virtual machines, and it is also used with success in several emulators. In dynamic recompilation there is the possibility of runtime optimization of the emulated code by collecting statistics of the execution process. Therefore (theoretically) the final executed code can be even faster than the original code on its original processor.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Emulated opcodes:&lt;br /&gt;
* all user and supervisor level opcodes of the Motorola 68040&lt;br /&gt;
* all FPU opcodes of the Motorola 68881/68882 &lt;br /&gt;
&lt;br /&gt;
AmigaOS claims only 68020/68881 compatibility to applications because this is the safest compatibility level, but both emulators are compatible with the machine code up to the level of 68040/060 processors.&lt;br /&gt;
&lt;br /&gt;
At compile time, a low level flag and branch control analysis allows on-the-fly optimizations of compiled code.&lt;br /&gt;
&lt;br /&gt;
== Removing the JIT Emulator ==&lt;br /&gt;
&lt;br /&gt;
Using the dynamic translation requires a lot more memory than the interpretive emulation. The translated code needs to be stored somewhere, not to mention the data collection tables.&lt;br /&gt;
&lt;br /&gt;
If speed is not as important as the memory consumption of the system, then the JIT emulator can be removed, leaving the job to the interpretive emulator.&lt;br /&gt;
&lt;br /&gt;
Thanks to the modular design of AmigaOS kickstart, all you need to do is edit the &amp;quot;Sys:Kickstart/Kicklayout&amp;quot; file, simply put a semicolon (;) at the beginning of the module line of Petunia.library.kmod. After rebooting the system from cold, the JIT emulator will not be reloaded. Make sure that you alter the appropriate configuration in the Kicklayout file, there may be several alternative configurations, with different names like &amp;quot;DefaultJIT&amp;quot;, or &amp;quot;DefaultNoJIT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Configuring the Emulators ==&lt;br /&gt;
&lt;br /&gt;
Petunia cooperates with a so called &amp;quot;black list&amp;quot;. By default Petunia emulates every 680x0 program or library that is loaded by DOS.library/LoadSeg function, but if an executable or library shows incompatibilities with Petunia, then it can be explicitly inhibited from the dynamic recompilation by specifying it in a list file.&lt;br /&gt;
&lt;br /&gt;
If an executable needs to be added to the list, then it can be done by extending the file &amp;quot;DEVS:applications.dos&amp;quot; with the &#039;&#039;&#039;Compatibility&#039;&#039;&#039; preferences program from the Prefs drawer of the system. Adding a program name to the list and checking it will prevent Petunia from emulating that program, and it will be interpreted instead by the built-in interpreter.&lt;br /&gt;
&lt;br /&gt;
Removing a program from the list or unchecking (thus allowing Petunia to emulate it again) can be done with the same preferences program.&lt;br /&gt;
&lt;br /&gt;
Please note: some programs consist of multiple executables (shared libraries, plugins). If you want to fully disable the translation of such programs, then every part must be added to the list.&lt;br /&gt;
&lt;br /&gt;
For example to disable UnArc fully, you would have to add all files from libs:xad and also xadmaster.library to the list. &lt;br /&gt;
&lt;br /&gt;
= AmigaOS boot procedure =&lt;br /&gt;
&lt;br /&gt;
Basically a computer with AmigaOS does the following when the power button is pushed:&lt;br /&gt;
&lt;br /&gt;
* [[File:Uboot.jpg|200px]]&lt;br /&gt;
the BIOS ([[UserDoc:BIOS|Uboot]] or [[UserDoc:BIOS|CFE]]) of the computer initialises the hardware: graphic card, USB ports... At this point, the monitor wakes up and the first information are displayed. This allows to see if hardware is correctly recognised. As an example you can see if a hard drive is correctly connected into the machine and your BIOS is correctly setup to make this drive useable.&lt;br /&gt;
* depending on how you setup the BIOS it will look on the harddisk to find the Second Level Booter (SLB). This program is stored on the first sectors of the disk. Whereas the BIOS does not know about AmigaOS disk structure, the SLB will be able to &#039;&#039;understand&#039;&#039; the AmigaOS partitions and files. In other words, it is the link between the BIOS and the rest of the boot procedure. Its goal is also to give you the ability to start several configurations present on the same drive.&lt;br /&gt;
* [[File:SLB.png|200px]]&lt;br /&gt;
the SLB will analyses all Amiga partitions on the disk it is installed on. It will read each [[UserDoc:kickstart_configuration|system configuration]] it finds on the partitions. It will show all available configurations for the user to select one to load.&lt;br /&gt;
The user can define many different kickstart configurations to choose from. Also both AmigaOS and Linux can be selected for boot.&lt;br /&gt;
* [[File:Kmods loading.png|200px]]&lt;br /&gt;
the SLB loads the kickstart files of the selected configuration and executes the &#039;&#039;&#039;Loader&#039;&#039;&#039; module&lt;br /&gt;
* &#039;&#039;&#039;Loader&#039;&#039;&#039; executes the kickstart modules (Exec, devices, libraries...)&lt;br /&gt;
* AmigaOS becomes alive displaying the AmigaOS boot picture on the monitor&lt;br /&gt;
* the AmigaDOS library executes the [[UserDoc:System_Scripts#startup-sequence|startup-sequence]] script found on the system volume&lt;br /&gt;
* the Startup-sequence will be executed and all commands it contains are executed. It means that starting from here the boot procedure is easy to follow and understand.&lt;br /&gt;
* the Workbench is started&lt;br /&gt;
&lt;br /&gt;
At this point the user can use his/her computer.&lt;br /&gt;
&lt;br /&gt;
= How to make a Bootable USB Memory Stick for AmigaOS 4.1 =&lt;br /&gt;
&lt;br /&gt;
By Julian Margetson (&amp;quot;Spectre660&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Prerequisites:&lt;br /&gt;
* USB memory stick of 2 GB or less in size.&lt;br /&gt;
* It is best to only have one USB mass storage device connected while you are creating your bootable USB memory stick.&lt;br /&gt;
* Plug the USB memory stick into a USB port on your machine.&lt;br /&gt;
* Note that the device will be formatted so make sure that you use an empty memory stick or one that does not contain any data that you need or backup the contents before you begin.&lt;br /&gt;
&lt;br /&gt;
Procedure:&lt;br /&gt;
# You use Media Toolbox in the System: drawer to prepare the USB stick. On starting Media Toolbox select &#039;&#039;usbdisk.device&#039;&#039; as the device to use.&lt;br /&gt;
# Make certain that you have selected usbdisk.device and not any other device.&lt;br /&gt;
# Click on &amp;quot;Start&amp;quot;&lt;br /&gt;
# You will see the usb mass storage unit connected in a list.&lt;br /&gt;
# Make sure that the Unit type displayed for the USB memory stick is &amp;quot;Removable hard disk&amp;quot;&lt;br /&gt;
# Select that Unit by clicking on it.&lt;br /&gt;
# The first thing that you need to do is to install the RDB onto the USB Memory Stick.&lt;br /&gt;
# Click on the  &amp;quot;Install&amp;quot; button.&lt;br /&gt;
# A window Labeled &amp;quot;RDB/disk geometry editing&amp;quot; comes up.&lt;br /&gt;
## Towards the bottom of the window is the &amp;quot;AmigaOne boot code (SLB)&amp;quot; section.&lt;br /&gt;
## Select the &amp;quot;Install&amp;quot; button .&lt;br /&gt;
## A file requester  &amp;quot;Select AmigaOne Boot Code&amp;quot; now comes  up with the Drawer choice defaulting to &amp;quot;l:&amp;quot;&lt;br /&gt;
## Select file &amp;quot;slb_v2&amp;quot;. &lt;br /&gt;
## Select Ok.&lt;br /&gt;
## You are now returned to the &amp;quot;RDB/disk geometry editing window&amp;quot;.&lt;br /&gt;
## Select &amp;quot;Ok-accept changes&amp;quot;.&lt;br /&gt;
# You are now returned to the display showing the attached USB unit.&lt;br /&gt;
# Select &amp;quot;Edit partitions and Filesystems&amp;quot;. You will now see the Window &#039;Editing partitions for disk&amp;quot;&lt;br /&gt;
# Select &amp;quot;Add partition&amp;quot;&lt;br /&gt;
# This defaults to using the whole device as a single partition.&lt;br /&gt;
# It is possible to use create more partitions but for this tutorial we will only use one.&lt;br /&gt;
# You now need to give the partition a unique name (e.g. USB0 or something that is different from any of the existing partitions on your hard drive). This is done by changing the default DH0 in the &amp;quot;Name&amp;quot; box.&lt;br /&gt;
# Now make sure that the Boxes &amp;quot;Automount&amp;quot; and &amp;quot;Bootable&amp;quot; are  selected and show the &amp;quot;Tick mark&amp;quot;.&lt;br /&gt;
# You need to set &amp;quot;Boot priority&amp;quot; to higher than the boot priority of your hard drive boot partition(s). This is done by increasing Boot priority by clicking on the &amp;quot;+&amp;quot; to the right of the &amp;quot;boot priority&amp;quot; box. Normally you can set the boot priority to 2 .&lt;br /&gt;
# Next it is time to select the file system to use.&lt;br /&gt;
# Select &amp;quot;Select filesystem/edit details&amp;quot;.&lt;br /&gt;
# The Window &amp;quot;Editing details for partition &#039;USB0&#039;&amp;quot;  ,or whatever partition name you used, comes up.&lt;br /&gt;
## Select the file system that you are going to use by selecting the pull down menu under &amp;quot;Filesystem chooser&amp;quot;.&lt;br /&gt;
## Only filesystems SFS/00 or SFS/02 will work for a bootable device.&lt;br /&gt;
## The option that gives the most flexibility at the moment is SFS/00 as a USB stick in this format can be read and written to using another compatible system in the event that you need to make modifications after it is created without a booting AmigaOS 4.1 machine.&lt;br /&gt;
## Next select Blocksize from the &amp;quot;Blocksize&amp;quot; pull down menu. 512 is the correct size to use.&lt;br /&gt;
## Now Select &amp;quot;Ok-accept changes&amp;quot;.&lt;br /&gt;
## Your are now returned to the &amp;quot;Edit partitions for disk&amp;quot; window.&lt;br /&gt;
## Again select &amp;quot;Ok-accept changes&amp;quot;&lt;br /&gt;
# You are now returned to the window showing the USB mass storage unit list.&lt;br /&gt;
# Select &amp;quot;Save to disk&amp;quot;&lt;br /&gt;
# A requester pops up with the options &amp;quot;Yes, Save.&amp;quot; or &amp;quot;No!&amp;quot;&lt;br /&gt;
# Select the &amp;quot;Yes, save.&amp;quot; option.&lt;br /&gt;
# You now close Media Toolbox by clicking on the close icon (X) on the left of the Media Toolbox window.&lt;br /&gt;
# This will give you a requester advising that you need to reboot the machine for the changes to take effect. At this point you need to remove the USB memory stick for the machine. If you do not then the Machine will attempt boot from it before it is formatted and the required Kickstart and AmigaOS 4.1 files are copied to it.&lt;br /&gt;
# Select &amp;quot;Yes, reboot NOW!&amp;quot;.&lt;br /&gt;
# Once you have rebooted connect your USB Memory Stick to a USB port.&lt;br /&gt;
# A disk icon &amp;quot;USB0:Uninitialized&amp;quot; (or whatever partition name you used) appears on Workbench.&lt;br /&gt;
# You now need to format the device.&lt;br /&gt;
# To format Select this Icon and go to the Workbench &amp;quot;Icons&amp;quot; menu .&lt;br /&gt;
# Select &amp;quot;Format Disk&amp;quot;&lt;br /&gt;
# You can give the USB Memory Stick a unique name and  select whether you want a Trashcan or not.&lt;br /&gt;
# You can use either a full Format or a  Quick Format. Full Format may take a few minutes.&lt;br /&gt;
# Once formatted the USB Memory Stick is ready for you to copy the required files from you hard drive or AmigaOS Install CD to it in order to boot AmigaOS 4.1 from it.&lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=UserDoc:How_AmigaOS_Works&amp;diff=7914</id>
		<title>UserDoc:How AmigaOS Works</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=UserDoc:How_AmigaOS_Works&amp;diff=7914"/>
		<updated>2015-05-29T06:24:36Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: /* Directories/Drawers */ Added basic explanation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As already mentioned, AmigaOS was a pioneer in the early days of personal computing in delivering sophistication that contemporary systems could only have dreamt of and pretended to offer. Today, AmigaOS continues to offer a straightforward elegance that seems to be overlooked in the development of other platforms. Thanks to the concepts behind AmigaOS, the system is easy to understand and to use by everyone.&lt;br /&gt;
&lt;br /&gt;
In this page we will explore all these concepts of AmigaOS. Also you will learn here the naming of all parts of the system.&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
AmigaOS is made of different components which are either mandatory (i.e.,  AmigaOS will not work without them) or components the user can choose to use or not. All these components can have one or mutiple interfaces a user or a developer can use to operate with the components and through them to control the operating system.&lt;br /&gt;
&lt;br /&gt;
= The most important components =&lt;br /&gt;
&lt;br /&gt;
== Exec, the AmigaOS kernel ==&lt;br /&gt;
&lt;br /&gt;
Exec is the kernel of AmigaOS. It is the component that pilots all other components. It is responsible for running programs, dealing with computer memory and managing low-level resources that programs may need. In other words, it organises everything to make the operating system run.&lt;br /&gt;
&lt;br /&gt;
It is made of different parts that cannot be moved outside the kernel: the scheduler, the memory pager and the 68k interpretive emulator.&lt;br /&gt;
&lt;br /&gt;
== AmigaDOS: the underlying system ==&lt;br /&gt;
&lt;br /&gt;
The word &amp;quot;DOS&amp;quot; was originally an acronym for &amp;quot;Disk Operating System&amp;quot;. Some say it should be &amp;quot;Disk Based Operating System&amp;quot; as it does a lot more than operate a disk and that it was really an operating system based (stored) on disks.  Some say it should be &amp;quot;Device Operating System&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The whole AmigaDOS system includes things such as:&lt;br /&gt;
&lt;br /&gt;
* A set of commands that can be used in the Shell window and elsewhere.&lt;br /&gt;
* A system for saving data to disk and retrieving it from disk.&lt;br /&gt;
* A system for filing data on disks.&lt;br /&gt;
* An interface for peripherals such as keyboards, monitors, printers, etc.&lt;br /&gt;
* A method of running programs&lt;br /&gt;
* A multitasking system for running more than one program at a time.&lt;br /&gt;
* etc. etc. etc.&lt;br /&gt;
&lt;br /&gt;
Read the [[AmigaDOS manual]] to understand and learn everything about AmigaDOS.&lt;br /&gt;
&lt;br /&gt;
== The Graphics library ==&lt;br /&gt;
&lt;br /&gt;
The Graphics library handles every low level graphic operation like designing pixels on the monitor, creating graphic elements (bobs, sprites) and also writing text output.&lt;br /&gt;
&lt;br /&gt;
== Intuition ==&lt;br /&gt;
&lt;br /&gt;
The Intuition library is responsible for every graphical object: windows, screens, gadgets, mouse pointers... It lies between any graphic program and the graphics library.&lt;br /&gt;
&lt;br /&gt;
== The Workbench ==&lt;br /&gt;
&lt;br /&gt;
The Workbench is the graphical place where you will manage your computer and all your files. The name was chosen because the user will use tools to create and work with the computer.&lt;br /&gt;
&lt;br /&gt;
[[File:Wb.png|320px]]&lt;br /&gt;
&lt;br /&gt;
== The Shell ==&lt;br /&gt;
&lt;br /&gt;
While some people prefer to control the operating system using their mouse, others prefer using the keyboard. The shell is a text based window when you can type commands to execute actions in the operating system. In the shell the commands will display the results of their execution.&lt;br /&gt;
&lt;br /&gt;
== ARexx - inter-program communication by scripting ==&lt;br /&gt;
&lt;br /&gt;
The ARexx scripting language can be used to operate the Workbench and other Amiga applications from a script containing ARexx commands. This is extremely useful in performing repetitive tasks or doing what the controlled application was not even designed to do.&lt;br /&gt;
After a learning curve, everybody can use ARexx as it is built into the system.  The scripts can be executed immediately like any other tool.&lt;br /&gt;
&lt;br /&gt;
= How is my data stored? =&lt;br /&gt;
== Files ==&lt;br /&gt;
=== Executable files ===&lt;br /&gt;
Programs you can start are stored in executable files. They contain binary code directly understandable by the computer. They are files with an executable bit, a flag that shows AmigaOS that such file will do something when started.&lt;br /&gt;
An example is a music player. When you start this executable, the player opens and you can start playing music files.&lt;br /&gt;
&lt;br /&gt;
AmigaOS can run two different kinds of executable files: the AmigaOS native programs made for the PowerPC processor and programs created for the Motorola 68k processors. The latter are executed inside an emulation that transcripts them into PowerPC code.&lt;br /&gt;
&lt;br /&gt;
==== Scripts ====&lt;br /&gt;
&lt;br /&gt;
Scripts are text files containing a list of commands.  They are not strictly executables like &#039;&#039;binary code&#039;&#039; files but they can be executed by AmigaOS as if they were.&lt;br /&gt;
This is the case with AmigaDOS and ARexx scripts. These files need to have the executable bit, and the script bit.&lt;br /&gt;
&lt;br /&gt;
=== Data files ===&lt;br /&gt;
Files that are not executable are data files. These contain data that will be manipulated by programs. Some examples are a music file, a video file or a text document.&lt;br /&gt;
&lt;br /&gt;
== Directories/Drawers ==&lt;br /&gt;
In order to organise things, files are grouped together. We create &amp;quot;directories&amp;quot; which are like drawers of a cabinet to store different files of the same kind, for example.  &lt;br /&gt;
Often the name &#039;&#039;directory&#039;&#039; is used when talking about a directory which is stored on a disk. The graphical interface of AmigaOS is called &amp;quot;Workbench,&amp;quot; and directories are often called &#039;&#039;drawers&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Note: directories are often called &#039;&#039;folders&#039;&#039; on other systems.  The terms &amp;quot;directory,&amp;quot; &amp;quot;drawer&amp;quot; and &amp;quot;folder&amp;quot; are synonymous.&lt;br /&gt;
&lt;br /&gt;
== Disks, partitions and volumes ==&lt;br /&gt;
=== Disks ===&lt;br /&gt;
Disks are storage medium you can purchase on a computer store. We use them to store our files. They can be internal hard disks, external ones or a USB disk drive.&lt;br /&gt;
&lt;br /&gt;
=== Partitions ===&lt;br /&gt;
A disk is often very big and many users prefer to make it more organised. This is done virtually splitting the disk into several smaller parts. This operation is known as creating partitions on a disk.&lt;br /&gt;
&lt;br /&gt;
[[File:Partitions.png|Small part of Media Toolbox showing different partitions on the harddisk]]&lt;br /&gt;
&lt;br /&gt;
On this screenshot you can see one harddisk with many partitions. Each color corresponds to a different filesystem which defines how data is stored. Also you can see a greyed area which is a blank area on the disk i.e. no partition is defined at this position.&lt;br /&gt;
&lt;br /&gt;
=== Volumes ===&lt;br /&gt;
A partition is a physical area on a disk. To access it with AmigaOS we could read the physical data off the partition but it&#039;s not an easy way. To make it easier AmigaOS uses the concept of volumes. These are virtual representations of a partition. The volumes have a name so AmigaOS and therefore the user can access all files/directories stored on it in a very practical way: just by using its name.&lt;br /&gt;
&lt;br /&gt;
= How to identify files/directories =&lt;br /&gt;
&lt;br /&gt;
== On the Workbench ==&lt;br /&gt;
&lt;br /&gt;
The Workbench being graphical, a lot of things are understandable just by looking at them. That&#039;s why icons are often enough to understand what kind of object it represents: a file, a directory, a disk...&lt;br /&gt;
&lt;br /&gt;
In case you have a doubt, just look at the information on an icon. The Workbench will tell you the type of the object. It is displayed next to its name.&lt;br /&gt;
&lt;br /&gt;
== In a shell ==&lt;br /&gt;
&lt;br /&gt;
In a shell the &#039;&#039;&#039;list&#039;&#039;&#039; command can be used to see if an object is a file or a directory.&lt;br /&gt;
&lt;br /&gt;
[[File:Files-dirs-in-shell.png|The &#039;&#039;&#039;list&#039;&#039;&#039; command shows a file of 925678 bytes and two directories]]&lt;br /&gt;
&lt;br /&gt;
A file will be displayed with its size, whereas a directory will be displayed with the text &#039;&#039;&#039;Dir&#039;&#039;&#039; next to it.&lt;br /&gt;
&lt;br /&gt;
Also, as you can see on the screenshot, the list command displays other characteristics on these 3 items: the protection bits and the date they were updated the last time. The command also sums up what it just listed.&lt;br /&gt;
&lt;br /&gt;
= All AmigaOS components =&lt;br /&gt;
&lt;br /&gt;
AmigaOS is made of components that are needed as soon as the system starts or later when the user or the system needs them.&lt;br /&gt;
&lt;br /&gt;
== Kickstart modules ==&lt;br /&gt;
&lt;br /&gt;
These components are the heart of AmigaOS. Their duties is to do graphics, to handle discs or to handle all reads/writes to files. Also one of them is the AmigaOS kernel which is a kind of director handling the work of all other components.&lt;br /&gt;
These Kickstart modules are loaded at the beginning of the operating system boot process (read [[UserDoc:How_AmigaOS_Works#AmigaOS_boot_procedure|here]]). You can find all them in the &#039;&#039;&#039;Kickstart&#039;&#039;&#039; directory in the system volume. Here is a list:&lt;br /&gt;
&lt;br /&gt;
=== Mandatory modules ===&lt;br /&gt;
&lt;br /&gt;
The following modules are required in any AmigaOS system. Without one of these, the system will not start.&lt;br /&gt;
&lt;br /&gt;
* kernel - The kernel works like a conductor in an orchestra. Its job is to make everything works together. It creates processes, handle memory usage, defines the way other components will access peripherals...etc. Note that the AmigaOS kernel is not based on any other kernel. It is a self made kernel that works since 1983.&lt;br /&gt;
* loader - this component handles the loading of all other kickstart modules&lt;br /&gt;
* battclock.resource.kmod - this module handles reading/writing the battery backed up clock which is used on all computers to keep the date and time&lt;br /&gt;
* bootimage - this is the boot picture. It is displayed during the start sequence of AmigaOS&lt;br /&gt;
* bootmenu.kmod - this component handles the Early Startup Menu the use can use to define some settings before starting AmigaOS&lt;br /&gt;
* con-handler.kmod - it directs the read and write requests to the console window, to a serial AUX: device or any other supported interface&lt;br /&gt;
* console.device.kmod - it opens a window and reads/writes text to and from that window&lt;br /&gt;
* diskboot.kmod - handles the booting of AmigaOS from a supported disk&lt;br /&gt;
* diskboot.config - this is a text file experienced users can modify to change the boot behaviour of AmigaOS&lt;br /&gt;
* dos.library.kmod - this module is a collection of functions that any program can use to perform actions on disks, files and directories&lt;br /&gt;
* elf.library.kmod - handles the loading of executable programs&lt;br /&gt;
* env-handler.kmod - handles the read/writes of environment variables&lt;br /&gt;
* FileSystem.resource.kmod - handles the use of the different filesystems&lt;br /&gt;
* gadtools.library.kmod - collection of functions used to create all graphic objects like gadgets, sliders, menus...&lt;br /&gt;
* gameport.device.kmod - handles the read/writes of game pads and joysticks&lt;br /&gt;
* graphics.library.kmod - collection of functions used to draw graphic elements on the monitor&lt;br /&gt;
* hunk.library.kmod - set of functions to read a data stream into memory&lt;br /&gt;
* input.device.kmod - handles of input events like keyboard events or mouse clicks&lt;br /&gt;
* intuition.library.kmod - collection of functions to create and handle all graphic elements (screens, windows, the mouse pointer...)&lt;br /&gt;
* layers.library.kmod - set of functions to be used to handle different layers in graphic operations&lt;br /&gt;
* keyboard.device.kmod - driver for the keyboard&lt;br /&gt;
* keymap.library.kmod - functions to handle different keymaps&lt;br /&gt;
* newlib.library.kmod - collection of functions to perform memory operations (allocating memory, copying memory areas... )&lt;br /&gt;
* nonvolatile.library.kmod - provides a simple means for an application developer to manage nonvolatile storage&lt;br /&gt;
* nvram.resource.kmod - handles the read/writes to the EEPROM chip present on many AmigaOS computers&lt;br /&gt;
* PCIGraphics.card - driver that supports the use of different graphic cards&lt;br /&gt;
* ram-handler.kmod - functions that handles the &#039;&#039;&#039;Ram disk:&#039;&#039;&#039; special disk&lt;br /&gt;
* ramdrive.device.kmod - device that allows the usage of the ramdrive device &#039;&#039;&#039;RAD:&#039;&#039;&#039; disk&lt;br /&gt;
* ramlib.kmod - loads disk based libraries and devices for exec.library&lt;br /&gt;
* rtg.library - library of functions to perform lowlevel graphic operations on graphic cards&lt;br /&gt;
* shell.kmod - the AmigaOS command line interface&lt;br /&gt;
* strap.kmod - module that handles booting on different disk devices&lt;br /&gt;
* timer.device.kmod - driver to give access to timing functions&lt;br /&gt;
&lt;br /&gt;
=== Filesystem support ===&lt;br /&gt;
&lt;br /&gt;
These kickstart modules can be loaded or left aside. If you want to use a particular filesystem on your disk partitions, you need to load the corresponding filesystem module.&lt;br /&gt;
&lt;br /&gt;
* CDFileSystem - handles the CD-ROM disks with data stored in different formats: ISO9660, HFS...&lt;br /&gt;
* SmartFilesystem - allows the usage of partitions in SFS0 and SFS2 layouts&lt;br /&gt;
* JXFileSystem - allows the usage of partitions in JXFS layout&lt;br /&gt;
* FastFileSystem - allows the usage of partitions in FFS and FFS2 layouts&lt;br /&gt;
* diskcache.library.kmod - component required by the SmartFileSystem and JXFileSystem modules&lt;br /&gt;
&lt;br /&gt;
=== Hardware drivers ===&lt;br /&gt;
&lt;br /&gt;
==== Graphic cards drivers ====&lt;br /&gt;
&lt;br /&gt;
* 3dfxVoodoo.chip&lt;br /&gt;
* 3DLabsPermedia2.chip&lt;br /&gt;
* ATIRadeon.chip&lt;br /&gt;
* RadeonHD.chip&lt;br /&gt;
* siliconmotion502.chip&lt;br /&gt;
&lt;br /&gt;
==== Disk drivers ====&lt;br /&gt;
&lt;br /&gt;
Each of these drivers allow the use of disks connected to a disk controller. These files are named with the name of the controller they support. As an example, the &#039;&#039;&#039;sii3114ide.device.kmod&#039;&#039;&#039; allows to use disks connected on a &#039;&#039;&#039;Silicon Image SiI3114&#039;&#039;&#039; controller chip.&lt;br /&gt;
&lt;br /&gt;
* it8212ide.device.kmod&lt;br /&gt;
* lsi53c8xx.device.kmod&lt;br /&gt;
* sam460sata.device.kmod&lt;br /&gt;
* sii3112ide.device.kmod&lt;br /&gt;
* sii3512ide.device.kmod&lt;br /&gt;
* sii3114ide.device.kmod&lt;br /&gt;
* sii0680ide.device.kmod&lt;br /&gt;
* sii3132ide.device.kmod&lt;br /&gt;
&lt;br /&gt;
==== USB drivers ====&lt;br /&gt;
&lt;br /&gt;
* hub.usbfd&lt;br /&gt;
* usbsys.device&lt;br /&gt;
* usbresource.library&lt;br /&gt;
* ehci.usbhcd&lt;br /&gt;
* ohci.usbhcd&lt;br /&gt;
* uhci.usbhcd&lt;br /&gt;
* massstorage.usbfd&lt;br /&gt;
&lt;br /&gt;
==== Other drivers ====&lt;br /&gt;
&lt;br /&gt;
* bootkeyboard.usbfd - allows a USB keyboard to be used even before the USB stack is loaded&lt;br /&gt;
* bootmouse.usbfd - allows a USB mouse to be used even before the USB stack is loaded&lt;br /&gt;
* fpga.resource.kmod - allows to use the FPGA components which are present on some Amiga computers&lt;br /&gt;
* i2c.resource.kmod - allows to use the i2c interface present on some Amiga computers&lt;br /&gt;
* xena.resource.kmod - provides access to the Xena chip on the AmigaOne X1000&lt;br /&gt;
&lt;br /&gt;
=== Misc modules ===&lt;br /&gt;
&lt;br /&gt;
* petunia.library.kmod - this module contains the Just-In-Time emulator that allows AmigaOS to run programs made for the Motorola 68k processor&lt;br /&gt;
&lt;br /&gt;
== System components ==&lt;br /&gt;
&lt;br /&gt;
[[File:Workbench_directory_listing.png|frame|right|List of directories and files present at the root of any AmigaOS system]]&lt;br /&gt;
&lt;br /&gt;
Beside the kickstart modules, AmigaOS uses many different components that can be loaded only when used. These files are stored in different directories in the system volume.&lt;br /&gt;
Here is described a default AmigaOS installation.&lt;br /&gt;
&lt;br /&gt;
* C&lt;br /&gt;
This directory contains AmigaDOS &#039;&#039;&#039;C&#039;&#039;&#039;ommands&lt;br /&gt;
* Classes&lt;br /&gt;
contains different object elements easy to be used in any program: gadgets, requesters, graphic table, windows...&lt;br /&gt;
* Devs&lt;br /&gt;
contains definition for &#039;&#039;&#039;Dev&#039;&#039;&#039;ices&lt;br /&gt;
* Emulation&lt;br /&gt;
contains files used for the 68k emulation (though E-UAE)&lt;br /&gt;
* Fonts&lt;br /&gt;
contains various systems fonts&lt;br /&gt;
* Internet&lt;br /&gt;
contains a dialer to connect to Internet&lt;br /&gt;
* Kickstart&lt;br /&gt;
contains the kickstart modules&lt;br /&gt;
* L&lt;br /&gt;
contains hand&#039;&#039;&#039;l&#039;&#039;&#039;ers and filesystems&lt;br /&gt;
* Libs&lt;br /&gt;
contains dynamic &#039;&#039;&#039;Libr&#039;&#039;&#039;airies of functions&lt;br /&gt;
* Locale&lt;br /&gt;
contains all files used to localise the system (catalogs, keymaps...)&lt;br /&gt;
* MUI&lt;br /&gt;
contains the needed files for programs that use the MUI third party graphic interface&lt;br /&gt;
* [[Prefs]]&lt;br /&gt;
contains the preference programs used to customise AmigaOS&lt;br /&gt;
* S&lt;br /&gt;
contains the &#039;&#039;&#039;S&#039;&#039;&#039;cripts&lt;br /&gt;
* SObjs&lt;br /&gt;
contains .so shared object library files&lt;br /&gt;
* Storage&lt;br /&gt;
contains other optional files&lt;br /&gt;
* System&lt;br /&gt;
contains some programs used by the system itself (i.e. you don&#039;t need to run them yourself) or low-level programs like disk tools&lt;br /&gt;
* [[Utilities]]&lt;br /&gt;
contains several programs you can use to achieve some tasks on AmigaOS&lt;br /&gt;
&lt;br /&gt;
= Motorola 680x0 Emulators =&lt;br /&gt;
&lt;br /&gt;
For a long time Amigas have had the famous Motorola 680x0 processors as the central unit for execution. Unfortunately the time of the 680x0 series is passing in favor of other architectures. The new era of processors reached the Amiga some time ago, when expansion boards became available for extending the Classic systems with the raw power of a PowerPC processor.&lt;br /&gt;
&lt;br /&gt;
In the old operating system (AmigaOS 3.x) it was not possible to gain the full advantage of the new processors. The system itself and most of the applications required the original Motorola 680x0 processor. There was no 680x0 emulation available for the PowerPCs, so the 680x0 could not be &amp;quot;switched off&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Thus the new processors remained as a powerful, but mostly unused adjunct to the main 680x0 processor. &amp;quot;Native&amp;quot; PowerPC programs were rare, and every time a PowerPC program called the system, a so called &amp;quot;context switch&amp;quot; occurred between the 680x0 and PowerPC code, often causing a large performance penalty.&lt;br /&gt;
&lt;br /&gt;
The new Amiga platform is based on the PowerPC processor family, therefore the new version of the AmigaOS has to smooth the transition from the 680x0 series, which is achieved by emulating the old processor architecture. The operating system itself is written almost 100 percent for the PowerPC processors, but the 680x0 legacy applications require an emulated 680x0 processor. &lt;br /&gt;
&lt;br /&gt;
== Two 680x0 Emulators ==&lt;br /&gt;
&lt;br /&gt;
In version 4.0 of AmigaOS, two different emulators were implemented; one is the successor of BlackBox emulation, it is an interpretive emulator, thus the emulation speed is mediocre. On the other hand it has a very low &amp;quot;reaction time&amp;quot;, and is ideal for time critical parts, such as interrupts.&lt;br /&gt;
&lt;br /&gt;
The other is Petunia, the &amp;quot;JIT emulator&amp;quot;. A fast, but less compatible way of emulation of the legacy Motorola processors. It is intended mainly for emulating applications, and therefore, when execution of the application leaves the bounds of the application&#039;s code segment, emulation falls back to the interpretive method, where it does its job and returns to the JIT emulation again.&lt;br /&gt;
&lt;br /&gt;
Dynamic recompilation (also called just-in-time compilation or simply JIT compilation) is a technique of translating foreign processor machine code to native machine code, &amp;quot;on the fly&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This technique is common nowadays, commonly applied in JAVA virtual machines, and it is also used with success in several emulators. In dynamic recompilation there is the possibility of runtime optimization of the emulated code by collecting statistics of the execution process. Therefore (theoretically) the final executed code can be even faster than the original code on its original processor.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Emulated opcodes:&lt;br /&gt;
* all user and supervisor level opcodes of the Motorola 68040&lt;br /&gt;
* all FPU opcodes of the Motorola 68881/68882 &lt;br /&gt;
&lt;br /&gt;
AmigaOS claims only 68020/68881 compatibility to applications because this is the safest compatibility level, but both emulators are compatible with the machine code up to the level of 68040/060 processors.&lt;br /&gt;
&lt;br /&gt;
At compile time, a low level flag and branch control analysis allows on-the-fly optimizations of compiled code.&lt;br /&gt;
&lt;br /&gt;
== Removing the JIT Emulator ==&lt;br /&gt;
&lt;br /&gt;
Using the dynamic translation requires a lot more memory than the interpretive emulation. The translated code needs to be stored somewhere, not to mention the data collection tables.&lt;br /&gt;
&lt;br /&gt;
If speed is not as important as the memory consumption of the system, then the JIT emulator can be removed, leaving the job to the interpretive emulator.&lt;br /&gt;
&lt;br /&gt;
Thanks to the modular design of AmigaOS kickstart, all you need to do is edit the &amp;quot;Sys:Kickstart/Kicklayout&amp;quot; file, simply put a semicolon (;) at the beginning of the module line of Petunia.library.kmod. After rebooting the system from cold, the JIT emulator will not be reloaded. Make sure that you alter the appropriate configuration in the Kicklayout file, there may be several alternative configurations, with different names like &amp;quot;DefaultJIT&amp;quot;, or &amp;quot;DefaultNoJIT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Configuring the Emulators ==&lt;br /&gt;
&lt;br /&gt;
Petunia cooperates with a so called &amp;quot;black list&amp;quot;. By default Petunia emulates every 680x0 program or library that is loaded by DOS.library/LoadSeg function, but if an executable or library shows incompatibilities with Petunia, then it can be explicitly inhibited from the dynamic recompilation by specifying it in a list file.&lt;br /&gt;
&lt;br /&gt;
If an executable needs to be added to the list, then it can be done by extending the file &amp;quot;DEVS:applications.dos&amp;quot; with the &#039;&#039;&#039;Compatibility&#039;&#039;&#039; preferences program from the Prefs drawer of the system. Adding a program name to the list and checking it will prevent Petunia from emulating that program, and it will be interpreted instead by the built-in interpreter.&lt;br /&gt;
&lt;br /&gt;
Removing a program from the list or unchecking (thus allowing Petunia to emulate it again) can be done with the same preferences program.&lt;br /&gt;
&lt;br /&gt;
Please note: some programs consist of multiple executables (shared libraries, plugins). If you want to fully disable the translation of such programs, then every part must be added to the list.&lt;br /&gt;
&lt;br /&gt;
For example to disable UnArc fully, you would have to add all files from libs:xad and also xadmaster.library to the list. &lt;br /&gt;
&lt;br /&gt;
= AmigaOS boot procedure =&lt;br /&gt;
&lt;br /&gt;
Basically a computer with AmigaOS does the following when the power button is pushed:&lt;br /&gt;
&lt;br /&gt;
* [[File:Uboot.jpg|200px]]&lt;br /&gt;
the BIOS ([[UserDoc:BIOS|Uboot]] or [[UserDoc:BIOS|CFE]]) of the computer initialises the hardware: graphic card, USB ports... At this point, the monitor wakes up and the first information are displayed. This allows to see if hardware is correctly recognised. As an example you can see if a hard drive is correctly connected into the machine and your BIOS is correctly setup to make this drive useable.&lt;br /&gt;
* depending on how you setup the BIOS it will look on the harddisk to find the Second Level Booter (SLB). This program is stored on the first sectors of the disk. Whereas the BIOS does not know about AmigaOS disk structure, the SLB will be able to &#039;&#039;understand&#039;&#039; the AmigaOS partitions and files. In other words, it is the link between the BIOS and the rest of the boot procedure. Its goal is also to give you the ability to start several configurations present on the same drive.&lt;br /&gt;
* [[File:SLB.png|200px]]&lt;br /&gt;
the SLB will analyses all Amiga partitions on the disk it is installed on. It will read each [[UserDoc:kickstart_configuration|system configuration]] it finds on the partitions. It will show all available configurations for the user to select one to load.&lt;br /&gt;
The user can define many different kickstart configurations to choose from. Also both AmigaOS and Linux can be selected for boot.&lt;br /&gt;
* [[File:Kmods loading.png|200px]]&lt;br /&gt;
the SLB loads the kickstart files of the selected configuration and executes the &#039;&#039;&#039;Loader&#039;&#039;&#039; module&lt;br /&gt;
* &#039;&#039;&#039;Loader&#039;&#039;&#039; executes the kickstart modules (Exec, devices, libraries...)&lt;br /&gt;
* AmigaOS becomes alive displaying the AmigaOS boot picture on the monitor&lt;br /&gt;
* the AmigaDOS library executes the [[UserDoc:System_Scripts#startup-sequence|startup-sequence]] script found on the system volume&lt;br /&gt;
* the Startup-sequence will be executed and all commands it contains are executed. It means that starting from here the boot procedure is easy to follow and understand.&lt;br /&gt;
* the Workbench is started&lt;br /&gt;
&lt;br /&gt;
At this point the user can use his/her computer.&lt;br /&gt;
&lt;br /&gt;
= How to make a Bootable USB Memory Stick for AmigaOS 4.1 =&lt;br /&gt;
&lt;br /&gt;
By Julian Margetson (&amp;quot;Spectre660&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Prerequisites:&lt;br /&gt;
* USB memory stick of 2 GB or less in size.&lt;br /&gt;
* It is best to only have one USB mass storage device connected while you are creating your bootable USB memory stick.&lt;br /&gt;
* Plug the USB memory stick into a USB port on your machine.&lt;br /&gt;
* Note that the device will be formatted so make sure that you use an empty memory stick or one that does not contain any data that you need or backup the contents before you begin.&lt;br /&gt;
&lt;br /&gt;
Procedure:&lt;br /&gt;
# You use Media Toolbox in the System: drawer to prepare the USB stick. On starting Media Toolbox select &#039;&#039;usbdisk.device&#039;&#039; as the device to use.&lt;br /&gt;
# Make certain that you have selected usbdisk.device and not any other device.&lt;br /&gt;
# Click on &amp;quot;Start&amp;quot;&lt;br /&gt;
# You will see the usb mass storage unit connected in a list.&lt;br /&gt;
# Make sure that the Unit type displayed for the USB memory stick is &amp;quot;Removable hard disk&amp;quot;&lt;br /&gt;
# Select that Unit by clicking on it.&lt;br /&gt;
# The first thing that you need to do is to install the RDB onto the USB Memory Stick.&lt;br /&gt;
# Click on the  &amp;quot;Install&amp;quot; button.&lt;br /&gt;
# A window Labeled &amp;quot;RDB/disk geometry editing&amp;quot; comes up.&lt;br /&gt;
## Towards the bottom of the window is the &amp;quot;AmigaOne boot code (SLB)&amp;quot; section.&lt;br /&gt;
## Select the &amp;quot;Install&amp;quot; button .&lt;br /&gt;
## A file requester  &amp;quot;Select AmigaOne Boot Code&amp;quot; now comes  up with the Drawer choice defaulting to &amp;quot;l:&amp;quot;&lt;br /&gt;
## Select file &amp;quot;slb_v2&amp;quot;. &lt;br /&gt;
## Select Ok.&lt;br /&gt;
## You are now returned to the &amp;quot;RDB/disk geometry editing window&amp;quot;.&lt;br /&gt;
## Select &amp;quot;Ok-accept changes&amp;quot;.&lt;br /&gt;
# You are now returned to the display showing the attached USB unit.&lt;br /&gt;
# Select &amp;quot;Edit partitions and Filesystems&amp;quot;. You will now see the Window &#039;Editing partitions for disk&amp;quot;&lt;br /&gt;
# Select &amp;quot;Add partition&amp;quot;&lt;br /&gt;
# This defaults to using the whole device as a single partition.&lt;br /&gt;
# It is possible to use create more partitions but for this tutorial we will only use one.&lt;br /&gt;
# You now need to give the partition a unique name (e.g. USB0 or something that is different from any of the existing partitions on your hard drive). This is done by changing the default DH0 in the &amp;quot;Name&amp;quot; box.&lt;br /&gt;
# Now make sure that the Boxes &amp;quot;Automount&amp;quot; and &amp;quot;Bootable&amp;quot; are  selected and show the &amp;quot;Tick mark&amp;quot;.&lt;br /&gt;
# You need to set &amp;quot;Boot priority&amp;quot; to higher than the boot priority of your hard drive boot partition(s). This is done by increasing Boot priority by clicking on the &amp;quot;+&amp;quot; to the right of the &amp;quot;boot priority&amp;quot; box. Normally you can set the boot priority to 2 .&lt;br /&gt;
# Next it is time to select the file system to use.&lt;br /&gt;
# Select &amp;quot;Select filesystem/edit details&amp;quot;.&lt;br /&gt;
# The Window &amp;quot;Editing details for partition &#039;USB0&#039;&amp;quot;  ,or whatever partition name you used, comes up.&lt;br /&gt;
## Select the file system that you are going to use by selecting the pull down menu under &amp;quot;Filesystem chooser&amp;quot;.&lt;br /&gt;
## Only filesystems SFS/00 or SFS/02 will work for a bootable device.&lt;br /&gt;
## The option that gives the most flexibility at the moment is SFS/00 as a USB stick in this format can be read and written to using another compatible system in the event that you need to make modifications after it is created without a booting AmigaOS 4.1 machine.&lt;br /&gt;
## Next select Blocksize from the &amp;quot;Blocksize&amp;quot; pull down menu. 512 is the correct size to use.&lt;br /&gt;
## Now Select &amp;quot;Ok-accept changes&amp;quot;.&lt;br /&gt;
## Your are now returned to the &amp;quot;Edit partitions for disk&amp;quot; window.&lt;br /&gt;
## Again select &amp;quot;Ok-accept changes&amp;quot;&lt;br /&gt;
# You are now returned to the window showing the USB mass storage unit list.&lt;br /&gt;
# Select &amp;quot;Save to disk&amp;quot;&lt;br /&gt;
# A requester pops up with the options &amp;quot;Yes, Save.&amp;quot; or &amp;quot;No!&amp;quot;&lt;br /&gt;
# Select the &amp;quot;Yes, save.&amp;quot; option.&lt;br /&gt;
# You now close Media Toolbox by clicking on the close icon (X) on the left of the Media Toolbox window.&lt;br /&gt;
# This will give you a requester advising that you need to reboot the machine for the changes to take effect. At this point you need to remove the USB memory stick for the machine. If you do not then the Machine will attempt boot from it before it is formatted and the required Kickstart and AmigaOS 4.1 files are copied to it.&lt;br /&gt;
# Select &amp;quot;Yes, reboot NOW!&amp;quot;.&lt;br /&gt;
# Once you have rebooted connect your USB Memory Stick to a USB port.&lt;br /&gt;
# A disk icon &amp;quot;USB0:Uninitialized&amp;quot; (or whatever partition name you used) appears on Workbench.&lt;br /&gt;
# You now need to format the device.&lt;br /&gt;
# To format Select this Icon and go to the Workbench &amp;quot;Icons&amp;quot; menu .&lt;br /&gt;
# Select &amp;quot;Format Disk&amp;quot;&lt;br /&gt;
# You can give the USB Memory Stick a unique name and  select whether you want a Trashcan or not.&lt;br /&gt;
# You can use either a full Format or a  Quick Format. Full Format may take a few minutes.&lt;br /&gt;
# Once formatted the USB Memory Stick is ready for you to copy the required files from you hard drive or AmigaOS Install CD to it in order to boot AmigaOS 4.1 from it.&lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=UserDoc:How_AmigaOS_Works&amp;diff=7913</id>
		<title>UserDoc:How AmigaOS Works</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=UserDoc:How_AmigaOS_Works&amp;diff=7913"/>
		<updated>2015-05-29T06:22:39Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: /* Directories/Drawers */ usage&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As already mentioned, AmigaOS was a pioneer in the early days of personal computing in delivering sophistication that contemporary systems could only have dreamt of and pretended to offer. Today, AmigaOS continues to offer a straightforward elegance that seems to be overlooked in the development of other platforms. Thanks to the concepts behind AmigaOS, the system is easy to understand and to use by everyone.&lt;br /&gt;
&lt;br /&gt;
In this page we will explore all these concepts of AmigaOS. Also you will learn here the naming of all parts of the system.&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
AmigaOS is made of different components which are either mandatory (i.e.,  AmigaOS will not work without them) or components the user can choose to use or not. All these components can have one or mutiple interfaces a user or a developer can use to operate with the components and through them to control the operating system.&lt;br /&gt;
&lt;br /&gt;
= The most important components =&lt;br /&gt;
&lt;br /&gt;
== Exec, the AmigaOS kernel ==&lt;br /&gt;
&lt;br /&gt;
Exec is the kernel of AmigaOS. It is the component that pilots all other components. It is responsible for running programs, dealing with computer memory and managing low-level resources that programs may need. In other words, it organises everything to make the operating system run.&lt;br /&gt;
&lt;br /&gt;
It is made of different parts that cannot be moved outside the kernel: the scheduler, the memory pager and the 68k interpretive emulator.&lt;br /&gt;
&lt;br /&gt;
== AmigaDOS: the underlying system ==&lt;br /&gt;
&lt;br /&gt;
The word &amp;quot;DOS&amp;quot; was originally an acronym for &amp;quot;Disk Operating System&amp;quot;. Some say it should be &amp;quot;Disk Based Operating System&amp;quot; as it does a lot more than operate a disk and that it was really an operating system based (stored) on disks.  Some say it should be &amp;quot;Device Operating System&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The whole AmigaDOS system includes things such as:&lt;br /&gt;
&lt;br /&gt;
* A set of commands that can be used in the Shell window and elsewhere.&lt;br /&gt;
* A system for saving data to disk and retrieving it from disk.&lt;br /&gt;
* A system for filing data on disks.&lt;br /&gt;
* An interface for peripherals such as keyboards, monitors, printers, etc.&lt;br /&gt;
* A method of running programs&lt;br /&gt;
* A multitasking system for running more than one program at a time.&lt;br /&gt;
* etc. etc. etc.&lt;br /&gt;
&lt;br /&gt;
Read the [[AmigaDOS manual]] to understand and learn everything about AmigaDOS.&lt;br /&gt;
&lt;br /&gt;
== The Graphics library ==&lt;br /&gt;
&lt;br /&gt;
The Graphics library handles every low level graphic operation like designing pixels on the monitor, creating graphic elements (bobs, sprites) and also writing text output.&lt;br /&gt;
&lt;br /&gt;
== Intuition ==&lt;br /&gt;
&lt;br /&gt;
The Intuition library is responsible for every graphical object: windows, screens, gadgets, mouse pointers... It lies between any graphic program and the graphics library.&lt;br /&gt;
&lt;br /&gt;
== The Workbench ==&lt;br /&gt;
&lt;br /&gt;
The Workbench is the graphical place where you will manage your computer and all your files. The name was chosen because the user will use tools to create and work with the computer.&lt;br /&gt;
&lt;br /&gt;
[[File:Wb.png|320px]]&lt;br /&gt;
&lt;br /&gt;
== The Shell ==&lt;br /&gt;
&lt;br /&gt;
While some people prefer to control the operating system using their mouse, others prefer using the keyboard. The shell is a text based window when you can type commands to execute actions in the operating system. In the shell the commands will display the results of their execution.&lt;br /&gt;
&lt;br /&gt;
== ARexx - inter-program communication by scripting ==&lt;br /&gt;
&lt;br /&gt;
The ARexx scripting language can be used to operate the Workbench and other Amiga applications from a script containing ARexx commands. This is extremely useful in performing repetitive tasks or doing what the controlled application was not even designed to do.&lt;br /&gt;
After a learning curve, everybody can use ARexx as it is built into the system.  The scripts can be executed immediately like any other tool.&lt;br /&gt;
&lt;br /&gt;
= How is my data stored? =&lt;br /&gt;
== Files ==&lt;br /&gt;
=== Executable files ===&lt;br /&gt;
Programs you can start are stored in executable files. They contain binary code directly understandable by the computer. They are files with an executable bit, a flag that shows AmigaOS that such file will do something when started.&lt;br /&gt;
An example is a music player. When you start this executable, the player opens and you can start playing music files.&lt;br /&gt;
&lt;br /&gt;
AmigaOS can run two different kinds of executable files: the AmigaOS native programs made for the PowerPC processor and programs created for the Motorola 68k processors. The latter are executed inside an emulation that transcripts them into PowerPC code.&lt;br /&gt;
&lt;br /&gt;
==== Scripts ====&lt;br /&gt;
&lt;br /&gt;
Scripts are text files containing a list of commands.  They are not strictly executables like &#039;&#039;binary code&#039;&#039; files but they can be executed by AmigaOS as if they were.&lt;br /&gt;
This is the case with AmigaDOS and ARexx scripts. These files need to have the executable bit, and the script bit.&lt;br /&gt;
&lt;br /&gt;
=== Data files ===&lt;br /&gt;
Files that are not executable are data files. These contain data that will be manipulated by programs. Some examples are a music file, a video file or a text document.&lt;br /&gt;
&lt;br /&gt;
== Directories/Drawers ==&lt;br /&gt;
In order to organise things, files are grouped together. We create &amp;quot;directories&amp;quot; which are like drawers of a cabinet to store different files of the same kind, for example.  &lt;br /&gt;
Often the name &#039;&#039;directory&#039;&#039; is used when talking about a directory which is stored on a disk. The graphical interface of AmigaOS is called &amp;quot;Workbench,&amp;quot; and directories are often called &#039;&#039;drawers&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Note: directories are often called &#039;&#039;folders&#039;&#039; on other systems.&lt;br /&gt;
&lt;br /&gt;
== Disks, partitions and volumes ==&lt;br /&gt;
=== Disks ===&lt;br /&gt;
Disks are storage medium you can purchase on a computer store. We use them to store our files. They can be internal hard disks, external ones or a USB disk drive.&lt;br /&gt;
&lt;br /&gt;
=== Partitions ===&lt;br /&gt;
A disk is often very big and many users prefer to make it more organised. This is done virtually splitting the disk into several smaller parts. This operation is known as creating partitions on a disk.&lt;br /&gt;
&lt;br /&gt;
[[File:Partitions.png|Small part of Media Toolbox showing different partitions on the harddisk]]&lt;br /&gt;
&lt;br /&gt;
On this screenshot you can see one harddisk with many partitions. Each color corresponds to a different filesystem which defines how data is stored. Also you can see a greyed area which is a blank area on the disk i.e. no partition is defined at this position.&lt;br /&gt;
&lt;br /&gt;
=== Volumes ===&lt;br /&gt;
A partition is a physical area on a disk. To access it with AmigaOS we could read the physical data off the partition but it&#039;s not an easy way. To make it easier AmigaOS uses the concept of volumes. These are virtual representations of a partition. The volumes have a name so AmigaOS and therefore the user can access all files/directories stored on it in a very practical way: just by using its name.&lt;br /&gt;
&lt;br /&gt;
= How to identify files/directories =&lt;br /&gt;
&lt;br /&gt;
== On the Workbench ==&lt;br /&gt;
&lt;br /&gt;
The Workbench being graphical, a lot of things are understandable just by looking at them. That&#039;s why icons are often enough to understand what kind of object it represents: a file, a directory, a disk...&lt;br /&gt;
&lt;br /&gt;
In case you have a doubt, just look at the information on an icon. The Workbench will tell you the type of the object. It is displayed next to its name.&lt;br /&gt;
&lt;br /&gt;
== In a shell ==&lt;br /&gt;
&lt;br /&gt;
In a shell the &#039;&#039;&#039;list&#039;&#039;&#039; command can be used to see if an object is a file or a directory.&lt;br /&gt;
&lt;br /&gt;
[[File:Files-dirs-in-shell.png|The &#039;&#039;&#039;list&#039;&#039;&#039; command shows a file of 925678 bytes and two directories]]&lt;br /&gt;
&lt;br /&gt;
A file will be displayed with its size, whereas a directory will be displayed with the text &#039;&#039;&#039;Dir&#039;&#039;&#039; next to it.&lt;br /&gt;
&lt;br /&gt;
Also, as you can see on the screenshot, the list command displays other characteristics on these 3 items: the protection bits and the date they were updated the last time. The command also sums up what it just listed.&lt;br /&gt;
&lt;br /&gt;
= All AmigaOS components =&lt;br /&gt;
&lt;br /&gt;
AmigaOS is made of components that are needed as soon as the system starts or later when the user or the system needs them.&lt;br /&gt;
&lt;br /&gt;
== Kickstart modules ==&lt;br /&gt;
&lt;br /&gt;
These components are the heart of AmigaOS. Their duties is to do graphics, to handle discs or to handle all reads/writes to files. Also one of them is the AmigaOS kernel which is a kind of director handling the work of all other components.&lt;br /&gt;
These Kickstart modules are loaded at the beginning of the operating system boot process (read [[UserDoc:How_AmigaOS_Works#AmigaOS_boot_procedure|here]]). You can find all them in the &#039;&#039;&#039;Kickstart&#039;&#039;&#039; directory in the system volume. Here is a list:&lt;br /&gt;
&lt;br /&gt;
=== Mandatory modules ===&lt;br /&gt;
&lt;br /&gt;
The following modules are required in any AmigaOS system. Without one of these, the system will not start.&lt;br /&gt;
&lt;br /&gt;
* kernel - The kernel works like a conductor in an orchestra. Its job is to make everything works together. It creates processes, handle memory usage, defines the way other components will access peripherals...etc. Note that the AmigaOS kernel is not based on any other kernel. It is a self made kernel that works since 1983.&lt;br /&gt;
* loader - this component handles the loading of all other kickstart modules&lt;br /&gt;
* battclock.resource.kmod - this module handles reading/writing the battery backed up clock which is used on all computers to keep the date and time&lt;br /&gt;
* bootimage - this is the boot picture. It is displayed during the start sequence of AmigaOS&lt;br /&gt;
* bootmenu.kmod - this component handles the Early Startup Menu the use can use to define some settings before starting AmigaOS&lt;br /&gt;
* con-handler.kmod - it directs the read and write requests to the console window, to a serial AUX: device or any other supported interface&lt;br /&gt;
* console.device.kmod - it opens a window and reads/writes text to and from that window&lt;br /&gt;
* diskboot.kmod - handles the booting of AmigaOS from a supported disk&lt;br /&gt;
* diskboot.config - this is a text file experienced users can modify to change the boot behaviour of AmigaOS&lt;br /&gt;
* dos.library.kmod - this module is a collection of functions that any program can use to perform actions on disks, files and directories&lt;br /&gt;
* elf.library.kmod - handles the loading of executable programs&lt;br /&gt;
* env-handler.kmod - handles the read/writes of environment variables&lt;br /&gt;
* FileSystem.resource.kmod - handles the use of the different filesystems&lt;br /&gt;
* gadtools.library.kmod - collection of functions used to create all graphic objects like gadgets, sliders, menus...&lt;br /&gt;
* gameport.device.kmod - handles the read/writes of game pads and joysticks&lt;br /&gt;
* graphics.library.kmod - collection of functions used to draw graphic elements on the monitor&lt;br /&gt;
* hunk.library.kmod - set of functions to read a data stream into memory&lt;br /&gt;
* input.device.kmod - handles of input events like keyboard events or mouse clicks&lt;br /&gt;
* intuition.library.kmod - collection of functions to create and handle all graphic elements (screens, windows, the mouse pointer...)&lt;br /&gt;
* layers.library.kmod - set of functions to be used to handle different layers in graphic operations&lt;br /&gt;
* keyboard.device.kmod - driver for the keyboard&lt;br /&gt;
* keymap.library.kmod - functions to handle different keymaps&lt;br /&gt;
* newlib.library.kmod - collection of functions to perform memory operations (allocating memory, copying memory areas... )&lt;br /&gt;
* nonvolatile.library.kmod - provides a simple means for an application developer to manage nonvolatile storage&lt;br /&gt;
* nvram.resource.kmod - handles the read/writes to the EEPROM chip present on many AmigaOS computers&lt;br /&gt;
* PCIGraphics.card - driver that supports the use of different graphic cards&lt;br /&gt;
* ram-handler.kmod - functions that handles the &#039;&#039;&#039;Ram disk:&#039;&#039;&#039; special disk&lt;br /&gt;
* ramdrive.device.kmod - device that allows the usage of the ramdrive device &#039;&#039;&#039;RAD:&#039;&#039;&#039; disk&lt;br /&gt;
* ramlib.kmod - loads disk based libraries and devices for exec.library&lt;br /&gt;
* rtg.library - library of functions to perform lowlevel graphic operations on graphic cards&lt;br /&gt;
* shell.kmod - the AmigaOS command line interface&lt;br /&gt;
* strap.kmod - module that handles booting on different disk devices&lt;br /&gt;
* timer.device.kmod - driver to give access to timing functions&lt;br /&gt;
&lt;br /&gt;
=== Filesystem support ===&lt;br /&gt;
&lt;br /&gt;
These kickstart modules can be loaded or left aside. If you want to use a particular filesystem on your disk partitions, you need to load the corresponding filesystem module.&lt;br /&gt;
&lt;br /&gt;
* CDFileSystem - handles the CD-ROM disks with data stored in different formats: ISO9660, HFS...&lt;br /&gt;
* SmartFilesystem - allows the usage of partitions in SFS0 and SFS2 layouts&lt;br /&gt;
* JXFileSystem - allows the usage of partitions in JXFS layout&lt;br /&gt;
* FastFileSystem - allows the usage of partitions in FFS and FFS2 layouts&lt;br /&gt;
* diskcache.library.kmod - component required by the SmartFileSystem and JXFileSystem modules&lt;br /&gt;
&lt;br /&gt;
=== Hardware drivers ===&lt;br /&gt;
&lt;br /&gt;
==== Graphic cards drivers ====&lt;br /&gt;
&lt;br /&gt;
* 3dfxVoodoo.chip&lt;br /&gt;
* 3DLabsPermedia2.chip&lt;br /&gt;
* ATIRadeon.chip&lt;br /&gt;
* RadeonHD.chip&lt;br /&gt;
* siliconmotion502.chip&lt;br /&gt;
&lt;br /&gt;
==== Disk drivers ====&lt;br /&gt;
&lt;br /&gt;
Each of these drivers allow the use of disks connected to a disk controller. These files are named with the name of the controller they support. As an example, the &#039;&#039;&#039;sii3114ide.device.kmod&#039;&#039;&#039; allows to use disks connected on a &#039;&#039;&#039;Silicon Image SiI3114&#039;&#039;&#039; controller chip.&lt;br /&gt;
&lt;br /&gt;
* it8212ide.device.kmod&lt;br /&gt;
* lsi53c8xx.device.kmod&lt;br /&gt;
* sam460sata.device.kmod&lt;br /&gt;
* sii3112ide.device.kmod&lt;br /&gt;
* sii3512ide.device.kmod&lt;br /&gt;
* sii3114ide.device.kmod&lt;br /&gt;
* sii0680ide.device.kmod&lt;br /&gt;
* sii3132ide.device.kmod&lt;br /&gt;
&lt;br /&gt;
==== USB drivers ====&lt;br /&gt;
&lt;br /&gt;
* hub.usbfd&lt;br /&gt;
* usbsys.device&lt;br /&gt;
* usbresource.library&lt;br /&gt;
* ehci.usbhcd&lt;br /&gt;
* ohci.usbhcd&lt;br /&gt;
* uhci.usbhcd&lt;br /&gt;
* massstorage.usbfd&lt;br /&gt;
&lt;br /&gt;
==== Other drivers ====&lt;br /&gt;
&lt;br /&gt;
* bootkeyboard.usbfd - allows a USB keyboard to be used even before the USB stack is loaded&lt;br /&gt;
* bootmouse.usbfd - allows a USB mouse to be used even before the USB stack is loaded&lt;br /&gt;
* fpga.resource.kmod - allows to use the FPGA components which are present on some Amiga computers&lt;br /&gt;
* i2c.resource.kmod - allows to use the i2c interface present on some Amiga computers&lt;br /&gt;
* xena.resource.kmod - provides access to the Xena chip on the AmigaOne X1000&lt;br /&gt;
&lt;br /&gt;
=== Misc modules ===&lt;br /&gt;
&lt;br /&gt;
* petunia.library.kmod - this module contains the Just-In-Time emulator that allows AmigaOS to run programs made for the Motorola 68k processor&lt;br /&gt;
&lt;br /&gt;
== System components ==&lt;br /&gt;
&lt;br /&gt;
[[File:Workbench_directory_listing.png|frame|right|List of directories and files present at the root of any AmigaOS system]]&lt;br /&gt;
&lt;br /&gt;
Beside the kickstart modules, AmigaOS uses many different components that can be loaded only when used. These files are stored in different directories in the system volume.&lt;br /&gt;
Here is described a default AmigaOS installation.&lt;br /&gt;
&lt;br /&gt;
* C&lt;br /&gt;
This directory contains AmigaDOS &#039;&#039;&#039;C&#039;&#039;&#039;ommands&lt;br /&gt;
* Classes&lt;br /&gt;
contains different object elements easy to be used in any program: gadgets, requesters, graphic table, windows...&lt;br /&gt;
* Devs&lt;br /&gt;
contains definition for &#039;&#039;&#039;Dev&#039;&#039;&#039;ices&lt;br /&gt;
* Emulation&lt;br /&gt;
contains files used for the 68k emulation (though E-UAE)&lt;br /&gt;
* Fonts&lt;br /&gt;
contains various systems fonts&lt;br /&gt;
* Internet&lt;br /&gt;
contains a dialer to connect to Internet&lt;br /&gt;
* Kickstart&lt;br /&gt;
contains the kickstart modules&lt;br /&gt;
* L&lt;br /&gt;
contains hand&#039;&#039;&#039;l&#039;&#039;&#039;ers and filesystems&lt;br /&gt;
* Libs&lt;br /&gt;
contains dynamic &#039;&#039;&#039;Libr&#039;&#039;&#039;airies of functions&lt;br /&gt;
* Locale&lt;br /&gt;
contains all files used to localise the system (catalogs, keymaps...)&lt;br /&gt;
* MUI&lt;br /&gt;
contains the needed files for programs that use the MUI third party graphic interface&lt;br /&gt;
* [[Prefs]]&lt;br /&gt;
contains the preference programs used to customise AmigaOS&lt;br /&gt;
* S&lt;br /&gt;
contains the &#039;&#039;&#039;S&#039;&#039;&#039;cripts&lt;br /&gt;
* SObjs&lt;br /&gt;
contains .so shared object library files&lt;br /&gt;
* Storage&lt;br /&gt;
contains other optional files&lt;br /&gt;
* System&lt;br /&gt;
contains some programs used by the system itself (i.e. you don&#039;t need to run them yourself) or low-level programs like disk tools&lt;br /&gt;
* [[Utilities]]&lt;br /&gt;
contains several programs you can use to achieve some tasks on AmigaOS&lt;br /&gt;
&lt;br /&gt;
= Motorola 680x0 Emulators =&lt;br /&gt;
&lt;br /&gt;
For a long time Amigas have had the famous Motorola 680x0 processors as the central unit for execution. Unfortunately the time of the 680x0 series is passing in favor of other architectures. The new era of processors reached the Amiga some time ago, when expansion boards became available for extending the Classic systems with the raw power of a PowerPC processor.&lt;br /&gt;
&lt;br /&gt;
In the old operating system (AmigaOS 3.x) it was not possible to gain the full advantage of the new processors. The system itself and most of the applications required the original Motorola 680x0 processor. There was no 680x0 emulation available for the PowerPCs, so the 680x0 could not be &amp;quot;switched off&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Thus the new processors remained as a powerful, but mostly unused adjunct to the main 680x0 processor. &amp;quot;Native&amp;quot; PowerPC programs were rare, and every time a PowerPC program called the system, a so called &amp;quot;context switch&amp;quot; occurred between the 680x0 and PowerPC code, often causing a large performance penalty.&lt;br /&gt;
&lt;br /&gt;
The new Amiga platform is based on the PowerPC processor family, therefore the new version of the AmigaOS has to smooth the transition from the 680x0 series, which is achieved by emulating the old processor architecture. The operating system itself is written almost 100 percent for the PowerPC processors, but the 680x0 legacy applications require an emulated 680x0 processor. &lt;br /&gt;
&lt;br /&gt;
== Two 680x0 Emulators ==&lt;br /&gt;
&lt;br /&gt;
In version 4.0 of AmigaOS, two different emulators were implemented; one is the successor of BlackBox emulation, it is an interpretive emulator, thus the emulation speed is mediocre. On the other hand it has a very low &amp;quot;reaction time&amp;quot;, and is ideal for time critical parts, such as interrupts.&lt;br /&gt;
&lt;br /&gt;
The other is Petunia, the &amp;quot;JIT emulator&amp;quot;. A fast, but less compatible way of emulation of the legacy Motorola processors. It is intended mainly for emulating applications, and therefore, when execution of the application leaves the bounds of the application&#039;s code segment, emulation falls back to the interpretive method, where it does its job and returns to the JIT emulation again.&lt;br /&gt;
&lt;br /&gt;
Dynamic recompilation (also called just-in-time compilation or simply JIT compilation) is a technique of translating foreign processor machine code to native machine code, &amp;quot;on the fly&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This technique is common nowadays, commonly applied in JAVA virtual machines, and it is also used with success in several emulators. In dynamic recompilation there is the possibility of runtime optimization of the emulated code by collecting statistics of the execution process. Therefore (theoretically) the final executed code can be even faster than the original code on its original processor.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Emulated opcodes:&lt;br /&gt;
* all user and supervisor level opcodes of the Motorola 68040&lt;br /&gt;
* all FPU opcodes of the Motorola 68881/68882 &lt;br /&gt;
&lt;br /&gt;
AmigaOS claims only 68020/68881 compatibility to applications because this is the safest compatibility level, but both emulators are compatible with the machine code up to the level of 68040/060 processors.&lt;br /&gt;
&lt;br /&gt;
At compile time, a low level flag and branch control analysis allows on-the-fly optimizations of compiled code.&lt;br /&gt;
&lt;br /&gt;
== Removing the JIT Emulator ==&lt;br /&gt;
&lt;br /&gt;
Using the dynamic translation requires a lot more memory than the interpretive emulation. The translated code needs to be stored somewhere, not to mention the data collection tables.&lt;br /&gt;
&lt;br /&gt;
If speed is not as important as the memory consumption of the system, then the JIT emulator can be removed, leaving the job to the interpretive emulator.&lt;br /&gt;
&lt;br /&gt;
Thanks to the modular design of AmigaOS kickstart, all you need to do is edit the &amp;quot;Sys:Kickstart/Kicklayout&amp;quot; file, simply put a semicolon (;) at the beginning of the module line of Petunia.library.kmod. After rebooting the system from cold, the JIT emulator will not be reloaded. Make sure that you alter the appropriate configuration in the Kicklayout file, there may be several alternative configurations, with different names like &amp;quot;DefaultJIT&amp;quot;, or &amp;quot;DefaultNoJIT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Configuring the Emulators ==&lt;br /&gt;
&lt;br /&gt;
Petunia cooperates with a so called &amp;quot;black list&amp;quot;. By default Petunia emulates every 680x0 program or library that is loaded by DOS.library/LoadSeg function, but if an executable or library shows incompatibilities with Petunia, then it can be explicitly inhibited from the dynamic recompilation by specifying it in a list file.&lt;br /&gt;
&lt;br /&gt;
If an executable needs to be added to the list, then it can be done by extending the file &amp;quot;DEVS:applications.dos&amp;quot; with the &#039;&#039;&#039;Compatibility&#039;&#039;&#039; preferences program from the Prefs drawer of the system. Adding a program name to the list and checking it will prevent Petunia from emulating that program, and it will be interpreted instead by the built-in interpreter.&lt;br /&gt;
&lt;br /&gt;
Removing a program from the list or unchecking (thus allowing Petunia to emulate it again) can be done with the same preferences program.&lt;br /&gt;
&lt;br /&gt;
Please note: some programs consist of multiple executables (shared libraries, plugins). If you want to fully disable the translation of such programs, then every part must be added to the list.&lt;br /&gt;
&lt;br /&gt;
For example to disable UnArc fully, you would have to add all files from libs:xad and also xadmaster.library to the list. &lt;br /&gt;
&lt;br /&gt;
= AmigaOS boot procedure =&lt;br /&gt;
&lt;br /&gt;
Basically a computer with AmigaOS does the following when the power button is pushed:&lt;br /&gt;
&lt;br /&gt;
* [[File:Uboot.jpg|200px]]&lt;br /&gt;
the BIOS ([[UserDoc:BIOS|Uboot]] or [[UserDoc:BIOS|CFE]]) of the computer initialises the hardware: graphic card, USB ports... At this point, the monitor wakes up and the first information are displayed. This allows to see if hardware is correctly recognised. As an example you can see if a hard drive is correctly connected into the machine and your BIOS is correctly setup to make this drive useable.&lt;br /&gt;
* depending on how you setup the BIOS it will look on the harddisk to find the Second Level Booter (SLB). This program is stored on the first sectors of the disk. Whereas the BIOS does not know about AmigaOS disk structure, the SLB will be able to &#039;&#039;understand&#039;&#039; the AmigaOS partitions and files. In other words, it is the link between the BIOS and the rest of the boot procedure. Its goal is also to give you the ability to start several configurations present on the same drive.&lt;br /&gt;
* [[File:SLB.png|200px]]&lt;br /&gt;
the SLB will analyses all Amiga partitions on the disk it is installed on. It will read each [[UserDoc:kickstart_configuration|system configuration]] it finds on the partitions. It will show all available configurations for the user to select one to load.&lt;br /&gt;
The user can define many different kickstart configurations to choose from. Also both AmigaOS and Linux can be selected for boot.&lt;br /&gt;
* [[File:Kmods loading.png|200px]]&lt;br /&gt;
the SLB loads the kickstart files of the selected configuration and executes the &#039;&#039;&#039;Loader&#039;&#039;&#039; module&lt;br /&gt;
* &#039;&#039;&#039;Loader&#039;&#039;&#039; executes the kickstart modules (Exec, devices, libraries...)&lt;br /&gt;
* AmigaOS becomes alive displaying the AmigaOS boot picture on the monitor&lt;br /&gt;
* the AmigaDOS library executes the [[UserDoc:System_Scripts#startup-sequence|startup-sequence]] script found on the system volume&lt;br /&gt;
* the Startup-sequence will be executed and all commands it contains are executed. It means that starting from here the boot procedure is easy to follow and understand.&lt;br /&gt;
* the Workbench is started&lt;br /&gt;
&lt;br /&gt;
At this point the user can use his/her computer.&lt;br /&gt;
&lt;br /&gt;
= How to make a Bootable USB Memory Stick for AmigaOS 4.1 =&lt;br /&gt;
&lt;br /&gt;
By Julian Margetson (&amp;quot;Spectre660&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Prerequisites:&lt;br /&gt;
* USB memory stick of 2 GB or less in size.&lt;br /&gt;
* It is best to only have one USB mass storage device connected while you are creating your bootable USB memory stick.&lt;br /&gt;
* Plug the USB memory stick into a USB port on your machine.&lt;br /&gt;
* Note that the device will be formatted so make sure that you use an empty memory stick or one that does not contain any data that you need or backup the contents before you begin.&lt;br /&gt;
&lt;br /&gt;
Procedure:&lt;br /&gt;
# You use Media Toolbox in the System: drawer to prepare the USB stick. On starting Media Toolbox select &#039;&#039;usbdisk.device&#039;&#039; as the device to use.&lt;br /&gt;
# Make certain that you have selected usbdisk.device and not any other device.&lt;br /&gt;
# Click on &amp;quot;Start&amp;quot;&lt;br /&gt;
# You will see the usb mass storage unit connected in a list.&lt;br /&gt;
# Make sure that the Unit type displayed for the USB memory stick is &amp;quot;Removable hard disk&amp;quot;&lt;br /&gt;
# Select that Unit by clicking on it.&lt;br /&gt;
# The first thing that you need to do is to install the RDB onto the USB Memory Stick.&lt;br /&gt;
# Click on the  &amp;quot;Install&amp;quot; button.&lt;br /&gt;
# A window Labeled &amp;quot;RDB/disk geometry editing&amp;quot; comes up.&lt;br /&gt;
## Towards the bottom of the window is the &amp;quot;AmigaOne boot code (SLB)&amp;quot; section.&lt;br /&gt;
## Select the &amp;quot;Install&amp;quot; button .&lt;br /&gt;
## A file requester  &amp;quot;Select AmigaOne Boot Code&amp;quot; now comes  up with the Drawer choice defaulting to &amp;quot;l:&amp;quot;&lt;br /&gt;
## Select file &amp;quot;slb_v2&amp;quot;. &lt;br /&gt;
## Select Ok.&lt;br /&gt;
## You are now returned to the &amp;quot;RDB/disk geometry editing window&amp;quot;.&lt;br /&gt;
## Select &amp;quot;Ok-accept changes&amp;quot;.&lt;br /&gt;
# You are now returned to the display showing the attached USB unit.&lt;br /&gt;
# Select &amp;quot;Edit partitions and Filesystems&amp;quot;. You will now see the Window &#039;Editing partitions for disk&amp;quot;&lt;br /&gt;
# Select &amp;quot;Add partition&amp;quot;&lt;br /&gt;
# This defaults to using the whole device as a single partition.&lt;br /&gt;
# It is possible to use create more partitions but for this tutorial we will only use one.&lt;br /&gt;
# You now need to give the partition a unique name (e.g. USB0 or something that is different from any of the existing partitions on your hard drive). This is done by changing the default DH0 in the &amp;quot;Name&amp;quot; box.&lt;br /&gt;
# Now make sure that the Boxes &amp;quot;Automount&amp;quot; and &amp;quot;Bootable&amp;quot; are  selected and show the &amp;quot;Tick mark&amp;quot;.&lt;br /&gt;
# You need to set &amp;quot;Boot priority&amp;quot; to higher than the boot priority of your hard drive boot partition(s). This is done by increasing Boot priority by clicking on the &amp;quot;+&amp;quot; to the right of the &amp;quot;boot priority&amp;quot; box. Normally you can set the boot priority to 2 .&lt;br /&gt;
# Next it is time to select the file system to use.&lt;br /&gt;
# Select &amp;quot;Select filesystem/edit details&amp;quot;.&lt;br /&gt;
# The Window &amp;quot;Editing details for partition &#039;USB0&#039;&amp;quot;  ,or whatever partition name you used, comes up.&lt;br /&gt;
## Select the file system that you are going to use by selecting the pull down menu under &amp;quot;Filesystem chooser&amp;quot;.&lt;br /&gt;
## Only filesystems SFS/00 or SFS/02 will work for a bootable device.&lt;br /&gt;
## The option that gives the most flexibility at the moment is SFS/00 as a USB stick in this format can be read and written to using another compatible system in the event that you need to make modifications after it is created without a booting AmigaOS 4.1 machine.&lt;br /&gt;
## Next select Blocksize from the &amp;quot;Blocksize&amp;quot; pull down menu. 512 is the correct size to use.&lt;br /&gt;
## Now Select &amp;quot;Ok-accept changes&amp;quot;.&lt;br /&gt;
## Your are now returned to the &amp;quot;Edit partitions for disk&amp;quot; window.&lt;br /&gt;
## Again select &amp;quot;Ok-accept changes&amp;quot;&lt;br /&gt;
# You are now returned to the window showing the USB mass storage unit list.&lt;br /&gt;
# Select &amp;quot;Save to disk&amp;quot;&lt;br /&gt;
# A requester pops up with the options &amp;quot;Yes, Save.&amp;quot; or &amp;quot;No!&amp;quot;&lt;br /&gt;
# Select the &amp;quot;Yes, save.&amp;quot; option.&lt;br /&gt;
# You now close Media Toolbox by clicking on the close icon (X) on the left of the Media Toolbox window.&lt;br /&gt;
# This will give you a requester advising that you need to reboot the machine for the changes to take effect. At this point you need to remove the USB memory stick for the machine. If you do not then the Machine will attempt boot from it before it is formatted and the required Kickstart and AmigaOS 4.1 files are copied to it.&lt;br /&gt;
# Select &amp;quot;Yes, reboot NOW!&amp;quot;.&lt;br /&gt;
# Once you have rebooted connect your USB Memory Stick to a USB port.&lt;br /&gt;
# A disk icon &amp;quot;USB0:Uninitialized&amp;quot; (or whatever partition name you used) appears on Workbench.&lt;br /&gt;
# You now need to format the device.&lt;br /&gt;
# To format Select this Icon and go to the Workbench &amp;quot;Icons&amp;quot; menu .&lt;br /&gt;
# Select &amp;quot;Format Disk&amp;quot;&lt;br /&gt;
# You can give the USB Memory Stick a unique name and  select whether you want a Trashcan or not.&lt;br /&gt;
# You can use either a full Format or a  Quick Format. Full Format may take a few minutes.&lt;br /&gt;
# Once formatted the USB Memory Stick is ready for you to copy the required files from you hard drive or AmigaOS Install CD to it in order to boot AmigaOS 4.1 from it.&lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=UserDoc:How_AmigaOS_Works&amp;diff=7912</id>
		<title>UserDoc:How AmigaOS Works</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=UserDoc:How_AmigaOS_Works&amp;diff=7912"/>
		<updated>2015-05-29T06:17:57Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: /* Data files */ usage&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As already mentioned, AmigaOS was a pioneer in the early days of personal computing in delivering sophistication that contemporary systems could only have dreamt of and pretended to offer. Today, AmigaOS continues to offer a straightforward elegance that seems to be overlooked in the development of other platforms. Thanks to the concepts behind AmigaOS, the system is easy to understand and to use by everyone.&lt;br /&gt;
&lt;br /&gt;
In this page we will explore all these concepts of AmigaOS. Also you will learn here the naming of all parts of the system.&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
AmigaOS is made of different components which are either mandatory (i.e.,  AmigaOS will not work without them) or components the user can choose to use or not. All these components can have one or mutiple interfaces a user or a developer can use to operate with the components and through them to control the operating system.&lt;br /&gt;
&lt;br /&gt;
= The most important components =&lt;br /&gt;
&lt;br /&gt;
== Exec, the AmigaOS kernel ==&lt;br /&gt;
&lt;br /&gt;
Exec is the kernel of AmigaOS. It is the component that pilots all other components. It is responsible for running programs, dealing with computer memory and managing low-level resources that programs may need. In other words, it organises everything to make the operating system run.&lt;br /&gt;
&lt;br /&gt;
It is made of different parts that cannot be moved outside the kernel: the scheduler, the memory pager and the 68k interpretive emulator.&lt;br /&gt;
&lt;br /&gt;
== AmigaDOS: the underlying system ==&lt;br /&gt;
&lt;br /&gt;
The word &amp;quot;DOS&amp;quot; was originally an acronym for &amp;quot;Disk Operating System&amp;quot;. Some say it should be &amp;quot;Disk Based Operating System&amp;quot; as it does a lot more than operate a disk and that it was really an operating system based (stored) on disks.  Some say it should be &amp;quot;Device Operating System&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The whole AmigaDOS system includes things such as:&lt;br /&gt;
&lt;br /&gt;
* A set of commands that can be used in the Shell window and elsewhere.&lt;br /&gt;
* A system for saving data to disk and retrieving it from disk.&lt;br /&gt;
* A system for filing data on disks.&lt;br /&gt;
* An interface for peripherals such as keyboards, monitors, printers, etc.&lt;br /&gt;
* A method of running programs&lt;br /&gt;
* A multitasking system for running more than one program at a time.&lt;br /&gt;
* etc. etc. etc.&lt;br /&gt;
&lt;br /&gt;
Read the [[AmigaDOS manual]] to understand and learn everything about AmigaDOS.&lt;br /&gt;
&lt;br /&gt;
== The Graphics library ==&lt;br /&gt;
&lt;br /&gt;
The Graphics library handles every low level graphic operation like designing pixels on the monitor, creating graphic elements (bobs, sprites) and also writing text output.&lt;br /&gt;
&lt;br /&gt;
== Intuition ==&lt;br /&gt;
&lt;br /&gt;
The Intuition library is responsible for every graphical object: windows, screens, gadgets, mouse pointers... It lies between any graphic program and the graphics library.&lt;br /&gt;
&lt;br /&gt;
== The Workbench ==&lt;br /&gt;
&lt;br /&gt;
The Workbench is the graphical place where you will manage your computer and all your files. The name was chosen because the user will use tools to create and work with the computer.&lt;br /&gt;
&lt;br /&gt;
[[File:Wb.png|320px]]&lt;br /&gt;
&lt;br /&gt;
== The Shell ==&lt;br /&gt;
&lt;br /&gt;
While some people prefer to control the operating system using their mouse, others prefer using the keyboard. The shell is a text based window when you can type commands to execute actions in the operating system. In the shell the commands will display the results of their execution.&lt;br /&gt;
&lt;br /&gt;
== ARexx - inter-program communication by scripting ==&lt;br /&gt;
&lt;br /&gt;
The ARexx scripting language can be used to operate the Workbench and other Amiga applications from a script containing ARexx commands. This is extremely useful in performing repetitive tasks or doing what the controlled application was not even designed to do.&lt;br /&gt;
After a learning curve, everybody can use ARexx as it is built into the system.  The scripts can be executed immediately like any other tool.&lt;br /&gt;
&lt;br /&gt;
= How is my data stored? =&lt;br /&gt;
== Files ==&lt;br /&gt;
=== Executable files ===&lt;br /&gt;
Programs you can start are stored in executable files. They contain binary code directly understandable by the computer. They are files with an executable bit, a flag that shows AmigaOS that such file will do something when started.&lt;br /&gt;
An example is a music player. When you start this executable, the player opens and you can start playing music files.&lt;br /&gt;
&lt;br /&gt;
AmigaOS can run two different kinds of executable files: the AmigaOS native programs made for the PowerPC processor and programs created for the Motorola 68k processors. The latter are executed inside an emulation that transcripts them into PowerPC code.&lt;br /&gt;
&lt;br /&gt;
==== Scripts ====&lt;br /&gt;
&lt;br /&gt;
Scripts are text files containing a list of commands.  They are not strictly executables like &#039;&#039;binary code&#039;&#039; files but they can be executed by AmigaOS as if they were.&lt;br /&gt;
This is the case with AmigaDOS and ARexx scripts. These files need to have the executable bit, and the script bit.&lt;br /&gt;
&lt;br /&gt;
=== Data files ===&lt;br /&gt;
Files that are not executable are data files. These contain data that will be manipulated by programs. Some examples are a music file, a video file or a text document.&lt;br /&gt;
&lt;br /&gt;
== Directories/Drawers ==&lt;br /&gt;
In order to organise things a bit, files are not all of them in the same place. We create directories which like drawers of a cabinet will store different files of the same kind.&lt;br /&gt;
Often the name &#039;&#039;directory&#039;&#039; is used when talking about the directory which is stored on a disk. The graphical interface of AmigaOS being called the Workbench, directories are often called &#039;&#039;drawers&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Note: directories are often called &#039;&#039;folders&#039;&#039; on other systems.&lt;br /&gt;
&lt;br /&gt;
== Disks, partitions and volumes ==&lt;br /&gt;
=== Disks ===&lt;br /&gt;
Disks are storage medium you can purchase on a computer store. We use them to store our files. They can be internal hard disks, external ones or a USB disk drive.&lt;br /&gt;
&lt;br /&gt;
=== Partitions ===&lt;br /&gt;
A disk is often very big and many users prefer to make it more organised. This is done virtually splitting the disk into several smaller parts. This operation is known as creating partitions on a disk.&lt;br /&gt;
&lt;br /&gt;
[[File:Partitions.png|Small part of Media Toolbox showing different partitions on the harddisk]]&lt;br /&gt;
&lt;br /&gt;
On this screenshot you can see one harddisk with many partitions. Each color corresponds to a different filesystem which defines how data is stored. Also you can see a greyed area which is a blank area on the disk i.e. no partition is defined at this position.&lt;br /&gt;
&lt;br /&gt;
=== Volumes ===&lt;br /&gt;
A partition is a physical area on a disk. To access it with AmigaOS we could read the physical data off the partition but it&#039;s not an easy way. To make it easier AmigaOS uses the concept of volumes. These are virtual representations of a partition. The volumes have a name so AmigaOS and therefore the user can access all files/directories stored on it in a very practical way: just by using its name.&lt;br /&gt;
&lt;br /&gt;
= How to identify files/directories =&lt;br /&gt;
&lt;br /&gt;
== On the Workbench ==&lt;br /&gt;
&lt;br /&gt;
The Workbench being graphical, a lot of things are understandable just by looking at them. That&#039;s why icons are often enough to understand what kind of object it represents: a file, a directory, a disk...&lt;br /&gt;
&lt;br /&gt;
In case you have a doubt, just look at the information on an icon. The Workbench will tell you the type of the object. It is displayed next to its name.&lt;br /&gt;
&lt;br /&gt;
== In a shell ==&lt;br /&gt;
&lt;br /&gt;
In a shell the &#039;&#039;&#039;list&#039;&#039;&#039; command can be used to see if an object is a file or a directory.&lt;br /&gt;
&lt;br /&gt;
[[File:Files-dirs-in-shell.png|The &#039;&#039;&#039;list&#039;&#039;&#039; command shows a file of 925678 bytes and two directories]]&lt;br /&gt;
&lt;br /&gt;
A file will be displayed with its size, whereas a directory will be displayed with the text &#039;&#039;&#039;Dir&#039;&#039;&#039; next to it.&lt;br /&gt;
&lt;br /&gt;
Also, as you can see on the screenshot, the list command displays other characteristics on these 3 items: the protection bits and the date they were updated the last time. The command also sums up what it just listed.&lt;br /&gt;
&lt;br /&gt;
= All AmigaOS components =&lt;br /&gt;
&lt;br /&gt;
AmigaOS is made of components that are needed as soon as the system starts or later when the user or the system needs them.&lt;br /&gt;
&lt;br /&gt;
== Kickstart modules ==&lt;br /&gt;
&lt;br /&gt;
These components are the heart of AmigaOS. Their duties is to do graphics, to handle discs or to handle all reads/writes to files. Also one of them is the AmigaOS kernel which is a kind of director handling the work of all other components.&lt;br /&gt;
These Kickstart modules are loaded at the beginning of the operating system boot process (read [[UserDoc:How_AmigaOS_Works#AmigaOS_boot_procedure|here]]). You can find all them in the &#039;&#039;&#039;Kickstart&#039;&#039;&#039; directory in the system volume. Here is a list:&lt;br /&gt;
&lt;br /&gt;
=== Mandatory modules ===&lt;br /&gt;
&lt;br /&gt;
The following modules are required in any AmigaOS system. Without one of these, the system will not start.&lt;br /&gt;
&lt;br /&gt;
* kernel - The kernel works like a conductor in an orchestra. Its job is to make everything works together. It creates processes, handle memory usage, defines the way other components will access peripherals...etc. Note that the AmigaOS kernel is not based on any other kernel. It is a self made kernel that works since 1983.&lt;br /&gt;
* loader - this component handles the loading of all other kickstart modules&lt;br /&gt;
* battclock.resource.kmod - this module handles reading/writing the battery backed up clock which is used on all computers to keep the date and time&lt;br /&gt;
* bootimage - this is the boot picture. It is displayed during the start sequence of AmigaOS&lt;br /&gt;
* bootmenu.kmod - this component handles the Early Startup Menu the use can use to define some settings before starting AmigaOS&lt;br /&gt;
* con-handler.kmod - it directs the read and write requests to the console window, to a serial AUX: device or any other supported interface&lt;br /&gt;
* console.device.kmod - it opens a window and reads/writes text to and from that window&lt;br /&gt;
* diskboot.kmod - handles the booting of AmigaOS from a supported disk&lt;br /&gt;
* diskboot.config - this is a text file experienced users can modify to change the boot behaviour of AmigaOS&lt;br /&gt;
* dos.library.kmod - this module is a collection of functions that any program can use to perform actions on disks, files and directories&lt;br /&gt;
* elf.library.kmod - handles the loading of executable programs&lt;br /&gt;
* env-handler.kmod - handles the read/writes of environment variables&lt;br /&gt;
* FileSystem.resource.kmod - handles the use of the different filesystems&lt;br /&gt;
* gadtools.library.kmod - collection of functions used to create all graphic objects like gadgets, sliders, menus...&lt;br /&gt;
* gameport.device.kmod - handles the read/writes of game pads and joysticks&lt;br /&gt;
* graphics.library.kmod - collection of functions used to draw graphic elements on the monitor&lt;br /&gt;
* hunk.library.kmod - set of functions to read a data stream into memory&lt;br /&gt;
* input.device.kmod - handles of input events like keyboard events or mouse clicks&lt;br /&gt;
* intuition.library.kmod - collection of functions to create and handle all graphic elements (screens, windows, the mouse pointer...)&lt;br /&gt;
* layers.library.kmod - set of functions to be used to handle different layers in graphic operations&lt;br /&gt;
* keyboard.device.kmod - driver for the keyboard&lt;br /&gt;
* keymap.library.kmod - functions to handle different keymaps&lt;br /&gt;
* newlib.library.kmod - collection of functions to perform memory operations (allocating memory, copying memory areas... )&lt;br /&gt;
* nonvolatile.library.kmod - provides a simple means for an application developer to manage nonvolatile storage&lt;br /&gt;
* nvram.resource.kmod - handles the read/writes to the EEPROM chip present on many AmigaOS computers&lt;br /&gt;
* PCIGraphics.card - driver that supports the use of different graphic cards&lt;br /&gt;
* ram-handler.kmod - functions that handles the &#039;&#039;&#039;Ram disk:&#039;&#039;&#039; special disk&lt;br /&gt;
* ramdrive.device.kmod - device that allows the usage of the ramdrive device &#039;&#039;&#039;RAD:&#039;&#039;&#039; disk&lt;br /&gt;
* ramlib.kmod - loads disk based libraries and devices for exec.library&lt;br /&gt;
* rtg.library - library of functions to perform lowlevel graphic operations on graphic cards&lt;br /&gt;
* shell.kmod - the AmigaOS command line interface&lt;br /&gt;
* strap.kmod - module that handles booting on different disk devices&lt;br /&gt;
* timer.device.kmod - driver to give access to timing functions&lt;br /&gt;
&lt;br /&gt;
=== Filesystem support ===&lt;br /&gt;
&lt;br /&gt;
These kickstart modules can be loaded or left aside. If you want to use a particular filesystem on your disk partitions, you need to load the corresponding filesystem module.&lt;br /&gt;
&lt;br /&gt;
* CDFileSystem - handles the CD-ROM disks with data stored in different formats: ISO9660, HFS...&lt;br /&gt;
* SmartFilesystem - allows the usage of partitions in SFS0 and SFS2 layouts&lt;br /&gt;
* JXFileSystem - allows the usage of partitions in JXFS layout&lt;br /&gt;
* FastFileSystem - allows the usage of partitions in FFS and FFS2 layouts&lt;br /&gt;
* diskcache.library.kmod - component required by the SmartFileSystem and JXFileSystem modules&lt;br /&gt;
&lt;br /&gt;
=== Hardware drivers ===&lt;br /&gt;
&lt;br /&gt;
==== Graphic cards drivers ====&lt;br /&gt;
&lt;br /&gt;
* 3dfxVoodoo.chip&lt;br /&gt;
* 3DLabsPermedia2.chip&lt;br /&gt;
* ATIRadeon.chip&lt;br /&gt;
* RadeonHD.chip&lt;br /&gt;
* siliconmotion502.chip&lt;br /&gt;
&lt;br /&gt;
==== Disk drivers ====&lt;br /&gt;
&lt;br /&gt;
Each of these drivers allow the use of disks connected to a disk controller. These files are named with the name of the controller they support. As an example, the &#039;&#039;&#039;sii3114ide.device.kmod&#039;&#039;&#039; allows to use disks connected on a &#039;&#039;&#039;Silicon Image SiI3114&#039;&#039;&#039; controller chip.&lt;br /&gt;
&lt;br /&gt;
* it8212ide.device.kmod&lt;br /&gt;
* lsi53c8xx.device.kmod&lt;br /&gt;
* sam460sata.device.kmod&lt;br /&gt;
* sii3112ide.device.kmod&lt;br /&gt;
* sii3512ide.device.kmod&lt;br /&gt;
* sii3114ide.device.kmod&lt;br /&gt;
* sii0680ide.device.kmod&lt;br /&gt;
* sii3132ide.device.kmod&lt;br /&gt;
&lt;br /&gt;
==== USB drivers ====&lt;br /&gt;
&lt;br /&gt;
* hub.usbfd&lt;br /&gt;
* usbsys.device&lt;br /&gt;
* usbresource.library&lt;br /&gt;
* ehci.usbhcd&lt;br /&gt;
* ohci.usbhcd&lt;br /&gt;
* uhci.usbhcd&lt;br /&gt;
* massstorage.usbfd&lt;br /&gt;
&lt;br /&gt;
==== Other drivers ====&lt;br /&gt;
&lt;br /&gt;
* bootkeyboard.usbfd - allows a USB keyboard to be used even before the USB stack is loaded&lt;br /&gt;
* bootmouse.usbfd - allows a USB mouse to be used even before the USB stack is loaded&lt;br /&gt;
* fpga.resource.kmod - allows to use the FPGA components which are present on some Amiga computers&lt;br /&gt;
* i2c.resource.kmod - allows to use the i2c interface present on some Amiga computers&lt;br /&gt;
* xena.resource.kmod - provides access to the Xena chip on the AmigaOne X1000&lt;br /&gt;
&lt;br /&gt;
=== Misc modules ===&lt;br /&gt;
&lt;br /&gt;
* petunia.library.kmod - this module contains the Just-In-Time emulator that allows AmigaOS to run programs made for the Motorola 68k processor&lt;br /&gt;
&lt;br /&gt;
== System components ==&lt;br /&gt;
&lt;br /&gt;
[[File:Workbench_directory_listing.png|frame|right|List of directories and files present at the root of any AmigaOS system]]&lt;br /&gt;
&lt;br /&gt;
Beside the kickstart modules, AmigaOS uses many different components that can be loaded only when used. These files are stored in different directories in the system volume.&lt;br /&gt;
Here is described a default AmigaOS installation.&lt;br /&gt;
&lt;br /&gt;
* C&lt;br /&gt;
This directory contains AmigaDOS &#039;&#039;&#039;C&#039;&#039;&#039;ommands&lt;br /&gt;
* Classes&lt;br /&gt;
contains different object elements easy to be used in any program: gadgets, requesters, graphic table, windows...&lt;br /&gt;
* Devs&lt;br /&gt;
contains definition for &#039;&#039;&#039;Dev&#039;&#039;&#039;ices&lt;br /&gt;
* Emulation&lt;br /&gt;
contains files used for the 68k emulation (though E-UAE)&lt;br /&gt;
* Fonts&lt;br /&gt;
contains various systems fonts&lt;br /&gt;
* Internet&lt;br /&gt;
contains a dialer to connect to Internet&lt;br /&gt;
* Kickstart&lt;br /&gt;
contains the kickstart modules&lt;br /&gt;
* L&lt;br /&gt;
contains hand&#039;&#039;&#039;l&#039;&#039;&#039;ers and filesystems&lt;br /&gt;
* Libs&lt;br /&gt;
contains dynamic &#039;&#039;&#039;Libr&#039;&#039;&#039;airies of functions&lt;br /&gt;
* Locale&lt;br /&gt;
contains all files used to localise the system (catalogs, keymaps...)&lt;br /&gt;
* MUI&lt;br /&gt;
contains the needed files for programs that use the MUI third party graphic interface&lt;br /&gt;
* [[Prefs]]&lt;br /&gt;
contains the preference programs used to customise AmigaOS&lt;br /&gt;
* S&lt;br /&gt;
contains the &#039;&#039;&#039;S&#039;&#039;&#039;cripts&lt;br /&gt;
* SObjs&lt;br /&gt;
contains .so shared object library files&lt;br /&gt;
* Storage&lt;br /&gt;
contains other optional files&lt;br /&gt;
* System&lt;br /&gt;
contains some programs used by the system itself (i.e. you don&#039;t need to run them yourself) or low-level programs like disk tools&lt;br /&gt;
* [[Utilities]]&lt;br /&gt;
contains several programs you can use to achieve some tasks on AmigaOS&lt;br /&gt;
&lt;br /&gt;
= Motorola 680x0 Emulators =&lt;br /&gt;
&lt;br /&gt;
For a long time Amigas have had the famous Motorola 680x0 processors as the central unit for execution. Unfortunately the time of the 680x0 series is passing in favor of other architectures. The new era of processors reached the Amiga some time ago, when expansion boards became available for extending the Classic systems with the raw power of a PowerPC processor.&lt;br /&gt;
&lt;br /&gt;
In the old operating system (AmigaOS 3.x) it was not possible to gain the full advantage of the new processors. The system itself and most of the applications required the original Motorola 680x0 processor. There was no 680x0 emulation available for the PowerPCs, so the 680x0 could not be &amp;quot;switched off&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Thus the new processors remained as a powerful, but mostly unused adjunct to the main 680x0 processor. &amp;quot;Native&amp;quot; PowerPC programs were rare, and every time a PowerPC program called the system, a so called &amp;quot;context switch&amp;quot; occurred between the 680x0 and PowerPC code, often causing a large performance penalty.&lt;br /&gt;
&lt;br /&gt;
The new Amiga platform is based on the PowerPC processor family, therefore the new version of the AmigaOS has to smooth the transition from the 680x0 series, which is achieved by emulating the old processor architecture. The operating system itself is written almost 100 percent for the PowerPC processors, but the 680x0 legacy applications require an emulated 680x0 processor. &lt;br /&gt;
&lt;br /&gt;
== Two 680x0 Emulators ==&lt;br /&gt;
&lt;br /&gt;
In version 4.0 of AmigaOS, two different emulators were implemented; one is the successor of BlackBox emulation, it is an interpretive emulator, thus the emulation speed is mediocre. On the other hand it has a very low &amp;quot;reaction time&amp;quot;, and is ideal for time critical parts, such as interrupts.&lt;br /&gt;
&lt;br /&gt;
The other is Petunia, the &amp;quot;JIT emulator&amp;quot;. A fast, but less compatible way of emulation of the legacy Motorola processors. It is intended mainly for emulating applications, and therefore, when execution of the application leaves the bounds of the application&#039;s code segment, emulation falls back to the interpretive method, where it does its job and returns to the JIT emulation again.&lt;br /&gt;
&lt;br /&gt;
Dynamic recompilation (also called just-in-time compilation or simply JIT compilation) is a technique of translating foreign processor machine code to native machine code, &amp;quot;on the fly&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This technique is common nowadays, commonly applied in JAVA virtual machines, and it is also used with success in several emulators. In dynamic recompilation there is the possibility of runtime optimization of the emulated code by collecting statistics of the execution process. Therefore (theoretically) the final executed code can be even faster than the original code on its original processor.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Emulated opcodes:&lt;br /&gt;
* all user and supervisor level opcodes of the Motorola 68040&lt;br /&gt;
* all FPU opcodes of the Motorola 68881/68882 &lt;br /&gt;
&lt;br /&gt;
AmigaOS claims only 68020/68881 compatibility to applications because this is the safest compatibility level, but both emulators are compatible with the machine code up to the level of 68040/060 processors.&lt;br /&gt;
&lt;br /&gt;
At compile time, a low level flag and branch control analysis allows on-the-fly optimizations of compiled code.&lt;br /&gt;
&lt;br /&gt;
== Removing the JIT Emulator ==&lt;br /&gt;
&lt;br /&gt;
Using the dynamic translation requires a lot more memory than the interpretive emulation. The translated code needs to be stored somewhere, not to mention the data collection tables.&lt;br /&gt;
&lt;br /&gt;
If speed is not as important as the memory consumption of the system, then the JIT emulator can be removed, leaving the job to the interpretive emulator.&lt;br /&gt;
&lt;br /&gt;
Thanks to the modular design of AmigaOS kickstart, all you need to do is edit the &amp;quot;Sys:Kickstart/Kicklayout&amp;quot; file, simply put a semicolon (;) at the beginning of the module line of Petunia.library.kmod. After rebooting the system from cold, the JIT emulator will not be reloaded. Make sure that you alter the appropriate configuration in the Kicklayout file, there may be several alternative configurations, with different names like &amp;quot;DefaultJIT&amp;quot;, or &amp;quot;DefaultNoJIT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Configuring the Emulators ==&lt;br /&gt;
&lt;br /&gt;
Petunia cooperates with a so called &amp;quot;black list&amp;quot;. By default Petunia emulates every 680x0 program or library that is loaded by DOS.library/LoadSeg function, but if an executable or library shows incompatibilities with Petunia, then it can be explicitly inhibited from the dynamic recompilation by specifying it in a list file.&lt;br /&gt;
&lt;br /&gt;
If an executable needs to be added to the list, then it can be done by extending the file &amp;quot;DEVS:applications.dos&amp;quot; with the &#039;&#039;&#039;Compatibility&#039;&#039;&#039; preferences program from the Prefs drawer of the system. Adding a program name to the list and checking it will prevent Petunia from emulating that program, and it will be interpreted instead by the built-in interpreter.&lt;br /&gt;
&lt;br /&gt;
Removing a program from the list or unchecking (thus allowing Petunia to emulate it again) can be done with the same preferences program.&lt;br /&gt;
&lt;br /&gt;
Please note: some programs consist of multiple executables (shared libraries, plugins). If you want to fully disable the translation of such programs, then every part must be added to the list.&lt;br /&gt;
&lt;br /&gt;
For example to disable UnArc fully, you would have to add all files from libs:xad and also xadmaster.library to the list. &lt;br /&gt;
&lt;br /&gt;
= AmigaOS boot procedure =&lt;br /&gt;
&lt;br /&gt;
Basically a computer with AmigaOS does the following when the power button is pushed:&lt;br /&gt;
&lt;br /&gt;
* [[File:Uboot.jpg|200px]]&lt;br /&gt;
the BIOS ([[UserDoc:BIOS|Uboot]] or [[UserDoc:BIOS|CFE]]) of the computer initialises the hardware: graphic card, USB ports... At this point, the monitor wakes up and the first information are displayed. This allows to see if hardware is correctly recognised. As an example you can see if a hard drive is correctly connected into the machine and your BIOS is correctly setup to make this drive useable.&lt;br /&gt;
* depending on how you setup the BIOS it will look on the harddisk to find the Second Level Booter (SLB). This program is stored on the first sectors of the disk. Whereas the BIOS does not know about AmigaOS disk structure, the SLB will be able to &#039;&#039;understand&#039;&#039; the AmigaOS partitions and files. In other words, it is the link between the BIOS and the rest of the boot procedure. Its goal is also to give you the ability to start several configurations present on the same drive.&lt;br /&gt;
* [[File:SLB.png|200px]]&lt;br /&gt;
the SLB will analyses all Amiga partitions on the disk it is installed on. It will read each [[UserDoc:kickstart_configuration|system configuration]] it finds on the partitions. It will show all available configurations for the user to select one to load.&lt;br /&gt;
The user can define many different kickstart configurations to choose from. Also both AmigaOS and Linux can be selected for boot.&lt;br /&gt;
* [[File:Kmods loading.png|200px]]&lt;br /&gt;
the SLB loads the kickstart files of the selected configuration and executes the &#039;&#039;&#039;Loader&#039;&#039;&#039; module&lt;br /&gt;
* &#039;&#039;&#039;Loader&#039;&#039;&#039; executes the kickstart modules (Exec, devices, libraries...)&lt;br /&gt;
* AmigaOS becomes alive displaying the AmigaOS boot picture on the monitor&lt;br /&gt;
* the AmigaDOS library executes the [[UserDoc:System_Scripts#startup-sequence|startup-sequence]] script found on the system volume&lt;br /&gt;
* the Startup-sequence will be executed and all commands it contains are executed. It means that starting from here the boot procedure is easy to follow and understand.&lt;br /&gt;
* the Workbench is started&lt;br /&gt;
&lt;br /&gt;
At this point the user can use his/her computer.&lt;br /&gt;
&lt;br /&gt;
= How to make a Bootable USB Memory Stick for AmigaOS 4.1 =&lt;br /&gt;
&lt;br /&gt;
By Julian Margetson (&amp;quot;Spectre660&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Prerequisites:&lt;br /&gt;
* USB memory stick of 2 GB or less in size.&lt;br /&gt;
* It is best to only have one USB mass storage device connected while you are creating your bootable USB memory stick.&lt;br /&gt;
* Plug the USB memory stick into a USB port on your machine.&lt;br /&gt;
* Note that the device will be formatted so make sure that you use an empty memory stick or one that does not contain any data that you need or backup the contents before you begin.&lt;br /&gt;
&lt;br /&gt;
Procedure:&lt;br /&gt;
# You use Media Toolbox in the System: drawer to prepare the USB stick. On starting Media Toolbox select &#039;&#039;usbdisk.device&#039;&#039; as the device to use.&lt;br /&gt;
# Make certain that you have selected usbdisk.device and not any other device.&lt;br /&gt;
# Click on &amp;quot;Start&amp;quot;&lt;br /&gt;
# You will see the usb mass storage unit connected in a list.&lt;br /&gt;
# Make sure that the Unit type displayed for the USB memory stick is &amp;quot;Removable hard disk&amp;quot;&lt;br /&gt;
# Select that Unit by clicking on it.&lt;br /&gt;
# The first thing that you need to do is to install the RDB onto the USB Memory Stick.&lt;br /&gt;
# Click on the  &amp;quot;Install&amp;quot; button.&lt;br /&gt;
# A window Labeled &amp;quot;RDB/disk geometry editing&amp;quot; comes up.&lt;br /&gt;
## Towards the bottom of the window is the &amp;quot;AmigaOne boot code (SLB)&amp;quot; section.&lt;br /&gt;
## Select the &amp;quot;Install&amp;quot; button .&lt;br /&gt;
## A file requester  &amp;quot;Select AmigaOne Boot Code&amp;quot; now comes  up with the Drawer choice defaulting to &amp;quot;l:&amp;quot;&lt;br /&gt;
## Select file &amp;quot;slb_v2&amp;quot;. &lt;br /&gt;
## Select Ok.&lt;br /&gt;
## You are now returned to the &amp;quot;RDB/disk geometry editing window&amp;quot;.&lt;br /&gt;
## Select &amp;quot;Ok-accept changes&amp;quot;.&lt;br /&gt;
# You are now returned to the display showing the attached USB unit.&lt;br /&gt;
# Select &amp;quot;Edit partitions and Filesystems&amp;quot;. You will now see the Window &#039;Editing partitions for disk&amp;quot;&lt;br /&gt;
# Select &amp;quot;Add partition&amp;quot;&lt;br /&gt;
# This defaults to using the whole device as a single partition.&lt;br /&gt;
# It is possible to use create more partitions but for this tutorial we will only use one.&lt;br /&gt;
# You now need to give the partition a unique name (e.g. USB0 or something that is different from any of the existing partitions on your hard drive). This is done by changing the default DH0 in the &amp;quot;Name&amp;quot; box.&lt;br /&gt;
# Now make sure that the Boxes &amp;quot;Automount&amp;quot; and &amp;quot;Bootable&amp;quot; are  selected and show the &amp;quot;Tick mark&amp;quot;.&lt;br /&gt;
# You need to set &amp;quot;Boot priority&amp;quot; to higher than the boot priority of your hard drive boot partition(s). This is done by increasing Boot priority by clicking on the &amp;quot;+&amp;quot; to the right of the &amp;quot;boot priority&amp;quot; box. Normally you can set the boot priority to 2 .&lt;br /&gt;
# Next it is time to select the file system to use.&lt;br /&gt;
# Select &amp;quot;Select filesystem/edit details&amp;quot;.&lt;br /&gt;
# The Window &amp;quot;Editing details for partition &#039;USB0&#039;&amp;quot;  ,or whatever partition name you used, comes up.&lt;br /&gt;
## Select the file system that you are going to use by selecting the pull down menu under &amp;quot;Filesystem chooser&amp;quot;.&lt;br /&gt;
## Only filesystems SFS/00 or SFS/02 will work for a bootable device.&lt;br /&gt;
## The option that gives the most flexibility at the moment is SFS/00 as a USB stick in this format can be read and written to using another compatible system in the event that you need to make modifications after it is created without a booting AmigaOS 4.1 machine.&lt;br /&gt;
## Next select Blocksize from the &amp;quot;Blocksize&amp;quot; pull down menu. 512 is the correct size to use.&lt;br /&gt;
## Now Select &amp;quot;Ok-accept changes&amp;quot;.&lt;br /&gt;
## Your are now returned to the &amp;quot;Edit partitions for disk&amp;quot; window.&lt;br /&gt;
## Again select &amp;quot;Ok-accept changes&amp;quot;&lt;br /&gt;
# You are now returned to the window showing the USB mass storage unit list.&lt;br /&gt;
# Select &amp;quot;Save to disk&amp;quot;&lt;br /&gt;
# A requester pops up with the options &amp;quot;Yes, Save.&amp;quot; or &amp;quot;No!&amp;quot;&lt;br /&gt;
# Select the &amp;quot;Yes, save.&amp;quot; option.&lt;br /&gt;
# You now close Media Toolbox by clicking on the close icon (X) on the left of the Media Toolbox window.&lt;br /&gt;
# This will give you a requester advising that you need to reboot the machine for the changes to take effect. At this point you need to remove the USB memory stick for the machine. If you do not then the Machine will attempt boot from it before it is formatted and the required Kickstart and AmigaOS 4.1 files are copied to it.&lt;br /&gt;
# Select &amp;quot;Yes, reboot NOW!&amp;quot;.&lt;br /&gt;
# Once you have rebooted connect your USB Memory Stick to a USB port.&lt;br /&gt;
# A disk icon &amp;quot;USB0:Uninitialized&amp;quot; (or whatever partition name you used) appears on Workbench.&lt;br /&gt;
# You now need to format the device.&lt;br /&gt;
# To format Select this Icon and go to the Workbench &amp;quot;Icons&amp;quot; menu .&lt;br /&gt;
# Select &amp;quot;Format Disk&amp;quot;&lt;br /&gt;
# You can give the USB Memory Stick a unique name and  select whether you want a Trashcan or not.&lt;br /&gt;
# You can use either a full Format or a  Quick Format. Full Format may take a few minutes.&lt;br /&gt;
# Once formatted the USB Memory Stick is ready for you to copy the required files from you hard drive or AmigaOS Install CD to it in order to boot AmigaOS 4.1 from it.&lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=UserDoc:How_AmigaOS_Works&amp;diff=7911</id>
		<title>UserDoc:How AmigaOS Works</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=UserDoc:How_AmigaOS_Works&amp;diff=7911"/>
		<updated>2015-05-29T06:17:19Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: /* Executable files */ grammar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As already mentioned, AmigaOS was a pioneer in the early days of personal computing in delivering sophistication that contemporary systems could only have dreamt of and pretended to offer. Today, AmigaOS continues to offer a straightforward elegance that seems to be overlooked in the development of other platforms. Thanks to the concepts behind AmigaOS, the system is easy to understand and to use by everyone.&lt;br /&gt;
&lt;br /&gt;
In this page we will explore all these concepts of AmigaOS. Also you will learn here the naming of all parts of the system.&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
AmigaOS is made of different components which are either mandatory (i.e.,  AmigaOS will not work without them) or components the user can choose to use or not. All these components can have one or mutiple interfaces a user or a developer can use to operate with the components and through them to control the operating system.&lt;br /&gt;
&lt;br /&gt;
= The most important components =&lt;br /&gt;
&lt;br /&gt;
== Exec, the AmigaOS kernel ==&lt;br /&gt;
&lt;br /&gt;
Exec is the kernel of AmigaOS. It is the component that pilots all other components. It is responsible for running programs, dealing with computer memory and managing low-level resources that programs may need. In other words, it organises everything to make the operating system run.&lt;br /&gt;
&lt;br /&gt;
It is made of different parts that cannot be moved outside the kernel: the scheduler, the memory pager and the 68k interpretive emulator.&lt;br /&gt;
&lt;br /&gt;
== AmigaDOS: the underlying system ==&lt;br /&gt;
&lt;br /&gt;
The word &amp;quot;DOS&amp;quot; was originally an acronym for &amp;quot;Disk Operating System&amp;quot;. Some say it should be &amp;quot;Disk Based Operating System&amp;quot; as it does a lot more than operate a disk and that it was really an operating system based (stored) on disks.  Some say it should be &amp;quot;Device Operating System&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The whole AmigaDOS system includes things such as:&lt;br /&gt;
&lt;br /&gt;
* A set of commands that can be used in the Shell window and elsewhere.&lt;br /&gt;
* A system for saving data to disk and retrieving it from disk.&lt;br /&gt;
* A system for filing data on disks.&lt;br /&gt;
* An interface for peripherals such as keyboards, monitors, printers, etc.&lt;br /&gt;
* A method of running programs&lt;br /&gt;
* A multitasking system for running more than one program at a time.&lt;br /&gt;
* etc. etc. etc.&lt;br /&gt;
&lt;br /&gt;
Read the [[AmigaDOS manual]] to understand and learn everything about AmigaDOS.&lt;br /&gt;
&lt;br /&gt;
== The Graphics library ==&lt;br /&gt;
&lt;br /&gt;
The Graphics library handles every low level graphic operation like designing pixels on the monitor, creating graphic elements (bobs, sprites) and also writing text output.&lt;br /&gt;
&lt;br /&gt;
== Intuition ==&lt;br /&gt;
&lt;br /&gt;
The Intuition library is responsible for every graphical object: windows, screens, gadgets, mouse pointers... It lies between any graphic program and the graphics library.&lt;br /&gt;
&lt;br /&gt;
== The Workbench ==&lt;br /&gt;
&lt;br /&gt;
The Workbench is the graphical place where you will manage your computer and all your files. The name was chosen because the user will use tools to create and work with the computer.&lt;br /&gt;
&lt;br /&gt;
[[File:Wb.png|320px]]&lt;br /&gt;
&lt;br /&gt;
== The Shell ==&lt;br /&gt;
&lt;br /&gt;
While some people prefer to control the operating system using their mouse, others prefer using the keyboard. The shell is a text based window when you can type commands to execute actions in the operating system. In the shell the commands will display the results of their execution.&lt;br /&gt;
&lt;br /&gt;
== ARexx - inter-program communication by scripting ==&lt;br /&gt;
&lt;br /&gt;
The ARexx scripting language can be used to operate the Workbench and other Amiga applications from a script containing ARexx commands. This is extremely useful in performing repetitive tasks or doing what the controlled application was not even designed to do.&lt;br /&gt;
After a learning curve, everybody can use ARexx as it is built into the system.  The scripts can be executed immediately like any other tool.&lt;br /&gt;
&lt;br /&gt;
= How is my data stored? =&lt;br /&gt;
== Files ==&lt;br /&gt;
=== Executable files ===&lt;br /&gt;
Programs you can start are stored in executable files. They contain binary code directly understandable by the computer. They are files with an executable bit, a flag that shows AmigaOS that such file will do something when started.&lt;br /&gt;
An example is a music player. When you start this executable, the player opens and you can start playing music files.&lt;br /&gt;
&lt;br /&gt;
AmigaOS can run two different kinds of executable files: the AmigaOS native programs made for the PowerPC processor and programs created for the Motorola 68k processors. The latter are executed inside an emulation that transcripts them into PowerPC code.&lt;br /&gt;
&lt;br /&gt;
==== Scripts ====&lt;br /&gt;
&lt;br /&gt;
Scripts are text files containing a list of commands.  They are not strictly executables like &#039;&#039;binary code&#039;&#039; files but they can be executed by AmigaOS as if they were.&lt;br /&gt;
This is the case with AmigaDOS and ARexx scripts. These files need to have the executable bit, and the script bit.&lt;br /&gt;
&lt;br /&gt;
=== Data files ===&lt;br /&gt;
Files that are not executable are data files. These contain some data that will be manipulated by programs. Some examples are a music file, a video file or a text document.&lt;br /&gt;
&lt;br /&gt;
== Directories/Drawers ==&lt;br /&gt;
In order to organise things a bit, files are not all of them in the same place. We create directories which like drawers of a cabinet will store different files of the same kind.&lt;br /&gt;
Often the name &#039;&#039;directory&#039;&#039; is used when talking about the directory which is stored on a disk. The graphical interface of AmigaOS being called the Workbench, directories are often called &#039;&#039;drawers&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Note: directories are often called &#039;&#039;folders&#039;&#039; on other systems.&lt;br /&gt;
&lt;br /&gt;
== Disks, partitions and volumes ==&lt;br /&gt;
=== Disks ===&lt;br /&gt;
Disks are storage medium you can purchase on a computer store. We use them to store our files. They can be internal hard disks, external ones or a USB disk drive.&lt;br /&gt;
&lt;br /&gt;
=== Partitions ===&lt;br /&gt;
A disk is often very big and many users prefer to make it more organised. This is done virtually splitting the disk into several smaller parts. This operation is known as creating partitions on a disk.&lt;br /&gt;
&lt;br /&gt;
[[File:Partitions.png|Small part of Media Toolbox showing different partitions on the harddisk]]&lt;br /&gt;
&lt;br /&gt;
On this screenshot you can see one harddisk with many partitions. Each color corresponds to a different filesystem which defines how data is stored. Also you can see a greyed area which is a blank area on the disk i.e. no partition is defined at this position.&lt;br /&gt;
&lt;br /&gt;
=== Volumes ===&lt;br /&gt;
A partition is a physical area on a disk. To access it with AmigaOS we could read the physical data off the partition but it&#039;s not an easy way. To make it easier AmigaOS uses the concept of volumes. These are virtual representations of a partition. The volumes have a name so AmigaOS and therefore the user can access all files/directories stored on it in a very practical way: just by using its name.&lt;br /&gt;
&lt;br /&gt;
= How to identify files/directories =&lt;br /&gt;
&lt;br /&gt;
== On the Workbench ==&lt;br /&gt;
&lt;br /&gt;
The Workbench being graphical, a lot of things are understandable just by looking at them. That&#039;s why icons are often enough to understand what kind of object it represents: a file, a directory, a disk...&lt;br /&gt;
&lt;br /&gt;
In case you have a doubt, just look at the information on an icon. The Workbench will tell you the type of the object. It is displayed next to its name.&lt;br /&gt;
&lt;br /&gt;
== In a shell ==&lt;br /&gt;
&lt;br /&gt;
In a shell the &#039;&#039;&#039;list&#039;&#039;&#039; command can be used to see if an object is a file or a directory.&lt;br /&gt;
&lt;br /&gt;
[[File:Files-dirs-in-shell.png|The &#039;&#039;&#039;list&#039;&#039;&#039; command shows a file of 925678 bytes and two directories]]&lt;br /&gt;
&lt;br /&gt;
A file will be displayed with its size, whereas a directory will be displayed with the text &#039;&#039;&#039;Dir&#039;&#039;&#039; next to it.&lt;br /&gt;
&lt;br /&gt;
Also, as you can see on the screenshot, the list command displays other characteristics on these 3 items: the protection bits and the date they were updated the last time. The command also sums up what it just listed.&lt;br /&gt;
&lt;br /&gt;
= All AmigaOS components =&lt;br /&gt;
&lt;br /&gt;
AmigaOS is made of components that are needed as soon as the system starts or later when the user or the system needs them.&lt;br /&gt;
&lt;br /&gt;
== Kickstart modules ==&lt;br /&gt;
&lt;br /&gt;
These components are the heart of AmigaOS. Their duties is to do graphics, to handle discs or to handle all reads/writes to files. Also one of them is the AmigaOS kernel which is a kind of director handling the work of all other components.&lt;br /&gt;
These Kickstart modules are loaded at the beginning of the operating system boot process (read [[UserDoc:How_AmigaOS_Works#AmigaOS_boot_procedure|here]]). You can find all them in the &#039;&#039;&#039;Kickstart&#039;&#039;&#039; directory in the system volume. Here is a list:&lt;br /&gt;
&lt;br /&gt;
=== Mandatory modules ===&lt;br /&gt;
&lt;br /&gt;
The following modules are required in any AmigaOS system. Without one of these, the system will not start.&lt;br /&gt;
&lt;br /&gt;
* kernel - The kernel works like a conductor in an orchestra. Its job is to make everything works together. It creates processes, handle memory usage, defines the way other components will access peripherals...etc. Note that the AmigaOS kernel is not based on any other kernel. It is a self made kernel that works since 1983.&lt;br /&gt;
* loader - this component handles the loading of all other kickstart modules&lt;br /&gt;
* battclock.resource.kmod - this module handles reading/writing the battery backed up clock which is used on all computers to keep the date and time&lt;br /&gt;
* bootimage - this is the boot picture. It is displayed during the start sequence of AmigaOS&lt;br /&gt;
* bootmenu.kmod - this component handles the Early Startup Menu the use can use to define some settings before starting AmigaOS&lt;br /&gt;
* con-handler.kmod - it directs the read and write requests to the console window, to a serial AUX: device or any other supported interface&lt;br /&gt;
* console.device.kmod - it opens a window and reads/writes text to and from that window&lt;br /&gt;
* diskboot.kmod - handles the booting of AmigaOS from a supported disk&lt;br /&gt;
* diskboot.config - this is a text file experienced users can modify to change the boot behaviour of AmigaOS&lt;br /&gt;
* dos.library.kmod - this module is a collection of functions that any program can use to perform actions on disks, files and directories&lt;br /&gt;
* elf.library.kmod - handles the loading of executable programs&lt;br /&gt;
* env-handler.kmod - handles the read/writes of environment variables&lt;br /&gt;
* FileSystem.resource.kmod - handles the use of the different filesystems&lt;br /&gt;
* gadtools.library.kmod - collection of functions used to create all graphic objects like gadgets, sliders, menus...&lt;br /&gt;
* gameport.device.kmod - handles the read/writes of game pads and joysticks&lt;br /&gt;
* graphics.library.kmod - collection of functions used to draw graphic elements on the monitor&lt;br /&gt;
* hunk.library.kmod - set of functions to read a data stream into memory&lt;br /&gt;
* input.device.kmod - handles of input events like keyboard events or mouse clicks&lt;br /&gt;
* intuition.library.kmod - collection of functions to create and handle all graphic elements (screens, windows, the mouse pointer...)&lt;br /&gt;
* layers.library.kmod - set of functions to be used to handle different layers in graphic operations&lt;br /&gt;
* keyboard.device.kmod - driver for the keyboard&lt;br /&gt;
* keymap.library.kmod - functions to handle different keymaps&lt;br /&gt;
* newlib.library.kmod - collection of functions to perform memory operations (allocating memory, copying memory areas... )&lt;br /&gt;
* nonvolatile.library.kmod - provides a simple means for an application developer to manage nonvolatile storage&lt;br /&gt;
* nvram.resource.kmod - handles the read/writes to the EEPROM chip present on many AmigaOS computers&lt;br /&gt;
* PCIGraphics.card - driver that supports the use of different graphic cards&lt;br /&gt;
* ram-handler.kmod - functions that handles the &#039;&#039;&#039;Ram disk:&#039;&#039;&#039; special disk&lt;br /&gt;
* ramdrive.device.kmod - device that allows the usage of the ramdrive device &#039;&#039;&#039;RAD:&#039;&#039;&#039; disk&lt;br /&gt;
* ramlib.kmod - loads disk based libraries and devices for exec.library&lt;br /&gt;
* rtg.library - library of functions to perform lowlevel graphic operations on graphic cards&lt;br /&gt;
* shell.kmod - the AmigaOS command line interface&lt;br /&gt;
* strap.kmod - module that handles booting on different disk devices&lt;br /&gt;
* timer.device.kmod - driver to give access to timing functions&lt;br /&gt;
&lt;br /&gt;
=== Filesystem support ===&lt;br /&gt;
&lt;br /&gt;
These kickstart modules can be loaded or left aside. If you want to use a particular filesystem on your disk partitions, you need to load the corresponding filesystem module.&lt;br /&gt;
&lt;br /&gt;
* CDFileSystem - handles the CD-ROM disks with data stored in different formats: ISO9660, HFS...&lt;br /&gt;
* SmartFilesystem - allows the usage of partitions in SFS0 and SFS2 layouts&lt;br /&gt;
* JXFileSystem - allows the usage of partitions in JXFS layout&lt;br /&gt;
* FastFileSystem - allows the usage of partitions in FFS and FFS2 layouts&lt;br /&gt;
* diskcache.library.kmod - component required by the SmartFileSystem and JXFileSystem modules&lt;br /&gt;
&lt;br /&gt;
=== Hardware drivers ===&lt;br /&gt;
&lt;br /&gt;
==== Graphic cards drivers ====&lt;br /&gt;
&lt;br /&gt;
* 3dfxVoodoo.chip&lt;br /&gt;
* 3DLabsPermedia2.chip&lt;br /&gt;
* ATIRadeon.chip&lt;br /&gt;
* RadeonHD.chip&lt;br /&gt;
* siliconmotion502.chip&lt;br /&gt;
&lt;br /&gt;
==== Disk drivers ====&lt;br /&gt;
&lt;br /&gt;
Each of these drivers allow the use of disks connected to a disk controller. These files are named with the name of the controller they support. As an example, the &#039;&#039;&#039;sii3114ide.device.kmod&#039;&#039;&#039; allows to use disks connected on a &#039;&#039;&#039;Silicon Image SiI3114&#039;&#039;&#039; controller chip.&lt;br /&gt;
&lt;br /&gt;
* it8212ide.device.kmod&lt;br /&gt;
* lsi53c8xx.device.kmod&lt;br /&gt;
* sam460sata.device.kmod&lt;br /&gt;
* sii3112ide.device.kmod&lt;br /&gt;
* sii3512ide.device.kmod&lt;br /&gt;
* sii3114ide.device.kmod&lt;br /&gt;
* sii0680ide.device.kmod&lt;br /&gt;
* sii3132ide.device.kmod&lt;br /&gt;
&lt;br /&gt;
==== USB drivers ====&lt;br /&gt;
&lt;br /&gt;
* hub.usbfd&lt;br /&gt;
* usbsys.device&lt;br /&gt;
* usbresource.library&lt;br /&gt;
* ehci.usbhcd&lt;br /&gt;
* ohci.usbhcd&lt;br /&gt;
* uhci.usbhcd&lt;br /&gt;
* massstorage.usbfd&lt;br /&gt;
&lt;br /&gt;
==== Other drivers ====&lt;br /&gt;
&lt;br /&gt;
* bootkeyboard.usbfd - allows a USB keyboard to be used even before the USB stack is loaded&lt;br /&gt;
* bootmouse.usbfd - allows a USB mouse to be used even before the USB stack is loaded&lt;br /&gt;
* fpga.resource.kmod - allows to use the FPGA components which are present on some Amiga computers&lt;br /&gt;
* i2c.resource.kmod - allows to use the i2c interface present on some Amiga computers&lt;br /&gt;
* xena.resource.kmod - provides access to the Xena chip on the AmigaOne X1000&lt;br /&gt;
&lt;br /&gt;
=== Misc modules ===&lt;br /&gt;
&lt;br /&gt;
* petunia.library.kmod - this module contains the Just-In-Time emulator that allows AmigaOS to run programs made for the Motorola 68k processor&lt;br /&gt;
&lt;br /&gt;
== System components ==&lt;br /&gt;
&lt;br /&gt;
[[File:Workbench_directory_listing.png|frame|right|List of directories and files present at the root of any AmigaOS system]]&lt;br /&gt;
&lt;br /&gt;
Beside the kickstart modules, AmigaOS uses many different components that can be loaded only when used. These files are stored in different directories in the system volume.&lt;br /&gt;
Here is described a default AmigaOS installation.&lt;br /&gt;
&lt;br /&gt;
* C&lt;br /&gt;
This directory contains AmigaDOS &#039;&#039;&#039;C&#039;&#039;&#039;ommands&lt;br /&gt;
* Classes&lt;br /&gt;
contains different object elements easy to be used in any program: gadgets, requesters, graphic table, windows...&lt;br /&gt;
* Devs&lt;br /&gt;
contains definition for &#039;&#039;&#039;Dev&#039;&#039;&#039;ices&lt;br /&gt;
* Emulation&lt;br /&gt;
contains files used for the 68k emulation (though E-UAE)&lt;br /&gt;
* Fonts&lt;br /&gt;
contains various systems fonts&lt;br /&gt;
* Internet&lt;br /&gt;
contains a dialer to connect to Internet&lt;br /&gt;
* Kickstart&lt;br /&gt;
contains the kickstart modules&lt;br /&gt;
* L&lt;br /&gt;
contains hand&#039;&#039;&#039;l&#039;&#039;&#039;ers and filesystems&lt;br /&gt;
* Libs&lt;br /&gt;
contains dynamic &#039;&#039;&#039;Libr&#039;&#039;&#039;airies of functions&lt;br /&gt;
* Locale&lt;br /&gt;
contains all files used to localise the system (catalogs, keymaps...)&lt;br /&gt;
* MUI&lt;br /&gt;
contains the needed files for programs that use the MUI third party graphic interface&lt;br /&gt;
* [[Prefs]]&lt;br /&gt;
contains the preference programs used to customise AmigaOS&lt;br /&gt;
* S&lt;br /&gt;
contains the &#039;&#039;&#039;S&#039;&#039;&#039;cripts&lt;br /&gt;
* SObjs&lt;br /&gt;
contains .so shared object library files&lt;br /&gt;
* Storage&lt;br /&gt;
contains other optional files&lt;br /&gt;
* System&lt;br /&gt;
contains some programs used by the system itself (i.e. you don&#039;t need to run them yourself) or low-level programs like disk tools&lt;br /&gt;
* [[Utilities]]&lt;br /&gt;
contains several programs you can use to achieve some tasks on AmigaOS&lt;br /&gt;
&lt;br /&gt;
= Motorola 680x0 Emulators =&lt;br /&gt;
&lt;br /&gt;
For a long time Amigas have had the famous Motorola 680x0 processors as the central unit for execution. Unfortunately the time of the 680x0 series is passing in favor of other architectures. The new era of processors reached the Amiga some time ago, when expansion boards became available for extending the Classic systems with the raw power of a PowerPC processor.&lt;br /&gt;
&lt;br /&gt;
In the old operating system (AmigaOS 3.x) it was not possible to gain the full advantage of the new processors. The system itself and most of the applications required the original Motorola 680x0 processor. There was no 680x0 emulation available for the PowerPCs, so the 680x0 could not be &amp;quot;switched off&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Thus the new processors remained as a powerful, but mostly unused adjunct to the main 680x0 processor. &amp;quot;Native&amp;quot; PowerPC programs were rare, and every time a PowerPC program called the system, a so called &amp;quot;context switch&amp;quot; occurred between the 680x0 and PowerPC code, often causing a large performance penalty.&lt;br /&gt;
&lt;br /&gt;
The new Amiga platform is based on the PowerPC processor family, therefore the new version of the AmigaOS has to smooth the transition from the 680x0 series, which is achieved by emulating the old processor architecture. The operating system itself is written almost 100 percent for the PowerPC processors, but the 680x0 legacy applications require an emulated 680x0 processor. &lt;br /&gt;
&lt;br /&gt;
== Two 680x0 Emulators ==&lt;br /&gt;
&lt;br /&gt;
In version 4.0 of AmigaOS, two different emulators were implemented; one is the successor of BlackBox emulation, it is an interpretive emulator, thus the emulation speed is mediocre. On the other hand it has a very low &amp;quot;reaction time&amp;quot;, and is ideal for time critical parts, such as interrupts.&lt;br /&gt;
&lt;br /&gt;
The other is Petunia, the &amp;quot;JIT emulator&amp;quot;. A fast, but less compatible way of emulation of the legacy Motorola processors. It is intended mainly for emulating applications, and therefore, when execution of the application leaves the bounds of the application&#039;s code segment, emulation falls back to the interpretive method, where it does its job and returns to the JIT emulation again.&lt;br /&gt;
&lt;br /&gt;
Dynamic recompilation (also called just-in-time compilation or simply JIT compilation) is a technique of translating foreign processor machine code to native machine code, &amp;quot;on the fly&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This technique is common nowadays, commonly applied in JAVA virtual machines, and it is also used with success in several emulators. In dynamic recompilation there is the possibility of runtime optimization of the emulated code by collecting statistics of the execution process. Therefore (theoretically) the final executed code can be even faster than the original code on its original processor.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Emulated opcodes:&lt;br /&gt;
* all user and supervisor level opcodes of the Motorola 68040&lt;br /&gt;
* all FPU opcodes of the Motorola 68881/68882 &lt;br /&gt;
&lt;br /&gt;
AmigaOS claims only 68020/68881 compatibility to applications because this is the safest compatibility level, but both emulators are compatible with the machine code up to the level of 68040/060 processors.&lt;br /&gt;
&lt;br /&gt;
At compile time, a low level flag and branch control analysis allows on-the-fly optimizations of compiled code.&lt;br /&gt;
&lt;br /&gt;
== Removing the JIT Emulator ==&lt;br /&gt;
&lt;br /&gt;
Using the dynamic translation requires a lot more memory than the interpretive emulation. The translated code needs to be stored somewhere, not to mention the data collection tables.&lt;br /&gt;
&lt;br /&gt;
If speed is not as important as the memory consumption of the system, then the JIT emulator can be removed, leaving the job to the interpretive emulator.&lt;br /&gt;
&lt;br /&gt;
Thanks to the modular design of AmigaOS kickstart, all you need to do is edit the &amp;quot;Sys:Kickstart/Kicklayout&amp;quot; file, simply put a semicolon (;) at the beginning of the module line of Petunia.library.kmod. After rebooting the system from cold, the JIT emulator will not be reloaded. Make sure that you alter the appropriate configuration in the Kicklayout file, there may be several alternative configurations, with different names like &amp;quot;DefaultJIT&amp;quot;, or &amp;quot;DefaultNoJIT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Configuring the Emulators ==&lt;br /&gt;
&lt;br /&gt;
Petunia cooperates with a so called &amp;quot;black list&amp;quot;. By default Petunia emulates every 680x0 program or library that is loaded by DOS.library/LoadSeg function, but if an executable or library shows incompatibilities with Petunia, then it can be explicitly inhibited from the dynamic recompilation by specifying it in a list file.&lt;br /&gt;
&lt;br /&gt;
If an executable needs to be added to the list, then it can be done by extending the file &amp;quot;DEVS:applications.dos&amp;quot; with the &#039;&#039;&#039;Compatibility&#039;&#039;&#039; preferences program from the Prefs drawer of the system. Adding a program name to the list and checking it will prevent Petunia from emulating that program, and it will be interpreted instead by the built-in interpreter.&lt;br /&gt;
&lt;br /&gt;
Removing a program from the list or unchecking (thus allowing Petunia to emulate it again) can be done with the same preferences program.&lt;br /&gt;
&lt;br /&gt;
Please note: some programs consist of multiple executables (shared libraries, plugins). If you want to fully disable the translation of such programs, then every part must be added to the list.&lt;br /&gt;
&lt;br /&gt;
For example to disable UnArc fully, you would have to add all files from libs:xad and also xadmaster.library to the list. &lt;br /&gt;
&lt;br /&gt;
= AmigaOS boot procedure =&lt;br /&gt;
&lt;br /&gt;
Basically a computer with AmigaOS does the following when the power button is pushed:&lt;br /&gt;
&lt;br /&gt;
* [[File:Uboot.jpg|200px]]&lt;br /&gt;
the BIOS ([[UserDoc:BIOS|Uboot]] or [[UserDoc:BIOS|CFE]]) of the computer initialises the hardware: graphic card, USB ports... At this point, the monitor wakes up and the first information are displayed. This allows to see if hardware is correctly recognised. As an example you can see if a hard drive is correctly connected into the machine and your BIOS is correctly setup to make this drive useable.&lt;br /&gt;
* depending on how you setup the BIOS it will look on the harddisk to find the Second Level Booter (SLB). This program is stored on the first sectors of the disk. Whereas the BIOS does not know about AmigaOS disk structure, the SLB will be able to &#039;&#039;understand&#039;&#039; the AmigaOS partitions and files. In other words, it is the link between the BIOS and the rest of the boot procedure. Its goal is also to give you the ability to start several configurations present on the same drive.&lt;br /&gt;
* [[File:SLB.png|200px]]&lt;br /&gt;
the SLB will analyses all Amiga partitions on the disk it is installed on. It will read each [[UserDoc:kickstart_configuration|system configuration]] it finds on the partitions. It will show all available configurations for the user to select one to load.&lt;br /&gt;
The user can define many different kickstart configurations to choose from. Also both AmigaOS and Linux can be selected for boot.&lt;br /&gt;
* [[File:Kmods loading.png|200px]]&lt;br /&gt;
the SLB loads the kickstart files of the selected configuration and executes the &#039;&#039;&#039;Loader&#039;&#039;&#039; module&lt;br /&gt;
* &#039;&#039;&#039;Loader&#039;&#039;&#039; executes the kickstart modules (Exec, devices, libraries...)&lt;br /&gt;
* AmigaOS becomes alive displaying the AmigaOS boot picture on the monitor&lt;br /&gt;
* the AmigaDOS library executes the [[UserDoc:System_Scripts#startup-sequence|startup-sequence]] script found on the system volume&lt;br /&gt;
* the Startup-sequence will be executed and all commands it contains are executed. It means that starting from here the boot procedure is easy to follow and understand.&lt;br /&gt;
* the Workbench is started&lt;br /&gt;
&lt;br /&gt;
At this point the user can use his/her computer.&lt;br /&gt;
&lt;br /&gt;
= How to make a Bootable USB Memory Stick for AmigaOS 4.1 =&lt;br /&gt;
&lt;br /&gt;
By Julian Margetson (&amp;quot;Spectre660&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Prerequisites:&lt;br /&gt;
* USB memory stick of 2 GB or less in size.&lt;br /&gt;
* It is best to only have one USB mass storage device connected while you are creating your bootable USB memory stick.&lt;br /&gt;
* Plug the USB memory stick into a USB port on your machine.&lt;br /&gt;
* Note that the device will be formatted so make sure that you use an empty memory stick or one that does not contain any data that you need or backup the contents before you begin.&lt;br /&gt;
&lt;br /&gt;
Procedure:&lt;br /&gt;
# You use Media Toolbox in the System: drawer to prepare the USB stick. On starting Media Toolbox select &#039;&#039;usbdisk.device&#039;&#039; as the device to use.&lt;br /&gt;
# Make certain that you have selected usbdisk.device and not any other device.&lt;br /&gt;
# Click on &amp;quot;Start&amp;quot;&lt;br /&gt;
# You will see the usb mass storage unit connected in a list.&lt;br /&gt;
# Make sure that the Unit type displayed for the USB memory stick is &amp;quot;Removable hard disk&amp;quot;&lt;br /&gt;
# Select that Unit by clicking on it.&lt;br /&gt;
# The first thing that you need to do is to install the RDB onto the USB Memory Stick.&lt;br /&gt;
# Click on the  &amp;quot;Install&amp;quot; button.&lt;br /&gt;
# A window Labeled &amp;quot;RDB/disk geometry editing&amp;quot; comes up.&lt;br /&gt;
## Towards the bottom of the window is the &amp;quot;AmigaOne boot code (SLB)&amp;quot; section.&lt;br /&gt;
## Select the &amp;quot;Install&amp;quot; button .&lt;br /&gt;
## A file requester  &amp;quot;Select AmigaOne Boot Code&amp;quot; now comes  up with the Drawer choice defaulting to &amp;quot;l:&amp;quot;&lt;br /&gt;
## Select file &amp;quot;slb_v2&amp;quot;. &lt;br /&gt;
## Select Ok.&lt;br /&gt;
## You are now returned to the &amp;quot;RDB/disk geometry editing window&amp;quot;.&lt;br /&gt;
## Select &amp;quot;Ok-accept changes&amp;quot;.&lt;br /&gt;
# You are now returned to the display showing the attached USB unit.&lt;br /&gt;
# Select &amp;quot;Edit partitions and Filesystems&amp;quot;. You will now see the Window &#039;Editing partitions for disk&amp;quot;&lt;br /&gt;
# Select &amp;quot;Add partition&amp;quot;&lt;br /&gt;
# This defaults to using the whole device as a single partition.&lt;br /&gt;
# It is possible to use create more partitions but for this tutorial we will only use one.&lt;br /&gt;
# You now need to give the partition a unique name (e.g. USB0 or something that is different from any of the existing partitions on your hard drive). This is done by changing the default DH0 in the &amp;quot;Name&amp;quot; box.&lt;br /&gt;
# Now make sure that the Boxes &amp;quot;Automount&amp;quot; and &amp;quot;Bootable&amp;quot; are  selected and show the &amp;quot;Tick mark&amp;quot;.&lt;br /&gt;
# You need to set &amp;quot;Boot priority&amp;quot; to higher than the boot priority of your hard drive boot partition(s). This is done by increasing Boot priority by clicking on the &amp;quot;+&amp;quot; to the right of the &amp;quot;boot priority&amp;quot; box. Normally you can set the boot priority to 2 .&lt;br /&gt;
# Next it is time to select the file system to use.&lt;br /&gt;
# Select &amp;quot;Select filesystem/edit details&amp;quot;.&lt;br /&gt;
# The Window &amp;quot;Editing details for partition &#039;USB0&#039;&amp;quot;  ,or whatever partition name you used, comes up.&lt;br /&gt;
## Select the file system that you are going to use by selecting the pull down menu under &amp;quot;Filesystem chooser&amp;quot;.&lt;br /&gt;
## Only filesystems SFS/00 or SFS/02 will work for a bootable device.&lt;br /&gt;
## The option that gives the most flexibility at the moment is SFS/00 as a USB stick in this format can be read and written to using another compatible system in the event that you need to make modifications after it is created without a booting AmigaOS 4.1 machine.&lt;br /&gt;
## Next select Blocksize from the &amp;quot;Blocksize&amp;quot; pull down menu. 512 is the correct size to use.&lt;br /&gt;
## Now Select &amp;quot;Ok-accept changes&amp;quot;.&lt;br /&gt;
## Your are now returned to the &amp;quot;Edit partitions for disk&amp;quot; window.&lt;br /&gt;
## Again select &amp;quot;Ok-accept changes&amp;quot;&lt;br /&gt;
# You are now returned to the window showing the USB mass storage unit list.&lt;br /&gt;
# Select &amp;quot;Save to disk&amp;quot;&lt;br /&gt;
# A requester pops up with the options &amp;quot;Yes, Save.&amp;quot; or &amp;quot;No!&amp;quot;&lt;br /&gt;
# Select the &amp;quot;Yes, save.&amp;quot; option.&lt;br /&gt;
# You now close Media Toolbox by clicking on the close icon (X) on the left of the Media Toolbox window.&lt;br /&gt;
# This will give you a requester advising that you need to reboot the machine for the changes to take effect. At this point you need to remove the USB memory stick for the machine. If you do not then the Machine will attempt boot from it before it is formatted and the required Kickstart and AmigaOS 4.1 files are copied to it.&lt;br /&gt;
# Select &amp;quot;Yes, reboot NOW!&amp;quot;.&lt;br /&gt;
# Once you have rebooted connect your USB Memory Stick to a USB port.&lt;br /&gt;
# A disk icon &amp;quot;USB0:Uninitialized&amp;quot; (or whatever partition name you used) appears on Workbench.&lt;br /&gt;
# You now need to format the device.&lt;br /&gt;
# To format Select this Icon and go to the Workbench &amp;quot;Icons&amp;quot; menu .&lt;br /&gt;
# Select &amp;quot;Format Disk&amp;quot;&lt;br /&gt;
# You can give the USB Memory Stick a unique name and  select whether you want a Trashcan or not.&lt;br /&gt;
# You can use either a full Format or a  Quick Format. Full Format may take a few minutes.&lt;br /&gt;
# Once formatted the USB Memory Stick is ready for you to copy the required files from you hard drive or AmigaOS Install CD to it in order to boot AmigaOS 4.1 from it.&lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=UserDoc:How_AmigaOS_Works&amp;diff=7910</id>
		<title>UserDoc:How AmigaOS Works</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=UserDoc:How_AmigaOS_Works&amp;diff=7910"/>
		<updated>2015-05-29T06:15:23Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: /* ARexx - inter-program communication by scripting */ grammar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As already mentioned, AmigaOS was a pioneer in the early days of personal computing in delivering sophistication that contemporary systems could only have dreamt of and pretended to offer. Today, AmigaOS continues to offer a straightforward elegance that seems to be overlooked in the development of other platforms. Thanks to the concepts behind AmigaOS, the system is easy to understand and to use by everyone.&lt;br /&gt;
&lt;br /&gt;
In this page we will explore all these concepts of AmigaOS. Also you will learn here the naming of all parts of the system.&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
AmigaOS is made of different components which are either mandatory (i.e.,  AmigaOS will not work without them) or components the user can choose to use or not. All these components can have one or mutiple interfaces a user or a developer can use to operate with the components and through them to control the operating system.&lt;br /&gt;
&lt;br /&gt;
= The most important components =&lt;br /&gt;
&lt;br /&gt;
== Exec, the AmigaOS kernel ==&lt;br /&gt;
&lt;br /&gt;
Exec is the kernel of AmigaOS. It is the component that pilots all other components. It is responsible for running programs, dealing with computer memory and managing low-level resources that programs may need. In other words, it organises everything to make the operating system run.&lt;br /&gt;
&lt;br /&gt;
It is made of different parts that cannot be moved outside the kernel: the scheduler, the memory pager and the 68k interpretive emulator.&lt;br /&gt;
&lt;br /&gt;
== AmigaDOS: the underlying system ==&lt;br /&gt;
&lt;br /&gt;
The word &amp;quot;DOS&amp;quot; was originally an acronym for &amp;quot;Disk Operating System&amp;quot;. Some say it should be &amp;quot;Disk Based Operating System&amp;quot; as it does a lot more than operate a disk and that it was really an operating system based (stored) on disks.  Some say it should be &amp;quot;Device Operating System&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The whole AmigaDOS system includes things such as:&lt;br /&gt;
&lt;br /&gt;
* A set of commands that can be used in the Shell window and elsewhere.&lt;br /&gt;
* A system for saving data to disk and retrieving it from disk.&lt;br /&gt;
* A system for filing data on disks.&lt;br /&gt;
* An interface for peripherals such as keyboards, monitors, printers, etc.&lt;br /&gt;
* A method of running programs&lt;br /&gt;
* A multitasking system for running more than one program at a time.&lt;br /&gt;
* etc. etc. etc.&lt;br /&gt;
&lt;br /&gt;
Read the [[AmigaDOS manual]] to understand and learn everything about AmigaDOS.&lt;br /&gt;
&lt;br /&gt;
== The Graphics library ==&lt;br /&gt;
&lt;br /&gt;
The Graphics library handles every low level graphic operation like designing pixels on the monitor, creating graphic elements (bobs, sprites) and also writing text output.&lt;br /&gt;
&lt;br /&gt;
== Intuition ==&lt;br /&gt;
&lt;br /&gt;
The Intuition library is responsible for every graphical object: windows, screens, gadgets, mouse pointers... It lies between any graphic program and the graphics library.&lt;br /&gt;
&lt;br /&gt;
== The Workbench ==&lt;br /&gt;
&lt;br /&gt;
The Workbench is the graphical place where you will manage your computer and all your files. The name was chosen because the user will use tools to create and work with the computer.&lt;br /&gt;
&lt;br /&gt;
[[File:Wb.png|320px]]&lt;br /&gt;
&lt;br /&gt;
== The Shell ==&lt;br /&gt;
&lt;br /&gt;
While some people prefer to control the operating system using their mouse, others prefer using the keyboard. The shell is a text based window when you can type commands to execute actions in the operating system. In the shell the commands will display the results of their execution.&lt;br /&gt;
&lt;br /&gt;
== ARexx - inter-program communication by scripting ==&lt;br /&gt;
&lt;br /&gt;
The ARexx scripting language can be used to operate the Workbench and other Amiga applications from a script containing ARexx commands. This is extremely useful in performing repetitive tasks or doing what the controlled application was not even designed to do.&lt;br /&gt;
After a learning curve, everybody can use ARexx as it is built into the system.  The scripts can be executed immediately like any other tool.&lt;br /&gt;
&lt;br /&gt;
= How is my data stored? =&lt;br /&gt;
== Files ==&lt;br /&gt;
=== Executable files ===&lt;br /&gt;
Programs you can start are stored in executable files. They contain binary code directly understandable by the computer. They are files with an executable bit, a flag that shows AmigaOS that such file will do something when started.&lt;br /&gt;
An example is a music player. When you start this executable, the player opens and you can start playing music files.&lt;br /&gt;
&lt;br /&gt;
AmigaOS can run two different kinds of executable files: the AmigaOS native programs made for the PowerPC processor and programs created for the Motorola 68k processors. The laters are executed inside an emulation that transcripts them into PowerPC code.&lt;br /&gt;
&lt;br /&gt;
==== Scripts ====&lt;br /&gt;
&lt;br /&gt;
Scripts are text files containing a list of commands. So they are not strictly executables like &#039;&#039;binary code&#039;&#039; files but they can be executed by AmigaOS like if they were.&lt;br /&gt;
This is the case with AmigaDOS and ARexx scripts. These files need to have the executable bit, and the script bit.&lt;br /&gt;
&lt;br /&gt;
=== Data files ===&lt;br /&gt;
Files that are not executable are data files. These contain some data that will be manipulated by programs. Some examples are a music file, a video file or a text document.&lt;br /&gt;
&lt;br /&gt;
== Directories/Drawers ==&lt;br /&gt;
In order to organise things a bit, files are not all of them in the same place. We create directories which like drawers of a cabinet will store different files of the same kind.&lt;br /&gt;
Often the name &#039;&#039;directory&#039;&#039; is used when talking about the directory which is stored on a disk. The graphical interface of AmigaOS being called the Workbench, directories are often called &#039;&#039;drawers&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Note: directories are often called &#039;&#039;folders&#039;&#039; on other systems.&lt;br /&gt;
&lt;br /&gt;
== Disks, partitions and volumes ==&lt;br /&gt;
=== Disks ===&lt;br /&gt;
Disks are storage medium you can purchase on a computer store. We use them to store our files. They can be internal hard disks, external ones or a USB disk drive.&lt;br /&gt;
&lt;br /&gt;
=== Partitions ===&lt;br /&gt;
A disk is often very big and many users prefer to make it more organised. This is done virtually splitting the disk into several smaller parts. This operation is known as creating partitions on a disk.&lt;br /&gt;
&lt;br /&gt;
[[File:Partitions.png|Small part of Media Toolbox showing different partitions on the harddisk]]&lt;br /&gt;
&lt;br /&gt;
On this screenshot you can see one harddisk with many partitions. Each color corresponds to a different filesystem which defines how data is stored. Also you can see a greyed area which is a blank area on the disk i.e. no partition is defined at this position.&lt;br /&gt;
&lt;br /&gt;
=== Volumes ===&lt;br /&gt;
A partition is a physical area on a disk. To access it with AmigaOS we could read the physical data off the partition but it&#039;s not an easy way. To make it easier AmigaOS uses the concept of volumes. These are virtual representations of a partition. The volumes have a name so AmigaOS and therefore the user can access all files/directories stored on it in a very practical way: just by using its name.&lt;br /&gt;
&lt;br /&gt;
= How to identify files/directories =&lt;br /&gt;
&lt;br /&gt;
== On the Workbench ==&lt;br /&gt;
&lt;br /&gt;
The Workbench being graphical, a lot of things are understandable just by looking at them. That&#039;s why icons are often enough to understand what kind of object it represents: a file, a directory, a disk...&lt;br /&gt;
&lt;br /&gt;
In case you have a doubt, just look at the information on an icon. The Workbench will tell you the type of the object. It is displayed next to its name.&lt;br /&gt;
&lt;br /&gt;
== In a shell ==&lt;br /&gt;
&lt;br /&gt;
In a shell the &#039;&#039;&#039;list&#039;&#039;&#039; command can be used to see if an object is a file or a directory.&lt;br /&gt;
&lt;br /&gt;
[[File:Files-dirs-in-shell.png|The &#039;&#039;&#039;list&#039;&#039;&#039; command shows a file of 925678 bytes and two directories]]&lt;br /&gt;
&lt;br /&gt;
A file will be displayed with its size, whereas a directory will be displayed with the text &#039;&#039;&#039;Dir&#039;&#039;&#039; next to it.&lt;br /&gt;
&lt;br /&gt;
Also, as you can see on the screenshot, the list command displays other characteristics on these 3 items: the protection bits and the date they were updated the last time. The command also sums up what it just listed.&lt;br /&gt;
&lt;br /&gt;
= All AmigaOS components =&lt;br /&gt;
&lt;br /&gt;
AmigaOS is made of components that are needed as soon as the system starts or later when the user or the system needs them.&lt;br /&gt;
&lt;br /&gt;
== Kickstart modules ==&lt;br /&gt;
&lt;br /&gt;
These components are the heart of AmigaOS. Their duties is to do graphics, to handle discs or to handle all reads/writes to files. Also one of them is the AmigaOS kernel which is a kind of director handling the work of all other components.&lt;br /&gt;
These Kickstart modules are loaded at the beginning of the operating system boot process (read [[UserDoc:How_AmigaOS_Works#AmigaOS_boot_procedure|here]]). You can find all them in the &#039;&#039;&#039;Kickstart&#039;&#039;&#039; directory in the system volume. Here is a list:&lt;br /&gt;
&lt;br /&gt;
=== Mandatory modules ===&lt;br /&gt;
&lt;br /&gt;
The following modules are required in any AmigaOS system. Without one of these, the system will not start.&lt;br /&gt;
&lt;br /&gt;
* kernel - The kernel works like a conductor in an orchestra. Its job is to make everything works together. It creates processes, handle memory usage, defines the way other components will access peripherals...etc. Note that the AmigaOS kernel is not based on any other kernel. It is a self made kernel that works since 1983.&lt;br /&gt;
* loader - this component handles the loading of all other kickstart modules&lt;br /&gt;
* battclock.resource.kmod - this module handles reading/writing the battery backed up clock which is used on all computers to keep the date and time&lt;br /&gt;
* bootimage - this is the boot picture. It is displayed during the start sequence of AmigaOS&lt;br /&gt;
* bootmenu.kmod - this component handles the Early Startup Menu the use can use to define some settings before starting AmigaOS&lt;br /&gt;
* con-handler.kmod - it directs the read and write requests to the console window, to a serial AUX: device or any other supported interface&lt;br /&gt;
* console.device.kmod - it opens a window and reads/writes text to and from that window&lt;br /&gt;
* diskboot.kmod - handles the booting of AmigaOS from a supported disk&lt;br /&gt;
* diskboot.config - this is a text file experienced users can modify to change the boot behaviour of AmigaOS&lt;br /&gt;
* dos.library.kmod - this module is a collection of functions that any program can use to perform actions on disks, files and directories&lt;br /&gt;
* elf.library.kmod - handles the loading of executable programs&lt;br /&gt;
* env-handler.kmod - handles the read/writes of environment variables&lt;br /&gt;
* FileSystem.resource.kmod - handles the use of the different filesystems&lt;br /&gt;
* gadtools.library.kmod - collection of functions used to create all graphic objects like gadgets, sliders, menus...&lt;br /&gt;
* gameport.device.kmod - handles the read/writes of game pads and joysticks&lt;br /&gt;
* graphics.library.kmod - collection of functions used to draw graphic elements on the monitor&lt;br /&gt;
* hunk.library.kmod - set of functions to read a data stream into memory&lt;br /&gt;
* input.device.kmod - handles of input events like keyboard events or mouse clicks&lt;br /&gt;
* intuition.library.kmod - collection of functions to create and handle all graphic elements (screens, windows, the mouse pointer...)&lt;br /&gt;
* layers.library.kmod - set of functions to be used to handle different layers in graphic operations&lt;br /&gt;
* keyboard.device.kmod - driver for the keyboard&lt;br /&gt;
* keymap.library.kmod - functions to handle different keymaps&lt;br /&gt;
* newlib.library.kmod - collection of functions to perform memory operations (allocating memory, copying memory areas... )&lt;br /&gt;
* nonvolatile.library.kmod - provides a simple means for an application developer to manage nonvolatile storage&lt;br /&gt;
* nvram.resource.kmod - handles the read/writes to the EEPROM chip present on many AmigaOS computers&lt;br /&gt;
* PCIGraphics.card - driver that supports the use of different graphic cards&lt;br /&gt;
* ram-handler.kmod - functions that handles the &#039;&#039;&#039;Ram disk:&#039;&#039;&#039; special disk&lt;br /&gt;
* ramdrive.device.kmod - device that allows the usage of the ramdrive device &#039;&#039;&#039;RAD:&#039;&#039;&#039; disk&lt;br /&gt;
* ramlib.kmod - loads disk based libraries and devices for exec.library&lt;br /&gt;
* rtg.library - library of functions to perform lowlevel graphic operations on graphic cards&lt;br /&gt;
* shell.kmod - the AmigaOS command line interface&lt;br /&gt;
* strap.kmod - module that handles booting on different disk devices&lt;br /&gt;
* timer.device.kmod - driver to give access to timing functions&lt;br /&gt;
&lt;br /&gt;
=== Filesystem support ===&lt;br /&gt;
&lt;br /&gt;
These kickstart modules can be loaded or left aside. If you want to use a particular filesystem on your disk partitions, you need to load the corresponding filesystem module.&lt;br /&gt;
&lt;br /&gt;
* CDFileSystem - handles the CD-ROM disks with data stored in different formats: ISO9660, HFS...&lt;br /&gt;
* SmartFilesystem - allows the usage of partitions in SFS0 and SFS2 layouts&lt;br /&gt;
* JXFileSystem - allows the usage of partitions in JXFS layout&lt;br /&gt;
* FastFileSystem - allows the usage of partitions in FFS and FFS2 layouts&lt;br /&gt;
* diskcache.library.kmod - component required by the SmartFileSystem and JXFileSystem modules&lt;br /&gt;
&lt;br /&gt;
=== Hardware drivers ===&lt;br /&gt;
&lt;br /&gt;
==== Graphic cards drivers ====&lt;br /&gt;
&lt;br /&gt;
* 3dfxVoodoo.chip&lt;br /&gt;
* 3DLabsPermedia2.chip&lt;br /&gt;
* ATIRadeon.chip&lt;br /&gt;
* RadeonHD.chip&lt;br /&gt;
* siliconmotion502.chip&lt;br /&gt;
&lt;br /&gt;
==== Disk drivers ====&lt;br /&gt;
&lt;br /&gt;
Each of these drivers allow the use of disks connected to a disk controller. These files are named with the name of the controller they support. As an example, the &#039;&#039;&#039;sii3114ide.device.kmod&#039;&#039;&#039; allows to use disks connected on a &#039;&#039;&#039;Silicon Image SiI3114&#039;&#039;&#039; controller chip.&lt;br /&gt;
&lt;br /&gt;
* it8212ide.device.kmod&lt;br /&gt;
* lsi53c8xx.device.kmod&lt;br /&gt;
* sam460sata.device.kmod&lt;br /&gt;
* sii3112ide.device.kmod&lt;br /&gt;
* sii3512ide.device.kmod&lt;br /&gt;
* sii3114ide.device.kmod&lt;br /&gt;
* sii0680ide.device.kmod&lt;br /&gt;
* sii3132ide.device.kmod&lt;br /&gt;
&lt;br /&gt;
==== USB drivers ====&lt;br /&gt;
&lt;br /&gt;
* hub.usbfd&lt;br /&gt;
* usbsys.device&lt;br /&gt;
* usbresource.library&lt;br /&gt;
* ehci.usbhcd&lt;br /&gt;
* ohci.usbhcd&lt;br /&gt;
* uhci.usbhcd&lt;br /&gt;
* massstorage.usbfd&lt;br /&gt;
&lt;br /&gt;
==== Other drivers ====&lt;br /&gt;
&lt;br /&gt;
* bootkeyboard.usbfd - allows a USB keyboard to be used even before the USB stack is loaded&lt;br /&gt;
* bootmouse.usbfd - allows a USB mouse to be used even before the USB stack is loaded&lt;br /&gt;
* fpga.resource.kmod - allows to use the FPGA components which are present on some Amiga computers&lt;br /&gt;
* i2c.resource.kmod - allows to use the i2c interface present on some Amiga computers&lt;br /&gt;
* xena.resource.kmod - provides access to the Xena chip on the AmigaOne X1000&lt;br /&gt;
&lt;br /&gt;
=== Misc modules ===&lt;br /&gt;
&lt;br /&gt;
* petunia.library.kmod - this module contains the Just-In-Time emulator that allows AmigaOS to run programs made for the Motorola 68k processor&lt;br /&gt;
&lt;br /&gt;
== System components ==&lt;br /&gt;
&lt;br /&gt;
[[File:Workbench_directory_listing.png|frame|right|List of directories and files present at the root of any AmigaOS system]]&lt;br /&gt;
&lt;br /&gt;
Beside the kickstart modules, AmigaOS uses many different components that can be loaded only when used. These files are stored in different directories in the system volume.&lt;br /&gt;
Here is described a default AmigaOS installation.&lt;br /&gt;
&lt;br /&gt;
* C&lt;br /&gt;
This directory contains AmigaDOS &#039;&#039;&#039;C&#039;&#039;&#039;ommands&lt;br /&gt;
* Classes&lt;br /&gt;
contains different object elements easy to be used in any program: gadgets, requesters, graphic table, windows...&lt;br /&gt;
* Devs&lt;br /&gt;
contains definition for &#039;&#039;&#039;Dev&#039;&#039;&#039;ices&lt;br /&gt;
* Emulation&lt;br /&gt;
contains files used for the 68k emulation (though E-UAE)&lt;br /&gt;
* Fonts&lt;br /&gt;
contains various systems fonts&lt;br /&gt;
* Internet&lt;br /&gt;
contains a dialer to connect to Internet&lt;br /&gt;
* Kickstart&lt;br /&gt;
contains the kickstart modules&lt;br /&gt;
* L&lt;br /&gt;
contains hand&#039;&#039;&#039;l&#039;&#039;&#039;ers and filesystems&lt;br /&gt;
* Libs&lt;br /&gt;
contains dynamic &#039;&#039;&#039;Libr&#039;&#039;&#039;airies of functions&lt;br /&gt;
* Locale&lt;br /&gt;
contains all files used to localise the system (catalogs, keymaps...)&lt;br /&gt;
* MUI&lt;br /&gt;
contains the needed files for programs that use the MUI third party graphic interface&lt;br /&gt;
* [[Prefs]]&lt;br /&gt;
contains the preference programs used to customise AmigaOS&lt;br /&gt;
* S&lt;br /&gt;
contains the &#039;&#039;&#039;S&#039;&#039;&#039;cripts&lt;br /&gt;
* SObjs&lt;br /&gt;
contains .so shared object library files&lt;br /&gt;
* Storage&lt;br /&gt;
contains other optional files&lt;br /&gt;
* System&lt;br /&gt;
contains some programs used by the system itself (i.e. you don&#039;t need to run them yourself) or low-level programs like disk tools&lt;br /&gt;
* [[Utilities]]&lt;br /&gt;
contains several programs you can use to achieve some tasks on AmigaOS&lt;br /&gt;
&lt;br /&gt;
= Motorola 680x0 Emulators =&lt;br /&gt;
&lt;br /&gt;
For a long time Amigas have had the famous Motorola 680x0 processors as the central unit for execution. Unfortunately the time of the 680x0 series is passing in favor of other architectures. The new era of processors reached the Amiga some time ago, when expansion boards became available for extending the Classic systems with the raw power of a PowerPC processor.&lt;br /&gt;
&lt;br /&gt;
In the old operating system (AmigaOS 3.x) it was not possible to gain the full advantage of the new processors. The system itself and most of the applications required the original Motorola 680x0 processor. There was no 680x0 emulation available for the PowerPCs, so the 680x0 could not be &amp;quot;switched off&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Thus the new processors remained as a powerful, but mostly unused adjunct to the main 680x0 processor. &amp;quot;Native&amp;quot; PowerPC programs were rare, and every time a PowerPC program called the system, a so called &amp;quot;context switch&amp;quot; occurred between the 680x0 and PowerPC code, often causing a large performance penalty.&lt;br /&gt;
&lt;br /&gt;
The new Amiga platform is based on the PowerPC processor family, therefore the new version of the AmigaOS has to smooth the transition from the 680x0 series, which is achieved by emulating the old processor architecture. The operating system itself is written almost 100 percent for the PowerPC processors, but the 680x0 legacy applications require an emulated 680x0 processor. &lt;br /&gt;
&lt;br /&gt;
== Two 680x0 Emulators ==&lt;br /&gt;
&lt;br /&gt;
In version 4.0 of AmigaOS, two different emulators were implemented; one is the successor of BlackBox emulation, it is an interpretive emulator, thus the emulation speed is mediocre. On the other hand it has a very low &amp;quot;reaction time&amp;quot;, and is ideal for time critical parts, such as interrupts.&lt;br /&gt;
&lt;br /&gt;
The other is Petunia, the &amp;quot;JIT emulator&amp;quot;. A fast, but less compatible way of emulation of the legacy Motorola processors. It is intended mainly for emulating applications, and therefore, when execution of the application leaves the bounds of the application&#039;s code segment, emulation falls back to the interpretive method, where it does its job and returns to the JIT emulation again.&lt;br /&gt;
&lt;br /&gt;
Dynamic recompilation (also called just-in-time compilation or simply JIT compilation) is a technique of translating foreign processor machine code to native machine code, &amp;quot;on the fly&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This technique is common nowadays, commonly applied in JAVA virtual machines, and it is also used with success in several emulators. In dynamic recompilation there is the possibility of runtime optimization of the emulated code by collecting statistics of the execution process. Therefore (theoretically) the final executed code can be even faster than the original code on its original processor.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Emulated opcodes:&lt;br /&gt;
* all user and supervisor level opcodes of the Motorola 68040&lt;br /&gt;
* all FPU opcodes of the Motorola 68881/68882 &lt;br /&gt;
&lt;br /&gt;
AmigaOS claims only 68020/68881 compatibility to applications because this is the safest compatibility level, but both emulators are compatible with the machine code up to the level of 68040/060 processors.&lt;br /&gt;
&lt;br /&gt;
At compile time, a low level flag and branch control analysis allows on-the-fly optimizations of compiled code.&lt;br /&gt;
&lt;br /&gt;
== Removing the JIT Emulator ==&lt;br /&gt;
&lt;br /&gt;
Using the dynamic translation requires a lot more memory than the interpretive emulation. The translated code needs to be stored somewhere, not to mention the data collection tables.&lt;br /&gt;
&lt;br /&gt;
If speed is not as important as the memory consumption of the system, then the JIT emulator can be removed, leaving the job to the interpretive emulator.&lt;br /&gt;
&lt;br /&gt;
Thanks to the modular design of AmigaOS kickstart, all you need to do is edit the &amp;quot;Sys:Kickstart/Kicklayout&amp;quot; file, simply put a semicolon (;) at the beginning of the module line of Petunia.library.kmod. After rebooting the system from cold, the JIT emulator will not be reloaded. Make sure that you alter the appropriate configuration in the Kicklayout file, there may be several alternative configurations, with different names like &amp;quot;DefaultJIT&amp;quot;, or &amp;quot;DefaultNoJIT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Configuring the Emulators ==&lt;br /&gt;
&lt;br /&gt;
Petunia cooperates with a so called &amp;quot;black list&amp;quot;. By default Petunia emulates every 680x0 program or library that is loaded by DOS.library/LoadSeg function, but if an executable or library shows incompatibilities with Petunia, then it can be explicitly inhibited from the dynamic recompilation by specifying it in a list file.&lt;br /&gt;
&lt;br /&gt;
If an executable needs to be added to the list, then it can be done by extending the file &amp;quot;DEVS:applications.dos&amp;quot; with the &#039;&#039;&#039;Compatibility&#039;&#039;&#039; preferences program from the Prefs drawer of the system. Adding a program name to the list and checking it will prevent Petunia from emulating that program, and it will be interpreted instead by the built-in interpreter.&lt;br /&gt;
&lt;br /&gt;
Removing a program from the list or unchecking (thus allowing Petunia to emulate it again) can be done with the same preferences program.&lt;br /&gt;
&lt;br /&gt;
Please note: some programs consist of multiple executables (shared libraries, plugins). If you want to fully disable the translation of such programs, then every part must be added to the list.&lt;br /&gt;
&lt;br /&gt;
For example to disable UnArc fully, you would have to add all files from libs:xad and also xadmaster.library to the list. &lt;br /&gt;
&lt;br /&gt;
= AmigaOS boot procedure =&lt;br /&gt;
&lt;br /&gt;
Basically a computer with AmigaOS does the following when the power button is pushed:&lt;br /&gt;
&lt;br /&gt;
* [[File:Uboot.jpg|200px]]&lt;br /&gt;
the BIOS ([[UserDoc:BIOS|Uboot]] or [[UserDoc:BIOS|CFE]]) of the computer initialises the hardware: graphic card, USB ports... At this point, the monitor wakes up and the first information are displayed. This allows to see if hardware is correctly recognised. As an example you can see if a hard drive is correctly connected into the machine and your BIOS is correctly setup to make this drive useable.&lt;br /&gt;
* depending on how you setup the BIOS it will look on the harddisk to find the Second Level Booter (SLB). This program is stored on the first sectors of the disk. Whereas the BIOS does not know about AmigaOS disk structure, the SLB will be able to &#039;&#039;understand&#039;&#039; the AmigaOS partitions and files. In other words, it is the link between the BIOS and the rest of the boot procedure. Its goal is also to give you the ability to start several configurations present on the same drive.&lt;br /&gt;
* [[File:SLB.png|200px]]&lt;br /&gt;
the SLB will analyses all Amiga partitions on the disk it is installed on. It will read each [[UserDoc:kickstart_configuration|system configuration]] it finds on the partitions. It will show all available configurations for the user to select one to load.&lt;br /&gt;
The user can define many different kickstart configurations to choose from. Also both AmigaOS and Linux can be selected for boot.&lt;br /&gt;
* [[File:Kmods loading.png|200px]]&lt;br /&gt;
the SLB loads the kickstart files of the selected configuration and executes the &#039;&#039;&#039;Loader&#039;&#039;&#039; module&lt;br /&gt;
* &#039;&#039;&#039;Loader&#039;&#039;&#039; executes the kickstart modules (Exec, devices, libraries...)&lt;br /&gt;
* AmigaOS becomes alive displaying the AmigaOS boot picture on the monitor&lt;br /&gt;
* the AmigaDOS library executes the [[UserDoc:System_Scripts#startup-sequence|startup-sequence]] script found on the system volume&lt;br /&gt;
* the Startup-sequence will be executed and all commands it contains are executed. It means that starting from here the boot procedure is easy to follow and understand.&lt;br /&gt;
* the Workbench is started&lt;br /&gt;
&lt;br /&gt;
At this point the user can use his/her computer.&lt;br /&gt;
&lt;br /&gt;
= How to make a Bootable USB Memory Stick for AmigaOS 4.1 =&lt;br /&gt;
&lt;br /&gt;
By Julian Margetson (&amp;quot;Spectre660&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Prerequisites:&lt;br /&gt;
* USB memory stick of 2 GB or less in size.&lt;br /&gt;
* It is best to only have one USB mass storage device connected while you are creating your bootable USB memory stick.&lt;br /&gt;
* Plug the USB memory stick into a USB port on your machine.&lt;br /&gt;
* Note that the device will be formatted so make sure that you use an empty memory stick or one that does not contain any data that you need or backup the contents before you begin.&lt;br /&gt;
&lt;br /&gt;
Procedure:&lt;br /&gt;
# You use Media Toolbox in the System: drawer to prepare the USB stick. On starting Media Toolbox select &#039;&#039;usbdisk.device&#039;&#039; as the device to use.&lt;br /&gt;
# Make certain that you have selected usbdisk.device and not any other device.&lt;br /&gt;
# Click on &amp;quot;Start&amp;quot;&lt;br /&gt;
# You will see the usb mass storage unit connected in a list.&lt;br /&gt;
# Make sure that the Unit type displayed for the USB memory stick is &amp;quot;Removable hard disk&amp;quot;&lt;br /&gt;
# Select that Unit by clicking on it.&lt;br /&gt;
# The first thing that you need to do is to install the RDB onto the USB Memory Stick.&lt;br /&gt;
# Click on the  &amp;quot;Install&amp;quot; button.&lt;br /&gt;
# A window Labeled &amp;quot;RDB/disk geometry editing&amp;quot; comes up.&lt;br /&gt;
## Towards the bottom of the window is the &amp;quot;AmigaOne boot code (SLB)&amp;quot; section.&lt;br /&gt;
## Select the &amp;quot;Install&amp;quot; button .&lt;br /&gt;
## A file requester  &amp;quot;Select AmigaOne Boot Code&amp;quot; now comes  up with the Drawer choice defaulting to &amp;quot;l:&amp;quot;&lt;br /&gt;
## Select file &amp;quot;slb_v2&amp;quot;. &lt;br /&gt;
## Select Ok.&lt;br /&gt;
## You are now returned to the &amp;quot;RDB/disk geometry editing window&amp;quot;.&lt;br /&gt;
## Select &amp;quot;Ok-accept changes&amp;quot;.&lt;br /&gt;
# You are now returned to the display showing the attached USB unit.&lt;br /&gt;
# Select &amp;quot;Edit partitions and Filesystems&amp;quot;. You will now see the Window &#039;Editing partitions for disk&amp;quot;&lt;br /&gt;
# Select &amp;quot;Add partition&amp;quot;&lt;br /&gt;
# This defaults to using the whole device as a single partition.&lt;br /&gt;
# It is possible to use create more partitions but for this tutorial we will only use one.&lt;br /&gt;
# You now need to give the partition a unique name (e.g. USB0 or something that is different from any of the existing partitions on your hard drive). This is done by changing the default DH0 in the &amp;quot;Name&amp;quot; box.&lt;br /&gt;
# Now make sure that the Boxes &amp;quot;Automount&amp;quot; and &amp;quot;Bootable&amp;quot; are  selected and show the &amp;quot;Tick mark&amp;quot;.&lt;br /&gt;
# You need to set &amp;quot;Boot priority&amp;quot; to higher than the boot priority of your hard drive boot partition(s). This is done by increasing Boot priority by clicking on the &amp;quot;+&amp;quot; to the right of the &amp;quot;boot priority&amp;quot; box. Normally you can set the boot priority to 2 .&lt;br /&gt;
# Next it is time to select the file system to use.&lt;br /&gt;
# Select &amp;quot;Select filesystem/edit details&amp;quot;.&lt;br /&gt;
# The Window &amp;quot;Editing details for partition &#039;USB0&#039;&amp;quot;  ,or whatever partition name you used, comes up.&lt;br /&gt;
## Select the file system that you are going to use by selecting the pull down menu under &amp;quot;Filesystem chooser&amp;quot;.&lt;br /&gt;
## Only filesystems SFS/00 or SFS/02 will work for a bootable device.&lt;br /&gt;
## The option that gives the most flexibility at the moment is SFS/00 as a USB stick in this format can be read and written to using another compatible system in the event that you need to make modifications after it is created without a booting AmigaOS 4.1 machine.&lt;br /&gt;
## Next select Blocksize from the &amp;quot;Blocksize&amp;quot; pull down menu. 512 is the correct size to use.&lt;br /&gt;
## Now Select &amp;quot;Ok-accept changes&amp;quot;.&lt;br /&gt;
## Your are now returned to the &amp;quot;Edit partitions for disk&amp;quot; window.&lt;br /&gt;
## Again select &amp;quot;Ok-accept changes&amp;quot;&lt;br /&gt;
# You are now returned to the window showing the USB mass storage unit list.&lt;br /&gt;
# Select &amp;quot;Save to disk&amp;quot;&lt;br /&gt;
# A requester pops up with the options &amp;quot;Yes, Save.&amp;quot; or &amp;quot;No!&amp;quot;&lt;br /&gt;
# Select the &amp;quot;Yes, save.&amp;quot; option.&lt;br /&gt;
# You now close Media Toolbox by clicking on the close icon (X) on the left of the Media Toolbox window.&lt;br /&gt;
# This will give you a requester advising that you need to reboot the machine for the changes to take effect. At this point you need to remove the USB memory stick for the machine. If you do not then the Machine will attempt boot from it before it is formatted and the required Kickstart and AmigaOS 4.1 files are copied to it.&lt;br /&gt;
# Select &amp;quot;Yes, reboot NOW!&amp;quot;.&lt;br /&gt;
# Once you have rebooted connect your USB Memory Stick to a USB port.&lt;br /&gt;
# A disk icon &amp;quot;USB0:Uninitialized&amp;quot; (or whatever partition name you used) appears on Workbench.&lt;br /&gt;
# You now need to format the device.&lt;br /&gt;
# To format Select this Icon and go to the Workbench &amp;quot;Icons&amp;quot; menu .&lt;br /&gt;
# Select &amp;quot;Format Disk&amp;quot;&lt;br /&gt;
# You can give the USB Memory Stick a unique name and  select whether you want a Trashcan or not.&lt;br /&gt;
# You can use either a full Format or a  Quick Format. Full Format may take a few minutes.&lt;br /&gt;
# Once formatted the USB Memory Stick is ready for you to copy the required files from you hard drive or AmigaOS Install CD to it in order to boot AmigaOS 4.1 from it.&lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=UserDoc:How_AmigaOS_Works&amp;diff=7909</id>
		<title>UserDoc:How AmigaOS Works</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=UserDoc:How_AmigaOS_Works&amp;diff=7909"/>
		<updated>2015-05-29T06:14:21Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: /* ARexx - inter-program communication by scripting */ grammar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As already mentioned, AmigaOS was a pioneer in the early days of personal computing in delivering sophistication that contemporary systems could only have dreamt of and pretended to offer. Today, AmigaOS continues to offer a straightforward elegance that seems to be overlooked in the development of other platforms. Thanks to the concepts behind AmigaOS, the system is easy to understand and to use by everyone.&lt;br /&gt;
&lt;br /&gt;
In this page we will explore all these concepts of AmigaOS. Also you will learn here the naming of all parts of the system.&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
AmigaOS is made of different components which are either mandatory (i.e.,  AmigaOS will not work without them) or components the user can choose to use or not. All these components can have one or mutiple interfaces a user or a developer can use to operate with the components and through them to control the operating system.&lt;br /&gt;
&lt;br /&gt;
= The most important components =&lt;br /&gt;
&lt;br /&gt;
== Exec, the AmigaOS kernel ==&lt;br /&gt;
&lt;br /&gt;
Exec is the kernel of AmigaOS. It is the component that pilots all other components. It is responsible for running programs, dealing with computer memory and managing low-level resources that programs may need. In other words, it organises everything to make the operating system run.&lt;br /&gt;
&lt;br /&gt;
It is made of different parts that cannot be moved outside the kernel: the scheduler, the memory pager and the 68k interpretive emulator.&lt;br /&gt;
&lt;br /&gt;
== AmigaDOS: the underlying system ==&lt;br /&gt;
&lt;br /&gt;
The word &amp;quot;DOS&amp;quot; was originally an acronym for &amp;quot;Disk Operating System&amp;quot;. Some say it should be &amp;quot;Disk Based Operating System&amp;quot; as it does a lot more than operate a disk and that it was really an operating system based (stored) on disks.  Some say it should be &amp;quot;Device Operating System&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The whole AmigaDOS system includes things such as:&lt;br /&gt;
&lt;br /&gt;
* A set of commands that can be used in the Shell window and elsewhere.&lt;br /&gt;
* A system for saving data to disk and retrieving it from disk.&lt;br /&gt;
* A system for filing data on disks.&lt;br /&gt;
* An interface for peripherals such as keyboards, monitors, printers, etc.&lt;br /&gt;
* A method of running programs&lt;br /&gt;
* A multitasking system for running more than one program at a time.&lt;br /&gt;
* etc. etc. etc.&lt;br /&gt;
&lt;br /&gt;
Read the [[AmigaDOS manual]] to understand and learn everything about AmigaDOS.&lt;br /&gt;
&lt;br /&gt;
== The Graphics library ==&lt;br /&gt;
&lt;br /&gt;
The Graphics library handles every low level graphic operation like designing pixels on the monitor, creating graphic elements (bobs, sprites) and also writing text output.&lt;br /&gt;
&lt;br /&gt;
== Intuition ==&lt;br /&gt;
&lt;br /&gt;
The Intuition library is responsible for every graphical object: windows, screens, gadgets, mouse pointers... It lies between any graphic program and the graphics library.&lt;br /&gt;
&lt;br /&gt;
== The Workbench ==&lt;br /&gt;
&lt;br /&gt;
The Workbench is the graphical place where you will manage your computer and all your files. The name was chosen because the user will use tools to create and work with the computer.&lt;br /&gt;
&lt;br /&gt;
[[File:Wb.png|320px]]&lt;br /&gt;
&lt;br /&gt;
== The Shell ==&lt;br /&gt;
&lt;br /&gt;
While some people prefer to control the operating system using their mouse, others prefer using the keyboard. The shell is a text based window when you can type commands to execute actions in the operating system. In the shell the commands will display the results of their execution.&lt;br /&gt;
&lt;br /&gt;
== ARexx - inter-program communication by scripting ==&lt;br /&gt;
&lt;br /&gt;
The ARexx scripting language can be used to operate the Workbench and other Amiga applications from a script containing ARexx commands. This is extremely useful in performing repetitive tasks or doing what the controlled application was not even designed to do.&lt;br /&gt;
After a learning curve, everybody can use ARexx as it is built in the system.  The scripts can be executed immediately like any other tool.&lt;br /&gt;
&lt;br /&gt;
= How is my data stored? =&lt;br /&gt;
== Files ==&lt;br /&gt;
=== Executable files ===&lt;br /&gt;
Programs you can start are stored in executable files. They contain binary code directly understandable by the computer. They are files with an executable bit, a flag that shows AmigaOS that such file will do something when started.&lt;br /&gt;
An example is a music player. When you start this executable, the player opens and you can start playing music files.&lt;br /&gt;
&lt;br /&gt;
AmigaOS can run two different kinds of executable files: the AmigaOS native programs made for the PowerPC processor and programs created for the Motorola 68k processors. The laters are executed inside an emulation that transcripts them into PowerPC code.&lt;br /&gt;
&lt;br /&gt;
==== Scripts ====&lt;br /&gt;
&lt;br /&gt;
Scripts are text files containing a list of commands. So they are not strictly executables like &#039;&#039;binary code&#039;&#039; files but they can be executed by AmigaOS like if they were.&lt;br /&gt;
This is the case with AmigaDOS and ARexx scripts. These files need to have the executable bit, and the script bit.&lt;br /&gt;
&lt;br /&gt;
=== Data files ===&lt;br /&gt;
Files that are not executable are data files. These contain some data that will be manipulated by programs. Some examples are a music file, a video file or a text document.&lt;br /&gt;
&lt;br /&gt;
== Directories/Drawers ==&lt;br /&gt;
In order to organise things a bit, files are not all of them in the same place. We create directories which like drawers of a cabinet will store different files of the same kind.&lt;br /&gt;
Often the name &#039;&#039;directory&#039;&#039; is used when talking about the directory which is stored on a disk. The graphical interface of AmigaOS being called the Workbench, directories are often called &#039;&#039;drawers&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Note: directories are often called &#039;&#039;folders&#039;&#039; on other systems.&lt;br /&gt;
&lt;br /&gt;
== Disks, partitions and volumes ==&lt;br /&gt;
=== Disks ===&lt;br /&gt;
Disks are storage medium you can purchase on a computer store. We use them to store our files. They can be internal hard disks, external ones or a USB disk drive.&lt;br /&gt;
&lt;br /&gt;
=== Partitions ===&lt;br /&gt;
A disk is often very big and many users prefer to make it more organised. This is done virtually splitting the disk into several smaller parts. This operation is known as creating partitions on a disk.&lt;br /&gt;
&lt;br /&gt;
[[File:Partitions.png|Small part of Media Toolbox showing different partitions on the harddisk]]&lt;br /&gt;
&lt;br /&gt;
On this screenshot you can see one harddisk with many partitions. Each color corresponds to a different filesystem which defines how data is stored. Also you can see a greyed area which is a blank area on the disk i.e. no partition is defined at this position.&lt;br /&gt;
&lt;br /&gt;
=== Volumes ===&lt;br /&gt;
A partition is a physical area on a disk. To access it with AmigaOS we could read the physical data off the partition but it&#039;s not an easy way. To make it easier AmigaOS uses the concept of volumes. These are virtual representations of a partition. The volumes have a name so AmigaOS and therefore the user can access all files/directories stored on it in a very practical way: just by using its name.&lt;br /&gt;
&lt;br /&gt;
= How to identify files/directories =&lt;br /&gt;
&lt;br /&gt;
== On the Workbench ==&lt;br /&gt;
&lt;br /&gt;
The Workbench being graphical, a lot of things are understandable just by looking at them. That&#039;s why icons are often enough to understand what kind of object it represents: a file, a directory, a disk...&lt;br /&gt;
&lt;br /&gt;
In case you have a doubt, just look at the information on an icon. The Workbench will tell you the type of the object. It is displayed next to its name.&lt;br /&gt;
&lt;br /&gt;
== In a shell ==&lt;br /&gt;
&lt;br /&gt;
In a shell the &#039;&#039;&#039;list&#039;&#039;&#039; command can be used to see if an object is a file or a directory.&lt;br /&gt;
&lt;br /&gt;
[[File:Files-dirs-in-shell.png|The &#039;&#039;&#039;list&#039;&#039;&#039; command shows a file of 925678 bytes and two directories]]&lt;br /&gt;
&lt;br /&gt;
A file will be displayed with its size, whereas a directory will be displayed with the text &#039;&#039;&#039;Dir&#039;&#039;&#039; next to it.&lt;br /&gt;
&lt;br /&gt;
Also, as you can see on the screenshot, the list command displays other characteristics on these 3 items: the protection bits and the date they were updated the last time. The command also sums up what it just listed.&lt;br /&gt;
&lt;br /&gt;
= All AmigaOS components =&lt;br /&gt;
&lt;br /&gt;
AmigaOS is made of components that are needed as soon as the system starts or later when the user or the system needs them.&lt;br /&gt;
&lt;br /&gt;
== Kickstart modules ==&lt;br /&gt;
&lt;br /&gt;
These components are the heart of AmigaOS. Their duties is to do graphics, to handle discs or to handle all reads/writes to files. Also one of them is the AmigaOS kernel which is a kind of director handling the work of all other components.&lt;br /&gt;
These Kickstart modules are loaded at the beginning of the operating system boot process (read [[UserDoc:How_AmigaOS_Works#AmigaOS_boot_procedure|here]]). You can find all them in the &#039;&#039;&#039;Kickstart&#039;&#039;&#039; directory in the system volume. Here is a list:&lt;br /&gt;
&lt;br /&gt;
=== Mandatory modules ===&lt;br /&gt;
&lt;br /&gt;
The following modules are required in any AmigaOS system. Without one of these, the system will not start.&lt;br /&gt;
&lt;br /&gt;
* kernel - The kernel works like a conductor in an orchestra. Its job is to make everything works together. It creates processes, handle memory usage, defines the way other components will access peripherals...etc. Note that the AmigaOS kernel is not based on any other kernel. It is a self made kernel that works since 1983.&lt;br /&gt;
* loader - this component handles the loading of all other kickstart modules&lt;br /&gt;
* battclock.resource.kmod - this module handles reading/writing the battery backed up clock which is used on all computers to keep the date and time&lt;br /&gt;
* bootimage - this is the boot picture. It is displayed during the start sequence of AmigaOS&lt;br /&gt;
* bootmenu.kmod - this component handles the Early Startup Menu the use can use to define some settings before starting AmigaOS&lt;br /&gt;
* con-handler.kmod - it directs the read and write requests to the console window, to a serial AUX: device or any other supported interface&lt;br /&gt;
* console.device.kmod - it opens a window and reads/writes text to and from that window&lt;br /&gt;
* diskboot.kmod - handles the booting of AmigaOS from a supported disk&lt;br /&gt;
* diskboot.config - this is a text file experienced users can modify to change the boot behaviour of AmigaOS&lt;br /&gt;
* dos.library.kmod - this module is a collection of functions that any program can use to perform actions on disks, files and directories&lt;br /&gt;
* elf.library.kmod - handles the loading of executable programs&lt;br /&gt;
* env-handler.kmod - handles the read/writes of environment variables&lt;br /&gt;
* FileSystem.resource.kmod - handles the use of the different filesystems&lt;br /&gt;
* gadtools.library.kmod - collection of functions used to create all graphic objects like gadgets, sliders, menus...&lt;br /&gt;
* gameport.device.kmod - handles the read/writes of game pads and joysticks&lt;br /&gt;
* graphics.library.kmod - collection of functions used to draw graphic elements on the monitor&lt;br /&gt;
* hunk.library.kmod - set of functions to read a data stream into memory&lt;br /&gt;
* input.device.kmod - handles of input events like keyboard events or mouse clicks&lt;br /&gt;
* intuition.library.kmod - collection of functions to create and handle all graphic elements (screens, windows, the mouse pointer...)&lt;br /&gt;
* layers.library.kmod - set of functions to be used to handle different layers in graphic operations&lt;br /&gt;
* keyboard.device.kmod - driver for the keyboard&lt;br /&gt;
* keymap.library.kmod - functions to handle different keymaps&lt;br /&gt;
* newlib.library.kmod - collection of functions to perform memory operations (allocating memory, copying memory areas... )&lt;br /&gt;
* nonvolatile.library.kmod - provides a simple means for an application developer to manage nonvolatile storage&lt;br /&gt;
* nvram.resource.kmod - handles the read/writes to the EEPROM chip present on many AmigaOS computers&lt;br /&gt;
* PCIGraphics.card - driver that supports the use of different graphic cards&lt;br /&gt;
* ram-handler.kmod - functions that handles the &#039;&#039;&#039;Ram disk:&#039;&#039;&#039; special disk&lt;br /&gt;
* ramdrive.device.kmod - device that allows the usage of the ramdrive device &#039;&#039;&#039;RAD:&#039;&#039;&#039; disk&lt;br /&gt;
* ramlib.kmod - loads disk based libraries and devices for exec.library&lt;br /&gt;
* rtg.library - library of functions to perform lowlevel graphic operations on graphic cards&lt;br /&gt;
* shell.kmod - the AmigaOS command line interface&lt;br /&gt;
* strap.kmod - module that handles booting on different disk devices&lt;br /&gt;
* timer.device.kmod - driver to give access to timing functions&lt;br /&gt;
&lt;br /&gt;
=== Filesystem support ===&lt;br /&gt;
&lt;br /&gt;
These kickstart modules can be loaded or left aside. If you want to use a particular filesystem on your disk partitions, you need to load the corresponding filesystem module.&lt;br /&gt;
&lt;br /&gt;
* CDFileSystem - handles the CD-ROM disks with data stored in different formats: ISO9660, HFS...&lt;br /&gt;
* SmartFilesystem - allows the usage of partitions in SFS0 and SFS2 layouts&lt;br /&gt;
* JXFileSystem - allows the usage of partitions in JXFS layout&lt;br /&gt;
* FastFileSystem - allows the usage of partitions in FFS and FFS2 layouts&lt;br /&gt;
* diskcache.library.kmod - component required by the SmartFileSystem and JXFileSystem modules&lt;br /&gt;
&lt;br /&gt;
=== Hardware drivers ===&lt;br /&gt;
&lt;br /&gt;
==== Graphic cards drivers ====&lt;br /&gt;
&lt;br /&gt;
* 3dfxVoodoo.chip&lt;br /&gt;
* 3DLabsPermedia2.chip&lt;br /&gt;
* ATIRadeon.chip&lt;br /&gt;
* RadeonHD.chip&lt;br /&gt;
* siliconmotion502.chip&lt;br /&gt;
&lt;br /&gt;
==== Disk drivers ====&lt;br /&gt;
&lt;br /&gt;
Each of these drivers allow the use of disks connected to a disk controller. These files are named with the name of the controller they support. As an example, the &#039;&#039;&#039;sii3114ide.device.kmod&#039;&#039;&#039; allows to use disks connected on a &#039;&#039;&#039;Silicon Image SiI3114&#039;&#039;&#039; controller chip.&lt;br /&gt;
&lt;br /&gt;
* it8212ide.device.kmod&lt;br /&gt;
* lsi53c8xx.device.kmod&lt;br /&gt;
* sam460sata.device.kmod&lt;br /&gt;
* sii3112ide.device.kmod&lt;br /&gt;
* sii3512ide.device.kmod&lt;br /&gt;
* sii3114ide.device.kmod&lt;br /&gt;
* sii0680ide.device.kmod&lt;br /&gt;
* sii3132ide.device.kmod&lt;br /&gt;
&lt;br /&gt;
==== USB drivers ====&lt;br /&gt;
&lt;br /&gt;
* hub.usbfd&lt;br /&gt;
* usbsys.device&lt;br /&gt;
* usbresource.library&lt;br /&gt;
* ehci.usbhcd&lt;br /&gt;
* ohci.usbhcd&lt;br /&gt;
* uhci.usbhcd&lt;br /&gt;
* massstorage.usbfd&lt;br /&gt;
&lt;br /&gt;
==== Other drivers ====&lt;br /&gt;
&lt;br /&gt;
* bootkeyboard.usbfd - allows a USB keyboard to be used even before the USB stack is loaded&lt;br /&gt;
* bootmouse.usbfd - allows a USB mouse to be used even before the USB stack is loaded&lt;br /&gt;
* fpga.resource.kmod - allows to use the FPGA components which are present on some Amiga computers&lt;br /&gt;
* i2c.resource.kmod - allows to use the i2c interface present on some Amiga computers&lt;br /&gt;
* xena.resource.kmod - provides access to the Xena chip on the AmigaOne X1000&lt;br /&gt;
&lt;br /&gt;
=== Misc modules ===&lt;br /&gt;
&lt;br /&gt;
* petunia.library.kmod - this module contains the Just-In-Time emulator that allows AmigaOS to run programs made for the Motorola 68k processor&lt;br /&gt;
&lt;br /&gt;
== System components ==&lt;br /&gt;
&lt;br /&gt;
[[File:Workbench_directory_listing.png|frame|right|List of directories and files present at the root of any AmigaOS system]]&lt;br /&gt;
&lt;br /&gt;
Beside the kickstart modules, AmigaOS uses many different components that can be loaded only when used. These files are stored in different directories in the system volume.&lt;br /&gt;
Here is described a default AmigaOS installation.&lt;br /&gt;
&lt;br /&gt;
* C&lt;br /&gt;
This directory contains AmigaDOS &#039;&#039;&#039;C&#039;&#039;&#039;ommands&lt;br /&gt;
* Classes&lt;br /&gt;
contains different object elements easy to be used in any program: gadgets, requesters, graphic table, windows...&lt;br /&gt;
* Devs&lt;br /&gt;
contains definition for &#039;&#039;&#039;Dev&#039;&#039;&#039;ices&lt;br /&gt;
* Emulation&lt;br /&gt;
contains files used for the 68k emulation (though E-UAE)&lt;br /&gt;
* Fonts&lt;br /&gt;
contains various systems fonts&lt;br /&gt;
* Internet&lt;br /&gt;
contains a dialer to connect to Internet&lt;br /&gt;
* Kickstart&lt;br /&gt;
contains the kickstart modules&lt;br /&gt;
* L&lt;br /&gt;
contains hand&#039;&#039;&#039;l&#039;&#039;&#039;ers and filesystems&lt;br /&gt;
* Libs&lt;br /&gt;
contains dynamic &#039;&#039;&#039;Libr&#039;&#039;&#039;airies of functions&lt;br /&gt;
* Locale&lt;br /&gt;
contains all files used to localise the system (catalogs, keymaps...)&lt;br /&gt;
* MUI&lt;br /&gt;
contains the needed files for programs that use the MUI third party graphic interface&lt;br /&gt;
* [[Prefs]]&lt;br /&gt;
contains the preference programs used to customise AmigaOS&lt;br /&gt;
* S&lt;br /&gt;
contains the &#039;&#039;&#039;S&#039;&#039;&#039;cripts&lt;br /&gt;
* SObjs&lt;br /&gt;
contains .so shared object library files&lt;br /&gt;
* Storage&lt;br /&gt;
contains other optional files&lt;br /&gt;
* System&lt;br /&gt;
contains some programs used by the system itself (i.e. you don&#039;t need to run them yourself) or low-level programs like disk tools&lt;br /&gt;
* [[Utilities]]&lt;br /&gt;
contains several programs you can use to achieve some tasks on AmigaOS&lt;br /&gt;
&lt;br /&gt;
= Motorola 680x0 Emulators =&lt;br /&gt;
&lt;br /&gt;
For a long time Amigas have had the famous Motorola 680x0 processors as the central unit for execution. Unfortunately the time of the 680x0 series is passing in favor of other architectures. The new era of processors reached the Amiga some time ago, when expansion boards became available for extending the Classic systems with the raw power of a PowerPC processor.&lt;br /&gt;
&lt;br /&gt;
In the old operating system (AmigaOS 3.x) it was not possible to gain the full advantage of the new processors. The system itself and most of the applications required the original Motorola 680x0 processor. There was no 680x0 emulation available for the PowerPCs, so the 680x0 could not be &amp;quot;switched off&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Thus the new processors remained as a powerful, but mostly unused adjunct to the main 680x0 processor. &amp;quot;Native&amp;quot; PowerPC programs were rare, and every time a PowerPC program called the system, a so called &amp;quot;context switch&amp;quot; occurred between the 680x0 and PowerPC code, often causing a large performance penalty.&lt;br /&gt;
&lt;br /&gt;
The new Amiga platform is based on the PowerPC processor family, therefore the new version of the AmigaOS has to smooth the transition from the 680x0 series, which is achieved by emulating the old processor architecture. The operating system itself is written almost 100 percent for the PowerPC processors, but the 680x0 legacy applications require an emulated 680x0 processor. &lt;br /&gt;
&lt;br /&gt;
== Two 680x0 Emulators ==&lt;br /&gt;
&lt;br /&gt;
In version 4.0 of AmigaOS, two different emulators were implemented; one is the successor of BlackBox emulation, it is an interpretive emulator, thus the emulation speed is mediocre. On the other hand it has a very low &amp;quot;reaction time&amp;quot;, and is ideal for time critical parts, such as interrupts.&lt;br /&gt;
&lt;br /&gt;
The other is Petunia, the &amp;quot;JIT emulator&amp;quot;. A fast, but less compatible way of emulation of the legacy Motorola processors. It is intended mainly for emulating applications, and therefore, when execution of the application leaves the bounds of the application&#039;s code segment, emulation falls back to the interpretive method, where it does its job and returns to the JIT emulation again.&lt;br /&gt;
&lt;br /&gt;
Dynamic recompilation (also called just-in-time compilation or simply JIT compilation) is a technique of translating foreign processor machine code to native machine code, &amp;quot;on the fly&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This technique is common nowadays, commonly applied in JAVA virtual machines, and it is also used with success in several emulators. In dynamic recompilation there is the possibility of runtime optimization of the emulated code by collecting statistics of the execution process. Therefore (theoretically) the final executed code can be even faster than the original code on its original processor.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Emulated opcodes:&lt;br /&gt;
* all user and supervisor level opcodes of the Motorola 68040&lt;br /&gt;
* all FPU opcodes of the Motorola 68881/68882 &lt;br /&gt;
&lt;br /&gt;
AmigaOS claims only 68020/68881 compatibility to applications because this is the safest compatibility level, but both emulators are compatible with the machine code up to the level of 68040/060 processors.&lt;br /&gt;
&lt;br /&gt;
At compile time, a low level flag and branch control analysis allows on-the-fly optimizations of compiled code.&lt;br /&gt;
&lt;br /&gt;
== Removing the JIT Emulator ==&lt;br /&gt;
&lt;br /&gt;
Using the dynamic translation requires a lot more memory than the interpretive emulation. The translated code needs to be stored somewhere, not to mention the data collection tables.&lt;br /&gt;
&lt;br /&gt;
If speed is not as important as the memory consumption of the system, then the JIT emulator can be removed, leaving the job to the interpretive emulator.&lt;br /&gt;
&lt;br /&gt;
Thanks to the modular design of AmigaOS kickstart, all you need to do is edit the &amp;quot;Sys:Kickstart/Kicklayout&amp;quot; file, simply put a semicolon (;) at the beginning of the module line of Petunia.library.kmod. After rebooting the system from cold, the JIT emulator will not be reloaded. Make sure that you alter the appropriate configuration in the Kicklayout file, there may be several alternative configurations, with different names like &amp;quot;DefaultJIT&amp;quot;, or &amp;quot;DefaultNoJIT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Configuring the Emulators ==&lt;br /&gt;
&lt;br /&gt;
Petunia cooperates with a so called &amp;quot;black list&amp;quot;. By default Petunia emulates every 680x0 program or library that is loaded by DOS.library/LoadSeg function, but if an executable or library shows incompatibilities with Petunia, then it can be explicitly inhibited from the dynamic recompilation by specifying it in a list file.&lt;br /&gt;
&lt;br /&gt;
If an executable needs to be added to the list, then it can be done by extending the file &amp;quot;DEVS:applications.dos&amp;quot; with the &#039;&#039;&#039;Compatibility&#039;&#039;&#039; preferences program from the Prefs drawer of the system. Adding a program name to the list and checking it will prevent Petunia from emulating that program, and it will be interpreted instead by the built-in interpreter.&lt;br /&gt;
&lt;br /&gt;
Removing a program from the list or unchecking (thus allowing Petunia to emulate it again) can be done with the same preferences program.&lt;br /&gt;
&lt;br /&gt;
Please note: some programs consist of multiple executables (shared libraries, plugins). If you want to fully disable the translation of such programs, then every part must be added to the list.&lt;br /&gt;
&lt;br /&gt;
For example to disable UnArc fully, you would have to add all files from libs:xad and also xadmaster.library to the list. &lt;br /&gt;
&lt;br /&gt;
= AmigaOS boot procedure =&lt;br /&gt;
&lt;br /&gt;
Basically a computer with AmigaOS does the following when the power button is pushed:&lt;br /&gt;
&lt;br /&gt;
* [[File:Uboot.jpg|200px]]&lt;br /&gt;
the BIOS ([[UserDoc:BIOS|Uboot]] or [[UserDoc:BIOS|CFE]]) of the computer initialises the hardware: graphic card, USB ports... At this point, the monitor wakes up and the first information are displayed. This allows to see if hardware is correctly recognised. As an example you can see if a hard drive is correctly connected into the machine and your BIOS is correctly setup to make this drive useable.&lt;br /&gt;
* depending on how you setup the BIOS it will look on the harddisk to find the Second Level Booter (SLB). This program is stored on the first sectors of the disk. Whereas the BIOS does not know about AmigaOS disk structure, the SLB will be able to &#039;&#039;understand&#039;&#039; the AmigaOS partitions and files. In other words, it is the link between the BIOS and the rest of the boot procedure. Its goal is also to give you the ability to start several configurations present on the same drive.&lt;br /&gt;
* [[File:SLB.png|200px]]&lt;br /&gt;
the SLB will analyses all Amiga partitions on the disk it is installed on. It will read each [[UserDoc:kickstart_configuration|system configuration]] it finds on the partitions. It will show all available configurations for the user to select one to load.&lt;br /&gt;
The user can define many different kickstart configurations to choose from. Also both AmigaOS and Linux can be selected for boot.&lt;br /&gt;
* [[File:Kmods loading.png|200px]]&lt;br /&gt;
the SLB loads the kickstart files of the selected configuration and executes the &#039;&#039;&#039;Loader&#039;&#039;&#039; module&lt;br /&gt;
* &#039;&#039;&#039;Loader&#039;&#039;&#039; executes the kickstart modules (Exec, devices, libraries...)&lt;br /&gt;
* AmigaOS becomes alive displaying the AmigaOS boot picture on the monitor&lt;br /&gt;
* the AmigaDOS library executes the [[UserDoc:System_Scripts#startup-sequence|startup-sequence]] script found on the system volume&lt;br /&gt;
* the Startup-sequence will be executed and all commands it contains are executed. It means that starting from here the boot procedure is easy to follow and understand.&lt;br /&gt;
* the Workbench is started&lt;br /&gt;
&lt;br /&gt;
At this point the user can use his/her computer.&lt;br /&gt;
&lt;br /&gt;
= How to make a Bootable USB Memory Stick for AmigaOS 4.1 =&lt;br /&gt;
&lt;br /&gt;
By Julian Margetson (&amp;quot;Spectre660&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Prerequisites:&lt;br /&gt;
* USB memory stick of 2 GB or less in size.&lt;br /&gt;
* It is best to only have one USB mass storage device connected while you are creating your bootable USB memory stick.&lt;br /&gt;
* Plug the USB memory stick into a USB port on your machine.&lt;br /&gt;
* Note that the device will be formatted so make sure that you use an empty memory stick or one that does not contain any data that you need or backup the contents before you begin.&lt;br /&gt;
&lt;br /&gt;
Procedure:&lt;br /&gt;
# You use Media Toolbox in the System: drawer to prepare the USB stick. On starting Media Toolbox select &#039;&#039;usbdisk.device&#039;&#039; as the device to use.&lt;br /&gt;
# Make certain that you have selected usbdisk.device and not any other device.&lt;br /&gt;
# Click on &amp;quot;Start&amp;quot;&lt;br /&gt;
# You will see the usb mass storage unit connected in a list.&lt;br /&gt;
# Make sure that the Unit type displayed for the USB memory stick is &amp;quot;Removable hard disk&amp;quot;&lt;br /&gt;
# Select that Unit by clicking on it.&lt;br /&gt;
# The first thing that you need to do is to install the RDB onto the USB Memory Stick.&lt;br /&gt;
# Click on the  &amp;quot;Install&amp;quot; button.&lt;br /&gt;
# A window Labeled &amp;quot;RDB/disk geometry editing&amp;quot; comes up.&lt;br /&gt;
## Towards the bottom of the window is the &amp;quot;AmigaOne boot code (SLB)&amp;quot; section.&lt;br /&gt;
## Select the &amp;quot;Install&amp;quot; button .&lt;br /&gt;
## A file requester  &amp;quot;Select AmigaOne Boot Code&amp;quot; now comes  up with the Drawer choice defaulting to &amp;quot;l:&amp;quot;&lt;br /&gt;
## Select file &amp;quot;slb_v2&amp;quot;. &lt;br /&gt;
## Select Ok.&lt;br /&gt;
## You are now returned to the &amp;quot;RDB/disk geometry editing window&amp;quot;.&lt;br /&gt;
## Select &amp;quot;Ok-accept changes&amp;quot;.&lt;br /&gt;
# You are now returned to the display showing the attached USB unit.&lt;br /&gt;
# Select &amp;quot;Edit partitions and Filesystems&amp;quot;. You will now see the Window &#039;Editing partitions for disk&amp;quot;&lt;br /&gt;
# Select &amp;quot;Add partition&amp;quot;&lt;br /&gt;
# This defaults to using the whole device as a single partition.&lt;br /&gt;
# It is possible to use create more partitions but for this tutorial we will only use one.&lt;br /&gt;
# You now need to give the partition a unique name (e.g. USB0 or something that is different from any of the existing partitions on your hard drive). This is done by changing the default DH0 in the &amp;quot;Name&amp;quot; box.&lt;br /&gt;
# Now make sure that the Boxes &amp;quot;Automount&amp;quot; and &amp;quot;Bootable&amp;quot; are  selected and show the &amp;quot;Tick mark&amp;quot;.&lt;br /&gt;
# You need to set &amp;quot;Boot priority&amp;quot; to higher than the boot priority of your hard drive boot partition(s). This is done by increasing Boot priority by clicking on the &amp;quot;+&amp;quot; to the right of the &amp;quot;boot priority&amp;quot; box. Normally you can set the boot priority to 2 .&lt;br /&gt;
# Next it is time to select the file system to use.&lt;br /&gt;
# Select &amp;quot;Select filesystem/edit details&amp;quot;.&lt;br /&gt;
# The Window &amp;quot;Editing details for partition &#039;USB0&#039;&amp;quot;  ,or whatever partition name you used, comes up.&lt;br /&gt;
## Select the file system that you are going to use by selecting the pull down menu under &amp;quot;Filesystem chooser&amp;quot;.&lt;br /&gt;
## Only filesystems SFS/00 or SFS/02 will work for a bootable device.&lt;br /&gt;
## The option that gives the most flexibility at the moment is SFS/00 as a USB stick in this format can be read and written to using another compatible system in the event that you need to make modifications after it is created without a booting AmigaOS 4.1 machine.&lt;br /&gt;
## Next select Blocksize from the &amp;quot;Blocksize&amp;quot; pull down menu. 512 is the correct size to use.&lt;br /&gt;
## Now Select &amp;quot;Ok-accept changes&amp;quot;.&lt;br /&gt;
## Your are now returned to the &amp;quot;Edit partitions for disk&amp;quot; window.&lt;br /&gt;
## Again select &amp;quot;Ok-accept changes&amp;quot;&lt;br /&gt;
# You are now returned to the window showing the USB mass storage unit list.&lt;br /&gt;
# Select &amp;quot;Save to disk&amp;quot;&lt;br /&gt;
# A requester pops up with the options &amp;quot;Yes, Save.&amp;quot; or &amp;quot;No!&amp;quot;&lt;br /&gt;
# Select the &amp;quot;Yes, save.&amp;quot; option.&lt;br /&gt;
# You now close Media Toolbox by clicking on the close icon (X) on the left of the Media Toolbox window.&lt;br /&gt;
# This will give you a requester advising that you need to reboot the machine for the changes to take effect. At this point you need to remove the USB memory stick for the machine. If you do not then the Machine will attempt boot from it before it is formatted and the required Kickstart and AmigaOS 4.1 files are copied to it.&lt;br /&gt;
# Select &amp;quot;Yes, reboot NOW!&amp;quot;.&lt;br /&gt;
# Once you have rebooted connect your USB Memory Stick to a USB port.&lt;br /&gt;
# A disk icon &amp;quot;USB0:Uninitialized&amp;quot; (or whatever partition name you used) appears on Workbench.&lt;br /&gt;
# You now need to format the device.&lt;br /&gt;
# To format Select this Icon and go to the Workbench &amp;quot;Icons&amp;quot; menu .&lt;br /&gt;
# Select &amp;quot;Format Disk&amp;quot;&lt;br /&gt;
# You can give the USB Memory Stick a unique name and  select whether you want a Trashcan or not.&lt;br /&gt;
# You can use either a full Format or a  Quick Format. Full Format may take a few minutes.&lt;br /&gt;
# Once formatted the USB Memory Stick is ready for you to copy the required files from you hard drive or AmigaOS Install CD to it in order to boot AmigaOS 4.1 from it.&lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=UserDoc:How_AmigaOS_Works&amp;diff=7908</id>
		<title>UserDoc:How AmigaOS Works</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=UserDoc:How_AmigaOS_Works&amp;diff=7908"/>
		<updated>2015-05-29T06:11:48Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: /* Intuition */ grammar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As already mentioned, AmigaOS was a pioneer in the early days of personal computing in delivering sophistication that contemporary systems could only have dreamt of and pretended to offer. Today, AmigaOS continues to offer a straightforward elegance that seems to be overlooked in the development of other platforms. Thanks to the concepts behind AmigaOS, the system is easy to understand and to use by everyone.&lt;br /&gt;
&lt;br /&gt;
In this page we will explore all these concepts of AmigaOS. Also you will learn here the naming of all parts of the system.&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
AmigaOS is made of different components which are either mandatory (i.e.,  AmigaOS will not work without them) or components the user can choose to use or not. All these components can have one or mutiple interfaces a user or a developer can use to operate with the components and through them to control the operating system.&lt;br /&gt;
&lt;br /&gt;
= The most important components =&lt;br /&gt;
&lt;br /&gt;
== Exec, the AmigaOS kernel ==&lt;br /&gt;
&lt;br /&gt;
Exec is the kernel of AmigaOS. It is the component that pilots all other components. It is responsible for running programs, dealing with computer memory and managing low-level resources that programs may need. In other words, it organises everything to make the operating system run.&lt;br /&gt;
&lt;br /&gt;
It is made of different parts that cannot be moved outside the kernel: the scheduler, the memory pager and the 68k interpretive emulator.&lt;br /&gt;
&lt;br /&gt;
== AmigaDOS: the underlying system ==&lt;br /&gt;
&lt;br /&gt;
The word &amp;quot;DOS&amp;quot; was originally an acronym for &amp;quot;Disk Operating System&amp;quot;. Some say it should be &amp;quot;Disk Based Operating System&amp;quot; as it does a lot more than operate a disk and that it was really an operating system based (stored) on disks.  Some say it should be &amp;quot;Device Operating System&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The whole AmigaDOS system includes things such as:&lt;br /&gt;
&lt;br /&gt;
* A set of commands that can be used in the Shell window and elsewhere.&lt;br /&gt;
* A system for saving data to disk and retrieving it from disk.&lt;br /&gt;
* A system for filing data on disks.&lt;br /&gt;
* An interface for peripherals such as keyboards, monitors, printers, etc.&lt;br /&gt;
* A method of running programs&lt;br /&gt;
* A multitasking system for running more than one program at a time.&lt;br /&gt;
* etc. etc. etc.&lt;br /&gt;
&lt;br /&gt;
Read the [[AmigaDOS manual]] to understand and learn everything about AmigaDOS.&lt;br /&gt;
&lt;br /&gt;
== The Graphics library ==&lt;br /&gt;
&lt;br /&gt;
The Graphics library handles every low level graphic operation like designing pixels on the monitor, creating graphic elements (bobs, sprites) and also writing text output.&lt;br /&gt;
&lt;br /&gt;
== Intuition ==&lt;br /&gt;
&lt;br /&gt;
The Intuition library is responsible for every graphical object: windows, screens, gadgets, mouse pointers... It lies between any graphic program and the graphics library.&lt;br /&gt;
&lt;br /&gt;
== The Workbench ==&lt;br /&gt;
&lt;br /&gt;
The Workbench is the graphical place where you will manage your computer and all your files. The name was chosen because the user will use tools to create and work with the computer.&lt;br /&gt;
&lt;br /&gt;
[[File:Wb.png|320px]]&lt;br /&gt;
&lt;br /&gt;
== The Shell ==&lt;br /&gt;
&lt;br /&gt;
While some people prefer to control the operating system using their mouse, others prefer using the keyboard. The shell is a text based window when you can type commands to execute actions in the operating system. In the shell the commands will display the results of their execution.&lt;br /&gt;
&lt;br /&gt;
== ARexx - inter-program communication by scripting ==&lt;br /&gt;
&lt;br /&gt;
The ARexx scripting language can be used to operate the Workbench and the most important Amiga applications from a script containing ARexx commands. This is extremely useful to perform repetitive tasks or to do what the controlled application was not even design to do.&lt;br /&gt;
After a learning curve, everybody can use ARexx as it is built in the system and the scripts can be executed immediately like any other tool.&lt;br /&gt;
&lt;br /&gt;
= How is my data stored? =&lt;br /&gt;
== Files ==&lt;br /&gt;
=== Executable files ===&lt;br /&gt;
Programs you can start are stored in executable files. They contain binary code directly understandable by the computer. They are files with an executable bit, a flag that shows AmigaOS that such file will do something when started.&lt;br /&gt;
An example is a music player. When you start this executable, the player opens and you can start playing music files.&lt;br /&gt;
&lt;br /&gt;
AmigaOS can run two different kinds of executable files: the AmigaOS native programs made for the PowerPC processor and programs created for the Motorola 68k processors. The laters are executed inside an emulation that transcripts them into PowerPC code.&lt;br /&gt;
&lt;br /&gt;
==== Scripts ====&lt;br /&gt;
&lt;br /&gt;
Scripts are text files containing a list of commands. So they are not strictly executables like &#039;&#039;binary code&#039;&#039; files but they can be executed by AmigaOS like if they were.&lt;br /&gt;
This is the case with AmigaDOS and ARexx scripts. These files need to have the executable bit, and the script bit.&lt;br /&gt;
&lt;br /&gt;
=== Data files ===&lt;br /&gt;
Files that are not executable are data files. These contain some data that will be manipulated by programs. Some examples are a music file, a video file or a text document.&lt;br /&gt;
&lt;br /&gt;
== Directories/Drawers ==&lt;br /&gt;
In order to organise things a bit, files are not all of them in the same place. We create directories which like drawers of a cabinet will store different files of the same kind.&lt;br /&gt;
Often the name &#039;&#039;directory&#039;&#039; is used when talking about the directory which is stored on a disk. The graphical interface of AmigaOS being called the Workbench, directories are often called &#039;&#039;drawers&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Note: directories are often called &#039;&#039;folders&#039;&#039; on other systems.&lt;br /&gt;
&lt;br /&gt;
== Disks, partitions and volumes ==&lt;br /&gt;
=== Disks ===&lt;br /&gt;
Disks are storage medium you can purchase on a computer store. We use them to store our files. They can be internal hard disks, external ones or a USB disk drive.&lt;br /&gt;
&lt;br /&gt;
=== Partitions ===&lt;br /&gt;
A disk is often very big and many users prefer to make it more organised. This is done virtually splitting the disk into several smaller parts. This operation is known as creating partitions on a disk.&lt;br /&gt;
&lt;br /&gt;
[[File:Partitions.png|Small part of Media Toolbox showing different partitions on the harddisk]]&lt;br /&gt;
&lt;br /&gt;
On this screenshot you can see one harddisk with many partitions. Each color corresponds to a different filesystem which defines how data is stored. Also you can see a greyed area which is a blank area on the disk i.e. no partition is defined at this position.&lt;br /&gt;
&lt;br /&gt;
=== Volumes ===&lt;br /&gt;
A partition is a physical area on a disk. To access it with AmigaOS we could read the physical data off the partition but it&#039;s not an easy way. To make it easier AmigaOS uses the concept of volumes. These are virtual representations of a partition. The volumes have a name so AmigaOS and therefore the user can access all files/directories stored on it in a very practical way: just by using its name.&lt;br /&gt;
&lt;br /&gt;
= How to identify files/directories =&lt;br /&gt;
&lt;br /&gt;
== On the Workbench ==&lt;br /&gt;
&lt;br /&gt;
The Workbench being graphical, a lot of things are understandable just by looking at them. That&#039;s why icons are often enough to understand what kind of object it represents: a file, a directory, a disk...&lt;br /&gt;
&lt;br /&gt;
In case you have a doubt, just look at the information on an icon. The Workbench will tell you the type of the object. It is displayed next to its name.&lt;br /&gt;
&lt;br /&gt;
== In a shell ==&lt;br /&gt;
&lt;br /&gt;
In a shell the &#039;&#039;&#039;list&#039;&#039;&#039; command can be used to see if an object is a file or a directory.&lt;br /&gt;
&lt;br /&gt;
[[File:Files-dirs-in-shell.png|The &#039;&#039;&#039;list&#039;&#039;&#039; command shows a file of 925678 bytes and two directories]]&lt;br /&gt;
&lt;br /&gt;
A file will be displayed with its size, whereas a directory will be displayed with the text &#039;&#039;&#039;Dir&#039;&#039;&#039; next to it.&lt;br /&gt;
&lt;br /&gt;
Also, as you can see on the screenshot, the list command displays other characteristics on these 3 items: the protection bits and the date they were updated the last time. The command also sums up what it just listed.&lt;br /&gt;
&lt;br /&gt;
= All AmigaOS components =&lt;br /&gt;
&lt;br /&gt;
AmigaOS is made of components that are needed as soon as the system starts or later when the user or the system needs them.&lt;br /&gt;
&lt;br /&gt;
== Kickstart modules ==&lt;br /&gt;
&lt;br /&gt;
These components are the heart of AmigaOS. Their duties is to do graphics, to handle discs or to handle all reads/writes to files. Also one of them is the AmigaOS kernel which is a kind of director handling the work of all other components.&lt;br /&gt;
These Kickstart modules are loaded at the beginning of the operating system boot process (read [[UserDoc:How_AmigaOS_Works#AmigaOS_boot_procedure|here]]). You can find all them in the &#039;&#039;&#039;Kickstart&#039;&#039;&#039; directory in the system volume. Here is a list:&lt;br /&gt;
&lt;br /&gt;
=== Mandatory modules ===&lt;br /&gt;
&lt;br /&gt;
The following modules are required in any AmigaOS system. Without one of these, the system will not start.&lt;br /&gt;
&lt;br /&gt;
* kernel - The kernel works like a conductor in an orchestra. Its job is to make everything works together. It creates processes, handle memory usage, defines the way other components will access peripherals...etc. Note that the AmigaOS kernel is not based on any other kernel. It is a self made kernel that works since 1983.&lt;br /&gt;
* loader - this component handles the loading of all other kickstart modules&lt;br /&gt;
* battclock.resource.kmod - this module handles reading/writing the battery backed up clock which is used on all computers to keep the date and time&lt;br /&gt;
* bootimage - this is the boot picture. It is displayed during the start sequence of AmigaOS&lt;br /&gt;
* bootmenu.kmod - this component handles the Early Startup Menu the use can use to define some settings before starting AmigaOS&lt;br /&gt;
* con-handler.kmod - it directs the read and write requests to the console window, to a serial AUX: device or any other supported interface&lt;br /&gt;
* console.device.kmod - it opens a window and reads/writes text to and from that window&lt;br /&gt;
* diskboot.kmod - handles the booting of AmigaOS from a supported disk&lt;br /&gt;
* diskboot.config - this is a text file experienced users can modify to change the boot behaviour of AmigaOS&lt;br /&gt;
* dos.library.kmod - this module is a collection of functions that any program can use to perform actions on disks, files and directories&lt;br /&gt;
* elf.library.kmod - handles the loading of executable programs&lt;br /&gt;
* env-handler.kmod - handles the read/writes of environment variables&lt;br /&gt;
* FileSystem.resource.kmod - handles the use of the different filesystems&lt;br /&gt;
* gadtools.library.kmod - collection of functions used to create all graphic objects like gadgets, sliders, menus...&lt;br /&gt;
* gameport.device.kmod - handles the read/writes of game pads and joysticks&lt;br /&gt;
* graphics.library.kmod - collection of functions used to draw graphic elements on the monitor&lt;br /&gt;
* hunk.library.kmod - set of functions to read a data stream into memory&lt;br /&gt;
* input.device.kmod - handles of input events like keyboard events or mouse clicks&lt;br /&gt;
* intuition.library.kmod - collection of functions to create and handle all graphic elements (screens, windows, the mouse pointer...)&lt;br /&gt;
* layers.library.kmod - set of functions to be used to handle different layers in graphic operations&lt;br /&gt;
* keyboard.device.kmod - driver for the keyboard&lt;br /&gt;
* keymap.library.kmod - functions to handle different keymaps&lt;br /&gt;
* newlib.library.kmod - collection of functions to perform memory operations (allocating memory, copying memory areas... )&lt;br /&gt;
* nonvolatile.library.kmod - provides a simple means for an application developer to manage nonvolatile storage&lt;br /&gt;
* nvram.resource.kmod - handles the read/writes to the EEPROM chip present on many AmigaOS computers&lt;br /&gt;
* PCIGraphics.card - driver that supports the use of different graphic cards&lt;br /&gt;
* ram-handler.kmod - functions that handles the &#039;&#039;&#039;Ram disk:&#039;&#039;&#039; special disk&lt;br /&gt;
* ramdrive.device.kmod - device that allows the usage of the ramdrive device &#039;&#039;&#039;RAD:&#039;&#039;&#039; disk&lt;br /&gt;
* ramlib.kmod - loads disk based libraries and devices for exec.library&lt;br /&gt;
* rtg.library - library of functions to perform lowlevel graphic operations on graphic cards&lt;br /&gt;
* shell.kmod - the AmigaOS command line interface&lt;br /&gt;
* strap.kmod - module that handles booting on different disk devices&lt;br /&gt;
* timer.device.kmod - driver to give access to timing functions&lt;br /&gt;
&lt;br /&gt;
=== Filesystem support ===&lt;br /&gt;
&lt;br /&gt;
These kickstart modules can be loaded or left aside. If you want to use a particular filesystem on your disk partitions, you need to load the corresponding filesystem module.&lt;br /&gt;
&lt;br /&gt;
* CDFileSystem - handles the CD-ROM disks with data stored in different formats: ISO9660, HFS...&lt;br /&gt;
* SmartFilesystem - allows the usage of partitions in SFS0 and SFS2 layouts&lt;br /&gt;
* JXFileSystem - allows the usage of partitions in JXFS layout&lt;br /&gt;
* FastFileSystem - allows the usage of partitions in FFS and FFS2 layouts&lt;br /&gt;
* diskcache.library.kmod - component required by the SmartFileSystem and JXFileSystem modules&lt;br /&gt;
&lt;br /&gt;
=== Hardware drivers ===&lt;br /&gt;
&lt;br /&gt;
==== Graphic cards drivers ====&lt;br /&gt;
&lt;br /&gt;
* 3dfxVoodoo.chip&lt;br /&gt;
* 3DLabsPermedia2.chip&lt;br /&gt;
* ATIRadeon.chip&lt;br /&gt;
* RadeonHD.chip&lt;br /&gt;
* siliconmotion502.chip&lt;br /&gt;
&lt;br /&gt;
==== Disk drivers ====&lt;br /&gt;
&lt;br /&gt;
Each of these drivers allow the use of disks connected to a disk controller. These files are named with the name of the controller they support. As an example, the &#039;&#039;&#039;sii3114ide.device.kmod&#039;&#039;&#039; allows to use disks connected on a &#039;&#039;&#039;Silicon Image SiI3114&#039;&#039;&#039; controller chip.&lt;br /&gt;
&lt;br /&gt;
* it8212ide.device.kmod&lt;br /&gt;
* lsi53c8xx.device.kmod&lt;br /&gt;
* sam460sata.device.kmod&lt;br /&gt;
* sii3112ide.device.kmod&lt;br /&gt;
* sii3512ide.device.kmod&lt;br /&gt;
* sii3114ide.device.kmod&lt;br /&gt;
* sii0680ide.device.kmod&lt;br /&gt;
* sii3132ide.device.kmod&lt;br /&gt;
&lt;br /&gt;
==== USB drivers ====&lt;br /&gt;
&lt;br /&gt;
* hub.usbfd&lt;br /&gt;
* usbsys.device&lt;br /&gt;
* usbresource.library&lt;br /&gt;
* ehci.usbhcd&lt;br /&gt;
* ohci.usbhcd&lt;br /&gt;
* uhci.usbhcd&lt;br /&gt;
* massstorage.usbfd&lt;br /&gt;
&lt;br /&gt;
==== Other drivers ====&lt;br /&gt;
&lt;br /&gt;
* bootkeyboard.usbfd - allows a USB keyboard to be used even before the USB stack is loaded&lt;br /&gt;
* bootmouse.usbfd - allows a USB mouse to be used even before the USB stack is loaded&lt;br /&gt;
* fpga.resource.kmod - allows to use the FPGA components which are present on some Amiga computers&lt;br /&gt;
* i2c.resource.kmod - allows to use the i2c interface present on some Amiga computers&lt;br /&gt;
* xena.resource.kmod - provides access to the Xena chip on the AmigaOne X1000&lt;br /&gt;
&lt;br /&gt;
=== Misc modules ===&lt;br /&gt;
&lt;br /&gt;
* petunia.library.kmod - this module contains the Just-In-Time emulator that allows AmigaOS to run programs made for the Motorola 68k processor&lt;br /&gt;
&lt;br /&gt;
== System components ==&lt;br /&gt;
&lt;br /&gt;
[[File:Workbench_directory_listing.png|frame|right|List of directories and files present at the root of any AmigaOS system]]&lt;br /&gt;
&lt;br /&gt;
Beside the kickstart modules, AmigaOS uses many different components that can be loaded only when used. These files are stored in different directories in the system volume.&lt;br /&gt;
Here is described a default AmigaOS installation.&lt;br /&gt;
&lt;br /&gt;
* C&lt;br /&gt;
This directory contains AmigaDOS &#039;&#039;&#039;C&#039;&#039;&#039;ommands&lt;br /&gt;
* Classes&lt;br /&gt;
contains different object elements easy to be used in any program: gadgets, requesters, graphic table, windows...&lt;br /&gt;
* Devs&lt;br /&gt;
contains definition for &#039;&#039;&#039;Dev&#039;&#039;&#039;ices&lt;br /&gt;
* Emulation&lt;br /&gt;
contains files used for the 68k emulation (though E-UAE)&lt;br /&gt;
* Fonts&lt;br /&gt;
contains various systems fonts&lt;br /&gt;
* Internet&lt;br /&gt;
contains a dialer to connect to Internet&lt;br /&gt;
* Kickstart&lt;br /&gt;
contains the kickstart modules&lt;br /&gt;
* L&lt;br /&gt;
contains hand&#039;&#039;&#039;l&#039;&#039;&#039;ers and filesystems&lt;br /&gt;
* Libs&lt;br /&gt;
contains dynamic &#039;&#039;&#039;Libr&#039;&#039;&#039;airies of functions&lt;br /&gt;
* Locale&lt;br /&gt;
contains all files used to localise the system (catalogs, keymaps...)&lt;br /&gt;
* MUI&lt;br /&gt;
contains the needed files for programs that use the MUI third party graphic interface&lt;br /&gt;
* [[Prefs]]&lt;br /&gt;
contains the preference programs used to customise AmigaOS&lt;br /&gt;
* S&lt;br /&gt;
contains the &#039;&#039;&#039;S&#039;&#039;&#039;cripts&lt;br /&gt;
* SObjs&lt;br /&gt;
contains .so shared object library files&lt;br /&gt;
* Storage&lt;br /&gt;
contains other optional files&lt;br /&gt;
* System&lt;br /&gt;
contains some programs used by the system itself (i.e. you don&#039;t need to run them yourself) or low-level programs like disk tools&lt;br /&gt;
* [[Utilities]]&lt;br /&gt;
contains several programs you can use to achieve some tasks on AmigaOS&lt;br /&gt;
&lt;br /&gt;
= Motorola 680x0 Emulators =&lt;br /&gt;
&lt;br /&gt;
For a long time Amigas have had the famous Motorola 680x0 processors as the central unit for execution. Unfortunately the time of the 680x0 series is passing in favor of other architectures. The new era of processors reached the Amiga some time ago, when expansion boards became available for extending the Classic systems with the raw power of a PowerPC processor.&lt;br /&gt;
&lt;br /&gt;
In the old operating system (AmigaOS 3.x) it was not possible to gain the full advantage of the new processors. The system itself and most of the applications required the original Motorola 680x0 processor. There was no 680x0 emulation available for the PowerPCs, so the 680x0 could not be &amp;quot;switched off&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Thus the new processors remained as a powerful, but mostly unused adjunct to the main 680x0 processor. &amp;quot;Native&amp;quot; PowerPC programs were rare, and every time a PowerPC program called the system, a so called &amp;quot;context switch&amp;quot; occurred between the 680x0 and PowerPC code, often causing a large performance penalty.&lt;br /&gt;
&lt;br /&gt;
The new Amiga platform is based on the PowerPC processor family, therefore the new version of the AmigaOS has to smooth the transition from the 680x0 series, which is achieved by emulating the old processor architecture. The operating system itself is written almost 100 percent for the PowerPC processors, but the 680x0 legacy applications require an emulated 680x0 processor. &lt;br /&gt;
&lt;br /&gt;
== Two 680x0 Emulators ==&lt;br /&gt;
&lt;br /&gt;
In version 4.0 of AmigaOS, two different emulators were implemented; one is the successor of BlackBox emulation, it is an interpretive emulator, thus the emulation speed is mediocre. On the other hand it has a very low &amp;quot;reaction time&amp;quot;, and is ideal for time critical parts, such as interrupts.&lt;br /&gt;
&lt;br /&gt;
The other is Petunia, the &amp;quot;JIT emulator&amp;quot;. A fast, but less compatible way of emulation of the legacy Motorola processors. It is intended mainly for emulating applications, and therefore, when execution of the application leaves the bounds of the application&#039;s code segment, emulation falls back to the interpretive method, where it does its job and returns to the JIT emulation again.&lt;br /&gt;
&lt;br /&gt;
Dynamic recompilation (also called just-in-time compilation or simply JIT compilation) is a technique of translating foreign processor machine code to native machine code, &amp;quot;on the fly&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This technique is common nowadays, commonly applied in JAVA virtual machines, and it is also used with success in several emulators. In dynamic recompilation there is the possibility of runtime optimization of the emulated code by collecting statistics of the execution process. Therefore (theoretically) the final executed code can be even faster than the original code on its original processor.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Emulated opcodes:&lt;br /&gt;
* all user and supervisor level opcodes of the Motorola 68040&lt;br /&gt;
* all FPU opcodes of the Motorola 68881/68882 &lt;br /&gt;
&lt;br /&gt;
AmigaOS claims only 68020/68881 compatibility to applications because this is the safest compatibility level, but both emulators are compatible with the machine code up to the level of 68040/060 processors.&lt;br /&gt;
&lt;br /&gt;
At compile time, a low level flag and branch control analysis allows on-the-fly optimizations of compiled code.&lt;br /&gt;
&lt;br /&gt;
== Removing the JIT Emulator ==&lt;br /&gt;
&lt;br /&gt;
Using the dynamic translation requires a lot more memory than the interpretive emulation. The translated code needs to be stored somewhere, not to mention the data collection tables.&lt;br /&gt;
&lt;br /&gt;
If speed is not as important as the memory consumption of the system, then the JIT emulator can be removed, leaving the job to the interpretive emulator.&lt;br /&gt;
&lt;br /&gt;
Thanks to the modular design of AmigaOS kickstart, all you need to do is edit the &amp;quot;Sys:Kickstart/Kicklayout&amp;quot; file, simply put a semicolon (;) at the beginning of the module line of Petunia.library.kmod. After rebooting the system from cold, the JIT emulator will not be reloaded. Make sure that you alter the appropriate configuration in the Kicklayout file, there may be several alternative configurations, with different names like &amp;quot;DefaultJIT&amp;quot;, or &amp;quot;DefaultNoJIT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Configuring the Emulators ==&lt;br /&gt;
&lt;br /&gt;
Petunia cooperates with a so called &amp;quot;black list&amp;quot;. By default Petunia emulates every 680x0 program or library that is loaded by DOS.library/LoadSeg function, but if an executable or library shows incompatibilities with Petunia, then it can be explicitly inhibited from the dynamic recompilation by specifying it in a list file.&lt;br /&gt;
&lt;br /&gt;
If an executable needs to be added to the list, then it can be done by extending the file &amp;quot;DEVS:applications.dos&amp;quot; with the &#039;&#039;&#039;Compatibility&#039;&#039;&#039; preferences program from the Prefs drawer of the system. Adding a program name to the list and checking it will prevent Petunia from emulating that program, and it will be interpreted instead by the built-in interpreter.&lt;br /&gt;
&lt;br /&gt;
Removing a program from the list or unchecking (thus allowing Petunia to emulate it again) can be done with the same preferences program.&lt;br /&gt;
&lt;br /&gt;
Please note: some programs consist of multiple executables (shared libraries, plugins). If you want to fully disable the translation of such programs, then every part must be added to the list.&lt;br /&gt;
&lt;br /&gt;
For example to disable UnArc fully, you would have to add all files from libs:xad and also xadmaster.library to the list. &lt;br /&gt;
&lt;br /&gt;
= AmigaOS boot procedure =&lt;br /&gt;
&lt;br /&gt;
Basically a computer with AmigaOS does the following when the power button is pushed:&lt;br /&gt;
&lt;br /&gt;
* [[File:Uboot.jpg|200px]]&lt;br /&gt;
the BIOS ([[UserDoc:BIOS|Uboot]] or [[UserDoc:BIOS|CFE]]) of the computer initialises the hardware: graphic card, USB ports... At this point, the monitor wakes up and the first information are displayed. This allows to see if hardware is correctly recognised. As an example you can see if a hard drive is correctly connected into the machine and your BIOS is correctly setup to make this drive useable.&lt;br /&gt;
* depending on how you setup the BIOS it will look on the harddisk to find the Second Level Booter (SLB). This program is stored on the first sectors of the disk. Whereas the BIOS does not know about AmigaOS disk structure, the SLB will be able to &#039;&#039;understand&#039;&#039; the AmigaOS partitions and files. In other words, it is the link between the BIOS and the rest of the boot procedure. Its goal is also to give you the ability to start several configurations present on the same drive.&lt;br /&gt;
* [[File:SLB.png|200px]]&lt;br /&gt;
the SLB will analyses all Amiga partitions on the disk it is installed on. It will read each [[UserDoc:kickstart_configuration|system configuration]] it finds on the partitions. It will show all available configurations for the user to select one to load.&lt;br /&gt;
The user can define many different kickstart configurations to choose from. Also both AmigaOS and Linux can be selected for boot.&lt;br /&gt;
* [[File:Kmods loading.png|200px]]&lt;br /&gt;
the SLB loads the kickstart files of the selected configuration and executes the &#039;&#039;&#039;Loader&#039;&#039;&#039; module&lt;br /&gt;
* &#039;&#039;&#039;Loader&#039;&#039;&#039; executes the kickstart modules (Exec, devices, libraries...)&lt;br /&gt;
* AmigaOS becomes alive displaying the AmigaOS boot picture on the monitor&lt;br /&gt;
* the AmigaDOS library executes the [[UserDoc:System_Scripts#startup-sequence|startup-sequence]] script found on the system volume&lt;br /&gt;
* the Startup-sequence will be executed and all commands it contains are executed. It means that starting from here the boot procedure is easy to follow and understand.&lt;br /&gt;
* the Workbench is started&lt;br /&gt;
&lt;br /&gt;
At this point the user can use his/her computer.&lt;br /&gt;
&lt;br /&gt;
= How to make a Bootable USB Memory Stick for AmigaOS 4.1 =&lt;br /&gt;
&lt;br /&gt;
By Julian Margetson (&amp;quot;Spectre660&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Prerequisites:&lt;br /&gt;
* USB memory stick of 2 GB or less in size.&lt;br /&gt;
* It is best to only have one USB mass storage device connected while you are creating your bootable USB memory stick.&lt;br /&gt;
* Plug the USB memory stick into a USB port on your machine.&lt;br /&gt;
* Note that the device will be formatted so make sure that you use an empty memory stick or one that does not contain any data that you need or backup the contents before you begin.&lt;br /&gt;
&lt;br /&gt;
Procedure:&lt;br /&gt;
# You use Media Toolbox in the System: drawer to prepare the USB stick. On starting Media Toolbox select &#039;&#039;usbdisk.device&#039;&#039; as the device to use.&lt;br /&gt;
# Make certain that you have selected usbdisk.device and not any other device.&lt;br /&gt;
# Click on &amp;quot;Start&amp;quot;&lt;br /&gt;
# You will see the usb mass storage unit connected in a list.&lt;br /&gt;
# Make sure that the Unit type displayed for the USB memory stick is &amp;quot;Removable hard disk&amp;quot;&lt;br /&gt;
# Select that Unit by clicking on it.&lt;br /&gt;
# The first thing that you need to do is to install the RDB onto the USB Memory Stick.&lt;br /&gt;
# Click on the  &amp;quot;Install&amp;quot; button.&lt;br /&gt;
# A window Labeled &amp;quot;RDB/disk geometry editing&amp;quot; comes up.&lt;br /&gt;
## Towards the bottom of the window is the &amp;quot;AmigaOne boot code (SLB)&amp;quot; section.&lt;br /&gt;
## Select the &amp;quot;Install&amp;quot; button .&lt;br /&gt;
## A file requester  &amp;quot;Select AmigaOne Boot Code&amp;quot; now comes  up with the Drawer choice defaulting to &amp;quot;l:&amp;quot;&lt;br /&gt;
## Select file &amp;quot;slb_v2&amp;quot;. &lt;br /&gt;
## Select Ok.&lt;br /&gt;
## You are now returned to the &amp;quot;RDB/disk geometry editing window&amp;quot;.&lt;br /&gt;
## Select &amp;quot;Ok-accept changes&amp;quot;.&lt;br /&gt;
# You are now returned to the display showing the attached USB unit.&lt;br /&gt;
# Select &amp;quot;Edit partitions and Filesystems&amp;quot;. You will now see the Window &#039;Editing partitions for disk&amp;quot;&lt;br /&gt;
# Select &amp;quot;Add partition&amp;quot;&lt;br /&gt;
# This defaults to using the whole device as a single partition.&lt;br /&gt;
# It is possible to use create more partitions but for this tutorial we will only use one.&lt;br /&gt;
# You now need to give the partition a unique name (e.g. USB0 or something that is different from any of the existing partitions on your hard drive). This is done by changing the default DH0 in the &amp;quot;Name&amp;quot; box.&lt;br /&gt;
# Now make sure that the Boxes &amp;quot;Automount&amp;quot; and &amp;quot;Bootable&amp;quot; are  selected and show the &amp;quot;Tick mark&amp;quot;.&lt;br /&gt;
# You need to set &amp;quot;Boot priority&amp;quot; to higher than the boot priority of your hard drive boot partition(s). This is done by increasing Boot priority by clicking on the &amp;quot;+&amp;quot; to the right of the &amp;quot;boot priority&amp;quot; box. Normally you can set the boot priority to 2 .&lt;br /&gt;
# Next it is time to select the file system to use.&lt;br /&gt;
# Select &amp;quot;Select filesystem/edit details&amp;quot;.&lt;br /&gt;
# The Window &amp;quot;Editing details for partition &#039;USB0&#039;&amp;quot;  ,or whatever partition name you used, comes up.&lt;br /&gt;
## Select the file system that you are going to use by selecting the pull down menu under &amp;quot;Filesystem chooser&amp;quot;.&lt;br /&gt;
## Only filesystems SFS/00 or SFS/02 will work for a bootable device.&lt;br /&gt;
## The option that gives the most flexibility at the moment is SFS/00 as a USB stick in this format can be read and written to using another compatible system in the event that you need to make modifications after it is created without a booting AmigaOS 4.1 machine.&lt;br /&gt;
## Next select Blocksize from the &amp;quot;Blocksize&amp;quot; pull down menu. 512 is the correct size to use.&lt;br /&gt;
## Now Select &amp;quot;Ok-accept changes&amp;quot;.&lt;br /&gt;
## Your are now returned to the &amp;quot;Edit partitions for disk&amp;quot; window.&lt;br /&gt;
## Again select &amp;quot;Ok-accept changes&amp;quot;&lt;br /&gt;
# You are now returned to the window showing the USB mass storage unit list.&lt;br /&gt;
# Select &amp;quot;Save to disk&amp;quot;&lt;br /&gt;
# A requester pops up with the options &amp;quot;Yes, Save.&amp;quot; or &amp;quot;No!&amp;quot;&lt;br /&gt;
# Select the &amp;quot;Yes, save.&amp;quot; option.&lt;br /&gt;
# You now close Media Toolbox by clicking on the close icon (X) on the left of the Media Toolbox window.&lt;br /&gt;
# This will give you a requester advising that you need to reboot the machine for the changes to take effect. At this point you need to remove the USB memory stick for the machine. If you do not then the Machine will attempt boot from it before it is formatted and the required Kickstart and AmigaOS 4.1 files are copied to it.&lt;br /&gt;
# Select &amp;quot;Yes, reboot NOW!&amp;quot;.&lt;br /&gt;
# Once you have rebooted connect your USB Memory Stick to a USB port.&lt;br /&gt;
# A disk icon &amp;quot;USB0:Uninitialized&amp;quot; (or whatever partition name you used) appears on Workbench.&lt;br /&gt;
# You now need to format the device.&lt;br /&gt;
# To format Select this Icon and go to the Workbench &amp;quot;Icons&amp;quot; menu .&lt;br /&gt;
# Select &amp;quot;Format Disk&amp;quot;&lt;br /&gt;
# You can give the USB Memory Stick a unique name and  select whether you want a Trashcan or not.&lt;br /&gt;
# You can use either a full Format or a  Quick Format. Full Format may take a few minutes.&lt;br /&gt;
# Once formatted the USB Memory Stick is ready for you to copy the required files from you hard drive or AmigaOS Install CD to it in order to boot AmigaOS 4.1 from it.&lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=UserDoc:How_AmigaOS_Works&amp;diff=7907</id>
		<title>UserDoc:How AmigaOS Works</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=UserDoc:How_AmigaOS_Works&amp;diff=7907"/>
		<updated>2015-05-29T06:10:51Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: /* The Graphics library */ corrected word case&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As already mentioned, AmigaOS was a pioneer in the early days of personal computing in delivering sophistication that contemporary systems could only have dreamt of and pretended to offer. Today, AmigaOS continues to offer a straightforward elegance that seems to be overlooked in the development of other platforms. Thanks to the concepts behind AmigaOS, the system is easy to understand and to use by everyone.&lt;br /&gt;
&lt;br /&gt;
In this page we will explore all these concepts of AmigaOS. Also you will learn here the naming of all parts of the system.&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
AmigaOS is made of different components which are either mandatory (i.e.,  AmigaOS will not work without them) or components the user can choose to use or not. All these components can have one or mutiple interfaces a user or a developer can use to operate with the components and through them to control the operating system.&lt;br /&gt;
&lt;br /&gt;
= The most important components =&lt;br /&gt;
&lt;br /&gt;
== Exec, the AmigaOS kernel ==&lt;br /&gt;
&lt;br /&gt;
Exec is the kernel of AmigaOS. It is the component that pilots all other components. It is responsible for running programs, dealing with computer memory and managing low-level resources that programs may need. In other words, it organises everything to make the operating system run.&lt;br /&gt;
&lt;br /&gt;
It is made of different parts that cannot be moved outside the kernel: the scheduler, the memory pager and the 68k interpretive emulator.&lt;br /&gt;
&lt;br /&gt;
== AmigaDOS: the underlying system ==&lt;br /&gt;
&lt;br /&gt;
The word &amp;quot;DOS&amp;quot; was originally an acronym for &amp;quot;Disk Operating System&amp;quot;. Some say it should be &amp;quot;Disk Based Operating System&amp;quot; as it does a lot more than operate a disk and that it was really an operating system based (stored) on disks.  Some say it should be &amp;quot;Device Operating System&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The whole AmigaDOS system includes things such as:&lt;br /&gt;
&lt;br /&gt;
* A set of commands that can be used in the Shell window and elsewhere.&lt;br /&gt;
* A system for saving data to disk and retrieving it from disk.&lt;br /&gt;
* A system for filing data on disks.&lt;br /&gt;
* An interface for peripherals such as keyboards, monitors, printers, etc.&lt;br /&gt;
* A method of running programs&lt;br /&gt;
* A multitasking system for running more than one program at a time.&lt;br /&gt;
* etc. etc. etc.&lt;br /&gt;
&lt;br /&gt;
Read the [[AmigaDOS manual]] to understand and learn everything about AmigaDOS.&lt;br /&gt;
&lt;br /&gt;
== The Graphics library ==&lt;br /&gt;
&lt;br /&gt;
The Graphics library handles every low level graphic operation like designing pixels on the monitor, creating graphic elements (bobs, sprites) and also writing text output.&lt;br /&gt;
&lt;br /&gt;
== Intuition ==&lt;br /&gt;
&lt;br /&gt;
The Intuition library is responsible for every graphical objects: windows, screens, gadgets, mouse pointers... It lays between any graphic program and the graphics library.&lt;br /&gt;
&lt;br /&gt;
== The Workbench ==&lt;br /&gt;
&lt;br /&gt;
The Workbench is the graphical place where you will manage your computer and all your files. The name was chosen because the user will use tools to create and work with the computer.&lt;br /&gt;
&lt;br /&gt;
[[File:Wb.png|320px]]&lt;br /&gt;
&lt;br /&gt;
== The Shell ==&lt;br /&gt;
&lt;br /&gt;
While some people prefer to control the operating system using their mouse, others prefer using the keyboard. The shell is a text based window when you can type commands to execute actions in the operating system. In the shell the commands will display the results of their execution.&lt;br /&gt;
&lt;br /&gt;
== ARexx - inter-program communication by scripting ==&lt;br /&gt;
&lt;br /&gt;
The ARexx scripting language can be used to operate the Workbench and the most important Amiga applications from a script containing ARexx commands. This is extremely useful to perform repetitive tasks or to do what the controlled application was not even design to do.&lt;br /&gt;
After a learning curve, everybody can use ARexx as it is built in the system and the scripts can be executed immediately like any other tool.&lt;br /&gt;
&lt;br /&gt;
= How is my data stored? =&lt;br /&gt;
== Files ==&lt;br /&gt;
=== Executable files ===&lt;br /&gt;
Programs you can start are stored in executable files. They contain binary code directly understandable by the computer. They are files with an executable bit, a flag that shows AmigaOS that such file will do something when started.&lt;br /&gt;
An example is a music player. When you start this executable, the player opens and you can start playing music files.&lt;br /&gt;
&lt;br /&gt;
AmigaOS can run two different kinds of executable files: the AmigaOS native programs made for the PowerPC processor and programs created for the Motorola 68k processors. The laters are executed inside an emulation that transcripts them into PowerPC code.&lt;br /&gt;
&lt;br /&gt;
==== Scripts ====&lt;br /&gt;
&lt;br /&gt;
Scripts are text files containing a list of commands. So they are not strictly executables like &#039;&#039;binary code&#039;&#039; files but they can be executed by AmigaOS like if they were.&lt;br /&gt;
This is the case with AmigaDOS and ARexx scripts. These files need to have the executable bit, and the script bit.&lt;br /&gt;
&lt;br /&gt;
=== Data files ===&lt;br /&gt;
Files that are not executable are data files. These contain some data that will be manipulated by programs. Some examples are a music file, a video file or a text document.&lt;br /&gt;
&lt;br /&gt;
== Directories/Drawers ==&lt;br /&gt;
In order to organise things a bit, files are not all of them in the same place. We create directories which like drawers of a cabinet will store different files of the same kind.&lt;br /&gt;
Often the name &#039;&#039;directory&#039;&#039; is used when talking about the directory which is stored on a disk. The graphical interface of AmigaOS being called the Workbench, directories are often called &#039;&#039;drawers&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Note: directories are often called &#039;&#039;folders&#039;&#039; on other systems.&lt;br /&gt;
&lt;br /&gt;
== Disks, partitions and volumes ==&lt;br /&gt;
=== Disks ===&lt;br /&gt;
Disks are storage medium you can purchase on a computer store. We use them to store our files. They can be internal hard disks, external ones or a USB disk drive.&lt;br /&gt;
&lt;br /&gt;
=== Partitions ===&lt;br /&gt;
A disk is often very big and many users prefer to make it more organised. This is done virtually splitting the disk into several smaller parts. This operation is known as creating partitions on a disk.&lt;br /&gt;
&lt;br /&gt;
[[File:Partitions.png|Small part of Media Toolbox showing different partitions on the harddisk]]&lt;br /&gt;
&lt;br /&gt;
On this screenshot you can see one harddisk with many partitions. Each color corresponds to a different filesystem which defines how data is stored. Also you can see a greyed area which is a blank area on the disk i.e. no partition is defined at this position.&lt;br /&gt;
&lt;br /&gt;
=== Volumes ===&lt;br /&gt;
A partition is a physical area on a disk. To access it with AmigaOS we could read the physical data off the partition but it&#039;s not an easy way. To make it easier AmigaOS uses the concept of volumes. These are virtual representations of a partition. The volumes have a name so AmigaOS and therefore the user can access all files/directories stored on it in a very practical way: just by using its name.&lt;br /&gt;
&lt;br /&gt;
= How to identify files/directories =&lt;br /&gt;
&lt;br /&gt;
== On the Workbench ==&lt;br /&gt;
&lt;br /&gt;
The Workbench being graphical, a lot of things are understandable just by looking at them. That&#039;s why icons are often enough to understand what kind of object it represents: a file, a directory, a disk...&lt;br /&gt;
&lt;br /&gt;
In case you have a doubt, just look at the information on an icon. The Workbench will tell you the type of the object. It is displayed next to its name.&lt;br /&gt;
&lt;br /&gt;
== In a shell ==&lt;br /&gt;
&lt;br /&gt;
In a shell the &#039;&#039;&#039;list&#039;&#039;&#039; command can be used to see if an object is a file or a directory.&lt;br /&gt;
&lt;br /&gt;
[[File:Files-dirs-in-shell.png|The &#039;&#039;&#039;list&#039;&#039;&#039; command shows a file of 925678 bytes and two directories]]&lt;br /&gt;
&lt;br /&gt;
A file will be displayed with its size, whereas a directory will be displayed with the text &#039;&#039;&#039;Dir&#039;&#039;&#039; next to it.&lt;br /&gt;
&lt;br /&gt;
Also, as you can see on the screenshot, the list command displays other characteristics on these 3 items: the protection bits and the date they were updated the last time. The command also sums up what it just listed.&lt;br /&gt;
&lt;br /&gt;
= All AmigaOS components =&lt;br /&gt;
&lt;br /&gt;
AmigaOS is made of components that are needed as soon as the system starts or later when the user or the system needs them.&lt;br /&gt;
&lt;br /&gt;
== Kickstart modules ==&lt;br /&gt;
&lt;br /&gt;
These components are the heart of AmigaOS. Their duties is to do graphics, to handle discs or to handle all reads/writes to files. Also one of them is the AmigaOS kernel which is a kind of director handling the work of all other components.&lt;br /&gt;
These Kickstart modules are loaded at the beginning of the operating system boot process (read [[UserDoc:How_AmigaOS_Works#AmigaOS_boot_procedure|here]]). You can find all them in the &#039;&#039;&#039;Kickstart&#039;&#039;&#039; directory in the system volume. Here is a list:&lt;br /&gt;
&lt;br /&gt;
=== Mandatory modules ===&lt;br /&gt;
&lt;br /&gt;
The following modules are required in any AmigaOS system. Without one of these, the system will not start.&lt;br /&gt;
&lt;br /&gt;
* kernel - The kernel works like a conductor in an orchestra. Its job is to make everything works together. It creates processes, handle memory usage, defines the way other components will access peripherals...etc. Note that the AmigaOS kernel is not based on any other kernel. It is a self made kernel that works since 1983.&lt;br /&gt;
* loader - this component handles the loading of all other kickstart modules&lt;br /&gt;
* battclock.resource.kmod - this module handles reading/writing the battery backed up clock which is used on all computers to keep the date and time&lt;br /&gt;
* bootimage - this is the boot picture. It is displayed during the start sequence of AmigaOS&lt;br /&gt;
* bootmenu.kmod - this component handles the Early Startup Menu the use can use to define some settings before starting AmigaOS&lt;br /&gt;
* con-handler.kmod - it directs the read and write requests to the console window, to a serial AUX: device or any other supported interface&lt;br /&gt;
* console.device.kmod - it opens a window and reads/writes text to and from that window&lt;br /&gt;
* diskboot.kmod - handles the booting of AmigaOS from a supported disk&lt;br /&gt;
* diskboot.config - this is a text file experienced users can modify to change the boot behaviour of AmigaOS&lt;br /&gt;
* dos.library.kmod - this module is a collection of functions that any program can use to perform actions on disks, files and directories&lt;br /&gt;
* elf.library.kmod - handles the loading of executable programs&lt;br /&gt;
* env-handler.kmod - handles the read/writes of environment variables&lt;br /&gt;
* FileSystem.resource.kmod - handles the use of the different filesystems&lt;br /&gt;
* gadtools.library.kmod - collection of functions used to create all graphic objects like gadgets, sliders, menus...&lt;br /&gt;
* gameport.device.kmod - handles the read/writes of game pads and joysticks&lt;br /&gt;
* graphics.library.kmod - collection of functions used to draw graphic elements on the monitor&lt;br /&gt;
* hunk.library.kmod - set of functions to read a data stream into memory&lt;br /&gt;
* input.device.kmod - handles of input events like keyboard events or mouse clicks&lt;br /&gt;
* intuition.library.kmod - collection of functions to create and handle all graphic elements (screens, windows, the mouse pointer...)&lt;br /&gt;
* layers.library.kmod - set of functions to be used to handle different layers in graphic operations&lt;br /&gt;
* keyboard.device.kmod - driver for the keyboard&lt;br /&gt;
* keymap.library.kmod - functions to handle different keymaps&lt;br /&gt;
* newlib.library.kmod - collection of functions to perform memory operations (allocating memory, copying memory areas... )&lt;br /&gt;
* nonvolatile.library.kmod - provides a simple means for an application developer to manage nonvolatile storage&lt;br /&gt;
* nvram.resource.kmod - handles the read/writes to the EEPROM chip present on many AmigaOS computers&lt;br /&gt;
* PCIGraphics.card - driver that supports the use of different graphic cards&lt;br /&gt;
* ram-handler.kmod - functions that handles the &#039;&#039;&#039;Ram disk:&#039;&#039;&#039; special disk&lt;br /&gt;
* ramdrive.device.kmod - device that allows the usage of the ramdrive device &#039;&#039;&#039;RAD:&#039;&#039;&#039; disk&lt;br /&gt;
* ramlib.kmod - loads disk based libraries and devices for exec.library&lt;br /&gt;
* rtg.library - library of functions to perform lowlevel graphic operations on graphic cards&lt;br /&gt;
* shell.kmod - the AmigaOS command line interface&lt;br /&gt;
* strap.kmod - module that handles booting on different disk devices&lt;br /&gt;
* timer.device.kmod - driver to give access to timing functions&lt;br /&gt;
&lt;br /&gt;
=== Filesystem support ===&lt;br /&gt;
&lt;br /&gt;
These kickstart modules can be loaded or left aside. If you want to use a particular filesystem on your disk partitions, you need to load the corresponding filesystem module.&lt;br /&gt;
&lt;br /&gt;
* CDFileSystem - handles the CD-ROM disks with data stored in different formats: ISO9660, HFS...&lt;br /&gt;
* SmartFilesystem - allows the usage of partitions in SFS0 and SFS2 layouts&lt;br /&gt;
* JXFileSystem - allows the usage of partitions in JXFS layout&lt;br /&gt;
* FastFileSystem - allows the usage of partitions in FFS and FFS2 layouts&lt;br /&gt;
* diskcache.library.kmod - component required by the SmartFileSystem and JXFileSystem modules&lt;br /&gt;
&lt;br /&gt;
=== Hardware drivers ===&lt;br /&gt;
&lt;br /&gt;
==== Graphic cards drivers ====&lt;br /&gt;
&lt;br /&gt;
* 3dfxVoodoo.chip&lt;br /&gt;
* 3DLabsPermedia2.chip&lt;br /&gt;
* ATIRadeon.chip&lt;br /&gt;
* RadeonHD.chip&lt;br /&gt;
* siliconmotion502.chip&lt;br /&gt;
&lt;br /&gt;
==== Disk drivers ====&lt;br /&gt;
&lt;br /&gt;
Each of these drivers allow the use of disks connected to a disk controller. These files are named with the name of the controller they support. As an example, the &#039;&#039;&#039;sii3114ide.device.kmod&#039;&#039;&#039; allows to use disks connected on a &#039;&#039;&#039;Silicon Image SiI3114&#039;&#039;&#039; controller chip.&lt;br /&gt;
&lt;br /&gt;
* it8212ide.device.kmod&lt;br /&gt;
* lsi53c8xx.device.kmod&lt;br /&gt;
* sam460sata.device.kmod&lt;br /&gt;
* sii3112ide.device.kmod&lt;br /&gt;
* sii3512ide.device.kmod&lt;br /&gt;
* sii3114ide.device.kmod&lt;br /&gt;
* sii0680ide.device.kmod&lt;br /&gt;
* sii3132ide.device.kmod&lt;br /&gt;
&lt;br /&gt;
==== USB drivers ====&lt;br /&gt;
&lt;br /&gt;
* hub.usbfd&lt;br /&gt;
* usbsys.device&lt;br /&gt;
* usbresource.library&lt;br /&gt;
* ehci.usbhcd&lt;br /&gt;
* ohci.usbhcd&lt;br /&gt;
* uhci.usbhcd&lt;br /&gt;
* massstorage.usbfd&lt;br /&gt;
&lt;br /&gt;
==== Other drivers ====&lt;br /&gt;
&lt;br /&gt;
* bootkeyboard.usbfd - allows a USB keyboard to be used even before the USB stack is loaded&lt;br /&gt;
* bootmouse.usbfd - allows a USB mouse to be used even before the USB stack is loaded&lt;br /&gt;
* fpga.resource.kmod - allows to use the FPGA components which are present on some Amiga computers&lt;br /&gt;
* i2c.resource.kmod - allows to use the i2c interface present on some Amiga computers&lt;br /&gt;
* xena.resource.kmod - provides access to the Xena chip on the AmigaOne X1000&lt;br /&gt;
&lt;br /&gt;
=== Misc modules ===&lt;br /&gt;
&lt;br /&gt;
* petunia.library.kmod - this module contains the Just-In-Time emulator that allows AmigaOS to run programs made for the Motorola 68k processor&lt;br /&gt;
&lt;br /&gt;
== System components ==&lt;br /&gt;
&lt;br /&gt;
[[File:Workbench_directory_listing.png|frame|right|List of directories and files present at the root of any AmigaOS system]]&lt;br /&gt;
&lt;br /&gt;
Beside the kickstart modules, AmigaOS uses many different components that can be loaded only when used. These files are stored in different directories in the system volume.&lt;br /&gt;
Here is described a default AmigaOS installation.&lt;br /&gt;
&lt;br /&gt;
* C&lt;br /&gt;
This directory contains AmigaDOS &#039;&#039;&#039;C&#039;&#039;&#039;ommands&lt;br /&gt;
* Classes&lt;br /&gt;
contains different object elements easy to be used in any program: gadgets, requesters, graphic table, windows...&lt;br /&gt;
* Devs&lt;br /&gt;
contains definition for &#039;&#039;&#039;Dev&#039;&#039;&#039;ices&lt;br /&gt;
* Emulation&lt;br /&gt;
contains files used for the 68k emulation (though E-UAE)&lt;br /&gt;
* Fonts&lt;br /&gt;
contains various systems fonts&lt;br /&gt;
* Internet&lt;br /&gt;
contains a dialer to connect to Internet&lt;br /&gt;
* Kickstart&lt;br /&gt;
contains the kickstart modules&lt;br /&gt;
* L&lt;br /&gt;
contains hand&#039;&#039;&#039;l&#039;&#039;&#039;ers and filesystems&lt;br /&gt;
* Libs&lt;br /&gt;
contains dynamic &#039;&#039;&#039;Libr&#039;&#039;&#039;airies of functions&lt;br /&gt;
* Locale&lt;br /&gt;
contains all files used to localise the system (catalogs, keymaps...)&lt;br /&gt;
* MUI&lt;br /&gt;
contains the needed files for programs that use the MUI third party graphic interface&lt;br /&gt;
* [[Prefs]]&lt;br /&gt;
contains the preference programs used to customise AmigaOS&lt;br /&gt;
* S&lt;br /&gt;
contains the &#039;&#039;&#039;S&#039;&#039;&#039;cripts&lt;br /&gt;
* SObjs&lt;br /&gt;
contains .so shared object library files&lt;br /&gt;
* Storage&lt;br /&gt;
contains other optional files&lt;br /&gt;
* System&lt;br /&gt;
contains some programs used by the system itself (i.e. you don&#039;t need to run them yourself) or low-level programs like disk tools&lt;br /&gt;
* [[Utilities]]&lt;br /&gt;
contains several programs you can use to achieve some tasks on AmigaOS&lt;br /&gt;
&lt;br /&gt;
= Motorola 680x0 Emulators =&lt;br /&gt;
&lt;br /&gt;
For a long time Amigas have had the famous Motorola 680x0 processors as the central unit for execution. Unfortunately the time of the 680x0 series is passing in favor of other architectures. The new era of processors reached the Amiga some time ago, when expansion boards became available for extending the Classic systems with the raw power of a PowerPC processor.&lt;br /&gt;
&lt;br /&gt;
In the old operating system (AmigaOS 3.x) it was not possible to gain the full advantage of the new processors. The system itself and most of the applications required the original Motorola 680x0 processor. There was no 680x0 emulation available for the PowerPCs, so the 680x0 could not be &amp;quot;switched off&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Thus the new processors remained as a powerful, but mostly unused adjunct to the main 680x0 processor. &amp;quot;Native&amp;quot; PowerPC programs were rare, and every time a PowerPC program called the system, a so called &amp;quot;context switch&amp;quot; occurred between the 680x0 and PowerPC code, often causing a large performance penalty.&lt;br /&gt;
&lt;br /&gt;
The new Amiga platform is based on the PowerPC processor family, therefore the new version of the AmigaOS has to smooth the transition from the 680x0 series, which is achieved by emulating the old processor architecture. The operating system itself is written almost 100 percent for the PowerPC processors, but the 680x0 legacy applications require an emulated 680x0 processor. &lt;br /&gt;
&lt;br /&gt;
== Two 680x0 Emulators ==&lt;br /&gt;
&lt;br /&gt;
In version 4.0 of AmigaOS, two different emulators were implemented; one is the successor of BlackBox emulation, it is an interpretive emulator, thus the emulation speed is mediocre. On the other hand it has a very low &amp;quot;reaction time&amp;quot;, and is ideal for time critical parts, such as interrupts.&lt;br /&gt;
&lt;br /&gt;
The other is Petunia, the &amp;quot;JIT emulator&amp;quot;. A fast, but less compatible way of emulation of the legacy Motorola processors. It is intended mainly for emulating applications, and therefore, when execution of the application leaves the bounds of the application&#039;s code segment, emulation falls back to the interpretive method, where it does its job and returns to the JIT emulation again.&lt;br /&gt;
&lt;br /&gt;
Dynamic recompilation (also called just-in-time compilation or simply JIT compilation) is a technique of translating foreign processor machine code to native machine code, &amp;quot;on the fly&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This technique is common nowadays, commonly applied in JAVA virtual machines, and it is also used with success in several emulators. In dynamic recompilation there is the possibility of runtime optimization of the emulated code by collecting statistics of the execution process. Therefore (theoretically) the final executed code can be even faster than the original code on its original processor.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Emulated opcodes:&lt;br /&gt;
* all user and supervisor level opcodes of the Motorola 68040&lt;br /&gt;
* all FPU opcodes of the Motorola 68881/68882 &lt;br /&gt;
&lt;br /&gt;
AmigaOS claims only 68020/68881 compatibility to applications because this is the safest compatibility level, but both emulators are compatible with the machine code up to the level of 68040/060 processors.&lt;br /&gt;
&lt;br /&gt;
At compile time, a low level flag and branch control analysis allows on-the-fly optimizations of compiled code.&lt;br /&gt;
&lt;br /&gt;
== Removing the JIT Emulator ==&lt;br /&gt;
&lt;br /&gt;
Using the dynamic translation requires a lot more memory than the interpretive emulation. The translated code needs to be stored somewhere, not to mention the data collection tables.&lt;br /&gt;
&lt;br /&gt;
If speed is not as important as the memory consumption of the system, then the JIT emulator can be removed, leaving the job to the interpretive emulator.&lt;br /&gt;
&lt;br /&gt;
Thanks to the modular design of AmigaOS kickstart, all you need to do is edit the &amp;quot;Sys:Kickstart/Kicklayout&amp;quot; file, simply put a semicolon (;) at the beginning of the module line of Petunia.library.kmod. After rebooting the system from cold, the JIT emulator will not be reloaded. Make sure that you alter the appropriate configuration in the Kicklayout file, there may be several alternative configurations, with different names like &amp;quot;DefaultJIT&amp;quot;, or &amp;quot;DefaultNoJIT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Configuring the Emulators ==&lt;br /&gt;
&lt;br /&gt;
Petunia cooperates with a so called &amp;quot;black list&amp;quot;. By default Petunia emulates every 680x0 program or library that is loaded by DOS.library/LoadSeg function, but if an executable or library shows incompatibilities with Petunia, then it can be explicitly inhibited from the dynamic recompilation by specifying it in a list file.&lt;br /&gt;
&lt;br /&gt;
If an executable needs to be added to the list, then it can be done by extending the file &amp;quot;DEVS:applications.dos&amp;quot; with the &#039;&#039;&#039;Compatibility&#039;&#039;&#039; preferences program from the Prefs drawer of the system. Adding a program name to the list and checking it will prevent Petunia from emulating that program, and it will be interpreted instead by the built-in interpreter.&lt;br /&gt;
&lt;br /&gt;
Removing a program from the list or unchecking (thus allowing Petunia to emulate it again) can be done with the same preferences program.&lt;br /&gt;
&lt;br /&gt;
Please note: some programs consist of multiple executables (shared libraries, plugins). If you want to fully disable the translation of such programs, then every part must be added to the list.&lt;br /&gt;
&lt;br /&gt;
For example to disable UnArc fully, you would have to add all files from libs:xad and also xadmaster.library to the list. &lt;br /&gt;
&lt;br /&gt;
= AmigaOS boot procedure =&lt;br /&gt;
&lt;br /&gt;
Basically a computer with AmigaOS does the following when the power button is pushed:&lt;br /&gt;
&lt;br /&gt;
* [[File:Uboot.jpg|200px]]&lt;br /&gt;
the BIOS ([[UserDoc:BIOS|Uboot]] or [[UserDoc:BIOS|CFE]]) of the computer initialises the hardware: graphic card, USB ports... At this point, the monitor wakes up and the first information are displayed. This allows to see if hardware is correctly recognised. As an example you can see if a hard drive is correctly connected into the machine and your BIOS is correctly setup to make this drive useable.&lt;br /&gt;
* depending on how you setup the BIOS it will look on the harddisk to find the Second Level Booter (SLB). This program is stored on the first sectors of the disk. Whereas the BIOS does not know about AmigaOS disk structure, the SLB will be able to &#039;&#039;understand&#039;&#039; the AmigaOS partitions and files. In other words, it is the link between the BIOS and the rest of the boot procedure. Its goal is also to give you the ability to start several configurations present on the same drive.&lt;br /&gt;
* [[File:SLB.png|200px]]&lt;br /&gt;
the SLB will analyses all Amiga partitions on the disk it is installed on. It will read each [[UserDoc:kickstart_configuration|system configuration]] it finds on the partitions. It will show all available configurations for the user to select one to load.&lt;br /&gt;
The user can define many different kickstart configurations to choose from. Also both AmigaOS and Linux can be selected for boot.&lt;br /&gt;
* [[File:Kmods loading.png|200px]]&lt;br /&gt;
the SLB loads the kickstart files of the selected configuration and executes the &#039;&#039;&#039;Loader&#039;&#039;&#039; module&lt;br /&gt;
* &#039;&#039;&#039;Loader&#039;&#039;&#039; executes the kickstart modules (Exec, devices, libraries...)&lt;br /&gt;
* AmigaOS becomes alive displaying the AmigaOS boot picture on the monitor&lt;br /&gt;
* the AmigaDOS library executes the [[UserDoc:System_Scripts#startup-sequence|startup-sequence]] script found on the system volume&lt;br /&gt;
* the Startup-sequence will be executed and all commands it contains are executed. It means that starting from here the boot procedure is easy to follow and understand.&lt;br /&gt;
* the Workbench is started&lt;br /&gt;
&lt;br /&gt;
At this point the user can use his/her computer.&lt;br /&gt;
&lt;br /&gt;
= How to make a Bootable USB Memory Stick for AmigaOS 4.1 =&lt;br /&gt;
&lt;br /&gt;
By Julian Margetson (&amp;quot;Spectre660&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Prerequisites:&lt;br /&gt;
* USB memory stick of 2 GB or less in size.&lt;br /&gt;
* It is best to only have one USB mass storage device connected while you are creating your bootable USB memory stick.&lt;br /&gt;
* Plug the USB memory stick into a USB port on your machine.&lt;br /&gt;
* Note that the device will be formatted so make sure that you use an empty memory stick or one that does not contain any data that you need or backup the contents before you begin.&lt;br /&gt;
&lt;br /&gt;
Procedure:&lt;br /&gt;
# You use Media Toolbox in the System: drawer to prepare the USB stick. On starting Media Toolbox select &#039;&#039;usbdisk.device&#039;&#039; as the device to use.&lt;br /&gt;
# Make certain that you have selected usbdisk.device and not any other device.&lt;br /&gt;
# Click on &amp;quot;Start&amp;quot;&lt;br /&gt;
# You will see the usb mass storage unit connected in a list.&lt;br /&gt;
# Make sure that the Unit type displayed for the USB memory stick is &amp;quot;Removable hard disk&amp;quot;&lt;br /&gt;
# Select that Unit by clicking on it.&lt;br /&gt;
# The first thing that you need to do is to install the RDB onto the USB Memory Stick.&lt;br /&gt;
# Click on the  &amp;quot;Install&amp;quot; button.&lt;br /&gt;
# A window Labeled &amp;quot;RDB/disk geometry editing&amp;quot; comes up.&lt;br /&gt;
## Towards the bottom of the window is the &amp;quot;AmigaOne boot code (SLB)&amp;quot; section.&lt;br /&gt;
## Select the &amp;quot;Install&amp;quot; button .&lt;br /&gt;
## A file requester  &amp;quot;Select AmigaOne Boot Code&amp;quot; now comes  up with the Drawer choice defaulting to &amp;quot;l:&amp;quot;&lt;br /&gt;
## Select file &amp;quot;slb_v2&amp;quot;. &lt;br /&gt;
## Select Ok.&lt;br /&gt;
## You are now returned to the &amp;quot;RDB/disk geometry editing window&amp;quot;.&lt;br /&gt;
## Select &amp;quot;Ok-accept changes&amp;quot;.&lt;br /&gt;
# You are now returned to the display showing the attached USB unit.&lt;br /&gt;
# Select &amp;quot;Edit partitions and Filesystems&amp;quot;. You will now see the Window &#039;Editing partitions for disk&amp;quot;&lt;br /&gt;
# Select &amp;quot;Add partition&amp;quot;&lt;br /&gt;
# This defaults to using the whole device as a single partition.&lt;br /&gt;
# It is possible to use create more partitions but for this tutorial we will only use one.&lt;br /&gt;
# You now need to give the partition a unique name (e.g. USB0 or something that is different from any of the existing partitions on your hard drive). This is done by changing the default DH0 in the &amp;quot;Name&amp;quot; box.&lt;br /&gt;
# Now make sure that the Boxes &amp;quot;Automount&amp;quot; and &amp;quot;Bootable&amp;quot; are  selected and show the &amp;quot;Tick mark&amp;quot;.&lt;br /&gt;
# You need to set &amp;quot;Boot priority&amp;quot; to higher than the boot priority of your hard drive boot partition(s). This is done by increasing Boot priority by clicking on the &amp;quot;+&amp;quot; to the right of the &amp;quot;boot priority&amp;quot; box. Normally you can set the boot priority to 2 .&lt;br /&gt;
# Next it is time to select the file system to use.&lt;br /&gt;
# Select &amp;quot;Select filesystem/edit details&amp;quot;.&lt;br /&gt;
# The Window &amp;quot;Editing details for partition &#039;USB0&#039;&amp;quot;  ,or whatever partition name you used, comes up.&lt;br /&gt;
## Select the file system that you are going to use by selecting the pull down menu under &amp;quot;Filesystem chooser&amp;quot;.&lt;br /&gt;
## Only filesystems SFS/00 or SFS/02 will work for a bootable device.&lt;br /&gt;
## The option that gives the most flexibility at the moment is SFS/00 as a USB stick in this format can be read and written to using another compatible system in the event that you need to make modifications after it is created without a booting AmigaOS 4.1 machine.&lt;br /&gt;
## Next select Blocksize from the &amp;quot;Blocksize&amp;quot; pull down menu. 512 is the correct size to use.&lt;br /&gt;
## Now Select &amp;quot;Ok-accept changes&amp;quot;.&lt;br /&gt;
## Your are now returned to the &amp;quot;Edit partitions for disk&amp;quot; window.&lt;br /&gt;
## Again select &amp;quot;Ok-accept changes&amp;quot;&lt;br /&gt;
# You are now returned to the window showing the USB mass storage unit list.&lt;br /&gt;
# Select &amp;quot;Save to disk&amp;quot;&lt;br /&gt;
# A requester pops up with the options &amp;quot;Yes, Save.&amp;quot; or &amp;quot;No!&amp;quot;&lt;br /&gt;
# Select the &amp;quot;Yes, save.&amp;quot; option.&lt;br /&gt;
# You now close Media Toolbox by clicking on the close icon (X) on the left of the Media Toolbox window.&lt;br /&gt;
# This will give you a requester advising that you need to reboot the machine for the changes to take effect. At this point you need to remove the USB memory stick for the machine. If you do not then the Machine will attempt boot from it before it is formatted and the required Kickstart and AmigaOS 4.1 files are copied to it.&lt;br /&gt;
# Select &amp;quot;Yes, reboot NOW!&amp;quot;.&lt;br /&gt;
# Once you have rebooted connect your USB Memory Stick to a USB port.&lt;br /&gt;
# A disk icon &amp;quot;USB0:Uninitialized&amp;quot; (or whatever partition name you used) appears on Workbench.&lt;br /&gt;
# You now need to format the device.&lt;br /&gt;
# To format Select this Icon and go to the Workbench &amp;quot;Icons&amp;quot; menu .&lt;br /&gt;
# Select &amp;quot;Format Disk&amp;quot;&lt;br /&gt;
# You can give the USB Memory Stick a unique name and  select whether you want a Trashcan or not.&lt;br /&gt;
# You can use either a full Format or a  Quick Format. Full Format may take a few minutes.&lt;br /&gt;
# Once formatted the USB Memory Stick is ready for you to copy the required files from you hard drive or AmigaOS Install CD to it in order to boot AmigaOS 4.1 from it.&lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=UserDoc:How_AmigaOS_Works&amp;diff=7906</id>
		<title>UserDoc:How AmigaOS Works</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=UserDoc:How_AmigaOS_Works&amp;diff=7906"/>
		<updated>2015-05-29T06:08:52Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: /* Exec, the AmigaOS kernel */ added punctuation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As already mentioned, AmigaOS was a pioneer in the early days of personal computing in delivering sophistication that contemporary systems could only have dreamt of and pretended to offer. Today, AmigaOS continues to offer a straightforward elegance that seems to be overlooked in the development of other platforms. Thanks to the concepts behind AmigaOS, the system is easy to understand and to use by everyone.&lt;br /&gt;
&lt;br /&gt;
In this page we will explore all these concepts of AmigaOS. Also you will learn here the naming of all parts of the system.&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
AmigaOS is made of different components which are either mandatory (i.e.,  AmigaOS will not work without them) or components the user can choose to use or not. All these components can have one or mutiple interfaces a user or a developer can use to operate with the components and through them to control the operating system.&lt;br /&gt;
&lt;br /&gt;
= The most important components =&lt;br /&gt;
&lt;br /&gt;
== Exec, the AmigaOS kernel ==&lt;br /&gt;
&lt;br /&gt;
Exec is the kernel of AmigaOS. It is the component that pilots all other components. It is responsible for running programs, dealing with computer memory and managing low-level resources that programs may need. In other words, it organises everything to make the operating system run.&lt;br /&gt;
&lt;br /&gt;
It is made of different parts that cannot be moved outside the kernel: the scheduler, the memory pager and the 68k interpretive emulator.&lt;br /&gt;
&lt;br /&gt;
== AmigaDOS: the underlying system ==&lt;br /&gt;
&lt;br /&gt;
The word &amp;quot;DOS&amp;quot; was originally an acronym for &amp;quot;Disk Operating System&amp;quot;. Some say it should be &amp;quot;Disk Based Operating System&amp;quot; as it does a lot more than operate a disk and that it was really an operating system based (stored) on disks.  Some say it should be &amp;quot;Device Operating System&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The whole AmigaDOS system includes things such as:&lt;br /&gt;
&lt;br /&gt;
* A set of commands that can be used in the Shell window and elsewhere.&lt;br /&gt;
* A system for saving data to disk and retrieving it from disk.&lt;br /&gt;
* A system for filing data on disks.&lt;br /&gt;
* An interface for peripherals such as keyboards, monitors, printers, etc.&lt;br /&gt;
* A method of running programs&lt;br /&gt;
* A multitasking system for running more than one program at a time.&lt;br /&gt;
* etc. etc. etc.&lt;br /&gt;
&lt;br /&gt;
Read the [[AmigaDOS manual]] to understand and learn everything about AmigaDOS.&lt;br /&gt;
&lt;br /&gt;
== The Graphics library ==&lt;br /&gt;
&lt;br /&gt;
The Graphics library handles every low level graphic operations like designing pixels on the monitor, creating graphic elements (bobs, sprites) and also writing text output.&lt;br /&gt;
&lt;br /&gt;
== Intuition ==&lt;br /&gt;
&lt;br /&gt;
The Intuition library is responsible for every graphical objects: windows, screens, gadgets, mouse pointers... It lays between any graphic program and the graphics library.&lt;br /&gt;
&lt;br /&gt;
== The Workbench ==&lt;br /&gt;
&lt;br /&gt;
The Workbench is the graphical place where you will manage your computer and all your files. The name was chosen because the user will use tools to create and work with the computer.&lt;br /&gt;
&lt;br /&gt;
[[File:Wb.png|320px]]&lt;br /&gt;
&lt;br /&gt;
== The Shell ==&lt;br /&gt;
&lt;br /&gt;
While some people prefer to control the operating system using their mouse, others prefer using the keyboard. The shell is a text based window when you can type commands to execute actions in the operating system. In the shell the commands will display the results of their execution.&lt;br /&gt;
&lt;br /&gt;
== ARexx - inter-program communication by scripting ==&lt;br /&gt;
&lt;br /&gt;
The ARexx scripting language can be used to operate the Workbench and the most important Amiga applications from a script containing ARexx commands. This is extremely useful to perform repetitive tasks or to do what the controlled application was not even design to do.&lt;br /&gt;
After a learning curve, everybody can use ARexx as it is built in the system and the scripts can be executed immediately like any other tool.&lt;br /&gt;
&lt;br /&gt;
= How is my data stored? =&lt;br /&gt;
== Files ==&lt;br /&gt;
=== Executable files ===&lt;br /&gt;
Programs you can start are stored in executable files. They contain binary code directly understandable by the computer. They are files with an executable bit, a flag that shows AmigaOS that such file will do something when started.&lt;br /&gt;
An example is a music player. When you start this executable, the player opens and you can start playing music files.&lt;br /&gt;
&lt;br /&gt;
AmigaOS can run two different kinds of executable files: the AmigaOS native programs made for the PowerPC processor and programs created for the Motorola 68k processors. The laters are executed inside an emulation that transcripts them into PowerPC code.&lt;br /&gt;
&lt;br /&gt;
==== Scripts ====&lt;br /&gt;
&lt;br /&gt;
Scripts are text files containing a list of commands. So they are not strictly executables like &#039;&#039;binary code&#039;&#039; files but they can be executed by AmigaOS like if they were.&lt;br /&gt;
This is the case with AmigaDOS and ARexx scripts. These files need to have the executable bit, and the script bit.&lt;br /&gt;
&lt;br /&gt;
=== Data files ===&lt;br /&gt;
Files that are not executable are data files. These contain some data that will be manipulated by programs. Some examples are a music file, a video file or a text document.&lt;br /&gt;
&lt;br /&gt;
== Directories/Drawers ==&lt;br /&gt;
In order to organise things a bit, files are not all of them in the same place. We create directories which like drawers of a cabinet will store different files of the same kind.&lt;br /&gt;
Often the name &#039;&#039;directory&#039;&#039; is used when talking about the directory which is stored on a disk. The graphical interface of AmigaOS being called the Workbench, directories are often called &#039;&#039;drawers&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Note: directories are often called &#039;&#039;folders&#039;&#039; on other systems.&lt;br /&gt;
&lt;br /&gt;
== Disks, partitions and volumes ==&lt;br /&gt;
=== Disks ===&lt;br /&gt;
Disks are storage medium you can purchase on a computer store. We use them to store our files. They can be internal hard disks, external ones or a USB disk drive.&lt;br /&gt;
&lt;br /&gt;
=== Partitions ===&lt;br /&gt;
A disk is often very big and many users prefer to make it more organised. This is done virtually splitting the disk into several smaller parts. This operation is known as creating partitions on a disk.&lt;br /&gt;
&lt;br /&gt;
[[File:Partitions.png|Small part of Media Toolbox showing different partitions on the harddisk]]&lt;br /&gt;
&lt;br /&gt;
On this screenshot you can see one harddisk with many partitions. Each color corresponds to a different filesystem which defines how data is stored. Also you can see a greyed area which is a blank area on the disk i.e. no partition is defined at this position.&lt;br /&gt;
&lt;br /&gt;
=== Volumes ===&lt;br /&gt;
A partition is a physical area on a disk. To access it with AmigaOS we could read the physical data off the partition but it&#039;s not an easy way. To make it easier AmigaOS uses the concept of volumes. These are virtual representations of a partition. The volumes have a name so AmigaOS and therefore the user can access all files/directories stored on it in a very practical way: just by using its name.&lt;br /&gt;
&lt;br /&gt;
= How to identify files/directories =&lt;br /&gt;
&lt;br /&gt;
== On the Workbench ==&lt;br /&gt;
&lt;br /&gt;
The Workbench being graphical, a lot of things are understandable just by looking at them. That&#039;s why icons are often enough to understand what kind of object it represents: a file, a directory, a disk...&lt;br /&gt;
&lt;br /&gt;
In case you have a doubt, just look at the information on an icon. The Workbench will tell you the type of the object. It is displayed next to its name.&lt;br /&gt;
&lt;br /&gt;
== In a shell ==&lt;br /&gt;
&lt;br /&gt;
In a shell the &#039;&#039;&#039;list&#039;&#039;&#039; command can be used to see if an object is a file or a directory.&lt;br /&gt;
&lt;br /&gt;
[[File:Files-dirs-in-shell.png|The &#039;&#039;&#039;list&#039;&#039;&#039; command shows a file of 925678 bytes and two directories]]&lt;br /&gt;
&lt;br /&gt;
A file will be displayed with its size, whereas a directory will be displayed with the text &#039;&#039;&#039;Dir&#039;&#039;&#039; next to it.&lt;br /&gt;
&lt;br /&gt;
Also, as you can see on the screenshot, the list command displays other characteristics on these 3 items: the protection bits and the date they were updated the last time. The command also sums up what it just listed.&lt;br /&gt;
&lt;br /&gt;
= All AmigaOS components =&lt;br /&gt;
&lt;br /&gt;
AmigaOS is made of components that are needed as soon as the system starts or later when the user or the system needs them.&lt;br /&gt;
&lt;br /&gt;
== Kickstart modules ==&lt;br /&gt;
&lt;br /&gt;
These components are the heart of AmigaOS. Their duties is to do graphics, to handle discs or to handle all reads/writes to files. Also one of them is the AmigaOS kernel which is a kind of director handling the work of all other components.&lt;br /&gt;
These Kickstart modules are loaded at the beginning of the operating system boot process (read [[UserDoc:How_AmigaOS_Works#AmigaOS_boot_procedure|here]]). You can find all them in the &#039;&#039;&#039;Kickstart&#039;&#039;&#039; directory in the system volume. Here is a list:&lt;br /&gt;
&lt;br /&gt;
=== Mandatory modules ===&lt;br /&gt;
&lt;br /&gt;
The following modules are required in any AmigaOS system. Without one of these, the system will not start.&lt;br /&gt;
&lt;br /&gt;
* kernel - The kernel works like a conductor in an orchestra. Its job is to make everything works together. It creates processes, handle memory usage, defines the way other components will access peripherals...etc. Note that the AmigaOS kernel is not based on any other kernel. It is a self made kernel that works since 1983.&lt;br /&gt;
* loader - this component handles the loading of all other kickstart modules&lt;br /&gt;
* battclock.resource.kmod - this module handles reading/writing the battery backed up clock which is used on all computers to keep the date and time&lt;br /&gt;
* bootimage - this is the boot picture. It is displayed during the start sequence of AmigaOS&lt;br /&gt;
* bootmenu.kmod - this component handles the Early Startup Menu the use can use to define some settings before starting AmigaOS&lt;br /&gt;
* con-handler.kmod - it directs the read and write requests to the console window, to a serial AUX: device or any other supported interface&lt;br /&gt;
* console.device.kmod - it opens a window and reads/writes text to and from that window&lt;br /&gt;
* diskboot.kmod - handles the booting of AmigaOS from a supported disk&lt;br /&gt;
* diskboot.config - this is a text file experienced users can modify to change the boot behaviour of AmigaOS&lt;br /&gt;
* dos.library.kmod - this module is a collection of functions that any program can use to perform actions on disks, files and directories&lt;br /&gt;
* elf.library.kmod - handles the loading of executable programs&lt;br /&gt;
* env-handler.kmod - handles the read/writes of environment variables&lt;br /&gt;
* FileSystem.resource.kmod - handles the use of the different filesystems&lt;br /&gt;
* gadtools.library.kmod - collection of functions used to create all graphic objects like gadgets, sliders, menus...&lt;br /&gt;
* gameport.device.kmod - handles the read/writes of game pads and joysticks&lt;br /&gt;
* graphics.library.kmod - collection of functions used to draw graphic elements on the monitor&lt;br /&gt;
* hunk.library.kmod - set of functions to read a data stream into memory&lt;br /&gt;
* input.device.kmod - handles of input events like keyboard events or mouse clicks&lt;br /&gt;
* intuition.library.kmod - collection of functions to create and handle all graphic elements (screens, windows, the mouse pointer...)&lt;br /&gt;
* layers.library.kmod - set of functions to be used to handle different layers in graphic operations&lt;br /&gt;
* keyboard.device.kmod - driver for the keyboard&lt;br /&gt;
* keymap.library.kmod - functions to handle different keymaps&lt;br /&gt;
* newlib.library.kmod - collection of functions to perform memory operations (allocating memory, copying memory areas... )&lt;br /&gt;
* nonvolatile.library.kmod - provides a simple means for an application developer to manage nonvolatile storage&lt;br /&gt;
* nvram.resource.kmod - handles the read/writes to the EEPROM chip present on many AmigaOS computers&lt;br /&gt;
* PCIGraphics.card - driver that supports the use of different graphic cards&lt;br /&gt;
* ram-handler.kmod - functions that handles the &#039;&#039;&#039;Ram disk:&#039;&#039;&#039; special disk&lt;br /&gt;
* ramdrive.device.kmod - device that allows the usage of the ramdrive device &#039;&#039;&#039;RAD:&#039;&#039;&#039; disk&lt;br /&gt;
* ramlib.kmod - loads disk based libraries and devices for exec.library&lt;br /&gt;
* rtg.library - library of functions to perform lowlevel graphic operations on graphic cards&lt;br /&gt;
* shell.kmod - the AmigaOS command line interface&lt;br /&gt;
* strap.kmod - module that handles booting on different disk devices&lt;br /&gt;
* timer.device.kmod - driver to give access to timing functions&lt;br /&gt;
&lt;br /&gt;
=== Filesystem support ===&lt;br /&gt;
&lt;br /&gt;
These kickstart modules can be loaded or left aside. If you want to use a particular filesystem on your disk partitions, you need to load the corresponding filesystem module.&lt;br /&gt;
&lt;br /&gt;
* CDFileSystem - handles the CD-ROM disks with data stored in different formats: ISO9660, HFS...&lt;br /&gt;
* SmartFilesystem - allows the usage of partitions in SFS0 and SFS2 layouts&lt;br /&gt;
* JXFileSystem - allows the usage of partitions in JXFS layout&lt;br /&gt;
* FastFileSystem - allows the usage of partitions in FFS and FFS2 layouts&lt;br /&gt;
* diskcache.library.kmod - component required by the SmartFileSystem and JXFileSystem modules&lt;br /&gt;
&lt;br /&gt;
=== Hardware drivers ===&lt;br /&gt;
&lt;br /&gt;
==== Graphic cards drivers ====&lt;br /&gt;
&lt;br /&gt;
* 3dfxVoodoo.chip&lt;br /&gt;
* 3DLabsPermedia2.chip&lt;br /&gt;
* ATIRadeon.chip&lt;br /&gt;
* RadeonHD.chip&lt;br /&gt;
* siliconmotion502.chip&lt;br /&gt;
&lt;br /&gt;
==== Disk drivers ====&lt;br /&gt;
&lt;br /&gt;
Each of these drivers allow the use of disks connected to a disk controller. These files are named with the name of the controller they support. As an example, the &#039;&#039;&#039;sii3114ide.device.kmod&#039;&#039;&#039; allows to use disks connected on a &#039;&#039;&#039;Silicon Image SiI3114&#039;&#039;&#039; controller chip.&lt;br /&gt;
&lt;br /&gt;
* it8212ide.device.kmod&lt;br /&gt;
* lsi53c8xx.device.kmod&lt;br /&gt;
* sam460sata.device.kmod&lt;br /&gt;
* sii3112ide.device.kmod&lt;br /&gt;
* sii3512ide.device.kmod&lt;br /&gt;
* sii3114ide.device.kmod&lt;br /&gt;
* sii0680ide.device.kmod&lt;br /&gt;
* sii3132ide.device.kmod&lt;br /&gt;
&lt;br /&gt;
==== USB drivers ====&lt;br /&gt;
&lt;br /&gt;
* hub.usbfd&lt;br /&gt;
* usbsys.device&lt;br /&gt;
* usbresource.library&lt;br /&gt;
* ehci.usbhcd&lt;br /&gt;
* ohci.usbhcd&lt;br /&gt;
* uhci.usbhcd&lt;br /&gt;
* massstorage.usbfd&lt;br /&gt;
&lt;br /&gt;
==== Other drivers ====&lt;br /&gt;
&lt;br /&gt;
* bootkeyboard.usbfd - allows a USB keyboard to be used even before the USB stack is loaded&lt;br /&gt;
* bootmouse.usbfd - allows a USB mouse to be used even before the USB stack is loaded&lt;br /&gt;
* fpga.resource.kmod - allows to use the FPGA components which are present on some Amiga computers&lt;br /&gt;
* i2c.resource.kmod - allows to use the i2c interface present on some Amiga computers&lt;br /&gt;
* xena.resource.kmod - provides access to the Xena chip on the AmigaOne X1000&lt;br /&gt;
&lt;br /&gt;
=== Misc modules ===&lt;br /&gt;
&lt;br /&gt;
* petunia.library.kmod - this module contains the Just-In-Time emulator that allows AmigaOS to run programs made for the Motorola 68k processor&lt;br /&gt;
&lt;br /&gt;
== System components ==&lt;br /&gt;
&lt;br /&gt;
[[File:Workbench_directory_listing.png|frame|right|List of directories and files present at the root of any AmigaOS system]]&lt;br /&gt;
&lt;br /&gt;
Beside the kickstart modules, AmigaOS uses many different components that can be loaded only when used. These files are stored in different directories in the system volume.&lt;br /&gt;
Here is described a default AmigaOS installation.&lt;br /&gt;
&lt;br /&gt;
* C&lt;br /&gt;
This directory contains AmigaDOS &#039;&#039;&#039;C&#039;&#039;&#039;ommands&lt;br /&gt;
* Classes&lt;br /&gt;
contains different object elements easy to be used in any program: gadgets, requesters, graphic table, windows...&lt;br /&gt;
* Devs&lt;br /&gt;
contains definition for &#039;&#039;&#039;Dev&#039;&#039;&#039;ices&lt;br /&gt;
* Emulation&lt;br /&gt;
contains files used for the 68k emulation (though E-UAE)&lt;br /&gt;
* Fonts&lt;br /&gt;
contains various systems fonts&lt;br /&gt;
* Internet&lt;br /&gt;
contains a dialer to connect to Internet&lt;br /&gt;
* Kickstart&lt;br /&gt;
contains the kickstart modules&lt;br /&gt;
* L&lt;br /&gt;
contains hand&#039;&#039;&#039;l&#039;&#039;&#039;ers and filesystems&lt;br /&gt;
* Libs&lt;br /&gt;
contains dynamic &#039;&#039;&#039;Libr&#039;&#039;&#039;airies of functions&lt;br /&gt;
* Locale&lt;br /&gt;
contains all files used to localise the system (catalogs, keymaps...)&lt;br /&gt;
* MUI&lt;br /&gt;
contains the needed files for programs that use the MUI third party graphic interface&lt;br /&gt;
* [[Prefs]]&lt;br /&gt;
contains the preference programs used to customise AmigaOS&lt;br /&gt;
* S&lt;br /&gt;
contains the &#039;&#039;&#039;S&#039;&#039;&#039;cripts&lt;br /&gt;
* SObjs&lt;br /&gt;
contains .so shared object library files&lt;br /&gt;
* Storage&lt;br /&gt;
contains other optional files&lt;br /&gt;
* System&lt;br /&gt;
contains some programs used by the system itself (i.e. you don&#039;t need to run them yourself) or low-level programs like disk tools&lt;br /&gt;
* [[Utilities]]&lt;br /&gt;
contains several programs you can use to achieve some tasks on AmigaOS&lt;br /&gt;
&lt;br /&gt;
= Motorola 680x0 Emulators =&lt;br /&gt;
&lt;br /&gt;
For a long time Amigas have had the famous Motorola 680x0 processors as the central unit for execution. Unfortunately the time of the 680x0 series is passing in favor of other architectures. The new era of processors reached the Amiga some time ago, when expansion boards became available for extending the Classic systems with the raw power of a PowerPC processor.&lt;br /&gt;
&lt;br /&gt;
In the old operating system (AmigaOS 3.x) it was not possible to gain the full advantage of the new processors. The system itself and most of the applications required the original Motorola 680x0 processor. There was no 680x0 emulation available for the PowerPCs, so the 680x0 could not be &amp;quot;switched off&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Thus the new processors remained as a powerful, but mostly unused adjunct to the main 680x0 processor. &amp;quot;Native&amp;quot; PowerPC programs were rare, and every time a PowerPC program called the system, a so called &amp;quot;context switch&amp;quot; occurred between the 680x0 and PowerPC code, often causing a large performance penalty.&lt;br /&gt;
&lt;br /&gt;
The new Amiga platform is based on the PowerPC processor family, therefore the new version of the AmigaOS has to smooth the transition from the 680x0 series, which is achieved by emulating the old processor architecture. The operating system itself is written almost 100 percent for the PowerPC processors, but the 680x0 legacy applications require an emulated 680x0 processor. &lt;br /&gt;
&lt;br /&gt;
== Two 680x0 Emulators ==&lt;br /&gt;
&lt;br /&gt;
In version 4.0 of AmigaOS, two different emulators were implemented; one is the successor of BlackBox emulation, it is an interpretive emulator, thus the emulation speed is mediocre. On the other hand it has a very low &amp;quot;reaction time&amp;quot;, and is ideal for time critical parts, such as interrupts.&lt;br /&gt;
&lt;br /&gt;
The other is Petunia, the &amp;quot;JIT emulator&amp;quot;. A fast, but less compatible way of emulation of the legacy Motorola processors. It is intended mainly for emulating applications, and therefore, when execution of the application leaves the bounds of the application&#039;s code segment, emulation falls back to the interpretive method, where it does its job and returns to the JIT emulation again.&lt;br /&gt;
&lt;br /&gt;
Dynamic recompilation (also called just-in-time compilation or simply JIT compilation) is a technique of translating foreign processor machine code to native machine code, &amp;quot;on the fly&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This technique is common nowadays, commonly applied in JAVA virtual machines, and it is also used with success in several emulators. In dynamic recompilation there is the possibility of runtime optimization of the emulated code by collecting statistics of the execution process. Therefore (theoretically) the final executed code can be even faster than the original code on its original processor.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Emulated opcodes:&lt;br /&gt;
* all user and supervisor level opcodes of the Motorola 68040&lt;br /&gt;
* all FPU opcodes of the Motorola 68881/68882 &lt;br /&gt;
&lt;br /&gt;
AmigaOS claims only 68020/68881 compatibility to applications because this is the safest compatibility level, but both emulators are compatible with the machine code up to the level of 68040/060 processors.&lt;br /&gt;
&lt;br /&gt;
At compile time, a low level flag and branch control analysis allows on-the-fly optimizations of compiled code.&lt;br /&gt;
&lt;br /&gt;
== Removing the JIT Emulator ==&lt;br /&gt;
&lt;br /&gt;
Using the dynamic translation requires a lot more memory than the interpretive emulation. The translated code needs to be stored somewhere, not to mention the data collection tables.&lt;br /&gt;
&lt;br /&gt;
If speed is not as important as the memory consumption of the system, then the JIT emulator can be removed, leaving the job to the interpretive emulator.&lt;br /&gt;
&lt;br /&gt;
Thanks to the modular design of AmigaOS kickstart, all you need to do is edit the &amp;quot;Sys:Kickstart/Kicklayout&amp;quot; file, simply put a semicolon (;) at the beginning of the module line of Petunia.library.kmod. After rebooting the system from cold, the JIT emulator will not be reloaded. Make sure that you alter the appropriate configuration in the Kicklayout file, there may be several alternative configurations, with different names like &amp;quot;DefaultJIT&amp;quot;, or &amp;quot;DefaultNoJIT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Configuring the Emulators ==&lt;br /&gt;
&lt;br /&gt;
Petunia cooperates with a so called &amp;quot;black list&amp;quot;. By default Petunia emulates every 680x0 program or library that is loaded by DOS.library/LoadSeg function, but if an executable or library shows incompatibilities with Petunia, then it can be explicitly inhibited from the dynamic recompilation by specifying it in a list file.&lt;br /&gt;
&lt;br /&gt;
If an executable needs to be added to the list, then it can be done by extending the file &amp;quot;DEVS:applications.dos&amp;quot; with the &#039;&#039;&#039;Compatibility&#039;&#039;&#039; preferences program from the Prefs drawer of the system. Adding a program name to the list and checking it will prevent Petunia from emulating that program, and it will be interpreted instead by the built-in interpreter.&lt;br /&gt;
&lt;br /&gt;
Removing a program from the list or unchecking (thus allowing Petunia to emulate it again) can be done with the same preferences program.&lt;br /&gt;
&lt;br /&gt;
Please note: some programs consist of multiple executables (shared libraries, plugins). If you want to fully disable the translation of such programs, then every part must be added to the list.&lt;br /&gt;
&lt;br /&gt;
For example to disable UnArc fully, you would have to add all files from libs:xad and also xadmaster.library to the list. &lt;br /&gt;
&lt;br /&gt;
= AmigaOS boot procedure =&lt;br /&gt;
&lt;br /&gt;
Basically a computer with AmigaOS does the following when the power button is pushed:&lt;br /&gt;
&lt;br /&gt;
* [[File:Uboot.jpg|200px]]&lt;br /&gt;
the BIOS ([[UserDoc:BIOS|Uboot]] or [[UserDoc:BIOS|CFE]]) of the computer initialises the hardware: graphic card, USB ports... At this point, the monitor wakes up and the first information are displayed. This allows to see if hardware is correctly recognised. As an example you can see if a hard drive is correctly connected into the machine and your BIOS is correctly setup to make this drive useable.&lt;br /&gt;
* depending on how you setup the BIOS it will look on the harddisk to find the Second Level Booter (SLB). This program is stored on the first sectors of the disk. Whereas the BIOS does not know about AmigaOS disk structure, the SLB will be able to &#039;&#039;understand&#039;&#039; the AmigaOS partitions and files. In other words, it is the link between the BIOS and the rest of the boot procedure. Its goal is also to give you the ability to start several configurations present on the same drive.&lt;br /&gt;
* [[File:SLB.png|200px]]&lt;br /&gt;
the SLB will analyses all Amiga partitions on the disk it is installed on. It will read each [[UserDoc:kickstart_configuration|system configuration]] it finds on the partitions. It will show all available configurations for the user to select one to load.&lt;br /&gt;
The user can define many different kickstart configurations to choose from. Also both AmigaOS and Linux can be selected for boot.&lt;br /&gt;
* [[File:Kmods loading.png|200px]]&lt;br /&gt;
the SLB loads the kickstart files of the selected configuration and executes the &#039;&#039;&#039;Loader&#039;&#039;&#039; module&lt;br /&gt;
* &#039;&#039;&#039;Loader&#039;&#039;&#039; executes the kickstart modules (Exec, devices, libraries...)&lt;br /&gt;
* AmigaOS becomes alive displaying the AmigaOS boot picture on the monitor&lt;br /&gt;
* the AmigaDOS library executes the [[UserDoc:System_Scripts#startup-sequence|startup-sequence]] script found on the system volume&lt;br /&gt;
* the Startup-sequence will be executed and all commands it contains are executed. It means that starting from here the boot procedure is easy to follow and understand.&lt;br /&gt;
* the Workbench is started&lt;br /&gt;
&lt;br /&gt;
At this point the user can use his/her computer.&lt;br /&gt;
&lt;br /&gt;
= How to make a Bootable USB Memory Stick for AmigaOS 4.1 =&lt;br /&gt;
&lt;br /&gt;
By Julian Margetson (&amp;quot;Spectre660&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Prerequisites:&lt;br /&gt;
* USB memory stick of 2 GB or less in size.&lt;br /&gt;
* It is best to only have one USB mass storage device connected while you are creating your bootable USB memory stick.&lt;br /&gt;
* Plug the USB memory stick into a USB port on your machine.&lt;br /&gt;
* Note that the device will be formatted so make sure that you use an empty memory stick or one that does not contain any data that you need or backup the contents before you begin.&lt;br /&gt;
&lt;br /&gt;
Procedure:&lt;br /&gt;
# You use Media Toolbox in the System: drawer to prepare the USB stick. On starting Media Toolbox select &#039;&#039;usbdisk.device&#039;&#039; as the device to use.&lt;br /&gt;
# Make certain that you have selected usbdisk.device and not any other device.&lt;br /&gt;
# Click on &amp;quot;Start&amp;quot;&lt;br /&gt;
# You will see the usb mass storage unit connected in a list.&lt;br /&gt;
# Make sure that the Unit type displayed for the USB memory stick is &amp;quot;Removable hard disk&amp;quot;&lt;br /&gt;
# Select that Unit by clicking on it.&lt;br /&gt;
# The first thing that you need to do is to install the RDB onto the USB Memory Stick.&lt;br /&gt;
# Click on the  &amp;quot;Install&amp;quot; button.&lt;br /&gt;
# A window Labeled &amp;quot;RDB/disk geometry editing&amp;quot; comes up.&lt;br /&gt;
## Towards the bottom of the window is the &amp;quot;AmigaOne boot code (SLB)&amp;quot; section.&lt;br /&gt;
## Select the &amp;quot;Install&amp;quot; button .&lt;br /&gt;
## A file requester  &amp;quot;Select AmigaOne Boot Code&amp;quot; now comes  up with the Drawer choice defaulting to &amp;quot;l:&amp;quot;&lt;br /&gt;
## Select file &amp;quot;slb_v2&amp;quot;. &lt;br /&gt;
## Select Ok.&lt;br /&gt;
## You are now returned to the &amp;quot;RDB/disk geometry editing window&amp;quot;.&lt;br /&gt;
## Select &amp;quot;Ok-accept changes&amp;quot;.&lt;br /&gt;
# You are now returned to the display showing the attached USB unit.&lt;br /&gt;
# Select &amp;quot;Edit partitions and Filesystems&amp;quot;. You will now see the Window &#039;Editing partitions for disk&amp;quot;&lt;br /&gt;
# Select &amp;quot;Add partition&amp;quot;&lt;br /&gt;
# This defaults to using the whole device as a single partition.&lt;br /&gt;
# It is possible to use create more partitions but for this tutorial we will only use one.&lt;br /&gt;
# You now need to give the partition a unique name (e.g. USB0 or something that is different from any of the existing partitions on your hard drive). This is done by changing the default DH0 in the &amp;quot;Name&amp;quot; box.&lt;br /&gt;
# Now make sure that the Boxes &amp;quot;Automount&amp;quot; and &amp;quot;Bootable&amp;quot; are  selected and show the &amp;quot;Tick mark&amp;quot;.&lt;br /&gt;
# You need to set &amp;quot;Boot priority&amp;quot; to higher than the boot priority of your hard drive boot partition(s). This is done by increasing Boot priority by clicking on the &amp;quot;+&amp;quot; to the right of the &amp;quot;boot priority&amp;quot; box. Normally you can set the boot priority to 2 .&lt;br /&gt;
# Next it is time to select the file system to use.&lt;br /&gt;
# Select &amp;quot;Select filesystem/edit details&amp;quot;.&lt;br /&gt;
# The Window &amp;quot;Editing details for partition &#039;USB0&#039;&amp;quot;  ,or whatever partition name you used, comes up.&lt;br /&gt;
## Select the file system that you are going to use by selecting the pull down menu under &amp;quot;Filesystem chooser&amp;quot;.&lt;br /&gt;
## Only filesystems SFS/00 or SFS/02 will work for a bootable device.&lt;br /&gt;
## The option that gives the most flexibility at the moment is SFS/00 as a USB stick in this format can be read and written to using another compatible system in the event that you need to make modifications after it is created without a booting AmigaOS 4.1 machine.&lt;br /&gt;
## Next select Blocksize from the &amp;quot;Blocksize&amp;quot; pull down menu. 512 is the correct size to use.&lt;br /&gt;
## Now Select &amp;quot;Ok-accept changes&amp;quot;.&lt;br /&gt;
## Your are now returned to the &amp;quot;Edit partitions for disk&amp;quot; window.&lt;br /&gt;
## Again select &amp;quot;Ok-accept changes&amp;quot;&lt;br /&gt;
# You are now returned to the window showing the USB mass storage unit list.&lt;br /&gt;
# Select &amp;quot;Save to disk&amp;quot;&lt;br /&gt;
# A requester pops up with the options &amp;quot;Yes, Save.&amp;quot; or &amp;quot;No!&amp;quot;&lt;br /&gt;
# Select the &amp;quot;Yes, save.&amp;quot; option.&lt;br /&gt;
# You now close Media Toolbox by clicking on the close icon (X) on the left of the Media Toolbox window.&lt;br /&gt;
# This will give you a requester advising that you need to reboot the machine for the changes to take effect. At this point you need to remove the USB memory stick for the machine. If you do not then the Machine will attempt boot from it before it is formatted and the required Kickstart and AmigaOS 4.1 files are copied to it.&lt;br /&gt;
# Select &amp;quot;Yes, reboot NOW!&amp;quot;.&lt;br /&gt;
# Once you have rebooted connect your USB Memory Stick to a USB port.&lt;br /&gt;
# A disk icon &amp;quot;USB0:Uninitialized&amp;quot; (or whatever partition name you used) appears on Workbench.&lt;br /&gt;
# You now need to format the device.&lt;br /&gt;
# To format Select this Icon and go to the Workbench &amp;quot;Icons&amp;quot; menu .&lt;br /&gt;
# Select &amp;quot;Format Disk&amp;quot;&lt;br /&gt;
# You can give the USB Memory Stick a unique name and  select whether you want a Trashcan or not.&lt;br /&gt;
# You can use either a full Format or a  Quick Format. Full Format may take a few minutes.&lt;br /&gt;
# Once formatted the USB Memory Stick is ready for you to copy the required files from you hard drive or AmigaOS Install CD to it in order to boot AmigaOS 4.1 from it.&lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=UserDoc:How_AmigaOS_Works&amp;diff=7905</id>
		<title>UserDoc:How AmigaOS Works</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=UserDoc:How_AmigaOS_Works&amp;diff=7905"/>
		<updated>2015-05-29T06:07:39Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: /* Introduction */ added new punctuation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As already mentioned, AmigaOS was a pioneer in the early days of personal computing in delivering sophistication that contemporary systems could only have dreamt of and pretended to offer. Today, AmigaOS continues to offer a straightforward elegance that seems to be overlooked in the development of other platforms. Thanks to the concepts behind AmigaOS, the system is easy to understand and to use by everyone.&lt;br /&gt;
&lt;br /&gt;
In this page we will explore all these concepts of AmigaOS. Also you will learn here the naming of all parts of the system.&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
AmigaOS is made of different components which are either mandatory (i.e.,  AmigaOS will not work without them) or components the user can choose to use or not. All these components can have one or mutiple interfaces a user or a developer can use to operate with the components and through them to control the operating system.&lt;br /&gt;
&lt;br /&gt;
= The most important components =&lt;br /&gt;
&lt;br /&gt;
== Exec, the AmigaOS kernel ==&lt;br /&gt;
&lt;br /&gt;
Exec is the kernel of AmigaOS. It is the component that pilots all other components. It is responsible of running programs, dealing with computer memory, managing low-level resources that programs may need. In other words, it organises everything to make the operating system run.&lt;br /&gt;
&lt;br /&gt;
It is made of different parts that cannot be moved outside the kernel: the scheduler, the memory pager and the 68k interpretive emulator.&lt;br /&gt;
&lt;br /&gt;
== AmigaDOS: the underlying system ==&lt;br /&gt;
&lt;br /&gt;
The word &amp;quot;DOS&amp;quot; was originally an acronym for &amp;quot;Disk Operating System&amp;quot;. Some say it should be &amp;quot;Disk Based Operating System&amp;quot; as it does a lot more than operate a disk and that it was really an operating system based (stored) on disks.  Some say it should be &amp;quot;Device Operating System&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The whole AmigaDOS system includes things such as:&lt;br /&gt;
&lt;br /&gt;
* A set of commands that can be used in the Shell window and elsewhere.&lt;br /&gt;
* A system for saving data to disk and retrieving it from disk.&lt;br /&gt;
* A system for filing data on disks.&lt;br /&gt;
* An interface for peripherals such as keyboards, monitors, printers, etc.&lt;br /&gt;
* A method of running programs&lt;br /&gt;
* A multitasking system for running more than one program at a time.&lt;br /&gt;
* etc. etc. etc.&lt;br /&gt;
&lt;br /&gt;
Read the [[AmigaDOS manual]] to understand and learn everything about AmigaDOS.&lt;br /&gt;
&lt;br /&gt;
== The Graphics library ==&lt;br /&gt;
&lt;br /&gt;
The Graphics library handles every low level graphic operations like designing pixels on the monitor, creating graphic elements (bobs, sprites) and also writing text output.&lt;br /&gt;
&lt;br /&gt;
== Intuition ==&lt;br /&gt;
&lt;br /&gt;
The Intuition library is responsible for every graphical objects: windows, screens, gadgets, mouse pointers... It lays between any graphic program and the graphics library.&lt;br /&gt;
&lt;br /&gt;
== The Workbench ==&lt;br /&gt;
&lt;br /&gt;
The Workbench is the graphical place where you will manage your computer and all your files. The name was chosen because the user will use tools to create and work with the computer.&lt;br /&gt;
&lt;br /&gt;
[[File:Wb.png|320px]]&lt;br /&gt;
&lt;br /&gt;
== The Shell ==&lt;br /&gt;
&lt;br /&gt;
While some people prefer to control the operating system using their mouse, others prefer using the keyboard. The shell is a text based window when you can type commands to execute actions in the operating system. In the shell the commands will display the results of their execution.&lt;br /&gt;
&lt;br /&gt;
== ARexx - inter-program communication by scripting ==&lt;br /&gt;
&lt;br /&gt;
The ARexx scripting language can be used to operate the Workbench and the most important Amiga applications from a script containing ARexx commands. This is extremely useful to perform repetitive tasks or to do what the controlled application was not even design to do.&lt;br /&gt;
After a learning curve, everybody can use ARexx as it is built in the system and the scripts can be executed immediately like any other tool.&lt;br /&gt;
&lt;br /&gt;
= How is my data stored? =&lt;br /&gt;
== Files ==&lt;br /&gt;
=== Executable files ===&lt;br /&gt;
Programs you can start are stored in executable files. They contain binary code directly understandable by the computer. They are files with an executable bit, a flag that shows AmigaOS that such file will do something when started.&lt;br /&gt;
An example is a music player. When you start this executable, the player opens and you can start playing music files.&lt;br /&gt;
&lt;br /&gt;
AmigaOS can run two different kinds of executable files: the AmigaOS native programs made for the PowerPC processor and programs created for the Motorola 68k processors. The laters are executed inside an emulation that transcripts them into PowerPC code.&lt;br /&gt;
&lt;br /&gt;
==== Scripts ====&lt;br /&gt;
&lt;br /&gt;
Scripts are text files containing a list of commands. So they are not strictly executables like &#039;&#039;binary code&#039;&#039; files but they can be executed by AmigaOS like if they were.&lt;br /&gt;
This is the case with AmigaDOS and ARexx scripts. These files need to have the executable bit, and the script bit.&lt;br /&gt;
&lt;br /&gt;
=== Data files ===&lt;br /&gt;
Files that are not executable are data files. These contain some data that will be manipulated by programs. Some examples are a music file, a video file or a text document.&lt;br /&gt;
&lt;br /&gt;
== Directories/Drawers ==&lt;br /&gt;
In order to organise things a bit, files are not all of them in the same place. We create directories which like drawers of a cabinet will store different files of the same kind.&lt;br /&gt;
Often the name &#039;&#039;directory&#039;&#039; is used when talking about the directory which is stored on a disk. The graphical interface of AmigaOS being called the Workbench, directories are often called &#039;&#039;drawers&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Note: directories are often called &#039;&#039;folders&#039;&#039; on other systems.&lt;br /&gt;
&lt;br /&gt;
== Disks, partitions and volumes ==&lt;br /&gt;
=== Disks ===&lt;br /&gt;
Disks are storage medium you can purchase on a computer store. We use them to store our files. They can be internal hard disks, external ones or a USB disk drive.&lt;br /&gt;
&lt;br /&gt;
=== Partitions ===&lt;br /&gt;
A disk is often very big and many users prefer to make it more organised. This is done virtually splitting the disk into several smaller parts. This operation is known as creating partitions on a disk.&lt;br /&gt;
&lt;br /&gt;
[[File:Partitions.png|Small part of Media Toolbox showing different partitions on the harddisk]]&lt;br /&gt;
&lt;br /&gt;
On this screenshot you can see one harddisk with many partitions. Each color corresponds to a different filesystem which defines how data is stored. Also you can see a greyed area which is a blank area on the disk i.e. no partition is defined at this position.&lt;br /&gt;
&lt;br /&gt;
=== Volumes ===&lt;br /&gt;
A partition is a physical area on a disk. To access it with AmigaOS we could read the physical data off the partition but it&#039;s not an easy way. To make it easier AmigaOS uses the concept of volumes. These are virtual representations of a partition. The volumes have a name so AmigaOS and therefore the user can access all files/directories stored on it in a very practical way: just by using its name.&lt;br /&gt;
&lt;br /&gt;
= How to identify files/directories =&lt;br /&gt;
&lt;br /&gt;
== On the Workbench ==&lt;br /&gt;
&lt;br /&gt;
The Workbench being graphical, a lot of things are understandable just by looking at them. That&#039;s why icons are often enough to understand what kind of object it represents: a file, a directory, a disk...&lt;br /&gt;
&lt;br /&gt;
In case you have a doubt, just look at the information on an icon. The Workbench will tell you the type of the object. It is displayed next to its name.&lt;br /&gt;
&lt;br /&gt;
== In a shell ==&lt;br /&gt;
&lt;br /&gt;
In a shell the &#039;&#039;&#039;list&#039;&#039;&#039; command can be used to see if an object is a file or a directory.&lt;br /&gt;
&lt;br /&gt;
[[File:Files-dirs-in-shell.png|The &#039;&#039;&#039;list&#039;&#039;&#039; command shows a file of 925678 bytes and two directories]]&lt;br /&gt;
&lt;br /&gt;
A file will be displayed with its size, whereas a directory will be displayed with the text &#039;&#039;&#039;Dir&#039;&#039;&#039; next to it.&lt;br /&gt;
&lt;br /&gt;
Also, as you can see on the screenshot, the list command displays other characteristics on these 3 items: the protection bits and the date they were updated the last time. The command also sums up what it just listed.&lt;br /&gt;
&lt;br /&gt;
= All AmigaOS components =&lt;br /&gt;
&lt;br /&gt;
AmigaOS is made of components that are needed as soon as the system starts or later when the user or the system needs them.&lt;br /&gt;
&lt;br /&gt;
== Kickstart modules ==&lt;br /&gt;
&lt;br /&gt;
These components are the heart of AmigaOS. Their duties is to do graphics, to handle discs or to handle all reads/writes to files. Also one of them is the AmigaOS kernel which is a kind of director handling the work of all other components.&lt;br /&gt;
These Kickstart modules are loaded at the beginning of the operating system boot process (read [[UserDoc:How_AmigaOS_Works#AmigaOS_boot_procedure|here]]). You can find all them in the &#039;&#039;&#039;Kickstart&#039;&#039;&#039; directory in the system volume. Here is a list:&lt;br /&gt;
&lt;br /&gt;
=== Mandatory modules ===&lt;br /&gt;
&lt;br /&gt;
The following modules are required in any AmigaOS system. Without one of these, the system will not start.&lt;br /&gt;
&lt;br /&gt;
* kernel - The kernel works like a conductor in an orchestra. Its job is to make everything works together. It creates processes, handle memory usage, defines the way other components will access peripherals...etc. Note that the AmigaOS kernel is not based on any other kernel. It is a self made kernel that works since 1983.&lt;br /&gt;
* loader - this component handles the loading of all other kickstart modules&lt;br /&gt;
* battclock.resource.kmod - this module handles reading/writing the battery backed up clock which is used on all computers to keep the date and time&lt;br /&gt;
* bootimage - this is the boot picture. It is displayed during the start sequence of AmigaOS&lt;br /&gt;
* bootmenu.kmod - this component handles the Early Startup Menu the use can use to define some settings before starting AmigaOS&lt;br /&gt;
* con-handler.kmod - it directs the read and write requests to the console window, to a serial AUX: device or any other supported interface&lt;br /&gt;
* console.device.kmod - it opens a window and reads/writes text to and from that window&lt;br /&gt;
* diskboot.kmod - handles the booting of AmigaOS from a supported disk&lt;br /&gt;
* diskboot.config - this is a text file experienced users can modify to change the boot behaviour of AmigaOS&lt;br /&gt;
* dos.library.kmod - this module is a collection of functions that any program can use to perform actions on disks, files and directories&lt;br /&gt;
* elf.library.kmod - handles the loading of executable programs&lt;br /&gt;
* env-handler.kmod - handles the read/writes of environment variables&lt;br /&gt;
* FileSystem.resource.kmod - handles the use of the different filesystems&lt;br /&gt;
* gadtools.library.kmod - collection of functions used to create all graphic objects like gadgets, sliders, menus...&lt;br /&gt;
* gameport.device.kmod - handles the read/writes of game pads and joysticks&lt;br /&gt;
* graphics.library.kmod - collection of functions used to draw graphic elements on the monitor&lt;br /&gt;
* hunk.library.kmod - set of functions to read a data stream into memory&lt;br /&gt;
* input.device.kmod - handles of input events like keyboard events or mouse clicks&lt;br /&gt;
* intuition.library.kmod - collection of functions to create and handle all graphic elements (screens, windows, the mouse pointer...)&lt;br /&gt;
* layers.library.kmod - set of functions to be used to handle different layers in graphic operations&lt;br /&gt;
* keyboard.device.kmod - driver for the keyboard&lt;br /&gt;
* keymap.library.kmod - functions to handle different keymaps&lt;br /&gt;
* newlib.library.kmod - collection of functions to perform memory operations (allocating memory, copying memory areas... )&lt;br /&gt;
* nonvolatile.library.kmod - provides a simple means for an application developer to manage nonvolatile storage&lt;br /&gt;
* nvram.resource.kmod - handles the read/writes to the EEPROM chip present on many AmigaOS computers&lt;br /&gt;
* PCIGraphics.card - driver that supports the use of different graphic cards&lt;br /&gt;
* ram-handler.kmod - functions that handles the &#039;&#039;&#039;Ram disk:&#039;&#039;&#039; special disk&lt;br /&gt;
* ramdrive.device.kmod - device that allows the usage of the ramdrive device &#039;&#039;&#039;RAD:&#039;&#039;&#039; disk&lt;br /&gt;
* ramlib.kmod - loads disk based libraries and devices for exec.library&lt;br /&gt;
* rtg.library - library of functions to perform lowlevel graphic operations on graphic cards&lt;br /&gt;
* shell.kmod - the AmigaOS command line interface&lt;br /&gt;
* strap.kmod - module that handles booting on different disk devices&lt;br /&gt;
* timer.device.kmod - driver to give access to timing functions&lt;br /&gt;
&lt;br /&gt;
=== Filesystem support ===&lt;br /&gt;
&lt;br /&gt;
These kickstart modules can be loaded or left aside. If you want to use a particular filesystem on your disk partitions, you need to load the corresponding filesystem module.&lt;br /&gt;
&lt;br /&gt;
* CDFileSystem - handles the CD-ROM disks with data stored in different formats: ISO9660, HFS...&lt;br /&gt;
* SmartFilesystem - allows the usage of partitions in SFS0 and SFS2 layouts&lt;br /&gt;
* JXFileSystem - allows the usage of partitions in JXFS layout&lt;br /&gt;
* FastFileSystem - allows the usage of partitions in FFS and FFS2 layouts&lt;br /&gt;
* diskcache.library.kmod - component required by the SmartFileSystem and JXFileSystem modules&lt;br /&gt;
&lt;br /&gt;
=== Hardware drivers ===&lt;br /&gt;
&lt;br /&gt;
==== Graphic cards drivers ====&lt;br /&gt;
&lt;br /&gt;
* 3dfxVoodoo.chip&lt;br /&gt;
* 3DLabsPermedia2.chip&lt;br /&gt;
* ATIRadeon.chip&lt;br /&gt;
* RadeonHD.chip&lt;br /&gt;
* siliconmotion502.chip&lt;br /&gt;
&lt;br /&gt;
==== Disk drivers ====&lt;br /&gt;
&lt;br /&gt;
Each of these drivers allow the use of disks connected to a disk controller. These files are named with the name of the controller they support. As an example, the &#039;&#039;&#039;sii3114ide.device.kmod&#039;&#039;&#039; allows to use disks connected on a &#039;&#039;&#039;Silicon Image SiI3114&#039;&#039;&#039; controller chip.&lt;br /&gt;
&lt;br /&gt;
* it8212ide.device.kmod&lt;br /&gt;
* lsi53c8xx.device.kmod&lt;br /&gt;
* sam460sata.device.kmod&lt;br /&gt;
* sii3112ide.device.kmod&lt;br /&gt;
* sii3512ide.device.kmod&lt;br /&gt;
* sii3114ide.device.kmod&lt;br /&gt;
* sii0680ide.device.kmod&lt;br /&gt;
* sii3132ide.device.kmod&lt;br /&gt;
&lt;br /&gt;
==== USB drivers ====&lt;br /&gt;
&lt;br /&gt;
* hub.usbfd&lt;br /&gt;
* usbsys.device&lt;br /&gt;
* usbresource.library&lt;br /&gt;
* ehci.usbhcd&lt;br /&gt;
* ohci.usbhcd&lt;br /&gt;
* uhci.usbhcd&lt;br /&gt;
* massstorage.usbfd&lt;br /&gt;
&lt;br /&gt;
==== Other drivers ====&lt;br /&gt;
&lt;br /&gt;
* bootkeyboard.usbfd - allows a USB keyboard to be used even before the USB stack is loaded&lt;br /&gt;
* bootmouse.usbfd - allows a USB mouse to be used even before the USB stack is loaded&lt;br /&gt;
* fpga.resource.kmod - allows to use the FPGA components which are present on some Amiga computers&lt;br /&gt;
* i2c.resource.kmod - allows to use the i2c interface present on some Amiga computers&lt;br /&gt;
* xena.resource.kmod - provides access to the Xena chip on the AmigaOne X1000&lt;br /&gt;
&lt;br /&gt;
=== Misc modules ===&lt;br /&gt;
&lt;br /&gt;
* petunia.library.kmod - this module contains the Just-In-Time emulator that allows AmigaOS to run programs made for the Motorola 68k processor&lt;br /&gt;
&lt;br /&gt;
== System components ==&lt;br /&gt;
&lt;br /&gt;
[[File:Workbench_directory_listing.png|frame|right|List of directories and files present at the root of any AmigaOS system]]&lt;br /&gt;
&lt;br /&gt;
Beside the kickstart modules, AmigaOS uses many different components that can be loaded only when used. These files are stored in different directories in the system volume.&lt;br /&gt;
Here is described a default AmigaOS installation.&lt;br /&gt;
&lt;br /&gt;
* C&lt;br /&gt;
This directory contains AmigaDOS &#039;&#039;&#039;C&#039;&#039;&#039;ommands&lt;br /&gt;
* Classes&lt;br /&gt;
contains different object elements easy to be used in any program: gadgets, requesters, graphic table, windows...&lt;br /&gt;
* Devs&lt;br /&gt;
contains definition for &#039;&#039;&#039;Dev&#039;&#039;&#039;ices&lt;br /&gt;
* Emulation&lt;br /&gt;
contains files used for the 68k emulation (though E-UAE)&lt;br /&gt;
* Fonts&lt;br /&gt;
contains various systems fonts&lt;br /&gt;
* Internet&lt;br /&gt;
contains a dialer to connect to Internet&lt;br /&gt;
* Kickstart&lt;br /&gt;
contains the kickstart modules&lt;br /&gt;
* L&lt;br /&gt;
contains hand&#039;&#039;&#039;l&#039;&#039;&#039;ers and filesystems&lt;br /&gt;
* Libs&lt;br /&gt;
contains dynamic &#039;&#039;&#039;Libr&#039;&#039;&#039;airies of functions&lt;br /&gt;
* Locale&lt;br /&gt;
contains all files used to localise the system (catalogs, keymaps...)&lt;br /&gt;
* MUI&lt;br /&gt;
contains the needed files for programs that use the MUI third party graphic interface&lt;br /&gt;
* [[Prefs]]&lt;br /&gt;
contains the preference programs used to customise AmigaOS&lt;br /&gt;
* S&lt;br /&gt;
contains the &#039;&#039;&#039;S&#039;&#039;&#039;cripts&lt;br /&gt;
* SObjs&lt;br /&gt;
contains .so shared object library files&lt;br /&gt;
* Storage&lt;br /&gt;
contains other optional files&lt;br /&gt;
* System&lt;br /&gt;
contains some programs used by the system itself (i.e. you don&#039;t need to run them yourself) or low-level programs like disk tools&lt;br /&gt;
* [[Utilities]]&lt;br /&gt;
contains several programs you can use to achieve some tasks on AmigaOS&lt;br /&gt;
&lt;br /&gt;
= Motorola 680x0 Emulators =&lt;br /&gt;
&lt;br /&gt;
For a long time Amigas have had the famous Motorola 680x0 processors as the central unit for execution. Unfortunately the time of the 680x0 series is passing in favor of other architectures. The new era of processors reached the Amiga some time ago, when expansion boards became available for extending the Classic systems with the raw power of a PowerPC processor.&lt;br /&gt;
&lt;br /&gt;
In the old operating system (AmigaOS 3.x) it was not possible to gain the full advantage of the new processors. The system itself and most of the applications required the original Motorola 680x0 processor. There was no 680x0 emulation available for the PowerPCs, so the 680x0 could not be &amp;quot;switched off&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Thus the new processors remained as a powerful, but mostly unused adjunct to the main 680x0 processor. &amp;quot;Native&amp;quot; PowerPC programs were rare, and every time a PowerPC program called the system, a so called &amp;quot;context switch&amp;quot; occurred between the 680x0 and PowerPC code, often causing a large performance penalty.&lt;br /&gt;
&lt;br /&gt;
The new Amiga platform is based on the PowerPC processor family, therefore the new version of the AmigaOS has to smooth the transition from the 680x0 series, which is achieved by emulating the old processor architecture. The operating system itself is written almost 100 percent for the PowerPC processors, but the 680x0 legacy applications require an emulated 680x0 processor. &lt;br /&gt;
&lt;br /&gt;
== Two 680x0 Emulators ==&lt;br /&gt;
&lt;br /&gt;
In version 4.0 of AmigaOS, two different emulators were implemented; one is the successor of BlackBox emulation, it is an interpretive emulator, thus the emulation speed is mediocre. On the other hand it has a very low &amp;quot;reaction time&amp;quot;, and is ideal for time critical parts, such as interrupts.&lt;br /&gt;
&lt;br /&gt;
The other is Petunia, the &amp;quot;JIT emulator&amp;quot;. A fast, but less compatible way of emulation of the legacy Motorola processors. It is intended mainly for emulating applications, and therefore, when execution of the application leaves the bounds of the application&#039;s code segment, emulation falls back to the interpretive method, where it does its job and returns to the JIT emulation again.&lt;br /&gt;
&lt;br /&gt;
Dynamic recompilation (also called just-in-time compilation or simply JIT compilation) is a technique of translating foreign processor machine code to native machine code, &amp;quot;on the fly&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This technique is common nowadays, commonly applied in JAVA virtual machines, and it is also used with success in several emulators. In dynamic recompilation there is the possibility of runtime optimization of the emulated code by collecting statistics of the execution process. Therefore (theoretically) the final executed code can be even faster than the original code on its original processor.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Emulated opcodes:&lt;br /&gt;
* all user and supervisor level opcodes of the Motorola 68040&lt;br /&gt;
* all FPU opcodes of the Motorola 68881/68882 &lt;br /&gt;
&lt;br /&gt;
AmigaOS claims only 68020/68881 compatibility to applications because this is the safest compatibility level, but both emulators are compatible with the machine code up to the level of 68040/060 processors.&lt;br /&gt;
&lt;br /&gt;
At compile time, a low level flag and branch control analysis allows on-the-fly optimizations of compiled code.&lt;br /&gt;
&lt;br /&gt;
== Removing the JIT Emulator ==&lt;br /&gt;
&lt;br /&gt;
Using the dynamic translation requires a lot more memory than the interpretive emulation. The translated code needs to be stored somewhere, not to mention the data collection tables.&lt;br /&gt;
&lt;br /&gt;
If speed is not as important as the memory consumption of the system, then the JIT emulator can be removed, leaving the job to the interpretive emulator.&lt;br /&gt;
&lt;br /&gt;
Thanks to the modular design of AmigaOS kickstart, all you need to do is edit the &amp;quot;Sys:Kickstart/Kicklayout&amp;quot; file, simply put a semicolon (;) at the beginning of the module line of Petunia.library.kmod. After rebooting the system from cold, the JIT emulator will not be reloaded. Make sure that you alter the appropriate configuration in the Kicklayout file, there may be several alternative configurations, with different names like &amp;quot;DefaultJIT&amp;quot;, or &amp;quot;DefaultNoJIT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Configuring the Emulators ==&lt;br /&gt;
&lt;br /&gt;
Petunia cooperates with a so called &amp;quot;black list&amp;quot;. By default Petunia emulates every 680x0 program or library that is loaded by DOS.library/LoadSeg function, but if an executable or library shows incompatibilities with Petunia, then it can be explicitly inhibited from the dynamic recompilation by specifying it in a list file.&lt;br /&gt;
&lt;br /&gt;
If an executable needs to be added to the list, then it can be done by extending the file &amp;quot;DEVS:applications.dos&amp;quot; with the &#039;&#039;&#039;Compatibility&#039;&#039;&#039; preferences program from the Prefs drawer of the system. Adding a program name to the list and checking it will prevent Petunia from emulating that program, and it will be interpreted instead by the built-in interpreter.&lt;br /&gt;
&lt;br /&gt;
Removing a program from the list or unchecking (thus allowing Petunia to emulate it again) can be done with the same preferences program.&lt;br /&gt;
&lt;br /&gt;
Please note: some programs consist of multiple executables (shared libraries, plugins). If you want to fully disable the translation of such programs, then every part must be added to the list.&lt;br /&gt;
&lt;br /&gt;
For example to disable UnArc fully, you would have to add all files from libs:xad and also xadmaster.library to the list. &lt;br /&gt;
&lt;br /&gt;
= AmigaOS boot procedure =&lt;br /&gt;
&lt;br /&gt;
Basically a computer with AmigaOS does the following when the power button is pushed:&lt;br /&gt;
&lt;br /&gt;
* [[File:Uboot.jpg|200px]]&lt;br /&gt;
the BIOS ([[UserDoc:BIOS|Uboot]] or [[UserDoc:BIOS|CFE]]) of the computer initialises the hardware: graphic card, USB ports... At this point, the monitor wakes up and the first information are displayed. This allows to see if hardware is correctly recognised. As an example you can see if a hard drive is correctly connected into the machine and your BIOS is correctly setup to make this drive useable.&lt;br /&gt;
* depending on how you setup the BIOS it will look on the harddisk to find the Second Level Booter (SLB). This program is stored on the first sectors of the disk. Whereas the BIOS does not know about AmigaOS disk structure, the SLB will be able to &#039;&#039;understand&#039;&#039; the AmigaOS partitions and files. In other words, it is the link between the BIOS and the rest of the boot procedure. Its goal is also to give you the ability to start several configurations present on the same drive.&lt;br /&gt;
* [[File:SLB.png|200px]]&lt;br /&gt;
the SLB will analyses all Amiga partitions on the disk it is installed on. It will read each [[UserDoc:kickstart_configuration|system configuration]] it finds on the partitions. It will show all available configurations for the user to select one to load.&lt;br /&gt;
The user can define many different kickstart configurations to choose from. Also both AmigaOS and Linux can be selected for boot.&lt;br /&gt;
* [[File:Kmods loading.png|200px]]&lt;br /&gt;
the SLB loads the kickstart files of the selected configuration and executes the &#039;&#039;&#039;Loader&#039;&#039;&#039; module&lt;br /&gt;
* &#039;&#039;&#039;Loader&#039;&#039;&#039; executes the kickstart modules (Exec, devices, libraries...)&lt;br /&gt;
* AmigaOS becomes alive displaying the AmigaOS boot picture on the monitor&lt;br /&gt;
* the AmigaDOS library executes the [[UserDoc:System_Scripts#startup-sequence|startup-sequence]] script found on the system volume&lt;br /&gt;
* the Startup-sequence will be executed and all commands it contains are executed. It means that starting from here the boot procedure is easy to follow and understand.&lt;br /&gt;
* the Workbench is started&lt;br /&gt;
&lt;br /&gt;
At this point the user can use his/her computer.&lt;br /&gt;
&lt;br /&gt;
= How to make a Bootable USB Memory Stick for AmigaOS 4.1 =&lt;br /&gt;
&lt;br /&gt;
By Julian Margetson (&amp;quot;Spectre660&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Prerequisites:&lt;br /&gt;
* USB memory stick of 2 GB or less in size.&lt;br /&gt;
* It is best to only have one USB mass storage device connected while you are creating your bootable USB memory stick.&lt;br /&gt;
* Plug the USB memory stick into a USB port on your machine.&lt;br /&gt;
* Note that the device will be formatted so make sure that you use an empty memory stick or one that does not contain any data that you need or backup the contents before you begin.&lt;br /&gt;
&lt;br /&gt;
Procedure:&lt;br /&gt;
# You use Media Toolbox in the System: drawer to prepare the USB stick. On starting Media Toolbox select &#039;&#039;usbdisk.device&#039;&#039; as the device to use.&lt;br /&gt;
# Make certain that you have selected usbdisk.device and not any other device.&lt;br /&gt;
# Click on &amp;quot;Start&amp;quot;&lt;br /&gt;
# You will see the usb mass storage unit connected in a list.&lt;br /&gt;
# Make sure that the Unit type displayed for the USB memory stick is &amp;quot;Removable hard disk&amp;quot;&lt;br /&gt;
# Select that Unit by clicking on it.&lt;br /&gt;
# The first thing that you need to do is to install the RDB onto the USB Memory Stick.&lt;br /&gt;
# Click on the  &amp;quot;Install&amp;quot; button.&lt;br /&gt;
# A window Labeled &amp;quot;RDB/disk geometry editing&amp;quot; comes up.&lt;br /&gt;
## Towards the bottom of the window is the &amp;quot;AmigaOne boot code (SLB)&amp;quot; section.&lt;br /&gt;
## Select the &amp;quot;Install&amp;quot; button .&lt;br /&gt;
## A file requester  &amp;quot;Select AmigaOne Boot Code&amp;quot; now comes  up with the Drawer choice defaulting to &amp;quot;l:&amp;quot;&lt;br /&gt;
## Select file &amp;quot;slb_v2&amp;quot;. &lt;br /&gt;
## Select Ok.&lt;br /&gt;
## You are now returned to the &amp;quot;RDB/disk geometry editing window&amp;quot;.&lt;br /&gt;
## Select &amp;quot;Ok-accept changes&amp;quot;.&lt;br /&gt;
# You are now returned to the display showing the attached USB unit.&lt;br /&gt;
# Select &amp;quot;Edit partitions and Filesystems&amp;quot;. You will now see the Window &#039;Editing partitions for disk&amp;quot;&lt;br /&gt;
# Select &amp;quot;Add partition&amp;quot;&lt;br /&gt;
# This defaults to using the whole device as a single partition.&lt;br /&gt;
# It is possible to use create more partitions but for this tutorial we will only use one.&lt;br /&gt;
# You now need to give the partition a unique name (e.g. USB0 or something that is different from any of the existing partitions on your hard drive). This is done by changing the default DH0 in the &amp;quot;Name&amp;quot; box.&lt;br /&gt;
# Now make sure that the Boxes &amp;quot;Automount&amp;quot; and &amp;quot;Bootable&amp;quot; are  selected and show the &amp;quot;Tick mark&amp;quot;.&lt;br /&gt;
# You need to set &amp;quot;Boot priority&amp;quot; to higher than the boot priority of your hard drive boot partition(s). This is done by increasing Boot priority by clicking on the &amp;quot;+&amp;quot; to the right of the &amp;quot;boot priority&amp;quot; box. Normally you can set the boot priority to 2 .&lt;br /&gt;
# Next it is time to select the file system to use.&lt;br /&gt;
# Select &amp;quot;Select filesystem/edit details&amp;quot;.&lt;br /&gt;
# The Window &amp;quot;Editing details for partition &#039;USB0&#039;&amp;quot;  ,or whatever partition name you used, comes up.&lt;br /&gt;
## Select the file system that you are going to use by selecting the pull down menu under &amp;quot;Filesystem chooser&amp;quot;.&lt;br /&gt;
## Only filesystems SFS/00 or SFS/02 will work for a bootable device.&lt;br /&gt;
## The option that gives the most flexibility at the moment is SFS/00 as a USB stick in this format can be read and written to using another compatible system in the event that you need to make modifications after it is created without a booting AmigaOS 4.1 machine.&lt;br /&gt;
## Next select Blocksize from the &amp;quot;Blocksize&amp;quot; pull down menu. 512 is the correct size to use.&lt;br /&gt;
## Now Select &amp;quot;Ok-accept changes&amp;quot;.&lt;br /&gt;
## Your are now returned to the &amp;quot;Edit partitions for disk&amp;quot; window.&lt;br /&gt;
## Again select &amp;quot;Ok-accept changes&amp;quot;&lt;br /&gt;
# You are now returned to the window showing the USB mass storage unit list.&lt;br /&gt;
# Select &amp;quot;Save to disk&amp;quot;&lt;br /&gt;
# A requester pops up with the options &amp;quot;Yes, Save.&amp;quot; or &amp;quot;No!&amp;quot;&lt;br /&gt;
# Select the &amp;quot;Yes, save.&amp;quot; option.&lt;br /&gt;
# You now close Media Toolbox by clicking on the close icon (X) on the left of the Media Toolbox window.&lt;br /&gt;
# This will give you a requester advising that you need to reboot the machine for the changes to take effect. At this point you need to remove the USB memory stick for the machine. If you do not then the Machine will attempt boot from it before it is formatted and the required Kickstart and AmigaOS 4.1 files are copied to it.&lt;br /&gt;
# Select &amp;quot;Yes, reboot NOW!&amp;quot;.&lt;br /&gt;
# Once you have rebooted connect your USB Memory Stick to a USB port.&lt;br /&gt;
# A disk icon &amp;quot;USB0:Uninitialized&amp;quot; (or whatever partition name you used) appears on Workbench.&lt;br /&gt;
# You now need to format the device.&lt;br /&gt;
# To format Select this Icon and go to the Workbench &amp;quot;Icons&amp;quot; menu .&lt;br /&gt;
# Select &amp;quot;Format Disk&amp;quot;&lt;br /&gt;
# You can give the USB Memory Stick a unique name and  select whether you want a Trashcan or not.&lt;br /&gt;
# You can use either a full Format or a  Quick Format. Full Format may take a few minutes.&lt;br /&gt;
# Once formatted the USB Memory Stick is ready for you to copy the required files from you hard drive or AmigaOS Install CD to it in order to boot AmigaOS 4.1 from it.&lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=Tutorials:Main&amp;diff=7765</id>
		<title>Tutorials:Main</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=Tutorials:Main&amp;diff=7765"/>
		<updated>2014-09-23T07:41:58Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: /* AmiWest 2013 section finished */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Tutorials =&lt;br /&gt;
&lt;br /&gt;
Tutorials have been provided by various authors.&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
[[The Hacking Way: Part 1 - First Steps]]&lt;br /&gt;
&lt;br /&gt;
[[The Right Tool for the Job (Shared Objects)]]&lt;br /&gt;
&lt;br /&gt;
[[How to Build Stubs for 68k Libraries]]&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
&lt;br /&gt;
[[How to install a hardware interrupt]]&lt;br /&gt;
&lt;br /&gt;
[[How to open and use the exec debug interface]]&lt;br /&gt;
&lt;br /&gt;
[[GDB for Beginners]]&lt;br /&gt;
&lt;br /&gt;
[[Using Crash-Logs for Debugging]]&lt;br /&gt;
&lt;br /&gt;
[[Debug Logging on AmigaOS]]&lt;br /&gt;
&lt;br /&gt;
[[Redirecting Debug Output to the Serial Port on Startup]]&lt;br /&gt;
&lt;br /&gt;
[[Advanced Serial Debugging Guide]]&lt;br /&gt;
&lt;br /&gt;
== GUI ==&lt;br /&gt;
&lt;br /&gt;
[[BOOPSI Gadget Help Strings]]&lt;br /&gt;
&lt;br /&gt;
[[BOOPSI Popup Menus - Part 1]]&lt;br /&gt;
&lt;br /&gt;
[[BOOPSI Popup Menus - Part 2]]&lt;br /&gt;
&lt;br /&gt;
[[BOOPSI Popup Menus - Part 3]]&lt;br /&gt;
&lt;br /&gt;
[[Screen Programming]]&lt;br /&gt;
&lt;br /&gt;
== AmiWest 2014 ==&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Setup]]&lt;br /&gt;
&lt;br /&gt;
== AmiWest 2013 ==&lt;br /&gt;
	&lt;br /&gt;
[[AmiWest 2013 Programming Conference Synopsis]]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Setup]]&lt;br /&gt;
	&lt;br /&gt;
[[AmiWest 2013 Lesson 1|AmiWest Lesson 1: How to Crash]]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest 2013 Lesson 2|AmiWest Lesson 2: Interpreting Crash Reports]]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest 2013 Lesson 3|AmiWest Lesson 3: ProcTree Redux]]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest 2013 Lesson 4|AmiWest Lesson 4: Simple IP Clients &amp;amp; Servers]]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest 2013 Lesson 5|AmiWest Lesson 5: Bars&amp;amp;Pipes Tools]]&lt;br /&gt;
&lt;br /&gt;
== AmiWest 2012 ==&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Setup]] [https://dl.dropboxusercontent.com/u/680455/AmiWest-2012-Programming/Introduction-360.mp4 - Video]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Lesson 1|AmiWest Lesson 1: Coding Basics]] [https://dl.dropboxusercontent.com/u/680455/AmiWest-2012-Programming/Lesson01-360.mp4 - Video]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Lesson 2|AmiWest Lesson 2: AmigaOS Fundamentals]][https://dl.dropboxusercontent.com/u/680455/AmiWest-2012-Programming/Lesson02-360.mp4 - Video]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Lesson 3|AmiWest Lesson 3: Input and Output]][https://dl.dropboxusercontent.com/u/680455/AmiWest-2012-Programming/Lesson03-360.mp4 - Video]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Lesson 4|AmiWest Lesson 4: ProcTree]][https://dl.dropboxusercontent.com/u/680455/AmiWest-2012-Programming/Lesson04-360.mp4 - Video]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Lesson 5|AmiWest Lesson 5: MIDI]][https://dl.dropboxusercontent.com/u/680455/AmiWest-2012-Programming/Lesson05-360.mp4 - Video]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Lesson 6|AmiWest Lesson 6: Application Library - Not Presented]]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Lesson 7|AmiWest Lesson 7: Screen Blanker]][https://dl.dropboxusercontent.com/u/680455/AmiWest-2012-Programming/Lesson07-360.mp4 - Video]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Lesson 8|AmiWest Lesson 8: ARexx Ports]][https://dl.dropboxusercontent.com/u/680455/AmiWest-2012-Programming/Lesson08-360.mp4 - Video]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Support]][https://dl.dropboxusercontent.com/u/680455/AmiWest-2012-Programming/Wrap-Up-360.mp4 - Video]&lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=AmiWest_2013&amp;diff=7764</id>
		<title>AmiWest 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=AmiWest_2013&amp;diff=7764"/>
		<updated>2014-09-23T07:38:23Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: /* AmiWest 2013 page deleted */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 &lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=Tutorials:Main&amp;diff=7763</id>
		<title>Tutorials:Main</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=Tutorials:Main&amp;diff=7763"/>
		<updated>2014-09-23T07:35:57Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: /* Tutorials - AmiWest 2013 restored */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Tutorials =&lt;br /&gt;
&lt;br /&gt;
Tutorials have been provided by various authors.&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
[[The Hacking Way: Part 1 - First Steps]]&lt;br /&gt;
&lt;br /&gt;
[[The Right Tool for the Job (Shared Objects)]]&lt;br /&gt;
&lt;br /&gt;
[[How to Build Stubs for 68k Libraries]]&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
&lt;br /&gt;
[[How to install a hardware interrupt]]&lt;br /&gt;
&lt;br /&gt;
[[How to open and use the exec debug interface]]&lt;br /&gt;
&lt;br /&gt;
[[GDB for Beginners]]&lt;br /&gt;
&lt;br /&gt;
[[Using Crash-Logs for Debugging]]&lt;br /&gt;
&lt;br /&gt;
[[Debug Logging on AmigaOS]]&lt;br /&gt;
&lt;br /&gt;
[[Redirecting Debug Output to the Serial Port on Startup]]&lt;br /&gt;
&lt;br /&gt;
[[Advanced Serial Debugging Guide]]&lt;br /&gt;
&lt;br /&gt;
== GUI ==&lt;br /&gt;
&lt;br /&gt;
[[BOOPSI Gadget Help Strings]]&lt;br /&gt;
&lt;br /&gt;
[[BOOPSI Popup Menus - Part 1]]&lt;br /&gt;
&lt;br /&gt;
[[BOOPSI Popup Menus - Part 2]]&lt;br /&gt;
&lt;br /&gt;
[[BOOPSI Popup Menus - Part 3]]&lt;br /&gt;
&lt;br /&gt;
[[Screen Programming]]&lt;br /&gt;
&lt;br /&gt;
== AmiWest 2014 ==&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Setup]]&lt;br /&gt;
&lt;br /&gt;
== AmiWest 2013 ==&lt;br /&gt;
	&lt;br /&gt;
[[AmiWest 2013 Programming Conference Synopsis]]&lt;br /&gt;
 	&lt;br /&gt;
[[AmiWest Setup]]&lt;br /&gt;
	&lt;br /&gt;
[[AmiWest 2013 Lesson 1|AmiWest Lesson 1: How to Crash]]&lt;br /&gt;
	&lt;br /&gt;
[[AmiWest 2013 Lesson 2|AmiWest Lesson 2: Interpreting Crash Reports]]&lt;br /&gt;
 &lt;br /&gt;
[[AmiWest 2013 Lesson 3|AmiWest Lesson 3: ProcTree Redux]]&lt;br /&gt;
	&lt;br /&gt;
[[AmiWest 2013 Lesson 4|AmiWest Lesson 4: Simple IP Clients &amp;amp; Servers]]&lt;br /&gt;
	&lt;br /&gt;
[[AmiWest 2013 Lesson 5|AmiWest Lesson 5: Bars&amp;amp;Pipes Tools]]&lt;br /&gt;
&lt;br /&gt;
== AmiWest 2012 ==&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Setup]] [https://dl.dropboxusercontent.com/u/680455/AmiWest-2012-Programming/Introduction-360.mp4 - Video]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Lesson 1|AmiWest Lesson 1: Coding Basics]] [https://dl.dropboxusercontent.com/u/680455/AmiWest-2012-Programming/Lesson01-360.mp4 - Video]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Lesson 2|AmiWest Lesson 2: AmigaOS Fundamentals]][https://dl.dropboxusercontent.com/u/680455/AmiWest-2012-Programming/Lesson02-360.mp4 - Video]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Lesson 3|AmiWest Lesson 3: Input and Output]][https://dl.dropboxusercontent.com/u/680455/AmiWest-2012-Programming/Lesson03-360.mp4 - Video]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Lesson 4|AmiWest Lesson 4: ProcTree]][https://dl.dropboxusercontent.com/u/680455/AmiWest-2012-Programming/Lesson04-360.mp4 - Video]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Lesson 5|AmiWest Lesson 5: MIDI]][https://dl.dropboxusercontent.com/u/680455/AmiWest-2012-Programming/Lesson05-360.mp4 - Video]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Lesson 6|AmiWest Lesson 6: Application Library - Not Presented]]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Lesson 7|AmiWest Lesson 7: Screen Blanker]][https://dl.dropboxusercontent.com/u/680455/AmiWest-2012-Programming/Lesson07-360.mp4 - Video]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Lesson 8|AmiWest Lesson 8: ARexx Ports]][https://dl.dropboxusercontent.com/u/680455/AmiWest-2012-Programming/Lesson08-360.mp4 - Video]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Support]][https://dl.dropboxusercontent.com/u/680455/AmiWest-2012-Programming/Wrap-Up-360.mp4 - Video]&lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=AmiWest_2013&amp;diff=7762</id>
		<title>AmiWest 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=AmiWest_2013&amp;diff=7762"/>
		<updated>2014-09-23T07:26:15Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: /* AmiWest 2013 page restored */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[AmiWest 2013 Programming Conference Synopsis]]&lt;br /&gt;
 	&lt;br /&gt;
[[AmiWest Setup]] 	&lt;br /&gt;
&lt;br /&gt;
[[AmiWest 2013 Lesson 1|AmiWest Lesson 1: How to Crash]]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest 2013 Lesson 2|AmiWest Lesson 2: Interpreting Crash Reports]]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest 2013 Lesson 3|AmiWest Lesson 3: ProcTree Redux]]&lt;br /&gt;
	&lt;br /&gt;
[[AmiWest 2013 Lesson 4|AmiWest Lesson 4: Simple IP Clients &amp;amp; Servers]]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest 2013 Lesson 5|AmiWest Lesson 5: Bars&amp;amp;Pipes Tools]]&lt;br /&gt;
 &lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=Tutorials:Main&amp;diff=7761</id>
		<title>Tutorials:Main</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=Tutorials:Main&amp;diff=7761"/>
		<updated>2014-09-23T06:55:13Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: /* AmiWest 2014 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Tutorials =&lt;br /&gt;
&lt;br /&gt;
Tutorials have been provided by various authors.&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
[[The Hacking Way: Part 1 - First Steps]]&lt;br /&gt;
&lt;br /&gt;
[[The Right Tool for the Job (Shared Objects)]]&lt;br /&gt;
&lt;br /&gt;
[[How to Build Stubs for 68k Libraries]]&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
&lt;br /&gt;
[[How to install a hardware interrupt]]&lt;br /&gt;
&lt;br /&gt;
[[How to open and use the exec debug interface]]&lt;br /&gt;
&lt;br /&gt;
[[GDB for Beginners]]&lt;br /&gt;
&lt;br /&gt;
[[Using Crash-Logs for Debugging]]&lt;br /&gt;
&lt;br /&gt;
[[Debug Logging on AmigaOS]]&lt;br /&gt;
&lt;br /&gt;
[[Redirecting Debug Output to the Serial Port on Startup]]&lt;br /&gt;
&lt;br /&gt;
[[Advanced Serial Debugging Guide]]&lt;br /&gt;
&lt;br /&gt;
== GUI ==&lt;br /&gt;
&lt;br /&gt;
[[BOOPSI Gadget Help Strings]]&lt;br /&gt;
&lt;br /&gt;
[[BOOPSI Popup Menus - Part 1]]&lt;br /&gt;
&lt;br /&gt;
[[BOOPSI Popup Menus - Part 2]]&lt;br /&gt;
&lt;br /&gt;
[[BOOPSI Popup Menus - Part 3]]&lt;br /&gt;
&lt;br /&gt;
[[Screen Programming]]&lt;br /&gt;
&lt;br /&gt;
== AmiWest 2014 ==&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Setup]]&lt;br /&gt;
&lt;br /&gt;
== AmiWest 2012 ==&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Setup]] [https://dl.dropboxusercontent.com/u/680455/AmiWest-2012-Programming/Introduction-360.mp4 - Video]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Lesson 1|AmiWest Lesson 1: Coding Basics]] [https://dl.dropboxusercontent.com/u/680455/AmiWest-2012-Programming/Lesson01-360.mp4 - Video]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Lesson 2|AmiWest Lesson 2: AmigaOS Fundamentals]][https://dl.dropboxusercontent.com/u/680455/AmiWest-2012-Programming/Lesson02-360.mp4 - Video]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Lesson 3|AmiWest Lesson 3: Input and Output]][https://dl.dropboxusercontent.com/u/680455/AmiWest-2012-Programming/Lesson03-360.mp4 - Video]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Lesson 4|AmiWest Lesson 4: ProcTree]][https://dl.dropboxusercontent.com/u/680455/AmiWest-2012-Programming/Lesson04-360.mp4 - Video]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Lesson 5|AmiWest Lesson 5: MIDI]][https://dl.dropboxusercontent.com/u/680455/AmiWest-2012-Programming/Lesson05-360.mp4 - Video]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Lesson 6|AmiWest Lesson 6: Application Library - Not Presented]]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Lesson 7|AmiWest Lesson 7: Screen Blanker]][https://dl.dropboxusercontent.com/u/680455/AmiWest-2012-Programming/Lesson07-360.mp4 - Video]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Lesson 8|AmiWest Lesson 8: ARexx Ports]][https://dl.dropboxusercontent.com/u/680455/AmiWest-2012-Programming/Lesson08-360.mp4 - Video]&lt;br /&gt;
&lt;br /&gt;
[[AmiWest Support]][https://dl.dropboxusercontent.com/u/680455/AmiWest-2012-Programming/Wrap-Up-360.mp4 - Video]&lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=UserDoc:Main&amp;diff=5316</id>
		<title>UserDoc:Main</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=UserDoc:Main&amp;diff=5316"/>
		<updated>2013-04-19T01:10:22Z</updated>

		<summary type="html">&lt;p&gt;Brian Deneen: /* Welcome to AmigaOS */  Minor grammatical and phrasing changes to make the page read more smoothly.--~~~~&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Welcome to AmigaOS ==&lt;br /&gt;
&lt;br /&gt;
AmigaOS was born in 1985 and delivered what contemporary personal computer operating systems could only dream of.  As the first &amp;quot;multimedia&amp;quot; operating system, it was trivial for AmigaOS computers to display animations while playing music and reading data from disks.  Such multimedia and multitasking finesse drew many people to this system.  Some of them are famous: [http://www.amigahistory.co.uk/warhol.html Andy Warhol], Sir Arthur C. Clarke, [http://www.polyphoto.com/upchug/AEcastro.html NASA], Hollywood and the TV broadcasting industry, and many others that thought [http://www.youtube.com/watch?v=PWeO5IkCssk only Amiga makes it possible].&lt;br /&gt;
&lt;br /&gt;
Today many people still think AmigaOS has something special that makes it more interesting and rewarding than other systems. This system allows the user to control the computer, not the other way around. It is a system you fully understand that is easier and more flexible to use.  In other words, AmigaOS is &#039;&#039;&#039;more fun&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== AmigaOS:  The flexible operating system ===&lt;br /&gt;
AmigaOS is an operating system:  a collection of efficient programs written to start the computer, let the user control the computer, and present feedback to the user.&lt;br /&gt;
&lt;br /&gt;
AmigaOS is designed with ease of use and flexibility in mind. To begin with, AmigaOS provides a clear view of your computer, your applications and files. A number of methods are available to let your computer serve you, whether graphically with a mouse, using the &amp;quot;Shell&amp;quot; command line, or by some other means the user prefers.&lt;br /&gt;
&lt;br /&gt;
AmigaOS strives to avoid stupid limitations that can be found on other systems. AmigaOS users can organise their files the way they like. There are few limits on file hierarchy, locations and file names.  Drives don&#039;t have to be named with a letter or cryptic names (such as C:, or sda1), your files don&#039;t have to reside in your &amp;quot;Documents&amp;quot; folder and your hard drives aren&#039;t hidden from you. If you&#039;re not writing to drives and you want to &amp;quot;shut down&amp;quot;, why wait for the OS to allow that?  With AmigaOS, just hit the power switch. Done.&lt;br /&gt;
&lt;br /&gt;
An Amiga does not start with pre-installed applications serving some sales conglomerate, marketing organization or their big brother. AmigaOS does not do actions behind the user&#039;s back. As unique as it is today, the AmigaOS computer serves the user and not the other way around. With one of the largest proportions of user-programmers around, the trustworthy AmigaOS user-friendly ethic is mirrored in AmigaOS applications.&lt;br /&gt;
&lt;br /&gt;
Since the first versions more than twenty-five years ago, AmigaOS has also been designed to serve efficiently. Optimizing  applications and OS code has always been the goal of programmers and developers of this operating system.  The result is an operating system and applications that take less space on your hard drives, waste less time loading, consume less memory, require less processing power, and respond more quickly to the user.&lt;br /&gt;
&lt;br /&gt;
And every update of AmigaOS doesn&#039;t demand you must buy newer, more powerful hardware. AmigaOS currently runs on twenty year old 200MHz computers or brand new dual core 1,800MHz computers.  It&#039;s the user&#039;s choice how they want to &#039;&#039;&#039;enjoy&#039;&#039;&#039; AmigaOS.&lt;br /&gt;
&lt;br /&gt;
=== Some AmigaOS features ===&lt;br /&gt;
Here are some of the features of AmigaOS that make it easy to control your computer. Some of these concepts were copied by other operating systems which tend to show they are the correct way of doing things.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Small footprint:&#039;&#039;&#039; AmigaOS can work with 64 MB of memory. On disk, a default installation only takes around 200 MB.  The smaller footprint translates into a more responsive user experience given any hardware.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Straightforward operating system design:&#039;&#039;&#039; With a clear layout and easy to understand names  (Classes, Libs, Fonts, Prefs, Storage, etc.),  you can easily understand what everything in AmigaOS is and what it does for you.  Nothing is hidden from the user and the user is not restricted by AmigaOS.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;User configurable graphic interface:&#039;&#039;&#039;  Using the provided &amp;quot;preferences editors,&amp;quot; the user can dramatically reconfigure how AmigaOS looks, sounds, runs and responds to every user whim.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;File recognition based on file content:&#039;&#039;&#039;  You can name a file &#039;&#039;&#039;whatever you want&#039;&#039;&#039;, even without an extension. Examples: &amp;quot;my file&amp;quot; or &amp;quot;picture of Jay in Santa Clara&amp;quot;.  There is no need to add an extension to explain what the file is, like &amp;quot;.txt&amp;quot; or &amp;quot;.jpg&amp;quot;. AmigaOS really examines the &#039;&#039;&#039;file content&#039;&#039;&#039; to recognise what type of file it is.  &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Logical assignments:&#039;&#039;&#039; Easily set and use logical names names for directories located anywhere on your system.  For example, &amp;quot;Auto:&amp;quot; can point to your directory &amp;quot;car show pictures&amp;quot; buried on your media drive.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Ram disk concept:&#039;&#039;&#039;  On AmigaOS there is a special disk called the &#039;&#039;&#039;Ram disk&#039;&#039;&#039; which represents a part of your computer memory. This area is not fixed. It automatically grows whenever you store files in it.  For example, it&#039;s a great place to unpack files to install from there, greatly speeding up the installation.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Command line and graphical user interfaces:&#039;&#039;&#039;  Both the the graphical user interface (GUI) and command line interface (where you type commands into a window with the keyboard)  can be used to manage AmigaOS, its programs and files.   Both interfaces are intergated with each other so you can easily use command lines from the GUI or open graphical elements from a command line.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ARexx Ports:&#039;&#039;&#039;  Throughout AmigaOS and third party programs, &amp;quot;ARexx&amp;quot; message ports let one application talk with others so that apps work together to serve the user.  AmigaOS also provides the lightweight ARexx and modern Python programming languages that can control AmigaOS and applications with ARexx ports.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Resident Commands:&#039;&#039;&#039; Commands can be made resident, i.e., they are kept in memory so that they can be reused with no loading time.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Restart only the operating system:&#039;&#039;&#039; if you feel the need to restart the system, you can do so by restarting &#039;&#039;&#039;only AmigaOS&#039;&#039;&#039; and not the whole computer.&lt;br /&gt;
&lt;br /&gt;
=== AmigaOS platform targets ===&lt;br /&gt;
&lt;br /&gt;
While the original versions of AmigaOS ran on computers of the eighties using Motorola 68k series CPU chips, the current AmigaOS runs on computers using PowerPC processor chips [http://www.amigaos.net/content/72/supported-hardware hardware].  These can be older Amiga computers (also called &amp;quot;Classic Amigas&amp;quot;) with PPC &amp;quot;accelerator cards&amp;quot; or new generation Amiga PPC computers. &lt;br /&gt;
&lt;br /&gt;
In this guide, we will concentrate on the current AmigaOS running on the supported hardware.&lt;br /&gt;
&lt;br /&gt;
== How does AmigaOS work? - Concepts ==&lt;br /&gt;
&lt;br /&gt;
In this page we will discuss  [[UserDoc:How AmigaOS Works|how AmigaOS works]]:&lt;br /&gt;
&lt;br /&gt;
* [[UserDoc:How_AmigaOS_Works#The_most_important_components|The most important components]] (Exec, AmigaDOS, Intuition...)&lt;br /&gt;
* [[UserDoc:How_AmigaOS_Works#How_is_my_data_stored.3F|how files and data are stored]]&lt;br /&gt;
* [[UserDoc:How_AmigaOS_Works#All_AmigaOS_components|all AmigaOS components are described]]&lt;br /&gt;
* [[UserDoc:How_AmigaOS_Works#AmigaOS_boot_procedure|how AmigaOS is booted on your Amiga computer]]&lt;br /&gt;
* AmigaOS settings programs&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== How to use AmigaOS? ==&lt;br /&gt;
&lt;br /&gt;
AmigaOS is a collection of components that oversee the computer hardware &amp;amp; data and provide the user with easy, understandable tools to manage and use them.&lt;br /&gt;
&lt;br /&gt;
In the following [[UserDoc:Introduction to AmigaOS|Introduction to AmigaOS pages]] we will discuss the basic concepts:&lt;br /&gt;
&lt;br /&gt;
* how to use AmigaOS&lt;br /&gt;
* what the AmigaOS graphic user interface is composed of &lt;br /&gt;
* what interfaces AmigaOS provides, including the [[UserDoc:Workbench|Workbench]], the [[UserDoc:Shell|Shell]] or scripting languages.&lt;br /&gt;
&lt;br /&gt;
From the introduction page, you can continue with more detailed pages on the [[UserDoc:Workbench|Workbench]] and the [[AmigaDOS manual]] .   Now let&#039;s start with this [[UserDoc:Introduction to AmigaOS|Introduction to AmigaOS]].&lt;/div&gt;</summary>
		<author><name>Brian Deneen</name></author>
	</entry>
</feed>