top - download
⟦68af29a2d⟧ Wang Wps File
Length: 48011 (0xbb8b)
Types: Wang Wps File
Notes: FIX/1256/PSP/0081
Names: »4636A «
Derivation
└─⟦c7fef4850⟧ Bits:30006144 8" Wang WCS floppy, CR 0418A
└─ ⟦this⟧ »4636A «
WangText
…12……00……00…F…0a…F…0b……00……00…F…0c…F…0e…E…0f…D…0b…D…0f…* *…05……11……0b……11……01……11……07……10……0a……10……86…1 …02… …02… …02… …02…
…02… FIX/1256/PSP/0081 (2)
…02… SL/871029…02……02… #
FIKS RDF MONITOR PSP
…02… OK/840221…02… FIKS
FIKS RDF MONITOR PSP
FIX/1256/PSP/0081
S]ren Lindel]v
Ole Nymann
AMC (6), APE, LU
FIKS S/W Mgr
FIKS Conf. Mgr
…0f…2 …0e…
…0f…871029…0e…
REVISION RECORD
REVISION RECORD
REVISION RECORD
REVISION RECORD
REVISION RECORD
Wang/Disk:
4636A/418A
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…06…1 …02… …02… …02…
ISSUE DATE PAGES BRIEF
DESCRIPTION
OF
CHANGE
ISSUE DATE PAGES BRIEF
DESCRIPTION
OF
CHANGE
ISSUE DATE PAGES BRIEF
DESCRIPTION
OF
CHANGE
ISSUE DATE PAGES BRIEF
DESCRIPTION
OF
CHANGE
ISSUE DATE PAGES BRIEF
DESCRIPTION
OF
CHANGE
AFFECTED
AFFECTED
AFFECTED
AFFECTED
AFFECTED
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ^ ^
^
1 ^840221 ^ All ^
Original
issue
of
document.
̲ ̲ ̲ ̲ ̲ ̲^̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲^̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲^̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
^ ^ ^
2 ^871029 ^ All ^
Revised
because
of
change
in
RDF
layout,
^ ^ ^
and
monitor
calls.
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
T̲A̲B̲L̲E̲ ̲O̲F̲ ̲C̲O̲N̲T̲E̲N̲T̲S̲
Page
1 SCOPE ........................................
1
1.1 INTRODUCTION .............................
1
2 APPLICABLE DOCUMENTS .........................
1
3 MODULE SPECIFICATON ..........................
2
3.1 FUNCTIONAL CAPABILITIES ..................
2
3.2 INTERFACE DESCRIPTION ....................
5
3.2.1 GET ̲ANO ̲ADDR .........................
6
3.2.2 GET ̲ANO ̲AIG ..........................
7
3.2.3 GET ̲ANO ̲EXIST ........................
9
3.2.4 GET ̲ANO ̲TERM ......................... 10
3.2.5 GET ̲AIG ̲EXIST ........................ 11
3.2.6 GET ̲MEDE ̲ID .......................... 12
3.2.7 GET ̲TERM ̲ID .......................... 13
3.2.8 GET ̲TERM ̲NO .......................... 14
3.2.9 GET ̲ANO ̲EXIST ........................ 15
3.2.10 REROUTE ............................. 16
3.2.11 SET ̲ANO ̲TERM ........................ 17
3.2.12 RESERVE ̲RDF ̲SEMAHPORE ............... 18
3.2.13 RELEASE ̲RDF ̲SEMAPHORE ............... 19
3.2.14 GET ̲SET ̲TAA ......................... 20
3.3 PROCESSING ............................... 21
3.3.1 UTILITY PROCEDURES .................. 21
3.3.1.1 CHANGE ........................... 21
3.3.1.2 TEST ̲MEDE ̲ID ..................... 22
3.3.2 RDFMON ............................... 23
3.3.3 GET ̲ANO ̲ADDR ......................... 24
3.3.4 GET ̲ANO ̲AIG .......................... 25
3.3.5 GET ̲ANO ̲EXIST ........................ 26
3.3.6 GET ̲ANO ̲TERM ......................... 27
3.3.7 GET ̲AIG ̲EXIST ........................ 31
3.3.8 GET ̲MEDE ̲ID .......................... 31
3.3.9 GET ̲TERM ̲ID .......................... 32
3.3.10 GET ̲TERM ̲NO ......................... 33
3.3.11 GET ̲ANO ̲EXIST ....................... 34
3.3.12 REROUTE ............................. 35
3.3.13 SET ̲AND ̲TERM ........................ 36
3.3.14 GET ̲SET ̲TAA ......................... 37
3.4 DATA ORGANIZATION ........................ 38
1 S̲C̲O̲P̲E̲
This document contains an As-Built product specification
of the RDF monitor procedures, and a detailed description
on how to use the monitor.
1.1 I̲N̲T̲R̲O̲D̲U̲C̲T̲I̲O̲N̲
The purpose of the RDF monitor is to provide the application
S/W with a structured interface to the data in the
Routing Directory File (RDF), both to those data stored
on disk and to the in-core RDF data.
The monitor consists of a basic part, which provides
the processing which is common for all functions, and
a number of procedures (branches) that performs the
specific processing for each function.
2 A̲P̲P̲L̲I̲C̲A̲B̲L̲E̲ ̲D̲O̲C̲U̲M̲E̲N̲T̲S̲
1. FIX/0100/MAN/0004, FIKS DATA I/F REFERENCE
2. FIX/1200/PSP/0082, RDF ̲INIT PROCEDURE PSP
3. FIX/1200/USM/0007, FIKS RDF GENERATOR USM
3 M̲O̲D̲U̲L̲E̲ ̲S̲P̲E̲C̲I̲F̲I̲C̲A̲T̲I̲O̲N̲S̲
3.1 F̲U̲N̲C̲T̲I̲O̲N̲A̲L̲ ̲C̲A̲P̲A̲B̲I̲L̲I̲T̲I̲E̲S̲
This chapter contains an introduction to the processing
in the RDF monitor. Chapter 3.3 gives a short description
of each of the branches in the monitor.
Figure 3.1-1 shows the block diagram of the RDF monitor.
As shown on the figure, each of the 13 different branches,
which can be activated by the user, are controlled
by 13 seperate procedures (hereafter called branch
procedures). These procedures all make use of the common
utility procedure ENTER ̲RDF ̲PAGE. In addition, the
GET ̲ANO ̲EXIST procedure makes use of the utility procedure
TEST ̲MEDE ̲ID.
All branch procedures, which accesses non-static data,
are executed under semaphore protection: When the
RDF semaphore bit is set, other procedures (called
by other programs) using the protection facility are
set into a waiting position until the semaphore bit
is released (upon completion of the first initiated
function).
Semaphore protection processing is implemented in those
branches, which
a) reads or updates more than one word per call in
non-static data areas in in-core RDF data area
b) reads data from or updates the RDF file.
Figure 3.1-1
Block Diagram of RDF Monitor Program
When reading the next chapters covering the processing
in the procedures, the following files and documents
are important tools:
* RDF ̲PARAMS.S file (located in the FIX ̲PREFIX.D
directory) defining constants and data types.
* The descriptions of the elements in the RDF file
given in the DATA I/F REF., chapter 11.3 (ref.
1).
* The descriptions of the in-core RDF tables in the
DATA I/F REF., chapter 8.4 (ref. 1).
The RDF monitor accesses the in-core data area (generated
by the RDF ̲INIT process) which contains data local
to the actual MEDE.
In addition, the monitor accesses data on the RDF-file,
which contains all RDF-data used in the entire FIKS
system (the main purpose of the RDF ̲INIT process is
to extract RDF-data local to the actual NODE-MEDE from
the RDF file and place it in the in-core RDF data area).
As described in the interface section 3.2, all programs
calling RDF monitor functions must deliver a reference
(address) to a data area in the call. This area is
by the monitor used to store registers, intermediate
data, and to place the final data requested in the
call.
The RDF file is initialized by the RDFGEN utility program.
C.f. ref. 3.
3.2 I̲N̲T̲E̲R̲F̲A̲C̲E̲ ̲D̲E̲S̲C̲R̲I̲P̲T̲I̲O̲N̲
This section describes how the branches of the RDF
monitor are activated from the application programs.
Contents of registers at call and at return and the
contents of the work area at call and return are described
for each monitor call. The registers not mentioned
in the monitor call will at return have the same values
as at call.
The mnemonics for the RDF monitor functions are defined
in the FIX ̲MONITORNAMES.S file in the FIX ̲PREFIX.D
directory.
The layout of work and save areas are defined by datatypes
in the RDF ̲PARAMS.S file.
An attempt to invoke a non-existing function in the
RDF-monitor will cause a t̲e̲r̲m̲i̲n̲a̲t̲i̲o̲n̲ of the process
with error code 0A00 (hex.) and error label = 0.
The c̲o̲m̲p̲l̲e̲t̲i̲o̲n̲ ̲c̲o̲d̲e̲ will always be 0 (zero) upon successful
return from the RDF-monitor. When an error return is
made the completion code will contain an error code
from the I/O system, unless otherwise specified. The
completion code is returned in register R7.
Note that the monitor does n̲o̲t̲ perform a̲n̲y̲ range checks
on the input parameters. Calls with parameters out
of range will either damage the RDF in-core data (in
case of the 'SET' or 'REROUTE' procedures) or return
arbitrary parameter values (in case of the 'GET' procedures)
to the calling process.
3.2.1 GET ̲ANO ̲ADDR
…0e… ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…0f…
MON RDF, GANOADR
The function returns the Danish or the English plain
text address for the specified ANO.
R̲e̲g̲i̲s̲t̲e̲r̲ ̲u̲s̲e̲ ̲a̲t̲:
CALL RETURN
R4 FD(RDF) FD(RDF)
R6 Ref. (work area) Ref. (work area)
R7 link completion code
R̲e̲t̲u̲r̲n̲ ̲p̲o̲i̲n̲t̲s̲:
Error: link +1
Successful: link +2
W̲o̲r̲k̲ ̲a̲r̲e̲a̲ ̲a̲t̲:
CALL RETURN
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲
WORD 0 ^ ̲ ̲ ̲ ̲ ̲A̲N̲O̲ ̲ ̲ ̲ ̲ ̲ ̲^ WORD 0 ^ ̲ ̲ ̲ ̲ ̲A̲N̲O̲ ̲ ̲
̲ ̲ ̲ ̲^
1 ^ ̲ ̲ ̲ ̲ ̲F̲L̲A̲G̲ ̲ ̲ ̲ ̲ ̲^ 1 ^ ̲ ̲ ̲ ̲ ̲F̲L̲A̲G̲ ̲
̲ ̲ ̲ ̲^
2 ^ ^ WORD 2 ^ Plain
^
^ ^ ^ address text
^
^ ^ ^ 40 chars
^
^ ^ ^
^
^ ^ 21 ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲^
^ ^ ^
^
^ ^ ^
^
^ ^ ^
^
^ ^ ^
^
40 ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲^ 40 ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲^
FLAG: 1 = English, 0 = Danish
FD(RDF) = File descriptor of the RDF file
Work area type: GET ̲ANO ̲ADDR ̲WORK
Notice: The existence of the ANO is not checked.
3.2.2 GET ̲ANO ̲AIG
…0e… ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…0f…
The function returns a bitmap for the specified AIG.
In the bitmap is a bit set for each ANO, which is included
in the AIG.
MON RDF, GANOAIG
R̲e̲g̲i̲s̲t̲e̲r̲ ̲u̲s̲e̲ ̲a̲t̲:
CALL RETURN
R4 FD(RDF) FD(RDF)
R5 Ref. (work area) Ref. (work area)
R7 link completion code
R̲e̲t̲u̲r̲n̲ ̲p̲o̲i̲n̲t̲s̲:
Error: link +1
Successful: link +2
Work area type: GET ̲ANO ̲AIG ̲WORK
Notice: The existence of the AIG is not checked.
GANOAIG shall be called with the logical aig no in
the work area location 1.
W̲o̲r̲k̲ ̲a̲r̲e̲a̲ ̲a̲t̲:
CALL RETURN
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲
WORD 0 ^ ̲ ̲ ̲ ̲ ̲A̲I̲G̲ ̲ ̲ ̲ ̲ ̲ ̲^ WORD 0 ^ ̲ ̲ ̲A̲I̲G̲-̲I̲D̲ ̲
̲ ̲ ̲ ̲^
1 ^A̲I̲G̲ ̲L̲O̲G̲I̲C̲A̲L̲ ̲N̲O̲^ 1 ^A̲I̲G̲ ̲L̲O̲G̲I̲C̲A̲L̲
̲N̲O̲^
^ ^ 2 ^ ̲N̲o̲.̲ ̲o̲f̲ ̲A̲N̲O̲'̲s̲
̲^
^ ^ 3 ^
^
^ ^ ^ Bitmask A
^
^ ^ ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲^
^ ^ 19 ^
^
^ ^ ^ Bitmask B
^
^ ^ ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲^
^ ^ 35 ^
^
^ ^ ^ Bitmask E
^
^ ^ ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲^
^ ^ 51 ^
^
^ ^ ^ Bitmask F
^
^ ^ ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲^
^ ^ 67 ^
^
^ ^ ^ Bitmask H
^
^ ^ ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲^
^ ^ 83 ^
^
^ ^ ^ Bitmask K
^
^ ^ ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲^
^ ^ 99 ^
^
^ ^ ^ Bitmask L
^
^ ^ ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲^
^ ^ 115 ^
^
^ ^ ^ Bitmask N
^
^ ^ ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲^
^ ^ 131 ^
^
^ ^ ^ Bitmask T
^
^ ^ ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲^
^ ^ 147 ^
^
^ ^ ^ Bitmask U
^
^ ^ ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲^
^ ^ 163 ^
^
^ ^ ^ Bitmask V
^
^ ^ ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲^
^ ^ 179 ^
^
^ ^ ^ Bitmask W
^
^ ^ ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲^
^ ^ 195 ^
^
^ ^ ^ Bitmask X
^
^ ^ 211,^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲^
229 ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲^ 229 ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲ ̲ ̲^
No. of ANO's = No. of bits in the entire bitmask
One bit is set for each ANO (ex. if ANO A000 is included
in the AIG, the bitmask for MEDE A has bit zero set).
3.2.3 GET ̲ANO ̲EXIST
…0e… ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…0f…
MON RDF, GANOEX
The function checks the existence of the specified
ANO.
R̲e̲g̲i̲s̲t̲e̲r̲ ̲u̲s̲e̲ ̲a̲t̲:
CALL RETURN
R5 ANO existence flag
R6 Ref. (work area) Ref. (work area)
R7 link completion code
R̲e̲t̲u̲r̲n̲ ̲p̲o̲i̲n̲t̲s̲:
Error: link +1
Successful: link +2
W̲o̲r̲k̲ ̲a̲r̲e̲a̲ ̲a̲t̲:
CALL RETURN
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲
WORD 0 ^ ̲ ̲ ̲ ̲ ̲A̲N̲O̲ ̲ ̲ ̲ ̲ ̲ ̲^ WORD 0 ^
^
1 ^ ^ ^
^
^ ^ ^
^
^ ^ ^
^
9 ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲^ 9 ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲^
ANO existence flag: 1 = ANO exists
0 = ANO does not exist
Work area type: GET ̲ANO ̲EXIST ̲WORK
Notice: This function will always perform successful
return.
3.2.4 GET ̲ANO ̲TERM
…0e… ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…0f…
The function returns the logical terminal number related
to the specified ANO.
MON RDF, GANOTRM
R̲e̲g̲i̲s̲t̲e̲r̲ ̲u̲s̲e̲ ̲a̲t̲:
CALL RETURN
R6 Ref. (work area) Ref. (work area)
R7 link completion code
R̲e̲t̲u̲r̲n̲ ̲p̲o̲i̲n̲t̲s̲:
Error: link +1
Successful: link +2
W̲o̲r̲k̲ ̲a̲r̲e̲a̲ ̲a̲t̲:
CALL RETURN
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲
WORD 0 ^ ̲ ̲ ̲ ̲ ̲A̲N̲O̲*̲ ̲ ̲ ̲ ̲ ̲^ WORD 0 ^ ̲ ̲ ̲ ̲ ̲ ̲A̲N̲O̲ ̲
̲ ̲ ̲ ̲^
^ ^ 1 ^ ̲T̲E̲R̲M̲I̲N̲A̲L̲ ̲N̲O̲.̲*̲^
^ ^ ^
^
^ ^ ^
^
^ ^ ^
^
^ ^ ^
^
10 ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲^ 10 ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲^
* ANO: if a normal ANO is given, the a̲c̲t̲u̲a̲l̲ logical
terminal number is returned.
if the upper byte of the ANO word contains
a value higher than or equal to 27, the o̲r̲i̲g̲i̲n̲a̲l̲
logical terminal number is returned.
Work area type: GET ̲ANO ̲TERM ̲WORK
Notice: The existence of the ANO is not checked.
This function will always perform successful
return.
3.2.5 GET ̲AIG ̲EXIST
…0e… ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…0f…
The existence of the specified AIG is checked. The
AIG may be specified as either AIG ID or logical AIG
number.
MON RDF, GAIGEX
R̲e̲g̲i̲s̲t̲e̲r̲ ̲u̲s̲e̲ ̲a̲t̲:
CALL RETURN
R4 Ref (work area) Ref. (work area)
R5 AIG existence flag
R6 AIG AIG
R7 link completion code
R̲e̲t̲u̲r̲n̲ ̲p̲o̲i̲n̲t̲s̲:
Error: link +1
Successful: link +2
W̲o̲r̲k̲ ̲a̲r̲e̲a̲ ̲a̲t̲:
CALL RETURN
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲
WORD 0 ^ ^ WORD 0 ^ ̲ ̲A̲I̲G̲ ̲I̲D̲ ̲ ̲
̲ ̲ ̲ ̲^
^ ^ 1 ^L̲O̲G̲I̲C̲A̲L̲ ̲A̲I̲G̲
̲N̲O̲^
^ ^ 2 ^ ̲ ̲ ̲A̲I̲G̲ ̲C̲O̲U̲N̲T̲
̲ ̲^
^ ^ 3 ^
^
^ ^ ^
^
11 ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲^ 11 ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲^
AIG EXISTENCE FLAG: 1 = AIG exists
0 = AIG does not exist
Work area type: GET ̲AIG ̲EXIST ̲WORK
Notice: This function will always perform successful
return, and it will always return the numbers
of existing AIGs in AIG COUNT.
3.2.6 GET ̲MEDE ̲ID
…0e… ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…0f…
This function returns the local MEDE ID.
MON RDF, GMEDID
R̲e̲g̲i̲s̲t̲e̲r̲ ̲u̲s̲e̲ ̲a̲t̲:
CALL RETURN
R5 Ref (work area) Ref. (work area)
R6 MEDE ID
R7 link completion code
R̲e̲t̲u̲r̲n̲ ̲p̲o̲i̲n̲t̲s̲:
Error: link +1
Successful: link +2
W̲o̲r̲k̲ ̲a̲r̲e̲a̲ ̲a̲t̲:
CALL RETURN
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲
WORD 0 ^ ^ WORD 0 ^
^
^ ^ ^
^
^ ^ ^
^
^ ^ ^
^
^ ^ ^
^
8 ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲^ 8 ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲^
MEDE ID = the ASCII character representing the local
MEDE.
Work area type: GET ̲MEDE ̲ID ̲WORK
Notice: This function will always perform successful
return.
3.2.7 GET ̲TERM ̲ID
…0e… ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…0f…
The function returns the terminal ID for the specified
logical terminal number.
MON RDF, GTRMID
R̲e̲g̲i̲s̲t̲e̲r̲ ̲u̲s̲e̲ ̲a̲t̲:
CALL RETURN
R4 FD(RDF) FD(RDF)
R6 Ref (work area) Ref. (work area)
R7 link completion code
R̲e̲t̲u̲r̲n̲ ̲p̲o̲i̲n̲t̲s̲:
Error: link +1
Successful: link +2
W̲o̲r̲k̲ ̲a̲r̲e̲a̲ ̲a̲t̲:
CALL RETURN
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲1̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲0̲ ̲ ̲ byte
WORD 0 ^L̲O̲G̲.̲ ̲T̲E̲R̲M̲.̲ ̲N̲O̲.̲^ WORD 0 ^ ̲ ̲T̲E̲R̲M̲ ̲ID
^ 0
1 ^ ̲N̲O̲D̲E̲ ̲M̲E̲D̲E̲ ̲I̲D̲ ̲^ 1 ^ ^ ̲ ̲ ̲
̲ ̲ ̲ ̲^ 2
^ ^ ^
^ 4
^ ^ ^
^ 6
^ ^ ^
^ 8
^ ^ ^
^
^ ^ ^
^
20 ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲^ 20 ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲^
Work area type: GET ̲TERM ̲ID ̲WORK
3.2.8 GET ̲TERM ̲NO
…0e… ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…0f…
The function returns the logical terminal number for
the specified terminal ID.
MON RDF, GTRMNO
R̲e̲g̲i̲s̲t̲e̲r̲ ̲u̲s̲e̲ ̲a̲t̲:
CALL RETURN
R4 FD(RDF ̲file) FD(RDF-file)
R6 Ref (work area) Ref. (work area)
R7 link completion code
R̲e̲t̲u̲r̲n̲ ̲p̲o̲i̲n̲t̲s̲:
Error: link +1
Successful: link +2
W̲o̲r̲k̲ ̲a̲r̲e̲a̲ ̲a̲t̲:
CALL RETURN
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲
WORD 0 ^ ̲ ̲T̲E̲R̲M̲ ̲ID ^ WORD 0 ^L̲O̲G̲.̲ ̲T̲E̲R̲M̲.̲
̲N̲O̲.̲^
1 ^ ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲^ ^
^
^ ^ ^
^
^ ^ ^
^
^ ^ ^
^
^ ^ ^
^
^ ^ ^
^
20 ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲^ 20 ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲^
Work area type: GET ̲TERM ̲NO ̲WORK
3.2.9 SET ̲ANO ̲EXIST
…0e… ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…0f…
The function updates the assistance flag for the specified
ANO. Update is performed in the in-core ANO existence
table.
MON RDF, SANOEX
R̲e̲g̲i̲s̲t̲e̲r̲ ̲u̲s̲e̲ ̲a̲t̲:
CALL RETURN
R6 Ref (work area) Ref. (work area)
R7 link completion code
R̲e̲t̲u̲r̲n̲ ̲p̲o̲i̲n̲t̲s̲:
Error: link +1
Successful: link +2
W̲o̲r̲k̲ ̲a̲r̲e̲a̲ ̲a̲t̲:
CALL RETURN
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲
WORD 0 ^ ̲ ̲U̲P̲D̲A̲T̲E̲ ̲T̲Y̲P̲E̲ ̲^ WORD 0 ^
^
1 ^ ̲ ̲ ̲ ̲ ̲A̲N̲O̲ ̲ ̲ ̲ ̲ ̲ ̲^ ^
^
^ ^ ^
^
^ ^ ^
^
^ ^ ^
^
^ ^ ^
^
^ ^ ^
^
10 ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲^ 10 ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲^
UPDATE TYPE: 0 = delete ANO in in-core ANO existence
table
1 = insert ANO in ANO in-core existence
table
Work area type: SET ̲ANO ̲EXIST ̲WORK
Notice: This function will always perform successful
return.
3.2.10 R̲E̲R̲O̲U̲T̲E̲
This function inserts the new actual logical terminal
no. for the specified logical terminal no.
MON RDF, REROUTE
R̲e̲g̲i̲s̲t̲e̲r̲ ̲u̲s̲e̲ ̲a̲t̲:
CALL RETURN
R6 Ref (work area) Ref. (work area)
R7 link completion code
R̲e̲t̲u̲r̲n̲ ̲p̲o̲i̲n̲t̲s̲:
Error: link +1
Successful: link +2
W̲o̲r̲k̲ ̲a̲r̲e̲a̲ ̲a̲t̲:
CALL RETURN
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲
WORD 0 ^L̲O̲G̲.̲ ̲T̲E̲R̲M̲.̲ ̲N̲O̲.̲^ WORD 0 ^L̲O̲G̲.̲ ̲T̲E̲R̲M̲.̲
̲N̲O̲.̲^
1 ^A̲C̲T̲.̲ ̲T̲E̲R̲M̲.̲ ̲N̲O̲ ̲^ ^A̲C̲T̲.̲ ̲T̲E̲R̲M̲.̲
̲N̲O̲.̲^
^ ^ ^
^
^ ^ ^
^
^ ^ ^
^
^ ^ ^
^
^ ^ ^
^
10 ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲^ 10 ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲^
Work area type: REROUTE ̲WORK
Notice: This function will always perform successful
return.
3.2.11 SET ̲ANO ̲TERM
…0e… ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…0f…
The function inserts the logical terminal no. into
the in-core ANO table.
MON RDF, SANOTRM
R̲e̲g̲i̲s̲t̲e̲r̲ ̲u̲s̲e̲ ̲a̲t̲:
CALL RETURN
R6 Ref (work area) Ref. (work area)
R7 link completion code
R̲e̲t̲u̲r̲n̲ ̲p̲o̲i̲n̲t̲s̲:
Error: link +1
Successful: link +2
W̲o̲r̲k̲ ̲a̲r̲e̲a̲ ̲a̲t̲:
CALL RETURN
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲
WORD 0 ^ ̲ ̲ ̲ ̲ ̲A̲N̲O̲ ̲ ̲ ̲ ̲ ̲ ̲^ WORD 0 ^ ̲ ̲ ̲ ̲ ̲ ̲A̲N̲O̲ ̲
̲ ̲ ̲ ̲^
1 ^L̲O̲G̲.̲ ̲T̲E̲R̲M̲.̲ ̲N̲O̲ ̲^ ^L̲O̲G̲.̲ ̲T̲E̲R̲M̲.̲
̲N̲O̲.̲^
^ ^ ^
^
^ ^ ^
^
^ ^ ^
^
^ ^ ^
^
^ ^ ^
^
10 ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲^ 10 ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲^
Work area type: SET ̲ANO ̲TERM ̲WORK
Notice: This function will always perform successful
return.
3.2.12 RESERVE ̲RDF ̲SEMAPHORE
…0e… ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…0f…
The function reserves the RDF semaphore.
MON RDF, RESERVE ̲RDF ̲SEMAPHORE
R̲e̲g̲i̲s̲t̲e̲r̲ ̲u̲s̲e̲ ̲a̲t̲:
CALL RETURN
R6 Ref (work area) Ref. (work area)
R7 link completion code
R̲e̲t̲u̲r̲n̲ ̲p̲o̲i̲n̲t̲s̲:
Error: link +1
Successful: link +2
W̲o̲r̲k̲ ̲a̲r̲e̲a̲ ̲a̲t̲:
CALL RETURN
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲
WORD 0 ^ ^ WORD 0 ^
^
^ ^ ^
^
^ ^ ^
^
^ ^ ^
^
^ ^ ^
^
^ ^ ^
^
8 ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲^ 8 ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲^
Work area type: RESERVE ̲RDF ̲SEMAPHORE ̲WORK
Notice: This function will always perform successful
return.
3.2.13 RELEASE ̲RDF ̲SEMAPHORE
…0e… ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…0f…
The function releases the RDF semaphore.
MON RDF, RELEASE ̲RDF ̲SEMAPHORE
R̲e̲g̲i̲s̲t̲e̲r̲ ̲u̲s̲e̲ ̲a̲t̲:
CALL RETURN
R6 Ref. (work area) Ref. (work area)
R7 link completion code
R̲e̲t̲u̲r̲n̲ ̲p̲o̲i̲n̲t̲s̲:
Error: link +1
Successful: link +2
W̲o̲r̲k̲ ̲a̲r̲e̲a̲ ̲a̲t̲:
CALL RETURN
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲
WORD 0 ^ ^ WORD 0 ^
^
^ ^ ^
^
^ ^ ^
^
^ ^ ^
^
^ ^ ^
^
^ ^ ^
^
8 ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲^ 8 ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲^
Work area type: RELEASE ̲RDF ̲SEMAPHORE ̲WORK
Notice: This function will always perform successful
return.
3.2.14 GET ̲SET ̲TAA
…0e… ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…0f…
This function gets/inserts a "Transferred ANO Address".
The function supports re-routing of information dedicated
for one address to another address.
MON RDF, GETTA
or
MON RDF, SETTA
R̲e̲g̲i̲s̲t̲e̲r̲ ̲u̲s̲e̲ ̲a̲t̲:
CALL RETURN
R4 FK (RDF) FD (RDF)
R6 Ref. (work area) Ref. (work area)
R7 link completion code
R̲e̲t̲u̲r̲n̲ ̲p̲o̲i̲n̲t̲s̲:
Error: link +1
Successful: link +2
W̲o̲r̲k̲ ̲a̲r̲e̲a̲ ̲a̲t̲:
CALL RETURN
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲
WORD 0 ^ ̲ ̲ ̲ ̲A̲N̲O̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲^ WORD 0 ^
^
1 ^ ̲T̲R̲A̲N̲S̲F̲.̲ ̲A̲N̲O̲ ̲ ̲^ 1 ^
^
^ ^ ^
^
^ ^ ^
^
^ ^ ^
^
^ ^ ^
^
22 ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲^ 22 ^ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲^
Work area type: GET ̲SET ̲TAA ̲WORK
3.3 P̲R̲O̲C̲E̲S̲S̲I̲N̲G̲
3.3.1 U̲T̲I̲L̲I̲T̲Y̲ ̲P̲R̲O̲C̲E̲D̲U̲R̲E̲S̲
3.3.1.1 ENTER ̲RDF ̲PAGE
…0e… ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…0f…
This procedure is an internal utility procedure used
by all branch procedures and it serves 2 purposes:
- Presetting pointers and variables used by the branch
procedures
- Reserving the RDF semaphore (if requested)
P̲R̲E̲S̲E̲T̲T̲I̲N̲G̲
Most of the monitor functionalities imply reading and
writing in both the RDF ̲DATA area and the calling programs
allocated work area. To do so, the PSW (Process Status
Word, described in detail in the CR80 minicomputer
handbook) must be modified according to the page number,
on which the accessed data resides.
3 different PSWs are calculated/stored:
- Original PSW (the PSW of the calling program).
- PSW1 (the original PSW of the calling program,
but with the interrupt bits reset, which means
that with this PSW loaded, the calling process
cannot be interrupted (due to ex. excess of the
allocated time slice).
- RDF PSW (the PSW of the calling program modified
to indicate the page on which the RDF ̲DATA area
resides. The page number is fetched from the critical
region CONFIG).
Other pointers:
- BASE (the relative address of the RDF ̲DATA area.
BASE = absolute address of RDF ̲DATA minus the BASE
of the calling process. The absolute address is
extracted from the critical region CONFIG).
- P ̲PROCESS ̲WORK (the address of the work area offered
to the monitor by the calling process).
The pointers are all stored in the RDF ̲WORK area in
the record CHANGE ̲PSW (ref. chapter 3.4).
R̲E̲S̲E̲R̲V̲I̲N̲G̲ ̲o̲f̲ ̲t̲h̲e̲ ̲R̲D̲F̲ ̲s̲e̲m̲a̲p̲h̲o̲r̲e̲:
A flag given as an input parameter (register R3) in
the procedure call indicates whether the semaphore
bit shall be set or not.
If the bit is requested set, the following processing
is performed:
- The RDF semaphore bit (which resides in a word
in the RDF ̲DATA area) is reserved.
- If the reservation fails, the process is suspended
for 100 ms. (by calling the kernel monitor WAITEVENT)
whereafter a new attempt of reservation is performed.
3.3.1.2 TEST ̲MEDE ̲ID
…0e… ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…0f…
This internal utility procedure checks the existance
of a specified mede number.
Input to the procedure is a number indicating a MEDE.
(1 = MEDE A, 2 = MEDE B, 5 = MEDE E, etc).
If the input MEDE number is recognized as a legal MEDE
number (A, B, E, F, H, K, L, N, T, U, V, W, X), the
existence flag (output of the procedure) is set (to
a number different from zero). Otherwise it is reset.
3.3.2 R̲D̲F̲M̲O̲N̲
The RDFMON is the main program of the RDF monitor.
All RDF monitor calls performed by the processes are
actually calls of RDFMON: in this module, the branching
to the various monitor procedures takes place.
Besides the branching decisions, the RDFMON performs
processing, which is common to more branches.
The first action is to store the contents of the registers
of the calling process in the work area offered by
the process itself. As the size of the allocated work
area depends on which branch is called, the offset
to the register save area is different in each branch.
The offset is calculated and the registers are stored.
If an illegal branch is called, the monitor terminates
the calling process with an identification of the error.
After storage of registers, the actual branch procedure
is called. The returned completion code (R6) is inspected
and if it differs from zero, the exit address is set
to the 'ERROR' exit (which is the first instruction
after the monitor call); otherwise the exit address
is set to the 'OK' exit. Finally, the original contents
of the registers are loaded into the registers (taken
from the work area as described above) and the monitor
is exited.
3.3.3 GET ̲ANO ̲ADDR
…0e… ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…0f…
The function of this procedure is to get the 'plain
address' (an ASCII string of 40 characters) of a specified
ANO. An input parameter tells whether the English or
Danish plain address is wanted.
The plain addresses of all ANOs reside on the disk
resident RDF file in the ADDR ̲TABLE.
When accessing the RDF file, the FCB (file control
block) to be used is delivered by the calling process.
T̲h̲e̲ ̲p̲r̲o̲c̲e̲s̲s̲i̲n̲g̲ ̲i̲s̲ ̲a̲s̲ ̲f̲o̲l̲l̲o̲w̲s̲:
- Extract ANO number and MEDE number from ANO.
- Call ENTER ̲RDF ̲PAGE procedure.
- Fetch (using pointers in the RDF ̲DATA area) the
offset on the RDF file to the ADDR ̲TABLE.
- Add the table offset, where addresses local to
the MEDE in question start. The calculated offset
now points at the plain text of the first ANO at
the MEDE in question.
- The offset to the actual ANOs plain text is found
by adding the size of a plain address area multiplied
by the ANO number to the previously calculated
offset.
- If the English plain address is wanted (input flag
= true), the size of one plain address is added
to the offset.
- The records FILE ̲ADDRESS and BLE to be used in
the I/O call are generated in the work area of
the calling process.
- The I/O monitor call is performed.
- The completion code is prepared.
- The RDF semaphore is relased.
- The procedure is exited.
3.3.4 GET ̲ANO ̲AIG
…0e… ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…0f…
The function of this procedure is to copy the AIG bitmap
of a specified AIG from the RDF file to the specified
work area of the calling process.
The AIG bitmaps reside in the AIG ̲TABLE in the disk
resident file RDF.
Besides the AIG bitmap, the number of entries (number
of bits set) is delivered.
T̲h̲e̲ ̲p̲r̲o̲c̲e̲d̲u̲r̲e̲ ̲i̲s̲ ̲a̲s̲ ̲f̲o̲l̲l̲o̲w̲s̲:
- Calculate AIG number
- Call ENTER ̲RDF ̲PAGE procedure
- Calculate (by using pointers in the RDF ̲DATA area)
the offset to the AIG ̲TAB table in the RDF file.
- Calculate offset to actual AIG bitmap by adding
the size of an AIG bitmap multiplied by the actual
AIG number.
- The records FILE ̲ADDRESS and BLE, to be used in
the I/O call are generated in the work area of
the calling process.
- The AIG bitmap is copied from file to the process
data area by means of I/O monitor call.
- The completion code is prepared.
- The RDF semaphore is released.
- The procedure is exited.
3.3.5 GET ̲ANO ̲EXIST
…0e… ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…0f…
The purpose of this procedure is to check the existence
of a specified ANO.
The check is performed by checking the core resident
ANO ̲EX ̲MAP table which holds a bit for each possible
ANO in the system. If the bit corresponding to the
actual ANO is set, an existence flag is set and returned.
Otherwise a zero is returned.
T̲h̲e̲ ̲p̲r̲o̲c̲e̲d̲u̲r̲e̲ ̲i̲s̲ ̲a̲s̲ ̲f̲o̲l̲l̲o̲w̲s̲:̲
- Call ENTER ̲RDF ̲PAGE procedure.
- Calculate ANO number and MEDE number from the ANO.
- Call TEST ̲MEDE ̲ID procedure
- If the returned existence flag is zero or the ANO
is a MEDE ANO (A, B, E, F, H, K, L, N) with a number
larger than the maximum number allowed, the ANO
is declared as non-existent. Otherwise the ANO
̲EX ̲MAP table is inspected.
- Calculate the offset of the ANO ̲EX ̲MAP table by
using the pointers in the RDF ̲DATA area.
- The offset to the actual MEDE existence bitmap
is calculated.
- The bit number corresponding to the ANO number
is inspected: if it is set, the ANO is existing,
otherwise the ANO is declared as non-existent.
- If the ANO is declared as non-existent, the existence
flag is reset; otherwise it is set.
- The completion code is set and the procedure is
exited.
3.3.6 GET ̲ANO ̲TERM
…0e… ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…0f…
The purpose of this procedure is to find the terminal
number related to a specified ANO.
The ANO in question is supposed to belong to the MEDE,
on which the process resides.
The terminal number is found in the ANO ̲TABLE, which
(for this MEDE) is residing in-core in the RDF ̲DATA
area.
It can be specified whether the logical or actual logical
terminal number shall be returned. (The logical terminal
number determines the terminal, which the ANO originally
is conncted to. The actual logical terminal number
defines the terminal to which the ANO is currently
connected. The 2 numbers are different if the ANO in
question has been rerouted, ref. chapter 3.3.12).
T̲h̲e̲ ̲p̲r̲o̲c̲e̲s̲s̲i̲n̲g̲ ̲i̲s̲ ̲a̲s̲ ̲f̲o̲l̲l̲o̲w̲s̲:
- Calculate ANO number and MEDE number from the ANO.
- Call the ENTER ̲RDF ̲PAGE procedure.
- If the logical terminal number is wanted (indicated
by a MEDE number less than 27), the terminal number
is found in the ANO ̲TABLE at a byte offset equal
to the ANO number. If this number equals zero,
the terminal does not exist.
- If the actual terminal number is wanted, the terminal
number is found in the ALT ̲TABLE at the offset
equal to the ANO number minus one.
- The terminal number is returned in the process
work area.
- The completion code is set up and the procedure
is exited.
3.3.7 GET ̲AIG ̲EXIST
…0e… ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…0f…
The purpose of this procedure is to determine whether
an AIG exists or not. The result is delivered as an
existence flag.
T̲h̲e̲ ̲p̲r̲o̲c̲e̲s̲s̲i̲n̲g̲ ̲i̲s̲ ̲a̲s̲ ̲f̲o̲l̲l̲o̲w̲s̲:
- Call the ENTER ̲RDF ̲PAGE procedure.
- Calculate the offset to the in-core AIG ̲EX table
(by using pointers in the RDF ̲DATA area).
- If AIG ID is entered as parameter the procedure
scans through the AIG ̲EX table to find a possible
match. If logical AIG no. is entered, the procedure
uses this number as index in the AIG ̲EX table.
If match is found or the indexed location contains
a non-zero value, the existence flag is set.
- The AIG ID, logical AIG number and number of existing
NATO AIGs are returned in the process work area.
- The completion code and existence flag are set
up and the procedure is exited.
3.3.8 GET ̲MEDE ̲ID
…0e… ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…0f…
The purpose of this procedure is to determine the MEDE
ID of the MEDE on which this particular program is
running. The MEDE ID is a configuration parameter located
in the critical region CONFIG. This ID was at system
initialization copied by the RDF ̲INIT process into
the RDF ̲DATA area.
The procedure takes the MEDE ID from the RDF ̲DATA area
and returns it to the calling process.
3.3.9 GET ̲TERM ̲ID
…0e… ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…0f…
The purpose of this procedure is to convert a specified
logical terminal on a specified MEDE to a terminal
ID (of 3 ASCII characters).
T̲h̲e̲ ̲p̲r̲o̲c̲e̲s̲s̲i̲n̲g̲ ̲i̲s̲ ̲a̲s̲ ̲f̲o̲l̲l̲o̲w̲s̲:
- The input MEDE ID (an ASCII) character is converted
to an integer (A = 1, B = 2, E = 5, etc), later
called a MEDE index.
- The procedure ENTER ̲RDF ̲PAGE is called.
- The offset to the TID ̲TAB table on the RDF file
is calculated (from the RDF pointers in the RDF
̲DATA area).
- The offset to the segment of the table describing
the MEDE specified is calculated by adding the
offset previously found to the size of a MEDE segment
multiplied by the actual MEDE number.
- The final offset is found by adding the offset
to the actual terminal number (as each entry is
2 bytes long, the offset is the input terminal
number multiplied by 2).
- The records FILE ̲ADDRESS and BLE are set up.
- The 2 last characters of the logical terminal ID
are copied from the RDF file into memory by an
I/O monitor call.
- The RDF semaphore is released.
- The entire logical terminal ID is generated by
adding the 2 letters read from disk to the input
MEDE ID.
- The completion code is set up and the procedure
is exited.
3.3.10 GET ̲TERM ̲NO
…0e… ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…0f…
The purpose of this procedure is to find the logical
terminal number of a specified logical terminal ID.
T̲h̲e̲ ̲p̲r̲o̲c̲e̲s̲s̲i̲n̲g̲ ̲i̲s̲ ̲a̲s̲ ̲f̲o̲l̲l̲o̲w̲s̲:
- The MEDE ID of the specified terminal is calculated
by extracting the first byte of the 3 byte word
and converting it to a MEDE number.
- The procedure ENTER ̲RDF ̲PAGE is called.
- The offset to the TNO ̲TABLE of the RDF file is
calculated by means of the file pointers in the
RDF ̲DATA area.
- The offset to the segment of the table covering
the actual MEDE terminals is calculated by adding
the offset to the size of a MEDE segment multiplied
by the MEDE number.
- The second letter of the input terminal ID is extracted
and converted to a number (A = 1, B = 2, etc.).
- The offset to the segment of the TNO ̲TABLE covering
this letter is now calculated (by adding the offset
to the MEDE number just calculated multiplied by
the size of a single letter segment).
- The final offset is calculated by adding the number
corresponding to the last character in the terminal
ID to the offset.
- The records FILE ̲ADDRESS and BLE are set up in
the work area of the user process.
- The wanted terminal number is copied from the RDF
file to the user's work area by mans of an I/O
monitor call.
- The RDF semaphore is released.
- Completion code is set up and procedure is exited.
3.3.11 SET ̲ANO ̲EXIST
…0e… ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…0f…
The purpose of this procedure is to enter/remove (specified
by an input parameter) a specified ANO into the in-core
ANO ̲EX table. The insertion/deletion is performed by
setting/resetting the bit corresponding to the ANO
number in the bitmap describing the actual MEDE ANOs.
T̲h̲e̲ ̲p̲r̲o̲c̲e̲s̲s̲ ̲i̲s̲ ̲a̲s̲ ̲f̲o̲l̲l̲o̲w̲s̲:
- The ANO number and MEDE number are calculated from
the ANO.
- The procedure ENTER ̲RDF ̲PAGE is called.
- Calculate the offset to the ANO ̲EX table in the
RDF ̲DATA area.
- The offset of the bitmap belonging to the actual
MEDE number is calculated.
- The bit corresponding to the actual ANO number
is found.
- If the 'update' type requested is 'delete', the
bit is reset; otherwise it is set.
- The completion code is set up and the procedure
is exited.
3.3.12 R̲E̲R̲O̲U̲T̲E̲
The purpose of this procedure is to change the 'actual'
terminal number of a specified 'logical' terminal number
into a new 'actual' terminal number. The change implies
that messages containing an ANO, whose 'logical' terminal
number equals the specified 'logical' terminal number,
from now on will be routed to the 'actual' terminal
number newly specified .
T̲h̲e̲ ̲p̲r̲o̲c̲e̲s̲s̲i̲n̲g̲ ̲i̲s̲ ̲a̲s̲ ̲f̲o̲l̲l̲o̲w̲s̲:
- The procedure ENTER ̲RDF ̲PAGE is called.
- The offset to the ALT ̲TABLE in the RDF ̲DATA area
is calculated (note that only the ALT ̲TABLE of
this MEDE is placed in-core).
- The specified 'actual' terminal number is inserted
in the entry (byte offset = terminal number minus
one) corresponding to the specified 'logical' terminal
number.
- The completion code and is set up and the procedure
is exited.
3.3.13 SET ̲ANO ̲TERM
…0e… ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…0f…
The purpose of this procedure is to enter a specified
terminal number into the in-core resident ANO table
at a place corresponding to the specified ANO.
T̲h̲e̲ ̲p̲r̲o̲c̲e̲s̲s̲i̲n̲g̲ ̲i̲s̲ ̲a̲s̲ ̲f̲o̲l̲l̲o̲w̲s̲:
- The ANO number is extracted from the ANO (8 leftmost
bits).
- The procedure ENTER ̲RDF ̲PAGE is called.
- The pointer to the ANO ̲TABLE is found in the
RDF ̲DATA area.
- The specified terminal number is inserted at the
offset in the table corresponding to the ANO number.
- The completion code is set and the procedure is
exited.
3.3.14 GET ̲SET ̲TAA
…0e… ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…0f…
The purpose of this procedure is to get/insert a "transferred"
ANO from/into the TAA table in the RDF file. The entry
point in the table is defined by the "original" ANO
specified in the call of this function.
T̲h̲e̲ ̲p̲r̲o̲c̲e̲s̲s̲i̲n̲g̲ ̲i̲s̲ ̲a̲s̲ ̲f̲o̲l̲l̲o̲w̲s̲:
- The procedure ENTER ̲RDF ̲PAGE is called.
- The pointer to the TAA table in the RDF file is
fetched from the RDF ̲POINTERS area in in-core RDF
area.
- The offset within the TAA table to the segment
of the table for the MEDE of the original ANO is
calculated.
- The offset within the segment is calculated.
- The records FILE ̲ADDRESS and BLE are set up.
- The two characters of ANO is copied to/from the
RDF file from/to the memory by an I/O monitor call.
- The completion code is set up and the procedure
is exited.
3.4 D̲A̲T̲A̲ ̲O̲R̲G̲A̲N̲I̲Z̲A̲T̲I̲O̲N̲
For the in-core RDF tables and pointers: please refer
to the RDF ̲INIT PROCEDURE PSP, ref. 2.2.
Besides the RDF data extracted from the RDF file, the
data area contains a set of pointers to the in-core
tables and a set of offsets to tables in the RDF file.
P̲o̲i̲n̲t̲e̲r̲s̲ O̲f̲f̲s̲e̲t̲s̲
Ptr. to NODE/MEDE table Offset to ANO ̲EX
Ptr. to ANO existence table Offset to ANO table
Ptr. to AIG existence table Offset to AIG ̲EX table
Ptr. to ANO table
Ptr. to actual-logical conversion table
Offset to ID/logical terminal conversion table
Offset to address table
Offset to actual-logical terminal conversion table
Offset to logical terminal/ID conversion table
The layout of the RDF file is specified in
FIKS DATA I/F REFERENCE, (ref. 2.1), chapter 11.3.
N̲o̲t̲a̲t̲i̲o̲n̲
Format of ANOs in RDF-procedures:
ANO: 1 WORD
1̲5̲ ̲ ̲ ̲ ̲ ̲1̲2̲ ̲ ̲ ̲8̲ ̲ ̲7̲ ̲ ̲ ̲ ̲ ̲0̲ BIT 0.....7 INTEGER
0..256
^ ̲ ̲ ̲ ̲ ̲ ̲^̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲^̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲^ 8....12 NM ̲ID-64
13....15 NOT USED
BY THE
RDF MONITOR
N̲o̲t̲e̲ When updating in-core RDF data area or the RDF
file:
The procedures described in section 3.3.11, 3.3.12,
and 3.3.13 have to be coordinated with the procedures
RESERVE ̲RDF ̲SEMAPHORE
RELEASE ̲RDF ̲SEMAPHORE
in order to ensure consistency of the RDF-file during
update of the file.