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

⟦0aeb80c9c⟧ Wang Wps File

    Length: 31568 (0x7b50)
    Types: Wang Wps File
    Notes: CPS/SDS/028               
    Names: »2039A «

Derivation

└─⟦4e34bac2f⟧ Bits:30006102 8" Wang WCS floppy, CR 0161A
    └─ ⟦this⟧ »2039A « 

WangText



*…06…)…0b…)…0f…)…02…)
)…06…(…08…(…0b…(…0d…(…00…(…02…( (…06…'…08…'…09…'…0b…'…0e…'…01…'
'…05…'…07…&…09…&…0b…&…0d…&…00…&
&…05…&…07…%…09…%…0b……86…1
      
      
      
      
      
      
      
   …02…   
      
  …02…   …02… 
      
 

…02…CPS/SDS/028

…02…820514…02……02…
I/O CONTROL
DETAILED
 DESIGN
 SPECIFICATION…02……02…CAMPS








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                         5.1
         CLEAN ̲CONTROLLER                              5.1

         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                          5.2
         ACK ̲CONTROL ̲INPUT                             5.2

         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                            5.3
         CONTROLLER ̲OUTPUT                             5.3

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

         CANCEL ̲CONTROLLER ̲OPERATION                   5.4

         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         5.5
         NOTIFY ̲CONTROLLER ̲SUBSEQUENT ̲OUTPUT BUFFER    5.5
         CONTROLLER ̲OUTPUT ̲RESULT                      5.5

         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        5.6
         NOTIFY ̲CONTROLLER ̲FIRST ̲INPUT ̲DATA            5.6
         NOTIFY ̲CONTROLLER ̲INPUT ̲DATA                  5.6
         CONTROLLER ̲INPUT ̲RESULT                       5.6



         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            5.7
         CONTROLLER ̲PROT ̲CONT ̲RESULT                   5.7

         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             5.8
         CONTROLLER ̲PROTOCOL ̲RESULT                    5.8

         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                       5.9
         RETURN ̲CONTROLLER ̲DATA                        5.9
         RETURN ̲CONTROLLER ̲INPUT ̲RESULT                5.9
         RETURN ̲PROT ̲CONT ̲DATA                         5.9
         RETURN ̲PROTOCOL ̲DATA                          5.9

         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                   5.10
         RETURN ̲PROT ̲CONT ̲BUFFER                       5.10
         RETURN ̲PROTOCOL ̲BUFFER                        5.10
         RETURN ̲CONTROL ̲OUTPUT ̲RESULT                  5.10

         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                       5.11
         CANCEL ̲CONTROLLER ̲INPUT                       5.11
         CANCEL ̲CONTROLLER ̲PROT ̲CONT                   5.11
         CANCEL ̲CONTROLLER ̲PROTOCOL                    5.11
         CANCEL ̲CONTROLLER ̲OUTPUT                      5.11
         EMPTY ̲CONTROLLER ̲PROT ̲CONT ̲DATA ̲Q             5.11
         EMPTY ̲CONTROLLER ̲PROTOCOL ̲DATA ̲Q              5.11


4.1.5.6.4    D̲a̲t̲a̲

         TYPE CONTROLLER ̲DATA = RECORD
             INPUT            : CONTROLLER ̲INPUT ̲DATA
             OUTPUT           : CONTROLLER ̲OUTPUT ̲DATA
             PROT-̲CONT        : CONTROLLER ̲PROT ̲CONT ̲DATA
             PROTOCOL         : CONTROLLER ̲PROTOCOL ̲DATA

                           END



         TYPE CONTROLLER ̲INPUT ̲DATA = RECORD

             STATE: (IDLE,
                     AWAIT ̲OUTPUT,
                     AWAIT ̲DATA,
                     PENDING ̲RESULT,
                     COMPLETE,
                     RESULT ̲RETURNED)

             REQUEST STATE     : ACTIVITY
             BUF ̲SIZE          : INTEGER
             QEL               : IO ̲QEL
             DATA ̲Q            : QD
             DATA ̲Q ̲SIZE       : INTEGER
             PART ̲BUFFER ̲OFFSET: INTEGER
             PART ̲BUFFER ̲LENGTH: INTEGER
             PART ̲BUFFER ̲RET   : BOOLEAN
             RESULT            : COMPLETION ̲CODE

                           END

         STATE:  Gives the state of current input. The AWAIT
                 ̲OUTPUT is in addition to USER ̲INTERFACE states.

         For other INPUT parameters ref USER ̲INTERFACE module
         section 4.1.5.5.4.

         TYPE CONTROLLER ̲OUTPUT ̲DATA = RECORD

             STATE:  (IDLE,
                      AWAIT ̲HEADER
                      FIRST ̲BUFFER,
                      ACTIVE)

             QEL  :  IO ̲QEL

             HEAD :  (SUBDEV, LOWER ̲PROTOCOL ̲OUTPUT, 
                      LOWER ̲PROTOCOL ̲OUTPUT ̲INPUT,
                      EXTERNAL ̲DEVICE ̲INPUT,
                      EXTERNAL ̲DEVICE ̲OUTPUT)

         HEAD ̲BUFFER ̲ENTRY : BUFFER ̲ENTRY

                           END




         STATE   Describes current LDU in output. Since the
                 possible type of TMS output buffers differ
                 from what the OUTPUTTER requires the CONTROLLER
                 must itself keep track. (The reason being the
                 HEAD output)

         HEAD, HEAD ̲BUFFER ̲ENTRY.
                 The HEAD word will always be the first two
                 bytes TMS outputs for control output.

         TYPE CONTROLLER ̲PROT ̲CONT ̲DATA = RECORD

                 QEL   : IO ̲QEL
                 DATA ̲Q: QD

                           END

         TYPE CONTROLLER ̲PROTOCOL ̲DATA = RECORD

                 QEL   : IO ̲QEL
                 DATA ̲Q: QD

                           END




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


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

         These are:  INITIALIZE CONTROLLER
                     CLEAN CONTROLLER


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

    Input data.

 P= OWN ̲SDID. CONTROLLER

 P. INPUT. STATE = IDLE

 P. INPUT. REQ ̲STATE = IDLE

 INIT ̲QD  (P.INPUT. DATA ̲Q)()

 P. INPUT. DATA ̲Q ̲SIZE = 0

 P. INPUT. PART ̲BUFFER ̲RET = FALSE

    Output data

 P. OUTPUT. STATE = IDLE

 LOAD HEAD ̲BUFFER ̲ENTRY

  PROT ̲CONT data

 INIT ̲QD (OWN ̲SDID. CONTROLLER. PROT ̲CONT. DATA.Q)()

 PROTOCOL data

 INIT ̲QD (OWN ̲SDID. CONTROLLER. PROTOCOL. DATA ̲Q)()

 RETURN





               Figure 4.1.5.6.5.1-1


 CLEAN ̲CONTROLLER ()()
    The CONTROLLER is responsible for the DATA ̲Q, a
    possible PROT ̲CONT buffer and a PROTOCOL buffer.

 EMPTY ̲CONTROLLER ̲DATA ̲Q ()()

 EMPTY ̲CONTROLLER ̲PROT ̲CONT ̲DATA ̲Q ()()

 EMPTY ̲CONTROLLER ̲PROTOCOL ̲DATA ̲Q ()()

 RETURN




































               Figure 4.1.5.6.5.1-2


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

         These are:  ENABLE ̲CONTROL ̲INPUT
                     ACK ̲CONTROL ̲INPUT



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

 OWN ̲SDID. CONTROLLER. INPUT. REQ ̲STATE = ACTIVE

 OWN ̲SDID. CONTROLLER. INPUT. BUF ̲SIZE = PARS. BUF ̲SIZE

 PARS. H ̲OPID = OWN ̲SDID. CONTROLLER. INPUT. QEL

 OWN ̲SDID. CONTROLLER. INPUT.
 STATE NE IDLE

 S̲E̲T̲U̲P̲ ̲C̲O̲N̲T̲R̲O̲L̲ ̲I̲N̲P̲U̲T̲ ̲2̲     G̲E̲T̲ ̲N̲E̲X̲T̲ ̲C̲O̲N̲T̲R̲O̲L̲ ̲I̲N̲P̲U̲T̲ ̲3̲

 RETURN



























                Figure 4.1.5.6.5-1


 S̲E̲T̲U̲P̲ ̲C̲O̲N̲T̲R̲O̲L̲ ̲I̲N̲P̲U̲T̲ ̲2̲

 QEL = OWN ̲SDID. CONTROLLER. INPUT. QEL

 QEL.REQ ̲REF = PARS. OPID

 QEL. REQUESTOR = CONTROLLER

 OWN ̲SDID. CONTROLLER, INPUT. STATE = AWAIT ̲OUTPUT

 CC = REQUEST ̲QUEUE



































               Figure 4.1.5.6.5.2-2


 G̲E̲T̲ ̲N̲E̲X̲T̲ ̲C̲O̲N̲T̲R̲O̲L̲ ̲I̲N̲P̲U̲T̲ ̲3̲

    External device input is the only input not returned
    to the requestor as a result of first request.

 I = OWN ̲SDID. CONTROLLER. INPUT

 R = OWN ̲SDID. REPLY

    Data ?

 I. DATA ̲Q ̲SIZE LE ZERO ?

                                 I. STATE NE        CC=REQUEST
                                                    ̲
                                 PENDING ̲RESULT?    QUEUED

 RETURN ̲CONTROLLER ̲DATA()()      RETURN ̲CONTROLLER ̲INPUT
                                 ̲RESULT()()

    Load return parameters

 LOAD ̲BUFFER ̲RETURN (PARS)()

 SEND ̲OPERATIONS ̲REPLY ()()























               Figure 4.1.5.6.5.2-3


 ACK ̲CONTROL ̲INPUT ()()

 CASE OWN ̲SDID. CONTROLLER. OUTPUT. HEAD OF

    SUBDEV ?                         A̲C̲K̲ ̲S̲U̲B̲D̲E̲V̲ ̲5̲

    LOWER ̲PROTOCOL ?                 A̲C̲K̲ ̲C̲O̲N̲T̲R̲O̲L̲ ̲P̲R̲O̲T̲O̲C̲O̲L̲
                                     ̲6̲

    EXTERNAL ̲DEVICE ̲INPUT ?          A̲C̲K̲ ̲D̲E̲V̲I̲C̲E̲ ̲I̲N̲P̲U̲T̲
                                     ̲7̲

    OTHER ?          PROTOCOL ̲ERROR (CONTROLLER ̲2 ̲4)

 END CASE

 RETURN
































              Figure 4.1.5.6.5.2-4.


 A̲C̲K̲ ̲S̲U̲B̲D̲E̲V̲ ̲5̲

 OWN ̲SDID. CONTROLLER. INPUT. STATE = IDLE

 CASE EXTRACT ̲FIRST (OWN ̲SDID. CONTROLLER. PROTOCOL.
 DATA ̲Q)
                                                    
                                                    (BUF)
                                                    OF

    FAIL ?          PROTOCOL ̲ERROR (CONTROLLER ̲2 ̲5)

    PASS ?

 END

 RELEASE ̲PROTOCOL ̲BUFFER (BUF)()


































               Figure 4.1.5.6.5.2-5


 A̲C̲K̲ ̲C̲O̲N̲T̲R̲O̲L̲ ̲P̲R̲O̲T̲O̲C̲O̲L̲ ̲6̲

 OWN ̲SDID. CONTROLLER. INPUT. STATE = IDLE

 CASE EXTRACT ̲FIRST (OWN ̲SDID,CONTROLLER.PROT ̲CONT.DATA
 ̲Q)(BUF)OF

    FAIL ?        PROTOCOL ̲ERROR (CONTROLLER ̲2 6)

    PASS ?

 END CASE

 RELEASE ̲INPUT ̲BUFFER (BUF)()

































               Figure 4.1.5.6.5.2-6


 A̲C̲K̲ ̲D̲E̲V̲I̲C̲E̲ ̲I̲N̲P̲U̲T̲ ̲7̲

 I = OWN ̲SDID. CONTROLLER. INPUT

    Was result returned

 I. STATE EQ RESULT ̲RETURNED ?   I.STATE = IDLE

    Was only part buffer returned ?

 I. PART ̲BUFFER ̲RET ?

    Release buffer

 CASE EXTRACT ̲FIRST (I.DATA ̲Q)(BUF) OF

    FAIL ?    PROTOCOL ̲ERROR (CONTROLLER ̲2 ̲7)

    PASS ?

 END CASE

 I. DATA ̲Q ̲SIZE/1

 RELEASE ̲INPUT ̲BUFFER (BUF)()

 I. STATE EQ COMPLETE ?    I.STATE = IDLE

               Figure 4.1.5.6.5.2-7


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

         These are:  GET ̲CONTROL ̲BUFFER
                     CONTROLLER ̲OUTPUT






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

 OWN ̲SDID. CONTROLLER. OUTPUT ̲STATE
 NE IDLE ?

 S̲E̲T̲U̲P̲ ̲C̲O̲N̲T̲R̲O̲L̲ ̲O̲U̲T̲ ̲2̲                    G̲E̲T̲ ̲N̲E̲X̲T̲ ̲C̲O̲N̲T̲R̲O̲L̲
 ̲B̲U̲F̲F̲E̲R̲ ̲3̲








































               Figure 4.1.5.6.5.3-1


 S̲E̲T̲U̲P̲ ̲C̲O̲N̲T̲R̲O̲L̲ ̲O̲U̲T̲ ̲2̲

 OWN ̲SDID.CONTROLLER. OUTPUT. QEL.REQ ̲REF = PARS.OPID

 OWN ̲SDID. CONTROLLER.OUTPUT. QEL. REQUESTOR = CONTROLLER

 OWN ̲SDID. CONTROLLER. OUTPUT. STATE = AWAIT ̲HEADER

    Return header as output buffer

 PARS. H ̲OPID = OWN ̲SDID. CONTROLLER. OUTPUT. QEL

 PARS. BUF ̲SIZE = CONTROL ̲HEADER ̲BYTE ̲SIZE

 PARS. PAGE ̲ADDR = OWN ̲SDID. CONTROLLER. OUTPUT. HEAD
 ̲PAGE ̲ADDR

 PARS. BYTE ̲ADDR = OWN ̲SDID. CONTROLLER. OUTPUT: HEAD
 ̲PAGE ̲OFFSET

 CC = OK



























               Figure 4.1.5.6.5.3-2


 G̲E̲T̲ ̲N̲E̲X̲T̲ ̲C̲O̲N̲T̲R̲O̲L̲ ̲B̲U̲F̲F̲E̲R̲ ̲3̲

 PARS. H ̲OPID = OWN ̲SDID. CONTROLLER. OUTPUT. QEL

 OWN ̲SDID. CONTROLLER. OUTPUT. QEL. REQ ̲REF = PARS.OPID

 CASE OWN ̲SDID. CONTROLLER. OUTPUT. HEAD OF

    SUBDEV ?                 L̲O̲C̲A̲L̲ ̲B̲U̲F̲F̲E̲R̲ ̲4̲

    LOWER ̲PROTOCOL ̲OUTPUT ̲INPUT,
    LOWER ̲PROTOCOL ̲OUTPUT ?  P̲R̲O̲T̲O̲C̲O̲L̲ ̲C̲O̲N̲T̲R̲O̲L̲ ̲5̲

    EXTERNAL ̲DEVICE ̲INPUT ?  I̲N̲P̲U̲T̲ ̲R̲E̲Q̲U̲E̲S̲T̲ ̲6̲

    EXTERNAL ̲DEVICE ̲OUTPUT ? O̲U̲T̲P̲U̲T̲ ̲R̲E̲Q̲U̲E̲S̲T̲ ̲7̲

    OTHER ?  PROTOCOL ̲ERROR  CONTROLLER ̲3 ̲3)

 END CASE



























               Figure 4.1.5.6.5.3-3



 L̲O̲C̲A̲L̲ ̲B̲U̲F̲F̲E̲R̲ ̲4̲

 QEL = OWN ̲SDID. CONTROLLER. PROTOCOL ̲QEL

 REQUEST ̲PROTOCOL (QEL, CONTROLLER ̲PRIORITY)
                  (CCP, BUFFER ̲REF)

 CCP NE OK ?            CC = CCP

 RETURN ̲PROTOCOL ̲BUFFER (QEL, BUFFER ̲REF)

 LOAD ̲BUFFER ̲RETURN (PARS)()

 CC = OK



























               Figure 4.1.5.6.5.3-4



 P̲R̲O̲T̲O̲C̲O̲L̲ ̲C̲O̲N̲T̲R̲O̲L̲ ̲5̲

 QEL = OWN ̲SDID. CONTROLLER. PROT ̲CONT. QEL

 REQUEST ̲PROT ̲CONT (QEL, CONTROLLER ̲PRIORITY)(CCP, BUFFER
 ̲REF)

 CCP NE OK ?             CC = CCP

 RETURN ̲PROT ̲CONT.BUFFER (QEL, BUFFER ̲REF)()

 LOAD ̲BUFFER ̲RETURN (PARS)()

 CC = OK



































               Figure 4.1.5.6.5.3-5


 I̲N̲P̲U̲T̲ ̲R̲E̲Q̲U̲E̲S̲T̲ ̲6̲

 QEL = OWN ̲SDID. CONTROLLER. INPUT. QEL

 REQUEST ̲DATA ̲INPUT (QEL,CONTROLLER ̲PRIORITY)(CCP,BUFFER
 ̲REF)

 CCP NE OK ?                 CC = CCP

 OWN ̲SDID. CONTROLLER. BUFFER ̲ENTRY = BUFFER ̲REF

 RETURN ̲INPUT ̲REQUEST ̲BUFFER (QEL, BUFFER ̲REF)()

 LOAD ̲BUFFER ̲RETURN (PARS)()

 CC = OK
































               Figure 4.1.5.6.5.3-6


 O̲U̲T̲P̲U̲T̲ ̲R̲E̲Q̲U̲E̲S̲T̲ ̲7̲

 OWN ̲SDID. CONTROLLER. OUTPUT. STATE
 EQ ACTIVE

 F̲I̲R̲S̲T̲ ̲O̲U̲T̲P̲U̲T̲ ̲B̲U̲F̲F̲E̲R̲ ̲8̲                N̲E̲X̲T̲ ̲O̲U̲T̲P̲U̲T̲ ̲B̲U̲F̲F̲E̲R̲
 ̲9̲








































               Figure 4.1.5.6.5.3-7


 F̲I̲R̲S̲T̲ ̲O̲U̲T̲P̲U̲T̲ ̲B̲U̲F̲F̲E̲R̲ ̲8̲

 QEL = OWN ̲SDID. CONTROLLER. OUTPUT.QEL

 REQUEST ̲DATA ̲OUTPUT (QEL, CONTROLLER ̲PRIORITY)(CCP,
 BUFFER ̲REF)

 CCP NE OK ?                    CC = CCP

 RETURN ̲FIRST ̲DATA ̲BUFFER (QEL, BUFFER ̲REF)()

 LOAD ̲BUFFER ̲RETURN (PARS)()

 CC = OK

































               Figure 4.1.5.6.5.3-8


 N̲E̲X̲T̲ ̲O̲U̲T̲P̲U̲T̲ ̲B̲U̲F̲F̲E̲R̲ ̲9

 REQUEST ̲NEXT ̲BUFFER () (CCP, BUFFER ̲REF)

 CCP NE OK                 CC = CCP

 RETURN ̲NEXT ̲DATA ̲BUFFER (QEL, BUFFER ̲REF)()

 LOAD ̲BUFFER ̲RETURN (PARS)()

 CC = OK




































               Figure 4.1.5.6.5.3-9


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

 OWN ̲SDID. CONTROLLER. OUTPUT.
 STATE EQ AWAIT ̲HEADER        ?      H̲E̲A̲D̲E̲R̲ ̲O̲U̲T̲P̲U̲T̲ ̲1̲1̲
 

 CASE OWN ̲SDID. CONTROLLER. OUTPUT.
 HEAD OF

    SUBDEV ?                         L̲O̲C̲A̲L̲ ̲O̲U̲T̲P̲U̲T̲ ̲1̲2̲
                                     ̲

    LOWER ̲PROTOCOL ̲OUTPUT ̲INPUT ?    P̲R̲O̲T̲O̲C̲O̲L̲ ̲C̲O̲N̲T̲R̲O̲L̲
                                     ̲1̲3̲

    LOWER ̲PROTOCOL ̲OUTPUT ?          P̲R̲O̲T̲O̲C̲O̲L̲ ̲O̲U̲T̲P̲U̲T̲
                                     ̲1̲4̲

    EXTERNAL ̲DEVICE ̲INPUT ?          E̲X̲T̲E̲R̲N̲A̲L̲ ̲D̲E̲V̲I̲C̲E̲
                                     ̲I̲N̲P̲U̲T̲ ̲1̲5̲

    EXTERNAL ̲DEVICE ?                E̲X̲T̲E̲R̲N̲A̲L̲ ̲D̲E̲V̲I̲C̲E̲
                                     ̲O̲U̲T̲P̲U̲T̲ ̲1̲6̲
    OUTPUT

    OTHER ?              PROTOCOL ̲ERROR (CONTROLLER
                         ̲3 ̲10)

 END CASE

 RETURN






















              Figure 4.1.5.6.5.3-10


 H̲E̲A̲D̲E̲R̲ ̲O̲U̲T̲P̲U̲T̲ ̲1̲1̲

 ISTATE = OWN ̲SDID. CONTROLLER. INPUTTER ̲STATE

 CASE OWN ̲SDID. CONTROLLER. OUTPUT. HEAD OF

    SUBDEV ?

    LOWER ̲PROTOCOL ̲OUTPUT ̲INPUT?

    EXTERNAL ̲DEVICE ̲INPUT ?

                             ISTATE EQ AWAIT ̲OUTPUT
                             ?

                             CHECK=FAIL            
                                CHECK=OK

    LOWER ̲PROTOCOL ̲OUTPUT ?

    EXTERNAL ̲DEVICE ̲OUTPUT ? ISTATE EQ IDLE?
                                                    CHECK=OK
                             CHECK=FAIL

    OTHER ? CHECK=FAIL

 END CASE

 PARMS.TYPE EQ START ̲OF ̲LDU
 AND CHECK EQ OK  ?          CC = OK

 ISTATE EQ IDLE ?

 TERMINATE ̲CONTROL ̲INPUT (UNKNOWN ̲CONTROL)()

 OWN ̲SDID. CONTROLLER. OUTPUT. STATE = IDLE

 CC = UNKNOWN ̲CONTROL









              Figure 4.1.5.6.5.3-11


 L̲O̲C̲A̲L̲ ̲O̲U̲T̲P̲U̲T̲ ̲1̲2̲

 PARMS. TYPE NE END ̲OF ̲LDU ?             CC= TOO ̲MUCH
                                         ̲DATA

 OWN ̲SDID. CONTROLLER. INPUT. STATE = AWAIT ̲DATA

 LOCAL ̲CONTROL (PARS.BYTE ̲COUNT)(CC)

 CC NE OK ?

                         TERMINATE ̲CONTROL ̲INPUT (CC)()

 OWN ̲SDID. CONTROLLER. OUTPUT ̲STATE = IDLE


































              Figure 4.1.5.6.5.3-12


 P̲R̲O̲T̲O̲C̲O̲L̲ ̲C̲O̲N̲T̲R̲O̲L̲ ̲1̲3̲

 SIZE= PARMS. BYTE ̲COUNT + PROTOCOL ̲COMMAND ̲DATA ̲OFFSET

 SEND ̲PROT ̲CONT (TRUE, SIZE)()

 OWN ̲SDID. CONTROLLER. OUTPUT ̲STATE = IDLE

 CC = OK






































              Figure 4.1.5.6.5.3-13


 L̲O̲W̲E̲R̲ ̲P̲R̲O̲T̲O̲C̲O̲L̲ ̲O̲U̲T̲P̲U̲T̲ ̲1̲4̲

 SIZE= PARMS. BYTE ̲COUNT + PROTOCOL ̲COMMAND ̲DATA ̲OFFSET

 SEND ̲PROT ̲CONT (FALSE, SIZE)()

 OWN ̲SDID. CONTROLLER. OUTPUT. STATE = IDLE

 CC = OK






































              Figure 4.1.5.6.5.3-14


 E̲X̲T̲E̲R̲N̲A̲L̲ ̲D̲E̲V̲I̲C̲E̲ ̲I̲N̲P̲U̲T̲ ̲1̲5̲

    send input request

 RBUF = OWN ̲SDID. CONTROLLER. BUFFER ̲ENTRY

 BUFFER = RBUF. PAGE ̲START

 START ̲RBUF. BUFFER ̲ADDR

    Size does not include the size-byte

 SIZE = BUFFER (START + INPUT ̲REQUEST ̲DATA ̲OFFSET) +
 1

 SEND ̲INPUT ̲REQUEST (SIZE)()

 OWN ̲SDID. CONTROLLER. OUTPUT. STATE = IDLE

 CC = OK




























              Figure 4.1.5.6.5.3-15


 E̲X̲T̲E̲R̲N̲A̲L̲ ̲D̲E̲V̲I̲C̲E̲ ̲O̲U̲T̲P̲U̲T̲ ̲1̲6̲

 Note  that Head will always be start of LDU so type
       shall be modified for the outputter.

 TYPE = PARMS. BUFFER ̲TYPE

 CASE OWN ̲SDID. CONTROLLER. OUTPUT. STATE OF

    FIRST ̲BUFFER ?                   F̲I̲R̲S̲T̲ ̲D̲A̲T̲A̲ ̲1̲6̲ ̲

    ACTIVE ?                         ADD = LDU ̲DATA
                                     ̲OFFSET

    OTHER ?      PROTOCOL ̲ERROR (CONTROLLER  ̲3 ̲16)

 END CASE

 BYTE ̲COUNT = PARMS. BYTE ̲COUNT + ADD

 SEND ̲OUTPUT ̲BUFFER (TYPE, BYTE ̲COUNT)()

 CC = REQUEST ̲QUEUED

























              Figure 4.1.5.6.5.3-16


 F̲I̲R̲S̲T̲ ̲D̲A̲T̲A̲ ̲1̲7̲

 TYPE EQ PART ̲OF ̲LDU ?       TYPE = START OF LDU

 TYPE = ENTIRE ̲LDU

 ADD = START ̲LDU ̲DATA ̲OFFSET

 OWN ̲SDID. CONTROLLER: OUTPUT. STATE = ACTIVE





































              Figure 4.1.5.6.5.3-17


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

         This is:    CANCEL ̲CONTROLLER ̲OPERATION





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

 C = OWN ̲SDID. CONTROLLER

 CASE QEL OF

    C.INPUT.QEL ?                    I̲N̲P̲U̲T̲ ̲C̲A̲N̲C̲E̲L̲ ̲2̲

    C.OUTPUT.QEL ?                   O̲U̲T̲P̲U̲T̲ ̲C̲A̲N̲C̲E̲L̲ ̲4̲

    OTHER ?          PROTOCOL ̲ERROR (CONTROLLER ̲4 ̲1)

 END CASE

 RETURN
































               Figure 4.1.5.6.5.4-1


 I̲N̲P̲U̲T̲ ̲C̲A̲N̲C̲E̲L̲ ̲2̲

 C.INPUT.REQUEST ̲STATE EQ IDLE ?

 LOAD ̲CANCEL ̲REPLY()()

 SEND ̲OPERATIONS ̲REPLY ()()

 C. INPUT. STATE EQ AWAIT ̲OUTPUT ?

 C. INPUT. STATE EQ COMPLETE ?

 C. INPUT. STATE EQ RESULT ̲RETURNED ?

 C. INPUT. STATE = IDLE

 CASE C.OUTPUT. HEAD OF

    SUBDEV ?

    LOWER ̲PROTOCOL ̲OUTPUT ̲INPUT
    LOWER ̲PROTOCOL

    EXTERNAL ̲DEVICE ̲INPUT ?          I̲N̲P̲U̲T̲ ̲3̲

    OTHER ?          PROTOCOL ̲ERROR (CONTROLLER  ̲4 ̲2)

 END CASE

                                     C. INPUT. STATE
                                     = IDLE


















               Figure 4.1.5.6.5.4-2


 I̲N̲P̲U̲T̲ ̲3̲

 CANCEL ̲CONTROLLER ̲INPUT (C.INPUT.QEL)()












































               Figure 4.1.5.6.5.4-3


 O̲U̲T̲P̲U̲T̲ ̲C̲A̲N̲C̲E̲L̲ ̲4̲

 CASE C.OUTPUT. STATE OF

    AWAIT ̲HEADER ?               H̲E̲A̲D̲E̲R̲ ̲5̲

    OTHER ? CASE C.OUTPUT.HEAD OF

                 SUBDEV?                         S̲U̲B̲D̲E̲V̲
                                                 ̲6̲

                 LOWER ̲PROTOCOL ̲OUTPUT?          L̲O̲W̲E̲R̲
                                                 ̲7̲
                 LOWER ̲PROTOCOL ̲OUTPUT ̲INPUT?

                 EXTERNAL ̲DEVICE ̲OUTPUT?         E̲X̲T̲
                                                 ̲D̲E̲V̲
                                                 ̲O̲U̲T̲
                                                 ̲8̲

                 EXTERNAL ̲DEVICE ̲INPUT?

                 OTHER?  PROTOCOL ̲ERROR (CONTROLLER
                 ̲11 ̲4)

             END CASE

 END CASE

























               Figure 4.1.5.6.5.4-4


 H̲E̲A̲D̲E̲R̲ ̲5̲

 C. INPUT. STATE = IDLE

 C. INPUT. STATE EQ IDLE ?

 TERMINATE ̲CONTROL ̲INPUT (OUT ̲CANCELLED)()








































               Figure 4.1.5.6.5.4-5


 S̲U̲B̲D̲E̲V̲ ̲6̲

 CANCEL ̲CONTROLLER ̲PROTOCOL (QEL)()











































               Figure 4.1.5.6.5.4-6


 L̲O̲W̲E̲R̲ ̲7̲

 CANCEL ̲CONTROLLER ̲PROT ̲CONT (QEL)()












































               Figure 4.1.5.6.5.4-7


 E̲X̲T̲ ̲D̲E̲V̲ ̲O̲U̲T̲ ̲8̲

 CANCEL ̲OUTPUT (QEL)()












































               Figure 4.1.5.6.5.4-8


4.1.5.6.5.5 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̲

         These are:  NOTIFY ̲CONTROLLER ̲FIRST ̲OUTPUT
                     ̲BUFFER
                     NOTIFY ̲CONTROLLER ̲SUBSEQUENT ̲OUTPUT
                     ̲BUFFER
                     CONTROLLER ̲OUTPUT ̲RESULT




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

 RETURN ̲FIRST ̲DATABUFFER (QEL, BUFFER ̲REF)()

 SEND ̲OPERATIONS ̲REPLY()()

 RETURN






































               Figure 4.1.5.6.5.5-1


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

 RETURN ̲NEXT ̲DATABUFFER (QEL,BUFFER ̲REF)()

 SEND ̲OPERATIONS ̲REPLY()()

 RETURN







































               Figure 4.1.5.6.5.5-2


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

 QEL. REQUESTOR = NONE

 RETURN ̲CONTROL ̲OUTPUT ̲RESULT (QEL, BUFFER ̲ENTRY)()

 SEND ̲OPERATIONS ̲REPLY()()

 RELEASE ̲INPUT ̲BUFFER (BUFFER ̲ENTRY)()

 OWN ̲SDID. CONTROLLER. OUTPUT. STATE = IDLE

 RETURN


































               Figure 4.1.5.6.5.5-3


4.1.5.6.5.6 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̲

         These are:  NOTIFY ̲CONTROLLER ̲INPUT ̲REQUEST
                     ̲BUFFER
                     NOTIFY ̲CONTROLLER ̲FIRST ̲INPUT ̲DATA
                     NOTIFY ̲CONTROLLER ̲INPUT ̲DATA
                     CONTROLLER ̲INPUT ̲RESULT




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

 OWN ̲SDID. CONTROLLER. BUFFER ̲ENTRY = BUFFER ̲ENTRY

 RETURN ̲INPUT ̲REQUEST ̲BUFFER (QEL, BUFFER ̲REF)()

 SEND ̲OPERATIONS ̲REPLY()()

 RETURN





































               Figure 4.1.5.6.5.6-1


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

 NOTIFY ̲CONTROLLER ̲INPUT ̲DATA (QEL, BUFFER ̲ENTRY)()

 RETURN









































               Figure 4.1.5.6.5.6-2


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

 INSERT (BUFFER ̲ENTRY, OWN.SDID.CONTROLLER.INPUT. DATA
 ̲Q)()

 OWN ̲SDID. CONTROLLER. INPUT. DATA ̲Q ̲SIZE + 1

 IS DATA ̲Q ̲SIZE GT 1 ?

 NEXT ̲CONTROLLER ̲DATA ̲QEL()()

    No request just now

 OWN ̲SDID. CONTROLLER. INPUT.
 REQUEST ̲STATUS EQ IDLE ?

 RETURN ̲CONTROLLER ̲DATA()()

 SEND ̲OPERATIONS ̲REPLY()()

 RETURN



























               Figure 4.1.5.6.5.6-3


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

 QEL. REQUESTOR = NONE

 BUFFER = BUFFER ̲ENTRY. PAGE ̲START

 START = BUFFER ̲ENTRY. BUFFER ̲ADDR

 RESULT = BUFFER (START + RECEPTION ̲STATUS ̲CODE ̲OFFSET)

 OWN ̲SDID. CONTROLLER. INPUT. RESULT = RESULT

 OWN ̲SDID. CONTROLLER. INPUT.STATE = PENDING ̲RESULT

    Data awaited ?

 OWN ̲SDID. CONTROLLER. INPUT, DATA ̲Q ̲SIZE GE 1 ?

 OWN ̲SDID. CONTROLLER ̲INPUT.     No queued request  
                                                    
                                                    
                                                    data
                                                    still
 REQUEST ̲STATUS EQ IDLE     ?                       
                                                    
                                                    
                                                    pending

 RETURN ̲CONTROLLER ̲INPUT ̲RESULT()()

 SEND ̲OPERATIONS ̲REPLY()()

 RELEASE ̲INPUT ̲BUFFER (BUFFER ̲ENTRY)()

 RETURN



















              Figure 4.1.5.6.5.6.-4


4.1.5.6.5.7 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̲ ̲

         These are:  NOTIFY ̲CONTROLLER ̲PROT ̲CONT ̲BUFFER
                     CONTROLLER ̲PROT ̲CONT ̲RESULT




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

 RETURN ̲PROT ̲CONT ̲BUFFER (QEL, BUFFER ̲ENTRY)()

 SEND ̲OPERATIONS REPLY()()

 RETURN






































               Figure 4.1.5.6.5.7-1


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

    The result is always contained in a buffer of type
    Entire LDU
    and the requestor gets as much as he has requested

 RETURN ̲PROT ̲CONT ̲DATA (QEL, BUFFER ̲ENTRY)()

 SEND ̲OPERATIONS ̲REPLY()()

 INSERT (OWN ̲SDID.CONTROLLER. PROT ̲CONT. DATA ̲Q, BUFFER
 ̲ENTRY)()

 RETURN

































               Figure 4.1.5.6.5.7-2


4.1.5.6.5.8 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̲

         These are:  NOTIFY ̲CONTROLLER ̲PROTOCOL ̲BUFFER
                     CONTROLLER ̲PROTOCOL ̲RESULT





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

 RETURN ̲PROTOCOL ̲BUFFER (QEL,BUFFER ̲ENTRY)

 SEND ̲OPERATIONS ̲REPLY()()

 RETURN





































               Figure 4.1.5.6.5.8-1


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

    The result is always contained in an Entire LDU
    buffer.

 RETURN ̲PROTOCOL ̲DATA (QEL, BUFFER ̲ENTRY)()

 SEND ̲OPERATIONS ̲REPLY

 INSERT (OWN ̲SDID. CONTROLLER.PROTOCOL. DATA ̲Q, BUFFER
 ̲ENTRY)()

 RETURN




































               Figure 4.1.5.6.5.8-2


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

         These are:  TERMINATE ̲CONTROL ̲INPUT
                     RETURN ̲CONTROLLER ̲DATA
                     RETURN ̲CONTROLLER ̲INPUT ̲RESULT
                     RETURN ̲PROT ̲CONT ̲DATA
                     RETURN ̲PROTOCOL ̲DATA




 TERMINATE ̲CONTROL ̲INPUT (CODE:COMPLETION ̲CODE)()

    This is used to terminate pending input where data
    has not yet been returned.

 OWN ̲SDID. CONTROLLER. INPUT. RESULT = CODE

 RETURN ̲CONTROLLER ̲INPUT ̲RESULT()()

 OWN ̲SDID. CONTROLLER. INPUT. STATE = RESULT ̲RETURNED

 SEND ̲OPERATIONS ̲REPLY()()

 RETURN

































               Figure 4.1.5.6.5.9-1


 RETURN ̲CONTROLLER ̲DATA()()

 RBUF = OWN ̲SDID. CONTROLLER. INPUT. DATA ̲Q. EP

 BUFFER = RBUF. PAGE ̲START

 START = RBUF. BUFFER ̲ADDR

 LDU ̲TYPE = BUFFER (START + LDU ̲TYPE ̲OFFSET)

 LDU ̲TYPE EQ START ̲OF ̲LDU ?

 LDU ̲TYPE EQ ENTIRE ̲LDU ?

    Can one return all data ?

 OWN ̲SDID. CONTROLLER. INPUT. PART ̲BUFFER ̲SIZE
 GT OWN ̲SDID. CONTROLLER. INPUT. BUF ̲SIZE      ?

 R̲E̲T̲U̲R̲N̲ ̲L̲A̲S̲T̲ ̲D̲A̲T̲A̲ ̲3̲                  R̲E̲T̲U̲R̲N̲ ̲M̲I̲D̲ ̲O̲R̲ ̲F̲I̲R̲S̲T̲
                                     ̲D̲A̲T̲A̲ ̲4̲

 OWN ̲SDID. CONTROLLER. INPUT.
    STATE = COMPLETE

 OWN ̲SDID. REPLY. RESULT = OK

 OWN ̲SDID. REPLY. H ̲OPID = OWN ̲SDID. CONTROLLER. INPUT.
 QEL

 OWN ̲SDID. REPLY. OPID = OWN ̲SDID.CONTROLLER. INPUT.
 QEL. REQ ̲REF

 OWN ̲SDID. CONTROLLER. INPUT. REQUEST ̲STATE = IDLE

 RETURN














               Figure 4.1.5.6.5.9-2


 R̲E̲T̲U̲R̲N̲ ̲L̲A̲S̲T̲ ̲D̲A̲T̲A̲ ̲3̲

    This includes return of ENTIRE ̲LDU

 OWN ̲SDID. REPLY. BUFFER ̲TYPE = LDU ̲TYPE

 I = OWN ̲SDID. CONTROLLER. INPUT

 OWN ̲SDID. REPLY. PAGE ̲ADDR = I. DATA ̲Q.EP. PAGE ̲ADDR

 OWN ̲SDID. REPLY. BYTE ̲ADDR = I. PART ̲BUFFER ̲OFFSET

 OWN ̲SDID. REPLY. BYTE ̲COUNT = I. PART ̲BUFFER ̲SIZE

 I. PART ̲BUFFER ̲RET = FALSE

 OWN ̲SDID. REPLY. RESULT = OK





























               Figure 4.1.5.6.5.9-3




 R̲E̲T̲U̲R̲N̲ ̲M̲I̲D̲ ̲O̲R̲ ̲F̲I̲R̲S̲T̲ ̲D̲A̲T̲A̲ ̲4̲

 I= OWN ̲SDID. CONTROLLER. INPUT

 R= OWN ̲SDID. REPLY

 I. PART ̲BUFFER ̲RET ?

 LDU ̲TYPE NE START ̲OF ̲LDU?

 TYP= START ̲OF ̲LDU                           TYP= PART
                                             ̲OF ̲LDU

 R. BUFFER ̲TYPE = TYP

 R. PAGE ̲ADDR = I. DATA ̲Q. EP. PAGE ̲ADDR

 R. BYTE ̲ADDR = I. PART ̲BUFFER ̲OFFSET

 I. BUF ̲SIZE GE I. PART ̲BUFFER ̲SIZE ?

    Return only part of buffer

 R. BYTE ̲COUNT = I. BUF ̲SIZE

    Reduce size of left-over date

 I. PART ̲BUFFER ̲SIZE - I.BUF ̲SIZE

 I. PART ̲BUFFER ̲OFFSET + I. BUF ̲SIZE

    Mark part buffer returned

 I. PART ̲BUFFER ̲RET = TRUE

                                     Return rest of
                                     buffer

                                 R.BYTE ̲COUNT=I.PART
                                 ̲BUFFER ̲SIZE

                                    Mark that all buffer
                                 returned

                                 I. PART ̲BUFFER ̲RET
                                 = FALSE




               Figure 4.1.5.6.5.9-4


 RETURN ̲CONTROLLER ̲INPUT ̲RESULT()()

 R = OWN ̲SDID. REPLY

 I = OWN ̲SDID. CONTROLLER. INPUT

 R. RESULT = I. RESULT

 R. BYTE ̲COUNT = ZERO

 I. STATE = RESULT ̲RETURNED

 R. H ̲OPID = I.QEL

 R. OPID = I. QEL. REQ ̲REF

 I. REQUEST ̲STATE = IDLE

 RETURN

























               Figure 4.1.5.6.5.9-5


 RETURN ̲PROT ̲CONT ̲DATA()()

 B = OWN ̲SDID. CONTROLLER. PROT ̲CONT. DATA ̲Q. EP

 R = OWN ̲SDID. REPLY

 R. PAGE ̲ADDR = B.PAGE ̲ADDR

 R. BYTE ̲ADDR = B.BUFFER ̲ADDR + PROTOCOL ̲STATUS ̲DATA
 ̲OFFSET

 R. BYTE ̲COUNT = B.BUFFER ̲SIZE - PROTOCOL ̲STATUS ̲DATA
 ̲OFFSET

 R. BUFFER ̲TYPE = ENTIRE ̲LDU

 R. RESULT = OK

 QEL = OWN ̲SDID. CONTROLLER. INPUT. QEL

 R. H ̲OPID = QEL

 R. OPID = QEL. REQ ̲REF

 RETURN






















               Figure 4.1.5.6.5.9-6


 RETURN ̲PROTOCOL ̲DATA ()()

 B = OWN ̲SDID. CONTROLLER. PROTOCOL. DATA ̲Q ̲EP

 R = OWN ̲SDID. REPLY

 R. PAGE ̲ADDR = B.PAGE ̲ADDR

 R. BYTE ̲ADDR =  B.BUFFER ̲ADDR

 R. BYTE ̲COUNT = B.BUFFER ̲SIZE

 R. RESULT = OK

 R. BUFFER ̲TYPE = ENTIRE ̲LDU

 QEL = OWN ̲SDID. CONTROLLER. INPUT. QEL

 R. OPID = QEL. REQ ̲REF

 R. H-OPID = QEL


























               Figure 4.1.5.6.5.9-7


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

         These are:  RETURN ̲INPUT ̲REQUEST ̲BUFFER
                     RETURN ̲PROT ̲CONT ̲BUFFER
                     RETURN ̲PROTOCOL ̲BUFFER
                     RETURN ̲CONTROL ̲OUTPUT ̲RESULT





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

 OFFSET = INPUT ̲REQUEST ̲DATA ̲OFFSET

 RETURN ̲BUFFER (QEL, OFFSET, BUFFER ̲ENTRY)()

 RETURN







































              Figure 4.1.5.6.5.10-1


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

 OFFSET = PROTOCOL ̲COMMAND ̲DATA ̲OFFSET

 RETURN ̲BUFFER (QEL, OFFSET, BUFFER ̲ENTRY)()

 RETURN







































              Figure 4.1.5.6.5.10-2


 RETURN ̲PROTOCOL ̲BUFFER (QEL: IO ̲QEL, BUFFER ̲ENTRY:
 POINTER)()

 OFFSET = 0

 RETURN ̲BUFFER (QEL, OFFSET, BUFFER ̲ENTRY)()

 RETURN







































              Figure 4.1.5.6.5.10-3


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

 R = OWN ̲SDID. REPLY

 R. OPID = QEL. REQ ̲REF

 R. H ̲OPID = QEL

 BUFFER = BUFFER ̲ENTRY. PAGE ̲START

 START = BUFFER ̲ENTRY. BUFFER ̲ADDR.

 RESULT = BUFFER (START + TRANSMISSION ̲STATUS ̲CODE ̲OFFSET)

 R. RESULT = RESULT

 RETURN





























              Figure 4.1.5.6.5.10-4


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

         These are:  EMPTY ̲CONTROLLER ̲DATA ̲Q
                     CANCEL ̲CONTROLLER ̲INPUT
                     CANCEL ̲CONTROLLER ̲OUTPUT
                     CANCEL ̲CONTROLLER ̲PROT ̲CONT
                     CANCEL ̲CONTROLLER ̲PROTOCOL
                     EMPTY ̲CONTROLLER ̲PROT ̲CONT ̲DATA
                     ̲Q
                     EMPTY ̲CONTROLLER ̲PROTOCOL ̲DATA
                     ̲Q





 EMPTY ̲CONTROLLER ̲DATA ̲Q()()

 LOOP

    CASE EXTRACT ̲FIRST (OWN ̲SDID.CONTROLLER.INPUT.DATA
    ̲Q)(BUF) OF

       FAIL ?

       PASS ?  RELEASE ̲INPUT ̲BUFFER (BUF)()

    END CASE

 END LOOP

 OWN ̲SDID. CONTROLLER. INPUT. DATA ̲Q ̲SIZE = 0

 RETURN






























              Figure 4.1.5.6.5.11-1


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

 CANCEL ̲INPUT (QEL)()

 EMPTY ̲CONTROLLER ̲DATA ̲Q()()

 QEL. REQUESTOR = NONE

 OWN ̲SDID. CONTROLLER. PART ̲BUFFER ̲RET = FALSE

    Pending request ?

 OWN ̲SDID. CONTROLLER. INPUT. REQUEST ̲STATE EQ IDLE
 ?

 OWN ̲SDID. CONTROLLER. INPUT. RESULT = CANCELLED

 RETURN ̲CONTROL ̲INPUT ̲RESULT ()()

 SEND ̲OPERATIONS ̲REPLY()()

 OWN ̲SDID. CONTROLLER. INPUT ̲STATE = IDLE

 RETURN
























              Figure 4.1.5.6.5.11-2


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

 CANCEL ̲OUTPUT (QEL) ()

 QEL. REQUESTOR = NONE

 QEL. ADDI NE ACTIVE ?

    TMS requires response

 LOAD ̲CANCEL ̲REPLY (QEL)()

 QEL. ADDI = IDLE

 SEND ̲OPERATIONS ̲REPLY ()()

 OWN ̲SDID.CONTROLLER. OUTPUT. STATE = IDLE

 RETURN




























              Figure 4.1.5.6.5.11-3


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

 CANCEL ̲PROT ̲CONT (QEL)()

 EMPTY ̲CONTROLLER ̲PROT ̲CONT ̲DATA ̲Q()()

 OWN ̲SDID. CONTROLLER. INPUT. STATE EQ IDLE ?

 TERMINATE ̲CONTROL ̲INPUT (OUT ̲CANCELLED)()

 QEL. ADDI NE ACTIVE ?

 LOAD ̲CANCEL ̲REPLY (QEL)()

 QEL. ADDI = IDLE

 SEND ̲OPERATIONS ̲REPLY()()

 OWN ̲SDID. CONTROLLER. OUTPUT. STATE = IDLE

 RETURN

























              Figure 4.1.5.6.5.11-4


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

 CANCEL ̲PROTOCOL (QEL)()

 EMPTY ̲CONTROLLER ̲PROTOCOL ̲DATA ̲Q()()

 OWN ̲SDID. CONTROLLER. INPUT ̲STATE. EQ. IDLE ?

 TERMINATE ̲CONTROL ̲INPUT (CANCELLED)()

 QEL. ADDI NE ACTIVE ?

 LOAD ̲CANCEL ̲REPLY (QEL)()

 QEL. ADDI = IDLE

 SEND ̲OPERATIONS ̲REPLY ()()

 OWN ̲SDID. CONTROLLER. OUTPUT. STATE = IDLE

 RETURN.

























              Figure 4.1.5.6.5.11-5


 EMPTY ̲CONTROLLER ̲PROT-CONT ̲DATA ̲Q()()

 LOOP

    CASE EXTRAXT ̲FIRST (OWN ̲SDID. CONTROLLER. PROT ̲CONT.DATA
    ̲Q)
                                                        (BUF)
                                                        OF

       FAIL ?

       PASS ?  RELEASE ̲INPUT ̲BUFFER (BUF)()

    END CASE

 END LOOP

 RETURN































              Figure 4.1.5.6.5.11-6


 EMPTY ̲CONTROLLER ̲PROTOCOL ̲DATA ̲Q()()

 LOOP

    CASE EXTRACT ̲FIRST (OWN ̲SDID. CONTROLLER. PROTOCOL.DATA
    ̲Q)
                                                    
                                                    
                                                    (BUF)
                                                    OF

       FAIL ?

       PASS ?  RELEASE ̲INPUT ̲BUFFER (BUF)()

    END CASE

 END LOOP

 RETURN































              Figure 4.1.5.6.5.11-7