# HG changeset patch
# User roug
# Date 1026035644 0
# Node ID f4e798ea65b93f0ced804998512463be78bf0e47
# Parent 740f7868679c62f29851aa91d3666bd0476898ae
More splitups.
diff -r 740f7868679c -r f4e798ea65b9 docs/nitros9guide/chap1.chapter
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/nitros9guide/chap1.chapter Sun Jul 07 09:54:04 2002 +0000
@@ -0,0 +1,307 @@
+
+Getting Started...
+
+
+What You Need to Run OS-9
+
+OS-9 has been tailored to run on your standard, unmodified Dragon
+Computer. To use it you'll need the following things:
+
+
+ A 64K Memory Dragon Computer
+ A Dragon Disk Drive With Contoller Cartridge
+ An OS-9 Dragon System Disk
+
+
+OS-9 is also ready to use the following optional equipment that you
+may have now or may obtain in the future:
+
+
+ Additional Expansion Disk Drive(s)
+ A Parallel Printer
+ Game Joysticks
+ Other OS-9 Compatible Languages and Software
+
+
+
+Starting the System
+
+To start up OS-9 follow these steps:
+
+
+Turn the Dragon Computer and disk drive(s) on. You should see
+the usual Basic greeting message on the screen.
+
+Insert the OS-9 System Disk in drive zero and close the door.
+
+Type "BOOT". After a few seconds of disk activity you should
+see a screen with the words "OS9BOOT".
+
+OS-9 will then begin
+its "bootstrap" loading process, which
+involves ten to twenty seconds of disk activity. When the system
+startup has finished, a message followed by an "OS9:" prompt will be
+displayed.
+
+
+
+
+
+In Case You Have Problems Starting OS-9
+
+If Basic gives an error message after you
+type "BOOT", remove the
+disk, turn the computer off and on, then try again. If this
+repeatedly fails your OS-9 diskette may be bad.
+
+Did you remember to turn the disk drive power switch on?
+
+Does your Dragon Computer have 64K RAM? This is a must!
+
+If your Dragon Computer doesn't seem to understand the BOOT
+command, contact your dealer.
+
+If the "OS9BOOT message is displayed but nothing else happens,
+you may have a corrupted system disk. Hopefully you did make a
+backup!
+
+
+
+
+A Quick Introduction to the Use of the Keyboard and Disks
+
+For now, the only special keys on the keyboard of interest are
+the SHIFT key which works like a typewriter shift key; the ENTER key
+which you always use after typing a command or response to OS-9; and
+the <- left arrow key which you can use to erase typing mistakes.
+
+
+Your main disk drive is known to to OS-9 as "/D0" and is often
+called "drive zero". If you have a second disk drive (drive one),
+OS-9 recognizes it as "/D1". Why would anybody put a "/" in a name?
+Because all input and output devices have names like files, and
+names that start with "/" are always device names.
+
+
+
+
+Initial Explorations
+
+When OS-9 first starts up, it will display a welcoming message,
+and then ask you to enter the date and time. This allows OS-9 to
+keep track of the date and time of creation of new files and disks.
+Enter the current date and time in the format requested like this:
+
+ YY/MM/DD HH:MM:SS
+ TIME ? 83 7 14 1420
+
+In the example above, the date entered was July 14, 1983. OS-9
+uses 24-hour time so the date entered was 1420 hours or 2:20 PM.
+Next, OS-9 will print an "OS9:" prompt to let you know it is ready
+for you to type in a command.
+
+
+Now you're ready to try some commands. A good first command to
+try is DIR (for "directory").
+This will display a list of the files
+on the System Disk. Just type:
+
+dir
+
+followed by a "return". OS-9 should respond with a listing of file
+names which should look something like this:
+
+ OS9Boot startup CMDS SYS DEFS
+
+The file "OS9Boot" contains the OS-9 program in 6809 machine
+language, which was loaded into memory during the bootstrap
+operation.
+
+
+The file "startup" is a "command file" which is automatically run
+when the system starts up, and has the commands that printed the
+welcoming message and asked for the time. Later, You may want to
+replace this startup file with your own customized version after you
+are more familiar with OS-9. Do you want to see the contents of
+this file? If so, just type
+
+list startup
+
+As you can see, the LIST command displays the contents of files
+that contain text (alphabetic characters). Some files like the
+"OS9Boot" file contain binary data such as machine language
+programs. These files are called "binary files", and attempts to
+list them will result in a jumbled, meaningless display. On the
+other hand, OS-9 will complain mightily if you try to run a text
+file as a program!
+
+
+As you may have surmised by now, the way you ask OS-9 to run a
+program or command (they're really the same thing) is to simply type
+its name. Some commands like LIST require one or more names of
+files or options. If so, they are typed on the same line using
+spaces to separate each item.
+
+
+But where did the LIST and DIR programs come from? There are
+really more files on the disk than you suspect. The DIR command
+showed you what is the disk's
+root directory - so named because the
+OS-9 filing system resembles a tree. Growing out of the root
+directory are three "branches" - files which are additional
+directories of file names instead of programs or data. They in turn
+can have even more "branches" - ad infinitum. If you draw a map on
+paper of how this works it does look like a tree.
+
+
+The directory files on your system disk are called "CMDS",
+"SYS", and "DEFS".
+The file "CMDS" is a directory that consists of
+all the system commands such as DIR, LIST, FORMAT, etc. To see the
+files contained in this directory, enter:
+
+DIR CMDS
+
+which tells DIR to show files on the directory file CMDS instead
+of the root directory. After you type this you should see a long
+list of file names. These are the complete set of command programs
+that come with OS-9 and perform a myriad of functions. Chapter
+Seven explains each one in detail. The DIR command also has a handy
+option to display the CMDS directory with less typing:
+
+DIR X
+
+Whenever you want a list of available commands you can use this so
+you don't have to look it up in the book. The DIR command has
+options which can give you more detailed information about each file
+(see sections 3.4 and 3.8.1).
+
+
+
+
+Making a Backup of the System Disk
+
+Before getting too much more involved in further experimentation,
+NOW is the time to make one or more exact copies of your System Disk
+in case some misfortune befalls your one and only master System
+Disk. Making a backup involves two steps: formatting a blank disk
+and running a backup program.
+
+
+Formatting Blank Disks
+
+Before the actual backup procedure can be done (or any fresh
+diskette is used for any purpose), the blank disk which is to become
+the backup disk must be initialized by OS-9's FORMAT command.
+
+
+IF YOU HAVE ONLY ONE DISK DRIVE you have to be extra careful not to
+accidentally FORMAT your system disk. Type:
+
+
+FORMAT /D0
+
+
+and when you see the message
+
+
+DRAGON DISK FORMATTER 1 . 2
+FORMAT DRIVE /D0
+Y (YES) OR N (NO)
+READY?
+
+
+immediately remove your system disk and insert a blank disk
+before you type "Y".
+
+IF YOU HAVE TWO DISK DRIVES place the blank disk in drive one and
+type:
+
+
+FORMAT /D1
+
+
+WHEN THE BLANK DISK IS IN THE RIGHT PLACE, type "Y", then "ENTER".
+This initiates the formatting process. IF THE CORRECT DEVICE NAME
+(/D1) IS NOT DISPLAYED: TYPE N RIGHT NOW and start over, OR YOU
+MAY ERASE your System Disk.
+
+
+When you are asked for a disk name, type any letter, then ENTER.
+The name you give is not important. If you have only one drive,
+replace the system disk after the FORMAT program has finished. If
+the FORMAT program reported any errors, try again. Disks used for
+backups can't have any errors. You're now ready to run the BACKUP
+program.
+
+
+It takes several minutes for the FORMAT program to run. During
+its second phase the hexadecimal number of each track will be
+displayed as it is checked for bad sectors. If any are found an
+error message for each bad sector is given.
+
+
+
+
+Running the Backup Program
+
+The BACKUP program makes an exact duplicate of a disk. It can be
+used even if you only have one disk drive.
+
+
+IF YOU HAVE ONE DRIVE type
+
+
+BACKUP /D0 #32k
+
+
+The BACKUP program will prompt you to alternately insert the source
+disk (the system disk) and the destination disk (the freshly
+formatted disk).
+
+
+IF YOU HAVE TWO DRIVES type
+
+
+BACKUP #32K
+
+
+
+The BACKUP program will respond with
+
+
+Ready to BACKUP from /D0 to /D0 (or /D1) ?
+
+
+Now enter Y for yes. It will then ask:
+
+
+X IS BEING SCRATCHED
+OK ?:
+
+
+Answer "Y" for yes again, and the BACKUP process should begin.
+
+
+The BACKUP command has two phases: the first phase copies
+everything from drive zero to drive one checking for errors while
+reading from the master but not for "write" errors. The second
+phase is the "verify" pass which makes sure everything was copied
+onto the new disk correctly. If any errors are reported during the
+first (copy) pass, there is a problem with the master disk or its
+drive. If errors occur during the second (verify) pass, there is a
+problem with the new disk and the BACKUP program should be run
+again. If BACKUP repeatedly fails on the second pass, reformat the
+disk and try to BACKUP again. If BACKUP fails again, the disk is
+physically defective.
+
+
+After you have made your backup disk, try turning the Dragon
+Computer off and restarting the system with the copy you just made.
+If it works OK, store it in a safe place in case it is needed later.
+You should always have a backup copy of your system disk and all
+other important disks.
+
+
+
+
diff -r 740f7868679c -r f4e798ea65b9 docs/nitros9guide/chap2.chapter
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/nitros9guide/chap2.chapter Sun Jul 07 09:54:04 2002 +0000
@@ -0,0 +1,405 @@
+
+Basic Interactive Functions
+
+
+Running Commands and Basic Shell Operation
+
+The "shell" is a the part of OS-9 that accepts commands from your
+keyboard. It was designed to provide a convenient, flexible, and
+easy-to-use interface between you and the powerful functions of the
+operating system. The shell is automatically entered after OS-9 is
+started up. You can tell when the shell is waiting for input
+because it displays the "OS9:" prompt. This prompt indicates that
+the shell is active and awaiting a command from your keyboard. It
+makes no difference whether you use upper-case letters, lower-case
+letters, or a combination of both because OS-9 matches letters of
+either case.
+
+
+The command line always begins with a name of a program which can
+be:
+
+
+
+The name of a machine language program on disk
+The name of a machine language program already in memory
+The name of an executable program compiled by a high-level
+language such as Basic09, Pascal, Cobol, etc. (See 4.8)
+The name of a procedure file (See 4.6)
+
+
+If you're a beginner, you will almost always use the first case,
+which causes the program to be automatically loaded from the CMDS
+directory and run.
+
+
+When processing the command line, the shell searches for a
+program having the name specified in the following sequence:
+
+
+
+
+- If the program named is already in memory, it is run.
+
+- The "execution directory", usually "CMDS", is searched.
+If a file having the name given is found, it is loaded and
+run (See 5.4.1).
+
+- The user's "data directory" is searched. If a file having
+the name given is found, it is processed as a "procedure
+file" which means that the file is assumed to contain one
+or more command lines which are processed by the shell in
+the same manner as if they had manually typed in one by one.
+
+
+
+Mention is made above of the "data directory" and the "execution
+directory". At all times each user is associated with two file
+directories. A more detailed explanation of directories is presented
+in section 3.3. The execution directory (usually CMDS) includes
+files which are executable programs.
+
+
+The name given in the command line may be optionally followed by
+one or more "parameters" which are passed to the program called by
+the shell.
+
+
+For example, in the command line:
+
+
+LIST FILE1
+
+
+the program name is LIST, and the parameter passed to it is FILE1.
+
+
+A command line may also include one or more "modifiers" which are
+specifications used by the shell to alter the program's standard
+input/output files or memory assignments (See 4.2).
+
+
+
+
+Sending Output to the Printer
+
+Normally, most commands and programs display output on the Color
+Computer video display. The output of these programs can
+alternatively be printed by specifying output redirection on the
+command line. This is done by including the following modifier to
+at the end of any command line:
+
+
+>/P
+
+
+The ">" character tells the shell to redirect output (See 4.3.2) to
+the printer using the Dragon's parallel port, which has the device
+name "/P" (See 3.2). For example, to redirect the output of the
+"dir" command to the printer, enter:
+
+
+DIR >/P
+
+
+The "xmode" command can be used to set the printer port's
+operating mode such as auto line feed, etc. For example, to examine
+the printer's current settings, type:
+
+
+xmode /P
+
+
+To change any of these type XMODE followed by the new value.
+For example, to set the printer port for automatic line feeds at the
+end of every line, enter:
+
+
+xmode /P lf;
+
+
+
+
+
+Shell Command Line Parameters
+
+Parameters are generally used to either specify file name(s) or
+to select options to be used by the program specified in the command
+line given to the shell. Parameters are separated from the command
+name and from each other by space characters (hence parameters and
+options cannot themselves include spaces). Each command program
+supplied with OS-9 has an individual description in the last section
+of this manual which describe the correct usage of the parameters of
+each command.
+
+
+For example, the LIST program is used to display the contents of
+a text file on your display. It is necessary to tell to the LIST
+program which file it is to be displayed, therefore, the name of the
+desired file is given as a parameter in the command line. For
+example, to list the file called startup (the system initialization
+procedure file), you enter the command line:
+
+
+LIST STARTUP
+
+
+Some commands have two parameters. For example, the COPY command is
+used to make an exact copy of a file. It requires two parameters:
+The name of the file to be copied and the name of the file which is
+to be the copy, for example:
+
+
+COPY STARTUP NEWSTARTUP
+
+
+Other commands have parameters which select options. For example:
+
+
+DIR
+
+
+shows the names of the files in the user's data directory. Normally
+it simply lists the file names only, but if the "E"
+(for entire)
+option is given, it will also give complete statistics for each file
+such as the date and time created, size, security codes, etc. To do
+so enter:
+
+
+DIR E
+
+
+The DIR command also can accept a file name as a parameter which
+specifies a directory file other than the (default) data directory.
+For example, to list file names in the directory sys , type:
+
+
+DIR SYS
+
+
+It is also possible to specify both a directory name parameter and
+the e option, such as:
+
+
+DIR SYS E
+
+
+giving file names and complete statistics (See example in 3.8.1).
+
+
+
+
+Some Common Command Formats
+
+This section is a summary of some commands commonly used by new
+or casual OS-9 users, and some common formats. Each command is
+followed by an example. Refer to the individual command
+descriptions in Section 8 for more detailed information and
+additional examples. Parameters or options shown in brackets are
+optional. Whenever a command references a directory file name, the
+file must be a directory file.
+
+
+CHD filename chd DATA.DIR
+
+Changes the current data working directory to
+the directory file specified.
+
+COPY filename1 filename2 copy oldfile newfile
+
+Creates filename2 as a new file, then copies all data from
+"filename1" to it. "filename1" is not affected.
+
+DEL filename del oldstuff
+
+Deletes (destroys) the file specified.
+
+DIR [filename] [e] [x] dir myfiles e
+
+List names of files contained in a directory. If the "x" option is
+used the files in the current execution
+directory are listed,
+othervise, if no directory name is given, the current
+data directory will be listed.
+The "e" option selects the long format
+which shows detailed information about each file.
+
+FREE devicename free /d1
+
+Shows how much free space remains on the disk whose name is given.
+
+LIST filename list script
+
+Displays the (text) contents of the file on the terminal.
+
+MAKDIR filename makdir NEWFILES
+
+Creates a new directory file using the name given. Often followed
+by a "chd" command to make it the new working data directory.
+
+RENAME filename1 filename2 rename zip zap
+
+Changes the name of filename1 to filename2.
+
+
+
+
+Using the Keyboard and Video Display
+
+OS-9 has many features to expand the capability of the Dragon
+keyboard and video display. The video display has screen pause,
+upper/lower case, and graphics functions. The keyboard can generate
+all ASCII characters and has a type-ahead feature that permits you
+to enter data before requested by a program (except if the disk is
+running because interrupts are temporarily disabled). Appendix C of
+this manual is a list of the characters and codes that can be
+generated from the keyboard. The keyboard/video display can be used
+as a file known by the name "/TERM".
+
+
+
+Video Display Functions
+
+The Dragon uses reverse video (green letters in a black box) to
+represent lower-case letters. Normally they are not used, so you
+have to turn them on if you want to use them with the command:
+
+
+TMODE -UPC
+
+
+The screen pause feature stops programs after 16 lines have been
+displayed. Output will continue if you hit any key. Normally this
+feature is on. It can be turned on or off with the TMODE command as
+follows:
+
+
+TMODE -PAUSE turns pause mode off
+TMODE PAUSE turns pause mode on
+
+
+The display system also has a complete set of commands to emulate
+commercial data terminals, plus a complete set of graphics commands.
+These are described in detail in Appendix D.
+
+
+
+
+Keyboard Shift and Control Functions
+
+Two keys are used in combination with other keys to change their
+meaning. The SHIFT KEY selects between upper case and lower case
+letters or punctuation, and the CLEAR key can be used to generate
+control characters .
+
+
+The keyboard has a shift lock function similar to a typewriter's,
+which is normally "locked". The keyboard's shift lock may be
+reversed by depressing the control key (CLEAR) and 0 keys
+simultaneously. The shift lock only affects the letter (A-Z) keys.
+When the keyboard is locked, these keys generate upper case letters,
+and lower case only if the SHIFT key is depressed. When the
+keyboard is unlocked, the reverse is true, e.g., lower case letters
+are generated unless the SHIFT key is depressed at the same time as
+a letter key.
+
+
+
+
+Control Key Functions
+
+There are a number of useful control functions that can be
+generated from the keyboard. Many of these functions use "control
+keys" which are generated by simultaneously depressing the CLEAR key
+plus some other key. For example, to generate the character for
+CONTROL D press the CLEAR and D keys at the same time.
+
+
+
+ CONTROL A
+
+
+Repeat previous input line. The last line entered will be redisplayed but
+not processed, with the cursor positioned at the end of
+the line. You may hit return to enter the line, or edit the line by
+backspacing, typing over characters to correct them, and entering
+control A again to redisplay the edited line.
+
+
+
+
+ CONTROL D
+
+
+Redisplay present input on next line.
+
+
+
+
+ CONTROL W
+
+
+Display Wait - This will temporarily halt output to the display so
+the screen can be read before the data scrolls off. Output is
+resumed when any other key is hit.
+
+
+
+
+ CONTROL 0
+
+
+Shift lock. Reverses present shift lock state.
+
+
+
+
+ BREAK KEY (or CONTROL E)
+
+
+Program abort - Stops the current running program
+
+
+
+
+ SHIFT BREAK KEY (or CONTROL C)
+
+
+Interrupt - Reactivates Shell while keeping program running as
+background task.
+
+
+
+
+ CONTROL BREAK KEY (ESCAPE)
+
+
+End-of-File - This key is used to send an end-of-file to programs
+that read input from the terminal in place of a disk or tape file.
+It must be the first character on the line in order for it to be
+recognized.
+
+
+
+
+ LEFT ARROW (OR CONTROL H)
+
+
+Backspace - erase previous character
+
+
+
+
+ SHIFT LEFT ARROW (or CONTROL X)
+
+
+Line Delete - erases the entire current line.
+
+
+
+
+
+
+
+
diff -r 740f7868679c -r f4e798ea65b9 docs/nitros9guide/chap3.chapter
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/nitros9guide/chap3.chapter Sun Jul 07 09:54:04 2002 +0000
@@ -0,0 +1,1118 @@
+
+The OS-9 File System
+
+Introduction to the Unified Input/Output System
+
+OS-9 has a unified input/output system in which data transfers to
+ALL I/O devices are performed in almost exactly the same manner,
+regardless of the particular hardware devices involved. It may seem
+that the different operational characteristics of the I/O devices
+might make this difficult. After all, line printers and disk drives
+behave much differently. However, these differences can mostly be
+overcome by defining a set of standardized
+logical functions for
+all devices and by making all I/O devices conform to these
+conventions, using software routines to eliminate hardware
+dependencies wherever possible. This produces a much simpler and
+more versatile input/output system.
+
+
+OS-9's unified I/O system is based upon logical entities called
+"I/O paths". Paths are analogous to "software I/O channels" which
+can be routed from a program to a mass-storage file, any other I/O
+device, or even another program. Another way to say the same thing
+is that paths are files, and all I/O devices behave as files.
+
+
+Data transferred through paths may be processed by OS-9 to
+conform to the hardware requirements of the specific I/O device
+involved. Data transfers can be either bidirectional (read/write)
+or unidirectional (read only or write only), depending on the device
+and/or how the path was established.
+
+
+Data transferred through a path is considered to be a stream of
+8-bit binary bytes that have no specific type or value: what the
+data actually represents depends on how it is used by each program.
+This is important because it means that OS-9 does not require data
+to have any special format or meaning.
+
+
+Some of the advantages of the unified I/O system are:
+
+
+
+Programs will operate correctly regardless of the particular I/O
+devices selected and used when the program is actually executed.
+
+
+Programs are highly portable from one computer to another, even
+when the computers have different kinds of I/O devices.
+
+
+I/O can be redirected to alternate files or devices when the
+program is run, without having to alter the program.
+
+
+New or special device driver routines can easily be created and
+installed by the user.
+
+
+
+
+
+Pathlists: How Paths Are Named
+
+Whenever a path is established (or "opened"), OS-9 must be given
+a description of the "routing" of the path. This description is
+given in the form of a character string called a "pathlist". It
+specifies a particular mass-storage file, directory file, or any
+other I/O device. OS-9 "pathlists" are
+similar to "filenames" used
+by other operating systems.
+
+
+The name "pathlist" is used instead
+of "pathname" or "filename"
+because in many cases it is a list consisting of more than one name
+to specify a particular I/O device or file. In order to convey all
+the information required, a pathlist may include a device name, one
+or more directory file names and a data file name. Each name within
+a pathlist is separated by slash "/" characters.
+
+
+Names are used to describe three kinds of things:
+
+
+Names of Physical I/O Devices
+Names of Regular Files
+Names of Directory Files
+
+
+
+Names can have one to 29 characters, all of which are used for
+matching. They must becin with an upper- or lower-case letter
+followed by any combination of the following characters:
+
+
+
+uppercase letters: A - Z
+lowercase letters: a - z
+decimal digits: 0 - 9
+underscore: _
+period: .
+
+
+
+Here are examples of legal names:
+
+
+
+
+
+
+raw.data.2
+projectreview.backup
+
+
+reconciliation.report
+X042953
+
+
+RJJones
+search.bin
+
+
+
+
+
+Here are examples of illegal names:
+
+
+
+
+
+
+
+22November
+(does not start with a letter)
+
+
+max*min
+(* is not a legal character)
+
+
+.data
+(does not start with a letter)
+
+
+open orders
+(cannot contain a space)
+
+
+this.name.obviously.has.more.than.29.characters
+(too long)
+
+
+
+
+
+
+
+
+I/O Device Names
+
+Each physical input/output device supported by the system must
+have a unique name. The actual names used are defined when the
+system is set up and cannot be changed while the system is running.
+The device names used for the Dragon Computer are:
+
+
+
+
+
+
+
+TERM
+Video display/keyboard
+
+
+P
+Printer port
+
+
+D0
+Disk drive unit zero
+
+
+D1
+Disk drive unit one
+
+
+PIPE
+Pipes
+
+
+
+
+
+Device names may only be used as the first name of a pathlist,
+and must be preceded by a slash "/" character to indicate that the
+name is that of an I/O device. If the device is not a disk or
+similar device the device name is the only name allowed. This is
+true for devices such as terminals, printers, etc. Some examples of
+of pathlists that refer to I/O devices are:
+
+
+
+/TERM
+/P
+/D1
+
+
+
+I/O device names are actually the names of the "device descriptor
+modules" kept by OS-9 in an internal data structure called the
+"module directory" (See the OS-9 System Programmer's manual for more
+information about device driver and descriptor modules). This
+directory is automatically set up during OS-9's system start up
+sequence, and updated as modules are added or deleted while the
+system is running.
+
+
+
+
+Multifile Devices And Directory Files
+
+Multifile devices are mass storage devices (usually disk systems)
+that store data organized into separate logical entities called
+"files". Each file has a name which is entered in a directory file.
+Every multifile device has a master directory (called the "root
+directory") that includes the names of the files and sub-directories
+stored on the device. The root directory is created automatically
+when the disk is initialized by the "format" command.
+
+
+Pathlists that refer to multifile devices may have more than one
+name. For example, to refer to the file "mouse" whose name appears
+in the root directory of device "D1" (disk drive one) the following
+pathlist is used:
+
+
+
+/d1/mouse
+
+
+
+When OS-9 is asked to create a path, it uses the names in the
+pathlist sequentially from left to right to search various
+directories to obtain the necessary routing information. These
+directories are organized as a tree-structured hierarchy. The
+highest-level directory is called the "device directory", which
+contains names and linkages to all the I/O devices on a given
+system. If any of the devices are of a multifile type they each
+have a root directory, which is the next-highest level.
+
+
+The diagram below is a simplified file system tree of a typical
+OS-9 system disk. Note that device and directory names are capitalized
+and ordinary file names are not. This is a customary (but
+not mandatory) practice which allows you to easily identify directory
+files using the short form of the "dir" command.
+
+
+ System Device Directory
+ +---------------------------------+
+ ! ! ! !
+ D0 TERM P D1
+ ! !
+ ! !
+ ! !
+ D0 Root Directory D1 Root Directory
+ +----------------------+ +----------------------+
+ ! ! ! ! ! !
+DEFS startup CMDS file1 file2 file3
+ ! !
+ ! !
+ ! !
+--+-- +-----+----+-----+-----+
+ ! ! ! ! ! !
+OS9Defs copy list dir del backup
+
+
+The device names in this example system are "TERM",
+"P", "D0" and
+"D1". The root directory of device
+"D0" includes two directory
+files, DEFS and CMDS, and one ordinary file "startup". Notice that
+device "D1" has in its root directory three ordinary files. In
+order to access the file "file2" on
+device "d1", a pathlist having
+two names must be used:
+
+list /d1/file2
+
+To construct a pathlist to access the file "dir" on device
+"d0" it is necessary to include in the pathlist the name of the
+intermediate directory file "CMDS". For example, to copy this file
+requires a pathlist having three names to describe the "from" file:
+
+copy /d0/cmds/dir temp
+
+
+
+
+
+Creating and Using Directories
+
+It is possible to create a virtually unlimited number of levels
+of directories on a mass storage device using the "makdir" command.
+Directories are a special type of file (see 3.8.1). They can be
+processed by the same I/O functions used to access regular files
+which makes directory-related processing fairly simple.
+
+
+To demonstrate how directories work, assume that the disk in
+drive one ("d1") has been freshly formatted so that it has a root
+directory only. The build command can be used to create a text file
+on "d1". The build command will print out "?" as a prompt to
+indicate that it is waiting for a text line to be entered. It will
+place each line into the text file until an empty line with only a
+carriage return is entered, as shown below:
+
+
+OS9: build /d1/file1
+? This is the first file that
+? we created.
+? [ENTER]
+
+
+
+The "dir" command will now indicate the existence of the new file:
+
+
+
+OS9: dir /d1
+
+ Directory of /d1 15:45:29
+file1
+
+
+
+The "list" command can be used to display the text stored in the
+file:
+
+
+
+OS9: list /d1/file1
+
+This is the first file
+that we created.
+
+
+
+The "build" command again is again used to create two more text
+files:
+
+
+
+OS9: build /d1/file2
+? This is the second file
+? that we created.
+? [ENTER]
+
+OS9: build /d1/file3
+? This is another file.
+? [ENTER]
+
+
+
+The dir command will now show three file names:
+
+
+
+OS9: dir /d1
+ Directory of /D1 15:52:29
+file1 file2 file3
+
+
+
+To make a new directory in this directory, the "makdir" command is
+used. The new directory will be called "NEWDIR". Notice that
+throughout this manual directory names are always capitalized. This
+is not a requirement of OS-9 (see 3.1) . Rather, it is a
+practice popular with many OS-9 users because it allows easy identification
+of directory files at all times (assuming all other file names use
+lower-case letters).
+
+
+
+OS9: makdir /D1/NEWDIR
+
+
+
+The directory file "NEWDIR" is now a file listed in D1's root
+directory:
+
+
+
+OS9: dir /D1
+
+ Directory of /D1 16:04:31
+file1 file2 file3 NEWDIR
+
+
+
+Now we will create a new file and put in the new directory, using
+the COPY command to duplicate "file1":
+
+
+OS9: COPY /D1/file1 /D1/NEWDIR/file1.copy
+
+
+Observe that the second pathlist now has three names: the name of
+the root directory ("D1"), the name of the next lower directory
+("NEWDIR"), then the actual file name ("file1.copy"). Here's what
+the directories look like now:
+
+
+ D1 Root Directory
+ +---------+--------+--------+
+ ! ! ! !
+ NEWDIR file1 file2 file3
+ !
+ !
+file1.copy
+
+
+The dir command can now show the files in the new directory:
+
+
+OS9: dir /D1/NEWDIR
+
+ Directory of /D1/NEWDIR
+file1.copy
+
+
+It is possible to use "makdir" to create additional new directories
+within "NEWDIR", and so on, limited only by available disk
+space.
+
+
+
+
+Deleting Directory Files
+
+The "del" command cannot be used to directly delete a directory
+file. If a directory file that still contained file names were to
+be deleted, OS-9 would have no way to access the files or to return
+their storage to the unallocated storage pool. Therefore, the
+following sequence must be performed to delete a directory file:
+
+
+1 - All file names in the directory must be deleted.
+
+
+2 - The "attr" command is used to turn off the files directory
+attrribute (-d option), making it an ordinary file (see 3.8).
+
+
+3 - The file may now be deleted using the "del" command.
+
+
+A simpler alternative is to use the DELDIR command to automatically
+perform all these steps for you.
+
+
+
+
+Additional Information About Directories
+
+The OS-9 directory system is very useful because it allows each
+user to privately organize files as desired (by project, function,
+etc.), without affecting other files or other user's files. Another
+advantage of the hierarchical directory system is that files with
+identical names can be kept on the same device as long as the names
+are in different directories. For example, you can have a set of
+test files to check out a program using the same file names as the
+program's actual working files. You can then run the program with
+test data or actual data simply by switching directories.
+
+
+Here are some important characteristics relating to use of directory
+files:
+
+
+
+Directories have the same ownership and security attributes
+and rules as regular files. See Section 3.6.
+
+
+The name of a given file appears in exactly one directory.
+
+
+Files can only be added to directories when they are created.
+
+
+A file and the directory in which its name is kept must reside on
+the same device.
+
+
+
+
+
+Using and Changing Working Directories
+
+Each program (process) has two "working directories" associated
+with it at all times: a "data directory" and an "execution
+directory". The working directory mechanism allows the name searching
+involved in pathlist processing to start at any level (subtree)
+of the file system hierarchy. Any directory that the user has
+permission to access (see 3.8) can be made a working directory.
+
+
+The rules used to determine whether pathlists refer to the
+current working directory or not are simple:
+
+
+---> When the first character of a pathlist IS a "/",
+processing of the pathlist starts at the device directory,
+e.g., the first name MUST be a device name.
+
+
+---> When the first character of a pathlist IS NOT a "/",
+processing of the pathlist starts at the current working
+directory.
+
+
+Notice that pathlists starting with a "/"
+must be complete, in
+other words, they must have all names required to trace the pathlist
+from the device directory down through all intermediate directories
+(if any). For example:
+
+
+
+/d2/JOE/WORKINGFILES/testresults
+
+
+
+On the other hand, use of the current working directory allows
+all names in the file hierarchy tree to be implied instead of
+explicitly given. This not only makes pathlists shorter, but allows
+OS-9 to locate files faster because (typically) fewer directories
+need be searched. For example, if the current working directory is
+"/D1/PETE/GAMES" and a pathlist is given such as:
+
+
+baseball
+
+
+the actual pathlist implied is:
+
+
+/D1/PETE/GAMES/baseball
+
+
+Pathlists using working directories can also specify additional
+lower-level directories. Referring to the example above, the
+pathlist:
+
+
+ACTION/racing
+
+
+implies the complete pathlist:
+
+
+/D1/PETE/GAMES/ACTION/racing
+
+
+
+Automatic Selection of Working Directories
+
+Recall that two working directories are referred to as the
+"current execution directory" and the "current data directory". The
+reason two working directories are maintained is so that files
+containing
+programs can be organized in different directories than
+files containing data.
+OS-9 automatically selects either working
+directory, depending on the usage of the pathlist:
+
+
+---> OS-9 will search the execution directory when it attempts to
+load files into memory assumed to be executable programs. This
+means that programs to be run as commands or loaded into
+memory must be in the current execution directory (See 5.4.1).
+
+
+---> The data directory is used for all other file references (such
+as text files, etc.)
+
+
+Immediately after startup, OS-9 will set the data directory to be
+(the root directory of) the system disk drive (usually "D0"), and
+the working directory to be a directory called "cmds" on the same
+drive ("/D0/cmds"). On timesharing systems, the "login" command
+selects the initial execution and data directories to the file names
+specified in each user's information record stored in the system
+password file(ref. 5.4.2).
+
+
+Here is an example of a shell command statement using the default
+working directory notation, and its equivalent expansion:
+
+
+copy file1 file2
+
+
+If the current execution directory is "/D0/CMDS" and the current
+data directory is "/D0/JONES", the same command, fully expanded to
+show complete pathlists implied is:
+
+
+OS9: /D0/CMDS/copy /D0/JONES/filel /D0/JONES/file2
+
+
+Notice that the first pathlist "copy" expands to the current working
+directory pathlist because it is assumed to be an executable program
+but the two other file names expand using the data directory because
+they are not assumed to be executable.
+
+
+
+
+Changing Current Working Directories
+
+The built-in shell commands "chd" and "chx" can be used to
+independently change the current working data and execution
+directories, respectively. These command names must be followed by
+a pathlist that describes the new directory file. You must have
+permission to access the directory according to normal file security
+rules (See 3.8). Here are some examples:
+
+
+OS9: chd /D1/MY.DATAFILES
+
+OS9: chx /D0/TESTPROGRAMS
+
+
+When using the CHD or CHX commands, pathlists work the same as they
+do for regular files, except for the last name in the pathlist must
+be a directory name. If the pathlist begins with a "/" , OS-9 will
+begin searching in the device directory for the new working
+directory, otherwise searching will begin with the present directory
+(See 3.6). For example, the following sequence of commands set the
+working directory to the same file:
+
+
+OS9: CHD /D1/SARAH
+OS9: CHD PROJECT1
+
+OS9: CHD /D1/SARAH/PROJECT1 (same effect as above)
+
+
+
+
+Anonymous Directory Names
+
+Sometimes is useful to be able to refer to the current directory
+or the next higher-level directory, but its name (full pathlist) may
+not be known. Because of this, special "name substitutes" are
+available. They are:
+
+
+"." refers to the present working directory
+
+
+".." refers to the directory that contains the name of the present
+directory (e.g., the next highest level directory)
+
+
+"..." refers to directory two levels up, and so on
+
+
+These can be used in place of pathlists and/or the first name in a
+pathlist. Here are some examples:
+
+
+
+
+
+
+
+OS9: dir .
+lists file names in the working data directory
+
+
+OS9: dir ..
+lists names in the working data directory's parent directory.
+
+
+OS9: DEL ../temp
+deletes the file "temp" from the
+working data directory's parent directory.
+
+
+
+
+
+The substitute names refer to either the execution or data
+directories, depending on the context in which they are used (See
+3.7.1). For example, if ".." is used in a pathlist of a file which
+will be loaded and/or executed, it will represent the parent
+directory of the execution directory. Likewise, if "." is used in a
+pathlist describing a program's input file, it will represent the
+current data directory.
+
+
+
+
+
+The File Security System
+
+Every file (including directory files) has properties called
+ownership
+and attributes which determine who may access the file and
+how it many be used.
+
+
+OS-9 automatically stores with each file the user number
+associated with the process that created it. This user is considered
+to be the "owner" of the file.
+
+
+Usage and security functions are based on "attributes", which
+define how and by whom the file can be accessed. There are a total
+of seven attributes, each of which can be turned "off" or
+"on"
+independently. The "d" attribute is used to indicate (when on) that
+the file is a directory file. The other six attributes control
+whether the file can be read, written to, or executed, by either the
+owner or by the "public" (all other users). Specifically, these six
+attributes are:
+
+
+WHITE PERMISSION FOR OWNER: If on, the owner may write to the file
+or delete it. This permission can be used to protect important
+files from accidental deletion or modification.
+
+
+READ PERMISSION FOR OWNER: If on, the owner is allowed to read
+from the file. This can be used to prevent "binary" files from
+being used as "text" files (See 3.9)
+
+
+EXECUTE PERMISSION FOR OWNER: If on, the owner can load the file into memory
+and execute it. Note that the file must contain one or
+more valid OS-9 format memory modules in order to actually load (See
+3.9.4 and 5.4.1).
+
+
+The following "public permissions" work the same way as
+the "owner permissions" above but are applied to processes having
+DIFFERENT user numbers than the file's owner.
+
+
+WRITE PERMISSION FOR PUBLIC - If on, any other user may write to or
+delete the file.
+
+
+READ PERMISSION FOR PUBLIC - If on, any other user may read (and
+possibly copy) the file.
+
+
+EXECUTE PERMISSION FOR PUBLIC - If on, any other user may execute
+the file.
+
+
+For example, if a particular file had all permissions on except
+"write permit to public" and "read permit to public", the owner
+would have unrestricted access to the file, but other users could
+execute it, but not read, copy, delete, or alter it.
+
+
+
+Examining and Changing File Attributes
+
+The "DIR" command may be used to examine the security permissions
+of the files in any particular directory when the "e" option is
+used. An example using the "dir e" command to show the detailed
+attributes of the files in the current working directory is:
+
+
+ Directory of . 10:20:44
+
+Owner Last Modified Attributes Sector Bytecount Name
+----- ------------- ---------- ------ --------- ----
+ 1 81/05/29 1402 --e--e-r 47 42 file1
+ 0 81/10/12 0215 ---wr-wr 48 43 file2
+ 3 81/04/29 2335 -s----wr 51 22 file3
+ 1 82/01/06 1619 d--wr-wr 6D 800 NEWDIR
+
+
+
+This display is fairly self-explanatory. The "attributes" column
+shows which attributes are currently on by the presence or absence
+of associated characters in the following format:
+
+
+ dsewrewr
+
+
+
+The character positions correspond to from left to right: directory;
+sharable; public execute; public write; public read; owner execute;
+owner write; owner read. The "attr" command is used to examine or
+change a file's attributes. Typing "attr" followed by a file name
+will result in the present attributes to be displayed, for example:
+
+
+
+OS9: attr file2
+-s-wr-ewr
+
+
+
+If the command is used with a list of one or more attribute abbreviations,
+the file's attributes will be changed accordingly (if
+legal). For example, the command:
+
+
+OS9: attr file2 pw pr -e -pe
+
+
+enables public write and public read permissions and removes execute
+permission for both the owner and the public.
+
+
+The "directory" attribute behaves somewhat differently than the
+read, write, and execute permissions. This is because it would be
+quite dangerous to be able to change directory files to normal files
+(See 3.5), and creation of a directory requires special initialization
+(See 3.4). Therefore, the "attr" command
+cannot be used to turn
+the directory (d) attribute on (only "makdir" can), and can be used
+to turn it off only if the directory is empty.
+
+
+
+
+
+Reading and Writing From Files
+
+A single file type and format is used for all mass storage files.
+Files store an ordered sequence of 8-bit bytes. OS-9 is not usually
+sensitive to the contents of files for most functions. A given file
+may store a machine language program, characters of text, or almost
+anything else. Data is written to and read from files exactly as
+given. The file can be any size from zero up to the maximum
+capacity of the storage device, and can be expanded or shortened as
+desired.
+
+
+When a file is created or opened a "file pointer" is established
+for it. Bytes within the file are addressed like memory, and the
+file pointer holds the "address" of the next byte in the file to be
+written to or read from. The OS-9 "read" and "write" service
+functions always update the pointer as data transfers are performed.
+Therefore, successive read or write operations will perform sequential data transfers.
+
+
+Any part of a file can also be read or written in non-sequential
+order by using a function called "seek" to reposition the file
+pointer to any byte address in the file. This is used when random
+access of the data is desired.
+
+
+To expand a file, you can simply write past the previous end of
+the file. Reading up to the last byte of a file will cause the next
+"read" request to return an end-of-file status.
+
+
+
+File Usage in OS-9
+
+Even though there is physically only one type of file, the logical
+usage of files in OS-9 covers a broad spectrum. Because all
+OS-9 files have the same physical type, commands such as "copy",
+"del", etc., can be used with any file regardless of its logical
+usage. Similarly, a particular file can be treated as having a
+different logical usage at different times by different programs. The
+main usage of files covered in this section are:
+
+
+TEXT
+RANDOM ACCESS DATA
+EXECUTABLE PROGRAM MODULES
+DIRECTORIES
+MISCELLANEOUS
+
+
+
+
+Text Files
+
+These files contain variable-length sequences ("lines") of ASCII
+characters. Each line is terminated by a carriage return character.
+Text files are used for program source code, procedure files,
+messages, documentation, etc. The Text Editor operates on this file
+format.
+
+
+Text files are usually read sequentially, and are supported by
+almost all high-level languages (such as BASIC09 READ and WRITE
+statements). Even though is is possible to randomly access data at
+any location within a text file, it is rarely done in practice
+because each line is variable length and it is hard to locate the
+beginning of each line without actually reading the data to locate
+carriage return characters.
+
+
+The content of text files may be examined using the "list"
+command.
+
+
+
+
+Random Access Data Files
+
+Random-access data files are created and used primarily from
+within high-level languages such as Basic09, Pascal, C, and Cobol.
+In Basic09 and Pascal, "GET", "PUT", and "SEEK" functions operate on
+random-access files.
+
+
+The file is organized as an ordered sequence of "records". Each
+record has exactly the same length, so given a record's numerical
+index, the record's beginning address within the file can be
+computed by multiplying the record number by the number of bytes
+used for each record. Thus, records can be directly accessed in any
+order.
+
+
+In most cases, the high-level language allows each record to be
+subdivided into "fields". Each field generally has a fixed length
+and usage for all records within the file. For example, the first
+field of a record may be defined as being 25 text characters, the
+next field may be two bytes long and used to hold 16-bit binary
+numbers, etc.
+
+
+It is important to understand that OS-9 itself does not directly
+process or deal with records other than providing the basic file
+functions required by all high-level languages to create and use
+random-access files.
+
+
+
+
+Executable Program Module Files
+
+These files are used to hold program modules generated by the
+assembler or compiled by high-level languages.
+Each file may
+contain one or more program modules.
+
+
+OS-9 program modules resident in memory have a standard module
+format that, besides the object code, includes a "module header" and
+a CRC check value. Program module(s) stored in files contain exact
+binary copies of the programs as they will exist in memory, and not
+one byte more (See 5.4.1). OS-9 does not require a "load record"
+system commonly used by other operating systems because OS-9
+programs are position-independent code and therefore do not have to
+be loaded into specific memory addresses.
+
+
+In order for OS-9 to load the program module(s) from a file, the
+file itself must have execute permission (See 3.8) and each module
+must have a valid module header and CRC check value. If a program
+module has been altered in any way, either as a file or in memory,
+its CRC check value will be incorrect And OS-9 will refuse to load
+the module. The "verify" command can be used to check the correctness
+of the check values, and update them to corrected values if
+necessary.
+
+
+On Level One systems, if a file has two or more modules, they are
+treated as independent entities after loading and reside at different memory regions.
+
+
+Like other files that contain "binary" data, attempts to "list
+program files will result in the display of random characters on the
+terminal giving strange effects. The "dump" command can be used to
+safely examine the contents of this kind of file in hexadecimal and
+controlled ASCII format.
+
+
+
+
+Directory Files
+
+Directory files play a key role in the OS-9 file system.
+Sections 3.3 through 3.7 of this chapter describe how they are used by
+various OS-9 features.
+
+
+Directory files can only be created by the "makdir" command, and
+can be identified by the "d" attribute being set (see 3.8.1). The
+file is organized into 32-byte records. Each record can be a
+directory entry. The first 29 bytes of the record is a string of
+characters which is the file name. The last character of the name
+has its sign bit (most significant bit) set. If the record is not
+in use the first character position will have the value zero. The
+last three bytes of the record is a 24-bit binary number which is
+the logical sector number where the file header record (see 3.10) is
+located.
+
+
+The "makdir" command initializes all records in a new directory
+to be unused entries except for the first two entries. These
+entries have the names "." and ".." along with the logical sector
+numbers of the directory and its parent directory, respectively (see 3.7.3).
+
+
+Directories cannot be copied or listed - the "dir" command is
+used instead. Directories also cannot be deleted directly (see 3.5).
+
+
+
+
+Miscellaneous File Usage
+
+OS-9's basic file functions are so versatile it is possible to
+devise an almost unlimited number of special-purpose file formats
+for particular applications, which do not fit into any of the three
+previously discussed categories.
+
+
+Examples of this category are COBOL Indexed Sequential (ISAM)
+files and some special word processor file formats which allow
+random access of text lines (See 3.9.2). As discussed in Sec.
+3.9.1, most OS-9 utility commands work with any file format including
+these special types. In general, the "dump" command is the preferred
+method for examining the contents of unusually formatted files.
+
+
+
+
+
+Physical File Organization
+
+OS-9's file system implements a universal logical organization
+for all I/O devices that effectively eliminates most hardware-related
+considerations for most applications. This section gives
+basic information about the physical file structure used by OS-9.
+For more information, see the OS-9 System Programmer's Manual.
+
+
+Each OS-9 file is comprised of one or more sectors which are
+the physical storage units of the disk systems. Each sector holds
+exactly 256 data bytes, and disk is numbered sequentially starting
+with sector zero, track zero. This number is called a "logical
+sector number", or LSN.
+The mapping of logical sector numbers to
+physical track/sector numbers is done by the disk driver module.
+
+
+Sectors are the smallest allocatable physical unit on a disk
+system, however, to increase efficiency on some larger-capacity disk.
+systems, OS-9 uses uniform-sized groups of sectors, called
+clusters,
+as the smallest allocatable unit. Cluster sizes are always an
+integral power of two (2, 4, 8, etc.). One sector of each disk is
+used as a bitmap (usually LSN 1),
+in which each data bit corresponds
+to one cluster on the disk. The bits are set and cleared to
+indicate which clusters are in use (or defective), and which are
+free for allocation to files.
+
+
+The Dragon Computer disk system uses the following format:
+
+
+
+double density recording on one side
+
+
+40 tracks per disk
+
+
+18 sectors per track
+
+
+one sector per cluster
+
+
+
+Each file has a directory entry (see 3.9.5) which includes the
+file name and the logical sector number of the file's "file descriptor
+sector", which contains a complete description of the file
+including:
+
+
+
+attributes
+
+
+owner
+
+
+date and time created
+
+
+size
+
+
+segment list (description of data sector blocks)
+
+
+
+Unless the file size is zero, the file will have one or more
+sectors/clusters used to store data. The data sectors are grouped
+into one or more contiguous blocks called "segments".
+
+
+
diff -r 740f7868679c -r f4e798ea65b9 docs/nitros9guide/chap4.chapter
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/nitros9guide/chap4.chapter Sun Jul 07 09:54:04 2002 +0000
@@ -0,0 +1,717 @@
+
+Advanced Features of the Shell
+
+The basic shell functions were introduced in Section 2 in order
+to provide an understanding of how basic OS-9 commands work. In
+this section the more advanced capabilities of the shell are
+discussed. In addition to basic command line processing, the shell
+has functions that facilitate:
+
+
+
+
+I/O redirection (including filters)
+
+
+Memory Allocation
+
+
+Multitasking (concurrent execution)
+
+
+Procedure File Execution (background processing)
+
+
+Execution Control (built-in commands)
+
+
+
+
+There is a virtually unlimited combination of ways these
+capabilities can be used, and it is impossible to give more than a
+representative set of examples in this manual. You are therefore
+encouraged to study the basic rules, use your imagination, and
+explore the possibilities on your own.
+
+
+
+A More Detailed Description Command Line Processing
+
+The shell is a program that reads and processes command lines one
+at a time from its input path (usually your keyboard). Each line is
+first scanned (or "parsed") in order to identify and process any of
+the following parts which may be present:
+
+
+
+
+A program, procedure file, or built-in command name ("verbs")
+
+
+Parameters to be passed to the program
+
+
+Execution modifiers to be processed by the shell
+
+
+
+
+Note that only the verb (the program or command name) need be
+present, the other parts are optional. After the verb has been
+identified, the shell processes modifiers (if any). Any other text
+not yet processed is assumed to be parameters and passed to the program called.
+
+
+Unless the verb is a "built-in command", the shell will run the
+program named as a new process (task). It then deactivates itself
+until the program called eventually terminates, at which time it
+gets another input line, then the process is repeated. This happens
+over and over until an end-of-file condition is detected on the
+shell's input path which causes the shell to terminate its own
+execution.
+
+
+Here is a sample shell line which calls the assembler:
+
+
+asm sourcefile l -o >/p #12k
+
+
+In this example:
+
+
+
+
+
+
+
+
+asm
+is the verb
+
+
+sourcefile l -o
+are parameters passed to "asm
+
+
+>/p
+is a modifier which redirects the output
+(listing) to the system's printer
+
+
+#12K
+is a modifier which requests that the
+process be assigned 12K bytes of memory
+instead of its (smaller) default amount.
+
+
+
+
+
+
+The verb must be the first name in the command line. After it
+has been scanned, the shell first checks if it is a "built-in"
+command. If it is, it is immediately executed. Otherwise, the shell
+assumes it is a program name and attempts to locate and execute it
+as described in Sections 5.3 and 5.4.1.
+
+
+
+
+Execution Modifiers
+
+Execution modifiers are processed by the shell before the program
+is run. If an error is detected in any of the modifiers, the run
+will be aborted and the error reported. Characters which comprise
+modifiers are stripped from the part(s) of the command line passed
+to the program as parameters, therefore, the characters reserved for
+use as modifiers ( # ; ! < > & ) cannot be used inside parameters,
+but can be used before or after the parameters.
+
+
+
+Alternate Memory Size Modifier
+
+When command programs are invoked by the shell, they are
+allocated the minimum amount of working RAM memory specified in the
+program's module header. A module header is part of all executable
+programs and holds the program's name, size, memory requirements,
+etc. (See 5.4). Sometimes it is desirable to increase this default
+memory size. Memory can be assigned in 256-byte pages using the
+modifier "#n" where n is the decimal number of pages, or in 1024
+byte increments using the modifier "#nK". The two examples below
+behave identically:
+
+
+OS9: copy #8 file1 file2 (gives 8*256 = 2048 bytes)
+OS9: copy #2K file1 file2 (gives 2*1024 = 2048 bytes)
+
+
+
+
+I/O Redirection Modifiers
+
+The second kind of modifier is used to redirect the program's
+"standard I/O paths" to alternate files or devices. Well-written
+OS-9 programs use these paths for routine I/O. Because the programs
+do not use specific file or device names, it is fairly simple to
+"redirect" the I/O to any file or device without altering the
+program itself. Programs which normally receive input from a
+terminal or send output to a terminal use one or more of the
+standard I/O paths as defined below:
+
+
+STANDARD INPUT: This path normally passes data from the
+terminal's keyboard to the program.
+
+
+STANDARD OUTPUT PATH: This path is normally used to output
+data from the program to the terminal's display.
+
+
+STANDARD ERROR OUTPUT PATH: This path is used to output
+routine status messages such as prompts and errors to the
+terminal's display (defaults to the same device as the
+standard output path). NOTE: The name "error output" is
+sometimes misleading since many other kinds of messages besides
+errors are sent on this path.
+
+
+When new processes are created, they inherit their parent process'
+standard I/O paths (See 5.3). Therefore, when the shell
+creates new processes, they usually inherit its standard I/O paths.
+When you log-on the shell's standard input is the terminal keyboard;
+the standard output and error output is the terminal's display.
+When a redirection modifier is used on a shell command line, the
+shell will open the corresponding paths and pass them to the new
+process as its standard I/O paths. There are three redirection
+modifiers as given below:
+
+
+
+
+
+
+
+<
+Redirect the standard input path
+
+
+>
+Redirect the standard output path
+
+
+>>
+Redirect the standard error output path
+
+
+
+
+
+
+When redirection modifiers are used on a command line, they must
+be immediately followed by a pathlist describing the file or device
+the I/O is to be redirected to or from. For example, the standard
+output of "list" can be redirected to write to the system printer
+instead of the terminal:
+
+
+OS9: LIST correspondence >/p
+
+
+Files referenced by I/O redirection modifiers are automatically
+opened or created, and closed (as appropriate) by the shell. Here is
+another example, the output of the DIR command is redirected to the
+file "/D1/savelisting":
+
+
+OS9: DIR >/D1/savelisting
+
+
+If the LIST command is used on the file "/D1/savelisting", output
+from the DIR command will be displayed as shown below:
+
+
+OS9: LIST /D1/savelisting
+
+ Directory of . 10:15:00
+myfile savelisting file1
+
+
+Redirection modifiers can be used before and/or after the program's
+parameters, but each modifier can only be used once.
+
+
+
+
+
+Command Separators
+
+A single shell input line can request execution of more than one
+program. These programs may be executed sequentially or
+concurrently. Sequential execution means that one program must
+complete its function and terminate before the next program is
+allowed to begin execution. Concurrent execution means that several
+programs are allowed to begin execution and run simultaneously.
+
+
+
+
+Sequential Execution
+
+Programs are executed sequentially when each is entered on a
+separate line. More than one program can be specified on a single
+shell command line by separating each
+&replstart;program name&replend; &replstart;parameters&replend;
+from the next one with a ";" character. For example:
+
+
+OS9: COPY myfile /D1/newfile ; DIR >/p
+
+
+This command line will first execute the COPY command and then the
+DIR command.
+
+
+If an error is returned by any program, subsequent commands on
+the same line are not executed (regardless of the state of the "x"
+option), otherwise, ";" and "return" are identical
+separators.
+
+
+Here are some more examples:
+
+
+OS9: copy oldfile newfile; del oldfile; list newfile
+
+OS9: dir >/d1/myfile ; list temp >/p; del temp
+
+
+All programs executed sequentially are in fact separate, child
+processes of the shell (See 5.3). After initiating execution of a
+program to be executed sequentially, the shell enters the "wait"
+state (See 5.2) until execution of the called program terminates.
+
+
+
+
+Concurrent Execution
+
+The second kind of separator is the "&" which implies concurrent
+execution, meaning that the program is run (as a separate, child
+process, see 5.3), but the shell does not wait for it to complete
+before processing the next command.
+
+
+The concurrent execution separator is therefore the means by
+which multiprogramming (running two or more programs simultaneously)
+is accomplished. The number of programs that can run at the same
+time is not fixed: it depends upon the amount of free memory in the
+system versus the memory requirements of the specific programs.
+Here is an example:
+
+
+OS9: DIR >/P&
+&007
+
+OS9:
+
+
+This command line will cause shell to start the DIR command
+executing, print the process ID number (&007), and then immediately
+display the "OS9:" prompt and wait for another command to be
+entered. Meanwhile the DIR command will be busy sending a directory
+listing to the printer. You can display a "status summary" of all
+processes you have created by using the PROCS command. Below is
+another example:
+
+
+OS9: DIR >/P& LIST file1& COPY file1 file2 ; DEL temp
+
+
+
+
+
+Because they were followed by "&" separators, the DIR, LIST, and
+COPY programs will run concurrently, but the DEL program will not
+run until the COPY program has terminated because sequential
+execution (";") was specified.
+
+
+
+
+Pipes and Filters
+
+The third kind of separator is the "!" character which is used to
+construct "pipelines". Pipelines consist of two or more concurrent
+programs whose standard input and/or output paths connect to each
+other using "pipes".
+
+
+Pipes are the primary means-by which data is transferred from
+process to process (interprocess communications). Pipes are first-in,
+first-out buffers that behave like mass-storage files.
+
+
+I/O transfers using pipes are automatically buffered and
+synchronized. A single pipe may have several "readers" and several
+"writers". Multiple writers send, and multiple readers accept, data
+to/from the pipe on a first-come, first-serve basis. An end-of-file
+will occur if an attempt is made to read from a pipe but there are
+no writers available to send data. Conversely, a write error will
+occur if an attempt is made to write to a pipe having no readers.
+
+
+Pipelines are created by the shell when an input line having one
+or more "!" separators is processed. For each "!", the standard
+output of the program named to the left of the "!" is redirected via
+a pipe to the standard input of the program named to the right of
+the "!". Individual pipes are created for each "!" present.
+For example:
+
+
+OS9: update <master_file ! sort ! write_report >/p
+
+
+In the example above, the program "update" has its input redirected
+from a path called "master_file". Its standard output becomes the
+standard input for the program "sort". Its output, in turn, becomes
+the standard input for the program "write_report", which has its
+standard output redirected to the printer.
+
+
+All programs in a pipeline are executed concurrently. The pipes
+automatically synchronize the programs so the output of one never
+"gets ahead" of the input request of the next program in the
+pipeline. This implies that data cannot flow through a pipeline any
+faster than the slowest program can process it. Some of the most
+useful applications of pipelines are jobs like character set
+conversion, print file formatting, data compression/decompression,
+etc. Programs which are designed to process data as components of a
+pipeline are often called "filters".
+The "tee" command, which uses
+pipes to allow data to be simultaneously "broadcast" from a single
+input path to several output paths, is a useful filter.
+
+
+
+
+
+Command Grouping
+
+Sections of shell input lines can be enclosed in parentheses
+which permits modifiers and separators to be applied to an entire
+set of programs. The shell processes them by calling itself
+recursively (as a new process) to execute the enclosed program list.
+For example:
+
+OS9: (dir /d0; dir /d1) >/p
+
+gives the same result as:
+
+OS9: dir /d0 >/p; dir /d1 >/p
+
+except for the subtle difference that the printer is "kept"
+continuously in the first example; in the second case another user
+could "steal" the printer in between the "dir" commands.
+
+
+Command grouping can be used to cause a group of programs to be
+executed sequentially, but also concurrently with respect to the
+shell that initiated them, such as:
+
+
+OS9: (del file1; del file2; del file3)&
+
+
+A useful extension of this form is to construct pipelines consisting
+of sequential and/or concurrent programs. For example:
+
+
+OS9: (dir CMDS; dir SYS) ! makeuppercase ! transmit
+
+
+Here is a very practical example of the use of pipelines. Recall
+that the "DSAVE" command generates a procedure file to copy all the
+files in a directory. The example below shows how the output of
+"DSAVE" can be pipelined to a shell which will execute the OS-9
+commands as they are generated by DSAVE. Assume that we want to
+copy all files from a directory called WORKING to a directory called
+ARCHIVE:
+
+
+OS9: chd /d0/WORKING; dsave ! (chd /d0/ARCHIVE)
+
+
+
+
+Built-in Shell Commands and Options
+
+When processing input lines, the shell looks for several special
+names of commands or option switches that are built-in the shell.
+These commands are executed without loading a program and creating a
+new process, and generally affect how the shell operates. They can
+be used at the beginning of a line, or following any program
+separator (";", "&", or "!").
+Two or more adjacent built-in
+commands can be separated by spaces or commas.
+
+
+The built-in commands and their functions are:
+
+
+
+
+
+
+
+chd &replstart;pathlist&replend;
+change the working data directory to the directory
+specified by the pathlist (see 3.6).
+
+
+chx &replstart;pathlist&replend;
+change the working execution directory to the
+directory specified by the pathlist (see 3.6).
+
+
+ex name
+directly execute the module named. This
+transforms the shell process so it ceases
+to exist and a new module begins execution in
+its place.
+
+
+w
+wait for any process to terminate.
+
+
+* text
+comment: "text" is not processed.
+
+
+kill &replstart;Proc ID&replend;
+abort the process specified.
+
+
+setpr &replstart;proc ID&replend; &replstart;priority&replend;
+changes process' priority (see 5.1).
+
+
+x
+causes shell to abort on any error (default)
+
+
+-x
+causes shell not to abort on error (See 4.7)
+
+
+p
+turns shell prompt and messages on (default)
+
+
+-p
+inhibits shell prompt and messages
+
+
+t
+makes shell copy all input lines to output
+
+
+-t
+does not copy input lines to output (default)
+
+
+
+
+
+
+
+The change directory commands switch the shell's working directory
+and, by inheritance, any subsequently created child process. The
+"ex" command is used where the shell is needed to initiate execution
+of a program without the overhead of a suspended "shell" process.
+The name used is processed according to standard shell operation,
+and modifiers can be used.
+
+
+
+
+Shell Procedure Files
+
+The shell is a reentrant program that can be simultaneously
+executed by more than one process at a time. As is the case with
+most other OS-9 programs, it uses standard I/O paths for routine
+input and output (see 4.2.3). specifically, it requests command
+lines from the standard input path and writes its prompts and other
+data to the standard error path.
+
+
+The shell can start up another process also running the shell by
+means of the "shell" command. If the standard input path is
+redirected to a mass storage file, the new "incarnation" of the
+shell can accept and execute command lines from the file instead of
+a terminal keyboard. The text file (see 3.9.2) to be processed is
+called a "procedure file". It contains one or more command lines
+that are identical to command lines that are manually entered from
+the keyboard. This technique is sometimes called "batch" or
+"background" processing.
+
+
+If the &replstart;program name&replend; specified on a shell command line can not be
+found in memory or in the execution directory, shell will search the
+data directory for a file with the desired name. If one is found,
+shell will automatically execute it as a procedure file (see 2.0).
+
+
+Execution of procedure files have a number of valuable
+applications. It can eliminate repetitive manual entry of commonly-used
+sequences of commands. It can allow the computer to execute a
+lengthy series of programs "in the background" while the computer is
+unattended or while the user is running other programs "in the
+foreground".
+
+
+In addition to redirecting the shell's standard input to a
+procedure file, the standard output and standard error output can be
+redirected to another file which can record output for later review
+or printing. This can also eliminate the sometimes-annoying output
+of shell messages to your terminal at random times.
+
+
+Here are two simple ways to use the shell to create another
+shell:
+
+
+OS9: shell <procfile
+
+OS9: procfile
+
+
+Both do exactly the same thing: execute the commands of the file
+"procfile". To run the procedure file in a "background" mode you
+simply add the ampersand operator:
+
+
+OS9: procfile&
+
+
+OS-9 does not have any constraints on the number of jobs that can be
+simultaneously executed as long as there is memory available (see
+5.4). Also, the procedure files can themselves cause sequential or
+concurrent execution of additional procedure files. Here's a more
+complex example of initiating two processing streams with
+redirection of each shell's output to files:
+
+
+OS9: proc1 T >>stat1& proc2 T >>stat2&
+
+
+Note that the built-in command "T" (copy input lines to error
+output) was used above. They make the output file contain a record
+of all lines executed, but without useless "OS9" prompts intermixed.
+The "-x" built-in command can be used if you do
+not want processing
+to stop if an error occurs. Note that the built-in commands only
+affect the shell that executes them, and not any others that may
+exist.
+
+
+
+
+Error Reporting
+
+Many programs (including the shell) use OS-9's standard error
+reporting function, which displays an error number on the error
+output path. The standard error codes are listed in the Appendix of
+this manual. If desired, the "printerr" command can be executed,
+which replaces the smaller, built-in error display routine with a
+larger (and slower) routine that looks up descriptive error messages
+from a text file called "/d0/sys/errmsg".
+Once the "printerr"
+command has been run it cannot be turned off. Also, its effect is
+system-wide.
+
+
+Programs called by the shell can return an error code in the MPU
+"B" register (otherwise B should be cleared) upon termination. This
+type of error, as well as errors detected by the shell itself, will
+cause an error message to be displayed and processing of the command
+line or procedure file to be terminated unless the "-x" built-in
+command has been previously executed (See 4.5).
+
+
+
+
+Running Compiled Intermediate Code Programs
+
+Before the shell executes a program, it checks the program
+module's language type. If its type is not 6809 machine language,
+shell will call the appropriate run-time system for that module.
+Versions of the shell supplied for various systems are capable of
+calling different run-time systems. Most versions of shell call
+Basic09 when appropriate, and Level Two versions of shell can also
+call the Pascal P-code interpreter (PascalN), or the CIS Cobol
+runtime system (RunC).
+
+
+For example, if you wanted to run a BASIC09 I-code module called
+"adventure", you could type the command given below:
+
+
+OS9: BASIC09 adventure
+
+
+Or you could accomplish the same thing by typing the following:
+
+
+OS9: adventure
+
+
+
+
+Setting Up Timesharing System Procedure Files
+
+
+OS-9 systems used for timesharing usually have a procedure file
+that brings the system up by means of one simple command or by using
+the system "startup" file. A procedure file which initiates the
+timesharing monitor for each terminal is executed to start up the
+system. The procedure file first starts the system clock, then
+initiates concurrent execution of a number of processes that have
+their I/O redirected to each timesharing terminal.
+
+
+Usually one TSMON command program is started up concurrently for
+each terminal in the system. This is a special program which
+monitors a terminal for activity. When a carriage return character
+is typed on any of these terminals, the TSMON command initiates the
+LOGIN command program. If a user does not enter a correct password
+or user number in three tries, the LOGIN command will be aborted.
+Here's a sample procedure file for a 4-terminal timesharing system
+having terminals names "TERM", "T1",
+"T2", and "T3".
+
+
+* system startup procedure file
+echo Please Enter the Date and Time
+setime </term
+printerr
+tsmon /t1&
+tsmon /t2&
+tsmon /t3&
+
+
+NOTE: This LOGIN procedure will not work until a password file
+called "/D0/SYS/PASSWORD" has been created. For more information,
+please see the LOGIN command description.
+
+
+The example above deserves special attention. Note that the
+"setime" command has its input redirected to the system console
+"term", which is necessary because it would otherwise attempt to
+read the time information from its current standard input path,
+which is the procedure file and not the keyboard.
+
+
+