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

⟦e637f14be⟧ Wang Wps File

    Length: 13087 (0x331f)
    Types: Wang Wps File
    Notes: CPS/SDS/028               
    Names: »2022A «

Derivation

└─⟦c59a533be⟧ Bits:30006100 8" Wang WCS floppy, CR 0155A
    └─ ⟦this⟧ »2022A « 

WangText






…02…CPS/SDS/028

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









4.1.4.2  D̲A̲M̲O̲S̲ ̲D̲e̲f̲i̲n̲i̲t̲i̲o̲n̲s̲ ̲f̲o̲r̲ ̲h̲a̲n̲d̲l̲e̲r̲s̲

         TYPE SDD =
           RECORD
             SISTER ̲LINK: INTEGER;  "Pointer to SDD of sister
                                    subdevice
             PARENT ̲LINK: INTEGER;  "Pointer to SDD of parent
                                    subdevice
             CHILD ̲QUEUE: QD;       "Queue descriptor for child
                                     subdevices
             SD ̲SDID:     INTEGER;  "User defined subdevice
                                    identi-
                                     fication
             SD ̲SE:       INTEGER;   User defined synchronization
                                    
                                     element
             SDIDREF:     INTEGER;   Pointer to SDID part of
                                    SDB

           END;

         TYPE SDID =
           RECORD
             SDDREF:      INTEGER;  "Pointer to SDD part of
                                    SDB
             DCBREF:      INTEGER;  "Pointer to DCB
             PROTOCOL:    INTEGER;  "Protocol table index
             STACK ̲POINTER:INTEGER; "Pointer to current stack
                                    level in
             STACK:                 "Link save stack

                          ARRAY(0..STACKSIZE-1) OF INTEGER;

           END;



         S̲u̲b̲d̲e̲v̲i̲c̲e̲ ̲B̲l̲o̲c̲k̲:̲ ̲S̲D̲B̲
                          ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

         SDD.SISTER ̲LINK                                         # ref
                                                                   to
                                                                   sister
                                                                   SDD
                          ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

         SDD.PARENT ̲LINK                                         # ref
                                                                   to
                                                                   parent
                                                                   SDD
                          ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

         SDD.CHILD ̲QUEUE                                         # QD.IP
                        #                 -  -  - 
                                          -  -  -
                        #                 QD.EP
                        #                 -  -  - 
                                          -  -  -
                        #                 QD.RC
                        # ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

         SDD.SD ̲SDID                      #                      user
                                                                 defined
                                                                 sd
                                                                 id
                        #                  ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
                                          ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
                                          ̲ ̲

         SDD.SD ̲SE                        #                      user
                                                                 defined
                                                                 SE
                        #                  ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
                                          ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
                                          ̲ ̲

         SDD.SDIDREF                      #                      pointer
                                                                 to
                                                                 SDID
                        #                  ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
                                          ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
                                          ̲ ̲

                                          work area
                                          for
                                          parent subdevice
                                           ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
                                          ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
                                          ̲ ̲

         SDID.SDDREF                      #                      pointer
                                                                 to
                                                                 SDD
                        #                  ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
                                          ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
                                          ̲ ̲

         SDID.DCBREF                      #                      pointer
                                                                 to
                                                                 DCB
                        #                  ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
                                          ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
                                          ̲ ̲

         SDID.PROTOCOL                    #                      protocol
                                                                 number
                        #                  ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
                                          ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
                                          ̲ ̲

         SDID.STACK ̲POINTER               #                      stack
                                                                 pointer
                        #                  ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
                                          ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
                                          ̲ ̲ 

         SDID.STACK                       #                      stack
                                                                 of:
                                                                 sdid's
                        #                 and     
                                           link's
                                           ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
                                          ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
                                          ̲ ̲

                                          work area
                                          for
                                          subdevice

       Fig. 4.1.4.2-1 HANDLER DATA LAYOUT


         TYPE BUFFER ̲TYPES =


             "The buffers relation to the logical data
             unit (ldu)
             (ENTIRE ̲LDU                  "whole ldu
                                          in one transfer
             ,START ̲OF ̲LDU
             ,PART ̲OF-LDU
             ,END ̲OF-LDU
             );


         TYPE BUFFER ̲ENTRY =

             RECORD
                 LINK,                    "Link field
                 DEVICE ̲BUFFER ̲ID,        "Device defined
                                          buffer identifier
                 PAGE ̲START,              "Start address
                                          of page containing
                                          the buffer
                 PAGE ̲ADDR,                                      "Page
                                                                 address
                                                                 (page
                                                                 number)
                 BUFFER ̲ADDR,             Byte address
                                          relative
                                          to page
                 BUFFER ̲SIZE              "Number of
                                          bytes in
                                          buffer.
                 : INTEGER;

         END;




  TYPE SPI ̲PARAM =

    RECORD
      PRIORITY:  INTEGER;         "Priority of request
                                  (O = control)
      BUFFER ̲ID: INTEGER;         "Caller defined buffer
                                  id.
      REQ ̲RECORD:    INTEGER;     "Pointer to request
                                  record
      BUFFER ̲ENTRY: INTEGER;      "Pointer to buffer
                                  entry
      PARAM:     INTEGER;         "Pointer to parameter
                                  area
      STATUS:        INTEGER;     "Result of performed
                                  operation

    END;

  TYPE SPI ̲FUNCTIONS = (

    NOTIFY ̲INPUT ̲BUFFER,
    RELEASE ̲INPUT ̲BUFFER,
    RESERVE ̲OUTPUT ̲BUFFER,
    CANCEL ̲RESERVE ̲OUTPUT ̲BUFFER,
    NOTIFY ̲OUTPUT ̲BUFFER,
    RELEASE ̲OUTPUT ̲BUFFER,
    TRANSMIT ̲OUTPUT ̲BUFFER,
    NOTIFY ̲TRANSMISSION,
    OPEN ̲PROTOCOL,
    WANT ̲TO ̲CLOSE,
    CLEAN ̲UP ̲ALL,
    CLEAN ̲UP ̲USER,
    CONTROL ̲PROTOCOL)




  "parameter records used by TMS when calling device
  functions"

  TYPE VARIABLE ̲SIZE ̲DATA = ARRAY (0..0) OF INTEGER;


  TYPE INITIALIZE ̲PARAM = "used when calling initialize-device

    RECORD
      SIZEOF,           "C K size of record -1
      STATUS ̲SE,     "C K object descriptor index
      SDID,          "C K caller's device Id
      H ̲SDID,           "-R handler's device Id
      H ̲OPID,           "-R handler's Id for operation
      OPID:          "C K caller's Id for operation
                     
                        INTEGER;
      PARAMETERS     " device dependent parameters
                     (may be nil)
                        :variable-size-data;

    END


  TYPE OPEN ̲SUBDEVICE ̲PARAM =     "used when calling
                                  open-subdevice 
    RECORD
      SIZEOF,           "C K size of record -1
      H ̲SDID,           "C handler's Id for parent
                        subdevice at call
                        "R handler's Id for new subdevice
                        at return
      H ̲OPID,           "-R handler's Id for operation
      OPID,          "C K caller's Id for operation
      SDID,          "C K caller's Id for new subdevice
      SDA,              "C K address of new subdevice
      STATUS ̲SE,     "C K object descr index for subdevice
                     status SE
      PROTOCOL ̲ID       "C K Id of protocol for new
                        subdevice
                        :INTEGER;
      PARAMETERS     "device dependent parameters
                        :variable ̲size ̲data;

  END;

  TYPE CLOSE ̲SUBDEVICE ̲PARAM = "used when calling close
  ̲subdevice and
    RECORD                             "shutdown
      SIZEOF,           "C K size of record -1
      H ̲SDID         "C K handler's Id for subdevice
                        :INTEGER;

  END;


  TYPE ENABLE ̲PARAM =   "used when calling enable ̲input
                        and
    RECORD              "enable ̲control ̲input
      SIZEOF,           "C K size of record -1
      H ̲SDID,           "C K handler's Id for subdevice
      H ̲OPID,           "-R handler's Id for operation
      OPID              "C K caller's Id for operation
                        : INTEGER;
      POSITION          :C K terminal ̲position (e.g.
                        cursor address)
                        ions;
      BUF ̲SIZE,      "C K size in bytes of user buffer
      BYTE ̲COUNT,       "-R number of bytes available
      PAGE ̲ADDR,     "-R physical page address of buffer
      BYTE ̲ADDR      "-R byte address within page of
                     buffer
                        INTEGER;
      BUFFER ̲TYPE       "-R state of logical data unit
                        :buffer ̲types;

  END;


  TYPE TEST ̲OPERATION ̲PARAM = "used when calling test
  ̲operation
    RECORD
      SIZEOF     ,   "C K size of record -1
      H ̲SDID     ,   "C K handler's Id for subdevice
      H ̲OPID     :   "C K handler's Id for operation
                        INTEGER;
      RESULT     :   "-R
                        operation ̲status;

  END;


  TYPE SET ̲BUFFER ̲PARAM =  "used when calling set ̲output
  ̲buffer and
    RECORD                  "set ̲control ̲buffer
      SIZEOF     ,   "C K size of record -1
      H ̲SDID     ,   "C K handler's Id for subdevice
      H ̲OPID     ,   "- R handler's Id for operation
      OPID           ,  "C K caller's Id for operation
      BUF ̲SIZE       ,  "-R size of buffer in bytes
      PAGE ̲ADDR  ,   "-R physical page address of buffer
      BYTE ̲ADDR  ,   "-R byte address of buffer within
                     page
                     :  INTEGER;

  END;


  TYPE INIT ̲OUTPUT ̲PARAM = "used when calling init
  ̲output
    RECORD
      SIZEOF     ,   "C K size of record -1
      H ̲SDID     ,   "C K handler's Id for subdevice
      H ̲OPID     ,   "C identifies the buffer at call
                        "R identifies this operation
                        at return
      OPID              "C K caller's Id for this operation
                        integer;
      POSITION          "C K terminal ̲position (e.g.
                        cursor address)
                        ions;
      BYTE ̲COUNT     "C K number of bytes to output
                     :  integer;
      PURGE          "C K purge flag
                     :  boolean;
      BUFFER ̲TYPE       "C K state of logical data
                        unit
                     :  BUFFER ̲TYPES;

  END;


  TYPE ACK ̲OR ̲CANCEL ̲PARAM = "used when calling acknowledge
  ̲input and
    RECORD              "cancel ̲operation
      SIZEOF     ,   "C K size of record -1
      H ̲SDID     ,   "C K handler's Id for subdevice
      H ̲OPID         "C K handler's Id for operation
                     :  integer;
      PURGE          "C K purge flag
                     :  BOOLEAN;

  END;


  TYPE ENABLE ̲STATUS ̲PARAM = "used when calling enable
  ̲status ̲response
    RECORD
      SIZEOF     ,   "C K size of record -1
      H ̲SDID         "C K handler's Id for subdevice
                     :  INTEGER;

  END;


  "Asynchronous response formats


  TYPE MESSAGE ̲TYPE =
    (OP ̲REPLY
    ,STATUS ̲MESSAGE
    );


  TYPE OPERATION ̲RESULT ̲TYPE = integer;

    "values:

  CONST
      OPERATION ̲OK = OK;
      OPERATION ̲CANCELLED = REQUEST ̲QUEUED;
      OPERATION ̲ABORTED = REQUEST ̲QUEUED;


  TYPE H ̲OP ̲REPLY ̲MESSAGE =
    RECORD
      RESPONSE:      MESSAGE ̲TYPE;        " = op ̲reply
      OPID,          "receiver's Id of operation
      H ̲OPID         "handler's Id for operation
                        : integer;
      RESULT:           OPERATION ̲RESULT ̲TYPE;
      BYTE ̲COUNT,       "number of bytes transferred
      PAGE ̲ADDR,     "physical page address of buffer
      BYTE ̲ADDR:     "intra page byte ̲offset to buffer
                        integer;
      BUFFER ̲TYPE       "state of logical data unit
                        :BUFFER ̲TYPES;

  END;



  TYPE DEVICE ̲STATUS =
    (SUBDEVICE ̲BREAK
    ,SUBDEVICE ̲OFFLINE
    ,DEVICE ̲FAILURE
    ,PROTOCOL ̲EVENT
    ,USER ̲RESPONSE
    ,SD ̲FAILORE
    ,SD ̲OTHER ̲STATUS
    );


  TYPE H ̲STATUS ̲MESSAGE =
    RECORD
      RESPONSE:      MESSAGE ̲TYPE; " = status ̲message
      H ̲SDID,           "handler's Id for subdevice
      SDID:          "receiver's Id for subdevice
                        integer;
      STATUS:           device ̲status;
      INFO ̲SIZE:     "size of info field following
                        integer;
      INFO:          "additional info (max 14 words)
                        VARIABLE ̲SIZE ̲DATA;

  END;


4.1.4.3      I̲O̲C̲ ̲H̲A̲N̲D̲L̲E̲R̲ ̲D̲A̲T̲A̲


  PRIORITY ̲TYPE = INTEGER

  CONTROLLER ̲PRIORITY = 0



  USER ̲PRIORITY = 3

  SUBDEVICE ̲PRIORITY = USER ̲PRIORITY



  TYPE IO ̲QEL = RECORD


         LINK:   POINTER

         PRIORITY:   PRIORITY ̲TYPE

         QUEUE: POINTER

         REQUESTOR: (NONE, USER, SUBDEVICE,
                     CONTROLLER, PROTOCOL)

         REQ ̲RECORD: POINTER

         REQ ̲REF:    INTEGER

         ADDI:       INTEGER




      END;


  CONST          BUFFER ̲TYPE ̲OFFSET = 0
                 LDU ̲OFFSET = 1
                 SPLIT ̲ADDR ̲OFFSET = 2
                 CONTROL ̲REQUESTS ̲OFFSET = 1
                 CANCEL ̲INPUT ̲LDU ̲OFFSET = 2
                 CANCEL ̲OUTPUT ̲LDU ̲OFFSET = 2

                 INPUT ̲REQ ̲BYTE ̲LENGTH ̲OFFSET = 3
                 INPUT ̲REQ ̲LDU ̲OFFSET = 2
                 INPUT ̲REQ ̲DATA ̲OFFSET = 4
                 STATUS ̲TYPE ̲OFFSET = 1
                 RECEPTION ̲STATUS ̲LDU ̲OFFSET = 2
                 TRANSMISSION ̲STATUS ̲LDU ̲OFFSET = 2
                 TRANSMISSION ̲STATUS ̲CODE ̲OFFSET =
                 3
                 CONTROL ̲PRIORITY = 0
                 DATA ̲PRIORITY = 1

                 LDU ̲DATA ̲OFFSET = 1
                 START ̲LDU ̲DATA ̲OFFSET = 2
                 CONTROL ̲REQUEST = Entire LDU with
                 control set
                 LDU ̲HEAD ̲OFFSET = 1

                 PROTOCOL ̲COMMAND ̲DATA ̲OFFSET = 2
                 PROTOCOL ̲STATUS ̲DATA ̲OFFSET = 2

  SUBDEV ̲INIT ̲DATA = RECORD

      PRIORITY: PRIORITY ̲TYPE


  Other data is dependent of the protocol.


  CONST INTERRUPT ̲TYPE ̲OFFSET = 2

         INT ̲ERROR ̲CODE ̲OFFSET = 3




    REPORT ̲PRIORITY = (PROTOCOL ̲FAILURE ̲PRI,
                        EXT ̲D ̲FAILURE ̲PRI,
                        EXT ̲D ̲STATUS ̲PRI,
                        MIN ̲PRI)


  TYPE SD ̲OTHER ̲STATUS ̲REC = RECORD

                 ACTION ̲TYPE: (DEVICE ̲ACTION, USER
                 ̲ACTION,
                                          DEVICE ̲RESPONSE)

                 ACTION ̲SUBTYPE: INTEGER

                                          END


  DEVICE ̲ACTION ̲TYPE = (PAPER ̲OK, PAPER ̲OUT,
                                          AUDIO ̲ALARM


  USER ̲ACTION ̲TYPE = (KEY ̲OFF, KEY ̲ON,
                        SYSTEM ̲KEY


  DEVICE ̲RESPONSE ̲TYPE = INTEGER


  TYPE   NICS-TARE ̲FAILURE = (DF,NT ̲LINK ̲FAIL, NT ̲EDC
         ̲FAIL)

         NICS ̲TARE ̲OTHER ̲STATUS = (DS, NT ̲MAN ̲SYNC,
         NT ̲INC ̲RESET)


  TYPE   CCIS ̲SCARS ̲FAILURE (DCS, CS ̲RX ̲DISC, LS ̲RX
         ̲DISC)

         CCIS ̲SCARS ̲OTHER ̲STATUS = (DCSO, CS ̲RX ̲CONN)


  CS ̲COMMAND =       (CSDO, CS ̲REOPEN, CS ̲SET ̲UP ̲LINK,
                     CS ̲DISC ̲LINK, CS ̲SET ̲UP ̲LINES,
                     CS ̲DISC ̲LINES, CS ̲SET ̲V24,
                     CSD7, CSD8, CSD9, CSD10, CSD11,
                     CSD12,
                     CSD13, CSD14, CSD15, CSD16, CS
                     ̲READ ̲V24,
                     CS ̲STATISTIC)


  CS ̲COMMAND ̲ERROR = (OK, CS ̲LEV2 ̲NOT ̲DISCONN, CS ̲LEV2
  ̲NOT ̲CONN,
                                  CS ̲PARAM ̲ERROR)



  PROT ̲COMMAND = (PCD, PC ̲ENABLE, PC ̲OPEN ̲PROTOCOL,
  PC ̲CLOSE ̲PROTOCOL,
                     PC ̲REDEFINE ̲PARAMS, PC ̲STATISTICS,
                     PC ̲STATUS,
                     PC ̲DEVICE ̲STATUS)


  SDID ̲RECORD = RECORD

  SDID: SDID "see DAMOS"

      PARENT ̲SDID: SDID

      OPENER: USER ̲ID
      STATUS: (DISABLED, ENABLED)
      STATUS ̲SE: OBJECT ̲DESCRIPTOR
      REPLY: H ̲OP ̲REPLY ̲MESSAGE
      STATUS ̲REPORT: H ̲STATUS ̲MESSAGE
      REPORT ̲PRIORITY: INTEGER

  "Inputter data"

      INPUTTER:  INPUTTER ̲DATA

  "Outputter data"

      OUTPUTTER: OUTPUTTER ̲DATA

  "User data"

         USER:       USER ̲DATA
                     Only high level protocols

  "Controller Data"
         CONTROLLER: CONTROLLER ̲DATA
                        Only when Controller present

  "Subdevice data

         SUBDEVICE ̲IF:  SUBDEVICE ̲INTERFACE ̲DATA

  "Protocol data"

         PROTOCOL:      Protocol dependent



  END



                                  TYPE PROTOCOL ̲ERR
                                  =       (DUMMY,
                                          SPI ̲ENTRY
                                          ̲1, SPI ̲ENTRY
                                          ̲6,
                                          INPUTTER
                                          ̲3 ̲4,
                                          INPUTTER
                                          ̲3 ̲5, INPUTTER
                                          ̲3 ̲7
                                          INPUTTER
                                          ̲5 ̲1, INPUTTER
                                          ̲6 ̲1
                                          INPUTTER
                                          ̲6 ̲2, INPUTTER
                                          ̲7 ̲1
                                          INPUTTER
                                          ̲7 ̲2 ̲A,INPUTTER
                                          ̲7 ̲2 ̲B,
                                          OUTPUTTER
                                          ̲3 ̲3 ̲A,
                                          OUTPUTTER
                                          ̲3 ̲3 ̲B,
                                          OUTPUTTER
                                          ̲4 ̲1, OUTPUTTER
                                          ̲5 ̲2,
                                          OUTPUTTER
                                          ̲5 ̲3, OUTPUTTER
                                          ̲6 ̲1
                                          OUTPUTTER
                                          ̲6 ̲6, USER
                                          ̲IF ̲2 ̲4,
                                          CONTROLLER
                                          ̲2 ̲4,CONTROLLER
                                          ̲2 ̲5
                                          CONTROLLER
                                          ̲2 ̲6,CONTROLLER
                                          ̲2 ̲7
                                          CONTROLLER
                                          ̲3 ̲3,CONTROLLER
                                          ̲3 ̲10,
                                          CONTROLLER
                                          ̲3 ̲16,CONTROLLER
                                          ̲4 ̲1
                                          CONTROLLER
                                          ̲4 ̲2, CONTROLLER
                                          ̲4 ̲4,
                                          SUBDEVICE
                                          ̲2 ̲7, SUBDEVICE
                                          ̲2 ̲11,
                                          SUBDEVICE
                                          ̲8 ̲1, PROT
                                          ̲CONT ̲2 ̲2,
                                          PROT ̲CONT
                                          ̲2 ̲3, PROT
                                          ̲CONT ̲3 ̲3
                                          PROT ̲CONT
                                          ̲5 ̲3)