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

⟦8faf704fd⟧ Wang Wps File

    Length: 42560 (0xa640)
    Types: Wang Wps File
    Notes: FIX/3232/PSP/0033         
    Names: »3195A «

Derivation

└─⟦507b19fd6⟧ Bits:30006135 8" Wang WCS floppy, CR 0282A
    └─ ⟦this⟧ »3195A « 

WangText

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



…0f……02…/FIX/3232/PSP/0033

…02…CAH/821005…02……02…#
LTUX-CRYPTO/RED & BLACK PRODUCT SPECIFICATION
…0f……02……02…FK 7809






                 TABLE OF CONTENTS                    Page


   11 LXPROS  .......................................…02…100
      

   11.1  Input  .....................................…02…100
         
   11.2  Output  ....................................…02…101
         
   11.3  Processing  ................................…02…103
         
   11.4  Data Structures  ...........................…02…107
         

   12 X25RXMOD/X25TXMOD  ............................…02…108
      

   12.1  Input  .....................................…02…108
         
   12.2  Output  ....................................…02…109
         
   12.3  Processing  ................................…02…109
         
   12.4  Data Structures  ...........................…02…114
         
   12.5  Reding the memory dump  ....................…02…116
         

   13 X25SUB  .......................................…02…120
      

   14 X25PRE  .......................................…02…149
      

   14.1  Input  .....................................…02…149
         
   14.2  Output  ....................................…02…149
         
   14.3  Processing  ................................…02…150

   15 HDLCRED/SYNCBLACK/INTTAB/EXTIRS  ..............…02…151
      

   15.1  Input  .....................................…02…152
         
   15.2  Output  ....................................…02…153
         
   15.3  Processing  ................................…02…154
         
   15.4  V24 Interface Usage  .......................…02…161
         
   15.5  Data Structures  ...........................…02…167
         
   15.6  Timing  ....................................…02…169

   16 LXPROM  .......................................…02…172
       
   16.1  Input  .....................................…02…172
         
   16.2  Output  ....................................…02…172
         
   16.3  Processing  ................................…02…173
         

   17 TESTGEN.  .....................................…02…174
      

   17.1  Input  .....................................…02…174
         
   17.2  Output  ....................................…02…175
         
   17.3  Processing  ................................…02…175
         
   17.4  Data Structures  ...........................…02…176
         


   18 TSTXFER  ......................................…02…177
      

   18.1  Input  .....................................…02…177
         
   18.2  Output  ....................................…02…177
         
   18.3  Processing  ................................…02…177
         

   19 LTMDCS  .......................................…02…178
      

   20 KERNEL  .......................................…02…178
      

   21 NEWKERN  ......................................…02…191
      

   22 QUALITY ASSURANCE  ............................…02…205
      

   23 PREPARATION FOR CHANGE AND DELIVERY  ..........…02…205
      



11.      L̲X̲P̲R̲O̲S̲

         The LTUX-protocol, slave, controls the transfer of
         messages between the LTUX-CRYPTO/RED and the NSS. 
         A flow control function is implemented with the LXPROS
         submodule issuing a 'non-busy' packet when ready to
         receive more packets on a certain CRYPTO channel (identified
         by corresponding TRUNK-ID).  If a packet is received
         from the TDX-bus with a bad completion code, the packet
         is rejected.  If a packet is returned from the TDX-transmitter
         with a bad completion code, the packet is retransmitted
         until successful completion.  The packet sequence is
         not changed.

11.1     I̲n̲p̲u̲t̲

         Message packets are received from the NSS via the TDX-bus.
          The completion code in the buffer header is inspected
         and if 0 the packet is accepted.  Else the packet is
         returned to the empty queue.  The buffer format is
         shown below.

         byte:   0    1    2    3    4    5    6           
          518

           Spare byte
           used by
           X25RXM
                      TRUNK-ID 
                                     X25-header
                                                  0-512 message
                                                  bytes


         From the X25RXM submodule message packets with a corresponding format are received.

         The state of the CRYPTO channels are read from the position:

             CRCHST +(CRYPTO channel No.).

         From the submodule X25TXM empty buffers are received when a packet has been acknowledged
         or discarded.

         From the TDX-bus interface empty buffers are received, when transmitted on the TDX-bus.

11.2     O̲u̲t̲p̲u̲t̲

         The TRUNK-ID of the messages received from the NSS is converted to a CRYPTO channel No. by
         use of the message CRYPTO system conversion table.  The message is forwarded to the X25TXM
         by insertion in one of the queues ROPQ10-ROPQ17, the last digit identifying the CRYPTO channel
         number.  The corresponding CRYPTO channel is set busy in the state table, CRCHST +(CRYPTO
         channel No.).  The corresponding X25INH byte in the X25 control table is reset to ensure
         processing by X25TXM (if stopped due to missing ACK's).

         If an X25.3 restart packet (issued during open trunk command) the restart flag of the corresponding
         CRYPTO channel is set.


         The messages received in RIPQ1 are forwarded for transmission on the TDX-bus, one by one.
          Only when a packet has been succesfully transmitted, the next packet is handed over for
         transmission.  This is controlled by the flag TDXIFST, 0 meaning free, 3 meaning busy.  When
         a channel has changed its state to non-busy (CRCHST) a non-busy packet is generated with
         the format:

             byte    0     1     2     3     5

                       TRUNK-ID       #50   #00

         The TRUNKD-ID corresponds to the CRYPTO channel number.  The packet is inserted for transmission
         in RIPQ1 (together with the message packets).

         Empty buffers received in ROEQ0 are forwarded for the TDX-interface routines.  To avoid buffers
         in the waiting queue of the interface routine a maximum of 3 buffers are forwarded any time.

         Empty buffers received from a succesful transmission on the TDX-bus are inserted in the RIEQ0
         if buffer length is 529 bytes (message buffers), else buffers are inserted in RIEQ1 (non-busy
         packets, length 16 bytes).



11.3     P̲R̲O̲C̲E̲S̲S̲I̲N̲G̲

         The processing is split into 4 parts as shown below:

         LXPROS:     Init command received?     RETURN

                     Receiver processing (packets received the NSS on subdevice 3)

                     Channel state processing (generates the necessary non-busy packets).

                     Empty buffer processing/retransmit packet with unsuccesful completion code after
                     TX , and distributes empty byffer to RIEQ0 and RIEQ1).

                     Transmitter processing (forwards the packets in RIPQ1 one by one for transmission
                     on TDX-bus, subdevice 3).

         A more detailed flow-gram of the different parts are shown on fig. 11.3-1 thru 11.3-4.


             Packet reeived from NSS?      LXPR25

                  y 

             If empty buffer in ROEQ0 then deliver empty buffer to subdevice 3


             Extract error code from buffer header

         
             If error code   0 then
                 increment error count,
                 return buffer to ROEQ0
                 set all channels to non-busy
             else
                 if  byte count  =6 then
                     get TRUNK-ID
                     convert TRUNK-ID to CRYPTO channel No.
                     insert packet in queue (ROPQ10-ROPQ17)
                     set corresponding channel busy
                     reset X25-inhibit flag of channel
                     if X25.3 restart packet then set
                     restart flag of actual channel
                 else
                     return buffer to ROEQ0

         LXPR25:
             Test if 3 empty buffers ready for incoming traffic on subdevice 3.
             if less then 3 buffers then
                 if empty buffer in ROEQ0 then
                     delivery buffer for subdevice 3.
             Channel state processing

                            fig. 11.3-1…01…LXPROS, receiver processing





         Get No. of last CRYPTO channel served by X25 protocol.
         Get state of said channel.
         If state = non-busy not reported then
             Generate non-busy packet by calling PRPCHD:KERNEL.

             If packet succesfully generated then
                 Insert packet for TX in RIPQ1.
                 Update max. element count of RIPQ1  (stored in WAITCNT).
                 Reset channel state to non-busy, reported.

         Empty buffer processing.















                          fig. 11.3-2…01…LXPROS, channel state processing


         If empty buffer ready from subdevice 3 then
             Extract status code from buffer header.
             If transmission succesfully then
                 get buffer size.
                 If buffer size = 16 then
                     return buffer to RIEQ1
                 else
                     adjust off-set to 0
                     return buffer to RIEQ0
                 Set TDX-IF state to non-busy
             else
                 retransmit buffer
                 increment error count (TXERR)

         
         Transmitter processing


                                          fig. 11.3-3
                                …01…LXPROS, empty buffer processing



         If TDX-I/F state non-busy then
             if packet ready in RIPQ1 then
                 forward packet for transmission on TDX-bus, subdevice 3
                 Set state of TDX-I/F to busy


         RETURN
                          …01…fig. 11.3-4…01…LXPROS, transmitter processing


11.4     D̲a̲t̲a̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲e̲s̲

         CRCHST:     8 bytes displaying CRYPTO channel state of channel 0-7.  The state of the actual
                     channels is pointed out by CRCHST +(CRYPTO channel No.).  The following states
                     are defined:
                     0:   non-busy, reported
                     1:   busy
                     2:   non-busy, not reported.
         OUTBERR:    No. of packets received from the TDX-bus with bad completion code.
         INBERR:     No. of packets returned from transmission with bad completion code.
         IRF:        Init ready flag: 0: if no init received from CR80, 1 if init completed.
         X25CTAB:    X25 control table, ref. section 12.4
         TDXIFST:    0:  TDX-I/F subdevice 3 free
                     1:  TDX-I/F subdevice 3 transmitting.
         WAITCNT:    Maximum No. of elements in RIPQ1 since last CRYPTO garbling status request.


12.      X̲2̲5̲R̲X̲M̲O̲D̲/̲X̲2̲5̲T̲X̲M̲O̲D̲

         To support the NSS with a virtually error free transmission medium from node to node on X25
         level 2 (HDLC) protocol has been implemented in the LTUX-CRYPTO/RED.  One independent protocol
         is running per CRYPTO channel.  The protocol is operating with a window size of 2.  Packets
         are retransmitted twice in case of missing ACK.  In case of 3 timeouts (each 15 sec.) an
         automatic restart is performed, and the involved packet is discarded.  The protocol is transparent
         as seen from the NNS, i.e. start and restart is automatically activated.

12.1     I̲n̲p̲u̲t̲

         From the LXPROS submodule packets are received in queues ROPQ10 thru ROPQ17.  From the HDLCRED
         submodule packets waiting for ACK are returned in queues ROPQ30 thru ROPQ37.

         Empty buffers used for the generation of protocol frames (S/U-frames) are taken from the
         queue ROEQ1.

         Packets accepted by the X25PRE submodule are received in queues RIPQ10 thru RIPQ17.  Both
         I-frames (messages) and S/U-frames (protocol control) may occur in these queues.

         The service of the different channels are controlled by the variable X25SERV,  containing
         the number of the next channel to serve.


12.2     O̲u̲t̲p̲u̲t̲

         I-frames and S/U-frames are delivered in ROPQ20 thru ROPQ27 for transmission by the HDLCRED
         submodule.  Accepted I-frames are delivered in RIPQ1 for transmission on the TDX-bus by the
         LXPROS submodule.

         Empty message buffer are returned in ROEQ0 by X25TXM submodule (ACK'ed or discarded (timeout)
         packets), and in RIEQ0 by X25RXM submodule (packets discarded due to bad numbering).

12.3     P̲r̲o̲c̲e̲s̲s̲i̲n̲g̲

         The two submodules, X25RXM and X25TXM are programmed as fully reentrant programs with a 32-bytes
         data area allocated to each active CRYPTO channel.  A maximum of 8 channels are allowed 
         The actual channel number to serve are determined by X25SERV.  This variable is updated by
         the X25RXM.

         The protocol is state/event controlled, the state/event diagrams are shown in fig. 12.3-3.
          An outline of the processing is given in the flowgrams in fig. 12.3-1 thru 12.3-2.



         Get channel No. last serviced.
         Update No. modulus max. channel No. (MNCRCH).
         Get address of actual control table.
         Get state of channel

         Case state of
         X25RC0:     Get RXEVENT.
                     Write event No. to DAYFILE of actual channel
                     Case event of:
                     ACR0 ̲00:
                       .
                       .
                       .

                     ACRO ̲12:

         X25RC1:     Get RXEVENT
                     Write event No. to DAYFILE of actual channel
                     Case event of:
                     ACR1 ̲00:
                       .
                       .
                       .
                     ACR1 ̲12:

         RETURN.




                                          fig. 12.3-1
                                  X25RXM, processing overview


         Get channel No. to service.
         Get address of actual control table.
         Get state of channel.
         Case state of
         X25TCB      Get TXEVENT
                     if event No.  7 then
                         issue disconnect command
                         start timer N-1
                         TX-STATE:  5.

         X25TC1      Get TXEVENT
                     case event of
                     ACT1 ̲00
                       .
                       .
                       .
                     ACT1 ̲10:

         X25TC2      Get TXEVENT
                     case event of
           .
           .
           .

         X25TC5      Get TXEVENT
                     case event of
                     ACT5 ̲00
                       .
                       .
                       .
                     ACT5 ̲10:

         RETURN


                            fig. 12.3-2…01…X25TXM, processing overview

































                                          FIG. 12.3-3
                                             X25RXM


12.4     D̲a̲t̲a̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲e̲s̲

         To control the processing of the X25.2 protocol of each CRYPTO channel, a 32 bytes control
         area is allocated to each channel.  The layout is shown in fig. 12.4-1.





























                                fig. 12.4-1…01…X25.2 control table


         The positions named TST nnnn are only used for test purposes during module test.  TSTIFR
         and TSTSFR may be used to introduce "transmission errors" on information frames and control
         frames.  The positions TSTFNO, TSTNFNO and TSTECNT are used to test the correct sequencing
         of packets, that no packets has disappeared and that no packets has been duplicated.  The
         soft failure flag is set whenever a retransmission has been performed.

         The flag is reset when a transmission report is generated.

         The positions named X25 nnnn are used to control the X25.2 protocol as shown in the state/event
         diagrams.  The position X25LSTA is used to ensure proper clean-up in case of CRYPTO restart
         or switch-over (initiated by front panel switches).  The position X25INH is used to stop
         the actual channel.  This is done if a restart has been tried 3 times without success.  The
         channel reactivated when a frame is received for the channel, either from the NSS (CR80)
         or from the black LTUX.

         The position X25REIN is used to cause a restart when a X25.3 restart packet is received from
         the NSS.

         In excess of the control table a 32-bytes "dayfile" area is defined per channel.  This area
         is used to store the last 31 receiver events of the actual channel.


12.5     R̲e̲a̲d̲i̲n̲g̲ ̲t̲h̲e̲ ̲m̲e̲m̲o̲r̲y̲ ̲d̲u̲m̲p̲

         Using the front panel switches as described in section 3.3 (switching standby channel on
         before switching active channel off) generates a dump of the dayfile and X25 control table
         areas.  The dump is printed in hexadecimal numbers on the logprinter connected to jack 1.
          The layout of the dump is shown in fig. 12.5-1.

         In the dayfile dump the value "FF" indicates in which position the next receiver event will
         be logged.  The dayfile area is used in a cyclic manner and only contains the last 31 events.
          A proper functioning channel will show the events, 1, 4 and 5.  A complete list of the possible
         receiver events are shown in fig. 12.1-2.

































                                          FIG. 12.5-1
                                     LTUX-CRYTO/RED & BLACK
                                         Test printout
         Memory Dump…86…W         …02…   …02…   …02…   …02…   …02…                                       
          0:     No event (dummy)

          1:     I-frame received and accepted
                 (actual frame No., N(S) equal to expected frame No., V(R)).

          2:     I-frame received and rejected
                 (frame already received, N(S) V(R)).

          3:     I-frame received and rejected
                 (missing frame, N(S) V(R)).

          4:     S-frame with acknowledge of last frame (ACK(N-1)).

          5:     S-frame with acknowledge of last but one frame (ACK(N-2)).

          6:     S-frame with negative acknowledge of last frame, and acknowledge of last but one
                 frame (NAK(N-1), ACK(N-2)).

          7:     S-frame with negative acknowledge of last and last but one frame (NAK(N-1), NAK(N-2)).

          8:     S-frame with "Set asynchronous balanced mode" command (activation command).

          9:     S-frame with unnumbered acknowledge (UA).

         10.     S-frame with disconnect command (deactivation command).


                               fig. 12.5-2…01…X25.2 receiver events



         In the X25.2 control table the TX-state and RX-state positions are of special interest. 
         The positions are marked in fig. 12.5-1.  The most common states are shown in fig. 12.5-3.





         TX      RX
         00      00 :    Channel not used.

         05      00 :    Channel activation transmitted, but no response received.  This combination
                         indicates a bad channel.

         02      01 :    Channel active and properly working.  No outstanding frames.

         03      01 :    Channel active and properly working.  One frame is outstanding.

         04      01 :    Channel active and properly working.  Two frames are outstanding.



                                fig. 12.5-3…01…Common TX/RX-states


13.      X̲2̲5̲S̲U̲B̲

         To support the X25.2 protocol a number of subroutines have been defined.  The different subroutines
         are described in the corresponding headers, telling about processing and register usage.
          A register not mentioned in the header is "do not care" with respect to entry, and "destroyed"
         with respect to exit.  The interrupt register "I" is never changed and neither the alternative
         register set.  On the following pages the subroutines are described.

























































14.      X̲2̲5̲P̲R̲E̲

         This submodule receives the inbound packets from the HDLCRED submodule. The CRC-result is
         controlled.  In case of error the packet is rejected.  Further the trunk-ID of the packet
         is checked.  If known (in message CRYPTO system conversion table) the packet is handed over
         to the corresponding X25.2 protocol.  If TRUNK-ID is not found, the packet is rejected. 
         The submodule allows for "loop-back" trunk-ID's, e.g. at node K the trunk-ID KL1 is accepted.

14.1     I̲n̲p̲u̲t̲

         X25.2 frames from HDLCRED submodules.  The buffers are received in the queue RIPQ0.  Off-set
         in the buffer header is 0.

14.2     O̲u̲t̲p̲u̲t̲

         If the frame is accepted, the buffer is inserted in one of the queues RIPQ10-RIPQ17.  The
         actual queue is determined by the CRYPTO channel No. (the last digit in the queue name indicates
         corresponding CRYPTO channel).

         If, for some reason, the packet is rejected, the buffer is returned to RIEQ0.  If the buffer
         contains 0 bytes (this causes the buffer to be rejected) an "X" is printed on the log-printer.
          If the buffer was an I-frame (message) and less than 2 empty buffers are left, the buffer
         is returned to RIEQ0 and an "r" is printed on the log.



14.3     P̲r̲o̲c̲e̲s̲s̲i̲n̲g̲

         Frame ready in RIPQ0?

         Byte count  0?      …0e…n…0f…        print "x"

         CRC-accepted?      …0e…n…0f…

    …0e…n…0f…    X25.2  I-frame?

         At least 2 empty buffers in RIEQ0?   print "r"

         Assume external frame

         Trunk-ID found in MCSCT  …0e…n…0f…   assume loop
                                       …0e…back frame…0f…

                                        Trunk-ID found   …0e…n…0f…
                                        in MCSCT

         Insert frame in queue of              Insert buffer in
         corresponding CRYPTO                  empty buffer
         channel (RIPQ10-RIPQ17)               queue RIEQ0


15.      H̲D̲L̲C̲R̲E̲D̲/̲S̲Y̲N̲C̲B̲L̲A̲C̲K̲/̲I̲N̲T̲T̲A̲B̲/̲E̲X̲T̲I̲R̲S̲.

         These submodules controle the frame transfer between the RED and the BLACK LTUX. Also the
         submodules controle the channel multiplexing, allowing all trunks to use the same CRYPTO
         device. The HDLCRED submodule is running in the RED LTUX, the SYNCBLACK submodule in the
         BLACK LTUX.

         Both the HDLCRED and the SYNCBLACK submodules uses the submodules INTTAB and EXTISR.

         The multiplexing principle is shown in fig. 12-1.

















15.1     I̲N̲P̲U̲T̲.̲

         HDLCRED:
         Outbound X25.2 frames (I & S/U - frames) are received from the ROPQ20 - ROPQ27, the last
         digit indicating CRYPTO channel No.

         Empty buffers for inbound traffic are taken from RIE20. Status and control information are
         read from the corresponding SIO-control table (CTAB2A for jack 3 and CTAB2B for jack 4).
         Input from V24 interface are shown in fig.

         SYNCBLANK:
         Empty buffers for outbound frames are taken from BOEQ0. Inbound frames for transmission to
         the red LTUX are fetched from BIPQ1. Status and control information are read from the corresponding
         SIO-control table (CTAB1A for rack 1 and CTAB2A for jack 3). Input from V24 interfaces are
         shown in fig.

         INTTAB & EXTISR:
         Status and control information are read from the corresponding SIO-control table. Characters
         for transmission are read one by one from the actual buffer data area. Input from V24 interfaces
         are shown in fig.





15.2     O̲U̲T̲P̲U̲T̲.̲

         HDLCRED:
         Inbound X25.2 frames (I & S/U - frames) are delivered to the X25PRE submodule in the queue
         RIPQ0. Empty buffers for outbound frames are delivered in ROE2Q if the buffer contained an
         I-frame (518 bytes) and the offset in the buffer header is set to 1. If the buffer contained
         a S/U-frame the buffer is returned to ROEQ1 and the offset in the buffer header is set to
         0. 

         Status and control information are written to the corresponding SIO-control table. Output
         to V24 interfaces are shown in fig.

         SYNCBLACK:
         Outbound X25.2 frames are delivered for transmission on the BLACK TDX-bus (subroutine ODEPA
         called). The subdevice No. to use is determined by: subdevice: = CRYPTO channel No. +3. Empty
         buffers for inbound frames are delivered to the TDX-system by calling the subroutine IDEPA.
         The subdevice No. to use is read from the buffer header, byte 1 (ref. section 16, LXPROM).
         The byte is reset before calling IDEPA. Status and control information are written to the
         corresponding SIO-control table. Output to V24 interface are shown in fig.

         INTTAB/EXTISR:
         Status and control information are read from the corresponding SIO-control table. Characters
         received from the SIO are written to the actual buffer data area one by one. The result of
         the cyclic redundancy check (CRC) is written to byte 9 in the corresponding buffer header
         (only the RED LTUX). Output to V24 interface are shown in fig.



15.3     P̲r̲o̲c̲e̲s̲s̲i̲n̲g̲.̲

         Both the HDLCRED and the SYNCBLACK are state/event controlled. The submodules are split into
         a TX- and a RX-part, activated separately by the LXROPS/LXBOPS submodule.

         Two independent incarnations are defined for both the HDLCRED and the SYNCBLACK. For the
         HDLCRED one is used to control jack 3 and the other one to control jack 4. For the SYNCBLACK
         one is used to control jack 1 and the other one to control jack 3. 

         The incarnations are controlled by independent SIO control tables. Only one incarnation of
         HDLCRED and one of SYNCBLACK are active at the same time. This is controlled by the submodules
         CRYPTOSR and CRYPTOSB, respectively. The detailed processing is shown in the state/event
         diagrams fig. 15.3-1 and fig. 15.3-2.

         The submodule INTTAB is used to define the necessary interrupt routines to support the HDLCRED
         and SYNCBLACK submodules. 4 different interrupt routines are defined. The routines are defined
         by use of assembler macros and one set (4) of routines are defined per pack.

         The routines defined are described below. &X in the name indicates that the suffix is defined
         during macro layout.






         TXBE&X:
         Transmit buffer empty. Called when the SIO is ready for the next character to transmit. The
         routine transfers a character from memory to actual SIO. In the corresponding SIO control
         table the memory pointer is incremented and the bytes left counter decremented. If actual
         bytes left count = 0 nothing is done. Memory pointer (TXPOS) must be initiated to buffer
         start address -1 before first character transfer. Bytes left count must be initiated to character
         count +1.

         RXCA&X:
         The routine is able to read one charcters from the actual SIO part to a memory location.
         In the corresponding SIO-control table the memory pointer is incremented and bytes left count
         decremented. If bytes left = 0, the state changes to state 6. Memory pointer RXPOS must be
         initated to buffer start address -1 before first character transfer. Bytes left count must
         be initiated to buffer size +1.

         SRXC&X:
         This routine is activated by the "special receive condition" interrupt from the SIO. In the
         HDLCRED submodule, this interrupt is used to detect the end of frame. In RX-state 4 the error
         state and the residue is read from the SIO and stored in the current buffer header, byte
         9. The state is changed to 5.

         If RX-state is anything else but 4 an error reset command is issued and no action taken.




         EXTS&X:
         This routine is activated by "external status interrupt" from the SIO. This interrupt may
         be caused by different events. These are described below together with the EXTISR submodule.
         The EXTS&X routine saves the current registers, activates EXTISR submodule and restores the
         registers.

         The EXTISR submodule processes the external status interrupts from the SIO. The reason for
         this is read from SIO read register 0. The following events may occur:

         Break/abort:    Transmission of frame suspended.

         TX-underrum/EOP: Transmitter has run out of characters.
                          Syncbyte (#7E) are transmitted.

         CTS-line:       The V24-line CTS has changed it's state.

         SYNC/HUNT:      If bit is set byte synchronization has been achieved and reception af frame
                         information may start.

         DCD-line:       The V24-line DCD has changed it's state.


































                                          FIG. 15.3-1
                                        LTUX CRYPTO/RED
                                         HDLCRED Driver
                                        Transmitter Part
     State/Event Diagram…86…W         …02…   …02…   …02…   …02…   …02…                                       




























                                          FIG. 15.3-1:
                                        LTUX CRYPTO/RED
                                         HDLCRED Driver
                                         Receiver Part
     State/Event Diagram…86…W         …02…   …02…   …02…   …02…   …02…                                       





























                                          FIG. 15.3-2
                                        LTUX-CRYTO/BLACK
                                        SYNCBLACK Driver
                                        Transmitter Part
     State/Event Diagram…86…W         …02…   …02…   …02…   …02…   …02…                                       




























                                          FIG. 15.3-2:
                                       LTUX CRYPTO/BLACK
                                        SYNCBLACK Driver
                                         Receiver Park
     State/Event Diagram…86…W         …02…   …02…   …02…   …02…   …02…                                       
15.4     V̲2̲4̲ ̲i̲n̲t̲e̲r̲f̲a̲c̲e̲ ̲u̲s̲a̲g̲e̲.̲

         The V24-signals used to control CRYPTO activation, CRYPTO garbling detection, channel multiplexing
         and data transfer are shown in fig. 15.4-1.

         The actual signalling is shown in fig. 15.4-2.

         To achieve the needed number of V24-signals the LTUX-CRYPTO/RED back panel need some modifications.
         These are shown in fig. 15.4-3.

         The LTUX-CRYPTO/BLACK uses a standard DCE back panel.



































                                          FIG. 15.4-1
                                    LTUX-CRYPTO/RED & BLACK
                                        V24 - Interface
        Specification…86…W         …02…   …02…   …02…   …02…   …02…                                       



























                                          FIG. 15.4-2:
                                    LTUX-CRYPTO/RED & BLACK
                                    V24 Signalling, Idle Run
































                                          FIG. 15.4-2
                                     LTUX-CRYTO/RED & BLACK
V24 Signalling, Data Transfer…86…W         …02…   …02…   …02…   …02…   …02…                                       




























                                          FIG. 15.4-3:
                                         LTUX-CRYTO/RED
         Back Panel…86…W         …02…   …02…   …02…   …02…   …02…                                       
15.5     D̲a̲t̲a̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲e̲s̲

         To control the operation of the HDLC/SYNC driver a SIO control table is defined.  One table
         exists per driver process.  Tables are identified by suffix = actual SIO channel (1A, 1B,
         2A, 2B).
         The table is mainly addresed by use of index register Ix and an offset value, only if speed
         and compactness is the main thing the direct entries are used.

























         When a packet is transferred to the X25DMM submodule the standard buffer header (shown below)
         contains an error code in byte No. 9.  The layout of the byte is shown below.  If packet
         was received without any error the byte will contain 86H.



























15.6     T̲i̲m̲i̲n̲g̲.̲

         When running at 32 kbps, half duplex, one character is received/transmitted every 250   sec
                          The interrupt routines for receiving and transmitting a character are running
         for 50   sec from interrupt to return. 

         Some interface routines (M-CPU to M-FE) are running for 200   sec without enabling interrupts.
         Therefore a timer interrupt routine has to be stopped to avoid transmitter underrun/receiver
         overrun. The timer is not used when transmitting or receiving.

         As shown at fig. 15.4-2 some delays has been introduced in the channel multiplexing scheme.
         The purposes of these delays are:

         *   To allow BID1000 to "clean up" before changing data flow. The time needed is the transmission
             time of 80 bits, corresponding to 2.5 msec at 32 kbps.

         *   To allow log printer to print channel or receiver state. The time needed is 33 msec.

         *   To avoid deadlock due to different processing time and during channel shift. The time
             needed is approximately 6 msec (worst case loop around time in LTUX-CRYPTO/RED is about
             3 msec).




         If needed improved performance may be achieved by reducing above delay to about 14 msec per
         channel. The performance increase will be approximately 64 %, ref. below. The disadvantage
         is that the test printout on the log-printer is no longer reliable.

         Average multiplexing delay, outbound traffic, 4.5 trunks, delay 46 msec/chan., special delay
         at channel O.

             6̲7̲ ̲+̲ ̲3̲,̲5̲ ̲.̲ ̲4̲6̲  .  4̲.̲5̲ = 114 msec.
                 4.5

         Tx-time,  16 bytes:  65,7 msec(including mux.signalling)
         Tx-time, 518 bytes: 207,6 msec(including mux.signalling)

         Weighted average TX-time, outbound:
         114 + 65,7…0e….…0f…0.55 + 207.6 …0e….…0f… 0.45 = 243.6 msec/packet

         corresponding to                  4̲,̲1̲ ̲p̲a̲c̲k̲e̲t̲s̲/̲s̲e̲c̲.̲

         Average multiplexing delay outbound traffic, 4.5 trunks, delay 14 msec/chan. (no special
         delay at channel O)




         Weighted average TX-time, outbound:
         31.5 + 33.7 …0f….…0f… 0.55 + 175.6 …0f….…0f… 0.45 =
                                   129.1 msec/packet
         corresponding to            7̲.̲8̲ ̲p̲a̲c̲k̲e̲t̲s̲/̲s̲e̲c̲.̲




         Average multiplexing delay, inbound traffic (4.5 trunks) delay 46 msec/chan., special delay
         at channel O.

         6̲7̲ ̲+̲ ̲3̲.̲5̲ ̲…8e….̲…8f… ̲4̲6̲ …0f…msec =           25.3 msec.
              4.5  2

         TX-time,  16 bytes:   67,1 msec
         TX-time, 518 bytes:  205,5 msec

         Weighted average TX-time, inbound:

         25.3 + 67.1 …0e….…0f… 0.55 + 205.5…0e….…0f…0.45 = 154.7 msec/packet

         corresponding to                6̲.̲5̲ ̲p̲a̲c̲k̲e̲t̲s̲/̲s̲e̲c̲.̲

         Average multiplexing delay, inbound traffic (4.5 trunks), delay 14 msec/chan., (no special
         delay at channel O).


         Weighted average TX-time, inbound:
         7 + 35.1 …0f….…0f… 0.55 + 173.5 …0f….…0f… 0.45 =
                                   104.4 msec/packet
         corresponding to            9̲.̲6̲ ̲p̲a̲c̲k̲e̲t̲s̲/̲s̲e̲c̲.̲


         Total performance gain:







16.      L̲X̲P̲R̲O̲M̲

         This submodule is situated on the LTUX-CRYPTO/BLACK and controls the buffer transfer to and
         from the black TDX-bus.

16.1     I̲n̲p̲u̲t̲.̲

         Empty buffers are received from the subdevices 3-10, when the content has been transmitted
         on the TDX-bus.

         Packet buffers are received from subdevice 3-10. The buffers contains data received by the
         LTUX-TRUNK communicating with the actual subdevice.

16.2     O̲u̲t̲p̲u̲t̲.̲

         Empty buffers are delivered to the SYNCBLACK submodule in the queue BIPQ1. In case of a bad
         completion code, the packet buffer is returned as empty to the actual subdevice. If byte
         count is less than 6, the buffer is returned too.







16.3     P̲r̲o̲c̲e̲s̲s̲i̲n̲g̲.̲

         The processing is described by use of "pseudo" code.

         LXPROM:

         for I: = 3 until (max. No. of channels + 3) do

             while packet buffer ready at subdevice I

                 get buffer

                 if packet OK, then

                     save subdevice No. in buffer header
                     insert packet in BIPQ1

                 else

                     return buffer to empty queue

         for I: = 3 until (max. No. of channels + 3) do

             while empty buffer ready at subdevice I

                 get buffer

                 insert buffer in BOEQO

         RETURN.





17       T̲E̲S̲T̲G̲E̲N̲.̲

         This subroutine is only active when the LTUX is in TEST mode. The subroutine generates test
         messages and inserts these in ingoing (outbound) packet queue of subdevice 3. Message are
         generated for actual CRYPTO channel if not busy, else nothing is done. If no empty buffer
         is available nothing is done.

         The routine also removes packets, if any, from outgoing (inbound) packet queue (RIPQ2) and
         insert these in outgoing (inbound) empty buffer queue (RIEQ2).

         The messages generated are provided with a sequence number module 256. This is done to verify
         that the
         X 25.2 protocol does not mix, duplicate or discard any packet.

17.1     I̲n̲p̲u̲t̲.̲

         Empty buffers for generation of test messages are taken from ROEQO. Packet buffers are moved
         from RIPQ2 to RIEQ2, and from RBCPQ1 to RBCEQ1. This is done to simulate transmission on
         the TDX bus, subdevice 3 and 2, respectively.

         The channel No. is read from ACCRCH and channel state (busy/non-busy, frame No.) is read
         from the corresponding X25 control table.






17.2     O̲u̲t̲p̲u̲t̲.̲

         The generated test messages are delivered in ROPQO. Packet buffers are moved from RIPQ2 to
         RIEQ2, and from RBCPQ1 to RBCEQ1.

         The external frame count in the actual X25 control table are up-dated.

17.3     P̲r̲o̲c̲e̲s̲s̲i̲n̲g̲.̲

         TESTGEN:

         if initprocedure finished then

             get actual channel No.

             if channel non busy then

                 generate test message
                 get external frame count
                 up-date external frame count
                 insert TRUNK-ID in message
                 insert external frame count in message
                 insert message in ROPQO

             if buffer ready in RIPQ2 then

                 transfer buffer to RIEQ2

             if buffer ready in RBCPQ1 then

                 transfer buffer to RBCEQ1.



17.4     D̲a̲t̲a̲ ̲s̲t̲r̲u̲c̲t̲u̲r̲e̲s̲.̲

         The test message used is shown below. 

         The spaces in the beginning of the message are replaced by TRUNK-ID and external frame count,
         see fig. 17.4-1.














                         fig. 17.4-1
                     Test message format.








18       T̲S̲T̲X̲F̲E̲R̲.̲

         The routine is used to transfer a buffer from outbound I/F queue to inbound I/F queue. The
         corresponding crypto channel is set non-busy and the old buffer is returned to the empty
         buffer queue.

         If no empty buffer available for inbound messages then the old buffer is reinserted in the
         outbound packet queue and the channel remains busy.

         If more elements in outbound packet queue, all are removed as long as empty buffers are available
         for inbound packets.

18.1     I̲n̲p̲u̲t̲.̲

         Outbound packet buffers are received in BOPQO. Empty buffers for inbound traffic are received
         in BIEQO.

18.2     O̲u̲t̲p̲u̲t̲.̲

         Empty buffers for outbound traffic are returned to BOEQO. Packet buffers with inbound data
         are delivered to RIPQ2.

18.3     P̲r̲o̲c̲e̲s̲s̲i̲n̲g̲.̲

         If buffer ready in BOPQO then

             if empty buffer ready in BIEQO then

                 copy packet to new buffer
                 return old buffer to BOEQO
                 deliver new buffer to RIPQ2.



19       L̲T̲M̲D̲C̲S̲.̲

         The TDX Device Configuration Submodule is used in the LTUX-S and LTUX-M for opening and closing
         subdevices. Further parameters for programming the V24 line interfaces can be loaded to the
         LTUX via this submodule.

         The log-lines which are connecting hosts with subdevice No. 0 in the LTUX's are reserved
         for the TDX-Device Configuration Protocol.

         The protocol includes 3 commands for opening, closing subdevices and for loading an SIO parameter
         block.

         For further details ref.
         TDX device configuration product specification
         FIX/3232/PSP/0034.

20       K̲E̲R̲N̲E̲L̲.̲

         In this submodule a number of subroutines common to many submodules are assembled. The different
         subroutines are described in the corresponding headers, telling about processing and register
         usage. A register not mentioned in the header is "do not care" with respect to entry, and
         "destroyed" with respect to exit.

         The interrupt register "I" is never changed and neither the alternative register set. On
         the following pages the subroutines are described, a list of the names is given below:

         TITCN, CNTTI, PRPCHD, INITSIO, WRJCK1, WRJCK2, TSTDAT.



























21.      N̲E̲W̲K̲E̲R̲N̲.̲

         In this submodule a number of subroutines common to many submodules are assembled.

         The different subroutines are described in the corresponding headers, telling about processing
         and register usage. A register not mentioned in the header is "do not care" with respect
         to entry, and "destroyed" with respect to exit.

         The interrupt register "I" is never changed and neither the alternative register set. On
         the following pages the subroutines are described, a list of the names is given below:

         SETCTC, CTC39R, CTC3TIM, SETTIM, LED-ON,LED-OFF, BLINK, CTCDMM, BEVALXN.








































22.      Q̲U̲A̲L̲I̲T̲Y̲ ̲A̲S̲S̲U̲R̲A̲N̲C̲E̲.̲

         Ref:    FIX/3232/TPR/0036: LTUX-CRYPTO/RED & BLACK
                                Test procedure
                 FIX/3232/TPR/0059: LTUX-CRYPTO/RED & BLACK
                                Test report.

23.      P̲R̲E̲P̲A̲R̲A̲T̲I̲O̲N̲ ̲F̲O̲R̲ ̲C̲H̲A̲N̲G̲E̲ ̲A̲N̲D̲ ̲D̲E̲L̲I̲V̲E̲R̲Y̲.̲

         Restore files on development system, for tape No's reference current firmware release.

         Make the changes wanted.

         Assemble changed modules.

         Link modules (link RED or link BLACK).

         Verify that memory configuration is consistent with hardware layout.

         Test new release according to testprocedure (FIX/3232/TPR/0036).

         Burn new master PROM's. Note! In the LTUX-CRYPTO/RED the PROM 2179 must be burned in 2 steps,
         from PROM address 0000H through 07FFH system firmware are stored (from CR1962 ̲5).

         The application F/W are stored from 0800H through OFFFH.
         Make new back-up and fire copy on tape.
         Issue DCN to firmware release document (FIX/3031/LOG/0007).