DataMuseum.dk

Presents historical artifacts from the history of:

CR80 Wang WCS documentation floppies

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

See our Wiki for more about CR80 Wang WCS documentation floppies

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦061dccebc⟧ Wang Wps File

    Length: 33317 (0x8225)
    Types: Wang Wps File
    Notes: CPS/SDS/005               
    Names: »1059A «

Derivation

└─⟦b282628ca⟧ Bits:30006035 8" Wang WCS floppy, CR 0059A
    └─ ⟦this⟧ »1059A « 

WangText

.…00……00……00……00…2…0a……00……00…2…0b…2…01…2…06…2…07…1…0c…1…0f…1
1 1…07…0…0b…0…0e…0…01…0…02…0…05…/…0a…/…0d…/…0e…/…0f…/…00……86…1                                             …02…           …02…   …02…        

…02…CPS/SDS/005

…02…BMN/810801…02……02…
TABLE MANAGEMENT
…02……02…CAMPS







4.2      T̲M̲P̲ ̲S̲u̲b̲p̲a̲c̲k̲a̲g̲e̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲



4.2.1    T̲a̲b̲l̲e̲ ̲S̲e̲a̲r̲c̲h̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲s̲

         Table search functions perform search on the table
         data maintained by TMP.

         The functions will fulfil the requirements searching
         and updating subprocesses have to table search.

         The functions are designed generally so that they are
         not dependent on the data in a table but only on the
         data structure. This means that the search functions
         contain no specific information about the actual table.
         This information must be read in the table description
         in each case.

         The advantage of the above design is that a new table
         is implemented just by increasing the data base and
         declaring a new table description.



4.2.1.1  F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲

         Table search functions find and read one or more records
         in the tables maintained by TMP.

         The input parameters for search are:

         -   Table identification
         -   Search key address
         -   Number of keys
         -   Search mask
         -   Read Mask
         -   Output address.
         -   Buffer Length

         Table identification is the number of the table description
         which describes the table in which search is to be
         carried out.

         Search key address is the address where search key
         can be read. Search key may be one key or a list of
         same key type.



         Number of keys specifies how many keys there are in
         list.

         Search mask specifies which field to be used as key.

         Read mask is a bit mask telling which fields in output
         record are of interest.

         Output address is the address where the output shall
         be written. The output is one record or one list of
         records for each input key.

         Buffer length specifies length of output buffer.

         Table description contains information about the table
         to be searched in. There exists one table description
         for each access method used at an existing table. This
         means that each table has a description for each way
         it may be accessed.

         The table description may show that first output contains
         only the search key to another table.

         Table search functions consist of five modules.

         The main module controlling and executing the functions
         in the other modules and the other four modules maintaining
         the necessary tasks. The last four modules are described
         at the second level in this functional description.






               Figure 4.2.1.1 Table Search



4.2.1.1.1    C̲o̲m̲m̲u̲n̲i̲c̲a̲t̲i̲o̲n̲

         The communication functions receive requests from a
         SyncEl, send responses to SyncEls and perform read
         and update of table attributes.



4.2.1.1.1.1 R̲e̲c̲e̲i̲v̲e̲ ̲R̲e̲q̲u̲e̲s̲t̲

         Receives a request from the SyncEl where the memory
         search coroutine normally waits when it is inactive.

         If the request does not require disk accesses, the
         memory search functions are activated otherwise it
         is posted onto the disk search functions.



4.2.1.1.1.2 S̲e̲n̲d̲ ̲R̲e̲s̲p̲o̲n̲s̲e̲

         An answer is sent to the process which originally requested
         the function now completed.



4.2.1.1.1.3 S̲e̲t̲ ̲T̲a̲b̲l̲e̲ ̲A̲t̲t̲r̲i̲b̲u̲t̲e̲s̲

         Table attributes are set to specified value. Only supervisor
         word in the table description may be updated by this
         function.



4.2.1.1.1.4 G̲e̲t̲ ̲T̲a̲b̲l̲e̲ ̲A̲t̲t̲r̲i̲b̲u̲t̲e̲s̲

         The table attributes in table description are read
         and sent to calling process.

         The table attributes are table ID, table load status,
         time stamp and supervisor word.





4.2.1.1.2    S̲o̲r̲t̲ ̲K̲e̲y̲s̲

         Calling Subprocess access rights are checked.

         The keys in input parameters are linked in a single
         chained list in sorted order after they are syntax
         and consistence checked.

         Input:  Data Start Addr

                 No. of Keys

                 Key Type

                 Record Type.

         Output: List of Sorted Keys

                 CC

                 -   Complete

                 -   Syntax error

                 -   Inconsistent data.




4.2.1.1.2.1 C̲o̲m̲p̲a̲r̲e̲ ̲S̲t̲r̲i̲n̲g̲

         Two data strings are compared and the result tells
         whether the first of them is the first in sorted order
         or not.

         Input:  Text String One

                 Text String Two

         Output: Posistion

                 -   First

                 -   Same

                 -   Last



                 CC

                 -   Complete

                 -   Syntax error.



4.2.1.1.3 M̲e̲m̲o̲r̲y̲ ̲T̲a̲b̲l̲e̲ ̲S̲e̲a̲r̲c̲h̲

         A record in a table or table part in memory is found
         and the wanted information is read and compressed to
         the required information specified by a read mask.
         Finally, the masked data are written in an area specified
         by caller.

         The memory table search main function requests one
         search by one of its support functions and receives
         an answer when the searched record is found or it is
         determined that it is non-existent.

         If a record is found, the main function calls the mask
         function. After return from mask function, a check
         is made as to whether the search is complete or whether
         it must be continued.









           Figure 4.2.1.1.3 Memory Table Search



4.2.1.1.3.1 B̲i̲n̲a̲r̲y̲ ̲S̲e̲a̲r̲c̲h̲

         Binary search will either find the record specified
         by input key or if it was non-existent, find where
         it should have been placed.

         Input:  Search Key

                 -   Search key to table

                 Table Body

                 -   Start address of table

         Output: Address

                 -   Address of searched record or the address
                     of where it should have been.

                 CC

                 -   Complete

                 -   Not found

                 -   Fail



4.2.1.1.3.2 D̲i̲r̲e̲c̲t̲ ̲S̲e̲a̲r̲c̲h̲

         A key to a table is converted to the address of the
         searched record.

         Input:  Search Key

                 -   Key to searched record

                 Table Body

                 -   Start address of table



         Output: Address

                 -   Address of searched record

                 CC

                 -   Complete

                 -   Fail



4.2.1.1.3.3 S̲e̲q̲u̲e̲n̲t̲i̲a̲l̲ ̲S̲e̲a̲r̲c̲h̲

         Sequential search reads the records in a table from
         a specified start address.

         For each record, a primary or secondary search key
         is compared with a specified simple field or with all
         subfields in a repeated field of specified type. If
         the key is primary, a return is made when the record
         is found or it is determined where it should have been.
         If the key is secondary, a return is made when the
         first record with a key identical to search key is
         found. It may be specified that a secondary key shall
         only be searched in first record after start address.

         Input:  Search Key

                 -   Search key to table

                 Table Body

                 -   Start address of table

                 One Record

                 -   Boolean



         Output: Address

                 -   Address of searched record or the address
                     of where it should have been.

                 CC

                 -   Complete

                 -   Not found

                 -   Fail



4.2.1.1.3.4 M̲a̲s̲k̲ ̲D̲a̲t̲a̲

         A data record is compressed to the required information
         by using the input read mask.

         If corresponding bit in read mask is set, the record
         field is kept, otherwise it is removed.

         Input:  Record

                 -   The record to be compressed

                 Read Mask

                 -   The input read mask

         Output: Record

                 -   The compressed record

                 CC

                 -   Complete

                 -   Fail





4.2.1.1.4    D̲i̲s̲k̲ ̲T̲a̲b̲l̲e̲ ̲S̲e̲a̲r̲c̲h̲

         Disk table search functions perform search in tables
         residing on disk.

         The searched block may be identified by means of search
         key, table identification and an index table or it
         may be identified only by the search key and table
         identification.

         When the block is identified and read into memory,
         the rest of the search will be almost identical to
         memory search. The only difference is when the key
         next to the last key at a block is to be found. In
         this case a new block may have to be read into the
         memory if it is not the last block in the table.










            Figure 4.2.1.1.4 Disk Table Search





4.2.1.1.4.1 I̲n̲d̲e̲x̲ ̲B̲l̲o̲c̲k̲

         The block where a given record should be found, if
         it exists, is identified by means of an index table.

         Input:  Search Key

                 -   The search key to be found

         Output: Block number

                 CC

                 -   Complete

                 -   Fail



4.2.1.1.4.2 D̲i̲r̲e̲c̲t̲ ̲B̲l̲o̲c̲k̲

         The block where a given record is residing is identified
         by means of an arithmetic determination.

         Input:  Key

                 -   The search key to be found

         Output: Block number

                 CC

                 -   Complete

                 -   Fail





4.2.1.1.4.3 R̲e̲a̲d̲ ̲D̲i̲s̲k̲ ̲B̲l̲o̲c̲k̲

         The specified block is read into memory.

         Before the I/O system is accessed, the number of the
         block in memory is compared with the input block number.
         If the numbers are identical, a return is made, otherwise
         the block number is converted to a byte address within
         a file and read request is made to the I/O system.

         Input:  Block number

         Output: Disk block read into memory

                 CC

                 -   Complete.

                 -   Fail



4.2.1.2  S̲o̲f̲t̲w̲a̲r̲e̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲e̲

         Table search functions are implemented as a set of
         procedures executed in user mode by a coroutine.

         The coroutine is created in two incarnations using
         the same code. 

         The two coroutines differ in the way that it is always
         the memory search coroutine which receives the requests
         from the SyncEl via an operation semaphore and because
         the memory search coroutine has no buffer into which
         it can read disk blocks, it must pass the disk search
         requests on to the operation semaphore where the disk
         search coroutine waits when it is inactive.

         Each module is implemented as a set of procedures calling
         procedures in their own module and in other modules.





4.2.1.3  D̲a̲t̲a̲ ̲F̲l̲o̲w̲ ̲a̲n̲d̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲L̲o̲g̲i̲c̲

         The data flow is shown in figures 4.2.1.3-1 to 3. Only
         the main flows are described as the simpler ones can
         easily be identified by reading the functional description.

         The control logic is shown in figure 4.2.1.3-4 and
         5. The procedure on the left controls the processing
         of the next four procedures which again control the
         lower level procedures.

         Every search may consist of several calls of the lower
         level procedures.









              Figure 4.2.1.3-1 Table Search







           Figure 4.2.1.3-2 Memory Table Search







            Figure 4.2.1.3-3 Disk Table Search







              Figure 4.2.1.3-4 Control Logic







              Figure 4.2.1.3-5 Control Logic



4.2.1.4  S̲u̲b̲p̲a̲c̲k̲a̲g̲e̲ ̲D̲a̲t̲a̲

         Table search functions operate only on TMP common data
         structures.



4.2.1.5  S̲u̲b̲p̲a̲c̲k̲a̲g̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲

         Table search functions interface to table update subpackage
         and TMP monitor subpackage.

         The update subpackage requests table search functions
         via one operation semaphore and receives answers via
         another.

         TMP monitor sends requests to the SyncEl where the
         search subpackage receives them and receives the response
         from the SyncEl where search subpackage has sent them
         and then passes on the response to the applications.
         Ref. figure 4.2.1.5-1.







           Figure 4.2.1.5 Subpackage Interface



4.2.2    T̲a̲b̲l̲e̲ ̲U̲p̲d̲a̲t̲e̲

         Table update subpackage performs update at the tables
         maintained by TMP.

         Some Updates may require suspension of the search coroutines
         during the final stage where the update is made effective.

         When a table update is complete, the associated table
         description is time stamped.



4.2.2.1  F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲

         Table update is broken down into six modules, one module
         scheduling tasks to the other five.
         (Ref. fig. 4.2.2.1-1).

         The scheduling module is the one at highest level and
         the other five are shown at second level.

         The scheduling module requests funtions by the other
         modules and receives return parameters making it able
         to decide what is to happen next.

         The communication module receives requests from a SyncEl
         and returns response to the requesting processes via
         another SyncEl.









          Figure 4.2.2.1-1 Functional Breakdown



4.2.2.1.1    S̲e̲a̲r̲c̲h̲

         The search module identifies start address of next
         record to be updated by using the memory search and
         disk search modules from the search package.



4.2.2.1.1.1 M̲e̲m̲o̲r̲y̲ ̲S̲e̲a̲r̲c̲h̲

         Has same functions as memory search described in search
         subpackage. (Ref. 4.2.1.1.3).



4.2.2.1.1.2 D̲i̲s̲k̲ ̲S̲e̲a̲r̲c̲h̲

         Has same function as disk search described in search
         subpackage. (Ref. 4.2.1.1.4).


4.2.2.1.2    U̲p̲d̲a̲t̲e̲ ̲R̲e̲c̲o̲r̲d̲

         A specified record is removed from a block, inserted
         into a block or updated with one or more new fields.

         If a remove or insert involves a record in an overflow
         area the disk block in overflow is updated as well
         as the overflow block.



4.2.2.1.2.1 U̲p̲d̲a̲t̲e̲ ̲D̲a̲t̲a̲

         The data in an existing record are updated.

         The fields to be updated may be one or more fields
         updated to the specified value. The fields are specified
         by a bit mask or the whole record may be overwritten
         with an identical data structure.

         If the record contains repeated fields, one subfield
         may be removed and another may be inserted. After each
         remove or insert, the repeated field is reorganized.





         Input:  Address

                 -   Address of a record

                 New value

                 -   Record or field value

                 Write mask

                 Old value

                 -   Field value only used by
                     changing repeated field.

                 Record Type

         Output: CC

                 -   Complete

                 -   Fail



4.2.2.1.2.2 R̲e̲m̲o̲v̲e̲ ̲R̲e̲c̲o̲r̲d̲

         The record at specified address is removed by marking
         it as unused.

         Input:  Address

                 -   Address of a record

         Output: CC

                 -   Complete

                 -   Fail





4.2.2.1.2.3 I̲n̲s̲e̲r̲t̲ ̲R̲e̲c̲o̲r̲d̲

         A new record is inserted at the specified position.
         If there are no more free places in current block the
         record is not inserted, but the record with primary
         key next to it is marked with overflow indicator. The
         new record is then put in an overflow block.

         Insert may cause a block re-organization. This is performed
         by this function for itself.

         Input:  Record

                 -   The new record

                 Address

                 -   Address of the record next to the new position

         Output: CC

                 -   Complete

                 -   Fail



4.2.2.1.3    U̲p̲d̲a̲t̲e̲ ̲D̲i̲s̲k̲

         An updated block is written on disk in two copies to
         ensure that a table is always recoverable.

         First, a safety copy is written at a defined place
         on disk. The start and end of this block are identical
         so it can be seen whether it is complete, by reading
         it.

         On the safety copy, it can also be read which block
         it shall replace.

         After the safety copy is written, the original disk
         block is overwritten with the new version.



         Input:  Block Number

                 -   Original block number

                 Address

                 -   The address of block in memory

                 Length

                 -   The length of memory block

         Output: CC

                 -   Complete

                 -   Fail



4.2.2.1.4    S̲u̲p̲p̲o̲r̲t̲

         The support functions are functions used on special
         occasions. They all require a lot of resources.



4.2.2.1.4.1 R̲e̲o̲r̲g̲a̲n̲i̲z̲e̲

         A table is re-organized by copying the whole table
         entry by entry. Entries marked as removed are not copied
         and entries from overflow area are written at their
         correct positions in the table.

         For each re-organized memory block, the corresponding
         memory index is updated.

         If the table is organized with a secondary search key,
         the relation between secondary search key and table
         is also updated. If a system failure happens during
         a re-organization, the re-organization must start from
         the beginning after a restart.

         The re-organization may be stopped by a command from
         supervisor.





4.2.2.1.4.2 B̲a̲c̲k̲u̲p̲

         A backup copy of a file is made by copying it to an
         off-line volume where it will be catalogued under same
         name as in the on-line volume.



4.2.2.1.4.3 R̲e̲-̲l̲o̲a̲d̲

         A backup copy of a file is copied from an off-line
         volume to the on-line volume.

         The file is copied into the file of same name as it
         is catalogued under at the off-line volume.



4.2.2.1.5    C̲o̲m̲m̲u̲n̲i̲c̲a̲t̲i̲o̲n̲

         The communication functions receive requests and send
         responses to requesting processes.



4.2.2.1.5.1 R̲e̲c̲e̲i̲v̲e̲ ̲R̲e̲q̲u̲e̲s̲t̲

         Receives a request from the SyncEl where the update
         coroutine waits when it is inactive.



4.2.2.1.5.2 S̲e̲n̲d̲ ̲R̲e̲s̲p̲o̲n̲s̲e̲

         An answer is sent to the process which requested the
         function now completed.



4.2.2.2  S̲o̲f̲t̲w̲a̲r̲e̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲e̲

         Table update functions are performed by two coroutines
         executing a set of procedures in user mode. The procedures
         are implemented in update and search sub-packages.
         The procedures are executed in various sequences and
         each sequence may be repeated several times. 



         If the request is reorganize or backup/reload, the
         request is passed on to the support coroutine via an
         operation semaphore.

         The update and support coroutines use the same working
         area. This shared area is reserved by means of a simple
         semaphore.

         The update coroutine has first priority to the working
         area and the two semaphores previously described as
         well as two flags are used to control this synchronization.

         After completing a function, the coroutine returns
         a response to requesting process via a SyncEl by executing
         the "send response" function.

         The table update module and the support module are
         the coroutines and the other four modules are procedure
         sets executed by the coroutines.



4.2.2.3  D̲a̲t̲a̲ ̲F̲l̲o̲w̲ ̲a̲n̲d̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲L̲o̲g̲i̲c̲

         Fig. 4.2.2.3-1 shows the data flow for the update module.

         The other modules have such a simple data flow that
         it can be easily identified in the functional breakdown
         description

         Fig. 4.2.2.3-3 shows the control logic of table update
         coroutine and its nearest environments. It is shown
         how the coroutines receive their requests and sends
         their responses to applications when an update is completed.
         Furthermore, it can also be seen how a search request
         may be sent to the table search subpackage and where
         the answer to this request is received.

         Fig. 4.2.2.3-4 shows the control logic inside the coroutine
         such as which procedures call other procedures and
         which procedures communicate with other subpackages.























































               Fig. 4.2.2.3-1…01…Table Update

















































                      Fig. 4.2.2.3-2
















































                      Fig. 4.2.2.3-3


4.2.2.4  T̲a̲b̲l̲e̲ ̲U̲p̲d̲a̲t̲e̲ ̲D̲a̲t̲a̲

         Table Update subpackage manipulates only TMP common
         data.



4.2.2.5  S̲u̲b̲p̲a̲c̲k̲a̲g̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲

         Table Update subpackage interfaces TMP monitor by receiving
         requests and sending responses.

         Table Update subpackage interfaces table search functions
         by using procedures in this subpackage and by requesting
         a normal search via operation semaphores.  Ref. fig.
         4.2.2.5-1.




















































                      Fig. 4.2.2.5-1


4.2.3    T̲M̲P̲ ̲M̲o̲n̲i̲t̲o̲r̲

         TMP Monitor is a subpackage maintaining all interfaces
         to application processes.



4.2.3.1  F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲

         The TMP Monitor subpackage is used by application packages
         by all accesses to TMP.

         Most requests are passed on to the TMP process but
         "system parameter read" and all global number series
         accesses which require fast access are performed by
         TMP Monitor itself.

         All accesses to TMP Monitor except GNS access are passed
         through System Call Monitor and must thus follow the
         general System Call Monitor interface.

         TMP Monitor is split into four modules.  The first
         maintaining GNS.

         The second maintaining system parameter read.

         The third maintaining interface to TMP process.

         The fourth maintaining function detection and scheduling
         tasks to the other three modules.



















































                      Fig. 4.2.3.1-1


4.2.3.1.1    D̲e̲t̲e̲c̲t̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲

         When a request is received the function code is evaluated
         to decide what function shall be activated.



4.2.3.1.2    P̲r̲o̲c̲e̲s̲s̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲

         The process interface passes function requests on to
         TMP process and delivers output from the TMP process
         to the application processes.

         Input:  Function Code
                 Input Parameters

         Output: CC



4.2.3.1.2.1  R̲e̲q̲u̲e̲s̲t̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲

         A function request is passed on to the TMP process
         by sending it to one of the SyncEls. where the TMP
         process receives its requests.  The SyncEl. is selected
         in accordance with the requested function type.  The
         input parameters are supplied with additional information
         telling what process has made the request.



4.2.3.1.2.2  D̲e̲l̲i̲v̲e̲r̲ ̲O̲u̲t̲p̲u̲t̲

         The output sent from TMP process to a Sync. El is delivered
         to the application process associated to the Sync.
         El.



4.2.3.1.3    G̲e̲t̲ ̲S̲y̲s̲t̲e̲m̲ ̲P̲a̲r̲a̲m̲e̲t̲e̲r̲

         Reads and delivers a specified system parameter to
         caller. System call monitor ensures that parameters
         are locked under read.



         Input:  Parameter #

         Output: Parameter value

                 CC



4.2.3.1.3.1 F̲i̲n̲d̲ ̲P̲a̲r̲a̲m̲e̲t̲e̲r̲

         The specified system parameter start address and length
         are found.

         Input:  Parameter #

         Output: Start Address

                 Length

                 CC



4.2.3.1.3.2 D̲e̲l̲i̲v̲e̲r̲ ̲P̲a̲r̲a̲m̲e̲t̲e̲r̲

         The parameter specified by start address and length
         is delivered to caller.

         If the length exceeds two words, it is delivered by
         writing it at a caller specified address, otherwise
         it is delivered in two registers.

         Input:  Start Address
                 Length
                 Output Address

         Output: Parameter Value

                 CC



4.2.3.1.4    G̲e̲t̲ ̲G̲l̲o̲b̲a̲l̲ ̲N̲u̲m̲b̲e̲r̲ ̲S̲e̲r̲i̲e̲s̲

         Reads specified global no. series and delivers the
         value to caller in two registers. The value is increased
         before read if it is specified by caller.



         The output is delivered in decimal ASCII representation.
         If it is a three digit number, the first byte will
         be the ASCII representing a space.

         A three digit number will always wrap around to 1 after
         999 and a four digit number will always wrap around
         to 1 after 9999.

         While GNS values are increased and read, the number
         series are locked for all other access.

         Input:  GNS ID.

                 Increase

                 -   Boolean telling if next
                     no is wanted 

         Output: GNS value

                 -   Specified as decimal ASCIII

                 CC



4.2.3.1.4.1  F̲i̲n̲d̲ ̲G̲l̲o̲b̲a̲l̲ ̲N̲u̲m̲b̲e̲r̲ ̲S̲e̲r̲i̲e̲s̲

         Determines the address of the specified GNS.

         Input:  GNS ID.

         Output: Address

                 -   Address of the word containing the GNS

                 CC



4.2.3.1.4.2 I̲n̲c̲r̲e̲a̲s̲e̲ ̲G̲l̲o̲b̲a̲l̲ ̲N̲u̲m̲b̲e̲r̲ ̲S̲e̲r̲i̲e̲s̲

         The specified GNS is increased by one if it is less
         than wrap around value  Otherwise it is set to value
         "one".



         Input:  Address

                 -   Address of the word containing the GNS

         Output: CC



4.2.3.1.4.3 D̲e̲l̲i̲v̲e̲r̲ ̲G̲l̲o̲b̲a̲l̲ ̲N̲u̲m̲b̲e̲r̲ ̲S̲e̲r̲i̲e̲s̲

         The GNS is delivered to caller in a register.

         Before delivery, the GNS value is converted to ASCIII.

         Input:  Address

                 -   Address of the word containing the GNS.

         Output: GNS.

                 -   GNS value in two registers in digital ASCII

                 -   CC



4.2.3.1.5    S̲e̲t̲ ̲G̲l̲o̲b̲a̲l̲ ̲N̲u̲m̲b̲e̲r̲ ̲S̲e̲r̲i̲e̲s̲

         The input serial no. is converted to integer and the
         specified serial no. is set to specified value.  Both
         the serial no. value and the first bit telling how
         many digits the serial no. shall be represented by
         are set to the specified value. If first byte in input
         was "ASCII space" the serial no. is specified to have
         three digits.

         Input:  GNS ID.

                 GNS Value

                 -   Digital ASCII

         Output: CC





4.2.3.1.5.1 F̲i̲n̲d̲ ̲G̲l̲o̲b̲a̲l̲ ̲N̲u̲m̲b̲e̲r̲ ̲S̲e̲r̲i̲e̲s̲

         Ref. 4.2.3.1.3.1.



4.2.3.1.5.2 W̲r̲i̲t̲e̲ ̲G̲l̲o̲b̲a̲l̲ ̲N̲u̲m̲b̲e̲r̲ ̲S̲e̲r̲i̲e̲s̲

         Writes the new GNS value at specified address.

         Before write, the GNS value is converted to integer.


         During the write operation, the number series is locked
         for all other access.

         Input:  GNS value

                 Address

         Output: CC



4.2.3.2  S̲o̲f̲t̲w̲a̲r̲e̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲e̲

         TMP monitor consists of two independent software parts.

         The one is a procedure with an entry for each function
         callled by System Call Monitor. This procedure executes
         in system mode under System Call Monitor. The other
         is a monitor procedure with two entries - one for get
         no. series and one for set no series.



4.2.3.2.1    D̲e̲t̲e̲c̲t̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲

         Detect Function is a procedure used to detect the function
         called from system call monitor. After detection, the
         requested function is performed by the procedure selected
         by the detection.





4.2.3.2.2    P̲r̲o̲c̲e̲s̲s̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲

         Process interface has the normal entries for a service
         system under System Call Monitor. Each entry is implemented
         as a procedure.



4.2.3.2.2.1 I̲n̲i̲t̲

         The init procedure sends input parameters and SOCB
         reference to a Sync. Element. The Sync. Element is
         selected in accordance with the requested function.

         After init, the SOCB will always be pending.



4.2.3.2.2.2 A̲n̲s̲w̲e̲r̲ ̲R̲e̲c̲e̲i̲v̲e̲d̲

         The answer received procedure is called with an Information
         Element from a SyncEl and a list of pending SOCBs as
         input parameters. The SOCB referred in the Info. Element
         is found in the SOCB list. The completion code from
         the Information Element is put into the SOCB and SOCB
         Cs is set to done. Finally the SOCB ref. is delivered
         to System Call Monitor.

4.2.3.2.3 C̲o̲m̲p̲l̲e̲t̲e̲

         The complete procedure is called with a SOCB ref. as
         input parameter. The completion code in the SOCB is
         delivered to caller in a register.



4.2.3.2.2.4 C̲a̲n̲c̲e̲l̲

         A cancel request is not passed on to TMP process and
         has thus no effect.





4.2.3.2.3    G̲e̲t̲ ̲S̲y̲s̲t̲e̲m̲ ̲P̲a̲r̲a̲m̲e̲t̲e̲r̲s̲

         The system parameters are read by TMP monitor itself.

         The read request is made through System Call Monitor
         and must thus follow the general System Call Monitor
         interface.



4.2.3.2.3.1 I̲n̲i̲t̲ ̲G̲e̲t̲ ̲P̲a̲r̲a̲m̲e̲t̲e̲r̲

         The init procedure determines where the parameter start
         address is and how long the parameter is. These two
         facts are put into the SOCB specified by call together
         with caller information parameters necessary for completion.
         Finally, the SOCB Cs is set to done.



4.2.3.2.3.2 A̲n̲s̲w̲e̲r̲ ̲R̲e̲c̲e̲i̲v̲e̲d̲ ̲G̲e̲t̲ ̲P̲a̲r̲a̲m̲e̲t̲e̲r̲

         Because SOCB is never pending after init, the answer
         received has no meaning and will thus be an empty entry.



4.2.3.2.3.3 C̲o̲m̲p̲l̲e̲t̲e̲ ̲G̲e̲t̲ ̲P̲a̲r̲a̲m̲e̲t̲e̲r̲s̲

         The complete procedure delivers the parameter specified
         in the SOCB to the caller.

         If the parameter length exceeds two words, it is written
         at an address specified by caller and stored in the
         SOCB by init, otherwise the parameter is delivered
         in two registers. The completion code will always be
         delivered in a register.



4.2.3.2.3.4 C̲a̲n̲c̲e̲l̲ ̲G̲e̲t̲ ̲P̲a̲r̲a̲m̲e̲t̲e̲r̲

         Because the SOCB is never pending after init, cancel
         has no meaning and will thus be an empty entry.





4.2.3.2.4    G̲l̲o̲b̲a̲l̲ ̲N̲u̲m̲b̲e̲r̲ ̲S̲e̲r̲i̲e̲s̲

         GNS is implemented as a monitor procedure with two
         entries, one for "get GNS" series and one for "set
         GNS".

         All communications are made via three registers. For
         input used for function code, serial no. id. and serial
         no. value. For output used for serial no. value and
         completion code. This monitor procedure is called directly
         by the applications

         The procedures are identical to the functions described
         in 4.2.3.1.4 and 5.


4.2.3.3  D̲a̲t̲a̲ ̲F̲l̲o̲w̲ ̲a̲n̲d̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲L̲o̲g̲i̲c̲

         The Control Logic is shown in figure 4.2.3.3-1.

         The blocks are identical to the software component
         and the references in the blocks refer to the functional
         description (ref. 4.2.3.1).









              Figure 5.2.3.3-1 Control Logic




4.2.3.4  S̲u̲b̲p̲a̲c̲k̲a̲g̲e̲ ̲D̲a̲t̲a̲

         The subpackage data may be split into two groups. The
         data used by GNS management and the data used by TMP
         process interface.



4.2.3.4.1    G̲l̲o̲b̲a̲l̲ ̲N̲u̲m̲b̲e̲r̲ ̲S̲e̲r̲i̲e̲s̲ ̲D̲a̲t̲a̲

         The GNS is stored in an integer array indexed by "GNS
         ID".

         Each number series is contained in one word where the
         14 least significant bits show the GNS value and the
         most significant bit indicates whether the no. has
         three or four digits.



4.2.3.4.2    I̲n̲t̲e̲r̲f̲a̲c̲e̲ ̲D̲a̲t̲a̲

         The only data structure maintained by the interface
         part of this package is the structure in the SOCBs
         used by interface to System Call Monitor.

         There are two structures: the one used by requests
         to TMP process and the other used by parameter read.

         In the case of requests to TMP process the SOCB contains
         only a completion code, ref. fig. 4.2.3.4.2-1.

         In the case of parameter read, the SOCB contains a
         parameter address, a parameter length and a completion
         code, ref. fig. 4.2.3.4.2-2.







         Figure 4.2.3.4.1 Global No. Series Array




4.2.3.5  S̲u̲b̲p̲a̲c̲k̲a̲g̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲

         TMP Monitor interfaces to table search and table update
         subpackages via SyncEls. The interface is always such
         that a user request is passed on to another subpackage
         by sending input parameters, requesting process identification
         and SOCB reference to the SyncEl associated with the
         other subpackage.

         Answers to the requests are received via the System
         Call Monitor, ref. fig. 4.2.3.5-1









    Figure 4.2.3.5-1 TMP Monitor Subpackage Interface




4.3      M̲E̲M̲O̲R̲Y̲ ̲L̲A̲Y̲O̲U̲T̲

         The storage needed for TMP is split into three different
         parts:

         -   Table Storage
         -   Working Storage
         -   Code Storage.

         The sizes of these three parts are described in sections
         4.3.1-3.

         The common storage size is as follows:

                                Memory            Disk
         Table Storage           9.9 kbytes        900 kbytes
         Working Storage        10.1 kbytes        400 kbytes
                                 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲        ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
                                                  ̲ ̲

                                20.0 kbytes       1300 kbytes
…0f…                                ===========       ===========…0e…

         Code Storage           12.0 kbytes
…0f…                                ===========



4.3.1    T̲a̲b̲l̲e̲ ̲S̲t̲o̲r̲a̲g̲e̲

         Fig. 4.3.1-1 overleaf shows how much disk storage and
         memory storage each table group requires.

         The values indicating the amount of storage used for
         memory index and secondary search key are include in
         columns 1 and 2.

         The sums in columns 1 and 2 thus indicate the total
         amount of disk storage and memory storage required
         by TMP data.





       Storage Type      Disk        Memory      Memory      Secondary
  Table                                                      Index     Search
                                                                       Key
                         (kbytes)    (bytes)     (bytes)     (kbytes)
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

  AIG table              105           68          68        
                                                             
                                                             
                                                             
                                                             1.6

  PLA tables             378         3738        2410        
                                                             
                                                             
                                                             15

  RI tables               36          492         130

  Circuit tables                      192

  SIC tables             270          360         360

  SDL tables              36

  SCD table                3

  Command table           18           30          30

  Operating table          3

  Technical Error table    3

  Terminal Profile         3

  Device Profile           3

  Channel Profile          3

  User Profile            15           20          20

  Configuration tables    12         3000

  System Parameters 
  and GNS                  3         2000
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

  All Tables             891         9900
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲



              Fig. 4.3.1-1  Table Storage





4.3.2    W̲o̲r̲k̲i̲n̲g̲ ̲S̲t̲o̲r̲a̲g̲e̲

         The total working storage is a sum of the storage needed
         for TMP Monitor and the three coroutines.

         These three parts require storage as follows:

                                Memory            Disk
                                (bytes)           (kbytes)
         TMP Monitor              100               0
         Memory Search           1000               0
         Disc Search             4000               0
         Update                  5000             400
                                 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲        ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
                                                  ̲

                                10100 bytes       400 kbytes
…0f…                                ===========       ==========…0e…



4.3.3    C̲o̲d̲e̲ ̲S̲t̲o̲r̲a̲g̲e̲

         The TMP code consists of 15 modules, each including
         200 statements on average.

         One swell statement is on average 4 bytes.

         Required storage: 15 x 200 x 4 = 12 kbytes
                                           …0f…=========…0e…

         The code resides in memory.