# HG changeset patch
# User roug
# Date 1049397916 0
# Node ID a1464c5aedcbc618985011c1a78dd4fa31028211
# Parent 01e088e150514b70f337673bed1420cdf3264940
Added cross references
diff -r 01e088e15051 -r a1464c5aedcb docs/os9sysprog/errorcodes.appendix
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/os9sysprog/errorcodes.appendix Thu Apr 03 19:25:16 2003 +0000
@@ -0,0 +1,329 @@
+
+Error Codes
+
+OS-9 Error Codes
+
+The error codes are shown both in hexadecimal (first column) and
+decimal (second column). Error codes other than those listed are
+generated by programming languages or user programs.
+
+
+
+
+
+
+
+
+HEX
+DEC
+
+
+
+
+
+ $C8
+ 200
+ PATH TABLE FULL
+ - The file cannot be opened because
+ the system path table is currently full.
+
+ $C9
+ 201
+ ILLEGAL PATH NUMBER
+ - Number too large or for non-existant path.
+
+ $CA
+ 202
+ INTERRUPT POLLING TABLE FULL
+
+ $CB
+ 203
+ ILLEGAL MODE
+ - attempt to perform I/O function of which the device or file is incapable.
+
+ $CC
+ 204
+ DEVICE TABLE FULL
+ - Can't add another device
+
+ $CD
+ 205
+ ILLEGAL MODULE HEADER
+ - module not loaded because its
+ sync code, header parity, or CRC is incorrect.
+
+ $CE
+ 206
+ MODULE DIRECTORY FULL
+ - Can't add another module
+
+ $CF
+ 207
+ MEMORY FULL
+ - Level One: not enough contiquous RAM free.
+ Level Two: process address space full
+
+ $D0
+ 208
+ ILLEGAL SERVICE REQUEST
+ - System call had an illegal code number
+
+ $D1
+ 209
+ MODULE BUSY
+ - non-sharable module is in use by another process.
+
+ $D2
+ 210
+ BOUNDARY ERROR
+ - Memory allocation or deallocation request not on a page boundary.
+
+ $D3
+ 211
+ END OF FILE
+ - End of file encountered on read.
+
+ $D4
+ 212
+ RETURNING NON-ALLOCATED MEMORY
+ - (NOT YOUR MEMORY)
+ attempted to deallocate memory not previously assigned.
+
+ $D5
+ 213
+ NON-EXISTING SEGMENT
+ - device has damaged file structure.
+
+ $D6
+ 214
+ NO PERMISSION
+ - file attributes do not permit access requested.
+
+ $D7
+ 215
+ BAD PATH NAME
+ - syntax error in pathlist (illegal character, etc.).
+
+ $D8
+ 216
+ PATH NAME NOT FOUND
+ - can't find pathlist specified.
+
+ $D9
+ 217
+ SEGMENT LIST FULL
+ - file is too fragmented to be expanded further.
+
+ $DA
+ 218
+ FILE ALREADY EXISTS
+ - file name already appears in current directory.
+
+ $DB
+ 219
+ ILLEGAL BLOCK ADDRESS
+ - device's file structure has been damaged.
+
+ $DC
+ 220
+ ILLEGAL BLOCK SIZE
+ - device's file structure has been damaged.
+
+ $DD
+ 221
+ MODULE NOT FOUND
+ - request for link to module not found in directory.
+
+ $DE
+ 222
+ SECTOR OUT OF RANGE
+ - device file structure damaged or
+incorrectly formatted.
+
+ $DF
+ 223
+ SUICIDE ATTEMPT
+ - request to return memory where your stack is located.
+
+ $E0
+ 224
+ ILLEGAL PROCESS NUMBER
+ - no such process exists.
+
+ $E2
+ 226
+ NO CHILDREN
+ - can't wait because process has no children.
+
+ $E3
+ 227
+ ILLEGAL SWI CODE
+ - must be 1 to 3.
+
+ $E4
+ 228
+ PROCESS ABORTED
+ - process aborted by signal code 2.
+
+ $E5
+ 229
+ PROCESS TABLE FULL
+ - can't fork now.
+
+ $E6
+ 230
+ ILLEGAL PARAMETER AREA
+ - high and low bounds passed in fork call are incorrect.
+
+ $E7
+ 231
+ KNOWN MODULE
+ - for internal use only.
+
+ $E8
+ 232
+ INCORRECT MODULE CRC
+ - module has bad CRC value.
+
+ $E9
+ 233
+ SIGNAL ERROR
+ - receiving process has previous
+ unprocessed signal pending.
+
+ $EA
+ 234
+ NON-EXISTENT MODULE
+ - unable to locate module.
+
+ $EB
+ 235
+ BAD NAME
+ - illegal name syntax.
+
+ $EC
+ 236
+ BAD HEADER
+ - module header parity incorrect
+
+ $ED
+ 237
+ RAM FULL
+ - no free system RAM available at this time
+
+ $EE
+ 238
+ UNKNOWN PROCESS ID
+ - incorrect process ID number
+
+ $EF
+ 239
+ NO TASK NUMBER AVAILABLE
+ - all task numbers in use
+
+
+
+
+
+
+Device Driver/Hardware Errors
+
+The following error codes are generated by I/O device drivers, and
+are somewhat hardware dependent. Consult manufacturer's hardware
+manual for more details.
+
+
+
+
+
+
+
+
+HEX
+DEC
+
+
+
+
+
+ $F0
+ 240
+ UNIT ERROR
+ - device unit does not exist
+
+ $F1
+ 241
+ SECTOR ERROR
+ - sector number is out of range.
+
+ $F2
+ 242
+ WRITE PROTECT
+ - device is write protected.
+
+ $F3
+ 243
+ CRC ERROR
+ - CRC error on read or write verify
+
+ $F4
+ 244
+ READ ERROR
+ - Data transfer error during disk read
+ operation, or SCF (terminal) input buffer overrun.
+
+ $F5
+ 245
+ WRITE ERROR
+ - hardware error during disk write operation.
+
+ $F6
+ 246
+ NOT READY
+ - device has "not ready" status.
+
+ $F7
+ 247
+ SEEK ERROR
+ - physical seek to non-existant sector.
+
+ $F8
+ 248
+ MEDIA FULL
+ - insufficient free space on media.
+
+ $F9
+ 249
+ WRONG TYPE
+ - attempt to read incompatible media (i.e.
+ attempt to read double-side disk on single-side drive)
+
+ $FA
+ 250
+ DEVICE BUSY
+ - non-sharable device is in use
+
+ $FB
+ 251
+ DISK ID CHANGE
+ - Media was changed with files open
+
+ $FC
+ 252
+ RECORD IS LOCKED-OUT
+ - Another process is accessing the requested record.
+
+ $FD
+ 253
+ NON-SHARABLE FILE BUSY
+ - Another process is accessing the requested file.
+
+ $FE
+ 254
+ I/O DEADLOCK ERROR
+ - Two processes are attempting to use the same two disk areas simultaneously.
+
+
+
+
+
diff -r 01e088e15051 -r a1464c5aedcb docs/os9sysprog/os9sysprog.docbook
--- a/docs/os9sysprog/os9sysprog.docbook Wed Apr 02 14:48:58 2003 +0000
+++ b/docs/os9sysprog/os9sysprog.docbook Thu Apr 03 19:25:16 2003 +0000
@@ -1,6 +1,8 @@
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+
+ ]>
@@ -274,7 +276,7 @@
for each specific type of I/O controller regardless of how many
controllers the system uses.
-One important component not shown is the Shell., which is the
+One important component not shown is the shell, which is the
command interpreter. It is technically a program and not part of the
operating system itself, and is described fully in the OS-9 Users
Manual.
@@ -329,7 +331,7 @@
other service request functions including interprocess control and
timekeeping.
-A system-wide assembly languaqe equate file called "OS9Defs" defines
+A system-wide assembly languaqe equate file called OS9Defs defines
symbolic names for all service requests. This file is included when
assembling hand-written or compiler-generated code. The OS-9
Assembler has a built-in macro to generate system calls, for example:
@@ -353,7 +355,7 @@
I/O REQUESTS perform various input/output functions. Requests of
this type are passed by the kernel to IOMAN for processing. The
symbolic names for this category have a "I$" prefix, for example,
-the "read" service request is called "I$Read".
+the "read" service request is called .
FUNCTION REQUESTS perform memory management, multiprogramming, and
miscellaneous functions. Most are processed by the kernel. The
@@ -491,7 +493,8 @@
Process Creation
-New processes are created when an existing process executes a "fork"
+New processes are created when an existing process executes a
+
service request. Its main argument is the name of the program module
(called the "primary module") that the new process is to
initially execute. OS-9 first attempts to find the module in the
@@ -510,13 +513,15 @@
The next step in the creation of a new process is allocation of
data storage (RAM) memory for the process. The primary module's
-header contains a storage size value that is used unless the "fork"
+header contains a storage size value that is used unless the
+
system call requested an optionally larger size. OS-9 then attempts
to allocate a CONTIGUOUS memory area of this size from the free
memory space.
If any of the previous steps cannot be performed, creation of the
-new process is aborted, and the process that originated the "fork"
+new process is aborted, and the process that originated the
+
is informed of the error. Otherwise, the new process is added to the
active process queue for execution scheduling.
@@ -527,7 +532,7 @@
is used to identify all processes and files belonging to a
particular user. The user ID is inherited from the parent process.
-Processes terminate when they execute an "EXIT" system service
+Processes terminate when they execute an system service
request, or when they receive fatal signals. The process termination
closes any open paths, deallocates its memory, and unlinks its
primary module.
@@ -567,7 +572,7 @@
The Wait State
-This state is entered when a process executes a WAIT system
+This state is entered when a process executes a system
service request. The process remains suspended until the death of any
of its descendant processes, or, until it receives a signal.
@@ -575,7 +580,7 @@
The Sleeping State
-This state is entered when a process executes a SLEEP service
+This state is entered when a process executes a service
request, which specifies a time interval. (a specific number of
ticks) for which the process is to remain suspended. The process
remains asleep until the specified time has elapsed, or until a
@@ -655,13 +660,13 @@
What happens next depends on whether or not the process had
previously set up a "signal trap" (signal service routine) by
-executing an INTERCEPT service request. If it had not, the process is
+executing an service request. If it had not, the process is
immediately aborted. It is also aborted if the signal code is zero.
The abort will be deferred if the process is in system mode: the
process dies upon its return to user state.
If a signal intercept trap has been set up, the process resumes
-execution at the address given in the INTERCEPT service request. The
+execution at the address given in the service request. The
signal code is passed to this routine, which should terminate with an
RTI instruction to resume normal execution of the process.
@@ -745,7 +750,7 @@
specific service routine in the kernel. The SWI, SWI2, and SWI3
vectors point to specific routines which in turn read the
corresponding pseudo vector from the process' process descriptor and
-dispatch to it. This is why the F$SSWI service request to be local to
+dispatch to it. This is why the service request to be local to
a process since it only changes a pseudo vector in the process
descriptor. The IRQ routine points directly to the IRQ polling
system, or to it indirectly via the real-time clock device service
@@ -917,17 +922,19 @@
The device's static storage address and service routine address is
read from the table and executed.
---> NOTE: The interrupt service routine should terminate with
-an an RTS, not an RTI instruction.
+
+The interrupt service routine should terminate with
+an an RTS, not an RTI instruction.
Entries can be made to the IRQ polling table by use of a special
-OS-9 service request called "F$IRQ". This is a priviledged
+OS-9 service request called . This is a priviledged
service request that can be executed only when OS-9 is in System Mode
(which is the case when device drivers are executed).
---> NOTE: The actual code for the interrupt polling system is
+
+The actual code for the interrupt polling system is
located in the IOMAN module. The kernel P1 and P2 modules contain
-the physical interrupt processing routines.
+the physical interrupt processing routines.
@@ -1147,8 +1154,10 @@
$B,$C =
Permanent Storage Requirement. This is the minimum number of
bytes of data storage required to run. This is the number used by
- FORK and CHAIN to allocate a process' data area.
- If the module will not be directly executed by a CHAIN or FORK
+ and
+ to allocate a process' data area.
+ If the module will not be directly executed by a
+ or
service request (for instance a subroutine package), this entry
is not used by OS-9. It is commonly used to specify the maximum
stack size required by reentrant subroutine modules. The calling
@@ -1310,7 +1319,7 @@
having the device name given (or implied) in the pathlist. This
module is the device's descriptor, which contains the names of the
device driver and file manager for the device. This information is
-saved by IOMAN so subsequent system call can be routed to these
+saved by IOMAN so subsequent system calls can be routed to these
modules.
@@ -1435,7 +1444,8 @@
The initialization table is copied into the "option section"
of the path descriptor when a path to the device is opened. The
values in this table may be used to define the operating parameters
-that are changeable by the OS9 I$GetStt and I$SetStt service requests.
+that are changeable by the OS9
+and service requests.
For example, a terminal's initialization parameters define which
control characters are used for backspace, delete, etc. The maximum
size of initialization table which may be used is 32 bytes. If the
@@ -1588,10 +1598,12 @@
parameters for the file or device. These variables are initialized at
the time the path is opened by copying the initialization table
contained in the device descriptor module, and can be altered later
-by user programs by means of the GETSTAT and SETSTAT system calls.
+by user programs by means of the
+and system calls.
These two sections are defined each file manager's in the assembly
-language equate file (SCFDefs for SCFMAN and RBFDefs for RBFMAN).
+language equate file (SCFDefs for SCFMAN and
+RBFDefs for RBFMAN).
@@ -1652,7 +1664,7 @@
Logical sector number zero contains a description of the physical
and logical characteristics of the volume. These are established by
-the "format" command program when the media is initialized, the
+the format command program when the media is initialized, the
table below gives the OS-9 mnemonic name, byte address, size, and
description of each value stored in this sector.
@@ -1772,7 +1784,7 @@
-
+
Disk Allocation Map Sector
One sector (usually LSN 1) of the disk is used for the "disk
@@ -1791,7 +1803,7 @@
Each bit is cleared if the corresponding cluster is available for
allocation, or set if the sector is already allocated, non-existent,
or physically defective. The bitmap is initially created by the
-"format" utility program.
+format utility program.
@@ -1887,7 +1899,7 @@
each of which can bold the name and LSN of a single regular or
directory file.
-Each directory entry is 32 b,ytes long, consisting of 29 bytes for
+Each directory entry is 32 bytes long, consisting of 29 bytes for
the file name followed by a three byte logical sector number of the
file's descriptor sector. The file name is left-justified in the
field with the sign bit of the last character set. Unused entries
@@ -2019,7 +2031,7 @@
Address of drive table
- RBFMAN Option Section Definitions (Copied from dev descriptor)
+ RBFMAN Option Section Definitions (Copied from device descriptor)
@@ -2143,7 +2155,8 @@
managers, the second and third sections are defined by RBFMAN and
RBFMAN-type device drivers. The option section of the path descriptor
contains many device operating parameters which may be read and/or
-written by the OS9 I$GetStt and I$SetStt service requests. This section
+written by the OS9
+and service requests. This section
is initialized by IOMAN which copies the initialization table of the
device descriptor into the option section of the path descriptor when
a path to a device is opened. Any values not determined by this table
@@ -2390,8 +2403,10 @@
-NOTE: V.PAGE through V.USER are predefined in the OS9DEFS file.
-V.NDRV, DRVBEG, DRVMEM are predefined in the RBFDEFS file.
+NOTE: V.PAGE through V.USER are predefined in the
+OS9Defs file.
+V.NDRV, DRVBEG, DRVMEM are predefined in the RBFDefs
+file.
V.PAGE, V.PORT These three bytes are defined by IOMAN as the 24-bit
device address.
@@ -2684,7 +2699,8 @@
- If disk writes are verified, use the F$SRqMem service, request
+ If disk writes are verified, use the
+ service request
to allocate a 256 byte buffer area where a sector may be read back
and verified after a write.
Initialize the device permanent storage. For floppy disk
@@ -2694,7 +2710,7 @@
may be read or written to, and initializing V.TRAK to $FF so that
the first seek will find track zero.
Place the IRQ service routine on the IRQ polling list by
- using the OS9 F$IRQ service request.
+ using the OS9 service request.
Initialize the device control registers (enable interrupts if
necessary).
@@ -2884,12 +2900,14 @@
These routines are wild card calls used to get (set) the device's
-operating parameters as specified for the OS9 I$GetStt and I$SetStt
+operating parameters as specified for the OS9
+and
service requests.
It may be necessary to examine or change the register stack which
-contains the values of MPU registers at the time of the I$GetStt or
-I$SetStt service request. The address of the register stack may be
+contains the values of MPU registers at the time of the
+ or
+ service request. The address of the register stack may be
found in PD.RGS, which is located in the path descriptor, . The
following offsets may be used to access any particular value in the
register stack:
@@ -3019,7 +3037,7 @@
3. Remove the device from the IRQ polling list.
4. If the INIT routine reserved a 256 byte buffer for verifying
-disk writes, return the memory with the F$Mem service request.
+disk writes, return the memory with the service request.
@@ -3102,7 +3120,8 @@
(code $C). The execution offset in the module header contains the
offset to the entry point of this subroutine.
-It obtains the starting sector number and size of the "OS9Boot"
+It obtains the starting sector number and size of the
+OS9Boot
file from the identification sector (LSN 0). OS-9 is called to
allocate a memory area large enough for the boot file, and then it
loads the boot file into this memory area.
@@ -3112,7 +3131,7 @@
contains the values for DD.BT (the 24 bit logical sector number of
the bootstrap file), and DD.BSZ (the size of the bootstrap file in
bytes). For a full description of the identification sector.
-See 6.1.1.
+See .
2. After reading the identification sector into the buffer, get
the 24 bit logical sector number of the bootstrap file from DD.BT.
@@ -3122,8 +3141,8 @@
logical sector specified in DD.BT and extending for (DD.BSZ/256+1)
sectors.
-4. Use the OS9 F$SRqMem service request to request the memory area
-where the boot file will be loaded into.
+4. Use the OS9 service request to
+request the memory area where the boot file will be loaded into.
5. Read the boot file into this memory area.
@@ -3153,7 +3172,7 @@
SCFMAN Line Editing Functions
-I$Read and I$Write service requests (which correspond to Basic09
+ and service requests (which correspond to Basic09
GET and PUT statements) to SCFMAN-type devices pass data to/from the
device without any modification, except that keyboard interrupt,
keyboard abort, and pause character are filtered out of the input
@@ -3162,14 +3181,15 @@
automatically followed by line feeds or nulls, and the high order
bits are passed as sent/received.
-I$ReadLn and I$WritLn service requests (which correspond to Basic09
+ and service requests (which correspond to Basic09
INPUT, PRINT, READ and WRITE statements) to SCFMAN-type devices
perform full line editing of all functions enabled for the particular
device. These functions are initialized when the device is first used
by copying the option table from the device descriptor table
associated with the specific device. They may be altered anytime
-afterwards from assembly language programs using the I$SetStt and
-I$GetStt service requests, or from the keyboard using the TMODE
+afterwards from assembly language programs using the and
+ service requests,
+or from the keyboard using the tmode
command. Also, all bytes transfered in this mode will have the high
order bit cleared.
@@ -3202,26 +3222,26 @@
line if PD.DLO = 0, or echo CR/LF if PD.DLO <> 0.
PD.EOR defines the end of record character. This is the last
-character an each line entered (I$ReadLn), and terminates the output
-(I$WritLn) when this character is sent. Normally PD.EOR will be set
-to $0D. If it is set to zero, SCF's READLN will NEVER terminate,
+character an each line entered (), and terminates the output
+() when this character is sent. Normally PD.EOR will be set
+to $0D. If it is set to zero, SCF's will NEVER terminate,
unless an EOF occurs.
If PD.EOF <> 0, it defines the end of file character. SCFMAN
-will return an end-of-file error on I$Read or I$ReadLn if this is the
+will return an end-of-file error on or if this is the
first (and only) character input. It can be disabled by setting its
value to zero.
-If PD.RPR <> 0, SCF (I$ReadLn) will, upon receipt of this
+If PD.RPR <> 0, SCF () will, upon receipt of this
character, echo a carriage return [optional line feed], and then
reprint the current line.
-If PD.DUP <> 0, SCF (I$ReadLn) will duplicate whatever is in
+If PD.DUP <> 0, SCF () will duplicate whatever is in
the input buffer through the first "PD.EOR" character.
If PD.PSC <> 0, output is suspended before the next "PD.EOR"
character when this character is input. This will also delete any
-"type ahead" input for I$ReadLn.
+"type ahead" input for .
If PD.INT <> 0, and is received on input, a keyboard
interrupt signal is sent to the last user of this path. Also it will
@@ -3235,13 +3255,13 @@
keyboard interrrupt signal code. This location is normally set to a
control-Q character.
-If PD.OVF <> 0, It is echoed when I$ReadLn has satisfied its
+If PD.OVF <> 0, It is echoed when has satisfied its
input byte count without finding a "PD.EOR" character.
NOTE: It is possible to disable most of these special editing
functions by setting the corresponding control character in the path
-descriptor to zero by using the I$SetStt service request, or by running
-the TMODE utility. A more permanent solution may be had by setting
+descriptor to zero by using the service request, or by running
+the tmode utility. A more permanent solution may be had by setting
the corresponding control character value in the device descriptor
module to zero.
@@ -3363,7 +3383,7 @@
and third section are specific for SCFMAN and SCFMAN-type device
drivers. The option section of the path descriptor contains many
device operating parameters whicb may be read or written by the OS9
-I$GetStt or I$SetStt service requests. IOMAN initializes this section
+ or service requests. IOMAN initializes this section
when a path is opened to a device by copying the corresponding device
descriptor initialization table. Any values not determined by this
table will default to zero.
@@ -3581,8 +3601,7 @@
As with all device drivers. SCFMAN device drivers use a standard
executable memory module format with a module type of
-edevice
-drivers (CODE $5). The execution offset address in the
+"device driver" (CODE $5). The execution offset address in the
module
header points to a branch table that has six three byte entries. Each
entry is typically a LBRA to the corresponding subroutine. The branch
@@ -3672,7 +3691,7 @@
1. Initialize the device static storage.
2. Place the IRQ service routine on the IRQ polling list by using
-the OS9 F$IRQ service request.
+the OS9 service request.
3. Initialize the device control registers (enable interrupts if
necessary).
@@ -3718,8 +3737,8 @@
This routine should get the next character from the input
buffer. If there is no data ready, this routine should copy its
-process ID from V.BUSY into V.WAKE and then use the F$Sleep service
-request to put itself to sleep.
+process ID from V.BUSY into V.WAKE and then use the
+service request to put itself to sleep.
Later when data is recieved, the IRQ service routine will leave
the data in a buffer, then check V.WAKE to see if any process is
@@ -3816,7 +3835,8 @@
This routine is a wild card call used to get (set) the device
-parameters specified in the I$GetStt and I$SetStt service requests.
+parameters specified in the
+and service requests.
Currently all of the function codes defined by Microware for SCF-type
devices are handled by IOMAN or SCFMAN. Any codes not defined
by Microware will be passed to the device driver.
@@ -3957,7 +3977,7 @@
NOTE: Static storage used by device drivers is never returned
to the free memory pool. Therefore, it is desirable to NEVER
terminate any device that might be used again. Modules contained in
-the BOOT tile will NEVER be terminated.
+the Boot file will NEVER be terminated.
@@ -3983,23 +4003,28 @@
Although this routine is not included in the device drivers
branch table and not called directly from SCFMAN, it is an important
routine in device drivers. The main things that it does are:
-
-1. Service the device interrupts (recieve data from device or send
+
+
+Service the device interrupts (recieve data from device or send
data to it). This routine should put its data into and get its data
from buffers which are defined in the device static storage.
-
-2. Wake up any process waiting for I/O to complete by checking
+
+
+Wake up any process waiting for I/O to complete by checking
to see if there is a process ID in V.WAKE (non-zero) and it so
send a wakeup signal to that process.
-
-3. If the device is ready to send more data and the output buffer
+
+
+If the device is ready to send more data and the output buffer
is emoty, disable the device's "ready to transmit"
interrupts.
-
-4. If a pause character is recieved, set V.PAUS in the attached
+
+
+If a pause character is recieved, set V.PAUS in the attached
device static storage to a non-zero value. The address of the
attached device static storage is in V.DEV2.
-
+
+
When the IRQ service routine finishes servicing an interrupt,
it must clear the carry and exit with an RTS instruction.
@@ -4071,7 +4096,8 @@
Addressing Variables and Data Structures
-Programs executed as processes (by FORK and CHAIN system calls or
+Programs executed as processes (by and
+ system calls or
by the Shell) are assigned a RAM memory area for variables, stacks,
and data structures at execution-time. The addresses cannot be
determined or specified ahead of time. However, a minimum size for
@@ -4084,12 +4110,13 @@
process passed a parameter area, it will be located from the value of
the SP to the top of memory (Y), and the D register will contain the
parameter area size in bytes. If the new process was called by the
-shell, the parameter area will contain the part of the shell command
+shell, the parameter area will contain
+the part of the shell command
line that includes the argument (parameter) text. The U register will
have the lower bound of the data memory area, and the DP register
will contain its page number.
-The most important rule is to NOT USE EXTENDED ADDRESSING!
+The most important rule is to not use extended addressing!
Indexed and direct page addressing should be used exclusively to access data
area values and structures. Do not use program-counter relative
addressing to find addresses in the data area, but do use it to refer
@@ -4148,16 +4175,17 @@
The INIT initialization subroutine within the driver package
should allocate static storage for the service routine, get the
-service routine address, and execute the F$IRQ system call to add it
+service routine address, and execute the system call to add it
to the IRQ polling table.
When a device driver routine does something that will result in an
-interrupt, it should immediately execute a F$Sleep service request.
+interrupt, it should immediately execute a
+service request.
This results in the process' deactivation. When the interrupt in
question occurs, its service routine is executed after some random
interval. It should then do the minimal amount of processing
required, and send a "wakeup" signal to its associated process using
-the F$Send service request. It may also put some data in its static
+the service request. It may also put some data in its static
storage (I/O data and status) which is shared with its associated
"sleeping" process.
@@ -4197,7 +4225,7 @@
A Sample Program
-The OS-9 "list" utility command program is shown on this
+The OS-9 list utility command program is shown on this
and the next page as an example of assembly language programming.
@@ -4354,13 +4382,13 @@
If the target system requires multiprogramming, time-of-day,
or other time-related functions, include a CLOCK module for the
target system's real-time clock. Also consider how the clock is to
- be started,. You may want to ROM the "Setime" command, or
+ be started,. You may want to ROM the setime command, or
have SYSGO start the clock.
It the target system will receive commands manually, or if
any application program uses Shell functions, include the SHELL and
SYSGO modules, otherwise include a modified SYSGO module which calls
- your application program instead of Shell.
+ your application program instead of shell.
@@ -4446,8 +4474,8 @@
It does additional high-level system initialization, for
-example, disk system SYSGO call the shell to process the "Startup"
-shell procedure file.
+example, disk system SYSGO call the shell to process the
+Startup shell procedure file.
It starts the first "user" process.
@@ -4462,7 +4490,7 @@
Remove initialization of the working execution directory.
-Remove processing of the "Startup" procedure file.
+Remove processing of the Startup procedure file.
Possibly change the name of the first user program from Shell
to the name of a applications program. Here are some example name strings:
@@ -4522,7 +4550,7 @@
permits a BCS or BCC instruction immediately following the system
call to branch on error/no error.
-Here is an example system call for the "CLOSE" service request:
+Here is an example system call for the service request:
LDA PATHNUM
@@ -4553,7 +4581,7 @@
All system calls have a mnemonic name that starts with "F$"
for system functions, or "I$" for I/O related requests.
These are defined in the assembler-input equate file
-called "OS9DEFS".
+called OS9Defs.
In the service request descriptions which follow, registers not
explicitly specified as input or output parameters are not altered.
@@ -4604,7 +4632,7 @@
the allocation bit map.
-
+
F$Chain - Load and execute a new primary module
@@ -4637,17 +4665,17 @@
-This system call is similar to FORK, but it does not create a new
+This system call is similar to , but it does not create a new
process. It effectively "resets" the calling process' program and
data memory areas and begins execution of a new primary module. Open
paths are not closed or otherwise affected.
This system call is used when it is necessary to execute an
entirely new program, but without the overhead of creating a new
-process. It is functionally similar to a FORK followed by an EXIT.
-but with less processing overhead.
-
-The sequence of operations taken by CHAIN is as follows:
+process. It is functionally similar to a followed by an
+, but with less processing overhead.
+
+The sequence of operations taken by is as follows:
1. The system parses the name string ot the new proces'
@@ -4659,13 +4687,14 @@
is linked to (several modules may have been loaded from a single
file).
-2. The process' old primary module is UNLINKED.
+2. The process' old primary module is
+unlinked.
3. The data memory area is reconfigured to the size specified in
the new primary module's header.
-The diagram below shows how CHAIN sets up the data memory area and
-registers for the new module.
+The diagram below shows how sets up the
+data memory area and registers for the new module.
+-----------------+ <-- Y (highest address)
@@ -4697,16 +4726,16 @@
WARNING: The hardware stack pointer (SP) should be located
-somewhere in the direct page before the F$Chain service request is
+somewhere in the direct page before the service request is
executed to prevent a "suicide attempt" error or an actual suicide
(system crash). This will prevent a suicide from occurring in case
the new module requires a smaller data area than what is currently
being used. You should allow approximately 200 bytes of stack space
-for execution of the F$Chain service request and other system
+for execution of the service request and other system
"overhead".
-For more information, please see the F$Fork service request
+For more information, please see the service request
description.
@@ -4836,7 +4865,7 @@
the allocation bit map.
-
+
F$Exit - Terminate the calling process
@@ -4870,15 +4899,15 @@
closed.
The death of the process can be detected by the parent executing a
-WAIT call, which returns to the parent the status byte passed by the
-child in its EXIT call. The status byte can be an OS-9 error code the
+ call, which returns to the parent the status byte passed by the
+child in its call. The status byte can be an OS-9 error code the
terminating process wishes to pass back to its parent process (the
shell assumes this), or can be used to pass a user-defined status
value. Processes to be called directly by the shell should only
return an OS-9 error code or zero if no error occurred.
-
+
F$Fork - Create a new process
@@ -4935,20 +4964,20 @@
in the diagram on the next page. The execution offset given in the
module header is used to set the PC to the module's entry point.
-When the shell processes a command line it passes a string in the
+When the shell processes a command line it passes a string in the
parameter area which is a copy of the parameter part (if any) of the
command line. It also inserts an end-of-line character at the end of
the parameter string to simplify string-oriented processing. The X
register will point to the beginning of the parameter string. If the
command line included the optional memory size specification (#n or
-#nK), the shell will pass that size as the requested memory size when
-executing the FORK.
-
-If any of the above operations are unsuccessful, the FORK is
+#nK), the shell will pass that size as the requested memory size when
+executing the .
+
+If any of the above operations are unsuccessful, the is
aborted and the caller is returned an error.
The diagram below
-shows how FORK sets up the data memory area and registers for a
+shows how sets up the data memory area and registers for a
newly-created process.
@@ -4982,16 +5011,16 @@
the parameter area.
NOTE: Both the child and parent process will execute
-concurrently. If the parent executes a F$WAIT call
+concurrently. If the parent executes a call
immediately after the fork, it will wait until the child dies before
it resumes execution. Caution should be exercised when recursively
-calling a program that uses the F$Fork service request since another
+calling a program that uses the service request since another
child may be created with each "incarnation". This will
continue until the process table becomes full.
-
-F$Icpt - Set up a signal intercept trap
+
+F$ICPT - Set up a signal intercept trap
@@ -5000,7 +5029,7 @@
ASSEMBLER CALL:
- OS9 F$Icpt
+ OS9 F$ICPT
MACHINE CODE:
@@ -5029,7 +5058,7 @@
the base address of the routine's storage area. After a signal trap
has been set, whenever the process receives a signal, its intercept
routine will be executed. A signal will abort any process which has
-not used the F$ICPT service request to set a signal trap, and its
+not used the service request to set a signal trap, and its
termination status (B register) will be the signal code. Many
interactive programs will set up an intercept routine to handle
keyboard abort (control Q), and keyboard interrupt (control C).
@@ -5044,10 +5073,10 @@
B = Signal code.
NOTE: The value of DP may not be the same as it was when the
-F$Icpt call was made.
+ call was made.
Whenever a signal is received. OS-9 will pass the signal code and
-the base address of its data area (which was defined by a F$ICPT
+the base address of its data area (which was defined by a
service request) to the signal intercept routine. The base address of
the data area is selected by the user and is typically a pointer to
the process' data area.
@@ -5101,7 +5130,7 @@
Several processes can have the same user ID.
-
+
F$LINK - Link to memory module
@@ -5145,7 +5174,7 @@
the absolute address of the module's execution entry point is
returned in Y (as a convenience: this and other information can be
obtained from the module header). The module's link count' is
-incremented whenever a LINK references its name, thus keeping track
+incremented whenever a references its name, thus keeping track
of how many processes are using the module. If the module requested
has an attribute byte indicating it is not sharable (meaning it is
not reentrant) only one process may link to it at a time.
@@ -5201,7 +5230,7 @@
modules from the file into memory, then closes the file. All modules
loaded are added to the system module directory, and the first
module read is LINKed. The parameters returned are the same as the
-LINK call and apply only to the first module loaded.
+ call and apply only to the first module loaded.
In order to be loaded, the file must have the "execute"
permission and contain a module or modules that have a proper module
@@ -5209,10 +5238,11 @@
unless a complete pathlist is given.
Possible errors: module directory full; memory full; plus errors
-that occur on OPEN, READ, CLOSE and LINK system calls.
-
-
-
+that occur on ,
+, and system calls.
+
+
+
F$Mem - Resize data memory area
@@ -5307,7 +5337,7 @@
by default. The error reporting routine is vectored and can be
replaced with a more elaborate reporting module. To replace this
-routine use the F$SSVC service request.
+routine use the service request.
@@ -5415,7 +5445,7 @@
carry set, beginning bit number and size of the largest block.
-
+
F$Send - Send a signal to another process
@@ -5455,8 +5485,9 @@
If the signal's destination process is sleeping or waiting, it
will be activated so that it may process the signal. The signal
processing routine (intercept) will be executed if a signal trap was
-set up (see F$ICPT), otherwise the signal will abort the destination
-process, and the signal code becomes the exit status (see WAIT). An
+set up (see ),
+otherwise the signal will abort the destination
+process, and the signal code becomes the exit status (see ). An
exception is the WAKEUP signal, which activates a sleeping process
but does not cause the signal intercept routine to be executed.
@@ -5478,11 +5509,12 @@
a "sleep" call for a few ticks before a retry to avoid
wasting MPU time.
-For related information see the F$ICPT, F$WAIT and F$Sleep service
+For related information see the ,
+ and service
request descriptions.
-
+
F$Sleep - Put calling process to sleep
@@ -5525,8 +5557,8 @@
The duration of a "tick" is system dependent but is most commonly
100 milliseconds.
-Due to the fact that it is not known when the F$Sleep request was
-made during the current tick, F$Sleep can not be used for precise
+Due to the fact that it is not known when the request was
+made during the current tick, can not be used for precise
timing. A sleep of one tick is effectively a "give up remaining
time slice" request; the process is immediately inserted into
the active process queue and will resume execution when it reaches
@@ -5577,7 +5609,7 @@
another process' priority only if it has the same user ID.
-
+
F$SSVC - Install function request
@@ -5655,7 +5687,7 @@
- OFFSET OS9DEFS
+ OFFSET OS9Defs
MNEMONIC
+------+
U ---> ! CC ! $0 R$CC
@@ -5709,7 +5741,7 @@
are free for user definition.
-
+
F$SSWI - Set SWI vector
@@ -5744,7 +5776,7 @@
Sets up the interrupt vectors for SWI, SWI2 and SWI3 instructions.
-Each process has its own local vectors. Each SETSWI call sets up one
+Each process has its own local vectors. Each F$SSWI call sets up one
type of vector according to the code number passed in A.
@@ -5950,7 +5982,7 @@
the module directory.
-
+
F$Wait - Wait for child process to die
@@ -5985,24 +6017,26 @@
The calling process is deactivated until a child process
-terminates by executing an EXIT system call, or by receiving a
+terminates by executing an
+system call, or by receiving a
signal. The child's ID number and exit status is returned to the
parent. If the child died due to a signal, the exit status byte (B
register) is the signal code.
If the caller has several children, the caller is activated when
-the first one dies, so one WAIT system call is required to detect
+the first one dies, so one
+system call is required to detect
termination of each child.
-If a child died before the WAIT call, the caller is reactivated
-almost immediately. WAIT will return an error if the caller has no
+If a child died before the call, the caller is reactivated
+almost immediately. will return an error if the caller has no
children.
-See the EXIT description for more related information.
-
-
-
-
+See the description for more related information.
+
+
+
+
F$All64 - Allocate a 64 byte memory block
@@ -6043,8 +6077,9 @@
tour sections. The first 64 bytes of the base page are used as a
"page table", which contains the MSB of all pages in the
memory structure. Passing a value of zero in the X register will
-cause the F$All64 service request to allocate a new base page and the
-first 64 byte memory block. Whenever a new page is needed, an F$SRqMem
+cause the service request to allocate a new base page and the
+first 64 byte memory block. Whenever a new page is needed, an
+
service request will automatically be executed. The first byte of
each block contains the block number; routines using this service
request should not alter it. Below is a diagram to show how 7 blocks
@@ -6156,7 +6191,7 @@
This system mode service request will return the address of a 64
-byte memory block as described in the F$All64 service request. OS-9
+byte memory block as described in the service request. OS-9
used this service request to find process descriptors and path
descriptors when given their number.
@@ -6252,7 +6287,7 @@
NOTE: THIS IS A PRIVILEGED SYSTEM MODE SERVICE REQUEST
-
+
F$IRQ - Add or remove device from IRQ table
@@ -6405,12 +6440,12 @@
This system mode service request deallocates a 64 byte block of
-memory as described in the F$All64 service request.
+memory as described in the service request.
NOTE: THIS IS A PRIVILEGED SYSTEM MODE SERVICE REQUEST
-
+
F$SRqMem - System memory request
@@ -6659,7 +6694,7 @@
execution directory is changed.
-
+
I$Close - Close a path to a file/device
@@ -6693,20 +6728,21 @@
Terminates the I/O path specified by the path number. I/O can no
-longer be performed to the file/device, unless another OPEN or CREATE
+longer be performed to the file/device, unless another or
+
call is used. Devices that are non-sharable become available to other
requesting processes. All OS-9 internally managed buffers and
descriptors are deallocated.
Note: Because the OS9 F$Exit service request automatically closes
all open paths (except the standard I/O paths), it may not he
-necessary to close them individually with the OS9 I$Close service request.
+necessary to close them individually with the OS9 service request.
Standard I/O paths are not typically closed except when it is
desired to change the files/devices they correspond to.
-
+
I$Create - Create a path to a new file
@@ -6760,7 +6796,8 @@
The access mode parameter passed in register A must be either
"WRITE" or "UPDATE". This only affects the file
until it is closed; it can be reopened later in any access mode
-allowed by the file attributes (see OPEN). Files open for "WRITE"
+allowed by the file attributes (see ).
+Files open for "WRITE"
may allow faster data transfer than "UPDATE", which
sometimes needs to preread setors. These access codes are defined
as given below:
@@ -6778,14 +6815,14 @@
subsequent I/O service requests until the file is closed.
No data storage is initially allocated for the file at the time it
-is created; this is done automatically by WRITE or explicitly by the
-PUTSTAT call.
+is created; this is done automatically by
+or explicitly by the PUTSTAT call.
An error will occur if the file name already exists in the
-directory. CREATE calls that specify non-multiple file devices (such
-as printers, terminals, etc.) work correctly: the CREATE behaves the
-same as OPEN. Create cannot be used to make directory files (see
-MAKDIR).
+directory. calls that specify non-multiple file devices (such
+as printers, terminals, etc.) work correctly: the behaves the
+same as . Create cannot be used to make directory files (see
+).
@@ -6916,7 +6953,7 @@
descriptor is not copied.
-
+
I$GetStt - Get file device status
@@ -6962,9 +6999,10 @@
file manager associated with the path. A typical use is to
determine a terminal's parameters for backspace character, delete
character, echo on/off, null padding, paging, etc. It is commonly
-used in conjunction with the SETSTAT service request which is
+used in conjunction with the
+service request which is
used to set the device operating parameters. Below are presently
-defined function codes for GETSTAT:
+defined function codes for :
@@ -7219,7 +7257,7 @@
-
+
I$MakDir - Make a new directory
@@ -7252,14 +7290,14 @@
-MAKDIR is the only way a new directory file can be created. It
+ is the only way a new directory file can be created. It
will create and initialize a new directory as specified by the
pathlist. The new directory file contains no entries, except for
an entry for itself (".") and its parent directory ("..")
-The caller is made the owner of the directory. MAKDIR dies not
+The caller is made the owner of the directory. does not
return a path number because directory files are not "opened" by
-this request (use OPEN to do so). The new directory will
+this request (use to do so). The new directory will
automatically have its "directory" bit set in the access
permission attributes. The remaining attributes are specified by
the byte passed in the B register, which has individual bits
@@ -7277,7 +7315,7 @@
-
+
I$Open - Open a path to a file or device
@@ -7327,7 +7365,7 @@
Update mode can be slightly slower because pre-reading of sectors
may be required for random access of bytes within sectors. The
access mode must conform to the access permission attributes
-associated with the file or device (see CREATE). Only the owner
+associated with the file or device (see ). Only the owner
may access a file unless the appropiate "public permit" bits are
set.
@@ -7349,7 +7387,7 @@
in the access mode.
-
+
I$Read - Read data from a file or device
@@ -7390,7 +7428,7 @@
additional processing or editing such as backspace, line delete,
end-of-file, etc.
-After all data in a file has been read, the next I$Read service
+After all data in a file has been read, the next service
request will return an end of file error.
NOTES:
@@ -7410,7 +7448,7 @@
-
+
I$ReadLn - Read a text line with editing
@@ -7445,7 +7483,8 @@
-This system call is the same as "READ" except it reads data from
+This system call is the same as
+except it reads data from
the input file or device until a carriage return character is
encountered or until the maximum byte count specified is reached,
and that line editing will occur on SCFMAN-type devices. Line
@@ -7457,7 +7496,7 @@
than the maximum specified, it will not be accepted and a PD.OVF
character (normally bell) will be echoed.
-After all data in the file has been read, the next I$ReadLn service
+After all data in the file has been read, the next service
request will return an end of file error.
NOTE: For more information on line editing, see 7.1.
@@ -7512,7 +7551,7 @@
without error.
-
+
I$SetStt - Set file/device status
@@ -7557,7 +7596,8 @@
file manager associated with the path. A typical use is to
set a terminal's parameters for backspace character, delete
character, echo on/off, null padding, paging, etc. It is commonly
-used in conjunction with the GETSTAT service request which is
+used in conjunction with the
+service request which is
used to read the device operating parameters. Below are presently
defined function codes:
@@ -7780,7 +7820,7 @@
-
+
I$Write - Write data to file or device
@@ -7815,7 +7855,7 @@
-WRITE outputs one or more bytes to a file or device associated
+ outputs one or more bytes to a file or device associated
with the path
number specified. The path must have been OPENed or CREATEd in the
WRITE or UPDATE access modes.
@@ -7825,7 +7865,7 @@
automatically expanded.
-
+
I$WritLn - Write line of text with editing
@@ -7860,7 +7900,7 @@
-This system call is similar to WRITE except it writes data until a
+This system call is similar to except it writes data until a
carriage return character is encountered. Line editing
is also activated for character-oriented devices such as terminals,
printers, etc. The line editing refers to auto line feed, null
@@ -8484,9 +8524,9 @@
103F 04
- F$WAIT
+ F$Wait
Wait for child process to die.
-
+
103F 05
@@ -8514,7 +8554,7 @@
103F 09
- F$Icpt
+ F$ICPT
Set up a signal intercept trap.
@@ -9059,40 +9099,40 @@
-
- $1
- Program
-
-
- $2
- Subroutine module
-
-
- $3
- Multi-module
-
-
- $4
- Data module
-
-
- $C
- System Module
-
-
- $D
- File Manager
-
-
- $E
- Device Driver
-
-
- $F
- Device Descriptor
-
-
-
+
+ $1
+ Program
+
+
+ $2
+ Subroutine module
+
+
+ $3
+ Multi-module
+
+
+ $4
+ Data module
+
+
+ $C
+ System Module
+
+
+ $D
+ File Manager
+
+
+ $E
+ Device Driver
+
+
+ $F
+ Device Descriptor
+
+
+
@@ -9146,28 +9186,40 @@
Module Languages
-
+
- $0
- Data
+ $0
+ Data
- $1
- 6809 Object code
+ $1
+ 6809 Object code
+
+
+ $2
+ BASIC09 I-code
- $2
- BASIC09 I-code
+ $3
+ Pascal P-Code
+
+
+ $4
+ C I-code
- $3
- Pascal P-Code
+ $5
+ Cobol I-code
- $4
- Cobol I-code
+ $6
+ Fortan I-code
+
+
+ $7
+ 6309 Object code
@@ -9178,12 +9230,12 @@
-
-
- $8
- Reentrant
-
-
+
+
+ $8
+ Reentrant
+
+
@@ -9192,333 +9244,7 @@
-
-Error Codes
-
-OS-9 Error Codes
-
-The error codes are shown both in hexadecimal (first column) and
-decimal (second column). Error codes other than those listed are
-generated by programming languages or user programs.
-
-
-
-
-
-
-
-
-HEX
-DEC
-
-
-
-
-
- $C8
- 200
- PATH TABLE FULL
- - The file cannot be opened because
- the system path table is currently full.
-
- $C9
- 201
- ILLEGAL PATH NUMBER
- - Number too large or for non-existant path.
-
- $CA
- 202
- INTERRUPT POLLING TABLE FULL
-
- $CB
- 203
- ILLEGAL MODE
- - attempt to perform I/O function of which the device or file is incapable.
-
- $CC
- 204
- DEVICE TABLE FULL
- - Can't add another device
-
- $CD
- 205
- ILLEGAL MODULE HEADER
- - module not loaded because its
- sync code, header parity, or CRC is incorrect.
-
- $CE
- 206
- MODULE DIRECTORY FULL
- - Can't add another module
-
- $CF
- 207
- MEMORY FULL
- - Level One: not enough contiquous RAM free.
- Level Two: process address space full
-
- $D0
- 208
- ILLEGAL SERVICE REQUEST
- - System call had an illegal code number
-
- $D1
- 209
- MODULE BUSY
- - non-sharable module is in use by another process.
-
- $D2
- 210
- BOUNDARY ERROR
- - Memory allocation or deallocation request not on a page boundary.
-
- $D3
- 211
- END OF FILE
- - End of file encountered on read.
-
- $D4
- 212
- RETURNING NON-ALLOCATED MEMORY
- - (NOT YOUR MEMORY)
- attempted to deallocate memory not previously assigned.
-
- $D5
- 213
- NON-EXISTING SEGMENT
- - device has damaged file structure.
-
- $D6
- 214
- NO PERMISSION
- - file attributes do not permit access requested.
-
- $D7
- 215
- BAD PATH NAME
- - syntax error in pathlist (illegal character, etc.).
-
- $D8
- 216
- PATH NAME NOT FOUND
- - can't find pathlist specified.
-
- $D9
- 217
- SEGMENT LIST FULL
- - file is too fragmented to be expanded further.
-
- $DA
- 218
- FILE ALREADY EXISTS
- - file name already appears in current directory.
-
- $DB
- 219
- ILLEGAL BLOCK ADDRESS
- - device's file structure has been damaged.
-
- $DC
- 220
- ILLEGAL BLOCK SIZE
- - device's file structure has been damaged.
-
- $DD
- 221
- MODULE NOT FOUND
- - request for link to module not found in directory.
-
- $DE
- 222
- SECTOR OUT OF RANGE
- - device file structure damaged or
-incorrectly formatted.
-
- $DF
- 223
- SUICIDE ATTEMPT
- - request to return memory where your stack is located.
-
- $E0
- 224
- ILLEGAL PROCESS NUMBER
- - no such process exists.
-
- $E2
- 226
- NO CHILDREN
- - can't wait because process has no children.
-
- $E3
- 227
- ILLEGAL SWI CODE
- - must be 1 to 3.
-
- $E4
- 228
- PROCESS ABORTED
- - process aborted by signal code 2.
-
- $E5
- 229
- PROCESS TABLE FULL
- - can't fork now.
-
- $E6
- 230
- ILLEGAL PARAMETER AREA
- - high and low bounds passed in fork call are incorrect.
-
- $E7
- 231
- KNOWN MODULE
- - for internal use only.
-
- $E8
- 232
- INCORRECT MODULE CRC
- - module has bad CRC value.
-
- $E9
- 233
- SIGNAL ERROR
- - receiving process has previous
- unprocessed signal pending.
-
- $EA
- 234
- NON-EXISTENT MODULE
- - unable to locate module.
-
- $EB
- 235
- BAD NAME
- - illegal name syntax.
-
- $EC
- 236
- BAD HEADER
- - module header parity incorrect
-
- $ED
- 237
- RAM FULL
- - no free system RAM available at this time
-
- $EE
- 238
- UNKNOWN PROCESS ID
- - incorrect process ID number
-
- $EF
- 239
- NO TASK NUMBER AVAILABLE
- - all task numbers in use
-
-
-
-
-
-
-Device Driver/Hardware Errors
-
-The following error codes are generated by I/O device drivers, and
-are somewhat hardware dependent. Consult manufacturer's hardware
-manual for more details.
-
-
-
-
-
-
-
-
-HEX
-DEC
-
-
-
-
-
- $F0
- 240
- UNIT ERROR
- - device unit does not exist
-
- $F1
- 241
- SECTOR ERROR
- - sector number is out of range.
-
- $F2
- 242
- WRITE PROTECT
- - device is write protected.
-
- $F3
- 243
- CRC ERROR
- - CRC error on read or write verify
-
- $F4
- 244
- READ ERROR
- - Data transfer error during disk read
- operation, or SCF (terminal) input buffer overrun.
-
- $F5
- 245
- WRITE ERROR
- - hardware error during disk write operation.
-
- $F6
- 246
- NOT READY
- - device has "not ready" status.
-
- $F7
- 247
- SEEK ERROR
- - physical seek to non-existant sector.
-
- $F8
- 248
- MEDIA FULL
- - insufficient free space on media.
-
- $F9
- 249
- WRONG TYPE
- - attempt to read incompatible media (i.e.
- attempt to read double-side disk on single-side drive)
-
- $FA
- 250
- DEVICE BUSY
- - non-sharable device is in use
-
- $FB
- 251
- DISK ID CHANGE
- - Media was changed with files open
-
- $FC
- 252
- RECORD IS LOCKED-OUT
- - Another process is accessing the requested record.
-
- $FD
- 253
- NON-SHARABLE FILE BUSY
- - Another process is accessing the requested file.
-
-
-
-
-
-
-
-
+&errorcodesapp;
@@ -11072,7 +10798,7 @@
a full pathlist. If the access mode is read, write, or update, the
current data directory is assumed. If the access mode is
execute, the current execution directory is assumed. Note that
-if a full pathlist (a pathlist beginning witt a "/") appears, the
+if a full pathlist (a pathlist beginning with a "/") appears, the
access mode is ignored.
ACCESS MODES: