DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦028a24e5c⟧ TextFile

    Length: 25344 (0x6300)
    Types: TextFile
    Names: »netmoninp«

Derivation

└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ.  Detaljer om "HC8000" projekt.
    └─⟦0364f57e3⟧ 
        └─⟦e47b47727⟧ »hc8mon« 
            └─⟦this⟧ 

TextFile

*cm netmoninp part of the hcmonref manual*
*pl 297,18,240,4,3**pn 0,0*
*lw 170**ps 0**ld 8*
*ns 1,2,PROCEDURE START INTERNAL PROCESS**np*
Procedure Start Internal Process, 58
*sj*
     Start internal process (name address, result)
     w0  result (return)
     w1
     w2
     w3  name address (call)
         jd 1<11+58

         name address: process name (call)
*rj**nl2*
Starts an internal  process in another computer with a given name provided 
the mirror process is  a child of
the calling process in the state waiting for start by parent. Also
started are all descendants of the child that were stopped previously
along with it.*nl2*
It is ensured that no process is started before its parent has been
started. The processes are set in the running state.*nl2*
The stop count of the calling process is unchanged.
*sj*
     result = 0 internal process started
              2 state of process does not permit start
              3 process does not exist ;
                process is not an internal process ;
              4 mirror process is not a child of calling process
                computer is disconnected
              6 name format illegal

PARAMETER ERROR: name area outside calling process.
*rj*
*ps*
*ns 1,2,PROCEDURE STOP INTERNAL PROCESS**np*
Procedure Stop Internal Process,  60
*sj*
     Stop internal process (name address, buffer address,
     result)
     w0  result (return)
     w1
     w2  buffer address (return)
     w3  name address (call)
         jd 1<11+60

         name address: process name (call)
*rj**nl2*
Initiates a stop of an internal process 
in another computer with a given name provided the mirror process is
a child of the calling process. Master process cannot be stopped. Also stopped are all running descendants
of the child. When the stop is initiated, the child is placed in the
state waiting for stop by parent, while its descendants are set to
waiting for stop by ancestor. A process can be in any state when the
stop is initiated. If the process is waiting for a message, an answer
an event, or a process function, its state is changed to waiting
for stop, as explained above, but at the same time its instruction 
counter is
decreased by two ensure that it will repeat the call of the correspon-
ding monitor procedure when it is started again.*nl2*
Finally, the stop procedure selects a message buffer, decreases the
buffer claim of the calling process by one, and returns.*nl2*
The monitor completes the stop operation as follows: Each time the
stop count of one of the involved processes becomes zero (after the
completion of high-speed input/output), the process is transferred
to the state waiting for start by ancestor (or parent) and the stop
count of its parent is decreased by one.If the calling process is
the parent.*nl2*
*ps*
When all involved processes are stopped, the monitor delivers an
answer in the selected message buffer to the calling process, which
in turn receives it by calling either wait answer or wait event.*nl2*
If the buffer claim of the calling process is exceeded the buffer
address is zero:
*sj*
     buffer address = 0 buffer claim exceeded
                    > 0 selected buffer address

     result =  0 stop initiated and answer will arrive,
                 depending on buffer address
               3 process does not exist;
                 process is not an internal process;
                 process is not a child of calling process
               6 name format illegal

PARAMETER ERROR: name area outside calling process.
*rj*
*ps*
*ns 1,2,PROCEDURE MODIFY INTERNAL PROCESS**np*
Procedure Modify Internal Process,  62
*sj*
     Modify internal process (name address, register address,
     result)
     w0  result (return)
     w1  register address (call)
     w2
     w3  name address (call)
         jd 1<11+62

         name address: process name (call)
         register address: (call)
         + 0  working register 0
         + 2  working register 1
         + 4  working register 2
         + 6  working register 3
         + 8  exception register
         +10  instruction counter
*rj**nl2*
Initializes the register values of an internal process with a
given name provided it is a child of the calling process in the state
waiting for start by parent.
*sj*
     result  =  0 internal process modified
                2 state of process does not permit modification
                3 process does not exist;
                  process is not an internal process;
                  process is not a child of calling process;
                6 name format illegal

PARAMETER ERROR: name area or register area outside
   calling process; instruction counter outside child process.
*ps*
*ns 1,2,PROCEDURE REMOVE PROCESS**np*
Procedure Remove Process,  64
*sj*
     remove process (name address, result)
     w0  result (return)
     w1
     w2
     w3  name address (call)
         jd 1<11+64

         name address: process name (call)
*rj**nl2*
Removes an internal or external process from the monitor. Removal
depends on the kind of the process:*nl2*
PERIPHERAL PROCESS: The calling process must be a user of the pe-
ripheral process and no other process must have reserved it. In this case
the name of the peripheral process is removed, but the device itself
remains described within the monitor. This is a privileged function.*nl2*
AREA PROCESS and ENTRY LOCK PROCESS: The calling process must  be a user
of the area process. In this case the calling process is removed as a
user and reserver of the area process, and its claim is increased by one.
If the area process has no other users, the process description is
also removed.*nl2*
PSEUDO PROCESS:*nl*
The pseudo process must have been created by the calling process. In this
case the process is removed and the area claim of the calling process is
increased by one.
*ps*
All message buffers are examined for pending messages sent to
the pseudo process:*nl2**lm 30*
*mt 1,a.* A buffer contains a message sent to, but not received
by, the pseudo process: A dummy answer (receiver does not exist) is
delivered, unless the message was regretted by the sending process
(in which case the buffer is merely released).*nl2*
*mt 1,b.* A buffer contains a message sent to and received by the
pseudo process:*nl*
In this case the procedure returns with result = 2.*nl2*
INTERNAL PROCESS: The internal process must be child of the calling
process in the state waiting for start by parent. In this case the
child and its descendants are removed as follows: the process
descriptions are removed one by one starting with the youngest descendants
and the buffer claims, area claims, internal claims and backing storage
claims are added to those of their parents.*nl2**lm 0*
All area processes and entry lock processes used by the invelved
internal processes are removed as described above.*nl2*
All pseudo processes created by the involved internal process
are removed.*nl2*
In all peripheral processes the internal processes are removed as
users and reservers, but the peripheral processes themselves are not removed.
*ps*
Finally all messages buffers are examined for pending messages or
answers involving the processes to be removed. There are the following
possibilities:
*lm 30**nl*
*mt 1,    a.* A buffer contains a pending or received message to a
removed process: A dummy answer (receiver does not exist) is delivered
unless the message was regretted by the sending process. If the message
was received, the buffer claim of the parent of the removed process
is increased by one.*nl2*
*mt 1,    b.* A buffer contains a pending answer to a removed process:
The buffer is released and the buffer claim of the parent of the removed
process is increased by one*nl2*
*mt 1,    c.* A buffer contains pending or received message from the
removed process to another process: The message is left undisturbed with
an indication that the buffer is regretted. The buffer claim of the
parent of the removed process is increased by one.*nl2*
*mt 1,    d.* A buffer contains an answer from the removed process
to another process: The answer is left undisturbed.*nl2*
*lm0*
*sj*
result = 0 process removed
         1 function forbidden in calling process
         2 state of internal process does not permit
           removal;
           Calling process is not a user of external
            process;
            message to pseudo process has been received
            but not answered
         3 described process is not a child or does not exist
         5 peripheral process reserved by another process
         6 name format illigal

PARAMETER ERROR: name area outside calling process.
*rj**ps*
*ns 1,2,PROCEDURE COPY**np*
Procedure Copy,  70
*sj*
copy (buffer address, first address, last address,
     result)
     w0  result (return)
     w1  first address (call), halfwords moved (return)
     w2  buffer address (call)
     w3  last address (call), characters moved (return)
         jd 1<11+70
*rj**nl2*
The message buffer must have received by the calling process defining 
input or output. The procedure will move the corearea defined by
first address and last address to or from the area defined by the
buffer (according to the standard format of input/output message)
according to the operation in the buffer. The number of words moved
is the *nl*
*sj*
smallest of: number of words in corearea
             number of words in area described by the
             buffer

     result = 0 area copied
              2 sender of buffer is stopped (w1 and w3
                underfined at return)
              3 buffer describes input or output outside
                senders area; message regretted; operation
                in buffer illegal (w1 and w3 undefined
                at return)
*rj**nl2*
PARAMETER ERROR: buffer address does not point at message buffer 
received by calling process; corearea outside calling process; 
last address < first address.
*ps*
*ns 1,2,PROCEDURE SET BACKING STORAGE CLAIMS**np*
Procedure Set backing Storage Claims,  78
*sj*
    set backing storage claims (name address, document name
    address, claim list address, result)
    w0 result (return)
    w1 claims list address (call)
    w2 document name address (call)
    w3 name address (call)
       jd 1<11+78

       name address: process name (call)
    Format of the claim list (call):
       claim list address + 0 : entry claim (key = 0)
                          + 2 : segmet claim (key = 0)
                          + 4 : entry claim (key = 1)
                            ...
       claim list address + 4 Å max permkey
                          + 0 : entry claim (key = maxpermkey)
                          + 2 : segment claim (key = maxpermkey)

       document name address  : document name (call)
       name address            : process name (call)
*rj**nl2*
The procedure will transfer backing storage claims, corresponding to 
the document specified by the document name, between the calling process
and the process specified by the process name (which must be a child of
the calling process).*nl2*
The number (negative or positive) of entries and segments specified
by the claim list are subtracted form the claims of the calling process
and added to the claims of the child process.
*ps*
If the number of segments specified is not an integral number of
slices, it is increased to an integral number of slices.*nl2*
Result 1 (=claims exceeded is returned if either the claims of the
calling process or the claims of the child
sould become negative by the transfer; in this case nothing is changed
in the claims.
*sj*

       result = 0 backing storage claims set
                1 claims exceeded
                2 backing storage document with given
                  name not found
                3 process does not exist;
                  process is not an internal process;
                  process is not a child of calling
                  process
                6 name format (of docname or child name)
                  illegal

PARAMETER ERROR: claim list area, document area or process name
   area outside calling process.
*rj*
*ps*
*ns 1,2,8. ADMINISTRATION OF MESSAGE BUFFERS**np*
8.1. MESSAGE BUFFER POOL
*sj*
The message buffer pool is described in the following storage
locations within the monitor:

     absolute address         contents:
         82                   <next message buffer>
         84                   <previous message buffer>
         86                   <message pool start>
         88                   <message  pool end>
         90                   <message buffer size>
*rj**nl2*
Next and PREVIOUS MESSAGE BUFFER are the head of the queue of available
message buffers that are linked cyclically.*nl2*
MESSAGE POOL START and END are the first and last addresses of the
contiguous storage area containing all message buffers.*nl2*
MESSAGE BUFFER SIZE is the number of bytes per message buffer
(at present = 32 halfwords).*nl2*
*ps*
*ns 1,2,8.2. MESSAGE BUFFER FORMAT**np*
*sj*
A message buffer has the following format:
       buffer address:           contents:
            - 8                  <buffer address other computer>
            - 6                  <sender/receiver identification>
            - 4                  <process description other computer>
            - 2                  <message flag (save w2 in send message)>
            + 0                  <next buffer>
            + 2                  <previous buffer>
            + 4                  <receiver or answer type>
            + 6                  <sender>
            + 8                  <message or answer>
            ....                 ....
            +22                  <message or answer>
*rj*
*nl2*
NEXT and PREVIOUS BUFFER are the link that connects the buffer
cyclically to other buffers in its present queue.*nl2*
RECEIVER and SENDER define the state of the buffer as described
in Section 8.3. Theese adresses are within this computer.*nl2*
MESSAGE and ANSWER are eight words exchanged between two
communicating processes.*nl2*
SENDER/RECEIVER IDENTIFICATION gives the computer number of
the sending computer in the first byte and the computer
number of the receiving computer in the second byte. If zero
this buffer is used for communication within this computer.
*nl2*
PROCESS ADDRESS OTHER COMPUTER gives the process description
address of the real address in the other computer for
the process involved in this communication.
If negative this is a mirror message buffer or a
message generated by monitor to a master process (=-1).
*nl2*
BUFFER ADDRESS OTHER COMPUTER gives the buffer address of the
message buffer in the other computer.
*nl2*
*sj*
Input/output messages have a standard format:

              message                      answer
         +8  operation, mode               status word
         +10 first storage address         number of bytes
         +12 last storage address          number of charecters
         +14 segment number

Input is signalled by:   operation = 3
Output is signalled by:  operation = 5
*rj*
*ps*
*ns 1,2,8.3 MESSAGE BUFFER STATES.**np*
The possible states of a message buffer is defined by the sign
of the receiver and sender address:
*sj*
     sender   receiver   state
       0         0       buffer available
       +         +       message pending (i.e. buffer claim
                         of receiver has not been decreased
                         on account of this message)
       +         -       message received (i.e. buffer claim
                         of receiver has been decreased
                         on account of this message)
       -         +       not possible
       -         -       message received, but regretted
                         by sender

The answer type is coded as follows:

    1  normal answer
    2  dummy answer, message rejected
    3  dummy answer, message unintelligible
    4  dummy answer, receiver malfunction
    5  dummy answer, receiver does not exist
*rj**nl*
THE SENDER and RECEIVER ADDRESSES are the process description
addresses of the two processes that communicate in the buffer.*nl2*
In pending answers the receiver address has been replaced
by the result parameter of the procedure wait answer.
*ps*
*sj*
The transitions between these states are clarified by the
following scheme:

   after calling    buffer state:       queue situation:

   send message     message pending     buffer in receiver queue
   wait message     message received    buffer in no queue
   send answer      answer pending      buffer in sender queue
   wait answer      buffer available    buffer in pool
   wait event       message :received    buffer in receiver
                                        queue
                    answer: pending     buffer in receiver
                                        queue
   get event        message: received   buffer in no queue
                    answer: available buffer in pool
*rj*
*ps*
*ns 1,2,8.4 ADMINISTRATION OF PROCESS DESCRIPTIONS**np*
The format of a process description depends on the kind
of the process; common to all process descriptions, however,
is a head defining the kind, name and base of the process:*nl*
*sj*
    process description address      contents:
              -4                     <lower base>
              -2                     <upper base>
              +0                     <kind>
              +2                     <name>
              +10                    <other parameters>
*rj**nl2*
A process is considered removed if the first word of its name
is zero.*nl*
The monitor has a name table containing the base addresses
of all process descriptions (including those of removed processes).
The name table is described in the following storage locations.*nl*
*sj*
    absolute address                contents:
              72                    <name table start>
              74                    <first device in name table>
              76                    <first area in name table>
              78                    <first internal in name table>
              80                    <name table and>
*rj*
*nl2*
NAME TABLE START is the address of the first name table entry.
This and the following name table entries contain process
description addresses of special processes, used during debugging
of the system, and ecternal processes corresponding to pure
interrupt sources.
*ps*
FIRST DEVICE in name table is the address of the name table
entry that contains the process description address of peripheral
device number 0. The following name table entries contain
process description addresses of peripheral devices 1,2,3 etc.*nl2*
FIRTS AREA in name table is the address of the name table entry
that contains the process description address of the first area
process. The following name table entries contain the rest of the
area process description addresses.*nl2*
FIRST INTERNAL in name table is the address of the name table entry
that contains the process description address of the first
internal process. The following name table entries contain the rest
of the internal process description addresses.*nl2*
NAME TABLE END is the address of the last name table entry. This
does not contain a process description address.*nl*
*ps*
*ns 1,2,8.5 FORMAT OF INTERNAL PROCESS DESCRIPTION**np*
An internal process is described in a table  where
the first column is for a real internal process or master
process and the second are for master mirror and mirror processes.
All claims in column two refers to the other computer. All
register values in column two are working variables for monitor.
*sj*
relative address:      contents
                 real process                       mirror process
-12       0                                         reference process
-10       process type (even)                       process type (odd)
-8        0                                         master (mirror) process
-6        computer number<12+internal claim other
-4        lower base of process name
-2        upper base of process name
 0        kind
+2 to +8  process name
+10       stop count, state                         0, waiting for start
+12       identification bit                        0
+14       next message buffer in event queue
+16       previous message buffer in event queue
+18       next process in time slice queue
+20       previous process in time slice queue
+22       first address of core area
+24       top address of core area
+26       buffer claim, area claim
+28       internal claim, function mask
+30       priority
+32       mode
+34       interrupt mask
+36       interrupt address
+38       escape address
+40       working location
+42       working location
+44       working location
+46       working register
+48       working location
+50       parent description address
+52       time quantum, unit in 0,1 msec            working location
+54
+56       run time (double word), unit in 0,1 msec  working location
+58
+60       start run (double word), unit in 0,1 msec
*rj**ps*

*sj*
+62
+64       start waiting time (double word), unit in 0,1 msec
+66       wait address
+68       lower catalog base
+70       upper catalog base
+72       lower max base
+ 74      upper max base
+78       upper standard base
+80       working register 0
+82       working register 1
+84       working register 2
+86       working register 3
+88       status
+90       ic
+92       cause
+94       sb
+96       cpa
+98       base
+100      lower write limit
+102      upper write limit
*rj**nl*
KIND is 0 for internal process.*nl2*
NAME is a textstring of 12 ISO characters beginning with a small letter
followed by a maximum of 10 small letters or digits terminated by
NULL characters.*nl2*
STOP COUNT defines the number of internal and external processes
modifying the storage area of the present process, allways zero
for a mirrorprocess.
*ps*
*sj*
STATE has the following value:

   2.0000 0000  mirrorprocess
   2.0100 1000  running
   2.0000 1000  running after error
   2.1011 0000  waiting for stop by parent
   2.1010 0000  waiting for stop by ancestor
   2.1011 1000  waiting for stop by parent
   2.1010 1000  waiting for stop by ancestor
   2.1100 1100  waiting for process function or master
   2.1000 1101  waiting for message
   2.1000 1110  waiting for answer
   2.1000 1111  waiting for event
*rj**nl2*
IDENTIFICATION BIT is a word in which a single bit is one.
it is used to check the access to external processes (see
Section 8.6.. Not used in basic version.*nl2*
NEXT and PREVIOUS EVENT are the head of the event queue that links
all pending messages and answers cyclically to the process.*nl2*
FIRST and TOP ADDRESS  point to the first storage word
and the large storage word +2 of the internal process in the computer
having the actual internal process.*nl2*
BUFFER CLAIM, AREA CLAIM and INTERNAL CLAIM define the number of
message buffers, area process descriptions, and internal process
descriptions  the process was created with in the other computer.
FUNCTION MASK defines the function bits the calling process must 
have in order to execute some monitor procedures.*nl2*
MODE defines the rum mode for the created process. 0 indicates
monitor mode, 1 indicates user mode.*nl2*
INTERRUPT MASK is the value for the interrupt mask register used
during execution of the process.*nl2*
PARENT DESCRIPTION ADDRESS is the process description address of the
process that has created the present process.*nl2*
START TIME is the value of the clock when the process was created.
*ps*
WAITING TIME is not used.*nl2*
WAIT ADDRESS is a working location used by the monitor.*nl2*
CATBASE, MAXBASE, STDBASE: Not used in basic version.*nl*
*rj*
*ld8**ns 1,4,9. IMPLEMENTATION DETAILS*
             -------------------------*ld16*
*sj*

8.1. Use of a and b-names in monitor

b150:   0      ; master process address
b151:   0      ; computer number this computer 

a400=          ; translation mask
  1<16         ;   master process
  1<15         ;   dma process
  1<14         ;   transmitter/receiver process
  1<13         ;   active mirror process (reference process)

claims:

a428=          ;   other computers in the system
a429=          ;   internal processes in other computers=mirror processes

used in message buffer:
a425=-8        ;   message buffer address in other computer
a426=-6        ;   receiver/sender computer identification
a427=-4        ;   process description address in other computer
a message buffer is 32 words

used in internal process:
a430=-12       ;   reference process (for a passive process)
a431=-10       ;   process type
a432=-8        ;   process description of master (mirror) process
a433=-6        ;   computer number<12+internal claim other computer

process type:
   0  real internal process
   2  master process of this computer
   3  master mirror process for a master process in other computer
   5  mirror process for a real internal process in other computer
               ;     in this computer
*ef*

▶EOF◀