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

⟦85960017d⟧ Wang Wps File

    Length: 45699 (0xb283)
    Types: Wang Wps File
    Notes: CPS/SDS/028               
    Names: »1668A «

Derivation

└─⟦0c861a53d⟧ Bits:30006079 8" Wang WCS floppy, CR 0122A
    └─ ⟦this⟧ »1668A « 

WangText

…00……00……00……00……00…,…02……00……00…,
+…09…+…0e…+…0f…+…00…+…06…*…0a…*…0e…*
)…09…)…0f…)
)…07…(…0e……86…1                                             …02…           …02…   …02…        

…02…CPS/SDS/028

…02…840901…02……02… 
I/O CONTROL  
DETAILED DESIGN SPECIFICATION ISSUE 1 CAMPS








4.1.5    C̲o̲m̲m̲o̲n̲ ̲P̲a̲c̲k̲a̲g̲e̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         In this section components of a generalized handler
         are described.  In the subpackage specifications, protocol
         handlers are then described referring to the description
         of the generalized handler components.

         IOC implements protocol handlers of two types, namely:

         -   High level protocols with full data I/O interface
             to TMS.

         -   Mid level protocols with control interface to TMS
              and data interface to high level protocols.

         For further description of this hierarchy of protocols
         (called subdevices) please refer to the product specifications
         for the DAMOS components:

         Terminal Management System,
         LTU Handler,
         TDX Handler.

         The generalized handler consists of the following components:

         Inputter, receiving data on an LTU, LTUX channel or
                   from a mid-level protocol.

         Outputter, sending data on an LTU, LTUX channel or
         to
                    a mid-level protocol.

         Protocol Controller (PROT ̲CONT) sending protocol
                     commands to, receiving responses from LTU,
                     LTUX firmware or to/from a mid-level protocol.

         Controller implementing the TMS control interface.

         User interface implementing the TMS data I/O interface
                     (high level protocols only).

         Subdevice interface implementing the interface to high
         
                     level protocols (mid level protocols only).


         Inputter, Outputter, Protocol Controller and Controller
         are totally generalized and named as member in a General
         Handler Subpackage.

         Communication between protocol layers is performed
         by means of data buffers linked together in socalled
         LDUs, refer fig. 4.1.5-1 and 4.1.5-2.

         The buffers are described by a descriptor BUFFER ̲ENTRY
         (refer section 4.1.4).

         The actual size of a buffer at time of hand-over to
         another protocol level is loaded in the BUFFER ̲ENTRY
         field BUFFER ̲SIZE.

         The data transferred may be of type CONTROL or of type
         DATA.  In this design control is always transferred
         in single buffers (type ENTIRE ̲LDU) where data may
         be transferred in single buffers or in linked buffers.

         DATA transferred has the first byte reserved, this
         is the socalled LDU header, used to hold a sequence
         number called LDU.

         CONTROL transferred to a lower level may be of various
         types indicated in the first byte.

         -   Input request, requesting lower level for next
             LDU.  The input request may contain information
             specifying the request.








               Fig. 4.1.5-1…01…Buffer Linkage






                Fig. 4.1.5-2…01…Single Buffer


         -   Protocol Command, used to configure the lower level
             or the LTU/LTUX firmware.

         -   Cancel input request used to cancel already requested
             input.

         -   Cancel output request used to cancel output in
             transfer.

         Control transferred from a lower level (called Status)
         may be of one of the following types:

         -   Transmission status, giving result of a transmitted
             LDU.

         -   Reception status, giving abnormal result on input
             or

         -   Protocol status being the lower level response
             to a Protocol Command.

         -   Interrupt giving asynchronous information about
             an event.

         Below the generalized handler is presented in the form
         of a module description.  Whereever a component is
         used in the description of a protocol handler, the
         module name is reused with a prefix.



4.1.5.0  C̲o̲m̲m̲o̲n̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲ ̲M̲o̲d̲u̲l̲e̲s̲

         In this module are collected procedures wich are used
         in other modules and are to be common for these.

         The implemented functions are:

         Queue
         Queue ̲prioritized
         Get ̲TMS ̲buffer ̲type
         Get ̲LTU ̲buffer ̲type
         Send ̲operations ̲reply
         Allow ̲status ̲report
         Send ̲status ̲report
         Load ̲buffer ̲return
         Return ̲first ̲databuffer
         Return ̲next ̲databuffer
         Load ̲cancel ̲reply
         Return ̲buffer
         Init ̲buffer ̲entry
         Send
         Get ̲page ̲page ̲add


4.1.5.1  E̲H̲P̲ ̲M̲o̲d̲u̲l̲e̲



4.1.5.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̲

         The EHP module implements the TMS interface and converts
         the request into requests for other modules of the
         generalized handler.

         The implemented functions are:

         OPEN ̲SUBDEVICE
         CLOSE ̲SUBDEVICE
         ENABLE ̲INPUT
         ENABLE ̲CONTROL ̲INPUT
         ACKNOWLEDGE ̲INPUT
         GET ̲OUTPUT ̲BUFFER
         GET ̲CONTROL ̲BUFFER
         INIT ̲OUTPUT
         CANCEL ̲OPERATION
         ENABLE ̲STATUS ̲RESPONSE

         These are all standard functions required by TMS.



4.1.5.1.2    M̲o̲d̲u̲l̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲

         The EHP module is entered by TMS via the EHP entry
         with the following convention.

         R̲e̲g̲i̲s̲t̲e̲r̲s̲ ̲a̲t̲ ̲c̲a̲l̲l̲

         R1  FUNCTION                      (D)
         R3  CAPABILITY                    (D)
         R4  Pointer to the data-area of 
             subdevice (OWN ̲SDID)          (K)
         R5  Pointer to interface 
             parameters (see below)        (K)



         R̲e̲g̲i̲s̲t̲e̲r̲s̲ ̲a̲t̲ ̲r̲e̲t̲u̲r̲n̲

         R7      CC

         R0 - R3, R6                  DESTROYED

         At return, the parameter area pointed by R5 is modified.

         The parameters pointed by R5 have a layout depending
         on the function.  The conventions are:



         OPEN ̲SUBDEVICE:

                     OPEN ̲SUBDEVICE ̲PARAM


         CLOSE ̲SUBDEVICE:

                     CLOSE ̲SUBDEVICE ̲PARAM


         ENABLE ̲INPUT,ENABLE ̲CONTROL ̲INPUT:

                     ENABLE ̲PARAM


         ACKNOWLEDGE ̲INPUT:  ACK ̲OR ̲CANCEL ̲PARAM

         GET ̲OUTPUT ̲BUFFER, GET ̲CONTROL ̲BUFFER:

                               GET ̲BUFFER ̲PARAM


         INIT ̲OUTPUT:  INIT ̲OUTPUT ̲PARAM


         CANCEL ̲OPERATION:  ACK ̲OR ̲CANCEL PARAM


         ENABLE ̲STATUS ̲RESPONSE:  ENABLE ̲STATUS ̲PARAM


         The asynchronous responses are sent formatted as of:
          
         H ̲OP ̲REPLY ̲MESSAGE



4.1.5.1.3    M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲

         The EHP module consists of:

         -   EHP ̲ENTRY implementing the TMS interface.



4.1.5.1.4    D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲

         The data for a protocol is described in section 4.1.4.

         The EHP ̲ENTRY accesses the "Common data" part to verify
         access and accesses plus the following

         CONTROLLER.INPUT.QEL         (R)
         CONTROLLER.OUTPUT.QEL        (R)
         Any IO ̲QEL the field
             QEL.REQUESTOR            (R)
         OPENER                       (R)

         These accesses are only used as a selector to see which
         other modules shall be invoked based on and operation
         reference given by TMS.



4.1.5.1.5    M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲



4.1.5.1.5.1 E̲H̲P̲ ̲E̲n̲t̲r̲y̲

         The EHP entry is only a selector of functions of other
         modules.

         It should be noted that R4 is treated as common data
         not touched by any module of a handler.  R4 points
         to SDID of the actual subdevice and is everywhere named
         OWN ̲SDID.

         The return from the EHP entry is not a normal return,
         but a call to the standard handler function RETURN
         ̲FROM ̲SUBDEVICE.



4.1.5.2  S̲P̲I̲ ̲M̲o̲d̲u̲l̲e̲



4.1.5.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̲

             The SPI module (SPI = Special Protocol
             Interface) implements the standard functions
             required for DAMOS inter-protocol communication
             except for the CONTROL ̲PROTOCOL, which
             is optional;  for flexibility, this control
             is implemented by control buffers.

             The SPI functions can logically be divided
             into two groups, those required for Mid-level
             protocols for interfacing to High-level
             protocols and those required for all protocols.

             F̲o̲r̲ ̲a̲l̲l̲ ̲p̲r̲o̲t̲o̲c̲o̲l̲s̲:

             OPEN ̲PROTOCOL            Initialization
                                      of protocol data
                                      is performed.
                                       This entry is
                                      called after
                                      the parent has
                                      reserved the
                                      data area.

             NOTIFY ̲INPUT ̲BUFFER      The Parent has
                                      obtained an input
                                      buffer from LTU/LTUX
                                      and hands it
                                      on to the CHILD
                                      through this
                                      call.

             NOTIFY ̲OUTPUT ̲BUFFER     The protocol
                                      has earlier requested
                                      an output buffer
                                      at the Parent
                                      and got the reply
                                      "request ̲queued",
                                      now the Parent
                                      has an output
                                      buffer ready

             NOTIFY ̲TRANSMISSION      The Parent informs
                                      that a single
                                      buffer has been
                                      transmitted.
                                       In this design,
                                      this interface
                                      is dummy since
                                      complete LDUs
                                      are acknowledged.

             CLEAN ̲UP ̲ALL             The Parent asks
                                      the protocol
                                      to clean all
                                      subdevices and
                                      release all buffer
                                      resources.



             CLEAN ̲UP ̲USER            The parent asks
                                      the protocol
                                      to remove all
                                      requests for
                                      a certain user.
                                       In this design,
                                      the creator is
                                      the only one
                                      allowed access
                                      so if the caller
                                      is the creator,
                                      the function
                                      is identical
                                      to CLEAN ̲UP ̲ALL.

             F̲o̲r̲ ̲m̲i̲d̲ ̲l̲e̲v̲e̲l̲ ̲p̲r̲o̲t̲o̲c̲o̲l̲s̲:

             RELEASE ̲INPUT ̲BUFFER…02…A Child has received
             the                                                     input
                                                                     and
                                                                     handed
                                                                     the
                                                                     data
                                                                     further
                                                                     on
                                                                     (e.g.
                                                                     to
                                                                     TMS)

             RESERVE ̲OUTPUT ̲BUFFER    A Child has data
                                      to output due
                                      to a request
                                      from higher level
                                      or TMS.  The
                                      protocol asks
                                      its parent for
                                      a buffer and
                                      if obtained,
                                      the Child gets
                                      immediate response
                                      with buffer reference.
                                       If no buffer
                                      available, the
                                      Child is informed
                                      "request-queued".

             CANCEL ̲RESERVE ̲OUTPUT ̲
             BUFFER                                              A
                                                                 Child
                                                                 has
                                                                 received
                                                                 a
                                                                 cancel
                                                                 request
                                                                 from
                                                                 a
                                                                 higher
                                                                 level
                                                                 (e.g.
                                                                 TMS)
                                                                 and
                                                                 has
                                                                 changed
                                                                 mind,
                                                                 does
                                                                 not
                                                                 want
                                                                 to
                                                                 perform
                                                                 this
                                                                 output
                                                                 (or
                                                                 the
                                                                 transfer
                                                                 has
                                                                 been
                                                                 cancelled).
                                                                 
                                                                 The
                                                                 protocol
                                                                 cleans
                                                                 up
                                                                 for
                                                                 this
                                                                 request
                                                                 and
                                                                 processes
                                                                 possible
                                                                 pending
                                                                 requests.

             RELEASE ̲OUTPUT ̲BUFFER    A Child has already
                                      obtained an output
                                      buffer, but due
                                      to a cancel,
                                      does not want
                                      to use it.

             TRANSMIT ̲OUTPUT ̲BUFFER   A Child has filled
                                      a buffer and
                                      sends it.  The
                                      protocol saves
                                      the Child identification
                                      and puts its
                                      own identification.



             WANT ̲TO ̲CLOSE            A Child has been
                                      called by TMS
                                      CLOSE ̲SUBDEVICE
                                      and asks the
                                      protocol to be
                                      removed.

             OPEN ̲SUBDEVICE           TMS wants to
                                      create a new
                                      subdevice.



4.1.5.2.2    M̲o̲d̲u̲l̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲

             The SPI entry is entered by standard handler
             software whenever a parent or a child
             calls ACTIVATE ̲SPI.  The register setup
             at entry is as follows (Note difference
             from call to ACTIVATE ̲SPI).

             R̲e̲g̲i̲s̲t̲e̲r̲s̲ ̲a̲t̲ ̲c̲a̲l̲l̲

             R1  FUNCTION             (D)
             R4  Pointer to data-area of subdevice
                 (OWN ̲SDID)           (K)
             R5  Pointer to IF ̲PARAM 
                 (of type SPI ̲PARAM)  (K)

             R̲e̲g̲i̲s̲t̲e̲r̲s̲ ̲a̲t̲ ̲r̲e̲t̲u̲r̲n̲

             R7  CC

             R0 - R3, R6              (Dest.)

             At the moment of return IF ̲PARAM is updated
             according to the invoked function to REQUEST
             ̲QUEUED or OK.



4.1.5.2.3    M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲

             SPI ̲ENTRY
             CLEAN                    This procedure
                                      is common for
                                      functions CLEAN
                                      ̲UP ̲USER, CLEAN
                                      ̲UP ̲ALL





4.1.5.2.4    D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲

             The data for a protocol is described in
             section 4.1.4.

             The SPI ̲ENTRY accesses data to detect
             which module to invoke as follows:

             OUTPUTTER.REQ ̲RECORD (R)
             INPUTTER.REQ ̲RECORD  (R)
             PROT ̲CONT.REQ ̲RECORD (R)

             F̲u̲r̲t̲h̲e̲r̲

             OPENER                                              (M-Initialization)
                                                                 (R-CLEAN
                                                                 ̲UP
                                                                 ̲USER)
             PARENT ̲SDID                                         (M
                                                                 -
                                                                 at
                                                                 init)
             STATUS ̲SE                                           (M
                                                                 -
                                                                 at
                                                                 init)
             STATUS                                              (M)



4.1.5.2.5    M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲



4.1.5.2.5.1 S̲P̲I̲ ̲E̲N̲T̲R̲Y̲ ̲D̲e̲s̲i̲g̲n̲

             The SUBDEV points to the parent work area
             of the subdevice, for Children, this is
             the protocols work area.



4.1.5.2.5.4 C̲L̲E̲A̲N̲ ̲D̲e̲s̲i̲g̲n̲

             The CLEAN procedure is responsible for
             removing all subdevices of this protocol
             plus release all resources.

             Subdevices are first removed to have the
             same processing as when a single subdevice
             is removed.

             The actual cleaning is performed by a
             call to the module in question.


4.1.5.3  I̲N̲P̲U̲T̲T̲E̲R̲ ̲M̲o̲d̲u̲l̲e̲



4.1.5.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 INPUTTER schedules input requests
             from USER ̲INTERFACE module, CONTROLLER
             module, SUBDEVICE module and PROTOCOL
             module in such a way that inputs are performed
             one by one and according to the priority
             inserted by the requesting module.  In
             this way, the CONTROLLER may have a priority
             higher than any subdevice and the subdevices
             may be prioritized among themselves.

             To schedule the input activity, the INPUTTER
             maintains two queues, one for pending
             input and another containing the actually
             ongoing input.  The queue elements are
             delivered by the requestors.

             The processing for a single input is:

             1.  A control buffer is requested at the
                 Parent.

             2.  When the control buffer is available
                 it is handed back to the requestor
                 of input.

             3.  The requestor fills the buffer with
                 the input request data and hands it
                 to the INPUTTER.

             4.  The inputter writes its own LDU identification
                 and marks the buffer as input request.

             5.  The inputter sends the buffer to the
                 parent which either processes it or
                 sends it to LTU/LTUX and the INPUTTER
                 awaits data for the requested LDU.

             6.  Any data arriving, when the inputter
                 does not expect data or from a different
                 LDU is ignored (this data may belong
                 to a cancelled input).

             7.  When good data arrives, the inputter
                 hands it back to the requestor, which
                 is responsible for returning the data
                 to TMS or a child.

             8.  When END ̲OF ̲LDU is received from Parent,
                 this input is considered completed,
                 so when this data is handed to the
                 requestor he will reuse the queue
                 element.

         …86…1…02…        …02…   …02…   …02…   …02…      …02…         …02…        
                          
             9.  The current input is also terminated
                 when a RECEPTION ̲STATUS buffer is
                 received from the Parent.

                 The INPUTTER hands the buffer to the
                 requestor through the requestors RESULT
                 entry.

             10. A requestor may cancel an input request
                 by calling CANCEL ̲INPUT.  The requestors
                 resources are released by the INPUTTER
                 upon return.

             The functions of the INPUTTER module are
             identified by entry points (see module
             interface).



4.1.5.3.2    M̲o̲d̲u̲l̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲

             The INPUTTER is called via on of the following:

             INITIALIZE ̲INPUTTER (PARAM:  OPEN ̲SUBDEVICE
             ̲PARAM) ( )

             NOTIFY ̲INPUTTER ̲OF ̲DATA (BUFFER ̲ENTRY:
              POINTER) ( )

             NOTIFY ̲INPUTTER ̲OF ̲RECEPTION (BUFFER ̲ENTRY)
             ( )

             NOTIFY ̲INPUTTER ̲OUTPUT ̲BUFFER (BUFFER
             ̲ENTRY) ( )

             CLEAN ̲INPUTTER ( )  ( )

             SEND ̲INPUT ̲REQUEST (SIZE:  INTEGER) (
              )

             REQUEST ̲DATA ̲INPUT (QEL: IO ̲QEL, PRIORITY:
              PRIORITY ̲TYPE)

                                      (CC:  COMPLETION
                                      ̲CODE, BUFFER
                                      ̲REF: POINTER)
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       

             RELEASE ̲INPUT ̲BUFFER(BUFFER ̲ENTRY: POINTER)
              ( )

             CANCEL ̲INPUT (QEL:  IO ̲QEL)  ( )

         …86…1…02…        …02…   …02…   …02…   …02…      …02…         …02…        
                                
             The INPUTTER calls the following functional
             entries to other modules:

             USER ̲INPUT ̲RESULT (QEL:  IO ̲QEL, BUFFER
             ̲ENTRY:  POINTER)

             CONTROLLER ̲INPUT ̲RESULT (QEL:  IO ̲QEL,
             BUFFER ̲ENTRY:  POINTER)

             SUBDEVICE ̲INPUT ̲RESULT (QEL:  IO ̲QEL,
             BUFFER ̲ENTRY:  POINTER)
             
             PROTOCOL ̲INPUT ̲RESULT (QEL:  IO ̲QEL, BUFFER
             ̲ENTRY:  POINTER)

             NOTIFY ̲USER ̲INPUT ̲REQUEST ̲BUFFER (QEL:
              IO ̲QEL, 
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       BUFFER
                                                                       ̲REF:
                                                                       POINTER)
                                                                       
                                                                       (
                                                                       )

             NOTIFY ̲SUBDEVICE ̲INPUT ̲REQUEST ̲BUFFER
             (QEL:  IO ̲QEL, 
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       BUFFER
                                                                       ̲REF:
                                                                       POINTER)
                                                                       
                                                                       (
                                                                       )

             NOTIFY ̲CONTROLLER ̲INPUT ̲REQUEST ̲BUFFER
             (QEL:  IO ̲QEL, 
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       BUFFER
                                                                       ̲REF:
                                                                       POINTER)
                                                                       
                                                                       (
                                                                       )

             NOTIFY ̲PROTOCOL ̲INPUT ̲REQUEST ̲BUFFER (QEL:
              IO ̲QEL, 
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       BUFFER
                                                                       ̲REF:
                                                                       POINTER)
                                                                       
                                                                       (
                                                                       )

             NOTIFY ̲USER ̲INPUT ̲DATA (QEL:  IO ̲QEL,
             
                                                                       BUFFER
                                                                       ̲ENTRY:
                                                                       
                                                                       POINTER)
                                                                       
                                                                       (
                                                                       )

             NOTIFY ̲CONTROLLER ̲INPUT ̲DATA (QEL:  IO
             ̲QEL, 
                                                                       
                                                                       
                                                                       BUFFER
                                                                       ̲ENTRY:
                                                                       
                                                                       POINTER)
                                                                       
                                                                       (
                                                                       )
         
             NOTIFY ̲SUBDEVICE ̲INPUT ̲DATA (QEL:  IO
             ̲QEL, 
                                                                       
                                                                       
                                                                       BUFFER
                                                                       ̲ENTRY:
                                                                       
                                                                       POINTER)
                                                                       
                                                                       (
                                                                       )

             NOTIFY ̲PROTOCOL ̲INPUT ̲DATA (QEL:  IO ̲QEL,
             
                                                                       
                                                                       
                                                                       BUFFER
                                                                       ̲ENTRY:
                                                                       
                                                                       POINTER)
                                                                       
                                                                       (
                                                                       )

             NOTIFY ̲USER ̲FIRST ̲INPUT ̲DATA (QEL:  IO
             ̲QEL, 
                                                                       
                                                                       
                                                                       BUFFER
                                                                       ̲ENTRY:
                                                                       
                                                                       POINTER)
                                                                       
                                                                       (
                                                                       )

             NOTIFY ̲CONTROLLER ̲FIRST ̲INPUT ̲DATA (QEL:
              IO ̲QEL, 
                                                                       
                                                                       
                                                                       BUFFER
                                                                       ̲ENTRY:
                                                                       
                                                                       POINTER)
                                                                       
                                                                       (
                                                                       )

             NOTIFY ̲SUBDEVICE ̲FIRST ̲INPUT ̲DATA (QEL:
              IO ̲QEL, 
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       BUFFER
                                                                       ̲ENTRY:
                                                                       POINTER)
                                                                       
                                                                       (
                                                                       )

             NOTIFY ̲PROTOCOL ̲FIRST ̲INPUT ̲DATA (QEL:
              IO ̲QEL, 
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       BUFFER
                                                                       ̲ENTRY:
                                                                       POINTER)
                                                                       
                                                                       (
                                                                       )



             Furthermore,

             PROTOCOL ̲ERROR

             ACTIVATE ̲SPI

             QUEUE ̲PRIORITIZED

             QUEUE

             INIT ̲QD

             EXTRACT ̲FIRST

             EXTRACT ̲SPECIFIED



4.1.5.3.3    M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲

             E̲n̲t̲r̲y̲ ̲p̲o̲i̲n̲t̲ ̲p̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

             B̲a̲s̲i̲c̲ ̲p̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

             INITIALIZE INPUTTER

             CLEAN ̲INPUTTER

             R̲e̲q̲u̲e̲s̲t̲ ̲p̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

             REQUEST ̲DATA ̲INPUT

             CANCEL ̲INPUT

             SEND ̲INPUT ̲REQUEST

             P̲a̲r̲e̲n̲t̲ ̲p̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

             NOTIFY ̲INPUTTER ̲OF ̲RECEPTION

             NOTIFY ̲INPUTTER ̲OUTPUT ̲BUFFER

             NOTIFY ̲INPUTTER ̲OF ̲DATA

             G̲e̲n̲e̲r̲a̲l̲

             RELEASE ̲INPUT ̲BUFFER




             C̲o̲m̲p̲o̲n̲e̲n̲t̲ ̲p̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

             I̲n̲p̲u̲t̲ ̲c̲o̲m̲p̲l̲e̲t̲i̲o̲n̲

             PROCESS ̲FOR ̲END ̲OF ̲INPUT

             NEXT ̲INPUT               

             PROCESS ̲FOR ̲NEXT ̲INPUT

             R̲e̲q̲u̲e̲s̲t̲o̲r̲ ̲n̲o̲t̲i̲f̲i̲c̲a̲t̲i̲o̲n̲

             RETURN ̲INPUT ̲REQUEST ̲BUFFER

             RETURN ̲INPUT ̲RESULT

             C̲a̲n̲c̲e̲l̲ ̲s̲u̲p̲p̲o̲r̲t̲

             CANCEL ̲PENDING ̲INPUT

             CANCEL ̲ONGOING ̲INPUT

             SHIP ̲CANCEL ̲INPUT        





4.1.5.4  O̲U̲T̲P̲U̲T̲T̲E̲R̲ ̲M̲o̲d̲u̲l̲e̲



4.1.5.4.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 OUTPUTTER schedules output requests from USER ̲INTERFACE
         module CONTROLLER module, SUBDEVICE module, and PROTOCOL
         module in such a way, that LDUs for output are sent
         one by one and according to priority defined by the
         requestor.  In this way, the CONTROLLER may be given
         higher priority than any subdevice, and the subdevices
         may be prioritized among themselves.

         The OUTPUTTER maintains three queues.  In the PENDING
         queue requests for output allowance are queued, in
         the ONGOING queue, the request currently processed
         is, and in the AWAIT ̲COMPLETION queue output requests
         are held after output of the entire LDU until the LTU/LTUX
         has sent back a transmission status for the LDU.

         The priority mechanism works as follows.  Whenever
         a request is inserted in the PENDING queue, this is
         done according to the priority of the request so the
         first element in the PENDING queue will always be the
         request of highest priority.

         Whenever a request has been activated, the possible
         occurrence of requests of higher priority has no effect,
         i.e. the requestor may get as many output buffers as
         required for the present LDU.  Only when the last buffer
         of an LDU has been handed to the Parent protocol, the
         ongoing request is moved to the WAIT ̲COMPLETION queue
         and the next pending request activated.

         The processing for one outgoing request is:

         1)  A data buffer is requested at the Parent.

         2)  When the buffer is available, it is handed to the
             requestor.

         3)  The requestor fills the buffer with output data
             and hands it to the OUTPUTTER.

         4)  If the buffer is the first within an LDU, the OUTPUTTER
             gets next LDU and stores this ID in the LDU header
             of the buffer and in the queue element of the ongoing
             output.



         5)  Subsequent buffers are just marked "data" and handed
             to the Parent.

         6)  Output of last buffer by the requestor sets the
             OUTPUTTER idle and the ongoing request is moved
             to the AWAIT ̲COMPLETION queue.

         7)  The OUTPUTTER may process other output requests.

         8)  Whenever a transmission status is received from
             the Parent, the OUTPUTTER looks in the WAIT ̲COMPLETION
             queue to find the queue element of the request
             and our requestor is notified.

         The functions of the OUTPUTTER are directly identified
         by the entry pointer of the same name (see module interface).



4.1.5.4.2    M̲o̲d̲u̲l̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲

         The Outputter is called via one of the following:

         INITIALIZE ̲OUTPUTTER (PARAM:  OPEN ̲SUBDEVICE ̲PARAM)
         ( )

             REQUEST ̲DATA ̲OUTPUT (QEL:  IO ̲QEL, PRIORITY:
              PRIORITY ̲TYPE)
                                       (CC:  COMPLETION
                                      ̲CODE, BUFFER
                                      ̲REF: POINTER)

             NOTIFY ̲OUTPUTTER ̲OUTPUT ̲BUFFER (BUFFER
             ̲ENTRY:  POINTER) ( )
             
             REQUEST ̲NEXT ̲BUFFER ( )  (CC: COMPLETION
             ̲CODE,
                                                                        BUFFER
                                                                        ̲REF:
                                                                        
                                                                        POINTER)

             NOTIFY ̲OUTPUTTER ̲OF ̲STATUS(BUFFER ̲ENTRY:
              POINTER) ( )

             SEND ̲OUTPUT ̲BUFFER(TYPE:  BUFFER ̲TYPES,BYTE
             ̲COUNT: INTEGER) ( )

             CLEAN ̲OUTPUTTER ( )  ( )

             CANCEL ̲OUTPUT (QEL:  IO ̲QEL)  ( )



         The outputter calls the following functional entries
         to other modules.

         NOTIFY ̲USER ̲FIRST ̲OUTPUT ̲BUFFER (QEL:                          IO
                                                                        ̲QEL,
                                                                        BUFFER
                                                                        ̲REF:
                                                                        POINTER)
                                                                        (
                                                                        )

         NOTIFY ̲USER ̲SUBSEQUENT ̲OUTPUT ̲BUFFER (QEL:
         IO ̲QEL,
                                                                        
                                                                        
                                                                        
                                                                        
                                                                        
                                                                        BUFFER
                                                                        ̲REF:
                                                                        POINTER)
                                                                        (
                                                                        )

         USER ̲OUTPUT ̲RESULT (QEL:  IO ̲QEL, BUFFER ̲REF:
          POINTER) ( )

         Same with USER replaced by SUBDEVICE

         Same with USER replaced by CONTROLLER

         Same with USER replaced by PROTOCOL

         Furthermore,

         PROTOCOL ̲ERROR

         ACTIVATE ̲SPI
         
         QUEUE ̲PRIORITIZED

         QUEUE

         INIT ̲QD

         EXTRACT ̲FIRST

         EXTRACT ̲SPECIFIED


4.1.5.4.3    M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲

             E̲n̲t̲r̲y̲ ̲P̲o̲i̲n̲t̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

             B̲a̲s̲i̲c̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

             INITIALIZE ̲OUTPUTTER
             CLEAN ̲OUTPUTTER          

             R̲e̲q̲u̲e̲s̲t̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

             REQUEST ̲DATA ̲OUTPUT
             REQUEST ̲NEXT ̲BUFFER
             CANCEL ̲OUTPUT  
             SEND ̲OUTPUT ̲BUFFER       

             P̲a̲r̲e̲n̲t̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

             NOTIFY ̲OUTPUTTER ̲OF ̲STATUS
             NOTIFY ̲OUTPUTTER ̲OUTPUT ̲BUFFER

             C̲o̲m̲p̲o̲n̲e̲n̲t̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

             O̲u̲t̲p̲u̲t̲ ̲C̲o̲m̲p̲l̲e̲t̲i̲o̲n̲

             PROC ̲FOR ̲END ̲OF ̲OUTPUT
             NEXT ̲OUTPUT              
             PROC ̲FOR ̲NEXT ̲OUTPUT

             R̲e̲q̲u̲e̲s̲t̲o̲r̲ ̲N̲o̲t̲i̲f̲i̲c̲a̲t̲i̲o̲n̲

             RETURN ̲OUTPUT ̲BUFFER

             C̲a̲n̲c̲e̲l̲ ̲S̲u̲p̲p̲o̲r̲t̲

             CANCEL ̲PENDING ̲OUTPUT
             CANCEL ̲ONGOING ̲OUTPUT
             CANCEL ̲WAIT ̲COMPLETION ̲OUTPUT
             SHIP ̲CANCEL ̲OUTPUT       


4.1.5.5  U̲S̲E̲R̲ ̲I̲N̲T̲E̲R̲F̲A̲C̲E̲ ̲M̲o̲d̲u̲l̲e̲



4.1.5.5.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 USER ̲INTERFACE handles the TMS requests for input
         and output. INPUT to TMS is performed by TMS calling
         the protocol handler through the entry ENABLE ̲INPUT.
         On the first call of ENABLE ̲INPUT the USER ̲INTERFACE
         Module calls the INPUTTER to obtain  an input request
         buffer. The INPUTTER may queue the request or may deliver
         the buffer immediately. When the buffer for input request
         is available the USER ̲INTERFACE loads it with information
         specifying the request and sends it to the INPUTTER.
         From now on the USER ̲INTERFACE simply awaits input.

         Whenever input data for this requested LDU arrives
         it is handed to TMS if TMS has a pending request or
         the data is queued on the DATA ̲Q. TMS issues series
         of ENABLE-INPUT request each indicating the amount
         of data requested. The USER ̲INTERFACE either hands
         full input buffer to TMS or if the request calls for
         less data than a full buffer, part of a buffer. When
         part of a buffer has been returned the next request
         get either a new part of the buffer or the rest of
         the buffer.

         Whenever type END ̲OF ̲LDU or ENTIRE ̲LDU has been returned
         to TMS, or the input has been abnormally terminated
         (result) the next ENABLE ̲INPUT is considered as the
         socalled first (see above).

         Whenever TMS has cancelled an input request the USER-INTERFACE
         calls the INPUTTER with cancel and releases any data
         in the DATA ̲Q. A possible input request buffer is released
         by the INPUTTER. Upon a cancel TMS shall be notified
         asynchronously if the last TMS request was answered
         request queued.

         OUTPUT from TMS is performed by TMS calling GET ̲OUTPUT
         ̲
         BUFFER. Upon the first call of GET ̲OUTPUT ̲BUFFER (i.e.
         initialization, a completed output or a cancelled output)
         the USER ̲INTERFACE calls the OUTPUTTER by REQUEST ̲DATA
         ̲OUTPUT. The OUTPUTTER may queue the request or hand
         an output buffer immediately. In the first buffer obtained
         the USER ̲INTERFACE must have room for LDU header and
         therefore modify buffer address and size before returning
         it to TMS. Buffers are immediately returned to TMS
         in the call of GET ̲OUTPUT ̲
         BUFFER if they are available. If the USER ̲INTERFACE
         is asynchronously notified of the buffer, it is handled
         to TMS by asynchronous response.



         Whenever the USER ̲INTERFACE has obtained the first
         output buffer and until the last part of a LDU is sent
         the OUTPUTTER only outputs data for the USER ̲INTERFACE.
         Subsequent buffers are reserved by calling REQUEST
         ̲NEXT ̲
         BUFFER.

         When the output of one LDU is completed, the USER ̲
         INTERFACE may immediately start the next output. There
         may be as many outstanding outputs as there are queue
         elements in the EMPTY queue.

         Whenever later on LTU/LTUX has successfully transmitted
         the LDU the transmission status buffer completing the
         LDU is handed by the OUTPUTTER and TMS is informed
         of the result.

         The functions performed are identified by the entry
         points (Refer section 4.1.5.5.2).


4.1.5.5.2    M̲o̲d̲u̲l̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲

         The USER ̲INTERFACE is called via one of the following:

          ENABLE ̲INPUT(PARS:ENABLE ̲PARAM)(CC:COMPLETION ̲CODE)

         ACK ̲DATA ̲INPUT () ()

         NOTIFY ̲USER ̲INPUT ̲REQUEST ̲BUFFER(QEL:IO ̲QEL,BUFFER
         ̲REF:POINTER) ()

         USER ̲INPUT ̲RESULT(QEL:IO ̲QEL,BUFFER ̲REF:POINTER) ()

         GET ̲OUTPUT ̲BUFFER(PARS:GET ̲BUFFER ̲PARAM) (CC:COMPLETION
         ̲CODE)

         NOTIFY ̲USER ̲FIRST ̲OUTPUT ̲BUFFER(QEL:IO ̲QEL,BUFFER ̲REF:POINTER)
         ()

         NOTIFY ̲USER ̲SUBSEQUENT ̲OUTPUT ̲BUFFER(QEL:IO ̲QEL,BUFFER
         ̲REF:POINTER) ()

         USER ̲OUTPUT(PARAMS:INIT ̲OUTPUT ̲PARAM)(CC:COMPLETION
         ̲CODE)

         USER ̲OUTPUT ̲RESULT(QEL:IO ̲QEL,RESULT:COMPLETION ̲CODE)
         ()

         NOTIFY ̲USER ̲FIRST ̲INPUT ̲DATA(QEL:IO ̲QEL,BUFFER ̲ENTRY:POINTER)
         ()

         NOTIFY ̲USER ̲INPUT ̲DATA(QEL:IO ̲QEL,BUFFER ̲ENTRY:POINTER)()

         CANCEL ̲USER ̲OPERATION(QEL) ()

         INITIALIZE ̲USER ̲DATA(PARAMS:OPEN ̲SUBDEVICE ̲PARAM)()

         CLEAN ̲USER ̲DATA ()()



         The USER ̲INTERFACE calls following functional entries
         to other modules:

         REQUEST ̲DATA ̲INPUT(QEL:IO ̲QEL,PRIORITY:PRIORITY ̲TYPE)
         (CC:COMPLETION ̲CODE,BUFFER ̲REF:POINTER)

         SEND ̲INPUT ̲REQUEST(SIZE:INTEGER) ()

         RELEASE ̲INPUT ̲BUFFER(BUFFER ̲REF:POINTER) ()

         LOAD ̲BUFFER ̲RETURN(PARS:GET ̲BUFFER ̲PARAM) ()

         REQUEST ̲DATA ̲OUTPUT(QEL:IO ̲QEL,PRIORITY:PRIORITY ̲TYPE)
         (CC:COMPLETION ̲CODE,BUFFER ̲REF:POINTER)

         REQUEST ̲NEXT ̲BUFFER () (CC:COMPLETION ̲CODE,BUFFER ̲REF:POINTER)

         SEND ̲OUTPUT ̲BUFFER(TYPE:BUFFER ̲TYPES,BYTE ̲COUNT:INTEGER)()

         Furthermore:

         PROTOCOL ̲ERROR

         SEND ̲OPERATIONS ̲REPLY

         QUEUE

         INIT ̲QD

         EXTRACT ̲FIRST

         RETURN ̲FIRST ̲DATABUFFER

         RETURN ̲NEXT ̲DATABUFFER

         LOAD ̲CANCEL ̲REPLY



4.1.5.5.3    M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲

         E̲n̲t̲r̲y̲ ̲P̲o̲i̲n̲t̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲


         B̲a̲s̲i̲c̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         INITIALIZE ̲USER ̲DATA

         CLEAN ̲USER ̲DATA


         I̲n̲p̲u̲t̲ ̲r̲e̲q̲u̲e̲s̲t̲ ̲p̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         ENABLE ̲INPUT

         ACK ̲DATA ̲INPUT


         O̲u̲t̲p̲u̲t̲ ̲R̲e̲q̲u̲e̲s̲t̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         GET ̲OUTPUT ̲BUFFER

         USER ̲OUTPUT 


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

         CANCEL ̲USER ̲OPERATION


         O̲U̲T̲P̲U̲T̲T̲E̲R̲ ̲N̲o̲t̲i̲f̲i̲c̲a̲t̲i̲o̲n̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         NOTIFY ̲USER ̲FIRST ̲OUTPUT ̲BUFFER

         NOTIFY ̲USER ̲SUBSEQUENT ̲OUTPUT ̲BUFFER

         USER ̲OUTPUT RESULT


         I̲N̲P̲U̲T̲T̲E̲R̲ ̲N̲o̲t̲i̲f̲i̲c̲a̲t̲i̲o̲n̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         NOTIFY ̲USER ̲INPUT ̲REQUEST ̲BUFFER

         NOTIFY ̲USER ̲FIRST ̲INPUT ̲DATA

         NOTIFY ̲USER ̲INPUT ̲DATA

         USER ̲INPUT ̲RESULT


         C̲o̲m̲p̲o̲n̲e̲n̲t̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲


         I̲n̲p̲u̲t̲ ̲H̲a̲n̲d̲l̲i̲n̲g̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         SETUP ̲INPUT ̲REQUEST

         RETURN ̲DATA 

         RETURN ̲RESULT

         NEXT ̲DATA ̲QEL


         O̲u̲t̲p̲u̲t̲ ̲H̲a̲n̲d̲l̲i̲n̲g̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         RETURN-OUTPUT ̲RESULT


         C̲a̲n̲c̲e̲l̲ ̲S̲u̲p̲p̲o̲r̲t̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         CANCEL ̲USER ̲INPUT

         CANCEL ̲USER ̲OUTPUT

         EMPTY ̲DATA ̲Q




4.1.5.5.4.10 O̲p̲t̲i̲o̲n̲a̲l̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         For protocols having the USER ̲INTERFACE module generating
         protocol commands to the parent protocol/LTU/LTUX,
         the response interface for the PROT ̲CONT module must
         be implemented i.e.:

         NOTIFY ̲USER ̲PROT ̲CONT ̲BUFFER and
         USER ̲PROT ̲CONT ̲RESULT

         must be included.

         Protocols where this interface is missing must omit
         the calls in the PROT ̲CONT module to avoid software
         linkage errors.



4.1.5.6  C̲O̲N̲T̲R̲O̲L̲L̲E̲R̲ ̲M̲o̲d̲u̲l̲e̲



4.1.5.6.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 CONTROLLER handles the TMS requests for control
         of the protocol including asynchronous error reporting.
          The CONTROLLER need not be present in all protocols.
          Examples in CAMPS where omitted, are VDU ̲DATA protocol
         and VDU ̲CONTROL protocol.

         Three types of control may be performed.

         -   Subdevice control giving the requestor the possibility
             to interact directly with the running protocol
             for example to let the subdevice protocol execute
             complex series of control commands to lower levels.

         -   Lower protocol control (which may be OUTPUT or
             OUTPUT + INPUT) to let the control interface send
             and receive control buffers of type "Protocol command",
             "Protocol status" to/from LTU/LTUX firmware.

         -   External device.  This gives full data communication
             capability to the external device, like initialization
             of VDU split settings, setting of MSP tabulation.



         The error reporting function of the CONTROLLER schedules
         errors by priority.  It has a queue of one error, any
         error with higher priority will overwrite this error.

         The CONTROLLER interfaces with the SSC package of CAMPS
         through data buffers, where the first word is the control
         type.

         Based on the control type, the CONTROLLER detects the
         action to be taken.  For type SUBDEVICE, it requests
         the PROTOCOL module to take action, for type LOWER
         ̲PROTOCOL, the PROT ̲CONT module is requested to deliver
         a control buffer for type EXTERNAL ̲DEVICE ̲INPUT, the
         INPUTTER is activated, for type EXTERNAL ̲DEVICE ̲OUTPUT,
         the OUTPUTTER is activated.

         Control requests may output only or combined output-input.
          External device input and lower protocol control are
         always combined, others depend on the function.  Wherever
         input is required, the input request must be issued
         by SSC before the output.

         S̲U̲B̲D̲E̲V̲I̲C̲E̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲P̲r̲o̲c̲e̲s̲s̲i̲n̲g̲

         The CONTROLLER requests the PROTOCOL module for a buffer
         where to load the requestors data.  When TMS requests
         transmission, the PROTOCOL module is informed.

         After having processed the data, the PROTOCOL activates
         the CONTROLLER giving completion information.  If the
         completion information is more than just a completion
         code and there is no pending input, the Control output
         is considered failed.
         "Missing input request".
         For further details refer each protocol of the PROTOCOL
         module.

         L̲O̲W̲E̲R̲ ̲P̲R̲O̲T̲O̲C̲O̲L̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲P̲r̲o̲c̲e̲s̲s̲i̲n̲g̲

         Lower protocol control processing.  The controller
         requests a buffer at the PROT ̲CONT module, hands it
         to TMS, which after filling it sends it via CONTROLLER
         and PROT ̲CONT to the Parent subdevice.  If the control
         is of type output only, the CONTROLLER notifies TMS
         of the successful completion, if the control is of
         type output + input, the CONTROLLER waits for response.


         E̲X̲T̲E̲R̲N̲A̲L̲ ̲D̲E̲V̲I̲C̲E̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲P̲r̲o̲c̲e̲s̲s̲i̲n̲g̲

         External device processing is very similar to the USER
         ̲INTERFACE module processing for data transport except
         that an input request is generated after the control
         header has been output and that the control header
         is not handed on to INPUTTER or OUTPUTTER.



4.1.5.6.2    M̲o̲d̲u̲l̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲

         The CONTROLLER is called via one of the following:

             INITIALIZE ̲CONTROLLER (PARAM:  OPEN ̲SUBDEVICE
             ̲PARAM) ( )

             GET ̲CONTROL ̲BUFFER (PARS: GET ̲BUFFER ̲PARAM)(CC:
             COMPLETION ̲CODE)

             CONTROLLER ̲OUTPUT (PARAMS: INIT ̲OUTPUT
             ̲PARAM)(CC: COMPLETION ̲CODE)

             ENABLE ̲CONTROL ̲INPUT(PARS: ENABLE ̲PARAM)(CC:
             COMPLETION ̲CODE)

             NOTIFY ̲CONTROLLER ̲FIRST ̲OUTPUT ̲BUFFER
             (QEL:  IO ̲QEL,
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       BUFFER
                                                                       ̲REF:
                                                                       
                                                                       POINTER)
                                                                       (
                                                                       )

             NOTIFY ̲CONTROLLER ̲SUBSEQUENT ̲OUTPUT ̲BUFFER
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       (QEL:
                                                                       IO
                                                                       ̲QEL,
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       BUFFER
                                                                       ̲REF:
                                                                       
                                                                       POINTER)
                                                                       (
                                                                       )

             CONTROLLER ̲INPUT ̲RESULT (QEL:  IO ̲QEL,
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       BUFFER
                                                                       ̲ENTRY:
                                                                       
                                                                       POINTER)
                                                                       (
                                                                       )

             NOTIFY ̲CONTROLLER ̲INPUT ̲REQUEST ̲BUFFER
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       (QEL:
                                                                       IO
                                                                       ̲QEL,
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       BUFFER
                                                                       ̲ENTRY:
                                                                       POINTER)
                                                                       (
                                                                       )

             NOTIFY ̲CONTROLLER ̲FIRST ̲INPUT ̲DATA
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       (QEL:
                                                                       
                                                                       IO
                                                                       ̲QEL,
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       BUFFER
                                                                       ̲ENTRY:
                                                                       POINTER)
                                                                       (
                                                                       )

             NOTIFY ̲CONTROLLER ̲INPUT ̲DATA
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       (QEL:
                                                                       
                                                                       IO
                                                                       ̲QEL,
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       BUFFER
                                                                       ̲ENTRY:
                                                                       POINTER)
                                                                       (
                                                                       )

                 CONTROLLER ̲OUTPUT ̲RESULT
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       (QEL:
                                                                       
                                                                       IO
                                                                       ̲QEL,
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       BUFFER
                                                                       ̲ENTRY:
                                                                       
                                                                       POINTER)
                                                                       (
                                                                       )


         NOTIFY ̲CONTROLLER ̲PROT ̲CONT ̲BUFFER
                      (QEL:  IO ̲QEL,
                       BUFFER ̲ENTRY:  POINTER) ( )


         ACK ̲CONTROL ̲INPUT ( )  ( )


         NOTIFY ̲CONTROLLER ̲PROTOCOL ̲BUFFER
                     (QEL:  IO ̲QEL,
                      BUFFER ̲ENTRY:  POINTER) ( )

         CONTROLLER ̲PROT ̲CONT ̲RESULT (QEL:  IO ̲QEL,
                      BUFFER ̲ENTRY: POINTER) ( )

         CONTROLLER ̲PROTOCOL ̲RESULT (QEL:  IO ̲QEL,
         BUFFER ̲ENTRY:  POINTER)()

         CANCEL ̲CONTROLLER ̲OPERATION (QEL:  IO ̲QEL)
          ( )



         The CONTROLLER calls the following functional
         entries to other protocol modules:

         REQUEST ̲DATA ̲INPUT (QEL: IO ̲QEL, PRIORITY:
         PRIORITY ̲TYPE)
                       (CC:  COMPLETION ̲CODE, BUFFER
                     ̲REF: POINTER)

         SEND ̲INPUT ̲REQUEST (SIZE: INTEGER) ( )
         CANCEL ̲INPUT (QEL: IO ̲QEL) ( )
         RELEASE ̲INPUT ̲BUFFER (BUFFER ̲REF: POINTER)
         ( )

         REQUEST ̲DATA ̲OUTPUT (QEL: IO ̲QEL, PRIORITY:
         PRIORITY ̲TYPE)
                        (CC:  COMPLETION ̲CODE, BUFFER
                     ̲REF: POINTER)

         REQUEST ̲NEXT ̲BUFFER ( ) (CC: COMPLETION ̲CODE,
         BUFFER ̲REF: POINTER)

         SEND ̲OUTPUT ̲BUFFER (TYPE: BUFFER ̲TYPES, BYTE
         ̲COUNT: INTEGER) ( )

         CANCEL ̲OUTPUT (QEL: IO ̲QEL) ( )

         REQUEST ̲PROT ̲CONT (QEL:  IO ̲QEL, PRIORITY:
         PRIORITY ̲TYPE)
                      (CC: COMPLETION ̲CODE, BUFFER
                     ̲REF: POINTER)

         SEND ̲PROT ̲CONT (RESPONSE: BOOLEAN, SIZE: INTEGER)
         ( )

         CANCEL ̲PROT ̲CONT (QEL: IO ̲QEL) ( )

         REQUEST ̲PROTOCOL (QEL: IO ̲QEL, PRIORITY: PRIORITY
         ̲TYPE)
                     (CC:  COMPLETION ̲CODE, BUFFER
                     ̲REF: POINTER)

         SEND ̲PROTOCOL (CC: COMPLETION ̲CODE, BUFFER
         ̲REF: POINTER)()

         CANCEL ̲PROTOCOL (QEL: IO ̲QEL) ( )


         Furthermore

         PROTOCOL ̲ERROR

         SEND ̲OPERATIONS ̲REPLY

         QUEUE

         INIT ̲QD

         EXTRACT ̲FIRST

         RETURN ̲FIRST ̲DATA BUFFER

         RETURN ̲NEXT ̲DATA BUFFER

         LOAD ̲CANCEL ̲REPLY

         RETURN ̲BUFFER


4.1.5.6.3    M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲

         E̲n̲t̲r̲y̲ ̲P̲o̲i̲n̲t̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         B̲a̲s̲i̲c̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         INITIALIZE ̲CONTROLLER
         CLEAN ̲CONTROLLER

         I̲n̲p̲u̲t̲ ̲R̲e̲q̲u̲e̲s̲t̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         ENABLE ̲CONTROL ̲INPUT
         ACK ̲CONTROL ̲INPUT

         O̲u̲t̲p̲u̲t̲ ̲R̲e̲q̲u̲e̲s̲t̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         GET ̲CONTROL ̲BUFFER
         CONTROLLER ̲OUTPUT

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

         CANCEL ̲CONTROLLER ̲OPERATION

         O̲U̲T̲P̲U̲T̲T̲E̲R̲ ̲N̲o̲t̲i̲f̲i̲c̲a̲t̲i̲o̲n̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         NOTIFY ̲CONTROLLER ̲FIRST ̲OUTPUT ̲BUFFER
         NOTIFY ̲CONTROLLER ̲SUBSEQUENT ̲OUTPUT BUFFER 
         CONTROLLER ̲OUTPUT ̲RESULT

         I̲N̲P̲U̲T̲T̲E̲R̲ ̲N̲o̲t̲i̲f̲i̲c̲a̲t̲i̲o̲n̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         NOTIFY ̲CONTROLLER ̲INPUT ̲REQUEST ̲BUFFER
         NOTIFY ̲CONTROLLER ̲FIRST ̲INPUT ̲DATA
         NOTIFY ̲CONTROLLER ̲INPUT ̲DATA
         CONTROLLER ̲INPUT ̲RESULT



         P̲R̲O̲T̲ ̲C̲O̲N̲T̲ ̲N̲o̲t̲i̲f̲i̲c̲a̲t̲i̲o̲n̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         NOTIFY ̲CONTROLLER ̲PROT ̲CONT ̲BUFFER
         CONTROLLER ̲PROT ̲CONT ̲RESULT

         P̲R̲O̲T̲O̲C̲O̲L̲ ̲N̲o̲t̲i̲f̲i̲c̲a̲t̲i̲o̲n̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         NOTIFY ̲CONTROLLER ̲PROTOCOL ̲BUFFER
         CONTROLLER ̲PROTOCOL ̲RESULT

         C̲o̲m̲p̲o̲n̲e̲n̲t̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         I̲n̲p̲u̲t̲ ̲H̲a̲n̲d̲l̲i̲n̲g̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         TERMINATE ̲CONTROL ̲INPUT
         RETURN ̲CONTROLLER ̲DATA
         RETURN ̲CONTROLLER ̲INPUT ̲RESULT
         RETURN ̲PROT ̲CONT ̲DATA
         RETURN ̲PROTOCOL ̲DATA

         O̲u̲t̲p̲u̲t̲ ̲H̲a̲n̲d̲l̲i̲n̲g̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         RETURN ̲INPUT ̲REQUEST ̲BUFFER 
         RETURN ̲PROT ̲CONT ̲BUFFER
         RETURN ̲PROTOCOL ̲BUFFER
         RETURN ̲CONTROL ̲OUTPUT ̲RESULT

         C̲a̲n̲c̲e̲l̲ ̲S̲u̲p̲p̲o̲r̲t̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         EMPTY ̲CONTROLLER ̲DATA ̲Q
         CANCEL ̲CONTROLLER ̲INPUT
         CANCEL ̲CONTROLLER ̲PROT ̲CONT
         CANCEL ̲CONTROLLER ̲PROTOCOL
         CANCEL ̲CONTROLLER ̲OUTPUT
         EMPTY ̲CONTROLLER ̲PROT ̲CONT ̲DATA ̲Q
         EMPTY ̲CONTROLLER ̲PROTOCOL ̲DATA ̲Q




4.1.5.7  S̲U̲B̲D̲E̲V̲I̲C̲E̲ ̲I̲N̲T̲E̲R̲F̲A̲C̲E̲ ̲M̲O̲D̲U̲L̲E̲



4.1.5.7.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 SUBDEVICE INTERFACE module implements the scheduling
         of request among the subdevices, an example is scheduling
         of split communication for the VDU protocol.

         The SUBDEVICE INTERFACE interfaces to the higher level
         protocols of the subdevices through the SPI entries
         of these protocols. Within one protocol it interfaces
         to the INPUTTER, OUTPUTTER, and PROT ̲CONT ̲modules

         The task of the SUBDEVICE INTERFACE is to add subdevice
         address to output data and input request as appropriate
         for the protocol.

         The processing for an input request received from a
         subdevice is:

         1.  A queue element is fetched from the protocol's
             local subdevice data. The input request data is
             stored and the subdevice LDU is saved in the queue
             element.

         2.  The INPUTTER is requested for permission to perform
             input.

         3.  When an input request buffer is available it is
             loaded with the request and sent.

         4.  When data arrives it is marked with the subdevice
             LDU identification and handed to the subdevice.

         5.  The input is complete when END ̲OF ̲LDU or ENTIRE
             ̲LDU has been handed to the subdevice.

         Input requests are only accepted one by one from a
         subdevice.

         The processing for an output request is as follows:

         1.  The SUBDEVICE INTERFACE is called by the subdevice
             RESERVE ̲OUTPUT ̲BUFFER.


         2.  A queue element is fetched from the protocols SUBDEV
             ̲DATA for the subdevice and the OUTPUTTER module
             is called to schedule the output.

         3.  When higher priority output requests have been
             served or an ongoing lower priority request is
             completed the SUBDEVICE INTERFACE is notified of
             the availability of an output buffer.

         4.  The output buffer is handed to the subdevice. First
             buffer is shortened to have room for the protocol
             to load addressing information.

         5.  When the subdevice has loaded the data the protocol
             picks up the subdevice LDU identification and saves
             it in the queue element.

         6.  Addressing information is loaded in the buffer
             as appropriate and the buffer is handed to the
             outputter for transmission.

         7.  The OUTPUTTER is reserved for this subdevice until
             completion of output for one LDU.

         8.  Eventually the SUBDEVICE INTERFACE is notified
             by a buffer of the result. The subdevice identification
             of the request is loaded from the queue element
             and the subdevice is notified.

         The processing for a control buffer request from a
         subdevice is:

         1.  The subdevice calls the protocol via RESERVE ̲OUTPUT
             ̲BUFFER with control priority.

         2.  If the SUBDEVICE INTERFACE has no outgoing control
             the control buffer is immediately handed to the
             requestor else the request is queued by means of
             the requestor's own request buffer.

         3.  After having obtained the buffer the subdevice
             loads the control information and hands it back
             to the SUBDEVICE INTERFACE. The control buffer
             may now contain an input request or a cancel request
             or a protocol control command. Input requests have
             already been described. Cancel request and protocol
             control commands are described below.


         The processing for a cancel of a request is as follows:

         1.  The subdevice has sent a control buffer to the
             SUBDEVICE interface with a request to cancel either
             an input or an output.

         2.  The SUBDEVICE INTERFACE calls the INPUTTER or OUTPUTTER
             to cancel the request and upon completion of the
             call the same control buffer is loaded with transmission
             status or reception status and the buffer is returned
             to the subdevice.

         The processing for a protocol control command is as
         follows:

         1.  The subdevice has sent a control buffer with a
             control command to the SUBDEVICE INTERFACE.

         2.  The control may concern the SUBDEVICE INTERFACE
             locally. In this case the request is processed
             and the buffer used to return completion immediately.

         3.  The request may be to the PROTOCOL module. In this
             case the PROTOCOL module is requested to deliver
             a buffer whereinto the request is copied and handed
             to the PROTOCOL module.

         4.  When the PROTOCOL module has completed it returns
             a buffer as response. This buffer is used to notify
             the subdevice of the result.


4.1.5.7.2    M̲o̲d̲u̲l̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲

         The SUBDEVICE INTERFACE is called via one of the following:

         TRANSMIT ̲OUTPUT ̲BUFFER        (IF ̲PARAM: SPI ̲PARAM,
                                       SUBDEV: SUBDEV ̲DATA)
                                       (CC: COMPLETION ̲CODE)

         RELEASE ̲OUTPUT ̲BUFFER         (IF ̲PARAM: SPI ̲PARAM,
                                       SUBDEV: SUBDEV ̲DATA)
                                       (CC: COMPLETION ̲CODE)

         CANCEL ̲RESERVE ̲OUTPUT ̲BUFFER  (IF ̲PARAM: SPI ̲PARAM,
                                       SUBDEV: SUBDEV ̲DATA)
                                       (CC: COMPLETION ̲CODE)

         RELEASE ̲INPUT ̲B               (IF ̲PARAM: SPI ̲PARAM,
                                       SUBDEV: SUBDEV ̲DATA)
                                       (CC: COMPLETION ̲CODE)

         RESERVE ̲OUTPUT ̲BUFFER         (IF ̲PARAM: SPI ̲PARAM,
                                       SUBDEV: SUBDEV ̲DATA)
                                       (CC: COMPLETION ̲CODE)

         NOTIFY ̲SUBDEVICE ̲FIRST ̲OUTPUT ̲BUFFER
                     (QEL: IO ̲QEL, BUFFER ̲REF: POINTER)()

         NOTIFY ̲SUBDEVICE ̲SUBSEQUENT ̲OUTPUT ̲BUFFER
                     (QEL: IO ̲QEL, BUFFER ̲REF: POINTER)()

         SUBDEVICE ̲OUTPUT ̲RESULT       (QEL: IO ̲QEL, BUFFER
                                       ̲REF:
                                       POINTER)()

         SUBDEVICE ̲INPUT ̲RESULT        (QEL: IO ̲QEL, BUFFER
                                       ̲REF:
                                       POINTER)()

         NOTIFY ̲SUBDEVICE ̲INPUT ̲REQUEST ̲BUFFER
                     (QEL: IO ̲QEL, BUFFER ̲REF: POINTER)()

         NOTIFY ̲SUBDEVICE ̲INPUT ̲DATA
                     (QEL: IO ̲QEL, BUFFER ̲REF: POINTER)()

         NOTIFY ̲SUBDEVICE ̲FIRST ̲INPUT ̲DATA
                     (QEL: IO ̲QEL, BUFFER ̲REF: POINTER)()

         INITIALIZE ̲SUBDEVICE ̲INTERFACE
                     (PARAM: OPEN ̲SUBDEVICE ̲PARAM)()

         CLEAN ̲SUBDEVICES()()


         SUBDEVICE ̲OUTPUT ̲RESULT       (QEL: IO ̲QEL,
                                       BUFFER-̲REF: POINTER)()

         NOTIFY ̲SUBDEVICE ̲FIRST ̲INPUT ̲DATA (QEL: IO ̲QEL,
                                       BUFFER ̲REF: POINTER)()

         NOTIFY ̲SUBDEVICE ̲INPUT ̲DATA   (QEL: IO ̲QEL,
                                       BUFFER ̲REF: POINTER)()

         NOTIFY ̲SUBDEVICE ̲INPUT ̲REQUEST ̲BUFFER (QEL: IO ̲QEL,
                                       BUFFER ̲REF: POINTER)()

         SUBDEVICE ̲INPUT ̲RESULT        (QEL: IO ̲QEL,
                                       BUFFER ̲REF: POINTER)()

         NOTIFY ̲SUBDEVICE ̲FIRST ̲OUTPUT ̲BUFFER (QEL: IO ̲QEL,
                                       BUFFER ̲REF: POINTER)
                                       ()

         NOTIFY ̲SUBDEVICE ̲SUBSEQUENT ̲OUTPUT ̲BUFFER (QEL: IO
         ̲QEL,
                                       BUFFER ̲REF: POINTER)()

         OPEN ̲SUBDEVICE                (PARAM: OPEN ̲SUBDEVICE
                                       ̲PARAM) (CC: COMPLETION
                                       ̲CODE)

         WANT ̲TO ̲CLOSE                 (SUBDEV: SUBDEV ̲DATA)()


         The SUBDEVICE INTERFACE calls the following functional
         entries of other modules:

         REQUEST ̲DATA ̲INPUT            (QEL: IO ̲QEL,
                                       PRIORITY: PRIORITY ̲TYPE)
                                       (CC: COMPLETION ̲CODE,
                                       BUFFER ̲REF: POINTER)

         SEND ̲INPUT ̲REQUEST            (BUFFER ̲REF: POINTER)()

         REQUEST ̲DATA ̲OUTPUT           (QEL: IO ̲QEL,
                                       PRIORITY: PRIORITY ̲TYPE)
                                       (CC: COMPLETION ̲CODE,
                                       BUFFER ̲REF: POINTER)

         REQUEST ̲NEXT ̲BUFFER()         (CC: COMPLETION ̲CODE,
                                       BUFFER ̲REF: POINTER)()

         SEND ̲OUTPUT ̲BUFFER            (TYPE: BUFFER ̲TYPES,
                                       BYTE ̲COUNT: INTEGER)()


         Furthermore

         PROTOCOL ̲ERROR
         QUEUE
         INIT ̲QD
         EXTRACT ̲FIRST


4.1.5.7.3    M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲

         E̲n̲t̲r̲y̲ ̲p̲o̲i̲n̲t̲ ̲p̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         B̲a̲s̲i̲c̲ ̲p̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         INITIALIZE ̲SUBDEVICE ̲INTERFACE
         CLEAN ̲SUBDEVICES              

         I̲n̲p̲u̲t̲-̲o̲u̲t̲p̲u̲t̲ ̲p̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         RELEASE ̲INPUT ̲B               
         RESERVE ̲OUTPUT ̲BUFFER         
         CANCEL ̲RESERVE ̲OUTPUT ̲BUFFER  
         RELEASE ̲OUTPUT ̲BUFFER         
         TRANSMIT ̲OUTPUT ̲BUFFER        

         O̲U̲T̲P̲U̲T̲T̲E̲R̲ ̲n̲o̲t̲i̲f̲i̲c̲a̲t̲i̲o̲n̲ ̲p̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         NOTIFY ̲SUBDEVICE ̲FIRST ̲OUTPUT ̲BUFFER
         NOTIFY ̲SUBDEVICE ̲SUBSEQUENT ̲OUTPUT
                                       BUFFER
         SUBDEVICE ̲OUTPUT ̲RESULT       

         I̲N̲P̲U̲T̲T̲E̲R̲ ̲n̲o̲t̲i̲c̲i̲f̲a̲t̲i̲o̲n̲ ̲p̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         NOTIFY ̲SUBDEVICE ̲INPUT ̲REQUEST ̲BUFFER
         NOTIFY ̲SUBDEVICE ̲FIRST ̲INPUT ̲DATA
         NOTIFY ̲SUBDEVICE ̲INPUT ̲DATA   
         SUBDEVICE ̲INPUT ̲RESULT        

         S̲u̲b̲d̲e̲v̲i̲c̲e̲ ̲c̲o̲n̲t̲r̲o̲l̲ ̲p̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         OPEN ̲SUBDEVICE                
         WANT ̲TO ̲CLOSE                 

         C̲o̲m̲p̲o̲n̲e̲n̲t̲ ̲p̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         I̲n̲p̲u̲t̲ ̲h̲a̲n̲d̲l̲i̲n̲g̲ ̲p̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         LOAD ̲INPUT ̲REQUEST            
         RETURN ̲INPUT ̲DATA             


         O̲u̲t̲p̲u̲t̲ ̲h̲a̲n̲d̲l̲i̲n̲g̲ ̲p̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         SETUP ̲FIRST ̲OUTPUT ̲BUFFER
         SETUP ̲NEXT ̲OUTPUT ̲BUFFER
         RETURN ̲OUTPUT ̲BUFFER   

         S̲u̲b̲d̲e̲v̲i̲c̲e̲ ̲h̲a̲n̲d̲l̲i̲n̲g̲ ̲p̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         CLEAN ̲SUBDEVICE        
         INITIALIZE ̲SUBDEVICE ̲DATA

         C̲o̲n̲t̲r̲o̲l̲ ̲h̲a̲n̲d̲l̲i̲n̲g̲ ̲p̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         NOTIFY ̲CONTROL ̲BUFFER  
         NEXT ̲CONTROL           
         TERMINATE ̲ONGOING ̲CONTROL



4.1.5.8  P̲R̲O̲T̲ ̲C̲O̲N̲T̲ ̲M̲o̲d̲u̲l̲e̲



4.1.5.8.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 PROT ̲CONT module controls the exchange of Protocol
         command/Protocol status buffers with the Parent protocol.

         Especially the CONTROLLER and the PROTOCOL modules
         make use of this.

         The processing is as follows:

         The PROT ̲CONT module controls that only one Protocol
         Command to LTU/LTUX is in execution at any time.

         The requestor calls REQUEST ̲PROT ̲CONT and may either
         be queued or immediately be supplied with a buffer.

         When the requestor gets a control buffer he loads it
         with the command and hands it to the PROT ̲CONT module
         for transmission.

         The requestor may here specify that no response is
         expected and the request is complete. If a response
         is expected, the PROT ̲CONT module awaits the arrival
         and hands back the buffer to the requestor. From now
         on the requestor is in charge of the buffer (e.g. for
         cancel processing) and the PROT ̲CONT module executes
         next request.


4.1.5.8.2    M̲o̲d̲u̲l̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲

         The PROT ̲CONT is called via one of the following entries:

         INITIALIZE ̲PROT ̲CONT (PARAM: OPEN ̲SUBDEVICE ̲PARAM)()

         REQUEST ̲PROT ̲CONT (QEL: IO ̲QEL,
                            PRIORITY: PRIORITY ̲TYPE)
                            (CC: COMPLETION ̲CODE,
                            BUFFER ̲REF: POINTER)

         NOTIFY ̲PROT ̲CONT ̲OUTPUT ̲BUFFER (BUFFER ̲REF: POINTER)()

         NOTIFY ̲PROT ̲CONT ̲OF ̲RESPONSE   (BUFFER ̲REF: POINTER)()

         SEND ̲PROT ̲CONT (RESPONSE: BOOLEAN,
                             SIZE: INTEGER)()

         CANCEL ̲PROT ̲CONT (QEL: IO ̲QEL)()

         CLEAN ̲PROT ̲CONT()()


         The PROT ̲CONT module calls the following functional
         entries of other modules:

         USER ̲PROT ̲CONT ̲RESULT (QEL: IO ̲QEL, BUFFER ̲REF: POINTER)()

         CONTROLLER ̲PROT ̲CONT ̲RESULT (QEL: IO ̲QEL,BUFFER ̲REF:POINTER)()

         PROTOCOL ̲PROT ̲CONT ̲RESULT (QEL:IO ̲QEL,BUFFER ̲REF:POINTER)()

         NOTIFY ̲USER ̲PROT ̲CONT ̲BUFFER (QEL:IO ̲QEL,BUFFER ̲REF:POINTER)()

         NOTIFY ̲CONTROLLER ̲PROT ̲CONT ̲BUFFER (QEL:IO ̲QEL, BUFFER
         ̲REF:
                                                           
                      POINTER)()

         NOTIFY ̲PROTOCOL ̲PROT ̲CONT ̲BUFFER (QEL:IO ̲QEL,BUFFER
         ̲REF:
                                                           
                      POINTER)()

         Furthermore:
         PROTOCOL ̲ERROR
         ACTIVATE ̲SPI
         QUEUE ̲PRIORITIZED
         QUEUE
         INIT ̲QD
         EXTRACT ̲FIRST
         EXTRACT ̲SPECIFIED


4.1.5.8.3    M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲

         E̲n̲t̲r̲y̲ ̲p̲o̲i̲n̲t̲ ̲p̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         B̲a̲s̲i̲c̲ ̲p̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         INITIALIZE ̲PROT ̲CONT
         CLEAN ̲PROT ̲CONT

         R̲e̲q̲u̲e̲s̲t̲ ̲p̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         REQUEST ̲PROT ̲CONT
         CANCEL ̲PROT ̲CONT
         SEND ̲PROT ̲CONT

         P̲a̲r̲e̲n̲t̲ ̲p̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         NOTIFY ̲PROT ̲CONT ̲OUTPUT ̲BUFFER
         NOTIFY ̲PROT ̲CONT ̲OF ̲RESPONSE

         C̲o̲m̲p̲o̲n̲e̲n̲t̲ ̲p̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         R̲e̲q̲u̲e̲s̲t̲o̲r̲ ̲n̲o̲t̲i̲f̲i̲c̲a̲t̲i̲o̲n̲

         RETURN ̲PROT ̲CONT ̲BUFFER

         C̲o̲m̲p̲l̲e̲t̲i̲o̲n̲ ̲p̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         NEXT ̲PROT ̲CONT
         RELEASE ̲PROT ̲CONT ̲BUFFER
         PROC ̲FOR ̲END ̲OF ̲PROT ̲CONT