COMKNWC 
COMMON
          TITLE  COMKNWC - COMMUNICATION WITH NETWORKS. 
          CTEXT  COMKNWC - COMMUNICATION WITH NETWORKS. 
          SPACE  4
          BASE   D
          LIST   F           LIST IF-SKIPPED LINES
          SPACE  4
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 NWC      SPACE  4
***       COMKNWC - NETWORK COMMUNICATION WITH TRANSACTIONS.
*         M. M. CHEN.       77/11/01. 
          SPACE  4,10 
          TTL    TAF - NAM COMMUNICATIONS.
***       *COMKNWC* PROVIDES THE INTERFACES BETWEEN TAF AND NAM.
*         IT HANDLES SUPERVISORY MESSAGE THROUGH ROUTINE *SMP*, 
*         PROCESS INPUT DATA MESSAGE BY ROUTINE *NGL*, OUTPUT 
*         MESSAGE BY ROUTINE *SND*, AND TAKES CARE OF CTI FUNCTIONS 
*         BY *CTA*, *CTD*, *CTH*. 
* 
*         REGISTER CONVENTIONS. 
* 
*         B2 - START OF SYSTEM AREA OF TASK CURRENTLY SELECTED FOR
*              CPU ASSIGNMENT. (TASK-S RA)
*         B7 - START OF SUB CONTROL POINT AREA OF TASK CURRENTLY
*              SELECTED FOR CPU ASSIGNMENT. 
* 
*         DOCUMENT CONVENTIONS. 
* 
*         1. NCT ENTRY - FIRST WORD ADDRESS OF NETWORK COMMUNICATION
*                        TABLE OF THE TERMINAL. 
*         2. (AI)/(XI) - MEANS THE CONTAINS OF ADDRESS AI IS IN XI. 
*         3. TST ENTRY - FIRST WORD ADDRESS OF TERMINAL STATUS TABLE
*                        OF SPECIFIED TERMINAL. 
* 
*         SYMBOL CONVENTIONS. 
* 
*         ALL SYMBOLS START WITH
*         1. *V* - GLOBAL REFERENCES THROUGH OUT TAF AND COMKNWC. 
*         2. *PF* - PRIMARY FUNCTION CODE.
*         3. *SF* - SECONDARY FUNCTION CODE.
*         4. *AH* - APPLICATION BLOCK HEADER FIELDS.
*         5. *IN* - FIELDS OF TRANSACTION INPUT.
*         6. *CI* - SYSTEM TRANSACTION CODES. 
*         7. *TN* - NETWORK COMMUNICATION TABLE FIELDS. 
*         8. *EV* - TASK ROLLOUT CONTROL TABLE FIELDS.
*         9. *TS* - TERMINAL STATUS TABLE FILEDS. 
* 
*         NOTE - THIS COMMON DECK CAN ONLY BE CALLED BY TAFNAM. 
          SPACE  4,10 
**        ABBREVIATIONS IN *COMKNWC*. 
* 
*         ACN  = APPLICATION CONNECTION NUMBER. 
*         C.B. = COMMUNICATION BLOCK. 
*         NCT  = NETWORK COMMUNICATION TABLE. 
*         NAM  = NETWORK ACCESS METHOD. 
*         Q    = QUEUE SUPERVISORY MESSAGE. 
*         TST  = TERMINAL STATUS TABLE. 
*         SM   = SUPERVISORY MESSAGE. 
* 
*         SUPERVISORY MESSAGE ABBREVIATIONS.
* 
*         PFC  = PRIMARY FUNCTION CODE. 
*         EB   = ERROR BIT.  ABNORMAL RESPONSE IF SET.
*         RB   = 1 IF NORMAL RESPONSE.
*         SFC  = SECONDARY FUNCTION CODE. 
*         PARM = PARAMETERS 
* 
*         APPLICATION BLOCK HEADER. 
* 
*         ABT  = APPLICATION BLOCK TYPE.
*         ADR  = ADDRESS INFORMATION. 
*         ABN  = APPLICATION BLOCK NUMBER.
*         ACT  = APPLICATION CHARACTER TYPE.
*         IBU  = INPUT BLOCK UNDELIVERABLE. 
*         RFE  = RESERVED.
*         NFE  = 1 IF NO FORMAT EFFECTORS.
*         XPT  = 1 IF INPUT IS IN TRANSPARENT MODE. 
*         CAN  = 1 IF INPUT IS TO BE CANCELED.
*         BIT  = 1 IF INPUT HAS PARITY ERROR. 
*         TLC  = TEXT LENGTH IN UNITS.
          SPACE  4,10 
**        DAYFILE MESSAGES. 
* 
*         1. * NAM FUNCTION NOT FOUND.* 
*              NAM ISSUES A SUPERVISORY MESSAGE TAF CAN NOT RECOGNIZE.
* 
*         2. * NAM LOGICAL ERROR.*
*              NAM ISSUES A LOGICAL SUPERVISORY TO TAF WITH REASON
*              CODE .GT. 3. 
* 
*         3. * NAM ERROR INCORRECT ABH.*
*              NAM SENDS A DATA MESSAGE WITH ILLOGICAL APPLICATION
*              BLOCK HEADER.
* 
*         4. * NAM ERROR - ILLOGICAL ABT.*
*              NAM SENDS A DATA MESSAGE WITH ILLOGICAL APPLICATION
*              BLOCK TYPE.
* 
*         5. * NETON COMPLETE.* 
*              INFORMATION MESSAGE INDICATING CONNECTION TO NAM 
*              HAS BEEN MADE. 
* 
*         6. * NETOFF COMPLETE.*
*              INFORMATION MESSAGE INIDICATING CONNECTION TO NAM
*              HAS BEEN BROKEN. 
* 
*         7. * NAM NOT AVAILABLE.*
*              NETWORK IS NOT READY YET.
* 
*         8. * OPERATOR DROP.*
*              OPERATOR DROP THE TAF. 
*         9.  * NETWORK SHUT DOWN DETECTED.*
*               NETWORK SHUT DOWN DETECTED. 
* 
* 
*         10. * AIP DEBUG OPTION TURNED ON.*
*               DATA AND SUPERVISORY MESSAGES ARE LOGGED ON TRACE FILE. 
* 
*         11. * AIP DEBUG OPTION TURNED OFF.* 
*               DATA AND SUPERVISORY MESSAGES ARE NOT LOGGED ON 
*               TRACE FILE. 
 NET      SPACE  4,10 
**        NET - A MACRO TO SETUP CALLS TO NAM REQUESTS. 
* 
*         ENTRY  NET X,ACN,HA,TA,TLMAX,LIST 
*                WHERE X = GETL, GET, PUT, ON, OFF, 
*                          GET, OR OTHER NAM NETWORK COMMAND. 
* 
*                          ACN,HA,TA,TLMAX,LIST ARE PARAMETERS AS 
*                          REQUIRED FOR PARTICULAR NAM NETWORK COMMAND. 
* 
*         EXIT   REMOTE BLOCK *INI* SETS UP RJ TO AIP ENTRY POINTS. 
*                (B1) = 1.
* 
*         USES   X - 6. 
*                A - 6. 
*                B - 1. 
  
  
 NET      MACRO  X,ACN,HA,TA,TLMAX,LIST 
          LOCAL  TAG
 TAG      BSS    0
 INI      RMT 
          SA1    B5+NET_X_
          BX6    X1 
 OFS      SET    1
          IFC    EQ,*X*OFF*,1 
 OFS      SET    0
          IFC    EQ,*X*CHEK*,1
 OFS      SET    0
          SA6    TAG+OFS
          RMT 
          NET_X_ ACN,HA,TA,TLMAX,LIST 
          SB1    1
          ENDM
          SPACE  4,10 
**        ASSEMBLY CONSTANTS. 
  
 NAM      EQU    1           1 IF NAM COMMUNICATIONS MODE 
*NAM      EQU    0           0 IF TELEX IS COMMUNICATIONS MODE
 ALN      EQU    1           TAF APPLICATION LIST NUMBER FOR NAM
  
 NONTL    EQU    5*1000      MILLISECONDS BETWEEN *NETON* ATTEMPTS
 NCBN     CON    NCBC        MAXIMUM COMMUNICATION BLOCKS 
 FSZE     EQU    64          MAXIMUM FRAGMENT SIZE FOR *NETGETF*
  
 ZERO     CON    0
  
*         BLRT - TIME (IN MILLISECONDS) FOR A TASK TO WAIT WHEN 
*                BLOCK LIMIT HAS BEEN EXCEEDED. 
  
 BLRT     EQU    5*1000 
  
*         WTIM - TIME INTERVAL (IN SECONDS) FOR A TASK TO STAY
*                IN ROLLOUT QUEUE IF TASK DOES A SEND WITH RECALL.
*                TASK WILL BE ROLLED IN IF TAF GETS A SUPERVISORY 
*                MESSAGE BACK FROM NETWORK OR TIME ELAPSES. 
  
 WTIM     EQU    3*60 
  
*         MLIM - MESSAGE LIMIT (IN WORDS) THAT A TASK STAY IN CORE
*                WHILE DOING A SEND WITH RECALL.
  
 MLIM     EQU    100
 EXT      OPSYN  NIL
          SPACE  4,10 
*         THE FOLLOWING TAGS ARE USED TO PREVENT ASSEMBLY ERRORS
*         UNDER *TELEX* MODE OF COMMUNICATION.  SHOULD INTER-CONTROL
*         POINT REQUESTS REQUIRE SERVICING, THEN CODE 
*         AT *CSM1* WILL HANDLE THE REQUESTS BY JOURNALLING 
*         A MALICIOUS USER MESSAGE. 
  
 SNS      BSS    0
 TOC      BSS    0
 TSM      BSS    0
 TTH      BSS    0
 TTL      BSS    0
          EQ     CSM1        PROCESS UNEXPECTED *SIC* REQUESTS
          SPACE  4,10 
**        ENTRY POINTS FOR NAM REQUESTS ARE TEMPORARILY STORED
*         IN AREA FOR NCT TERMINAL ENTRIES BY *TAFNAM1*.
*         NOTE   THE FOLLOWING ENTRIES SHOULD BE IN ALPHABETICAL
*                ORDER AS IN THE LOADER REQUEST.
  
 NBUF     BSS    0
          LOC    0
 NETCHEK  BSS    1
 .A       IFEQ   DBUG,0 
 NETDBG   BSS    1
 .A       ENDIF 
 NETGET   BSS    1
 NETGETF  BSS    1
 NETGETL  BSS    1
 NETOFF   BSS    1
 NETON    BSS    1
 NETPUT   BSS    1
 NETSETP  BSS    1
          LOC    *O 
 NETL     EQU    *-NBUF      LENGTH OF *AIP* ENTRY POINT TABLE
          ORG    NBUF 
 NCT      SPACE  4,10 
**        NCT - NAM COMMUNICATION TABLE.
* 
*T, W1    9/NCTFLAG,4/ ,2/TNCT,3/TNBO,3/TNBL,12/TNCN,9/TNCB,18/TNTS 
*T, W2    8/PFC,1/EB,1/RB,6/SFC,44/PARM 
*T, W3    6/ABT,12/ADR,18/ABN,4/ACT,8/STATUS,12/TLC 
* 
* 
*         NCTFLAG = 1/,1/TNQS,1/TNSR,1/TNSL,1/TNSE,1/TNTF,1/TNBD, 
*                   1/TNBK,1/TNSM 
* 
*         TNQS = 1 IF QUEUED SUPERVISORY MESSAGE. 
*         TNSR = 1 IF TASK SEND MESSAGE WITH RECALL.
*         TNSL = 1 IF INPUT FROM TERMINAL EXCEEDED LIMIT. 
*         TNSE = 1 IF TASK IS ROLLED OUT ON SEND. 
*         TNTF = 1 IF TERMINAL TEMPOFF. 
*         TNBD = 1 IF BLOCK DELIVERED.
*         TNBK = 1 IF USER BREAK. 
*         TNSM = 1 IF SUPERVISORY MESSAGE RETURN AFTER SEND.
*         TNCT = APPLICATION CHARACTER TYPE - 1.
*         TNBO = OUTSTANDING OUTPUT BLOCKS. 
*         TNBL = OUTPUT BLOCK LIMIT.
*         TNCN = NEXT ACN IN QUEUE. 
*         TNCB = INDEX OF COMMUNICATION BLOCK CONNECTION TO TERMINAL. 
*         TNTS = ADDRESS OF TST ENTRY FOR CONNECTION. 
* 
*         STATUS = 1/IBU,3/RFE,1/NFE,1/XPT,1/CAN,1/BIT
  
 NCTA     CON    0           HEAD OF SUPERVISORY MESSAGE QUEUE
 NCTB     CON    0           END OF SUPERVISORY MESSAGE QUEUE 
 TNCTL    EQU    3           LENGTH OF NCT ENTRY
  
 TNQS     FIELD  ,58,58      QUEUED SUPERVISORY MESSAGE 
 TNSR     FIELD  ,57,57      TASK SEND WITH RECALL
 TNSL     FIELD  ,56,56      INPUT EXCEEDED LIMIT 
 TNSE     FIELD  ,55,55      TASK ROLLED OUT ON SEND
 TNTF     FIELD  ,54,54      TERMINAL TEMPOFF 
 TNBD     FIELD  ,53,53      BLOCK DELIVERED
 TNBK     FIELD  ,52,52      USER BREAK 
 TNSM     FIELD  ,51,51      SUPERVISORY MESSAGE INDICATOR
 TNCT     FIELD  ,46,45      APPLICATION CHARACTER TYPE - 1 
 TNBO     FIELD  ,44,42      OUTSTANDING OUTPUT BLOCK 
 TNBL     FIELD  ,41,39      OUTPUT BLOCK LIMIT 
 TNCN     FIELD  ,38,27      NEXT ACN IN QUEUE
 TNCB     FIELD  ,26,18      COMMUNICATION BLOCK INDEX
 TNTS     FIELD  ,17,0       TST ENTRY FWA
 TNAH     FIELD  2,59,0      APPLICATION BLOCK HEADER 
          SPACE  4,10 
**        GLOBAL STORAGE. 
  
 ACNA     CON    0           APPLICATION CONNECTION NUMBER
 ACNS     CON    0           SUPERVISORY MESSAGE CONNECTION NUMBER
 ACMA     CON    NCTL        LARGEST CONNECTION NUMBER
 ACMI     CON    1           SMALLEST CONNECTION NUMBER 
 ALNO     CON    ALN         APPLICATION LIST NUMBER
 ALNA     CON    ALN+1       PRIORITY APPLICATION LIST
 NSUP     CON    0           SUPERVISORY MESSAGE STATUS 
 NMBP     VFD    60/0        NULL MESSAGE PARAMETER BLOCK 
          SPACE  4,10 
**        SUPERVISORY MESSAGES SENT TO NAM. 
  
*         CONNECTION ACCEPTED.
 SMAC     VFD    8/PFCN,1/0,1/1,6/SFRT,8/0,12/0,14/0,4/4,6/ALN
  
*         CONNECTION REJECTED.
 SMCR     VFD    8/PFCN,1/1,1/0,6/SFRT,8/4,12/0,24/0
  
*         CONNECTION ENDED. 
 SMCE     VFD    8/PFCN,1/0,1/0,6/SFEN,12/0,8/0,24/0
  
*         CHANGE INPUT CHARACTER TYPE.
 SMDC     VFD    8/PFDC,1/0,1/0,6/SFIC,8/0,12/0,18/0,6/0
  
*         BLOCK DELIVERED.
 SMAK     VFD    8/PFFC,2/0,6/SFAK,8/0,12/0,24/0
  
*         BLOCK NOT DELIVERED.
 SMAX     VFD    8/PFFC,1/0,1/0,6/SFAX,8/1,12/0,18/0,6/0
  
*         CONNECTION INITIALIZE.
 SMCM     VFD    8/PFFC,1/0,1/1,6/SFCM,8/0,12/0,24/0
  
*         HALF DUPLEX.
 SMHD     VFD    8/PFLS,2/0,6/SFHD,8/0,12/0,24/0
  
*         INTERRUPT RESPONSE. 
 SMRB     VFD    8/PFIN,2/0,6/SFRB,8/0,12/0,24/0
  
*         RESUME OUTPUT.
 SMRO     VFD    8/PFRO,1/0,1/0,6/SFRO,12/0,32/0
  
*         SWITCH APPLICATION CONNECTION.
 SMSW     VFD    8/PFLS,1/0,1/0,6/SFSW,8/0,12/0,18/0,6/0
  
*         TERMDEF FUNCTION CODE.
 SMTD     VFD    8/PFTC,2/0,6/SFDM,44/0 
  
*         TYPE-AHEAD DISABLE MESSAGE. 
 SMTY     VFD    8/PFTC,2/0,6/SFDM,8/112,8/TYPEAH,8/0,8/0,8/0,4/0 
          SPACE  4,15 
**        DAYFILE MESSAGES. 
  
 SMGA     DATA   C* NAM FUNCTION NOT FOUND.*
 SMGB     DATA   C* ERR/LGL RECEIVED FROM NAM - RC = XX.* 
 SMGD     DATA   C* NAM ERROR - ILLOGICAL ABT.* 
 SMGF     DATA   C* NETOFF COMPLETE.* 
 SMGG     DATA   C* NAM ERROR - INCORRECT ABH.* 
 SMGH     DATA   C* NAM NOT AVAILABLE.* 
 SMGI     DATA   C* NETON COMPLETE.*
 SMGJ     DATA   C* AIP DEBUG OPTION TURNED ON.*
 SMGK     DATA   C* AIP DEBUG OPTION TURNED OFF.* 
          SPACE  4,10 
**        DATA MESSAGE INPUT AREA.
  
 INDH     BSS    1           DATA MESSAGE HEADER
  
*         (INDI) AND (INDB) ARE FORMATTED TO LOOK LIKE TELEX INPUT. 
*         (INDB) IS ALSO USED TO CONTAIN ROUTINE *XST* BEFORE 
*         NAM INPUT ARRIVES.
  
 INDI     VFD    1/0,1/0,22/0,18/0,18/0 
 INDB     EQU    *           BUFFER FOR NAM INPUT 
 INDBL    EQU    422         MESAGE BUFFER LENGTH 
          ORG    INDB+INDBL+1 
 INDM     VFD    60/INDBL-1  MAXIMUM MESSAGE LENGTH 
 INDN     VFD    60/INDBL-CMBHL-CMBRL-1  MAXIMUM LENGTH FOR 2ND LIST
          ERRNG  INDBL-CMBRL-CMBHL-1-409  BUFFER TOO SMALL
  
**        SUPERVISORY INPUT MESSAGE AREA. 
  
 INSH     BSS    1           SUPERVISORY MESSAGE HEADER 
  
*         (INSI) AND (INSJ) ARE USED TO SETUP SYSTEM ORIGIN 
*         TRANSACTIONS FOR ITASK. 
  
 INSI     VFD    1/0,1/0,22/0,18/0,18/0 
 INSJ     BSS    2           SYSTEM ORIGIN TASK MESSAGE BUFFER
 INSB     EQU    *           SUPERVISORY MESSAGE BUFFER 
 INSBL    EQU    64+1        INPUT SUPERVISORY BUFFER LENGTH
          ORG    INSB+INSBL+1 
 INSM     VFD    60/INSBL    MAXIMUM MESSAGE LENGTH 
          SPACE  4,10 
**        SUPERVISORY OUTPUT MESSAGE AREA.
  
 OTSG     VFD    6/3,12/0,18/0,4/2,8/0,12/4  SYNCHRONOUS HEADER 
  
 OTSH     VFD    6/3,12/0,18/0,4/1,4/0,1/1,3/0,12/OTSBL 
 OTSI     VFD    6/3,12/0,18/0,4/2,4/0,1/1,3/0,12/0 
 OTSJ     BSSZ   1           SUPERVISORY MESSAGE HEADER 
 OTSBL    EQU    4
 OTSB     BSS    OTSBL       SUPERVISORY MESSAGE
          VFD    42/0HBYE,18/0
  
*         DEFAULT APPLICATION BLOCK HEADER. 
  
 DABH     VFD    6/2,12/0,18/0,4/4,1/0,3/0,1/1,3/0,12/0 
 DABI     VFD    6/1,12/0,18/0,4/4,1/0,3/0,1/1,3/0,12/0 
          SPACE  4,10 
**        PRIORITY AND REASON CODE FOR SUPERVISORY MESSAGE. 
*T        42/ ,6/I,6/R,6/C
*         I      INCOMING SUPERVISORY MESSAGE PRIORITY. 
*         R      RESIDENT SUPERVISORY MESSAGE PRIORITY. 
*         C      ITASK REASON CODE. 
  
 PINI     EQU    110200B+CILOG  TERMINAL LOGIN
 PCBK     EQU    111000B+CICNB  CONNECTION BROKEN 
 PACK     EQU    050400B        BLOCK DELIVERED 
 PNAK     EQU    060500B+CINAK  BLOCK NOT DELIVERED 
 PBRK     EQU    040200B+CIBRK  USER BREAK
 PINA     EQU    020100B+CIINA  TERMINAL INACTIVE 
 PTCH     EQU    030200B+CITC   TERMINAL CHARACTERISTIC 
 PLGR     EQU    070600B+CILGR  LOGICAL ERROR 
 PTSD     EQU    111100B+CITSD  NETWORK FORCED SHUTDOWN 
 PNSD     EQU    060500B+CISHT  NETWORK NORMAL SHUTDOWN 
 PTES     EQU    100000B+CIUS   TERMINAL STATUS REQUEST 
          TITLE  TAF INTERFACE FUNCTION.
 CTA      SPACE  4,20 
**        NETWORKS ACCESS METHODS FUNCTION PROCESSORS.
*         THE FOLLOWING PROCESSORS ARE AVAILABLE ONLY IN NAM
*         TELE-PROCESSING MODE. 
* 
*         NOTE - REGISTER CONVENTION IS THE SAME AS OTHER CTI 
*         PROCESSORS, EVEN THOUGH THE CODE IS NOT CONTIGUOUSLY
*         PLACED. 
 CTA      SPACE  4,20 
*         CTA - REQUEST CODE 16, SET INPUT CHARACTER TYPE.
* 
*         THE REQUEST FORMAT IS 
* 
*T  ADDR   42/     TERMINAL, 18/     ACT
*T, ADDR+1 42/      ,18/      STATUS
* 
*         TERMINAL = TERMINAL BEING OPERATED UPON.
*         ACT = INPUT CHARACTER TYPE 2,3,4. 
*         STATUS = LOCATION FOR RETURNED LOGIN STATUS.
* 
*         OPERATION - THE PARAMETERS ARE VERIFIED FOR LEGALITY AND
*                     THE TASK ABORTED FOR INVALID CONDITIONS.  THE 
*                     CHARACTER TYPE IS CHECKED FOR LEGALITY AND THEN 
*                     SAVED IN THE NCT.  THEN A NETPUT IS ISSUED TO 
*                     INFORM THE NETWORK. 
* 
*         ENTRY  (B6) = START OF COMMUNICATIONS BLOCK HEADER. 
*                (B5) = TASK RA.
*                (B4) = COMPLEMENT OF PARAMETER ADDRESS.
*                (B2) = ADDRESS OF TASK-S SYSTEM AREA.
* 
*         EXIT   TO *TERR28* IF INCORRECT ACT.
*                TO *TSSC* OTHERWISE. 
* 
*         USES   A - 2, 4, 5, 6, 7. 
*                B - 6. 
*                X - ALL. 
* 
*         CALLS  NPT, VPR.
  
  
 CTA      SX2    B1          (X2) = NUMBER OF WORDS IN PARAMETER BLOCK
          RJ     VPR         VERIFY REQUEST PARAMETERS
          LX1    TSCNN-TSCNS-1  RIGHT JUSTIFY ACN 
          ZR     X6,TSSC     IF TERMINAL NOT LOGGED IN
          SA2    B4          READ TASK ACT
          MX0    -AHACN 
          BX1    -X0*X1      ACN
          SX3    X2-1 
          SB6    B1          (B6) .GT. 0 IMPLIES DEFAULT PARAMETERS 
          NG     X3,TERR28   IF ACT .LT. 1 (INCORRECT ACT)
          ZR     X3,TERR28   IF ACT .EQ. 1 (EXECUTIVE TO NAM ONLY)
          SX3    X2-5 
          SA4    SMDC        SET ACT IN SUPERVISORY MESSAGE 
          PL     X3,TERR28   IF ACT .GT. 4 (INCORRECT ACT)
          SX5    TNCTL
          IX5    X5*X1
          LX1    AHACS-AHACN+1
          TA5    X5,VNCT     NCT ENTRY
          LX5    -TNCTS+TNCTN-1 
          MX0    -TNCTN 
          BX5    X0*X5
          SX7    X2-1        APPLICATION CHARACTER TYPE - 1 
          BX7    X5+X7
          LX7    TNCTS-TNCTN+1
          SA7    A5          STORE IN NCT 
          MX0    -AHCTN 
          BX2    -X0*X2      MASK APPLICATION CHARACTER TYPE
          BX6    X2+X4
          BX6    X1+X6       INSERT ACN 
          SA6    OTSB 
          SX4    B1 
          RJ     NPT         SET INPUT CHARACTER TYPE 
          EQ     TSSC        RETURN TO TASK SWITCHING LOOP
 CTD      SPACE  4,10 
**        CTD - REQUEST CODE 17, DEFINE TERMINAL CHARACTERISTICS. 
* 
*         THE REQUEST FORMAT IS 
* 
*T  ADDR   42/      TERMINAL,18/     CC 
*T, ADDR+1 42/      ,18/      STATUS
*T, ADDR+2 16/      CODE,44/      TEXT
*T, ADDR+N 60/      TEXT
* 
*         TERMINAL = TERMINAL NAME OF TERMINAL TO BE OPERATED 
*                     UPON.  ZERO IMPLIES ORIGINATING TERMINAL. 
*         CC = CHARACTER COUNT OF ATTENDANT TEXT. 
*         CODE = PRIMARY FUNCTION CODE FOR NETWORK SUPERVISOR.
*         TEXT = HEXIDECIMAL CHARACTERS WHOSE VALUES ARE ASCII FOR
*                THE NEW ATTRIBUTES FOR THE TERMINAL. 
* 
*         OPERATION - THE REQUEST PARAMETERS ARE VALIDATED AND
*                     THE TASK ABORTED FOR INCORRECT CONDITIONS.  THE 
*                     CHARACTER COUNT AND THE ACN ARE TRANSFERRED TO
*                     THEIR RESPECTIVE PLACES IN THE ABH AND
*                     SUPERVISORY MESSAGE BUFFER, FOLLOWED BY A 
*                     NETPUT OF THE MESSAGE.
* 
*         ENTRY  (B6) = START OF COMMUNICATIONS BLOCK HEADER. 
*                (B5) = TASK RA.
*                (B4) = COMPLEMENT OF PAREMETER ADDRESS.
*                (B2) = ADDRESS OF TASK-S SYSTEM AREA.
* 
*         EXIT   TO *TRCL2* IF BLOCK OUTSTANDING. 
*                TO *SRM* IF BREAK OUTSTANDING. 
*                TO *TSSC* OTHERWISE. 
*                (B1) = 1.
* 
*         USES   A - 1, 2, 3, 4, 5, 6, 7. 
*                B - 1, 3, 4. 
*                X - ALL. 
* 
*         CALLS  NCK, NPT, PNT, RSP, VPR. 
* 
*         MACROS NET. 
* 
*         NOTE   1. IF TERMINAL HAS SEND WITH RECALL OR OUTPUT BLOCK
*                   OUTSTANDING, THE TASK IS PUT IN RECALL. 
  
  
 CTD      SX4    60          COMPUTE REQUEST LENGTH 
          SA2    B5-B4
          MX0    -18
          BX2    -X0*X2      LENGTH IN ASCII CHARACTERS 
          LX2    3
          PX4    X4 
          SX2    X2+179      LENGTH IN BITS 
          NX4    X4 
          PX2    X2 
          NX2    X2 
          FX4    X2/X4       LENGTH IN WORDS
          UX4,B3 X4 
          LX2    X4,B3
          RJ     VPR         VERIFY REQUEST PARAMETERS
 CTD1     LX1    59-TSLIS 
          PL     X1,CTD5     IF TERMINAL NOT LOG IN 
          MX0    -TSCNN 
          LX1    TSCNN-TSCNS-1-59+TSLIS 
          SX3    TNCTL
          BX2    -X0*X1      ACN
          IX3    X2*X3
          MX0    -TNBON 
          TA3    X3,VNCT     NCT ENTRY
          SX5    B1          ADD OUTSTANDING OUTPUT BLOCK FLAG
          LX3    59-TNSRS 
          NG     X3,CTD3     IF SEND WITH RECALL OUTSTANDING
          LX3    TNBON-TNBOS-1-59+TNSRS+60
          BX4    -X0*X3      OUTSTANDING OUTPUT BLOCK 
          NZ     X4,CTD3     IF OUTPUT BLOCK OUTSTANDING
          BX3    X3+X5
          LX3    59-TNBKS-TNBON+TNBOS+1  LEFT JUSTIFY BREAK FLAG
          PL     X3,CTD1.1   IF NO BREAK OUTSTANDING
          SX1    B0 
          EQ     SRM         SEND RESUME OUTPUT MARKER
  
 CTD1.1   SA1    VSND        APPLICATION BLOCK NUMBER 
          SA5    OTSI        SUPERVISORY MESSAGE HEADER 
          MX0    -AHBNN 
          SX6    X1+B1       INCREMENT APPLICATION BLOCK NUMBER 
          BX6    -X0*X6 
          SA4    B4          FIRST WORD OF PARAMETERS 
          SA6    A1          UPDATE ABN 
          LX2    AHADS-AHADN+1
          SX4    X4          TLC
          LX6    AHBNS-AHBNN+1
          SX7    B4+2        ADDRESS OF SUPERVISORY MESSAGE 
          BX4    X4+X5       ADD TLC
          SA1    X7          FWA OF MESSAGE 
          BX6    X4+X6       ADD ABN
          BX6    X2+X6       ADD ADR
          SA7    CTD2+4 
          SA4    SMTD        TERMDEF FUNCTION CODE
          MX0    -44
          BX7    -X0*X1      CLEAR FUNCTION CODE
          SA6    INDI        SUPERVISORY MESSAGE HEADER 
          BX7    X4+X7
          SA7    A1 
          BX7    X3 
          LX7    TNBKS-59 
          SA7    A3+         UPDATE NCT ENTRY 
          RJ     NCK         CHECK NETWORK STATUS 
 CTD2     NET    PUT,INDI,O  SEND TERMDEF SUPERVISORY MESSAGE 
          SB1    1
          RJ     NCK         CHECK NETWORK STATUS 
          RJ     RSP         RESTORE (B2) AND (B7)
          EQ     TSSC        ACTIVE TASK
  
*         SAVE REGISTER FOR RECALL. 
  
 CTD3     SX1    A1          TST ENTRY
          SB3    B2+NUAPL    TASK RA
          SX2    B4-B3       FWA OF PARMETERS RELATIVE TO RA
          LX1    18 
          BX6    X1+X2
          SX7    CTD4        RETURN ADDRESS 
          SA6    B2+RCLA
          EQ     TRCL2       PUT TASK IN RECALL 
  
*         SET UP REGISTERS AFTER RECALL.
  
 CTD4     SA2    B2+RCLA
          SB3    B2+NUAPL    TASK RA
          SB4    B3+X2       FWA OF PARAMETERS
          LX2    -18
          SA1    X2          TST ENTRY
          EQ     CTD1        TRY AGAIN
  
 CTD5     SA4    A1+B1       GET *TST* WORD 2 
          LX4    59-TSCPS 
          PL     X4,TSSC     IF NOT DUE TO A CONNECTION FAILURE 
          RJ     PNT         PROCESS NETWORK OR TERMINAL FAILURE
          EQ     TSSC        EXIT 
 CTH      SPACE  4,10 
**        CTH - REQUEST CODE 18, GET APPLICATION BLOCK HEADER.
* 
*         THE REQUEST FORMAT IS 
* 
*T  ADDR   42/      TERMINAL,18/     0
*T, ADDR+1 42/      0,18/      STATUS 
*T, ADDR+2 60/      ABH 
* 
*         TERMINAL - TERMINAL NAME BEING OPERATED UPON. 
*                   ZERO IMPLIES ORIGINATING TERMINAL.
*         STATUS -  ADDRESS OF THE TERMINAL LOGGIN STATUS WORD. 
*         ABH - APPLICATION BLOCK HEADER RETURNED TO THE TASK.
* 
*         OPERATION - THE REQUEST PPARAMETERS ARE VERIFIED AND
*                     THE TASK ABORTED FOR INCORRECT CONDITIONS.  THE 
*                     ABH FROM THE NCT IS LOCATED AND RETURNED TO 
*                     THE TASK IN THE APPROPRIATE PLACE IN THE
*                     PARAMETER BLOCK.
* 
*         ENTRY  (B6) = START OF COMMUNICATIONS BLOCK HEADER. 
*                (B5) = TASK RA.
*                (B4) = COMPLEMENT OF PAREMETER ADDRESS.
*                (B2) = ADDRESS OF TASK-S SYSTEM AREA.
* 
*         EXIT   TO *TSSC*. 
* 
*         USES   A - 4, 7.
*                X - 0, 1, 2, 3, 4, 7.
* 
*         CALLS  PNT, VPR.
  
  
 CTH      SX2    2           (X2) = WORD COUNT OF PARAMETER BLOCK 
          RJ     VPR         VERIFY REQUEST PARAMETERS
          ZR     X6,CTH1     IF TERMINAL NOT LOG IN 
          MX0    -12
          LX1    11-53
          SX2    TNCTL
          BX1    -X0*X1      MASK ACN 
          IX3    X2*X1
          TX3    X3,VNCT
          SA4    X3+2        (X4) = ABH 
          BX7    X4 
          SA7    B4+2        RETURN ABH TO TASK FIELD LENGTH
          EQ     TSSC        RETURN TO TASK SWITCHING LOOP
 CTS      SPACE  4,30 
**        CTS - SEND TERMINAL OUTPUT. 
  
 CTH1     SA4    A1+B1       GET *TST* WORD 2 
          LX4    59-TSCPS 
          PL     X4,TSSC     IF NOT DUE TO A CONNECTION FAILURE 
          RJ     PNT         PROCESS NETWORK OR TERMINAL FAILURE
          EQ     TSSC        EXIT 
* 
*         THE REQUEST FORMAT IS 
* 
*T  ADDR   1/T,1/C,1/ ,1/B,1/R,1/A,1/F,5/ ,18/MSG,12/0,18/NUM 
*T, ADDR+1 42/ TERMINAL NAME,18/BLOCK NUMBER
*T, ADDR+2 60/APPLICATION BLOCK HEADER
*T, ADDR+3 60/STATUS
* 
*                T = 1 IF SEND TO TERMINAL SPECIFIED IN ADDR+1 ELSE 
*                    SEND TO ORIGINATING TERMINAL.
*                C = 1 IF TASK CEASE REQUESTED. 
*                B = RETURN APPLICATION BLOCK NUMBER. 
*                R = 1 IF SEND MUST WAIT FOR BLOCK TO BE DELIVERTED 
*                      TO TERMINAL. 
*                A = 1 IF USER SUPPLIES ABH.
*                F = 1 IF FINAL SEND BEFORE *CEASE* OR *WAITINP*. 
*                    THIS BIT IS RESERVED FOR *TAF*.
*                MSG = FWA OF MESSAGE.
*                NUM = NUMBER OF WORDS IN MESSAGE.
* 
*         ENTRY  (B6) = START OF COMMUNICATIONS BLOCK HEADER. 
*                (B5) = TASK RA.
*                (B4) = COMPLEMENT OF PAREMETER ADDRESS.
*                (B2) = ADDRESS OF TASK-S CONTEXT BLOCK.
* 
*         EXIT   TO *SND* IF NORMAL TASK SEND.
*                TO *TERR8* IF INCORRECT WORD COUNT.
*                TO *TERR2* IF MESSAGE OUT OF RANGE.
*                TO *TERR7* IF INVALID TERMINAL.
*                TO *TERR11* IF INVALID DATA BASE.
* 
*         USES   A - 2, 3, 4, 6, 7. 
*                B - 4, 6.
*                X - 0, 2, 3, 4, 5, 6, 7. 
* 
*         CALLS  CWC, STST. 
  
  
 CTS      SA2    B5-B4       PARAMETER WORD ONE 
          SA3    B6+B1
          SX6    X2+B1       NUMBER OF WORDS TO SEND
          MX0    -59
          LX2    59-53       CLEAR FLAG 
          BX2    -X0*X2 
          LX2    59-54-59+53
          LX0    57-59
          PL     X2,CTS1     IF USER DOES NOT SUPPLIES ABH
          RJ     CWC         CALCULATE WORD COUNT 
 CTS1     LX2    54-59
          BX4    X0*X2
          BX6    X4+X6
          LX3    -42
          SX3    X3          TST ADDRESS FOR TERMINAL 
          MX0    1
          NG     X2,CTS3     IF NOT SEND TO ORIGINATING TERMINAL
 CTS2     SA4    B2+CB1C
          MX7    1
          LX7    CBSDS-59 
          BX7    X7+X4       SET MESSAGE SENT FLAG
          SA7    A4 
          EQ     CTS5        CHECK MESSAGE LENGTH 
  
*         VALIDATE TERMINAL.
  
 CTS3     SA4    A2+B1
          BX5    X3 
          RJ     STST        SEARCH TERMINAL STATUS TABLE 
          ZR     X3,TERR7    IF TERMINAL NOT FOUND
          SA4    A3-1 
          MX7    -12
          IX5    X3-X5
          LX4    -24
          BX7    -X7*X4      DATA BASE OF RECEIVING TERMINAL
          ZR     X5,CTS2     IF SEND TO ORIGINATING TERMINAL
          SA4    B2+DBNC     DATA BASE OF SENDING TERMINAL
          NG     X4,CTS5     IF VALID FOR ALL DATA BASES
          SX4    X4 
          BX7    X7-X4
          ZR     X7,CTS5     IF DATA BASES MATCH
          SX4    X4-2RSY
          NZ     X4,TERR11   IF NOT VALIDATED FOR ALL DATA BASES
 CTS5     LX2    -30
          ZR     X3,TERR7    IF NO TERMINAL EXISTS - FATAL ERROR
          SX5    TSTLLE      LENGTH OF TST ENTRY
          IX5    X3*X5       OFFSET INTO TST
          LX3    18 
          TA4    X5,VTST     TST ENTRY FOR TERMINAL 
          LX4    59-TSLIS 
          SB6    X2          FWA OF MESSAGE 
          SB4    X6-MAXWS-1 
          IX7    X3+X6
          SA1    B7          SUBCONTROL POINT ENTRY 
          NG     X6,TERR8    IF WORD COUNT IS NEGATIVE
          BX7    X7+X0
          SB3    X6 
          EQ     B3,B1,TERR8 IF WORD COUNT IS ZERO
          SA3    B2+TOWC
          PL     B4,TERR8    IF WORD COUNT IS TOO HIGH
          SB3    B3-B1
          SX6    X3+B3       UPDATE TOTAL WORD OF TERMINAL OUTPUT 
          SX3    B6 
          LX1    -18         RIGHT JUSTIFY FL 
          SX5    SUAC 
          IX3    X3-X5
          SX1    X1 
          NG     X3,TERR2    IF MESSAGE OUT OF RANGE
          SX3    X6-MAXTO 
          SA6    A3 
          SB6    -B6+B1 
          PL     X3,TERR8    IF TOO MUCH TOTAL TERMINAL OUTPUT
          SB4    B6-B3
          SX6    X1+B4
          NG     X6,TERR2    IF MESSAGE OUT OF RANGE
          LX2    59-58+30 
          SX5    B1 
          PL     X2,CTS6     IF SEND WITHOUT CEASE
          MX3    -59
          BX2    -X3*X2      CLEAR CEASE FLAG 
          MX0    -48
          SA1    B2+CB2C     GET C.B. ADDRESS 
          SA1    X1+CBTLW 
          BX7    -X0*X1 
          NZ     X7,CTS6     IF NOT LAST TRANSACTION
          BX2    X2+X3       ADD LAST CEASE FLAG
          SX5    B1+B1
 CTS6     LX5    -6 
          MX0    -54         CLEAR ABT
          LX2    58-59+30 
          SA3    A2+2        GET APPLICATION BLOCK HEADER 
          BX7    -X0*X3      CLEAR ABT
          BX6    X5+X7       ADD NEW ABT
          SA6    A3          UPDATE APPLICATION BLOCK HEADER
          EQ     SND         SEND MESSAGE 
 CWC      SPACE  4,15 
**        CWC - CALCULATE WORD COUNT. 
* 
*         ENTRY  (A2) = FIRST WORD ADDRESS OF PARAMETERS. 
* 
*         EXIT   (X6) = WORD COUNT PLUS ONE.
* 
*         USES   A - 1, 4.
*                B - 3. 
*                X - 1, 4, 5, 6, 7. 
  
  
 CWC      SUBR               ENTRY/EXIT 
          MX1    -AHLCN      MASK TLC 
          SA4    A2+2        APPLICATION BLOCK HEADER 
          MX5    -AHCTN      MASK ACT 
          BX7    -X1*X4      MESSAGE LENGTH IN UNIT 
          LX4    AHCTN-AHCTS-1 RIGHT JUSTIFY ACT
          BX5    -X5*X4      APPLICATION CHARACTER TYPE 
          SB3    X5-1        ACT-1
          SX5    X5-5 
          LE     B3,TERR28   IF INCORRECT ACT (.LE. 1)
          PL     X5,TERR28   IF INCORRECT ACT (.GT. 4)
          SX6    60 
          SA1    NGCA+B3     ACT TABLE
          IX1    X1*X7       MESSAGE LENGTH IN BITS 
          PX6    X6 
          SX1    X1+59       MODULE 60
          PX1    X1 
          NX6    X6 
          FX7    X1/X6       MESSAGE LENGTH IN WORDS
          UX7,B3 X7 
          LX6    B3,X7
          SX6    X6+B1
          EQ     CWCX        RETURN 
          TITLE  NGL - TERMINAL INPUT PROCESSOR.
 NGL      SPACE  4,35 
**        NGL - GET TERMINAL INPUT FROM NAM.
* 
*                1. IF *NAM* IS RUNNING GO TO STEP 3. 
*                2. CALL ROUTINE *PNS* TO CHECK ANY ACTIVE TERMINAL,
*                   IF THERE IS NO ACTIVE TERMINAL RETURN.
*                3. CHECK SUPERVISORY MESSAGE STATUS WORD *NSUP*. 
*                   IF PREVIOUS NETWORK REQUEST NOT COMPLETE RETURN.
*                4. IF NO OUTSTANDING NETWORK REQUEST GO TO STEP 8. 
*                5. IF TAF ROLLED CALL *TRI* TO ROLL TAF IN.
*                6. IF PREVIOUS REQUEST IS *NETPUT* SET COMPLETE FLAG 
*                   IN TASK RECALL STATUS.  OUTPUT PROCESSOR *SND*
*                   RETURNS STATUS TO TASK BASED ON COMPLETION FLAG.
*                   GO TO STEP 8 TO CONTINUE INPUT PROCESS. 
*                7. JUMP TO PROPER SUBROUTINE TO PROCESS PREVIOUS 
*                   NETWORK REQUEST.
*                8. IF THERE IS A SM IN *AIP* CALL *SMP*. 
*                9. CALL ROUTINE *NIT* TO PROCESS NETWORK TERMINAL
*                   INPUT.
*               10. IF COMMUNICATION BLOCK AVAILABLE RETURN.
*               11. INCREMENT NO COMMUNICATION BLOCK AVAILABLE COUNTER, 
*                   IF THE COUNTER IS GREATER THAN 4, CALL *SMP* TO 
*                   GET A BLOCK DELIVERED SUPERVISORY MESSAGE 
*                   (FC/ACK) TO FREE A COMMUNICATION BLOCK. 
* 
*         ENTRY  (VNON) = NAM STATUS. 
*                (TROA) = 0 IF TRANSACTION SUBSYSTEM ROLLED IN. 
*                (NSUP) = 1 IF THERE IS SUPERVISORY MESSAGE IN AIP. 
*                (PPMA) = NETWORK REQUEST STATUS. 
*                (SMPD) = NO COMMUNICATION BLOCK COUNTER. 
* 
*         EXIT   (B2) AND (B7) RESTORED.
*                (B1) = 1.
* 
*         USES   A - 1, 2, 3, 7.
*                B - 1, 3.
*                X - 1, 2, 3, 7.
* 
*         CALLS  NIT, PNS, RSP, SMP, TRI. 
* 
*         MACROS NET. 
  
  
 NGL3     SB1    1
          RJ     RSP         RESTORE (B2) AND (B7)
  
 NGL      SUBR               ENTRY/EXIT 
  
*         CHECK FOR ANY SUPERVISORY.
  
          SA3    VNON        *NAM* STATUS 
          ZR     X3,NGL1     IF *NAM* RUNNING 
          RJ     PNS         PROCESS NETWORK SHUTDOWN 
          ZR     B3,NGL3     IF NO TERMINAL ACTIVE
 NGL1     NET    CHEK        CHECK NETWORK STATUS 
          SA1    NSUP        NETWORK STATUS WORD
          SA2    PPMA        RETURN ADDRESS 
          PL     X1,NGL3     IF LAST NETWORK REQUEST NOT COMPLETE 
          ZR     X2,NGL1.4   IF NO NETWORK REQUEST OUTSTANDING
          SA3    TROA 
          ZR     X3,NGL1.2   IF TAF ROLLED IN 
          RJ     TRI         ROLL TAF IN
 NGL1.2   SA3    SNDB        *NETPUT* STATUS
          SA2    PPMA        NETWORK REQUEST STATUS 
          ZR     X3,NGL1.3   IF NOT *NETPUT*
          SA3    X3          SET COMPLETE FLAG
          MX7    1
          BX7    X7+X3
          SA7    A3+
          BX7    X7-X7
          SA7    SNDB        CLEAR TASK RECALL STATUS 
          SA7    TROF        CLEAR ROLLOUT INHIBIT FLAG 
          SA7    PPMA        CLEAR NETWORK REQUEST FLAG 
          EQ     NGL3        RETURN 
  
 NGL1.3   SB3    X2          RETURN ADDRESS 
          BX6    X6-X6       CLEAR NETWORK REQUEST STATUS WORD
          SA6    A2+
          JP     B3          PROCESS PROPER FUNCTION
  
 NGL1.4   SB3    B0 
          LX1    59-55
          PL     X1,NGL2     IF NO SUPERVISORY MESSAGE
          RJ     SMP         PROCESS SUPERVISORY MESSAGE
          NZ     B3,NGL3     IF TASK SCHEDULED
 NGL2     RJ     NIT         PROCESS NETWORK INPUT TO TAF 
          NZ     X0,NGL3     IF COMMUNICATION BLOCK RESERVED
          SB3    B1+         FORCE UPDATE OF *NSUP* 
          SA1    SMPD        INCREMENT NO C.B. AVAILABLE COUNTER
          SX7    X1+B1
          SA7    A1 
          BX6    X6-X6
          LX7    -2 
          PL     X7,NGL3     IF NOT TIME TO UPDATE *NSUP* 
          SA6    A1 
          RJ     SMP         DO A NETGET ON ACN = 0 
          EQ     NGL3        RETURN 
 PPM      SPACE  4,15 
**        PPM - PROCESS PARALLEL MODE.
* 
*         ENTRY  (NSUP) = NEGATIVE IF *AIP* COMPLETED THE 
*                         NETWORK REQUEST.
* 
*         EXIT   (B1) = 1.
*                TO *NGL3* IF LAST REQUEST NOT COMPLETE.
*                (PPMA) = RETURN ADDRESS. 
* 
*         USES   A - 1, 2.
*                X - 1, 2.
  
  
 PPM      SUBR               ENTRY/EXIT 
          SA1    NSUP        NETWORK STATUS WORD
          BX2    X1 
          LX2    59-57
          PL     X2,PPM1     IF *NETWORK* NOT AVAILABLE 
          NG     X1,PPMX     IF LAST NETWORK REQUEST COMPLETED
          SA2    PPM         SET NETWORK REQUEST FLAG 
          MX7    -18
          LX2    30 
          BX7    -X7*X2 
          SA7    PPMA 
          EQ     NGL3        EXIT 
  
 PPM1     RJ     RAN         RECOVER FROM ABORT OF *NETWORK*
          SA1    BFPT        ACKNOWLEDGE MESSAGE
          BX7    X1 
          SA7    VSCR 
          EQ     NGL3        EXIT 
  
 PPMA     CON    0           NETWORK REQUEST FLAG - RETURN ADDRESS
          TITLE  PNS - PROCESS NETWORK SHUTDOWN.
 PNS      SPACE  4,25 
**        PNS - PROCESS NETWORK SHUTDOWN. 
* 
*                1. IF NETWORK NORMAL SHUT DOWN GO TO STEP 5. 
*                2. IF NO NETON COMMAND FROM OPERATOR RETURN. 
*                3. IF AN ASSEMBLY DEFINED TIME HAS ELAPSED SINCE 
*                   LAST NETON ATTEMP CALL ROUTINE *NON* TO DO A
*                   *NETON*.
*                4. RETURN TO THE CALLER. 
*                5. SEARCH ALL COMMUNICATION BLOCKS.  IF ANY
*                   COMMUNICATION BLOCK IS NOT RESERVED FOR BATCH 
*                   INPUT RETURN WITH (B3) .EQ. 1.
*                6. SEARCH NETWORK COMMUNICATION TABLE TO FIND TST
*                    ENTRY.  IF ANY TASK IS IN *WAITINP*, 
*                    RETURN WITH (B3) .EQ. 1. 
*                7. DO A NETOFF AND RETURN WITH (B3) .EQ. 0.
* 
*         ENTRY  (X3) .LT. 0, IF NORMAL SHUTDOWN. 
*                     .GT. 0, OTHERWISE.
* 
*         EXIT   (B3) .EQ. 0 IF NO TERMINAL ACTIVE. 
*                     .EQ. 1 OTHERWISE. 
* 
*         USES   A - 1, 2, 3, 4, 7. 
*                B - 4, 5.
*                X - 1, 2, 3, 4, 6, 7.
* 
*         CALLS  NOF, NON, SCB, TRI.
  
  
 PNS      SUBR               ENTRY/EXIT 
          SB5    B0 
          BX6    X6-X6
          SA1    STIN        START INPUT STATUS 
          NG     X3,PNS1     IF NORMAL NETWORK SHUTDONW 
          PL     X1,PNS6     IF COMMUNICATIONS NOT ENABLED
          SX7    NONTL       MINIMUM TIME BETWEEN *NETON* REQUESTS
          SA4    LTIME       CURRENT TIME 
          SA3    NOND        LAST TIME *NETON*
          MX2    -36
          IX3    X4-X3       CURRENT TIME - *NETON* TIME
          BX3    -X2*X3 
          IX3    X7-X3
          PL     X3,PNS6     IF NOT TIME FOR *NETON*
          RJ     NON         DO A *NETON* 
          EQ     PNS6        RETURN 
  
*         PROCESS NORMAL SHUTDOWN.
  
 PNS1     SA3    TROA 
          ZR     X3,PNS2     IF TAF ROLLED IN 
          RJ     TRI         ROLLIN TAF 
          SB5    B0+
 PNS2     RJ     SCB         FIND RESERVED COMMUNICATION BLOCK
          ZR     B5,PNS3     IF END OF COMMUNICATION BLOCK
          SA3    B5+CMBHL+1 
          LX3    59-CBBTS 
          SB3    B1 
          PL     X3,PNSX     IF NO BATCH INPUT
          EQ     PNS2        GET NEXT COMMUNICATION BLOCK 
  
*         SEARCH LOGGED IN TERMINALS. 
  
 PNS3     SX1    TNCTL       LENGTH OF NCT ENTRY
          TA2    X1,VNCT
          SA3    VNCT        GET NUMBER OF NCT ENTRIES
          SB4    X3+
 PNS4     SX2    X2          TST ENTRY
          SB4    B4-B1
          ZR     X2,PNS5     IF TERMINAL NOT LOGGED IN
          SB3    B1 
          SA3    X2+TSIWW    INPUT WANTED STATUS
          LX3    59-TSIWS 
          NG     X3,PNSX     IF TERIMINAL IN INPUT WANTED STATUS
 PNS5     SA2    A2+TNCTL    NEXT ENTRY 
          NZ     B4,PNS4     IF NOT END OF NCT
          RJ     NOF         DO A *NETOFF*
 PNS6     SB3    B0 
          EQ     PNSX        RETURN 
          TITLE  INPUT PROCESSOR. 
 NIT      SPACE  1,7
**        NIT - NETWORK INPUT TO TAF. 
* 
*                 1. IF LAST REQUEST FOR INPUT VIA *NETGETL* OBTAINED 
*                    DATA, GO TO STEP 3.
*                 2. IF NOT TIME FOR NEXT *NETGETL*, RETURN TO CALLER.
*                 3. IF TAF IS NOT ROLLED OUT, GO TO STEP 7.
*                    TAF ROLLS OUT WHEN NO ACTIVITY HAS OCCURED FOR AN
*                    INSTALLATION ASSEMBLY DEFINED PERIOD.
*                 4. DO A *NETGETL* TO ZERO LENGTH BUFFER.  CHECK 
*                    THE APPLICATION BLOCK HEADER FOR ANY INPUT.  TAF 
*                    CANNOT DO A *NETGETL* TO A COMMUNICATION BLOCK 
*                    BECAUSE THE COMMUNICATION BLOCKS RESIDE IN ROLLED
*                    STORAGE. 
*                    CALL ROUTINE *PPM* TO CHECK IF INPUT COMPLETE. 
*               4.1. IF A SUPERVISORY MESSAGE GO TO STEP 20.
*                 5. IF NO INPUT RETURN.
*                 6. CALL ROUTINE *TRI* TO ROLLIN TAF.
*                 7. IF USERS ON THE PRIORITY LIST THEN GET INPUT,
*                    ELSE GOTO STEP 12. 
*                 8. DECODE APPLICATION BLOCK.
*                 9. IF NO INPUT FOR PRIORITY LIST GOTO STEP 12, ELSE 
*                    CALL ROUTINE *PSI*.
*                10. IF NOT LAST MSG BLOCK RETURN, ELSE SWITCH ACN
*                    BACK TO REGULAR LIST AND CALL *PLB*. 
*                11. RETURN.
*                12. IF ENOUGH C.B-S AVAILABLE TO ACCEPT INPUT GET
*                    A C.B., ELSE RETURN. 
*                13. DO A *NETGETL* TO GET TERMINAL INPUT.
*                    CALL ROUTINE *PPM* TO CHECK IF INPUT COMPLETE. 
*                14. DECODE APPLICATION HEADER. 
*                15. IF BLOCK UNDELIVERABLE CALL ROUTINE *PBU*. 
*                    UPON RETURN GO TO STEP 13. 
*                16. IF NO INPUT CALL ROUTINE *PTF*, SEE ANY TEMPOFFED
*                    TERMINAL.  UPON RETURN GO TO STEP 13.
*                17. IF NOT THE FIRST INPUT BLOCK OF A TRANSACTION, 
*                    CALL ROUTINE *PSI*.
*                18. IF LAST MESSAGE BLOCK CALL *PLB*, ELSE 
*                    PUT COMMUNICATION BLOCK INDEX IN NCT AND CALL
*                    ROUTINE *PFB*. 
*                19. IF LAST MSG BLOCK NOT RECEIVED AFTER RETURN FROM 
*                    *PFB* THEN PLACE ACN ON PRIORITY LIST AND RETURN,
*                    ELSE RETURN. 
*                20. RELEASE COMMUNICATION BLOCK AND PROCESS
*                    SUPERVISORY MESSAGE. 
* 
*         ENTRY  (PRINA) = LAST INPUT STATUS. 
*                (TROA) = TAF ROLLOUT STATUS. 
* 
*         EXIT   (B2) AND (B7) RESTORED.
*                (X0) = 0 IF NO COMMUNICATION BLOCK AVAILABLE.
* 
*         USES   A - ALL. 
*                X - ALL. 
*                B - 3. 
* 
*         CALLS  FFCB, NGC, PBU, PFB, PLB, PPM, PRIN, PSI, PTF, TRI.
* 
*         MACROS NET. 
  
  
 NIT      SUBR               ENTRY/EXIT 
          SA2    PRINA       LAST INPUT STATUS
          ZR     X2,NIT1     IF LAST INPUT PROCESSED
          MX7    1
          BX6    X6-X6       RESET *PRIN* STATUS
          NG     X2,NIT1     IF *ITASK* BUSY
          SA6    PRINA
          LX7    55-59       SET FLAG INDICATE CALL FROM *NIT*
          SX0    X2 
          SA7    INSI 
          SA4    A7 
          RJ     PRIN        ACTIVE *ITASK* 
          EQ     NITX        RETURN 
  
 NIT1     SA1    NSUP        NETWORK STATUS WORD
          PL     X1,NITX     IF PREVIOUS REQUEST NOT COMPLETE 
          LX1    59-56
          NG     X1,NIT2     IF INPUT AVAILABLE 
  
*         FAKE NETGETL TO CHECK ANY INPUT FROM NETWORK. 
  
          NET    GETL,ACNS,INDH,INDB,ZERO 
          RJ     PPM         PROCESS PARALLEL MODE
          SA1    NSUP        NETWORK STATUS WORD
          PL     X1,NITX     IF PREVIOUS REQUEST NOT COMPLETE 
          SX0    B1 
          LX1    59-56
          PL     X1,NITX     IF NO INPUT AVAILABLE
 NIT2     SA3    TROA 
          ZR     X3,NIT3     IF TAF ROLLED IN 
          RJ     TRI         ROLLIN TAF 
  
*         NETGETL TO CHECK FOR ANY INPUT FROM PRIORITY LIST.
  
 NIT3     SA2    NITG        USERS IN PRIORITY LIST 
          ZR     X2,NIT3.1   IF NO USERS IN PRIORITY LIST 
          NET    GETL,ALNA,INDH,INDB+CMBHL+CMBRL,INDN 
          SX7    NIT3 
          SA7    TROF        INHIBIT TAF ROLLOUT
          RJ     PPM         PROCESS PARALLEL MODE
          SX7    INDB 
          SA7    NITF        SET FAKE C.B. ADDRESS
          BX6    X6-X6       FAKE CLEARING WORDS 3 AND 4 OF C.B.
          SA6    X7+2 
          SA6    A6+B1
          SA6    TROF        CLEAR ROLLOUT INHIBIT FLAG 
          RJ     NGC         DECODE BLOCK HEADER
          GT     B3,B1,NIT11 IF A SUPERVISORY MESSAGE 
          BX0    X0-X0
          NG     B3,NIT3.1   IF NO INPUT FOR PRIORITY LIST
          SX7    A4          NCT ENTRY
          SA6    ACNA 
          MX0    -TNCBN 
          LX0    TNCBS-TNCBN+1
          BX5    -X0*X4      C.B. INDEX 
          LX5    TNCBN-TNCBS-1  RIGHT JUSTIFY C.B. INDEX
          SA7    NITH 
          SB3    B1 
          SX3    CMBL 
          SX5    X5-1 
          IX3    X5*X3
          SX2    A5 
          TX6    X3,VCBSA    C.B. ADDRESS 
          SX7    A5+CMBHL+CMBRL  BEGINNING OF DATA AREA 
          SA6    NITF 
          SA7    NITJ 
          RJ     PSI         PROCESS SUBSEQUENT INPUT 
          LE     B3,NITX     IF NOT LAST MSG BLOCK
          SX7    ALN         REMOVE ACN FROM PRIORITY LIST
          RJ     SAL         SWITCH APPLICATION LIST
          SA1    NITG        UPDATE PRIORITY COUNTER
          SX7    X1-1 
          SA4    NITH 
          SA7    A1 
          SA4    X4 
          RJ     PLB         PROCESS LAST BLOCK 
          EQ     NITX        RETURN 
  
 NIT3.1   TA2    0,VCBRT
          MX7    -48
          BX7    -X7*X2 
          CX3    X7 
          SB3    -NCBC-RSCMB-1  MINIMUM NUMBER OF CB-S TO ACCEPT INPUT
          SB3    X3+B3
          GE     B3,NIT3.2   IF ENOUGH C.B.-S TO ACCEPT INPUT 
          SA2    STAT12      NUMBER OF TIMES NOT ENOUGH C.B.-S
          SX7    B1 
          IX7    X2+X7
          SA7    A2+
          EQ     NITX        NOT ENOUGH C.B.-S AVAILABLE
  
 NIT3.2   RJ     FFCB        GET A COMMUNICATION BLOCK
          ZR     X0,NITX     IF NO COMMUNICATION BLOCK AVAILABLE
          SA7    NITE        INDEX OF COMMUNICATION BLOCK 
          SX7    X0 
          SX6    X0+CMBHL+CMBRL  BUFFER HEADER
          SA7    NITF        COMMUNICATION BLOCK ADDRESS
          SA6    NIT4+5 
  
*         GET INPUT FROM NETWORK. 
  
 NIT4     NET    GETL,ALNO,INDH,0,NITB
          SX7    NIT4 
          SA7    TROF        INHIBIT *TAF* FROM ROLLOUT 
          RJ     PPM         PROCESS PARALLEL MODE
          SX6    B0+         CLEAR ROLLOUT INHIBIT FLAG 
          SA6    TROF 
          RJ     NGC         CHECK AND DECODE APPLICATION BLOCK HEADER
          GT     B3,B1,NIT11 IF A SUPERVISORY MESSAGE 
          SX7    A4          NCT ENTRY
          MX0    -TNCBN      MASK COMMUNICATION BLOCK INDEX 
          SA6    ACNA        APPLICATION CONNECTION NUMBER
          SA7    NITH 
          PL     X1,NIT5     IF BLOCK DELIVERED 
          RJ     PBU         PROCESS BLOCK UNDELIVERABLE
          EQ     NIT9        PROCESS RETURN FROM SUBPROCESSOR 
  
 NIT5     PL     B3,NIT6     IF NOT A NULL BLOCK
          SA2    NITF        C.B. ADDRESS 
          RJ     RLC         RELEASE C.B. 
          EQ     NITX        RETURN 
  
 NIT6     LX0    TNCBS-TNCBN+1
          BX5    -X0*X4      COMMUNICATION BLOCK INDEX
          ZR     X5,NIT8     IF FIRST BLOCK 
          SX3    CMBL 
          LX5    TNCBN-TNCBS-1
          SX5    X5-1 
          IX3    X5*X3
          SX2    A5 
          TX6    X3,VCBSA    COMMUNICATION BLOCK ADDRESS
          SX7    A5+CMBHL+CMBRL  BEGINNING OF DATA AREA 
          SA6    NITF 
          SA7    NITJ 
          RJ     RLC         RELEASE COMMUNICATION BLOCK
 NIT7     SB3    B1 
          RJ     PSI         PROCESS SUBSEQUENCE INPUT
          EQ     NIT9 
  
 NIT8     SA3    NITE        COMMUNICATION BLOCK INDEX
          EQ     B3,B1,NIT9  IF LAST BLOCK
          LX3    TNCBS-TNCBN+1
          BX7    X4+X3       ADD COMMUNICATION BLOCK INDEX
          SA7    A4 
          RJ     PFB         PROCESS LARGE OR MULTIPLE BLOCK INPUT
          LE     B3,NIT10    IF NOT LAST MSG BLOCK
 NIT9     LE     B3,NITX     IF NOT THE LAST MSG BLOCK
          RJ     PLB         PROCESS LAST MSG BLOCK 
          EQ     NITX 
  
 NIT10    SX7    ALN+1       ADD ACN TO PRIORITY LIST 
          RJ     SAL         SWITCH APPLICATION LIST
          SA1    NITG        UPDATE PRIORITY COUNTER
          SX7    X1+B1
          SA7    A1 
          EQ     NITX        RETURN 
  
 NIT11    SX2    A5          FWA OF COMMUNICATION BLOCK 
          SA0    A4          NCT
          SA4    A5+CMBHL+CMBRL  SUPERVISORY MESSAGE
          BX7    X6          ACN
          RJ     RLC         RELEASE COMMUNICATION BLOCK
          BX1    X7 
          SA4    A4 
          SA2    A0 
          SB6    B0          NOT QUEUED 
          BX6    X2          WORD ONE OF NCT ENTRY
          EQ     SMP4        PROCESS SUPERVISORY MESSAGE
  
 NITA     CON    0           MESSAGE LENGTH IN BITS 
 NITB     CON    CBDL        MAXIMUM DATA INPUT 
 NITE     CON    0           INDEX OF COMMUNICATION BLOCK 
 NITF     CON    0           ADDRESS OF COMMUNICATION BLOCK 
 NITG     CON    0           PRIORITY LIST COUNTER
 NITH     CON    0           NCT ENTRY
 NITI     CON    0           BLOCK COUNTER
 NITJ     CON    0           TEMPORARY COMMUNICATION BLOCK ADDRESS
          TITLE  INPUT SUBPROCESSOR.
 PBU      SPACE  4,25 
**        PBU - PROCESS BLOCK UNDELIVERABLE.
* 
*                1. IF THE NEW APPLICATION CHARACTER TYPE IS DIFFERENT
*                   FROM THE APPLICATION CHARACTER TYPE IN THE NCT, 
*                   SEND CHANGE INPUT CHARACTER TYPE SUPERVISORY
*                   MESSAGE AND RETURN. 
*                2. IF NOT FIRST INPUT BLOCK GO TO STEP 5, ELSE 
*                   RESERVE *NCBC* COMMUNICATION BLOCKS.
*                   IF COMMUNICATION BLOCKS NOT AVAILABLE, RETURN.
*                3. PREPARE SCATTER READ AND DO A *NETGETF* TO
*                   COMMUNICATION BLOCKS.  CALL *PPM* TO CHECK
*                   IF INPUT IS COMPLETE. 
*                4. IF LAST INPUT MESSAGE BLOCK SET (B3) = 1  ELSE
*                   SET (B3) = 0 AND RETURN.
*                5. PREPARE ENTRY CONDITION TO PROCESS SUBSEQUENT 
*                   LARGE INPUT AND CALL ROUTINE *PSI*. 
* 
*         ENTRY  (X1) = APPLICATION BLOCK HEADER. 
*                (A4/X4) = NCT ENTRY. 
*                (B4) = APPLICATION CHARACTER TYPE - 1. 
* 
*         EXIT   (B3) .GE. 1 IF LAST MSG BLOCK ENCOUNTERED. 
*                     .EQ. 0 IF NO COMMUNICATION BLOCK AVAILABLE. 
* 
*         USES   A - ALL. 
*                B - 3, 6.
*                X - ALL. 
* 
*         CALLS  EXIT, FNC, NGC, NPT, PPM, PSI, RLC.
* 
*         MACROS MESSAGE, NET.
  
  
 PBU      SUBR               ENTRY/EXIT 
          LX1    59-AHPTS-59+AHBUS  CHECK XPT 
          MX0    AHADN
          SB6    NCBC-1 
          PL     X1,PBU1     IF LARGE INPUT 
          BX6    X4 
          LX6    -TNCTS+TNCTN-1  RIGHT JUSTIFY ACT
          MX3    -TNCTN 
          BX2    -X3*X6      APPLICATION CHARACTER TYPE - 1 FROM NCT
          LX1    59-AHADS-59+AHPTS
          SX5    B4          NEW APPLICATION CHARACTER TYPE - 1 
          BX2    X2-X5
          ZR     X2,PBU1     IF SAME APPLICATION CHARACTER TYPE 
          BX6    X3*X6
          BX2    -X3*X5 
          BX6    X6+X2       STORE IN NCT 
          LX6    TNCTS-TNCTN+1
          SA6    A4 
          SX4    B4+1        APPLICATION CHARACTER TYPE 
          SA2    SMDC        CHANGE INPUT CHARACTER TYPE
          BX3    X0*X1       MASK ACN 
          LX3    AHACS-59 
          BX6    X3+X2       ADD ACN
          BX6    X6+X4
          SA6    OTSB 
          RJ     NPT         CHANGE CHARACTER TYPE
          SA2    NITF 
          RJ     RLC         RELEASE COMMUNICATION BLOCK
          SB3    B0+         NO COMMUNICATION BLOCK AVAILABLE 
          EQ     PBUX        RETURN 
  
*         SUBSEQUENCE LARGE INPUT.
  
 PBU1     MX0    -TNCBN      MASK COMMUNICATION BLOCK INDEX 
          LX0    TNCBS-TNCBN+1
          SA2    NITF        COMMUNICATION BLOCK ADDRESS
          BX5    -X0*X4 
          BX7    X7-X7
          NZ     X5,PBU6     IF NOT FIRST INPUT BLOCK 
          SA7    NITA        CLEAR MESSAGE LENGTH 
          SA1    X2+
          SA7    A1+3        CLEAR WORD 4 OF THE C.B. HEADER
          RJ     FNC         FIND AND CHAIN COMMUNICATION BLOCK 
          SA1    INDB        TEXT AREA ARRAY
          SA2    NITF 
          ZR     B6,PBU3     IF ALL COMMUNICATION BLOCKS AVAILABLE
          RJ     RLC         RELEASE EXCESS COMMUNICATION BLOCKS
 PBU2     SB3    B0 
          EQ     PBUX        RETURN 
  
*         PREPARE SCATTER READ. 
  
 PBU3     BX1    X1-X1
          SA7    A1-B1
          SA3    NITE        GET C.B. INDEX 
          LX3    TNCBS-TNCBN+1
          BX6    X3+X4       SAVE C.B. INDEX IN NCT WORD 1
          SA6    A4+
 PBU4     SX3    X2+CMBHL+CMBRL  SET ADDRESS
          SB6    CBDL        LENGTH OF C.B. 
          SB3    FSZE        MAXIMUM SIZE OF FRAGMENTS
 PBU4.1   LT     B3,B6,PBU4.2  IF C.B. SIZE .GT. THAN MAXIMUM FRAGMENT
          SB3    B6+         SET FRAGMENT SIZE TO C.B. SIZE 
 PBU4.2   SX7    B3          SET SIZE OF FRAGMENTS
          LX7    30 
          BX7    X7+X3       ADD ADDRESS
          SA7    A7+B1       STORE IN BUFFER
          SX1    X1+1 
          SX3    X3+B3
          SB6    B6-B3       REMAINING SPACE IN C.B.
          GT     B6,PBU4.1   IF NOT LAST FRAGMENT FOR C.B.
          SA2    X2          NEXT C.B.
          BX7    X1 
          NZ     X2,PBU4     IF NOT END OF CHAIN
          SA7    NCBN        NUMBER OF FRAGMENTS
          NET    GETF,ACNA,INDH,NCBN,INDB 
          SX7    PBU4 
          SA7    TROF        INHIBIT *TAF* FROM ROLLOUT 
          RJ     PPM         PROCESS PARALLEL MODE
          RJ     NGC         CHECK AND DECODE APPLICATION BLOCK HEADER
          BX7    X7-X7
          SA7    TROF        CLEAR ROLLOUT INHIBIT FLAG 
          EQ     B3,B1,PBUX  IF LAST BLOCK
          ZR     B3,PBU5     IF BLK TYPE INPUT
          MESSAGE SMGD       * NAM ERROR - ILLOGICAL ABT.*
          RJ     EXIT        NETWORK ERROR
  
 PBU5     SB3    B0 
          RJ     PSI         PROCESS SUBSEQUENCE INPUT
          EQ     PBUX        RETURN 
  
 PBU6     SX3    CMBL        LENGTH OF COMMUNICATION BLOCK
          LX5    TNCBN-TNCBS-1
          SX5    X5-1        CALCULATE FIRST COMMUNICATION BLOCK FWA
          IX3    X3*X5
          TX6    X3,VCBSA 
          SA6    NITF        PRIMARY COMMUNICATION BLOCK ADDRESS
          SA3    X6+3        GET MESSAGE LENGTH FROM C.B. WORD 4
          BX6    X3 
          SA6    NITA        RESTORE MESSAGE LENGTH IN BITS 
          RJ     RLC         RELEASE COMMUNICATION BLOCK
          EQ     PBU5        PROCESS SUBSEQUENT INPUT 
 PFB      SPACE  4,25 
**        PFB - PROCESS FIRST *BLK* BLOCK TYPE INPUT. 
* 
*                1. FIND AND CHAIN *NCBC* - 1 COMMUNICATION BLOCKS TO 
*                   CURRENT COMMUNICATION BLOCK.
*                2. IF COMMUNICATION BLOCKS AVAILABLE, CALL *PSI*.
*                3. RELEASE COMMUNICATION BLOCKS, INCREASE TEMPOFF
*                   COUNTER, DO A TEMPOFF ON TERMINAL AND RETURN. 
* 
*         ENTRY  (NITF) = CURRENT COMMUNICATION BLOCK ADDRESS.
* 
*         EXIT   (B3) .GE. 1 IF LAST BLOCK ENCOUNTED. 
*                     .LT. 1 OTHERWISE. 
* 
*         USES   A - 1, 2, 3, 4, 6, 7.
*                B - 6. 
*                X - 1, 2, 3, 4, 6, 7.
* 
*         CALLS  FNC, NPT, PSI, RLC.
  
  
 PFB      SUBR               ENTRY/EXIT 
          SB6    -NCBC+1
          SA1    NITF        COMMUNICATION BLOCK ADDRESS
          SA1    X1+
          RJ     FNC         FIND AND CHAIN COMMUNICATION BLOCK 
          NZ     B6,PFB1     IF COMMUNICATION BLOCK NOT AVAILABLE 
          SB3    B0+
          RJ     PSI         PROCESS SUBSEQUENCE INPUT
          EQ     PFBX        RETURN 
  
 PFB1     RJ     EXIT        TAF INTERNAL ERROR 
 PLB      SPACE  4,30 
**        PLB - PROCESS LAST MESSAGE BLOCK. 
* 
*                1. IF THE CANCEL INPUT FIELD IS SET IN ABH, OR 
*                   THE TERMINAL IS NOT LOGGED IN, THROW
*                   AWAY ALL DATA BY RELEASING ALL COMMUNICATION
*                   BLOCKS AND RETURN.
*                2. FORMAT COMMUNICATION BLOCK HEADER.
*                3. IF PARITY ERROR FIELD SET IN ABH, SET IT IN 
*                   COMMUNICATION BLOCK.
*                4. RELEASE EXCESS COMMUNICATION BLOCKS.
*                5. IF TASK IN WAITINP STATE, SCHEDULE THE TASK.
*                6. JOURNAL INPUT DATA. 
*                7. IF NO TASK IS WAITING FOR INPUT, CALL *PRIN* TO 
*                   ACTIVE ITASK. 
*                8. RESTORE B2, B7 FOR TAF AND RETURN.
* 
*         ENTRY  (A4)/(X4) = WORD ONE OF NETWORK COMMUNICATION TABLE. 
*                (INDH) = APPLICATION BLOCK HEADER. 
* 
*         USES   A - 1, 2, 3, 4, 5, 6, 7. 
*                B - 3, 4, 5, 6.
*                X - ALL. 
* 
*         CALLS  FCB, JOL, PRIN, RLC, RSP, RTK. 
  
  
 PLB      SUBR               ENTRY/EXIT 
          SA5    INDH        APPLICATION BLOCK HEADER 
          MX6    -TNCBN 
          LX6    TNCBS-TNCBN+1
          LX5    59-AHCNS    LEFT JUSTIFY CANCEL FIELD
          BX6    X4*X6
          SA2    X4+TSLIW    LOGIN WORD 
          SA6    A4          CLEAR COMMUNICATION BLOCK INDEX
          LX2    59-TSLIS 
          PL     X2,PLB0     IF TERMINAL NOT LOGGED IN
          PL     X5,PLB1     IF NOT TO CANCEL INPUT 
 PLB0     SA2    NITF 
          RJ     RLC         RELEASE COMMUNICATION BLOCKS 
          EQ     PLBX        RETURN 
  
 PLB1     SX7    B1 
          LX5    AHPRN-AHPRS-1-59+AHCNS  RIGHT JUSTIFY PARITY ERROR 
          SA3    NITA        MESSAGE LENGTH IN BITS 
          SX1    60 
          PX1    X1 
          NX1    X1 
          SX3    X3+59       MODULE 60
          MX0    -18
          BX3    -X0*X3 
          SA2    NITF        ADDRESS OF COMMUNICATION BLOCK 
          PX3    X3 
          NX3    X3 
          BX5    X7*X5       MASK PARITY ERROR FLAG 
          SB5    X5 
          SA5    X4+TSIWW    INPUT WANTED 
          FX0    X3/X1       MESSAGE IN WORDS 
          UX0,B3 X0 
          LX1    B3,X0
          BX6    X5 
          TX3    X4,-VTST 
          SX4    X1+B1
          MX1    -TSTCN 
          LX6    59-TSIWS 
          NG     X6,PLB3     IF INPUT WANTED
          IX6    X5+X7       INCREMENT TERMINAL TRANSACTION COUNT 
          BX0    -X1*X6 
          NZ     X0,PLB2     IF NOT FIELD OVERFLOW
          BX6    X1*X5       RESET TERMINAL TRANSACTION COUNT TO ZERO 
 PLB2     SX7    B0+
          SA6    A5+         UPDATE TRANSACTION COUNT 
 PLB3     SX0    X2          COMMUNICATION BLOCK
          RJ     RSP         RESTORE (B2) AND (B7)
          SB6    X0 
          SB3    -CBDL-1
          LX7    58-59
          SX6    B5          PARITY ERROR FLAG
          LX6    57-0 
          SB3    X4+B3
          SA2    X2 
          BX6    X6+X7       ADD PARITY ERROR FLAG
          BX7    X4          MESSAGE LENGTH IN WORDS
          LE     B3,PLB4     IF ONLY BLOCK
          SX1    5
          LX1    57-59
          BX6    X1+X6       MULTIPLE BLOCK FLAG
 PLB4     SA7    NITA 
          SA6    NITI        BLOCK COUNTER
          SX7    X2          NEXT COMMUNICATION BLOCK 
          SB4    X6          BLOCK COUNTER
          SA7    NITE        NEXT COMMUNICATION BLOCK 
          LE     B3,PLB5     IF LAST OR ONLY BLOCK
          SX4    CBDL+1 
 PLB5     MX6    -CBTSN      GET SEQUENCE NUMBER
          BX7    -X6*X1 
          SX6    TSTLLE      CALCULATE TERMINAL ORDINAL 
          PX3    X3 
          PX6    X6 
          NX6    X6 
          FX2    X3/X6
          UX6,B3 X2 
          LX3    B3,X6
          RJ     FCB         FORMAT COMMUNICATION BLOCK 
          SA5    X0+CMBHL+1  USER AREA WORD ONE 
          SA1    NITI 
          MX2    1
          BX6    X2*X1       MASK INTERACTIVE INPUT FLAG
          LX2    58-59
          BX0    X6+X0
          BX3    X2*X1       MASK MULTIPLE BLOCK FLAG 
          LX2    57-59-58+59
          BX4    X3+X4
          BX2    X1*X2       MASK PARITY ERROR FLAG 
          LX2    CBPRS-0+3
          BX7    X2+X5       ADD PARITY ERROR FLAG
          SA7    A5+
          ZR     X4,PLB5.1   IF NOTHING TO JOURNAL
          NG     X4,PLB5.1   IF INPUT TOO LARGE 
          RJ     JOL         JOURNAL INPUT
 PLB5.1   SA2    NITE        NEXT COMMUNICATION BLOCK 
          SA3    NITA 
          ZR     X2,PLB7     IF NO MORE COMMUNICATION BLOCK 
          SX4    X3-CBDL-1
          NG     X4,PLB6     IF LAST COMMUNICATION BLOCK
          SB3    X4-CBDL
          ZR     X4,PLB6     IF LAST COMMUNICATION BLOCK
          SB6    X2          COMMUNICATION BLOCK ADDRESS
          SX0    B1 
          SA3    NITI 
          SA5    NITH        ADDRESS OF NCT ENTRY 
          IX6    X0+X3       INCREMENT BLOCK COUNT
          SA2    X2 
          SX7    X4+B1
          SA5    X5          NCT ENTRY
          SA3    NITF        GET COMMUNICATION BLOCK ADDRESS
          SA1    X3+CBTSW 
          LX1    CBTSN-CBTSS-1  RIGHT JUSTIFY SEQUENCE NUMBER 
          TX3    X5,-VTST 
          SX0    B6 
          SA5    X5+B1
          SX4    X7 
          EQ     PLB4        CONTINUE FORMAT AND JOURNAL INPUT
  
*         ACTIVE TASK FOR INTERACTIVE INPUT.
  
 PLB6     SA5    X0          ADDRESS OF LAST COMMUNICATION BLOCK
          ERRNZ  CBNCW       ADDRESS OF NEXT C.B. NOT IN WORD ONE 
          MX6    60-CBNCN 
          BX6    X6*X5       CLEAR NEXT C.B. ADDRESS
          SA6    A5 
          RJ     RLC         RELEASE EXCESS COMMUNICATION BLOCKS
 PLB7     SA4    NITH        ADDRESS OF NCT ENTRY 
          SA2    ITIME
          BX7    X2 
          SA4    X4          NCT ENTRY
          SA7    RDCBD       CLOCK LAST INUPT 
          SA5    X4+TSIWW    INPUT WANTED 
          LX5    59-TSIWS 
          SA2    NITF        ADDRESS OF COMMUNICATION BLOCK 
          PL     X5,PLB8     IF NOT WANT INPUT
          SX0    X2          FWA OF COMMUNICATION BLOCK 
          SB3    B1          ROLL TASK IN 
          RJ     RTK         SCHEDULE TASK WAITING FOR INPUT
          EQ     PLBX        RETURN 
  
*         SCHEDULE *ITASK*. 
  
 PLB8     MX0    -59
          LX4    59-TNSLS    LEFT JUSTIFY INPUT STATUS FIELD
          PL     X4,PLB9     IF INPUT LIMIT NOT EXCEEDED
          BX6    -X0*X4      CLEAR INPUT TOO LARGE FLAG 
          SX7    CIINL
          LX6    TNSLS-59 
          SA3    X2+CMBHL+1 
          LX0    CBSYS-59 
          SA6    A4          RESET NCT ENTRY
          BX6    X0+X3       SYSTEM ORIGIN
          SA7    A3+B1       INPUT EXCEEDED LIMIT REASON CODE 
          SA6    A3+
 PLB9     MX7    1
          BX6    X6-X6
          SA6    PRINA       RESET PRINA
          LX7    55-59
          SX0    X2 
          SA7    INSI 
          SA4    A7+
          RJ     PRIN        ACTIVE *ITASK* 
          EQ     PLBX        RETURN 
 PSI      SPACE  4,25 
**        PSI - PROCESS SUBSEQUENT BLOCK TYPE INPUT.
* 
*                1. DO A *NETGET* TO GET SPECIFIED TERMINAL INPUT TO
*                   LARGE BUFFER AND CALL ROUTINE *PPM* TO
*                   CHECK IF INPUT IS COMPLETE. 
*                2. IF INPUT ALREADY EXCEEDED LIMIT, GO TO STEP 5.
*                3. IF ACCUMULATED INPUT EXCEEDED LIMIT, GO TO STEP 6.
*                4. MOVE DATA TO COMMUNICATION BLOCKS.
*                5. IF LAST MESSAGE BLOCK, RETURN WITH (B3) .GE. 1. 
*                   ELSE GO TO STEP 1.
*                6. SET INPUT TOO LARGE FLAG IN NETWORK COMMUNICATION 
*                   TABLE AND GO TO STEP 5. 
* 
*         ENTRY  (X5) = CURRENT COMMUNICATION INDEX.
*                (B3) = 0 IF INPUT IS REQUIRED. 
*                     = 1 OTHERWISE.
* 
*         EXIT   (B3) .GE. 1 IF LAST MSG BLOCK ENCOUNTERED. 
*                     .LT. 0 OTHERWISE. 
*                (TROF) = 0 IF NETWORK REQUEST OUTSTANDING. 
*                       = NON-ZERO OTHERWISE. 
*                (A4/X4) = NCT ENTRY IF (B3) .GE. 1.
* 
*         USES   A - 1, 2, 3, 4, 6, 7.
*                B - 2, 3, 4, 5, 6, 7.
*                X - ALL. 
* 
*         CALLS  MDC, NGC, PPM, RLC, RLCB.
* 
*         MACROS MESSAGE, NET.
  
  
 PSI      SUBR               ENTRY/EXIT 
          NZ     B3,PSI2     IF INPUT IS NOT REQUIRED 
 PSI1     SA1    NSUP 
          LX1    59-56
          SB3    -B1
          PL     X1,PSIX     IF NO DATA AVAILABLE 
          NET    GET,ACNA,INDH,INDB,INDM
          SX7    PSI1 
          SA7    TROF        INHIBIT *TAF* FROM ROLLOUT 
          RJ     PPM         PROCESS PARALLEL MODE
 PSI2     RJ     NGC         UPDATE MESSAGE LENGTH AND DECODE ABH 
          BX6    X6-X6
          SA6    TROF        CLEAR ROLLOUT INHIBIT FLAG 
          NG     B3,PSIX     IF NULL BLOCK
          SA1    NITH        NCT ENTRY
  
*         MOVE INPUT TO COMMUNICATION BLOCK.
  
          SX6    MAXINB      MAXIMUM INPUT IN BITS
          SB6    B0 
          SA1    X1          TST ENTRY
          SB4    60 
          IX6    X6-X7
          LX1    59-TNSLS    LEFT JUSTIFY INPUT EXCEEDED LIMIT FLAG 
          SB2    X3          OLD LENGTH IN BITS 
          SX5    X2          NEW LENGTH IN BITS 
          SB5    X3-CBDCB    SPACE LEFT IN COMMUNICATION BLOCK
          NG     X1,PSI8     IF INPUT EXCEED LIMIT
          NG     X6,PSI9     IF INPUT TOO LARGE 
          SB7    CBDL 
          BX7    X7-X7
          SA2    A5          GET NEXT C.B. ADDRESS
          SX2    X2+
          LT     B2,B4,PSI4  IF LESS THAN ONE CM WORD 
  
*         FIND END OF MESSAGE IN COMMUNICATION BLOCK. 
  
 PSI3     SB2    B2-B4       COUNT NUMBER OF BITS LEFT
          SB6    B6+B1       COUNT NUMBER OF WORDS FILLED 
          LE     B4,B2,PSI3  IF NOT END OF MESSAGE
  
*         FIND DESTINATION. 
  
 PSI4     LT     B6,B7,PSI5  IF COMMUNICATION BLOCK NOT FULL
          ZR     X2,PSI9     IF INPUT LIMIT EXCEEDED
          SB6    B6-B7
          SB5    B5-CBDCB    SPACE LEFT IN COMMUNICATION BLOCK
          SA2    X2          GET NEXT C.B. ADDRESS
          EQ     PSI4        TRY NEXT COMMUNICATION BLOCK 
  
*         MOVE DATA TO COMMUNICATION BLOCKS.
  
 PSI5     SA1    A2+CMBHL+CMBRL 
          SB7    A1+B6       DESTINATION
          SB3    B0 
          SB6    60          NUMBER OF BITS PER WORD
          SA4    NITJ 
          SB4    X5 
          SA3    INDB 
          SA1    B7 
          ZR     X4,PSI6     IF MOVE FROM BUFFER
          SA3    X4 
          SA7    A4 
 PSI6     SB4    -B4
          GE     B4,B5,PSI7  IF MORE THAN *CBDL* WORDS
          SB4    B5 
 PSI7     SX5    X5+B4       TOTAL NUMBER OF BITS LEFT
          SB4    -B4
          RJ     MDC         PACK COMMUNICATION BLOCKS
          SB4    X5+         NUMBER OF BITS LEFT TO MOVE
          LE     B4,PSI8     IF NO MORE DATA TO MOVE
          ZR     X2,PSI9     IF INPUT LIMIT EXCEEDED
          SB5    -CBDCB 
          SB7    X2+CMBHL+CMBRL  NEXT DESTINATION ADDRESS 
          BX1    X7 
          SA2    X2          NEXT COMMUNICATION BLOCK 
          EQ     PSI6        CONTINUE TO MOVE 
  
 PSI8     SA1    INDH 
          SA3    NITH        ADDRESS OF NCT ENTRY 
          AX1    AHBTS-AHBTN+1
          SB3    X1 
          EQ     B3,B1,PSI1  IF MORE INPUT
          SA4    X3+         NCT ENTRY
          GT     B3,B1,PSIX  IF LAST INPUT
          RJ     EXIT        ABORT TAF
  
*         PROCESS INPUT TOO LARGE.
  
 PSI9     MX0    1
          SA1    NITH        NCT ENTRY
          LX0    -59+TNSLS
          SA2    X1 
          BX7    X0+X2       SET INPUT TOO LARGE FLAG 
          SA3    NITF        PRIMARY COMMUNICATION BLOCK
          SA7    A2 
          SX2    X3 
          RJ     RSC         RELEASE SECONDARY C.B.-S 
          EQ     PSI8        GET NEXT INPUT 
          TITLE  INPUT PROCESSOR SUBROUTINES. 
 MDC      SPACE  4,15 
**        MDC -  MOVE DATA TO COMMUNICATIONS BLOCK. 
* 
*         ENTRY  (A1)/(X1) = DESTINATION ADDRESS. 
*                (A3)/(X3) = SOURCE ADDRESS.
*                (B2) = NUMBER OF BITS IN DESTINATION.
*                (B3) = BEGINNING BIT POSITION IN SOURCE. 
*                (B4) = TOTAL NUMBER OF BITS. 
*                (B7) = DESTINATION ADDRESS.
*                (B6) = NUMBER OF BITS PER WORD.
* 
*         USES   A - 3, 6, 7. 
*                B - 2, 3, 4, 5, 6, 7.
*                X - 0, 1, 3, 6, 7. 
  
  
*         MOVE SOURCE DATA TO DESTINATION ON WORD BOUNDARY. 
  
 MDC4     BX7    X3 
          SB4    B4-B6
          SA7    B7 
          SA3    A3+B1       NEXT WORD
          SB7    B7+1 
          GT     B4,MDC4     IF MORE DATA TO MOVE 
  
 MDC      SUBR               ENTRY/EXIT 
          LE     B4,MDCX     IF NO DATA TO MOVE 
          NZ     B2,MDC1     IF MOVE TO MIDDLE OF WORD
          ZR     B3,MDC4     IF MOVE FROM BEGINNING OF WORD 
 MDC1     SB2    B2-B1
          MX0    1
          SB4    B4+B2
          ZR     B3,MDC2     IF MOVE FROM BEGINNING OF WORD 
  
*         MOVE SOURCE DATA FROM MIDDLE OF WORD
*         TO DESTINATION ON WORD BOUNDARY.
  
          SB2    B6-B3
          SB2    B2-B1
          LX1    B3,X3
          SB3    B0+
          SA3    A3+B1       NEXT WORD
  
*         MOVE SOURCE DATA FROM WORD BOUNDARY 
*         TO MIDDLE OF DESTINATION WORD.
  
 MDC2     AX4    B2,X0
          SB2    B2+B1
          BX7    X4*X1
          SB5    B6-B2
 MDC3     LX3    B5,X3       MERGE TO LAST PORTION
          BX6    -X4*X3 
          BX7    X6+X7
          SA7    B7 
          BX7    X4*X3       REMAINDER
          SB7    B7+B1
          SB4    B4-B6
          SA3    A3+B1       NEXT WORD
          GT     B4,B2,MDC3  IF MORE DATA TO MOVE 
          LE     B4,MDCX     IF COMPLETED 
          SA7    B7          MOVE LAST WORD 
          EQ     MDCX        RETURN 
 NCK      SPACE  4,15 
**        NCK - NETWORK CHECKING. 
* 
*         ENTRY  (NSUP) = NETWORK STATUS WORD.
* 
*         EXIT   PREVIOUS NETWORK REQUEST COMPLETED.
*                (B1) = 1.
* 
*         USES   A - 1. 
*                X - 1. 
* 
*         MACRO  NET, RECALL. 
  
  
 NCK      SUBR               ENTRY/EXIT 
          SA1    NSUP 
          NG     X1,NCKX     IF NETWORK REQUEST COMPLETE
 NCK1     NET    CHEK        CHECK NETWORK STATUS 
          SA1    NSUP 
          NG     X1,NCKX     IF COMPLETED - RETURN
          RECALL
          EQ     NCK1        CHECK NETWORK STATUS 
  
 .A       IFEQ   DBUG,0 
 NDS      SPACE  4,20 
**        NDS - NETWORK DEBUG SWITCH. 
* 
*         ENTRY  (X6) = 0, TURN ON *AIP* DEBUG OPTION.
*                       1, TURN OFF *AIP* DEBUG OPTION. 
*                (DBUG) = 0, IF *NETIOD* IS LOADED. 
*                         1, IF *NETIO* IS LOADED.
* 
*         EXIT   (B1) = 1.
*                (NDSA) = ENTRY VALUE OF X6.
* 
*         USES   A - 1, 6.
*                X - 1. 
* 
*         CALLS  NCK, RSP.
* 
*         MACROS MESSAGE, NET.
* 
*         NOTE   THIS ROUTINE WILL DO NOTHING IF *NETIOD* 
*                IS NOT LOADED. 
  
  
 NDS      SUBR               ENTRY/EXIT 
          SA6    NDSA 
          RJ     NCK         CHECK NETWORK STATUS 
          NET    DBG,NDSA,NDSA,NDSB 
          RJ     NCK         CHECK NETWORK STATUS 
          SA1    NDSA 
          ZR     X1,NDS1     IF DEBUG IS ON 
          MESSAGE  SMGK      * AIP DEBUG OPTION TURNED OFF.*
          EQ     NDS2        CONTINUE 
  
 NDS1     MESSAGE  SMGJ      * AIP DEBUG OPTION TURNED ON.* 
 NDS2     RJ     RSP         RESTORE REGISTERS
          EQ     NDSX        RETURN 
  
 NDSA     BSS    1           DEBUG SWITCH - ZERO MEANS ON 
 NDSB     BSS    1           RETURN STATUS - ZERO MEANS ON
          EQ     NDSX        RETURN - *NETIOD* IS NOT LOADED
  
 .A       ENDIF 
 NGC      SPACE  4,20 
**        NGC - CHECK AND DECODE APPLICATION BLOCK HEADER.
* 
*         ENTRY  (INDH) = APPLICATION BLOCK HEADER. 
*                (NITF) = ADDRESS OF PRIMARY COMMUNICATION BLOCK. 
* 
*         EXIT   (B3) = APPLICATION BLOCK TYPE - 1. 
*                (B4) = APPLICATION CHARACTER TYPE - 1. 
*                IF NOT A NULL BLOCK THE FOLLOWING EXIT CONDITIONS
*                EXIST. 
*                (X1) = LEFT JUSTIFY IBU OF ABH.
*                (X2) = MESSAGE LENGTH IN BITS. 
*                (A4)/(X4) = NCT ENTRY. 
*                (A5) = COMMUNICATION BLOCK FIRST WORD ADDRESS. 
*                (X6) = APPLICATION CONNECTION NUMBER.
*                (NITA) = TOTAL MESSAGE LENGTH IN BITS. 
*                (X7) = TOTAL MESSAGE LENGTH IN BITS. 
* 
*         USES   A - 1, 2, 3, 4, 5, 7.
*                B - 1, 2, 3, 4, 5. 
*                X - ALL. 
* 
*         CALLS  EXIT.
* 
*         MACROS MESSAGE. 
  
  
 NGC2     SA1    INDH        APPLICATION BLOCK HEADER 
          LX1    59-AHBUS 
          SX2    NCTL        MAXIMUM ACN
          IX2    X2-X6
          IX4    X4*X6
          NG     X2,NGC1     IF ACN OUT OF RANGE
          TA4    X4,VNCT     NCT ENTRY
  
 NGC      SUBR               ENTRY/EXIT 
          SB1    1
          SA1    INDH        DATA HEADER
          MX0    -AHLCN      MASK TLC 
          BX7    -X0*X1      MESSAGE LENGTH IN UNIT 
          MX3    -AHBTN      MASK ABT 
          LX1    AHBTN-AHBTS-1  RIGHT JUSTIFY ABT 
          SB3    -B1
          BX3    -X3*X1 
          MX6    -AHADN      MASK ACN 
          LX1    AHADN-AHADS-1-AHBTN+AHBTS+1  RIGHT JUSTIFY ADR 
          BX6    -X6*X1      APPLICATION CONNECTION NUMBER
          MX4    -AHCTN      MASK ACT 
          LX1    AHCTN-AHCTS-1-AHADN+AHADS+1  RIGHT JUSTIFY ACT 
          BX5    -X4*X1      APPLICATION CHARACTER TYPE 
          SX4    TNCTL       LENGTH OF NCT ENTRY
          SB4    X5+B3       ACT-1
          SB3    X3+B3       ABT-1
          ZR     X3,NGC2     IF NULL BLOCK
          SA3    NITF        COMMUNICATION BLOCK ADDRESS
          LE     B4,NGC1     IF ACT .LE. ZERO 
          SB5    4           MAXIMUM OF ACT 
          SB5    B4-B5
          GT     B5,NGC1     IF ACT .GT. 4
          SB2    B1+B1
          GT     B3,B2,NGC1  IF ABT .GT. 3
          SX2    NCTL        MAXIMUM ACN
          IX2    X2-X6
          NG     X2,NGC1     IF ACN OUT OF RANGE
          IX4    X4*X6
          TA4    X4,VNCT     NCT ENTRY
          SA2    NGCA+B4     ACT TABLE
          IX2    X7*X2       MESSAGE LENGTH IN BITS 
          SA5    X3          COMMUNICATION BLOCK ADDRESS
          SA3    A5+2        WORD 3 OF COMMUNICATION BLOCK
          BX3    -X0*X3      MASK OLD TLC 
          IX7    X3+X7       UPDATE MESSAGE LENGTH IN UNIT
          LX1    AHCTS-AHCTN+1
          BX3    X0*X1       CLEAR OLD TLC
          BX7    X3+X7
          SA7    A3          UPDATE APPLICATION BLOCK HEADER
          SA7    A4+B2       UPDATE ABH IN NCT WORD TWO 
          LX1    59-AHBUS    LEFT JUSTIFY IBU 
          SA3    A3+B1       WORD 4 OF COMMUNICATION BLOCK
          MX0    -18
          BX3    -X0*X3 
          IX7    X2+X3       NEW MESSAGE LENGTH IN BITS 
          SA7    A3+         UPDATE MESSAGE LENGTH IN BITS
          SA7    NITA 
          EQ     NGCX        RETURN 
  
 NGC1     MESSAGE SMGG       * NAM ERROR - INCORRECT ABH.*
          RJ     EXIT        ABORT
  
*         BIT TABLE OF SPECIFIED CHARACTER TYPES. 
  
 NGCA     VFD    60/60       60 BIT WORDS 
          VFD    60/8        8-BIT ASCII CHARACTERS 
          VFD    60/12       12-BIT BYTES ASCII CHARACTERS
          VFD    60/6        6-BIT DISPLAY CODE CHARACTERS
 NOF      SPACE  4,10 
**        NOF - NETOFF COMMAND. 
* 
*         ENTRY  (VNON) = 0, IF *NAM* IS RUNNING. 
* 
*         EXIT   (VNON) = 1.
*                (B1) = 1.
* 
*         USES   A - 6. 
*                X - 6. 
* 
*         CALLS  RSP. 
* 
*         MACROS MESSAGE, NET.
  
  
 NOF      SUBR               ENTRY/EXIT 
          SA1    VNON        *NAM* STATUS 
          NZ     X1,NOFX     IF *NAM* NOT RUNNING 
          NET    OFF
          MESSAGE SMGF       * NETOFF COMPLETE.*
          RJ     RSP         RESTORE (B2) AND (B7)
          SX6    B1+
          SA6    VNON        NAM NOT AVAILABLE
          EQ     NOFX        RETURN 
 NON      SPACE  4,23 
**        NON - NETON COMMAND.
* 
*                1. ON FIRST ENTRY TO *NON* SETUP ADDRESSES TO LINK 
*                   TAF TO NAM ROUTINES.
*                2. PERFORM A NETON.
*                3. IF NAM IS AVAILABLE INITIALIZE NCT AND EXIT.
*                4. OTHERWISE, SEND MESSAGE - *NAM NOT AVAILABLE*.
* 
*         EXIT   (VNON) = NAM STATUS. 
*                         NON ZERO IF NAM IS NOT RUNNING. 
*                (B1) = 1.
* 
*         USES   A - 1, 3, 5, 6, 7. 
*                X - 1, 3, 5, 6, 7. 
* 
*         CALLS  NDS, RSP, XST. 
* 
*         MACROS MESSAGE, NET.
  
  
 NON      SUBR               ENTRY/EXIT 
          SA1    VNON        NAM STATUS 
          ZR     X1,NONX     IF NAM ALREADY RUNNING 
          RJ     XST         IF FIRST CALL
*         EQ     NON1        (NOT FIRST CALL) 
 NONA     EQU    *
 NON1     NET    ON,NONB,NSUP,VNON,ACMI,ACMA
          RJ     RSP         RESTORE (B2) AND (B7)
          SA3    LTIME
          BX7    X7-X7
          BX6    X3 
          SA1    VNON        NAM STATUS 
          SA6    NOND 
  
*         CHECK NAM STATUS. 
  
          SA5    NONC        MESSAGE SENT FLAG
          NZ     X1,NON2     IF NAM NOT AVAILABLE 
          SA7    NONC        CLEAR NAM NOT AVAILABLE FLAG 
          MESSAGE SMGI       * NETON COMPLETE.* 
          NET    SETP,ZERO
          SA1    SMHD        HALF DUPLEX MODE 
          BX7    X1 
          SA7    OTSB        SET SUPERVISORY MESSAGE
          RJ     NPT         DO A NETPUT
 .A       IFEQ   DBUG,0 
          SX6    B0 
          RJ     NDS         TURN ON DEBUG MODE 
 .A       ENDIF 
          EQ     NONX        RETURN 
  
 NON2     NZ     X5,NONX     IF MESSAGE SENT
          MESSAGE SMGH       * NAM NOT AVAILABLE.*
          SX6    1
          SA6    NONC        SET MESSAGE SENT FLAG
          EQ     NONX        RETURN 
  
 NONB     VFD    60/7HTAF 
 NONC     CON    0           1 IF NAM NOT AVAILABLE MESSAGE SENT
 NOND     CON    0           CURRENT TIME NETON 
 NPT      SPACE  4,20 
**        NPT - DO A NETPUT.
* 
*         ENTRY  (VSND) = APPLICATION BLOCK NUMBER. 
*                (OTSH) = APPLICATION BLOCK HEADER. 
*                (OTSB) = APPLICATION BLOCK.
*                (X4) = 0, IF SYNCHRONOUS SUPERVISORY MESSAGE 
*                       .NE. 0, IF ASYNCHRONOUS SUPERVISORY MESSAGE.
*                (X3) = 18/0, 18/ACN, 24/0 IF SYNCHRONOUS SUPERVISORY 
*                       MESSAGE.
* 
*         EXIT   (VSND) = (VSND) + 1. 
*                (B2) = FWA OF TASK SYSTEM AREA.
*                (B7) = FWA OF TASK SUBCONTROL TABLE. 
*                (B1) = 1.
* 
*         USES   A - 1, 4, 6. 
*                X - 0, 1, 3, 4, 6. 
* 
*         CALLS  NCK, RSP.
* 
*         MACRO  NET. 
  
  
 NPT      SUBR               ENTRY/EXIT 
          ZR     X4,NPT1     IF SYNCHRONOUS MESSAGE 
          MX0    -AHBNN 
          SA1    VSND        APPLICATION BLOCK NUMBER 
          SX6    X1+B1
          BX6    -X0*X6 
          SA4    OTSH        BLOCK HEADER 
          SA6    A1 
          LX6    AHBNS-AHBNN+1
          BX6    X6+X4
          EQ     NPT2        SEND ASYNCHRONOUS SUPERVISORY RESPONSE 
  
 NPT1     SA4    OTSG 
          LX3    18          POSITION ACN FOR SYNCHRONOUS HEADER
          BX6    X3+X4
 NPT2     SA6    OTSJ 
          RJ     NCK         CHECK NETWORK STATUS 
          NET    PUT,OTSJ,OTSB
          RJ     NCK         CHECK NETWORK STATUS 
          RJ     RSP         RESTORE (B2) AND (B7)
          EQ     NPTX        RETURN 
 RAN      TITLE  RECOVER FROM ABORT OF NETWORK. 
 RAN      SPACE  4,15 
**        RAN - RECOVER FROM ABORT OF NETWORK.
* 
*         *RAN*  PERFORMS A *NETOFF* AND SCHEDULE *ITASK*.
* 
*         USES   A - 1, 4, 6, 7.
*                B - 3. 
*                X - 1, 2, 4, 6, 7. 
* 
*         CALLS  LOVL, NOF, TRI, TRN. 
* 
*         MACRO  MESSAGE. 
  
  
 RAN      SUBR               ENTRY/EXIT 
          MESSAGE  RANA      * NETWORK SHUT DOWN DETECTED.* 
          RJ     NOF         PERFORM A *NETOFF* 
          SA4    TROA        ROLL STATUS
          ZR     X4,RAN1     IF *TAF* NOT ROLLED OUT
          RJ     TRI         ROLL *TAF* IN
 RAN1     SA1    LOVG 
          RJ     LOVL        EXECUTE RECOVERY OVERLAY 
          SA1    BFPT        ACKNOWLEDGE MESSAGE
          BX7    X1 
          SA7    VSCR 
          SX1    CINABL      MESSAGE LENGTH 
          MX2    1
          BX7    X1+X2
          SX6    CINAB       CODE FOR *ITASK* TO PROCESS
          LX2    INSOS-59 
          BX7    X2+X7       SET SYSTEM TASK FLAG 
          SA6    INSJ 
          SA7    INSI 
          SA4    ITAS 
          SB3    A7 
          RJ     TRN         SCHEDULE TASK
          EQ     RANX        RETURN 
  
  
 RANA     DATA   C* NETWORK SHUT DOWN DETECTED.*
 SAL      SPACE  4,15 
**        SAL - SWITCH APPLICATION LIST.
* 
*         ENTRY  (X7) = APPLICATION LIST NUMBER.
*                (ACNA) = APPLICATION CONNECTION NUMBER.
* 
*         EXIT   LIST SWITCHED FOR CONNECTON. 
* 
*         USES   X - 1, 4, 7. 
*                B - 1. 
*                A - 1, 7.
* 
*         CALLS  NPT, PPM.
  
  
 SAL      SUBR               ENTRY/EXIT 
          SA1    SMSW        SWITCH LIST SUPERVISORY MESSAGE
          SX4    B1 
          BX7    X1+X7       ADD LIST NUMBER
          SA1    ACNA        APPLICATION CONNECTION NUMBER
          LX1    35-11
          BX7    X7+X1
          SA7    OTSB 
          RJ     NPT         DO A NETPUT
          RJ     PPM         PROCESS PARALLEL MODE
          EQ     SALX        RETURN 
          TITLE  SMP - SUPERVISORY MESSAGE PROCESSOR. 
 SMP      SPACE  4,250
**        SMP - SUPERVISORY MESSAGE PROCESSOR.
* 
*            THE PROCESSOR IS CALLED FROM PROCESSOR *NGL* WHENEVER
*         STATUS WORD INDICATES SUPERVISORY MESSAGES ARE AVAILABLE OR 
*         WHENEVER THERE ARE QUEUED SUPERVISORY MESSAGES IN THE NCT 
*         WAITING FOR RESOURCES TO SCHEDULE A TASK.  TO KEEP THE
*         GENERAL RESOURCE SCHEDULING OF TAF CONSISTENT FOR BOTH
*         MULTIPLEXERS AND 2550-S WHENEVER TASKS ARE SCHEDULED
*         PROCESSING GOES TO THE TASK SWITCHING ROUTINE *TSSC*.  WHEN 
*         *ITASK* IS SCHEDULED TO HANDLE ERROR CONDITIONS THE COMMON
*         DECK *COMKSOT* IS USED TO INSURE CONSISTENT VALUES BETWEEN
*         DECKS *TAF* AND *ITASK*.  STEPS FOR PROCESSOR *SMP* ARE:  
* 
*          1.  IF PROCESSING QUEUED SUPERVISORY MESSAGES GO TO STEP 6.
*          2.  IF (NSUP) = 0 INDICATING NO SUPERVISORY MESSAGES,
*              RETURN.
*          3.  DO A *NETGET* ON ACN = 0.
*              CALL ROUTINE *PPM* TO CHECK IF INPUT COMPLETE. 
*          4.  IF ACN IS OUT OF RANGE NOTE ERROR ON DAYFILE AND GO TO 
*              STEP 2.  THIS WOULD BE A NETWORK ERROR.
*          5.  GO TO STEP 7.
*          6.  GET QUEUED SUPERVISORY MESSAGE FROM NCT. 
*          7.  DETERMINE CASE OF SUPERVISORY MESSAGE.  IF SUPERVISORY 
*              FUNCTION CODE OUT OF RANGE IGNORE IT; ELSE 
*              JUMP TO SUPERVISORY MESSAGE ROUTINE THAT HANDLES 
*              CASE.  UPON EXIT FROM CASE GO TO STEP 1. 
* 
*         ENTRY  (NSUP) = NON-ZERO IF NO SUPERVISORY MESSAGE. 
*                (B3) = 1 IF TO FORCE *NETGET* REQUEST. 
* 
*         EXIT   (B3) = NON-ZERO IF *ITASK* OR TASK SCHEDULED.
*                (TROF) = 0 IF NETWORK REQUEST OUTSTANDING. 
*                       = NON-ZERO OTHERWISE. 
* 
*         USES   A - 1, 2, 3, 4, 5, 6, 7. 
*                B - 3, 6.
*                X - ALL. 
* 
*         CALLS  PPM, RSP, TRI. 
* 
*         MACROS MESSAGE, NET.
  
  
 SMP      SUBR               ENTRY/EXIT 
          SA3    TROA        TAF ROLLOUT STATUS 
          ZR     X3,SMP1     IF ROLLIN
          RJ     TRI         ROLLIN TAF 
 SMP1     NET    CHEK        CHECK NETWORK STATUS 
          SA2    NSUP 
          SA1    NCTA        HEAD OF QUEUED SUPERVISORY MESSAGE 
          PL     X2,SMPX     IF PREVIOUS NETWORK NOT COMPLETE 
          LX2    59-55       LEFT JUSTIFY SUPERVISORY MESSAGE 
          SB6    B1          QUEUED SUPERVISORY MESSAGE FLAG
          NG     X2,SMP2     IF NETWORK SUPERVISORY MESSAGES
          NZ     X1,SMP3     IF QUEUED SUPERVISORY MESSAGE
          EQ     B3,B1,SMP2  IF TO FORCE *NETGET* REQUEST 
          RJ     RSP         RESTORE (B2) AND (B7)
          SB3    B0 
          EQ     SMPX        RETURN 
  
*         GET  SUPERVISORY MESSAGE. 
  
 SMP2     NET    GET,ACNS,INSH,INSB,INSM
          RJ     PPM         PROCESS PARALLEL MODE
          SA2    INSH        APPLICATION BLOCK HEADER 
          SX3    NCTL        BIGGEST NUMBER OF ACN
          SA4    INSB        SUPERVISORY MESSAGE
          MX0    -AHACN 
          BX1    X4 
          AX2    AHBTS-AHBTN+1 RIGHT JUSTIFY BLOCK TYPE 
          LX1    AHACN-AHACS-1 RIGHT JUSTIFY ACN
          SB6    B0 
          SB3    B0 
          SX6    X2-3 
          ZR     X2,SMP1     IF NO SUPERVISORY MESSAGE
          BX1    -X0*X1      ACN
          IX3    X3-X1
          NZ     X6,SMP8     IF NAM LOGICAL ERROR 
          NG     X3,SMP8     IF ACN OUT OF RANGE
          SA2    ITIME       CLOCK TIME FOR INPUT 
          BX7    X2 
          SA7    RDCBD
 SMP3     SX2    TNCTL       LENGTH OF NCT ENTRY
          MX3    1
          MX0    -TNCNN      MASK NEXT ACN IN QUEUE 
          IX7    X1*X2       ACN * BIAS 
          LX3    TNSMS-59 
          TA2    X7,VNCT
          SX5    A2          NCT ENTRY
          BX2    X3+X2       SET SUPERVISORY MESSAGE FLAG 
          LX3    TNQSS-59-TNSMS+59
          BX6    X2 
          ZR     B6,SMP4     IF NOT QUEUED SUPERVISORY MESSAGE
          LX2    TNCNN-TNCNS-1 RIGHT JUSTIFY QUEUE POINTER
          SA4    A2+B1       SUPERVISORY MESSAGE
          BX7    -X0*X2 
          LX2    TNCNS-TNCNN+1
          SA7    A1          RESET HEAD OF QUEUE
          BX6    -X3*X2 
          NZ     X7,SMP4     IF NOT END OF QUEUE
          SA7    NCTB        CLEAR END OF QUEUE 
  
*         SEARCH FOR NAM FUNCTION.
* 
*         (X1) = APPLICATION CONNECTION NUMBER. 
*         (A2)/(X2) = WORD ONE OF NCT.
*         (X4) = SUPERVISORY MESSAGE. 
*         (B6) = 1 IF QUEUED SUPERVISORY MESSAGE. 
*         (A4) = FWA OF SUPERVISORY MESSAGE.
*         (X6) = WORD ONE OF NCT. 
  
 SMP4     BX7    X4          SUPERVISORY MESSAGE
          SX5    A2 
          SA7    INSJ+1 
          LX1    18-0 
          SX7    A4 
          SA3    SMPC 
          SA6    A2          RESET NCT ENTRY
          BX2    X6          FWA OF NCT ENTRY 
          BX7    X1+X7       ACN + FWA OF SUPERVISORY MESSAGE 
          SX6    B6 
          LX7    18-0 
          LX6    59-0 
          BX7    X7+X5       ACN + FWA OF SM + NCT ENTRY
          SA5    TSMP        HEAD OF JUMP TABLE 
          BX7    X6+X7       ADD QUEUE STATUS 
          BX6    X3*X4       MASK PFC AND SFC 
          SA7    SMPB        Q + ACN + ADDRESS OF SM + NCT ENTRY
 SMP5     ZR     X5,SMP1     IF FUNCTION CODE NOT FOUND 
          BX7    X3*X5
          BX7    X6-X7
          ZR     X7,SMP6     IF FUNCTION CODE MATCHED 
          SA5    A5+1 
          EQ     SMP5        GET NEXT NAM FUNCTION
  
 SMP6     SB3    X5 
          LX1    -18
          JP     B3          PROCESS MESSAGE
  
*         PROCESS FUNCTION CODE NOT FOUND.
  
 SMP8     MESSAGE SMGB       * NAM LOGICAL ERROR.*
          RJ     EXIT        FORCE TO ABORT 
  
 SMPA     CON    1           MESSAGE LENGTH FOR LOGICAL ERROR 
 SMPB     CON    0           1/Q,5/A,18/ACN,18/SMA,18/NCTA
 SMPC     VFD    18/776374B,42/0  MASK FUNCTION CODE
 SMPD     CON    0           *SMP* CALL SWITCH WHILE NO C.B. AVAILABLE
          SPACE  4,20 
**        NAM FUNCTION TABLE. 
* 
*T        8/PF,2/0,6/SF,26/0,18/ADDR
* 
*         PF = PRIMARY FUNCTION CODE. 
*         SF = SECONDARY FUNCTION CODE. 
*         ADDR = ADDRESS OF PROCESSOR FOR FUNCTIONS.
  
 TSMP     BSS    0
          VFD    8/PFFC,2/0,6/SFAK,26/0,18/ACK    BLOCK DELIVERED 
          VFD    8/PFCN,2/0,6/SFRT,26/0,18/CRE    LOGICAL CONNECTION
          VFD    8/PFFC,2/0,6/SFCM,26/0,18/PCI    CONNECTION INITIAL
          VFD    8/PFCN,2/0,6/SFCB,26/0,18/CBK    CONNECTION BROKEN 
          VFD    8/PFFC,2/0,6/SFIN,26/0,18/INA    TERMINAL INACTIVE 
          VFD    8/PFCN,2/0,6/SFEN,26/0,18/CEN    CONNECTION END
          VFD    8/PFFC,2/0,6/SFAX,26/0,18/NAK    BLOCK NOT DELIVERED 
          VFD    8/PFCH,2/0,6/SFCH,26/0,18/CHA    TERMINAL CHARACTER
          VFD    8/PFLG,2/0,6/SFLG,26/0,18/LGL    LOGICAL ERROR 
          VFD    8/PFSH,2/0,6/SFSH,26/0,18/SHU    NETWORK SHUTDOWN
          VFD    8/PFIN,2/0,6/SFUS,26/0,18/PUB    PROCESS USER BREAK
          VFD    8/PFBI,2/0,6/SFBI,26/0,18/SMP1   BREAK INDICATION MARK 
          VFD    60/0        END OF LIST
          TITLE  SMP FUNCTION PROCESSOR.
 ATK      SPACE  4,30 
**        ATK - ACTIVE TASKS. 
* 
*              1. IF QUEUED SUPERVISORY MESSAGE, GO TO STEP 6.
*              2. CALL *SMR* TO REPLACE SUPERVISORY MESSAGE IN NCT. 
*              3. IF TASK CALL SEND WITHOUT RECALL, GO TO STEP 6. 
*              4. IF TASK DID NOT ROLLOUT, GO TO STEP 7.
*              5. ROLLIN TASK AND GO TO STEP 7. 
*              6. IF NO REASON CODE GO TO *SMP1*, ELSE
*                 ACTIVE *ITASK*, CLEAR SUPERVISORY MESSAGE.
*              7. SET (B3) = NON-ZERO AND RETURN TO *SMPX*. 
* 
*         ENTRY  (SMPB) = 1/Q,5/ ,18/ACN,18/SMA,18/NCTA.
*                Q    = 1 IF SUPERVISORY WAS QUEUED.
*                ACN  = APPLICATION CONNECTION NUMBER.
*                SMA  = ADDRESS OF INCOMING SUPERVISORY MESSAGE.
*                NCTA = ADDRESS OF NETWORK COMMUNICATION TABLE ENTRY. 
  
*                (X6) = 42/ ,6/I,6/R,6/C. 
*                I    = INCOMING SUPERVISORY MESSAGE PRIORITY.
*                R    = RESIDENT SUPERVISORY MESSAGE PRIORITY.
*                C    = *ITASK* REASON CODE.
* 
*         EXITS  TO *SMP1* IF NO REASON CODE. 
*                TO *SMPX* WITH (B3) = NON-ZERO OTHERWISE.
* 
*         USES   A - 1, 2, 3, 4, 5, 7.
*                B - 2, 3, 4. 
*                X - ALL. 
* 
*         CALLS  EVS, RSP, SMQ, SMR, SOT, TRN.
  
  
 ATK      MX7    -6 
          BX7    -X7*X6      MASK *ITASK* REASON CODE 
          RJ     RSP         RESTORE (B2) AND (B7)
          SA1    SMPB 
          SA7    INSJ 
          NG     X1,ATK1     IF QUEUED SUPERVISORY MESSAGE
          RJ     SMR         REPLACE SUPERVISORY MESSAGE IF NECESSARY 
          SA1    SMPB 
          SA2    X1          NCT ENTRY
          LX2    59-TNSRS 
          SB4    EVTO 
          PL     X2,ATK1     IF TASK CALL SEND WITHOUT RECALL 
          LX2    59-TNSES-59+TNSRS
          SB3    B1 
          PL     X2,SMPX     IF TASK DID NOT ROLLOUT
          MX3    1
          LX1    -36
          BX7    -X3*X2      CLEAR ROLLOUT FLAG 
          SX4    X1          ACN
          LX7    TNSES-59 
          SA3    A2+TNAHW    ABH
          MX0    -59         CLEAR RECALL FLAG
          LX0    TNSRS-59 
          BX7    -X0*X7 
          MX0    -AHBNN 
          SA7    A2          RESET NCT ENTRY
          LX3    AHBNN-AHBNS-1 RIGHT JUSTIFY APPLICATION BLOCK NUMBER 
          LX4    18-0 
          BX3    -X0*X3 
          BX6    X3+X4       ACN + ABN
          PX7    B4,X6       ROLLOUT EVENT TYPE + ACN + ABN 
          RJ     EVS         ROLLIN TASK
          SB3    B1 
          EQ     SMPX        RETURN 
  
*         SCHEDULE *ITASK*. 
  
 ATK1     SA3    X1 
          SA1    SMPA        MESSAGE LENGTH IN WORDS
          SX3    X3 
          SX7    2
          SA2    INSJ        *ITASK* CODE 
          SX1    X1+2 
          ZR     X2,ATK3     IF NO REASON CODE
          SA7    A1+
          RJ     SOT         SET UP SYSTEM ORIGIN TASK
 ATK2     SA4    ITAS 
          SA5    INSJ        *ITASK* CODE 
          SB3    INSI 
          RJ     TRN         ACTIVE TASK
          NZ     X0,SMPX     IF TASK SCHEDULED
          RJ     SMQ         SUPERVISORY MESSAGE QUEUE
          EQ     SMPX        RETURN 
  
 ATK3     SA1    SMPB 
          BX7    X7-X7
          SA7    X1+B1       CLEAR SUPERVISORY MESSAGE IN W2 OF NCT 
          SB3    B0+
          EQ     SMP1        GET NEXT SUPERVISORY MESSAGE 
 ACK      SPACE  4,20 
**        ACK - BLOCK ACKNOWLEDGED. (FC/ACK)
* 
*              1.  SET BLOCK DELIVERED FLAG IN NCT (TNBD).  WHEN TASK 
*                  IS SCHEDULED, PROCESSING WILL START FOR TASK IN
*                  *SND* ROUTINE IF TASK DID SEND WITH RECALL.  *SND* 
*                  ROUTINE WILL CHECK *TNBD* AND RETURN BLOCK DELIVERED 
*                  SUPERVISORY MESSAGE TO TASK IF *TNBD* FIELD WAS
*                  SET. 
*              2.  DECREMENT NUMBER OF OUTSTANDING OUTPUT BLOCKS
*                  FIELD TNBO IN NCT ENTRY FOR TERMINAL.
*              3.  PUT SUPERVISORY MESSAGE IN NCT IF THE PRIORITY OF
*                  RESIDENT SUPERVISORY MESSAGE IS LESS THAN BLOCK
*                  DELIVERED. 
*              4.  IF NCT ROLL TASK FIELD *TNSE* INDICATES TASK 
*                  ROLLED, CALL ROUTINE *EVS* TO BEGIN TASK ROLL IN.
* 
*         ENTRY  (X2) = NCT ENTRY.
*                (X1) = APPLICATION CONNECTION NUMBER.
* 
*         EXIT   TO *ATK*.
*                (X6) = MESSAGE PRIORITY AND REASON CODE. 
* 
*         USES   A - 7. 
*                X - 0, 2, 6, 7.
  
  
 ACK      MX0    1
          MX6    -TNBON      MASK OUTSTANDING OUTPUT BLOCK
          LX0    TNSRS-59 
          BX0    X0*X2       SEND WITH RECALL FLAG
          LX2    TNBON-TNBOS-1 RIGHT JUSTIFY OUTSTANDING OUTPUT BLOCKS
          BX7    -X6*X2 
          SX7    X7-1        DECREMENT OUSTANDING OUTPUTBLOCK 
          PL     X7,ACK1     IF OUTSTANDING BLOCK .GE. ZERO 
          SX7    0
 ACK1     BX2    X6*X2
          SX6    PACK 
          BX2    X2+X7       UPDATE OUTSTANDING OUTPUT BLOCK
          LX0    TNBDS-59-TNSRS+59  SET BLOCK DELIVERED FLAG
          LX2    TNBOS-TNBON+1
          BX7    X2+X0
          SA7    A2          NCT ENTRY
          EQ     ATK         SCHEDULE TASK
 BRK      SPACE  4,15 
 CBK      SPACE  4,15 
**        CBK - PROCESS CONNECTION BROKEN. (CON/CB) 
* 
*              1.  IF QUEUED SUPERVISORY MESSAGE GO TO STEP 4.
*              1.  IF QUEUED SUPERVISORY MESSAGE GO TO STEP 9.
*              2.  CLEAR TERMINAL LOGIN FIELD IN TST. 
*              3.  CLEAR CONNECTION REQUEST FIELD IN TST. 
*              4.  CLEAR ACTIVE USER FIELD IN TST.
*              5.  IF TERMINAL IS NOT LOGGED IN GO TO STEP 10.
*              6.  SET USER RECOVERY FIELD IN TST.
*              7.  IF A RECOVERABLE TRANSACTION IS RUNNING, SET THE 
*                  AUTOMATIC RECOVERY AND CONNECTION POSTPONE FIELDS. 
*              8.  ISSUE CON/END SUPERVISORY MESSAGE. 
*              9.  SET REASON CODE FOR CONNECTION BROKEN, GO TO *ATK*.
*             10.  IF CON/REQ IS NOT SET GO TO *SMP1*.
*             11.  ISSUE CON/END SUPERVISORY MESSAGE, GO TO *SMP1*. 
* 
*         ENTRY  (B6) = 1 IF QUEUED SUPERVISORY MESSAGE.
*                       0 OTHERWISE.
*                (A2)/(X2) = ADDRESS OF NCT ENTRY.
*                (X1) = APPLICATION CONNECTION NUMBER.
* 
*         EXIT   TO *ATK*.
*                (X6) = MESSAGE PRIORITY AND REASON CODE. 
* 
*         USES   A - 3, 5, 6, 7.
*                X - 0, 3, 4, 5, 6, 7.
* 
*         CALLS  NPT. 
  
  
 CBK      NZ     B6,CBK2     IF QUEUED SUPERVISORY MESSAGE
          SA3    X2          TST ENTRY
          LX3    59-TSLIS 
          BX4    X3          SAVE CASE OF TERMINAL NOT LOGGED IN
          SA5    SMCE        CONNECTION END SUPERVISORY MESSAGE 
          MX0    1
          LX1    AHACS-AHACN+1
          LX3    59-59+TSLIS-59 
          LX0    TSLIS-59 
          BX6    X5+X1       ADD ACN
          SX5    B1 
          BX7    -X0*X3      CLEAR LOGIN FIELD
          LX0    TSCRS-59-TSLIS+59
          BX7    -X0*X7      CLEAR *CON/REQ* BIT
          LX0    TSAUS-59-TSCRS+59
          BX7    -X0*X7      CLEAR ACTIVE USER FIELD
          PL     X4,CBK3     IF TERMINAL NOT LOGGED IN
          LX5    TSRBS-TSRBN+1
          BX7    X7+X5       SET USER RECOVERY FIELD
          LX5    TSARS-TSRBS
          LX3    59-TSNRS    CHECK RECOVERABLE TRANSACTION
          SA6    OTSB 
          SA7    A3+         *TST* ENTRY
          PL     X3,CBK1     IF NON-RECOVERABLE TRANSACTION 
          BX7    X7+X5       ADD AUTOMATIC RECOVERY FLAG
          SA7    A3          TST ENTRY
          LX5    TSCPS-TSARS
          SA3    A3+B1       WORD 2 OF *TST* ENTRY
          BX7    X3+X5       ADD CONNECTION POSTPONE FLAG 
          SA7    A3 
 CBK1     SX4    B1 
          RJ     NPT
 CBK2     SX6    PCBK        REASON CODE
          EQ     ATK         SCHEDULE TASK
  
 CBK3     SA7    A3          REPLACE TST ENTRY
          LX4    59-TSCRS+TSLIS-59  TEST IF CON/REQ IS SET
          SB3    B0+
          PL     X4,SMP1     IF CON/REQ NOT SET 
          SA6    OTSB        ISSUE CON/END
          RJ     NPT
          EQ     SMP1        CONTINUE PROCESSING
 CEN      SPACE  4,15 
**        CEN - PROCESS CONNECTION END. (CON/END) 
* 
*              1. IF NO COMMUNICATION BLOCK ASSIGNED TO THIS TERMINAL,
*                 GO TO STEP 3. 
*              2. CLEAR TEMPOFF FLAG, RELEASE COMMUNICATION BLOCK AND 
*                 RESET COMMUNICATION BLOCK INDEX IN *NCT*. 
*              3. IF TASK IS IN ROLLOUT TABLE IN INPUT WANTED 
*                 STATE, CLEAR INPUT WANTED STATUS AND SET TASK 
*                 FOR ROLLIN. 
*              4. REPLACE SUPERVISORY MESSAGE IN *NCT* AND GO TO
*                 *SMP1*. 
* 
*         ENTRY  (B6) = 1 IF QUEUED SUPERVISORY MESSAGE.
*                       0 OTHERWISE.
*                (A2)/(X2) = ADDRESS OF NCT ENTRY.
* 
*         EXIT   TO *SMP1*. 
*                (B7) RESTORED. 
* 
*         USES   X - ALL. 
*                A - 1, 2, 4, 5, 7. 
*                B - 3, 5, 7. 
* 
*         CALLS RCL, SMR, SRO.
  
  
 CEN      MX0    -TNCBN 
          BX7    X2          SAVE TST ADDRESS 
          SA7    CENA 
          LX2    TNCBN-TNCBS-1 RIGHT JUSTIFY COMMUNICATION BLOCK INDEX
          SX1    CMBL        LENGTH OF COMMUNICATION BLOCK
          BX7    X0*X2       CLEAR INDEX
          BX2    -X0*X2      MASK COMMUNICATION BLOCK INDEX 
          ZR     X2,CEN1     IF NO COMMUNICATION BLOCK ASSIGNED 
          SX2    X2-1 
          MX0    -1 
          LX7    TNCBS-TNCBN+1
          IX1    X1*X2
          LX0    TNTFS-TNTFN+1
          TX2    X1,VCBSA    COMMUNICATION BLOCK ADDRESS
          BX7    X0*X7       CLEAR TEMPOFF FLAG 
          SA7    A2 
          RJ     RLC         RELEASE COMMUNICATION BLOCK
 CEN1     SA2    CENA        TST ADDRESS
          SX4    B7          SAVE (B7)
          SA5    X2          TST ENTRY
          TX1    A5,-VTST 
          SX2    TSTLLE 
          IX0    X1/X2
          SB7    X4 
          MX6    12 
          SA4    A5+TSIWW    INPUT WANTED STATUS
          LX4    59-TSIWS 
          PL     X4,CEN3     IF NOT IN INPUT WANTED STATE 
          LX6    29-59
          BX5    X0          TERMINAL ORDINAL 
          SB5    B0 
          LX5    18 
 CEN2     RJ     SRO         SEARCH ROLLOUT TABLE 
          ZR     B5,CEN3     IF END OF TABLE
          SA2    B5+         ADDRESS OF ROLLOUT TABLE ENTRY 
          BX3    X6*X2
          LX2    59-RTBWI 
          PL     X2,CEN2     IF NOT A WAIT FOR INPUT ROLLOUT ENTRY
          BX3    X3-X5
          LX2    59-59-59+58
          NZ     X3,CEN2     IF NO MATCH ON TERMINAL ORDINAL
          MX7    60-RTTLN 
          LX7    RTTLS-RTTLN+1
          BX7    X7*X2       CLEAR ROLLIN TIME TO FORCE A ROLLIN
          SA7    A2 
 CEN3     SX6    370000B     FORCE DELETION OF SUPERVISORY MESSAGE
          RJ     SMR         REPLACE SUPERVISORY MESSAGE
          SB3    B0+
          EQ     SMP1        GET NEXT SUPERVISORY MESSAGE 
  
 CENA     BSS    1           TST ADDRESS
 CHA      SPACE  4,10 
**        CHA - PROCESS  TERMINAL CHARACTERISTIC. (TCH/TCHAR) 
* 
*         ENTRY  (B6) = 1 IF QUEUED SUPERVISORY MESSAGE.
*                       0 OTHERWISE.
*                (A2)/(X2) = ADDRESS OF NCT ENTRY.
* 
*         EXIT   TO *ATK*.
*                (X6) = MESSAGE PRIORITY AND REASON CODE. 
* 
*         USES   X - 6. 
  
  
 CHA      SX6    PTCH 
          EQ     ATK         SCHEDULE TASK
 CRE      SPACE  4,20 
**        CRE - PROCESS LOGICAL CONNECTION. (CON/REQ) 
* 
*              1.  SEARCH TST TO CHECK FOR LEGAL USER.  IF INCORRECT
*                  USER, SEND A REJECT CONNECTION SUPERVISORY MESSAGE 
*                  TO NAM AND GO TO *SMP1*.  LEGAL USERS ARE GIVEN IN 
*                    THE *TAF* NETWORK FILE.
*              2.  PUT SUPERVISORY MESSAGE IN NCT AND SAVE TERMINAL 
*                  DEVICE DESCRIPTION THAT WILL BE LATER PASSED TO
*                  *ITASK* UPON CONNECTION INITIALIZED SUPERVISORY
*                  MESSAGE. 
*              3.  SEND A CONNECTION ACCEPTED SUPERVISORY MESSAGE TO
*                  NAM.  GO TO *SMP1*.
* 
*         ENTRY  (B6) = 1 IF QUEUED SUPERVISORY MESSAGE.
*                       0 OTHERWISE.
*                (A2)/(X2) = ADDRESS OF NCT ENTRY.
*                (X4) = SUPERVISORY MESSAGE.
* 
*         EXIT   TO *SMP1*. 
* 
*         USES   A - 3, 4, 5, 6, 7. 
*                B - 3, 6.
*                X - ALL. 
* 
*         CALLS  NPT, STST. 
  
  
 CRE      BX2    X4          SAVE SUPERVISORY MESSAGE IN X2 
          MX0    -6 
          SA4    INSB+5      USER NAME
  
*         ZERO FILL USER NAME.
  
          SB6    6
          SX7    1R 
          LX4    -18
          SB3    18 
 CRE1     BX3    -X0*X4      MASK RIGHT MOST CHARACTER
          IX3    X3-X7
          NZ     X3,CRE2     IF NOT BLANK 
          SB3    B3+B6       INCREASE COUNTER 
          AX4    X4,B6       NEXT CHARACTER 
          EQ     CRE1        EXAMINE NEXT CHARACTER 
  
 CRE2     LX4    X4,B3       LEFT JUSTIFY USER NAME 
          RJ     STST        SEARCH TERMINAL STATUS TABLE 
          ZR     X3,CRE4     IF USER NAME NOT FOUND 
          SA5    A3-B1       TST ENTRY
          MX0    -AHBLN      OUTPUT BLOCK LIMIT 
          LX5    59-TSCRS 
          MX3    1
          NG     X5,CRE4     IF ALREADY CON/REQ 
          LX5    59-TSLIS-59+TSCRS
          NG     X5,CRE4     IF ALREADY LOGIN 
          LX5    59-TSAUS-59+TSLIS
          ERRNZ  TSAUW-TSLIW IF ACTIVE AND LOGIN NOT IN SAME WORD 
          NG     X5,CRE4     IF USER ACTIVE 
          BX5    X3+X5       SET USER ACTIVE
          SX7    A5          ADDRESS OF TST ENTRY 
          LX2    AHBLN-AHBLS-1 RIGHT JUSTIFY BLOCK LIMIT
          BX6    -X0*X2      MASK BLOCK LIMIT 
          LX1    TSCNS-TSCNN+1
          LX6    TNBLS-TNBLN+1
          BX7    X6+X7       OUTPUT BLOCK LIMIT + TST ENTRY 
          LX5    TSAUS-59 
          MX0    TSCNN
          LX0    TSCNS-59 
          SX4    4-1         APPLICATION CHARACTER TYPE - 1 
          LX4    TNCTS-TNCTN+1
          BX7    X4+X7
          SA7    A2          NCT ENTRY
          LX2    AHDTN-AHDTS-1-AHBLN+AHBLS+1  RIGHT JUSTIFY DEVICE TYPE 
          SA4    INSB+AHPWW 
          BX7    -X0*X5      CLEAR OLD CONNECTION NUMBER
          MX0    -AHHWN-AHDTN 
          BX7    X7+X1       ADD ACN INTO TST 
          LX3    TSCRS-59 
          BX7    X3+X7       ADD CON/REQ FLAG 
          SA7    A5          RESET TST ENTRY
          SA3    SMAC        CONNECTION ACCEPT SUPERVISORY MESSAGE
          BX7    -X0*X2      MASK HW + DT 
          LX1    AHACS-AHACN+1+TSCNN-TSCNS-1
          BX6    X3+X1       ADD ACN
          MX0    -AHBSN 
          SA3    INSB+AHBSW  WORD TWO OF MESSAGE
          LX3    AHBSN-AHBSS-1 RIGHT JUSTIFY BLOCK SIZE 
          BX3    -X0*X3      MASK BLOCK SIZE
          SA6    OTSB 
          LX7    16 
          LX3    25 
          MX0    -AHPWN-AHPLN  MASK PAGE WIDTH AND PAGE LENGTH
          BX4    -X0*X4 
          ERRNZ  AHPWS-AHPWN-AHPLS  FIELDS NOT ADJACENT 
          ERRNZ  AHPWW-AHPLW FIELDS NOT IN SAME WORD
          BX7    X3+X7       BLOCK SIZE + HARD WIRED + DEVICE TYPE
          BX6    X6-X6
          BX7    X7+X4       BSZ + HW + DT + PW + PL
          SA6    A2+B1       CLEAR WORD TWO OF NCT ENTRY
          SA7    A2+TNAHW    SAVE TERMINAL DESCRIPTION IN NCT 
          SX4    B1 
          RJ     NPT         SEND CONNECTION ACCEPTED 
          SB3    B0+
          EQ     SMP1        GET NEXT SUPERVISORY MESSAGE 
  
*         PROCESS CONNECT REJECT. 
  
 CRE4     MX0    AHACN
          SA2    INSB        INPUT SUPERVISORY MESSAGE
          LX0    AHACS-59 
          SA5    SMCR 
          BX2    X0*X2       ACN FROM INPUT MESSAGE 
          BX7    X2+X5       PUT ACN IN OUTPUT MESSAGE
          SA7    OTSB 
          SX4    B1+
          RJ     NPT         CONNECTION REJECT
          SB3    B0+
          EQ     SMP1        GET NEXT SUPERVISORY MESSAGE 
 INA      SPACE  4,15 
**        INA - PROCESS TERMINAL INACTIVE. (FC/INACT) 
* 
*                1.  IF COMMUNICATION BLOCK ASSIGNED TO THE TERMINAL, 
*                    RELEASE IT OTHERWISE CALL ROUTINE *SCB* TO FIND
*                    COMMUNICATION BLOCK IN USE.
*              2.  IF COMMUNICATION BLOCK TERMINAL EQUALS TERMINAL
*                  NAME OF CONNECTION PASS SEQUENCE NUMBER OF 
*                  TRANSACTION TO *ITASK*.
*              3.  SET REASON CODE TO TERMINAL INACTIVE.
*              4.  GO TO SCHEDULE TASK *ATK*. 
* 
*         ENTRY  (B6) = 1 IF QUEUED SUPERVISORY MESSAGE.
*                       0 OTHERWISE.
*                (A2)/(X2) = ADDRESS OF NCT ENTRY.
* 
*         EXIT   TO *ATK*.
*                (X6) = MESSAGE PRIORITY AND REASON CODE. 
* 
*         USES   A - 3, 6, 7. 
*                B - 5. 
*                X - 0, 3, 6, 7.
* 
*         CALLS  RLC, SCB.
  
  
 INA      BX7    X2          SAVE TST FWA 
          MX0    -TNCBN      MASK COMMUNICATION BLOCK INDEX 
          SX3    CMBL        LENGTH OF COMMUNICATION BLOCK
          LX2    TNCBN-TNCBS-1
          BX6    -X0*X2      GET COMMUNICATION BLOCK INDEX
          ZR     X6,INA1     IF NO COMMUNICATION BLOCK ASSIGNED 
          BX7    X0*X2       CLEAR COMMUNICATION BLOCK INDEX
          SX0    X6-1 
          IX3    X0*X3
          TX2    X3,VCBSA    COMMUNICATION BLOCK ADDRESS
          LX7    TNCBS-TNCBN+1
          SA7    A2          RESET FIRST WORD OF NCT ENTRY
          RJ     RLC         RELEASE COMMUNICATION BLOCKS 
          SA7    INAA        SAVE TST FWA 
          SA1    A2+2        THIRD WORD OF NCT
          MX0    -AHADN      MASK ACN 
          LX1    AHADN-AHADS-1  RIGHT JUSTIFY ACN 
          BX6    -X0*X1 
          SA6    ACNA 
          SA2    ALNO        REMOVE ACN FROM PRIORITY LIST
          BX7    X2 
          RJ     SAL         SWITCH APPLICATION LIST
          SA1    NITG        UPDATE PRIORITY COUNTER
          SX7    X1-1 
          SA7    A1 
          SA1    INAA 
          BX7    X1 
 INA1     SB5    B0 
          SX6    X7 
          RJ     SCB         SEARCH RESERVED COMMUNICATION BLOCK
          BX7    X7-X7
          SX6    B1+B1       MESSAGE LENGTH 
          SA3    B5+CMBHL    COMMUNICATION BLOCK USER HEADER
          ZR     B5,INA2     IF NO MORE COMMUNICATION BLOCK TO SEARCH 
          MX0    -24
          BX7    -X0*X3      MASK SEQUENCE NUMBER 
 INA2     SA6    SMPA 
          SA7    INSJ+1 
          SX6    PINA 
          EQ     ATK         SCHEDULE TASK
  
 INAA     BSSZ   1           TST FWA
 LGL      SPACE 4,30
**        LGL - PROCESS LOGICAL ERROR. (ERR/LGL)
* 
*             LOGICAL ERRORS HAVE THE FOLLOWING CODES:  
*              1 = INCORRECT ACT VALUE
*              2 = INCORRECT TLC VALUE
*              3 = INCORRECT ABT VALUE
*              4 = INVALID ACN VALUE
*              5 = ABL EXCEEDED 
*              6 = LAST ERR/LGL MESSAGE 
*              7 = INCORRECT OR ILLOGICAL SUPERVISORY MESSAGE 
* 
*              1.  IF QUEUED SUPERVISORY MESSAGE, GO TO 
*                  SCHEDULE TASK *ATK*. 
*              2.  IF ABH IS PRESENT, SET ACN EQUAL TO ACN IN ABH;
*                  ELSE SET ACN TO ZERO.
*              3.  FOR NAM REASON CODES 1, 2, 3, OR 7 GO TO 
*                  SCHEDULE TASK *ATK*.  TAF OR APPLICATION TASK (MOST
*                  LIKELY APPLICATION) CAUSED THESE ERRORS. 
*              4.  FOR NAM REASON CODES 4, 5, OR 6 NOTE A SYSTEM
*                  ERROR ON DAYFILE AND ABORT TAF.  TAF CODE CAUSED 
*                  THESE ERRORS.
* 
*         ENTRY  (B6) = 1 IF QUEUED SUPERVISORY MESSAGE.
*                       0 OTHERWISE.
*                (A2)/(X2) = ADDRESS OF NCT ENTRY.
*                (X4) = SUPERVISORY MESSAGE.
* 
*         EXIT   TO *ATK* IF TASK ERROR.
*                TO *EXIT* IF TAF ERROR.
*                (X6) = MESSAGE PRIORITY AND REASON CODE. 
* 
*         USES   X - ALL. 
*                A - 1, 2, 3, 6, 7. 
*                B - 2, 3, 4, 5.
* 
*         CALLS  ATK, COD, EXIT, SNM. 
* 
*         MACROS MESSAGE. 
  
  
 LGL      SB4    B0 
          NZ     B6,LGL2     IF QUEUED SUPERVISORY MESSAGE
          MX0    -AHRCN 
          SB5    -3 
          SA3    INSB+1      CAUSE ERROR ABH
          LX4    AHRCN-AHRCS-1 RIGHT JUSTIFY REASON CODE
          BX5    -X0*X4      MASK REASON CODE 
          LX3    AHADN-AHADS-1 RIGHT JUSTIFY ACN
          MX0    -AHADN 
          LX4    AHACN
          BX1    -X0*X3      MASK ACN 
          SA3    INSH        SUPERVISORY MESSAGE HEADER 
          BX6    X4+X1       ADD ACN
          SB4    X5+B5       REASON CODE - 3
          LX6    AHACS-AHACN+1
          BX7    -X0*X3      MASK TLC 
          SA6    A4+
          SA7    SMPA        SAVE MESSAGE LENGTH IN WORD
          SX2    TNCTL
          GT     B4,LGL3     IF SYSTEM ERROR
  
*         ALL OTHER LOGICAL ERRORS ARE CAUSED BY TASK WITH INCORRECT
*         APPLICATION BLOCK HEADER. 
  
          IX5    X2*X1       ACN BIAS 
          SX7    A4          SUPERVISORY ADDRESS
          LX1    18-0 
          BX7    X7+X1       ACN + FWA  OF SUPERVISORY MESSAGE
          TX5    X5,VNCT     NCT ENTRY
          LX7    18-0 
          SX3    B1 
          SA2    X5 
          MX0    -TNBON 
          LX2    TNBON-TNBOS-1 RIGHT JUSTIFY OUTSTANDING OUTPUT BLOCK 
          BX6    -X0*X2      MASK OUTPUT BLOCK
          IX6    X6-X3
          PL     X6,LGL1     IF NO UNDER FLOW 
          BX6    X6-X6
 LGL1     BX2    X0*X2
          BX7    X7+X5       ACN + FWA OF SM + NCT ENTRY
          LX3    TNSMS-TNSMN+1
          BX6    X2+X6
          LX6    TNBOS-TNBON+1
          SA7    SMPB 
          BX6    X3+X6       SET SUPERVISORY MESSAGE FLAG 
          SA6    A2+
 LGL2     SX6    PLGR        LOGICAL ERROR REASON CODE
          LT     B4,B1,ATK   IF TASK LOGICAL ERROR
  
*         ISSUE ERROR MESSAGES TO DAYFILE AND PROCESS SHUTDOWN. 
  
 LGL3     BX1    X5          REASON CODE
          RJ     COD         CONVERT OCTAL TO DISPLAY 
          LX6    -2*6 
          BX1    X6 
          SB2    1RX         REPLACEMENT CHARACTER
          SB5    -SMGB       FWA OF TEMPLATE
          SB3    DAYB        ALTERNATE ASSEMBLY AREA
          RJ     SNM         SET NAME IN MESSAGE
          MESSAGE  DAYB      * ERR/LGL RECEIVED FROM NAM - RC=XX* 
          MX0    -AHADN 
          SA1    INSB+1      RETURNED ABH CAUSING ERROR 
          LX1    AHADN-AHADS-1
          BX1    -X0*X1      ACN
          RJ     COD         CONVERT OCTAL TO DISPLAY 
          LX6    -4*6 
          BX1    X6 
          SB2    1R+         REPLACEMENT CHARACTER
          SB5    -LGLB       FWA OF TEMPLATE
          SB3    DAYB        ALTERNATE ASSEMBLY AREA
          RJ     SNM         SET NAME IN MESSAGE
          MESSAGE  DAYB      * ERROR ASSOCIATED WITH ACN = ++++.* 
          RJ     EXIT        FORCE TAF TO ABORT 
  
  
 LGLB     DATA   C* ERROR ASSOCIATED WITH ACN = ++++.*
 NAK      SPACE  4,20 
**        NAK - PROCESS BLOCK NOT DELIVERED. (FC/NAK) 
* 
*              1.  IF QUEUED SUPERVISORY MESSAGE GO TO STEP 5.
*              2.  DECREMENT NUMBER OF OUTSTANDING OUTPUT BLOCKS FOR
*                  CONNECTION.
*              3.  SET RECOVERY FIELD IN TST ENTRY FOR TERMINAL.
*              4.  IF NCT ROLL FIELD INDICATES TASK WAS ROLLED OUT
*                  CALL ROUTINE *EVS* TO ROLL IN TASK.
*              5.  SET *ITASK* REASON CODE TO BLOCK NOT DELIVERED.
*                  AND GO TO SCHEDULE TASK *ATK*. 
* 
*         ENTRY  (B6) = 1 IF QUEUED SUPERVISORY MESSAGE.
*                       0 OTHERWISE.
*                (A2)/(X2) = ADDRESS OF NCT ENTRY.
* 
*         EXIT   TO *ATK*.
* 
*         USES   A - 3, 6, 7. 
*                X - 0, 2, 3, 6, 7. 
  
  
 NAK      NZ     B6,NAK2     IF QUEUED SUPERVISORY MESSAGE
          MX0    -TNBON      MASK OUTSTANDING OUTPUT BLOCK
          LX2    TNBON-TNBOS-1 RIGHT JUSTIFY OUSTANDING BLOCK 
          SX6    B1 
          BX3    -X0*X2 
          IX3    X3-X6       DECREMENT OUTSTANDING OUTPUT BLOCK 
          BX2    X0*X2
          LX6    TSRBS-0
          PL     X3,NAK1     IF OUTSTANDING BLOCK .GE. ZERO 
          BX3    X3-X3
 NAK1     BX7    X2+X3
          LX7    TNBOS-TNBON+1 POSITION BACK
          SA3    X7          TST ENTRY FOR CONNECTION 
          SA7    A2          RESTORE NCT ENTRY
          BX6    X3+X6       SET RECOVERY FLAG IN TST 
          SA6    A3+
 NAK2     SX6    PNAK 
          EQ     ATK         SCHEDULE TASK
 PCI      SPACE 4,25
**        PCI - PROCESS CONNECTION INITIALIZED. (FC/INIT) 
* 
*              1.  IF QUEUED SUPERVISORY MESSAGE GO TO STEP 6.
*              2.  SET TERMINAL LOGIN FIELD IN TST. 
*              3.  SEND A NORMAL RESPONSE TO CONNECTION INITIALIZED 
*                  TO NAM.
*              4.  IF TYPE-AHEAD DISABLED, SEND A DISABLE TYPE-AHEAD
*                  SUPERVISORY MESSAGE AND ISSUE A *NETPUT*.
*              5.  IF RECOVER FLAG SET IN TST, SCHEDULE *RTASK* 
*                  AND CLEAR THE FLAG.
*              6.  SET UP *ITASK* MESSAGE WITH LOGIN REASON CODE AND
*                  DEVICE DESCRIPTION.
*              7.  CALL ROUTINE *PRIN* TO SCHEDULE *ITASK*. 
*              8.  IF *ITASK* WAS SCHEDULED GO TO TASK SWITCHING
*                  ROUTINE, ELSE GO TO QUEUE SUPERVISORY
*                  MESSAGE *SMQ*.  *ITASK* MAY NOT HAVE BEEN SCHDULED.
*                  BECAUSE NO COMMUNICATION BLOCKS WERE AVAILABLE OR
*                  *ITASK* QUEUE FOR COMMUNICATION BLOCKS WAS FULL. 
* 
*         ENTRY  (B6) = 1 IF QUEUED SUPERVISORY MESSAGE.
*                       0 OTHERWISE.
*                (A2)/(X2) = ADDRESS OF NCT ENTRY.
*                (X1) = APPLICATION CONNECTION NUMBER.
* 
*         EXIT   TO *TSSC8* IF *ITASK* SCHEDULED. 
*                TO *SMPX* OTHERWISE. 
* 
*         USES   A - 1, 2, 3, 4, 5, 6, 7. 
*                X - ALL. 
* 
*         CALLS  NPT, PRIN, RSP, SMQ, SMR, SOT. 
  
  
 PCI      NZ     B6,PCI1     IF QUEUED SUPERVISORY MESSAGE
          SA3    SMCM        CONNECTION INITIALIZED SUPERVISORY MESSAGE 
          LX1    AHACS-AHACN+1
          BX7    X3+X1       ADD ACN TO CONNECTION INITIALIZED
.A        IFEQ   TYPEAH,1    IF TYPE-AHEAD DISABLED 
          BX6    X1          SAVE ACN 
          SA6    SRMB 
          SX6    A2+         SAVE NCT ENTRY 
          SA6    NITH 
.A        ENDIF 
          MX0    1
          SA5    X2          TST ENTRY FOR CONNECTION 
          LX0    TSLIS-59 
          BX6    X0+X5
          SA7    OTSB        PREPARE *NETPUT* 
          LX0    TSCRS-59-TSLIS+59
          BX6    -X0*X6      CLEAR CON/REQ FLAG 
          SA6    A5+         SET TERMINAL LOG IN FIELD IN TST 
          SX4    1
          RJ     NPT         SEND CONNECTION INITIALIZED
.B        IFEQ   TYPEAH,1    IF TYPE-AHEAD DISABLED 
          SA1    SMTY        GET TYPE-AHEAD DISABLE SUPERVISORY MESSAGE 
          SA3    SRMB        GET ACN
          BX7    X1 
          SX4    B0          SEND SYNCHRONOUS SUPERVISORY MESSAGE 
          SA7    OTSB        PREPARE *NETPUT* 
          RJ     NPT         DO A *NETPUT*
          SA1    NITH        GET NCT ENTRY
          SX6    B1          SET OUTSTANDING BLOCK TO 1 
          SA2    X1          FWA OF NCT 
          LX6    TNBOS-TNBON+1
          BX6    X2+X6       ADD OUTSTANDING BLOCK
          SA6    A2+
.B        ENDIF 
 PCI1     SA2    SMPB 
          SA2    X2+         NCT ENTRY
          SA3    X2+B1       WORD 2 OF *TST* ENTRY
          LX3    59-TSCPS    CHECK CONNECTION POSTPONT FLAG 
          NG     X3,PCI2     IF TO POSTPONE CONNECTION
          SX1    CILOGL+1    MESSAGE LENGTH 
          SX7    CILOG       FUNCTION CODE TERMINAL LOG IN
          SX3    X2+         TST ENTRY
          SA7    INSJ        *ITASK* REASON CODE
          RJ     SOT         SET UP SYSTEM ORIGIN TASK
          SA3    X3          TST ENTRY
          LX3    59-TSARS 
          RJ     RSP         RESTORE (B2) AND (B7)
          SA5    A5 
          SA1    A2+TNAHW    GET TERMINAL DESCRIPTION 
          BX7    X1 
          SA7    A7+B1       SET UP BUFFER AREA 
          NG     X3,PCI3     IF TERMINAL IN RECOVERY MODE 
          SA4    A6          BUFFER HEAD
          RJ     PRIN        SCHEDULE *ITASK* 
          SA1    INSI 
          ZR     X1,TSSC8    IF *ITASK* SCHEDULED 
 PCI2     SX6    PINI 
          RJ     SMR         REPLACE SUPERVISORY MESSAGE
          RJ     SMQ         QUEUE SUPERVISORY MESSAGE
          EQ     SMPX        RETURN 
  
 PCI3     TA2    0,VCBRT     COMMUNICATION BLOCK ALLOCATION MAP 
          MX7    -48
          BX7    -X7*X2 
          CX3    X7 
          TB3    0,-VNSIN    NUMBER OF C.B.-S FOR SMALL INPUT 
          SB3    X3+B3
          SB3    B3-NCBC-1   NUMBER OF C.B.-S NEEDED FOR *RTASK*
          NG     B3,PCI2     IF NOT ENOUGH C.B.-S 
          SA4    VREC        GET RECOVERY FLAG
          MX6    59 
          LX6    24-0 
          BX6    X6*X4       MASK OFF USER RECOVERY BIT 
          SA6    A7          STORE IN WORD TWO OF MESSAGE AREA
          SX6    TYIT        INTERACTIVE TERMINAL 
          SA6    A7-1        STORE IN WORD ONE OF MESSAGE AREA
          SA4    RTAS        *RTASK*
          SB3    INSI        FWA OF BUFFER
          RJ     TRN         SCHEDULE *RTASK* 
          ZR     X0,PCI2     IF *RTASK* NOT SCHEDULE
          SA2    SMPB 
          SA2    X2 
          MX0    60-TSARN 
          SA4    X2          TST ENTRY
          LX0    TSARS-TSARN+1
          BX6    X0*X4       CLEAR RECOVERY FLAG
          SA6    A4 
          EQ     TSSC8       ACTIVE *RTASK* 
 PTE      SPACE  4,10 
 PUB      SPACE  4,15 
**        PUB - PROCESS USER BREAK. 
* 
*                1. IF TERMINAL NOT LOGGED IN, EXIT TO *SMP1*.
*                2. GET SUPERVISORY MESSAGE.
*                3. IF USER BREAK 1 OR 2, 
*                   THEN  SET USER RECOVERY FLAG IN TST AND RO
*                         FLAG IN NCT 
*                   ELSE  SEND AN ASYNCHRONOUS INTERRUPT RESPONSE 
*                         SUPERVISORY MESSAGE IF THE SUPERVISORY
*                         MESSAGE IS NOT QUEUED.
*                4. SCHEDULE *ITASK*. 
* 
*         ENTRY  (X1) = APPLICATION CONNECTION NUMBER.
*                (B6) = 1 IF QUEUED SUPERVISORY MESSAGE.
*                     = 0 OTHERWISE.
* 
*         EXIT   TO *ATK*.
* 
*         USES   X - 0, 1, 2, 3, 4, 6, 7. 
*                A - 2, 3, 4, 6, 7. 
* 
*         CALLS  NPT. 
  
  
 PUB      SA2    SMPB        GET SUPERVISORY MESSAGE
          SA4    X2          NCT ENTRY
          SA3    X4          TST ENTRY
          LX3    59-TSLIS 
          PL     X3,SMP1     IF TERMINAL NOT LOGGED IN
          LX2    -18
          SA3    X2 
          LX3    AHRCN-1-AHRCS  GET REASON CODE 
          MX6    -AHRCN 
          BX7    -X6*X3 
          SX6    X7-USB1
          ZR     X6,PUB1     IF USER BREAK 1
          SX6    X7-USB2
          ZR     X6,PUB1     IF USER BREAK 2
          NZ     B6,PUB0     IF QUEUED MESSAGE
          SA7    INSJ+1 
          SA3    SMRB        RESPONSE SUPERVISORY MESSAGE 
          LX1    AHACS-AHACN+1
          BX7    X1+X3       ADD ACN
          SA7    OTSB 
          SX4    B1+
          RJ     NPT         SEND RESPONSE
 PUB0     SX6    2           MESSAGE LENGTH 
          SA6    SMPA 
          SX6    PTES 
          EQ     ATK         SCHEDULE ITASK 
  
 PUB1     MX0    TSRBN
          SA1    X4          ADDRESS OF TST ENTRY 
          LX0    TSRBS-59 
          BX7    X1+X0       SET USER RECOVERY FLAG 
          SA7    A1 
          LX0    TNBKS-59-TSRBS+59
          BX7    X0+X4       SET RO FLAG
          SA7    A4          REPLACE WORD ONE OF NCT
          SX6    PBRK 
          EQ     ATK         SCHEDULE ITASK 
 SHU      SPACE  4,15 
**        SHU - PROCESS NETWORK SHUTDOWN. (SHUT/INSD) 
* 
*              1.  IF NORMAL SHUT DOWN GO TO STEP 7.
*              2.  IF A QUEUED SUPERVISORY MESSAGE GO TO STEP 5.
*              3.  DO A NETOFF. 
*              4.  CALL *LOVL* TO LOAD ROUTINE *CIN* TO CLEAR 
*                  TERMINAL LOGIN FIELD IN TST. 
*              5.  SET FORCED SHUTDOWN REASON CODE FOR *ITASK*. 
*              6.  GO TO SCHEDULE TASK *ATK*.  THE ACN EQUALS 
*                  ZERO FOR THIS MESSAGE.  NO TERMINALS WILL BE ON
*                  ACN = 0. 
*              7.  SET SHUTDOWN FLAG.  ROUTINE *NGL* WILL EXAMINE THIS
*                  FLAG TO DETERMINE WHEN ALL TERMINAL ACTIVITY HAS 
*                  FINISHED.
*              8.  SET NORMAL SHUTDOWN REASON CODE FOR *ITASK*. 
*              9.  GO TO SCHEDULE TASK *ATK*. 
* 
*         ENTRY  (B6) = 1 IF QUEUED SUPERVISORY MESSAGE.
*                       0 OTHERWISE.
*                (X4) = NETWORK SHUTDOWN SUPERVISORY MESSAGE. 
* 
*         EXIT   (X6) = MESSAGE PRIORITY AND REASON CODE. 
*                TO *ATK*.
* 
*         USES   A - 1, 6, 7. 
*                X - 1, 4, 6, 7.
* 
*         CALLS  LOVL, NOF. 
  
  
 SHU      LX4    59-AHSIS 
          PL     X4,SHU2     IF NORMAL SHUTDOWN 
          NZ     B6,SHU1     IF QUEUED SUPERVISORY MESSAGE
          RJ     NOF         DO A *NETOFF*
          SA1    LOVG        COMMUNICATION SUBSYSTEM INITIALIZATION 
          RJ     LOVL        LOAD AND EXECUTE RECOVERY OVERLAY
 SHU1     SX6    PTSD        FORCE SHUTDOWN 
          EQ     ATK         SCHEDULE *ITASK* 
  
*         NORMAL SHUTDOWN.
  
 SHU2     SX6    PNSD        NORMAL SHUTDOWN
          EQ     ATK         SCHEDULE *ITASK* 
 STP      SPACE  4,20 
          TITLE  SMP SUBROUTINES. 
 SMQ      SPACE  4,10 
**        SMQ - SUPERVISORY MESSAGE QUEUED. 
* 
*                1. SET FLAG TO INDICATE THIS IS THE LAST SUPERVISORY 
*                   MESSAGE IN QUEUE. 
*                2. LET TAIL OF QUEUE (NCTB) POINT TO CURRENT 
*                   NCT ENTRY.
*                3. IF EMPTY QUEUE LET HEAD OF QUEUE (NCTA) = CURRENT 
*                   ACN.  ELSE LET LAST END OF QUEUE POINT TO CURRENT 
*                   NCT ENTRY.
* 
*         ENTRY  (SMPB) = 1/Q,5/ ,18/ACN,18/SMA,18/NCT. 
* 
*         USES   A - 1, 2, 3, 6, 7. 
*                X - 0, 1, 2, 3, 6, 7.
  
  
 SMQ      SUBR               ENTRY/EXIT 
          SA1    SMPB 
          SA2    X1          NCT ENTRY
          MX0    1
          MX3    -TNCNN 
          LX0    TNQSS-59 
          BX2    X0+X2       SET QUEUE FLAG 
          LX3    TNCNS-TNCNN+1
          BX7    X3*X2       SET QUEUE LINK FIELD .EQ. ZERO 
          LX1    -36
          SA3    NCTB 
          SX6    X1          CURRENT APPLICATION CONNECTION NUMBER
          SA7    A2          NEW NCT ENTRY
          SA6    A3+         PUT ACN AT BOTTOM OF QUEUE 
          ZR     X3,SMQ1     IF INITIAL QUEUE 
          SX2    TNCTL
          IX2    X2*X3
          LX6    TNCNS-TNCNN+1
          TA2    X2,VNCT     LAST NCT ENTRY IN QUEUE
          BX6    X6+X2       ADD NEW LINK 
          SA6    A2 
          EQ     SMQX        RETURN 
  
*         INITIAL SET UP OF QUEUE.
  
 SMQ1     SA6    NCTA        HEAD OF QUEUE
          EQ     SMQX        RETURN 
 SMR      SPACE  4,30 
**        SMR - SUPERVISORY MESSAGE REPLACE.
* 
*                1. IF NCT ENTRY IS NOT QUEUED, GO TO STEP 7. 
*                2. COMPARE PRIORITIES IF INCOMING SUPERVISORY MESSAGE
*                   PRIORITY IS NO GREATER THAN THE RESIDENT SUPERVISORY
*                   PRIORITY, RETURN. 
*                3. IF CURRENT ACN IS HEAD OF QUEUE, RESET HEAD 
*                   OF QUEUE AND GO TO STEP 5.
*                4. FIND PREDECESSOR OF CURRENT ACN AND RESET LINKAGE.
*                5. CLEAR LINK FIELD AND QUEUE FLAG IN CURRENT ENTRY. 
*                6. IF CURRENT ACN IS TAIL OF QUEUE, RESET TAIL OF
*                   QUEUE.
*                7. REPLACE SUPERVISORY MESSAGE AND RETURN. 
* 
*         ENTRY  (SMPB) = 1/Q,5/ ,18/ACN,18/SMA,18/NCT. 
*                (X6) = 42/0,6/I,6/R,6/C. 
*                I = INCOMING SUPERVISORY MESSAGE PRIORITY. 
*                R = RESIDENT SUPERVISORY MESSAGE PRIORITY. 
*                C = *ITASK* REASON CODE. 
*                (NCTA) = HEAD OF QUEUE.
*                (NCTB) = TAIL OF QUEUE.
* 
*                A - 1, 3, 4, 5, 6, 7.
*                B - 3, 4, 6. 
*                X - 0, 1, 3, 4, 5, 6, 7. 
* 
*         CALLS  EXIT.
  
  
 SMR      SUBR               ENTRY/EXIT 
          MX7    -6 
          LX6    -6 
          SA1    SMPB 
          BX5    -X7*X6      RESIDENT PRIORITY
          LX6    -6 
          SA3    X1          NCT ENTRY
          SA4    X1+B1
          LX3    59-TNQSS    LEFT JUSTIFY QUEUE FIELD 
          AX1    18 
          MX0    -5          MASK PRIORITY
          SB6    X5          RESIDENT PRIORITY
          SX6    X6 
          SB4    X1 
          PL     X3,SMR3     IF NO QUEUED SUPERVISORY MESSAGE 
          BX5    -X0*X4 
          IX7    X6-X5       COMPARE PRIORITY 
          NG     X7,SMRX     IF LOWER PRIORITY
          ZR     X7,SMRX     IF EQUAL PRIORITY
          SX6    TNCTL       LENGTH OF NCT ENTRY
          SA5    NCTA        HEAD OF QUEUE
          AX1    18 
          SX4    X1          CURRENT ACN
          MX0    -TNCNN      MASK ACN 
          LX3    TNCNN-TNCNS-1-59+TNQSS  RIGHT JUSTIFY QUEUE ACN
          ZR     X5,SMRX     IF EMPTY QUEUE 
  
*         PROCESS DELETE ENTRY FROM QUEUE.
  
          IX7    X4-X5
          NZ     X7,SMR1     IF NOT HEAD OF QUEUE 
          BX6    -X0*X3      MASK NEXT ACN
  
*         RESET HEAD OF QUEUE.
  
          SB3    X6 
          SA6    A5          HEAD OF QUEUE
          EQ     SMR2        RESET NCT ENTRY
  
*         RESET LINKAGE IN QUEUE. 
  
 SMR1     IX7    X5*X6
          SB3    X5          SAVE PREDECESSOR 
          TA1    X7,VNCT     NCT ENTRY
          LX1    TNCNN-TNCNS-1 RIGHT JUSTIFY NEXT ACN IN QUEUE
          BX5    -X0*X1      MASK ACN IN QUEUE
          ZR     X5,SMR3     IF END OF QUEUE
          IX7    X4-X5
          NZ     X7,SMR1     IF NOT PREDECESSOR 
          BX7    X0*X1       CLEAR LINK FIELD 
          BX6    -X0*X3      MASK NEXT ACN
          BX7    X7+X6
          LX7    TNCNS-TNCNN+1
          SA7    A1          RESET THE LINK IN PREDECESSOR
 SMR2     LX3    TNQSN-TNQSS-1-TNCNN+TNCNS+1  RIGHT JUSTIFY QUEUE FIELD 
          MX0    59          CLEAR QUEUE FLAG 
          BX6    X0*X3
          LX6    TNQSS-TNQSN+1
          SA6    A3          NCT ENTRY
  
*         RESET TAIL OF QUEUE.
  
          SA5    NCTB        TAIL OF QUEUE
          IX7    X4-X5
          NZ     X7,SMR3     IF NOT TAIL OF QUEUE 
          SX7    B3          PREDECESSOR
          SA7    A5 
  
*         REPLACE SUPERVISORY MESSAGE.
  
 SMR3     SA5    B4          NEW SUPERVISORY MESSAGE
          SX1    B6 
          BX7    X5+X1       ADD RESIDENT PRIORITY
          SA7    A3+B1       PUT NEW SUPERVISORY MESSAGE IN NCT W2
          EQ     SMRX        RETURN 
  
          TITLE  SND - TERMINAL OUTPUT PROCESSOR. 
 SND      SPACE  4,20 
**        SND - SEND TERMINAL OUTPUT. 
* 
*                 1. IF TERMINAL LOGGED IN, GO TO STEP 3. 
*                    IF PREVIOUS NETWORK REQUEST NOT COMPLETE, PUT TASK 
*                    IN RECALL AND GO TO STEP 24. 
*                 2. IF SEND WITH RECALL RETURN TERMINAL NOT LOGGED IN
*                    STATUS TO TASK AND GO TO TASK SWITCH ROUTINE 
*                    *TSSC* ELSE ABORT THE TASK.
*                 3. IF TERMINAL HAS SEND WITH RECALL ACTIVE *TNSR*,
*                    GO TO STEP 24. 
*                 4. IF OUTSTANDING OUTPUT BLOCK IS ZERO, GO TO 8.
*                 5. IF TASK CALL SEND WITH RECALL, GO TO STEP 24.
*                 6. IF THERE IS NO BLOCK LIMIT, GO TO STEP 9.
*                 7. IF OUTPUT DOES NOT EXCEED BLOCK LIMIT, GO TO 9 
*                    ELSE GO TO STEP 26.
*                 8. SET RECALL BIT (TNSR) IN NCT IF NEEDED.
*                 9. FORMAT APPLICATION BLOCK HEADER, IF TASK DOES NOT
*                    SUPPLY ABH USE DEFAULT VALUES FOR ABH.  PUT ABH IN 
*                    NCT. 
*                10. UPDATE OUTSTANDING OUTPUT BLOCK COUNTER (TNBO) IN
*                    NCT. 
*                11. DO A NETPUT AND CALL ROUTINE *PPM* TO CHECK IF 
*                    INPUT COMPLETE.
*                12. IF SEND WITH CEASE, EXIT TO CEASE ROUTINE *SCT2*.
*                13. IF SEND WITH NO RECALL, EXIT TO *TSSC*.
*                14. COMPUTE TIME THAT BLOCK MUST BE DELIVERED BY USING 
*                    CURRENT TIME PLUS INSTALLATION ASSEMBLY WAIT TIME
*                    AND PUT TIME IN TASK SYSTEM AREA.
*                15. SET TASK RETURN TO STEP 22 UPON RESCHEDULING.
*                16. IF MESSAGE IS LESS THAN INSTALLATION DEFINED 
*                    LIMIT, GO TO STEP 25.
*                17. IF TASK HAS DATA MANAGER ACTIVITY OR ROLLOUT TABLE 
*                    IS UNAVAILABLE, GO TO STEP 25. 
*                18. SET ROLLOUT BIT *TNSE* IN NCT. 
*                19. USE ACN AND ABN TO IDENTIFY THE EVENT AND EXIT 
*                    TO ROLLOUT ROUTINE.
*                20. IF THERE IS A SUPERVISORY MESSAGE IN NCT, COPY THE 
*                    SUPERVISORY MESSAGE TO THE TASK STATUS ADDRESS,
*                    CLEAR THE RECALL FIELD IN THE NCT, CLEAR THE 
*                    SUPERVISORY MESSAGE FROM THE NCT, AND EXIT TO THE
*                    TASK SWITCHING ROUTINE.
*                21. IF THE TIME FOR THE BLOCK DELIVERED SUPERVISORY
*                    MESSAGE HAS PASSED, RETURN A BLOCK NOT DELIVERED 
*                    SUPERVISORY MESSAGE TO THE TASK STATUS ADDRESS,
*                    CLEAR THE RECALL FIELD IN THE NCT, ZERO NUMBER OF
*                    OUTSTANDING OUTPUT BLOCKS IN THE NCT AND EXIT TO 
*                    THE TASK SWITCHING ROUTINE.
*                22. TASK MUST CONTINUE TO WAIT, SET TASK RETURN
*                    ADDRESS, AND GO TO STEP 25.
*                23. PREPARE ENTRY REGISTERS FOR *SND*, GO TO STEP 1. 
*                24. LET RETURN ADDRESS BE STEP 23 UPON TASK
*                    RESCHEDULED. 
*                25. PUT TASK IN RECALL AND EXIT TO EXECUTIVE RECALL. 
*                26. IF SUBCP DROPPED BY OPERATOR, EXIT TO CEASE
*                    ROUTINE *SCT1* ELSE GO TO STEP 5.
* 
*         ENTRY  (B3) = WORD COUNT OF MESSAGE.
*                (B5) = TASK RA.
*                (B6) = -FWA OF MESSAGE +1. 
*                (A4) = FWA OF TST ENTRY FOR TERMINAL.
*                (X4) = FIRST WORD OF TERMINAL STATUS TABLE ENTRY FOR 
*                       TERMINAL WITH FIELD *TSLI* AT BIT 59. 
*                (A2) = FWA OF REQUEST. 
*                (X2) = FIRST WORD OF REQUEST LEFT SHIFT 30 BITS. 
*                (PPMA) = NETWORK REQUEST STATUS. 
*                (VNON) = NETWORK COMMUNICATION STATUS. 
*                (NSUP) = NETWORK STATUS WORD.
*                (SCRC+1) = RETURN ADDRESS IF LAST MESSAGE BLOCK. 
* 
*         EXIT   TO *TSSC* IF SEND COMPLETE.
*                TO *ROL2.1* IF TASK IS TO BE ROLLED. 
*                TO *TRCL2* IF TASK PUT IN RECALL.
*                TO *SCT2* IF SEND WITH CEASE.
*                TO *SCT1.4* IF NULL MESSAGE BEFORE CEASE.
*                TO *SCT39.2* IF NULL MESSAGE BEFORE WAITINP. 
*                TO *SRM* IF USER BREAK.
*                TO *TERR27* IF TERMINAL LOGGED OUT.
*                TO *SCT1* IF SUBCP DROPPED.
*                (B1) = 1.
* 
*         USES   X - ALL. 
*                B - 3, 4, 5, 6.
*                A - 1, 2, 3, 4, 5, 6, 7. 
* 
*         CALLS  FFR, NPT, PNT, PTR, RSP. 
* 
*         MACROS NET. 
  
  
 SND      SA3    VNON        *NAM* STATUS 
          SA1    NSUP 
          NZ     X3,SND16    IF *NAM* NOT RUNNING 
          SA3    PPMA 
          PL     X1,SND14    IF NETWORK REQUEST NOT COMPLETE
          NZ     X3,SND14    IF NETGET OUTSTANDING
          MX0    -TSCNN      MASK ACN 
          LX2    59-55+30    LEFT JUSTIFY RECALL STATUS 
          PL     X4,SND16    IF TERMINAL NOT LOGGED IN
 SND1     LX4    TSCNN-TSCNS-1-59+TSLIS  RIGHT JUSTIFY ACN
          SX1    TNCTL
          BX3    -X0*X4      ACN
          IX1    X1*X3
          TA1    X1,VNCT     NCT ENTRY
          LX3    AHADS-AHADN+1
          LX1    59-TNSRS    PREVIOUS RECALL STATUS 
          MX0    -TNBON      MASK FOR OUTSTANDING OUTPUT BLOCK
          NG     X1,SND14    IF LAST RECALL NOT COMPLETE
          LX1    59-TNBKS-59+TNSRS
          PL     X1,SND1.1   IF NO USER BREAK 
          EQ     SRM         SEND RESUME OUTPUT MARKER
  
 SND1.1   LX1    TNBON-TNBOS-1-59+TNBKS 
          BX4    -X0*X1      MASK OUSTANDING OUTPUT BLOCK 
          ZR     X4,SND3     IF NO OUTSTANDING OUTPUT BLOCK 
          BX6    X0*X1       CLEAR OUTSTANDING OUTPUT BLOCK 
          LX1    TNBLN-TNBLS-1-TNBON+TNBOS+1  RIGHT JUSTIFY BLOCK LIMIT 
          NG     X2,SND14    IF TASK CALL SEND WITH RECALL
          BX5    -X0*X1      OUTPUT BLOCK LIMIT 
          SX4    X4+B1
          ZR     X5,SND2     IF NO BLOCK LIMIT
          IX5    X5-X4       BLOCK LIMIT - OUTPUT BLOCKS
          SX0    1
          NG     X5,SND13    IF BLOCK LIMIT EXCEEDED
 SND2     BX6    X4+X6
          LX6    TNBOS-TNBON+1
          EQ     SND4        SET UP APPLICATION HEADER
  
 SND3     SX4    B1 
          BX6    X4+X1       SET NEW OUTSTANDING BLOCK EQUALS 1 
          LX6    TNBOS-TNBON+1
          LX4    TNSMS-TNSMN+1
          PL     X2,SND4     IF SEND WITHOUT RECALL 
          BX6    -X4*X6      CLEAR SUPERVISORY MESSAGE FLAG 
  
*         SET UP APPLICATION BLOCK HEADER.
  
 SND4     SX7    B1 
          BX7    X2*X7       MASK RETURN ABN FLAG 
          SA6    A1          FIRST WORD OF NCT ENTRY
          LX2    59-54-59+55
          SA5    A2+2        USER DEFINED ABH 
          NG     X2,SND6     IF USER SUPPLIED ABH 
          LX2    59-58-59+54
          SX1    B3          WORD COUNT OF MESSAGE
          SA5    DABH        DEFAULT ABH
          NG     X2,SND5     IF NOT ONLY BLOCK
          SA5    DABI        ABH WITH ABT .EQ. 1
 SND5     SX4    10 
          LX2    59-54-59+58
          MX0    -AHLCN      MASK TLC FIELD 
          SX7    B1 
          IX6    X1*X4       MESSAGE LENGTH IN CHARACTERS 
          BX4    -X0*X6 
          BX5    X4+X5       ADD TLC
 SND6     MX0    -AHBNN      UPDATE ABN 
          SA4    VSND        BLOCK NUMBER 
          IX6    X4+X7
          BX6    -X0*X6 
          SX4    X6 
          PL     X4,SND6.1   IF NOT ABN OVERFLOW
          BX6    X6-X6       RESET APPLICATION BLOCK NUMBER 
 SND6.1   SA6    A4 
          ZR     X7,SND7     IF BLOCK NUMBER NOT PROVIDED 
          LX0    AHBNS-AHBNN+1
          LX6    AHBNS-AHBNN+1
          BX5    X0*X5       CLEAR ABN FIELD
          BX5    X5+X6       ADD ABN
 SND7     LX2    59-56-59+54 LEFT JUSTIFY BLOCK NUMBER FLAG 
          PL     X2,SND8     IF BLOCK NUMBER NOT TO BE RETURNED 
          SA4    A2+B1
          MX0    -AHBNN 
          LX6    AHBNN-AHBNS-1
          BX4    X0*X4       CLEAR BLOCK FIELD
          BX7    X4+X6       RETURN BLOCK NUMBER
          SA7    A4+
  
*         PREPARE NETWORK COMMUNICATION.
  
 SND8     SX4    B5-B6       FWA OF MESSAGE 
          MX0    -AHADN 
          LX0    AHADS-AHADN+1
          SX6    X4+B1
          BX7    X0*X5       CLEAR OLD CONNECTION NUMBER
          BX7    X3+X7       ADD CONNECTION NUMBER INTO ABH 
          SX5    A2+         FWA OF REQUEST 
          SA7    A1+TNAHW    PUT IO FLAG WORD ON NCT WORD TWO 
          LX3    AHACS-AHACN+1-AHADS+AHADN-1
          SA4    A1          NCT ENTRY
          SA6    SND9+4      MESSAGE ADDRESS FOR NETPUT 
          LX5    18 
          SX6    A1          ADDRESS OF NCT ENTRY 
          MX0    -18
          BX6    X5+X6       FWA OF REQUEST + NCT ENTRY 
          SB6    X4          TST ADDRESS
          SA2    A2          FWA OF REQUEST 
          SA7    INDI        PREPARE ABH FOR NETPUT 
          SA6    SNDA 
          BX2    X0*X2       CLEAR NUM FIELD
          SX6    B3          MESSAGE LENGTH IN WORDS
          MX0    6
          BX6    X2+X6       ADD MESSAGE LENGTH 
          LX2    59-53
          BX5    X0*X7       GET ABT
          LX5    6
          SB4    X5-2 
          NG     X2,SND8.1   IF FINAL SEND FOR THE TRANSACTION
          SX0    B1+
          NZ     B4,SND8.1   IF NOT LAST MESSAGE BLOCK
          ERRNZ  TSMSW-1     MESSAGE BLOCK SENT FLAG NOT IN WORD 1
          ERRNZ  TSMSN-1     MESSAGE BLOCK SENT FLAG LENGTH .NE. 1
          SA5    B6+B1       TST WORD TWO 
          LX0    TSMSS-TSMSN+1
          BX7    X0+X5       PUT MESSAGE BLOCK SEND FLAG
          SA7    A5          UPDATE TST WORD TWO
 SND8.1   SA6    B2+SCRC     SAVE FIRST WORD OF REQUEST 
 SND9     NET    PUT,INDI,0 
          SA1    SREG 
          SA2    NSUP        NETWORK STATUS 
          SB7    X1 
          AX1    18 
          SB2    X1 
          NG     X2,SND9.1   IF NETPUT COMPLETED
          RJ     PTR         PUT TASK IN RECALL 
  
*         PROCESS RETURN FROM NAM.
  
 SND9.1   MX0    -24
          BX7    X7-X7
          SA4    LTIME       CURRENT TIME 
          SX5    WTIM        WAIT FOR BLOCK DELIVERED 
          LX4    -36
          BX4    -X0*X4 
          IX4    X4+X5       TIME BEFORE ACTIVE 
          SX6    B2+NUAPL    TASK RA
          SB4    B0          DO NOT ABORT ON CEASE
          SA2    B2+SCRC
          SA3    INDI        ABH
          SB5    X6          TASK RA
          LX2    59-53
          PL     X2,SND9.2   IF NOT FINAL SEND BEFORE CEASE OR WAITINP
          SA5    A2+B1       RETURN ADDRESS 
          SB3    X5 
          JP     B3          RETURN 
  
 SND9.2   LX2    59-58-59+53
          SA7    X6+B1       CLEAR TASK RA+1
          SX5    B2+CB1C
          NG     X2,SCT1     IF SEND WITH CEASE 
          SA1    SNDA        FWA OF NCT ENTRY 
          MX0    AHACN       MASK FOR ACN 
          SA5    X1          NCT ENTRY
          AX1    18 
          IX6    X1-X6       FWA OF REQUEST RELATIVE TO TASK RA 
          LX6    -18
          LX2    59-55-59+58 TASK RECALL FIELD
          BX6    X6+X4
          LX3    59-AHADS 
          BX1    X0*X3       MASK ACN 
          PL     X2,TSSC     IF SEND WITHOUT RECALL 
          MX3    1
          LX3    TNSRS-59 
          SA4    B7+B1       SUBCONTROL POINT TABLE WORD TWO
          LX2    55-59       RIGHT JUSTIFY NUM
          BX7    X3+X5       SET RECALL FLAG
          LX1    -18
          SA7    A5 
          LX4    59-57       POSITION CM RESIDENT BIT 
          SX5    MLIM        MESSAGE MARGIN 
          BX6    X1+X6       FWA OF REQUEST + ACN + TIME
          SX3    X2          MESSAGE LENGTH 
          SX7    SND10       RETURN ADDRESS 
          SA6    B2+RCLA     RECALL STATUS WORD TWO 
          NG     X4,TRCL2    IF CM RESIDENT TASK
          SA4    B2+CB1C
          IX3    X5-X3
          SX5    X4 
          PL     X3,TRCL2    IF MESSAGE LESS THAN LIMIT 
          NZ     X5,TRCL2    IF OUTSTANDING DATA MANAGER REQUEST
          SB4    EVTO        TERMINAL OUTPUT THRESHOLD ROLLOUT
          RJ     FFR         RESERVE ROLLOUT TABLE
          ZR     X0,TRCL2    IF ROLLOUT TABLE FULL
  
*         SET FLAG IN NCT INDICATE TASK IS ROLLED OUT.
  
          SA4    B2+RCLA
          BX6    X4 
          MX3    1
          SA7    B2+SCRC
          SA6    A7+B1
          LX3    TNSES-59    ROLLOUT FLAG 
          SA2    A5          NCT ENTRY
          BX6    X2+X3
          SA6    A2+         UPDATE NCT ENTRY 
          SA4    ITIME
          SX3    13B         TIMED ROLLOUT AND RESTART FLAGS
          MX7    -RTTLN      MASK SECONDS 
          AX4    36 
          BX4    -X7*X4      CURRENT TIME IN SECONDS
          LX3    54 
          SX2    WTIM        ROLLOUT FOR *WTIM* SECONDS 
          IX4    X2+X4
          SA2    INDI        APPLICATION BLOCK HEADER 
          LX4    30 
          BX4    X3+X4
          SA3    B2+CB2C     GET COMMUNICATION BLOCK ADDRESS
          TX7    X3,-VCBSA   CALCULATE C.B. INDEX 
          LX7    18 
          LX1    -12
          MX3    -18
          LX2    AHBNN-AHBNS-1 RIGHT JUSTIFY APPLICATION BLOCK NUMBER 
          BX3    -X3*X2 
          BX6    X3+X1       ROLLOUT EVENT   ACN + ABN
          BX1    X4+X7       13B + TIME + C.B. INDEX
          PX6    B4,X6       ROLLOUT EVENT  ACN + ABN 
          EQ     ROL3        ROLLOUT TASK 
  
*         PROCESS RETURN FROM RECALL AFTER SEND.
  
 SND10    SA1    B2+RCLA
          SA5    LTIME       CURRENT TIME 
          MX0    -24
          LX5    -36
          BX6    -X0*X1 
          AX1    30 
          BX5    -X0*X5 
          MX0    -12
          SB5    B2+NUAPL 
          SX7    TNCTL
          BX2    -X0*X1      MASK ACN 
          MX0    1
          IX7    X2*X7
          AX1    12 
          IX5    X6-X5
          SX1    B5+X1       FWA OF REQUEST 
          TA4    X7,VNCT     NCT ENTRY
          SA3    A4+B1
          LX4    59-TNBDS    LEFT JUSTIFY BLOCK DELIVERED FLAG
          BX7    X3          SUPERVISORY MESSAGE
          LX2    AHACS-AHACN+1
          NG     X4,SND11    IF BLOCK DELIVERED 
          BX6    X4 
          LX4    59-TNSMS-59+TNBDS
          NG     X4,SND12    IF SUPERVISORY MESSAGE 
          PL     X5,TRCL     IF STILL TIME TO WAIT
          SA5    SMAX        BLOCK NO DELIVERED 
          BX7    X5+X2       ADD ACN
          EQ     SND12       RETURN BLOCK NO DELIVERED
  
 SND11    SA5    SMAK        BLOCK DELIVERED
          BX7    X5+X2       ADD ACN
          BX6    -X0*X4      CLEAR BLOCK DELIVER FLAG 
 SND12    LX6    TNBDS-59 
          SA7    X1+3 
          LX0    TNSRS-59 
          BX6    -X0*X6      CLEAR RECALL FLAG
          SA6    A4          RESET NCT ENTRY
          EQ     TSSC        EXIT TO MAIN LOOP
  
*         UPDATE NUMBER OF TIMES BLOCK LIMIT EXCEEDED.
  
 SND13    SA3    STAT9
          IX6    X3+X0       INCREMENT BY ONE 
          SA6    A3 
          SA3    B7+SCDRW    SUB-CP WORD 2
          LX3    59-SCDRS 
          SB4    B1          CEASE WITHOUT ANY ACTION 
          NG     X3,SCT1     IF DROPPED BY OPERATOR - CEASE 
  
*         SAVE SEND PARAMETERS FOR RECALL.
  
 SND14    SX3    B3          WORD COUNT OF MESSAGE
          SX1    A2-B2       FWA OF REQUEST FROM TASK SYSTEM AREA 
          SX6    A4          TST ENTRY
          LX3    18 
          SX7    SND15       RETURN ADDRESS 
          BX6    X3+X6
          LX1    18 
          BX7    X1+X7
          SA6    B2+RCLA
          EQ     TRCL2       PUT TASK IN RECALL 
  
*         SET UP SEND AFTER RECALL. 
  
 SND15    LX1    -18
          SA3    B2+RCLA
          SX1    X1          FWA OF REQUEST 
          SB5    B2+NUAPL    TASK RA
          SA4    X3          TST ENTRY
          SA2    B2+X1       FWA OF REQUEST WITH RESPECT TO TAF 
          LX3    -18
          LX2    -30
          SB6    X2          FWA OF MESSAGE 
          LX4    59-TSLIS 
          SB3    X3          WORD COUNT 
          SB6    B1-B6
          EQ     SND         TRY AGAIN
  
*         PROCESS NAM DOWN OR USER NOT LOGGED IN. 
  
 SND16    PL     X2,SND17    IF SEND WITH NO RECALL 
          SA5    SMCE        CONNECTION END SUPERVISORY MESSAGE 
          LX3    AHACS-AHACN+1
          BX7    X3+X5       ADD ACN
          SA7    A2+3        RETURN CONNECTION END
          EQ     TSSC        MAIN LOOP
  
*         SCHEDULE *CTASK* FOR RECOVERABLE TRANSACTION. 
  
 SND17    SA4    A4+1        GET TERMINAL NAME
          SA1    B2+CB2C     GET C.B. ADDRESS 
          SA2    X1+CBRTW 
          MX0    42 
          LX2    59-CBRTS 
          SA1    X1+CMBHL+1  GET TERMINAL NAME
          PL     X2,TERR27   IF NOT A RECOVERABLE TRANSACTION 
          BX3    X1-X4
          BX2    X0*X3
          NZ     X2,TERR27   IF NOT SEND TO THE ORIGINAL TERMINAL 
          RJ     PNT         PROCESS NETWORK OR TERMINAL FAILURE
          EQ     TERR27      ABORT TASK 
  
 SNDA     BSS    1           24/0,18/FWA OF REQUEST,18/NCT ENTRY
 SNDB     CON    0           NETPUT FLAG - ADDRESS OF SUBCP + RCL 
 SRM      SPACE  4,25 
**        SRM - SEND RESUME OUTPUT MARKER.
* 
*         ENTRY  IF CALLED BY *CTD* - 
*                (B4) = PARAMETER BLOCK ADDRESS.
*                (A1) = TST ENTRY OF TERMINAL.
*                (X1) = .GE. 0. 
*                (X2) = APPLICATION CONNECTION NUMBER.
*                (A3) = NCT ENTRY.
* 
*                IF CALLED BY *SND* - 
*                (B3) = WORD COUNT OF MESSAGE.
*                (A1) = NCT ENTRY.
*                (X1) = .LT. 0. 
*                (A2) = FWA OF REQUEST. 
*                (X3) = APPLICATION CONNECTION NUMBER IN BITS 47-36.
*                (A4) = FWA OF TST OF TERMINAL. 
* 
*         EXIT   TO *TRCL2*.
* 
*         USES   X - ALL. 
*                A - 1, 2, 3, 6, 7. 
*                B - 3. 
* 
*         CALLS  NPT, RSP.
  
  
 SRM      NG     X1,SRM1     IF FROM *SND*
          SX1    A1 
          BX3    X2 
          LX3    AHADS-AHADN+1
          SB3    B2+NUAPL 
          SX2    B4-B3
          LX1    18 
          BX6    X1+X2
          SA2    A3+         NCT ENTRY
          SX7    CTD4 
          EQ     SRM2        SEND RESUME OUTPUT MARKER
  
 SRM1     SX1    B3          WORD COUNT OF MESSAGE
          SX2    A2-B2       FWA OF REQUEST FROM TASK SYSTEM AREA 
          SX6    A4+         TST ENTRY
          LX1    18 
          SX7    SND15       RETURN ADDRESS 
          BX6    X1+X6
          LX2    18 
          BX7    X2+X7
          SA2    A1+         NCT ENTRY
 SRM2     SA7    SRMC 
          SA6    B2+RCLA
          MX0    -TNBON      MASK OUTPUT BLOCK
          LX2    TNBON-TNBOS-1
          BX4    -X0*X2      OUTSTANDING OUTPUT BLOCKS
          BX6    X0*X2
          LX2    TNBLN-TNBLS-1-TNBON+TNBOS+1
          BX5    -X0*X2      BLOCK LIMIT
          SX4    X4+B1
          IX5    X5-X4       BLOCK LIMIT - OUTSTANDING OUTPUT BLOCKS
          NG     X5,SRM3     IF BLOCK LIMIT EXCEEDED
          BX6    X4+X6
          LX6    59-TNBKS-TNBON+TNBOS+1 
          MX0    -59         CLEAR USER BREAK FIELD 
          BX6    -X0*X6 
          LX6    59-59-59+TNBKS 
          SA6    A2          REPLACE WORD ONE OF NCT
          LX3    AHACS-AHACN+1-AHADS+AHADN-1
          BX7    X3 
          SA7    SRMB        SAVE ACN 
          SA1    SMRB 
          BX7    X1+X3
          SX4    B1          ASYNCHRONOUS SUPERVISORY MESSAGE 
          SA7    OTSB 
          RJ     NPT         SEND INTR/RSP
          BX4    X4-X4       SYNCHRONOUS SUPERVISORY MESSAGE
          SA2    SMRO 
          BX7    X2 
          SA7    OTSB        APPLICATION BLOCK HEADER 
          SA3    SRMB        GET ACN
          RJ     NPT         DO A NETPUT
          SA1    SRMC 
          BX7    X1          RECALL RETURN ADDRESS
 SRM3     EQ     TRCL2       PUT TASK IN RECALL 
  
  
 SRMC     CON    0
 SRMB     CON    0           ACN
 PNT      SPACE  4,15 
**        PNT - PROCESS NETWORK OR TERMINAL FAILURE.
* 
*         ENTRY  (B2) = FWA OF TASK SYSTEM AREA.
*                (SCTC) = *CTASK* BIAS. 
* 
*         EXIT   TO *SCT1* IF RECOVERY INSTALLED. 
* 
*         USES   X - 1, 2, 3, 4, 6. 
*                A - 1, 2, 3, 4, 6. 
*                B - 4, 5.
* 
*         CALLS  REM. 
  
  
 PNT      SUBR               ENTRY/EXIT 
 .A       IFEQ   IPTAR,1     IF AUTOMATIC RECOVERY INSTALLED
          SA2    B2+SECR     CHECK FOR *SECURE* REQUEST 
          ZR     X2,PNT1     IF NOT A *SECURE* REQUEST
          BX7    X7-X7
          SA7    A2          CLEAR *SECURE* REQUEST WORD
          SA1    B2+SECH     APPLICATION BLOCK HEADER 
          SB5    B2+NUAPL    TASK RA
          RJ     REM         RESTORE END OF MESSAGE 
 PNT1     SA3    SCTC        *CTASK* BIAS 
          SA2    B2+CB2C     GET C.B. ADDRESS 
          SB4    B0+         NORMAL CEASE PARAMETER 
          BX6    X3 
          LX6    -12
          SA6    X2+CBTLW    CALL *CTASK* 
          SA3    X2+CMBHL+1  WORD TWO OF C.B. USER HEADER 
          MX6    1           ADD SYSTEM ORIGIN FLAG 
          LX6    17-59
          SX5    B2+CB1C     C.B. WORD ONE
          BX6    X3+X6
          SA6    A3          RESTORE WORD TWO OF C.B. USER HEADER 
          SA3    X2+CBSOW    WORD SIX OF C.B. SYSTEM HEADER 
          MX6    1           ADD SYSTEM ORIGIN FLAG 
          LX6    CBSOS-59 
          BX3    X6+X3
          LX6    CBTRS-59-CBSOS+59  CLEAR RESTARTED FLAG
          BX6    -X6*X3 
          SA6    A3          RESTORE WORD SIX OF C.B. SYSTEM HEADER 
          MX6    CBRCN       ADD RECOVERY FOR *CDCS* FLAG 
          SA3    X5 
          LX6    CBRCS-59    SET RECOVERY FOR *CDCS*
          BX6    X6+X3
          SA6    A3+         RESTORE WORD ONE OF C.B. SYSTEM HEADER 
 PNT2     SX6    TYTF        TERMINAL FAILURE 
          SA6    B2+NUAPL+SUAC+CMBRL  WORD ONE OF TASK MESSAGE AREA 
          SA3    VREC        GET RECOVERY FLAG
          MX6    59 
          LX6    24 
          BX6    X6*X3
          SA6    A6+B1       WORD TWO OF MESSAGE AREA 
          EQ     SCT1        PROCESS CALLTSK WITH CEASE 
 .A       ELSE
          EQ     PNTX        RETURN 
 .A       ENDIF 
  
          TITLE  FACILITY ROUTINES. 
 PTR      SPACE  4,15 
**        PTR - PUT TASK IN RECALL. 
* 
*         ROUTINE *PTR* IS CALLED AFTER A TASK SENDS A DATA MESSAGE 
*         DOWN LINE AND THE *AIP* CAN NOT COMPLETE THE PROCESS. 
*         THE TASK IS PUT IN RECALL AND STORAGE MOVEMENT
*         OF THE TASK IS PROHIBITED UNTIL THE *AIP* 
*         COMPLETES ITS PROCESS.
* 
*         ENTRY  TO *PTR2*, IF TASK ACTIVATED FROM RECALL.
* 
*         EXIT   TO *TRCL2* IF NETWORK REQUEST IS NOT COMPLETE. 
* 
*         USES   A - 1, 2, 6, 7.
*                X - 0, 1, 2, 6, 7. 
  
  
 PTR      SUBR               ENTRY/EXIT 
          SA1    SNDB        CHECK PRIOR TASK RECALL STATUS 
          ZR     X1,PTR1     IF LAST REQUEST COMPLETE 
          SA1    X1 
          MX7    1           SET COMPLETE FLAG
          BX7    X7+X1
          SA7    A1 
 PTR1     SX6    B2+RCL 
          SA1    SNDA        SAVE TASK PARAMETERS 
          MX0    1           SET FLAG TO PROHIBIT STORAGE MOVE
          SA6    SNDB        SET NETPUT FLAG
          SA2    B7 
          BX7    X0+X2
          BX6    X1 
          SA7    A2+         FWA OF SUBCP TABLE 
          SA6    B2+RCLA     TASK RECALL STATUS WORD TWO
          SX7    PTR2        RETURN ADDRESS 
          SA7    TROF        INHIBIT *TAF* FROM ROLLOUT 
          SA7    PPMA        SET NETWORK REQUEST FLAG 
          EQ     TRCL2       PUT TASK IN RECALL 
  
*         TASK RETURNS HERE AFTER RECALL. 
  
 PTR2     PL     X1,PTR1     IF NETWORK REQUEST NOT COMPLETE
          MX0    -59         CLEAR FLAG TO ALLOW STORAGE MOVE 
          BX7    X7-X7
          SX2    B2+RCL 
          SA1    SNDB 
          BX2    X2-X1
          SA1    B7          FWA OF SUBCP TABLE 
          NZ     X2,PTR3     IF NOT THE SAME TASK 
          SA7    SNDB        CLEAR NETPUT FLAG
          SA7    TROF        CLEAR ROLLOUT INHIBIT FLAG 
          SA7    PPMA        CLEAR NETWORK REQUEST FLAG 
 PTR3     SA2    B2+RCLA     TASK RECALL STATUS WORD TWO
          BX6    -X0*X1 
          SA6    A1 
          BX7    X2 
          SA7    SNDA        RESTORE PARAMETERS 
          EQ     PTRX        RETURN 
 SOT      SPACE  4,15 
**        SOT - SYSTEM ORIGIN TASK. 
* 
*         ENTRY  (X1) = MESSAGE LENGTH IN WORDS.
*                (X3) = TST TERMINAL ADDRESS. 
* 
*         EXIT   (INSI) SET UP FOR SYSTEM ORIGIN TASK.
* 
*         USES   X - 1, 4, 5, 6.
*                A - 6. 
*                B - 6. 
  
  
 SOT      SUBR               ENTRY/EXIT 
          TX4    X3,-VTST    COMPUTE TST ORDINAL
          SX5    TSTLLE 
          PX4    X4 
          PX5    X5 
          NX4    X4 
          NX5    X5 
          FX4    X4/X5
          UX4,B6 X4 
          LX5    X4,B6
          MX4    1
          BX1    X4+X1       STATUS + MESSAGE LENGTH
          LX5    INTOS-INTON+1
          BX6    X5+X1       ADD TERMINAL ORDINAL 
          LX4    INSOS-59 
          BX6    X6+X4       ADD SYSTEM TRANSACTION 
          SA6    INSI        BUFFER FOR TRANSACTION 
          EQ     SOTX        RETURN 
 TLO      SPACE  4,15 
**        TLO - TERMINAL LOGOUT.
* 
*                1. IF TERMINAL NOT LOGGED IN CORRECTLY 
*                   EXIT TO ABORT TASK ROUTINE. 
*                2. CLEAR USER LOGGED IN. 
*                3. IF LOGOUT WITH RECOVERY REQUIRED GOTO STEP 5. 
*                4. WRITE TERMINATION *STEP* TO *CRF*.
*                5. LOGOUT TERMINAL FROM NCT. 
*                6. SEND NAM END CONNECTION SUPERVISORY MESSAGE.
*                7. RETURN TO TASK SWITCHING LOOP.
* 
*         ENTRY  (B6) = FWA OF COMMUNICATION BLOCK HEADER.
*                (X5) = REQUEST WORD. 
*T        18/ ADDR,24/4LCTIP,18/15B.
* 
*                ADDR = ADDRESS FIELD OF *LOGT* REQUEST.
* 
*         EXITS  *TERR7* IF TERMINAL NOT LOGGED IN. 
*                *TSSC* NORMAL EXIT.
* 
*         USES   A - 1, 4, 5, 6, 7. 
*                X - 1, 2, 4, 5, 6, 7.
*                B - 3. 
* 
*         CALLS  NPT. 
  
  
 TLO      LX5    18          POSITION ADDRESS FIELD 
          SB3    X5 
          SA1    B6+1 
          MX6    1
          LX1    -18
          SA4    X1          TST ENTRY
  
*         CHECK FOR LEGAL TERMINAL LOG IN.
  
          SX2    X1 
          LX6    TSLIS-59 
          ZR     X2,TERR7    IF NOT ORGINATING TERMINAL 
          BX2    X6*X4
          ZR     X2,TERR7    IF TERMINAL NOT LOGGED IN
          BX4    -X6*X4      CLEAR LOGIN FIELD
          LX6    TSARS-59-TSLIS+59
          BX4    X6+X4       SET *TSAR* BIT IF NOT TO WRITE *STEP*
          NZ     B3,TLO2     IF NOT TO WRITE *STEP* 
          BX6    -X6*X4      CLEAR *TSAR* BIT 
          SA6    A4+
          SX5    CSNR        NON-RECOVERABLE TRANSACTION/JOB *STEP* 
          SX3    TLO1        RETURN ADDRESS 
          RJ     WTS         WRITE TERMINATION *STEP* 
 TLO1     SA1    B2+CB2C     GET TST ENTRY
          LX1    CBTAN-1-CBTAS
          SA4    X1 
 TLO2     MX6    60-TSAUN 
          LX6    TSAUS-TSAUN+1
          ERRNZ  TSAUN-TSLIN FIELDS NOT THE SAME LENGTH 
          ERRNZ  TSLIW-TSAUW USER ACTIVE AND LOGIN NOT IN SAME WORD 
          BX6    X6*X4       CLEAR USER ACTIVE FIELD
          SX5    TNCTL
          SA6    A4          CLEAR USER ACTIVE FIELD
          MX7    -TSCNN      MASK FOR NCT ORDINAL 
          LX6    TSCNN-1-TSCNS  RIGHT JUSTIFY NCT ORDINAL 
          BX2    -X7*X6 
  
*         SEND END CONNECTION.
  
          SA5    SMCE        CONNECTION ENDED 
          LX2    AHACS-AHACN+1
          BX6    X2+X5       PUT ACN IN CONNECTION ENDED
          SA6    OTSB 
          SX4    B1 
          RJ     NPT         SEND (CON/END) SUPERVISORY MESSAGE 
          EQ     TSSC        EXIT TO TASK SLICING 
          SPACE  4,10 
**        VPR - VALIDATE PARAMETERS REQUEST.
* 
*         VALIDATE REQUEST PARAMETERS IS A STANDARD PARAMETER 
*         VALIDATION ROUTINE WHICH A FUNCTION PROCESSOR MAY 
*         INVOKE TO INSURE THAT - 
* 
*                 1. THE PARAMETER BLOCK LIES WITHIN THE RA AND FL. 
*                 2. IF A TASK IS ATTEMPTING TO ACCESS A TERMINAL 
*                    WHICH IS NOT THE ORIGINATING TERMINAL, THE 
*                    THE DATA BASE OF THE DESTINATION TERMINAL
*                    MUST BE THE SAME AS THE ORIGINATING TERMINAL.
*                 3. THE LOGIN STATUS IS RETURNED TO THE PROPER 
*                    LOCATION IN THE TASK-S FIELD LENGTH. 
* 
*         ENTRY  (B6) = START OF COMMUNICATIONS BLOCK HEADER. 
*                (B5) = TASK RA.
*                (B4) = COMPLIMENT OF PARAMETER ADDRESS.
*                (B2) = ADDRESS OF TASK-S SYSTEM AREA.
*                (X1) = MESSAGE LENGTH IN WORDS.
* 
*         EXIT   (A1) = TST ENTRY OF TERMINAL.
*                (X6) .LT. ZERO IF TERMINAL NOT LOGGED IN.
*                (B4) = PARAMETER BLOCK ADDRESS.
*                TO *TERR2* IF INCORRECT PARAMETER BLOCK ADDRESS. 
*                TO *TERR7* IF TERMINAL NAME NOT FOUND. 
*                TO *TERR11* IF TASK REQUEST NOT ASSOCIATED WITH DATA 
*                BASE STATUS WORD POINTED TO BY *STATUS* FIELD IN 
*                REQUEST IS SET TO TERMINAL LOGGED IN STATUS. 
* 
*         USES    A - 1, 2, 4, 5, 7.
*                 B - 3.
*                 X - 0, 1, 2, 4, 5, 6, 7.
* 
*         CALLS   STST. 
  
  
 VPR      SUBR               ENTRY/EXIT 
          SA4    B5-B4       READ TERMINAL NAME 
          SB3    X1+B4       CHECK ALL WORDS IN BOUNDS
          MX0    42 
          SB3    B3+X2
          SA5    A4+B1       STATUS ADDRESS 
          EQ     B3,B1,TERR2 IF SECOND WORD AT FL 
          SA2    B6+B1       TST INDEX FROM COMMUNICATION 
          BX4    X0*X4       TERMINAL NAME
          LX2    0-42 
          SX7    TSTLLE      COMPUTE TERMINAL ADDRESS 
          SX5    X5 
          SX2    X2 
          IX2    X2*X7
          IX7    X5-X1
          TA1    X2,VTST     READ ORIGINATING TERMINAL TST ENTRY
          PL     X7,TERR2    IF RETURN ADDRESS OUT OF BOUNDS
 VPR1     ZR     X4,VPR4     IF TERMINAL NAME NOT GIVEN 
          RJ     STST        SEARCH TERMINAL STATUS TABLE 
          ZR     X3,TERR7    IF TERMINAL NAME NOT FOUND 
 VPR3     SA1    A3-B1       TST ENTRY
          SA2    B2+DBNC     DATA BASE FOR ORIGINATING TERMINAL 
          MX6    -12
          LX1    -24
          SX4    X2 
          BX6    -X6*X1      DATA BASE OF TERMINAL BEING OPERATED UPON
          LX1    24 
          BX4    X4-X6
          ZR     X4,VPR4     IF SAME DATA BASE
          SX2    X2-2RSY
          NZ     X2,TERR11   IF NOT VALIDATED FOR SYSTEM DATA BASE
 VPR4     LX1    59-58
          SX6    B1 
          NG     X1,VPR5     IF TERMINAL LOGGED IN
          BX6    X6-X6
 VPR5     LX1    58-59
          PX7    X6 
          SA7    X5+B5       SET LOGIN STATUS 
          SB4    A4          RESTORE PARAMETER BLOCK ADDRESS
          EQ     VPRX 
  
 VPRA     BSS    0           END OF ROUTINE 
 XST      SPACE  4,20 
          ORG    INDB 
  
*         USE BUFFER AREA INDB FOR ROUTINE *XST* THAT WILL BE 
*         EXECUTED ONCE BEFORE BUFFER IS USED.
 XST      SPACE  4,10 
**        XST - INSTRUCTION LINKAGE FROM NAM TO TRANSACTION EXECUTIVE.
* 
*                1. SET UP *RJ* INSTRUCTIONS TO PROCESS TERMINAL INPUT. 
*                2. PUT AIP ENTRY POINTS INTO TAF AIP REQUEST.
*                3. DO AN EREXIT TO HANDLE NAM ABORTS.
* 
*         USES   X - 0, 3, 6. 
*                A - 3, 6.
*                B - 5. 
* 
  
  
 XST      SUBR               ENTRY/EXIT 
  
*         MODIFY INSTRUCTIONS FOR TRANSACTION EXECUTIVE.
  
          SA3    XSTA 
          BX6    X3 
          SA6    NONA        DO NOT *RJ* TO *XST* AFTER FIRST CALL
  
*         MODIFY INSTRUCTIONS FOR NAM ENTRY POINTS. 
  
          TB5    0,VNCT      FWA OF NAM ENTRY POINTS
 INI      HERE
          EQ     XSTX        RETURN 
  
 XSTA     EQ     NON1        MODIFY INSTRUCTION FOR *NON* 
  
 XSTL     EQU    *-XSTX      LENGTH OF *XST* ROUTINE
          ERRNG  INDBL-XSTL  *XST* ROUTINE MUST FIT IN BUFFER AREA
  
          ORG    VPRA 
          IF     DEF,DEBG 
 OPL      XTEXT  COMCWOD
          ENDIF 
          BASE   *
          LIST   *
          ENDX
          TTL    "PROD" - TRANSACTION EXECUTIVE - VER "VERT". 
