TAFREC
          IDENT  TAFREC,111B,TAFREC 
          ABS 
          SST    CMBL 
          ENTRY  TAFREC 
          ENTRY  RFL= 
          SYSCOM B1 
          TITLE  TAFREC - *TAF* INITIALIZATION AND RECOVERY.
*COMMENT  TAFREC - *TAF* INITIALIZATION AND RECOVERY. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 TAFREC   SPACE  4,10 
          LIST   X
*CALL     COMKTAF 
          LIST   -X 
          SPACE  4,10 
*****     TAFREC - *TAF* INITIALIZATION AND RECOVERY PROGRAM. 
* 
*         R. G. PARKHOUSE    80/05/15.
          SPACE  4,10 
***       *TAFREC* PERFORMS INITIALIZATION AND RECOVERY PROCESSING FOR
*         THE TRANSACTION FACILITY *TAF*. 
* 
*         *TAFREC* READS THE *TAF* CONFIGURATION FILE VERIFYING THE 
*         SYNTAX OF ALL DIRECTIVES.  THE DIRECTIVES ACTUALLY PROCESSED
*         ARE *DISPLAY*, *NETWORK* AND *RECOVER*. IF THE *DISPLAY*
*         DIRECTIVE HAS STATUS EQUAL *ON*, THE INITIAL *K-DISPLAY* IS 
*         SET UP TO RECEIVE OPERATOR ENTERED VALUES.  FOR EACH ID 
*         SPECIFIED ON THE *NETWORK* DIRECTIVE THE CORRESPONDING
*         NETWORK FILE IS ATTACHED AND THE TERMINAL STATUS TABLE
*         BUILT.  FOR EACH ID SPECIFIED ON THE *RECOVER* DIRECTIVES,
*         THE CORRESPONDING COMMUNICATIONS RECOVERY FILE IS ATTACHED, 
*         OR DEFINED IF NOT FOUND AND THE INITIALIZE FUNCTION WAS 
*         REQUESTED FROM THE *K-DISPLAY*. 
* 
*         *TAFREC* CREATES THE COMMUNICATIONS RECOVERY FILE, *CRF*, IF
*         IT DID NOT EXIST, USING PARAMETERS FROM THE *RECOVER* 
*         DIRECTIVE.  FOR EACH TERMINAL ON THE CORRESPONDING NETWORK
*         FILE, A RECOVERY UNIT IS INITIALIZED ON THE *CRF*.
* 
*         IF THE COMMUNICATIONS RECOVERY FILE EXISTED, *TAFREC* 
*         DETERMINES TERMINALS ACTIVE AT FAILURE AND SETS RECOVERY
*         STATUS FOR THOSE TERMINALS. 
* 
*         *TAFREC* REFORMATS THE COMMUNICATIONS RECOVERY FILE IF
*         PARAMETERS IN THE *TAF* CONFIGURATION FILE CHANGE.  CHANGES 
*         TO THE FOLLOWING MAY CAUSE A REFORMAT,
*                SIZE OF USER RECOVERY MESSAGES.
*                NUMBER OF RECOVERY MESSAGES. 
*                TERMINALS ALLOWED TO USE TAF.
* 
*         *TAFREC* PREPARES A RECOVERY REPORT WHICH THE USER MAY PRINT
*         IF DESIRED.  THIS REPORT CONSISTS OF, 
*                CONTENTS OF *TAF* CONFIGURATION FILE.
*                INITIAL *K-DISPLAY*. 
*                INFORMATION ABOUT TERMINALS AFFECTED BY RECOVERY.
*                ERRORS PREVENTING A CORRECT RECOVERY.
* 
*         *TAFREC* PREPARES THE TAF INITIALIZATION FILE WHICH CONTAINS
*         THE INFORMATION FOR *TAF* TO COMPLETE INITIALIZATION. 
* 
          SPACE  4,10 
***       DAYFILE MESSAGES. 
* 
*         IN THE FOLLOWING MESSAGES, *CRFNAME* IMPLIES THE APPROPRIATE
*         CRF FILE NAME, AND *NETNAME* IMPLIES THE APPROPRIATE NETWORK
*         FILE NAME.
* 
* 
*         ACTIVE RECOVERY UNITS(S) DELETED - CRFNAME. 
*         CANNOT DEFINE REFORMATTED FILE - CRFNAME. 
*         DB-NAME MUST NOT START WITH THE LETTER Z. 
*         FILE TCF NOT FOUND. 
*         FORMAT ERROR IN NETWORK FILE - NETNAME. 
*         INCORRECT TCF ENTRIES.
*         K.COMMAND NOT VALID.
*         MAXIMUM TERMINALS EXCEEDED. 
*         MS REDUCTION INCORRECT - CRFNAME. 
*         NETWORK FILE NOT FOUND - NETNAME. 
*         NM REDUCTION INCORRECT - CRFNAME. 
*         NO TERMINALS IN NETWORK FILE - NETNAME. 
*         NULL DESCRIPTION FILE.
*         NO DATA BASE NAME TERMINAL - TERMINAL.
*         COMMUNICATIONS RECOVERY FILE NOT FOUND - CRFNAME. 
*         TCF FILE EMPTY. 
*         CRF HEADER ERROR - CRFNAME. 
*         CRF RUN UNIT ERROR - CRFNAME. 
*         CRF RECOVERY/INITIALIZATION ABORTED.
*         CRF RECOVERY/INITIALIZATION COMPLETE. 
          SPACE  4,10 
***       DEFINITION OF TERMS.
* 
*         TCF          *TAF* CONFIGURATION FILE.
*         CRF          COMMUNICATIONS RECOVERY FILE.
*         TIF          *TAF* INITIALIZATION FILE. 
*         TST          TERMINAL STATUS TABLE. 
*         RESTART      RESTART AFTER *EXIT* AND *TAFXX2* PROCESSING.
          SPACE  4,10 
*         COMMON DECKS. 
  
*CALL     COMSPFM 
*CALL     COMSTRX 
*CALL     COMCCMD 
*CALL     COMCDCM 
*CALL     COMCDCP 
*CALL     COMCMAC 
*CALL     COMKFLD 
          LIST   X
*CALL     COMKIPR 
*CALL     COMKCBD 
*CALL     COMKTIF 
*CALL     COMKTRF 
*CALL     COMKTST 
          LIST   -X 
          TITLE  CONSTANTS, FETS, BUFFERS AND MISCELLANEOUS.
          SPACE  4,10 
****      ASSEMBLY CONSTANTS. 
  
 RUDL     EQU    4           RECOVERY UNIT DIRECTORY ENTRY LENGTH 
 CST      EQU    7           COMPLETE STATUS
 IST      EQU    1           INITIALIZE STATUS
 RST      EQU    0           RECOVER STATUS 
****
          SPACE  4,10 
          ORG    VLOCL2 
          SPACE  4,10 
*         FETS. 
  
 CRF      BSS    0           COMMUNICATIONS RECOVERY FILE 
 ZZCRF    RFILEB TRBUF,TRBUFL,EPR,FET=14
  
 CRFA     BSS    0           REFORMATTED COMMUNICATIONS RECOVERY FILE 
 ZZCRFA   RFILEB TABUF,TABUFL,EPR,FET=14
  
 TIF      BSS    0           *TAF* INITIALIZATION FILE
 "TIF"    FILEB  TBUF,TBUFL 
  
 R        BSS    0           INITIALIZATION RECOVERY REPORT FILE
 ZZIRRF   FILEB  RBUF,RBUFL 
          SPACE  4,10 
*         GLOBAL VARIABLES AND TABLES.
  
 ID       CON    0           ID OF NETWORK FILE AND *CRF* 
 NM       CON    0           NUMBER OF USER MESSAGES
 MS       CON    0           SIZE OF USER MESSAGES
  
*         3 WORD BUFFER FOR *SETPFP*. 
*         42/ FAMILY NAME, 14/ 0, 4/ FG.
*         42/ PACK NAME, 18/ PACK TYPE
*         42/ USER NAME, 18/ USER INDEX 
*         FG - FLAG BITS DENOTING WHICH FIELDS TO SET 
*         BIT 3 - FAMILY NAME 
*             2 - PACK NAME 
*             1 - USER NAME 
*             0 - USER INDEX
  
 PFPA     VFD    42/0,14/0,4/0
          VFD    42/0,18/0
          VFD    42/0,18/0
  
*         *CPM* VALIDATION PARAMETER BLOCK. 
  
 FM       CON    0           42/FAMILY NAME,18/0
 PW       CON    1           DO NOT VALIDATE PASSWORD 
 UN       CON    0           42/USER NAME,18/USER INDEX 
          BSSZ   6           REST OF PARAMETERS 
  
 KCOF     CON    0           *K.COMMAND* ORIGIN FLAG
 KCNV     DATA   C* K.COMMAND NOT VALID.* 
 MZDB     DATA   C* DB-NAME MUST NOT START WITH THE LETTER Z.*
  
 DFFM     BSS    1           DEFAULT FAMILY 
 DFNM     VFD    60/0L"TRDND"  DEFAULT NUMBER USER MESSAGES 
 DFMS     VFD    60/0L"TRDMD"  DEFAULT MESSAGE SIZE 
 DATE     BSS    1
 TIME     BSS    1
 RFN      VFD    60/0LZZCRF  CRF FILE NAME
 RFNA     VFD    60/0LZZCRFA REFORMATED CRF FILE NAME 
  
**        TABLE OF FAMILY NAMES AND USER INDICES. 
* 
*         THIS TABLE HAS TWO WORD ENTRIES IN THE FOLLOWING FORMAT.
* 
*T  W1    42/ FAMILY,18/
*T, W2    42/ USER NAME, 18/ USER INDEX 
  
 TFAM     BSSZ   2*MAXNF     TABLE OF FAMILY NAMES AND USER INDICES 
  
**        TABLE OF VALUES FROM *RECOVER* DIRECTIVE PLUS ADDITIONAL
*         VALUES AND STATUS. THE TABLE IS INDEXED BY *RECOVER* ID.
* 
*T  W1    12/ ,12/ PPM,12/ NM,12/ MS,9/ ,3/ ST
* 
*         WHERE 
*                PPM = PRU-S PER USER MESSAGE.  (NOT ON DIRECTIVE)
*                NM  = NUMBER OF USER MESSAGES ON *CRF*.
*                MS  = USER MESSAGE SIZE IN WORDS.
*                ST  = STATUS.  0=RECOVER 
*                               1=INITIALIZE
*                               7=COMPLETE
  
 TREC     BSSZ   MAXRC       TABLE OF *RECOVER* DIRECTIVE VALUES
  
*         TABLE OF TRANSACTION TYPES. 
  
 TTYP     BSS    0
          ORG    TTYP+TYIT
          DATA   10H TERMINAL 
          ORG    TTYP+TYBT
          DATA   10H  BTRAN 
          ORG    TTYP+TYRM
          DATA   10HBATCH/CRM 
 TTYPL    EQU    *-TTYP 
          ORG    TTYP+TTYPL 
  
*         TABLE OF TRANSACTION STEPS. 
  
 TSTP     BSS    0
          ORG    TSTP+CSNR
          DATA   10HNON-RECOV 
          ORG    TSTP+CSCD
          DATA   10HCDCS DOWN 
          ORG    TSTP+CSCE
          DATA   10HCEASE/END 
          ORG    TSTP+CSTA
          DATA   10H  ABORT 
          ORG    TSTP+CSTN
          DATA   10HRU ERROR
          ORG    TSTP+CSTI
          DATA   10HRECOV INP 
          ORG    TSTP+CSBC
          DATA   10HID LOGGED 
          ORG    TSTP+CSND
          DATA   10HNAM DOWN
          ORG    TSTP+CSST
          DATA   10HSTART JOB 
          ORG    TSTP+CSTT
          DATA   10H END TAF
 TSTPL    EQU    *-TSTP 
          ORG    TSTP+TSTPL 
  
 OVRD     CON    0           ERROR OVERRIDE FLAG
 CUID     CON    -1          CURRENT ID BEING PROCESSED 
 SDST     CON    0           SHUTDOWN STATUS.    -VE = ABNORMAL.
 CUFN     CON    0           CURRENT *CRF* FILE NAME
 WPMO     CON    0           WORDS PER USER MESSAGE ON OLD *CRF* (N*64) 
 PPMO     CON    0           PRU-S PER USER MESSAGE ON OLD *CRF*
 WPMN     CON    0           WORDS PER USER MESSAGE ON NEW *CRF* (N*64) 
 NUMO     CON    0           NUMBER MESSAGES/RECOVERY UNIT ON OLD *CRF* 
 ADMN     CON    0           ADDITIONAL MESSAGES ON NEW *CRF* 
 NMRU     CON    0           NUMBER OF RECOVERY UNITS ON OLD *CRF*
 HTST     CON    0           HIGHEST TST ADDRESS FOR CURRENT *CRF*
 LTST     CON    0           LOWEST TST ADDRESS FOR *CRF* 
  
*         TABLE OF RECOVERED TRANSACTION TYPES. 
  
 TNRC     BSS    0
          LOC    0
          CON    0           DUMMY ENTRY FOR UNUSED RECOVERY UNITS
          CON    0           NUMBER TERMINALS RECOVERED 
          CON    0           NUMBER OF *BTRAN-S* RECOVERED
          CON    0           NUMBER CONCURRENT BATCH/*CRM* RECOVERED
          LOC    *O 
  
 TINT     CON    0           NUMBER NEW TERMINALS INTRODUCED
 TDEL     CON    0           NUMBER EXISTING TERMINALS DELETED
 TERR     CON    0           NUMBER OF RECOVERY UNIT ERRORS 
 BLNK     DATA   20H
 PMSG     BSS    3           SCRATCH AREA FOR *PFM* ERROR MESSAGES
 DAYB     BSSZ   5           BUFFER FOR DAYFILE MESSAGES
  
*         HEADING FOR REPORT FILE.
  
 HEAD     DATA   1L1
          DATA   60H     TAF  INITIALIZATION  AND RECOVERY  REPORT
, PAGE -
 HEAD1    BSS    1           PAGE NUMBER
          CON    0           END OF LINE
          DATA   1L          BLANK LINE 
          DATA   10H
          DATA   20HMODE = "PROD" 
 .A       IFEQ   IPTAR,1
          DATA   20HRECOVERY ENABLED
 .A       ELSE
          DATA   20HRECOVERY DISABLED 
 .A       ENDIF 
 HEAD2    DATA   10H              RESTART INDICATOR 
          CON    0           END OF LINE
          DATA   1L          TWO BLANK LINES
          DATA   1L 
 HEADL    EQU    *-HEAD 
  
*         SUBHEADING FOR CRF REPORT.
  
 RFSH     DATA   10H
          DATA   20H INITIALIZING - ZZCR
          DATA   10HFI
          DATA   10HSHUTDOWN -
          DATA   10H NORMAL 
          CON    0           END OF LINE
          DATA   1L          BLANK LINE 
          DATA   C* TERMINAL    TSEQ     TYPE       STEP      DATE
,TIME     COMMENT*
          DATA   1L 
 RFSHL    EQU    *-RFSH 
  
*         SUBHEADING FOR SUMMARY. 
  
 SMSH     DATA   30H
          DATA   C*SUMMARY* 
          DATA   1L          BLANK LINE 
 SMSHL    EQU    *-SMSH 
  
*         SUMMARY BUFFER. 
  
 SMBF     DATA   10H
 SMB1     CON    0           NUMBER OF TERMINALS RECOVERED
          DATA   C* TERMINALS RECOVERED.* 
          DATA   10H
 SMB2     CON    0           NUMBER OF *BTRAN-S* RECOVERED
          DATA   C* BATCH TRANSACTIONS RECOVERED.*
          DATA   10H
 SMB3     CON    0           NUMBER CONCURRENT BATCH *CRM* REQUESTS 
          DATA   C* CONCURRENT BATCH/CRM REQUESTS RECOVERED.* 
          DATA   10H
 SMB4     CON    0           NUMBER OF RECOVERY UNITS INTRODUCED
          DATA   C* USER NAMES ADDED.*
          DATA   10H
 SMB5     CON    0           NUMBER OF RECOVERY UNITS DELETED 
          DATA   C* RECOVERABLE RUN UNITS DELETED.* 
 SMBFL    EQU    *-SMBF 
  
 SBHD     BSS    3           SUBHEADING ADDRESS,WORD COUNT,LINE COUNT 
 LCNT     CON    60          REPORT FILE LINE COUNT 
 PCNT     CON    0           REPORT FILE PAGE COUNT 
  
 TAFREC   EJECT 
*         TAFREC MAINLINE.
  
  
 TAFREC   RJ     PRS         PRESET TAFREC
          SX1    IPTAR
          ZR     X1,TAF5     IF *TAF* AUTOMATIC RECOVERY ENABLED
          SX7    -1 
          SA7    CUID        INITIALIZE ID
          SX6    RFSH        SET SUBHEADING ADDRESS AND LENGTH
          SX7    RFSHL
          SA6    SBHD 
          SA7    A6+1 
          SX6    4           LINE COUNT OF NEXT SUBHEADING
          SA6    SBHD+2 
  
*         INITIALIZE OR RECOVER ALL COMMUNICATIONS RECOVERY FILES.
  
 TAF1     SX6    LINP        FORCE NEW PAGE 
          SA6    LCNT 
          SA1    CUID 
          SX6    X1+B1
          SX7    X6-MAXRC 
          ZR     X7,TAF4     IF ALL RECOVERY FILES PROCESSED
          SA6    A1 
          SA1    TREC+X6
          ZR     X1,TAF1     IF NO RECOVERY FILE WITH THIS ORDINAL
          MX0    -3 
          BX2    -X0*X1      GET STATUS OF RECOVERY FILE
          SX3    X2-IST 
          NZ     X3,TAF2     IF NOT INITIALIZE
          RJ     ITR         INITIALIZE COMMUNICATIONS RECOVERY FILE
          EQ     TAF3        INITIALIZE NETWORK FILE IDENTIFIER 
  
*         RECOVER COMMUNICATIONS RECOVERY FILE. 
  
 TAF2     RJ     PTR         PERFORM *CRF* RECOVERY 
 TAF3     SA1    CUID 
          BX6    X1 
          LX6    TFIDS-TFIDN+1  INITIALIZE NETWORK FILE IDENTIFIER
          SX2    TTFTE
          IX2    X2*X1
          SA1    TSTHD+X2+TFTSW 
          BX6    X6+X1
          SA6    A1 
          EQ     TAF1        PROCESS NEXT COMMUNICATIONS RECOVERY FILE
  
*         WRITE RECOVERY REPORT SUMMARY.
  
 TAF4     SX6    SMSH        SUBHEADING ADDRESS 
          SX7    SMSHL       LENGTH 
          SA6    SBHD 
          SA7    A6+B1
          SX6    B1+B1       LINE COUNT 
          SA6    A7+B1
          SX6    LINP        FORCE NEW PAGE 
          SA6    LCNT 
          SA1    TNRC+B1     TERMINALS RECOVERED
          RJ     CDD         CONVERT TO DISPLAY 
          SA6    SMB1 
          SA1    A1+1        *BTRAN* JOBS RECOVERED 
          RJ     CDD
          SA6    SMB2 
          SA1    A1+1        BATCH/*CRM* REQUESTS RECOVERED 
          RJ     CDD
          SA6    SMB3 
          SA1    TINT        RECOVERY UNITS INTRODUCED
          RJ     CDD
          SA6    SMB4 
          SA1    TDEL        RECOVERY UNITS DELETED 
          RJ     CDD
          SA6    SMB5 
          SB2    5
          RJ     ALC         ADVANCE LINE COUNT 
          WRITEW  R,SMBF,SMBFL  WRITE SUMMARY 
  
*         FLUSH BUFFERS AND TERMINATE *TAFREC*. 
  
 TAF5     SA1     TSTLW 
          WRITEW TIF,TSTLW,X1+1  WRITE TST TO TIF 
          WRITER  TIF,R      FLUSH BUFFER 
          REWIND  TIF,R 
          WRITER  R,R        FLUSH REPORT FILE BUFFER 
          SA1    DFFM        DEFAULT FAMILY 
          SX0    13B         *SETPFP* FLAGS 
          SA2    USRC        USER NAME / USER INDEX 
          BX6    X0+X1
          BX7    X2 
          SA6    PFPA        SET UP *SETPFP* CALL BLOCK 
          SA7    A6+2 
          SETPFP PFPA        SET PERMANENT FILE PARAMETERS
          MESSAGE  TAFA,0,R  COMPLETE MESSAGE 
          ENDRUN             END
  
 TAFA     DATA   C* CRF RECOVERY/INITIALIZATION COMPLETE.*
          TITLE  MISCELLANEOUS SUBROUTINES. 
 ITR      SPACE  4,20 
**        ITR - INITIALIZE COMMUNICATIONS RECOVERY FILE.
* 
*         PREALLOCATE AND INITIALIZE THE *CRF*.  THE FILE IS WRITTEN
*         SEQUENTIALLY, THE *CRF* HEADER FIRST, FOLLOWED BY A RECOVERY
*         UNIT FOR EACH TERMINAL IN THE CORRESPONDING NETWORK FILE. 
* 
*         ENTRY  (CUID) = *CRF* ID. 
*                (RFN) = RECOVERY FILE NAME.
* 
*         EXIT   CRF INITIALIZED. 
* 
*         USES   X - 0, 1, 2, 3, 5, 6, 7. 
*                A - 1, 2, 3, 6, 7. 
*                B - 4, 5, 6. 
* 
*         CALLS  GHL, PRU, ZFB. 
* 
*         MACROS REWIND, WRITER, WRITEW.
  
  
 ITR      SUBR               ENTRY/EXIT 
          SA1    CUID        GET ID 
          SX2    1R0
          IX2    X1+X2       BINARY TO DISPLAY
          LX2    29-5 
          SA3    RFN
          BX6    X3+X2       FORM FILE NAME - CRFI
          SA6    PBUF+TRFIW  STORE FILE NAME IN HEADER
          SA1    ITRA        SET UP SUBHEADING FOR REPORT 
          BX7    X1 
          SA7    RFSH+1 
          SA1    A1+B1
          LX6    24 
          MX0    -24
          BX2    -X0*X6 
          BX7    X1+X2
          SA7    A7+B1
          BX7    X0*X6
          SA7    A7+B1
          LX6    36 
          SA1    BLNK 
          BX7    X1 
          SA7    A7+2 
          SA7    A7+B1
          SX2    B1 
          BX6    X6+X2       COMPLETE BIT 
          SA6    CRF         STORE IN FET 
          RJ     GHL         GET HIGHEST/LOWEST TST ENTRY ADDRESSES 
          SA6    HTST        SAVE HIGHEST ADDRESS 
          SA7    A6+B1       SAVE LOWEST ADDRESS
          IX1    X6-X7
          SX1    X1+TSTLLE
          SX2    TSTLLE 
          IX6    X1/X2       NUMBER TERMINALS 
          SA1    CUID 
  
*         INITIALIZE *CRF* HEADER.
  
          SA1    TREC+X1     FILE INFORMATION 
          MX0    24 
          LX0    36 
          BX7    X0*X1       *NM* AND *MS*
          IX7    X7+X6       ADD NUMBER OF RECOVERY UNITS 
          MX6    1
          BX7    X7+X6       ABNORMAL SHUTDOWN
          SA7    PBUF+TRNRW  STORE FILE PARAMETERS
          SA1    DATE 
          SA2    TIME 
          BX6    X1 
          BX7    X2 
          SA6    A7+B1       STARTUP DATE 
          SA7    A6+B1       STARTUP TIME 
          SB5    A7+B1       FWA TO ZERO
          SB6    TRHWL-TRTDW NUMBER OF WORDS
          RJ     ZFB         ZERO FILL BUFFER 
          SX7    TRBUF
          SA7    CRF+2       RESET BUFFER POINTERS
          SA7    A7+B1
          WRITEW CRF,PBUF,TRHWL  WRITE HEADER 
 ITR1     SA2    HTST        HIGHEST TST ADDRESS
          SA1    A2+B1       NEXT TST ADDRESS 
          IX2    X2-X1
          NG     X2,ITR2     IF ALL DONE
          SX6    X1+TSTLLE
          SA6    A1 
          SA1    X1+B1       TERMINAL NAME
          SX5    CRF         FET ADDRESS
          SB4    CSNR        STEP = NON RECOVERABLE TRANSACTION 
          RJ     PRU         PREALLOCATE RECOVERY UNIT
          SA1    TINT 
          SX6    X1+B1       INCREMENT INTRODUCED RECOVERY UNITS
          SA6    A1 
          EQ     ITR1        NEXT TERMINAL
  
 ITR2     WRITER CRF,R       FLUSH BUFFER 
          WRITER CRF,R       WRITE END OF RECORD MARK 
          REWIND CRF,R
          SA1    CUID 
          SA2    TREC+X1
          MX0    -3 
          BX6    X0*X2
          SX0    CST
          BX6    X6+X0
          SA6    A2          SET FILE = COMPLETE
          EQ     ITRX        RETURN 
  
 ITRA     DATA   C* INITIALIZING - *
          CON    0
 PTR      SPACE  4,25 
**        PTR - PERFORM *CRF* RECOVERY. 
* 
*         RECOVER A *CRF* AND DETERMINE THE TERMINALS TO BE RECOVERED.
*         THE *CRF* MAY BE REFORMATTED BECAUSE OF - 
*                AN INCREASE IN THE SIZE OF MESSAGE RECORDS.
*                AN INCREASE IN THE NUMBER OF MESSAGE RECORDS.
*                CHANGES IN TERMINALS ON NETWORK FILE.
*                RECOVERY UNIT ERROR AND ERROR OVERRIDE SET.
*         TERMINALS ACTIVE AT *TAF* SHUTDOWN WILL HAVE THE RECOVERY 
*         FLAG SET IN THE TST.
*         INFORMATION ON RECOVERED TERMINALS WILL BE WRITTEN TO THE 
*         REPORT FILE.
* 
*         ENTRY  (CUID) = CURRENT ID. 
* 
*         EXIT   *CRF* RECOVERED/REFORMATTED. 
*                RECOVERY FLAG SET IN THE TST FOR ACTIVE TERMINALS. 
*                TO *ERR* IF REFORMATTED FILE CANNOT BE DEFINED.
* 
*         USES   X - ALL. 
*                A - ALL. 
*                B - 2, 3, 4, 5, 6. 
* 
*         CALLS  ALC, BDR, CDD, FIO, FRL, GHL, PRU, RFH, RRU, SNM, STN, 
*                ZFB. 
* 
*         MACROS CHANGE, DEFINE, PURGE, RECALL, RENAME, REWIND, SETPFP, 
*                WRITER, WRITEW.
  
  
 PTR      SUBR               ENTRY/EXIT 
          SX6    B0+
          SA6    TERR        CLEAR ERROR COUNT
          SA1    CUID 
          SX2    1R0
          IX2    X2+X1       BINARY TO DISPLAY
          LX2    23-5 
          SA3    RFNA        *CRFA* 
          BX6    X3+X2
          SA6    CRFA+CFPN   PERMANENT FILE NAME
          SX4    3
          BX6    X6+X4       ADD BINARY/COMPLETE BITS 
          SA6    CRFA 
          LX2    6
          SA3    RFN         *CRF*
          BX6    X3+X2       FORM FILE NAME - *CRFI*
          SA6    CUFN        SAVE CURRENT *CRF* FILE NAME 
          SA6    CRF+CFPN    PERMANENT FILE NAME
          SA6    CRFA+CFNF
          BX6    X6+X4       ADD COMPLETE/BINARY BITS 
          SA6    CRF
          RJ     GHL         GET HIGHEST/LOWEST TST ADDRESSES 
          SA6    HTST        SAVE HIGHEST 
          SA7    LTST        SAVE LOWEST
          RJ     RFH         READ *CRF* HEADER
          SA1    SDST        SET UP SUBHEADING FOR REPORT 
          LX1    0-TRRSS
          MX0    -TRRSN 
          BX1    -X0*X1 
          SA1    PTRG+X1     SHUTDOWN STATUS
          SA2    PTRH 
          BX6    X1 
          BX7    X2 
          SA7    RFSH+4 
          SA6    A7+B1
          RJ     BDR         BUILD DIRECTORY OF RECOVERY UNITS
          SA6    PTRB        SAVE REFORMAT FLAG 
          SA3    HTST 
          SA4    LTST 
          IX1    X3-X4
          SX2    TSTLLE 
          IX1    X1+X2
          IX2    X1/X2       NUMBER OF RECOVERY UNITS 
          SB5    PBUF 
          SB6    TRHWL
          RJ     ZFB         ZERO FILL BUFFER 
  
*         UPDATE *CRF* HEADER.  SET ABNORMAL SHUTDOWN, DATE, TIME.
*         NUMBER OF USER MESSAGES AND SIZE OF USER MESSAGES.
  
          SA1    CUID 
          SA1    TREC+X1     FILE INFORMATION 
          MX0    24 
          LX0    36 
          BX7    X0*X1       *NM* AND *MS*
          BX7    X7+X2       ADD NUMBER OF RECOVERY UNITS 
          MX6    1
          BX7    X7+X6       ABNORMAL SHUTDOWN
          SA7    PBUF+TRNRW 
          SA1    DATE 
          SA2    TIME 
          BX6    X1 
          BX7    X2 
          SA6    PBUF+TRSDW  STARTUP DATE 
          SA7    PBUF+TRSTW  STARTUP TIME 
          SA1    CUFN 
          BX6    X1 
          SA6    PBUF+TRFIW  TRF FILE NAME
          SA1    PTRB 
          ZR     X1,PTR6     IF REFORMAT NOT NECESSARY
  
*         REFORMAT *CRF* ONTO ALTERNATE FILE. 
  
          SA5    CUID        ID 
          LX5    1           OFFSET INTO *TFAM* 
          SA1    TFAM+X5     GET FAMILY 
          SX0    13B         *SETPFP* FLAGS 
          BX7    X0+X1
          SA7    PFPA        SET UP *SETPFP* CALL BLOCK 
          SA5    TFAM+X5+1
          BX7    X5 
          SA7    PFPA+2 
          SETPFP PFPA        SET PERMANENT FILE PARAMETERS
          DEFINE CRFA        DEFINE REFORMATTED *CRF* 
          SA1    CRFA        CHECK FOR ERRORS 
          MX2    8
          LX1    59-17
          BX2    X2*X1
          ZR     X2,PTR1     IF NO ERROR
          MX2    42 
          LX1    17-59
          BX1    X2*X1
          SB2    1RX
          SB5    PTRC        * CANNOT DEFINE REFORMATTED FILE.* 
          RJ     SNM         SET NAME IN MESSAGE
          SX1    PTRC 
          EQ     ERR         PROCESS ERROR
  
*         REFORMAT RECOVERY FILE HEADER ONTO *CRFAI*. 
  
 PTR1     WRITEW  CRFA,PBUF,TRHWL  WRITE HEADER 
          SA1    CUFN        COMPLETE SUBHEADING FOR REPORT 
          SA2    PTRF 
          SA3    A2+B1
          BX6    X2 
          SA6    RFSH+1 
          LX1    24 
          MX0    -24
          BX6    -X0*X1 
          BX6    X6+X3
          SA6    A6+B1
          SA2    PTRJ 
          BX7    X0*X1
          BX7    X2+X7
          SA7    A6+1 
  
*         REFORMAT RECOVERY UNITS.
  
 PTR2     SA2    HTST        HIGHEST TST ADDRESS
          SA1    LTST        NEXT TST ADDRESS 
          IX2    X2-X1
          NG     X2,PTR5     IF ALL DONE
          SX6    X1+TSTLLE
          SA6    A1 
          MX0    TSTNN
          SA1    X1+TSTNW    TERMINAL NAME
          SB3    DIR         FWA OF TABLE 
          BX1    X0*X1       EXTRACT TERMINAL NAME
          SB4    RUDL        LENGTH OF ENTRY
          SX2    B4 
          SA3    NMRU 
          IX3    X3*X2
          SB5    X3+B3       LWA+1 OF DIRECTORY 
          RJ     STN         SEARCH DIRECTORY OF RECOVERY UNITS 
          ZR     X5,PTR3     IF NEW TERMINAL
          SA2    X5+B1
          LX2    59-58
          SB4    CSTN        STEP = I/O ERROR ON RECOVERY UNIT
          NG     X2,PTR4     IF RECOVERY UNIT ERROR 
          RJ     RRU         REFORMAT RECOVERY UNIT 
          EQ     PTR2        NEXT TST ENTRY 
  
*         INITIALIZE NEW RECOVERY UNITS ADDED TO NETWORK FILE.
  
 PTR3     SB4    CSNR        STEP = NON RECOVERABLE TRANSACTION 
          SA2    TINT 
          SX6    X2+B1       INCREMENT INTRODUCED RECOVERY UNITS
          SA6    A2 
  
*         INITIALIZE RECOVERY UNITS WHICH HAD I/O ERRORS. 
  
 PTR4     SX5    CRFA        FET ADDRESS
          RJ     PRU         INITIALIZE RECOVERY UNIT 
          EQ     PTR2        NEXT TST ENTRY 
  
*         THE RECOVERY FILE *CRFI* HAS BEEN REFORMATTED ONTO FILE 
*         *CRFAI*.  CHANGE BOTH PERMANENT AND LOCAL FILE NAMES
*         FROM *CRFAI* TO *CRFI*. 
  
  
 PTR5     WRITER CRFA,R      FLUSH BUFFER 
          WRITER CRFA,R      WRITE END OF RECORD MARK 
          REWIND CRFA,R 
          PURGE  CRF         PURGE OLD *CRF*
          CHANGE CRFA        CHANGE NAME FROM *CRFAI* TO *CRFI* 
          RENAME CRFA,CUFN   CHANGE LOCAL FILE NAME ALSO
  
*         REPORT RECOVERY UNIT ERRORS.
  
          SA1    TERR 
          ZR     X1,PTRX     IF NO RECOVERY UNIT ERRORS 
          RJ     CDD         CONVERT TO DISPLAY 
          SA6    PTRI+1 
          SB2    B1+B1
          RJ     ALC         ADVANCE LINE COUNT 
          WRITEW R,PTRI,PTRIL  REPORT NUMBER OF RECOVERY UNIT ERRORS
          REWIND CRFA,R 
          EQ     PTRX        RETURN 
  
*         REWRITE THE *CRF* HEADER. 
  
 PTR6     SX7    TRBUF       RESET BUFFER POINTERS
          SA7    CRF+2
          SA7    A7+B1
          WRITEW CRF,PBUF,TRHWL  WRITE *CRF* HEADER 
          SX1    CIORW
          SX2    B1          ONE PRU TO WRITE 
          SX5    CRF
          SX6    1           PRU ADDRESS
          RJ     FIO         REWRITE HEADER 
          SA1    CUFN        COMPLETE SUBHEADING FOR REPORT 
          SA2    PTRE 
          SA3    A2+B1
          BX6    X2 
          SA6    RFSH+1 
          LX1    24 
          MX0    -24
          BX6    -X0*X1 
          BX6    X6+X3
          SA6    A6+B1
          SA2    PTRJ 
          BX7    X0*X1
          BX7    X2+X7
          SA7    A6+B1
          SX5    DIR-RUDL 
          SA0    B0          COMMENT=RECOVERED
  
*         REPORT RECOVERY UNITS RECOVERED.
  
 PTR7     SX5    X5+RUDL     NEXT DIRECTORY ADDRESS 
          RJ     FRL         FORMAT REPORT LINE 
          SA1    NMRU 
          SX6    X1-1        DECREMENT NUMBER OF RECOVERY UNITS 
          SA6    A1 
          NZ     X6,PTR7     IF MORE RECOVERY UNITS TO REPORT 
          RECALL CRF         WAIT *CRF* I/O TO COMPLETE 
          REWIND CRF,R
          EQ     PTRX        RETURN 
  
 PTRB     CON    0           REFORMAT FLAG
 PTRC     DATA   C* CANNOT DEFINE REFORMATTED FILE - XXXXXXX.*
 PTRE     DATA   C*   RECOVERING - *
 PTRF     DATA   C* REFORMATTING - *
 PTRG     DATA   10H NORMAL 
          DATA   10H ABNORMAL 
 PTRH     DATA   10HSHUTDOWN -
 PTRI     DATA   1L          BLANK LINE 
          DATA   C*         0 RECOVERY UNIT ERRORS ENCOUNTERED.*
 PTRIL    EQU    *-PTRI 
 PTRJ     VFD    12/0,48/8H 
 RRU      SPACE  4,25 
**        RRU - REFORMAT RECOVERY UNIT. 
* 
*         COPY A RECOVERY UNIT FROM *CRFI* TO *CRFAI*.  IN THE
*         PROCESS IT MAY INCREASE THE SIZE OF THE MESSAGE RECORDS OR
*         THE NUMBER OF MESSAGES.  INFORMATION ON THE RECOVERY UNIT IS
*         WRITTEN TO THE REPORT FILE. 
* 
*         ENTRY  (X1) = TERMINAL NAME.
*                (X5) = DIRECTORY ENTRY ADDRESS.
*                (NUMO) = NUMBER OF MESSAGES ON OLD *CRF*.
*                (ADMN) = ADDITIONAL MESSAGES ON NEW *CRF*. 
* 
*         EXIT   RECOVERY UNIT COPIED/REFORMATTED.
* 
*         USES   X - 0, 1, 2, 3, 5, 6, 7. 
*                A - 0, 1, 2, 3, 5, 6, 7. 
*                B - 5, 6 
* 
*         CALLS  FIO, FRL, ZFB. 
* 
*         MACROS MESSAGE, RECALL, READW, WRITEW.
  
  
 RRU      SUBR               ENTRY/EXIT 
          SA2    NUMO        NUMBER MESSAGES ON OLD *CRF*.
          SA3    ADMN        ADDITIONAL MESSAGES ON NEW *CRF*.
          SX6    X2+B1       INCLUDE *SECURE* MESSAGE 
          BX7    X3 
          SA6    RRUA 
          SA7    A6+B1
          BX6    X1 
          SA6    RRUC+2 
          MESSAGE  RRUC,B1   *B-DISPLAY* MESSAGE
          SA0    B0          COMMENT=RECOVERED
          RJ     FRL         FORMAT REPORT LINE 
  
*         COPY RECOVERY UNIT HEADER AND TRANSACTION INPUT.
  
          MX0    -30
          SA1    X5+1 
          BX6    -X0*X1      PRU ADDRESS OF RECOVERY UNIT 
          SX5    CRF         FET ADDRESS
          SX1    CIORD       READ 
          SX2    TRUPL+MRIPL PRU-S TO READ
          RJ     FIO         READ RECOVERY UNIT HEADER
          RECALL X5          WAIT I/O 
          SX7    TRBUF
          SA7    X5+3        SET OUT=FIRST
          READW  CRF,PBUF,TRUWL+MRIWL 
          WRITEW CRFA,PBUF,TRUWL+MRIWL
          SA5    WPMO        MESSGAE SIZE ON OLD *CRF*
  
*         COPY *SECURE* AND *RPUT* MESSAGES.
  
 RRU1     RECALL CRF
          READW  CRF,PBUF,X5 COPY MESSAGE RECORD
          WRITEW CRFA,PBUF,X5 
          SA1    WPMN        MESSAGE SIZE ON NEW *CRF*
          IX1    X1-X5
          ZR     X1,RRU2     IF MESSAGE RECORD SIZE NOT INCREASED 
          SB5    PBUF 
          SB6    X1 
          RJ     ZFB         ZERO FILL BUFFER 
          WRITEW  CRFA,PBUF,X1  INCREASE MESSAGE SIZE 
 RRU2     SA1    RRUA 
          SX6    X1-1 
          SA6    A1 
          NZ     X6,RRU1     IF MORE MESSAGES TO GO 
          SA1    RRUB 
          ZR     X1,RRUX     IF NO ADDITIONAL MESSAGE RECORDS 
          SA5    WPMN        SIZE OF MESSAGE ON NEW *CRF* 
          SB5    PBUF 
          SB6    X5 
          RJ     ZFB         ZERO FILL BUFFER 
 RRU3     WRITEW CRFA,PBUF,X5  WRITE ADDITIONAL MESSAGE RECORDS 
          SA1    RRUB 
          SX6    X1-1 
          SA6    A1 
          NZ     X6,RRU3     IF MORE MESSAGES TO ADD
          EQ     RRUX        RETURN 
  
 RRUA     CON    0           NUMBER MESSAGES ON OLD *CRF* 
 RRUB     CON    0           ADDITIONAL MESSAGES ON NEW *CRF* 
 RRUC     DATA   30H     REFORMATTING - XXXXXXX.
 PRU      SPACE  4,20 
**        PRU - PREALLOCATE RECOVERY UNIT.
* 
*         INITIALIZE A RECOVERY UNIT ON THE *CRF*.  THE RECOVERY
*         UNIT NUMBER IS WRITTEN, FOLLOWED BY ZERO-FILLED, MESSAGE
*         RECORDS.
* 
*         ENTRY  (X1) = TERMINAL NAME.
*                (X5) = FET ADDRESS.
*                (B4) = TRANSACTION STEP. 
*                (CUID) = CURRENT ID. 
* 
*         EXIT   RECOVERY UNIT WRITTEN. 
* 
*         USES   X - 0, 1, 2, 3, 5, 6, 7. 
*                A - 0, 1, 6, 7.
*                B - 5, 6.
* 
*         CALLS  FRL, ZFB.
* 
*         MACROS MESSAGE, WRITEW. 
  
  
 PRU      SUBR               ENTRY/EXIT 
          SB5    PBUF 
          SB6    PBUFL
          RJ     ZFB         ZERO FILL BUFFER 
          BX6    X1 
          SA6    PBUF+TRUNW  STORE TERMINAL NAME
          SX7    B4 
          SA7    PBUF+TRCSW  STORE STEP 
          SA6    PRUA+2 
          SA6    PRUB        STORE IN DUMMY DIRECTORY ENTRY 
          MESSAGE  PRUA,B1   *B-DISPLAY* MESSAGE
          WRITEW X5,PBUF,TRUWL  WRITE RECOVERY UNIT HEADER
          BX6    X6-X6
          SA6    PBUF 
          SA6    A6+B1
          SA1    CUID 
          SA1    TREC+X1
          MX0    -12
          LX1    24 
          BX2    -X0*X1      PRU-S IN USER MESSAGE RECORD 
          LX1    12 
          BX3    -X0*X1      NUMBER OF USER MESSAGE RECORDS 
          SX3    X3+B1       INCLUDE SECURE MESSAGE 
          IX0    X3*X2       PRU-S OF MESSAGE RECORDS 
          SX0    X0+MRIPL    INCLUDE INITIAL INPUT MESSAGE
 PRU1     WRITEW X5,PBUF,64 
          SX0    X0-1 
          NZ     X0,PRU1     IF MORE TO WRITE 
          SA0    2           COMMENT=INITIALIZED
          SX5    PRUB        DIRECTORY ENTRY ADDRESS
          RJ     FRL         FORMAT REPORT LINE 
          EQ     PRUX        RETURN 
  
 PRUA     DATA   30H     INITIALIZING - XXXXXXX.
 PRUB     BSSZ   RUDL        DUMMY DIRECTORY ENTRY
 RFH      SPACE  4,20 
**        RFH - READ FILE HEADER. 
* 
*         READ THE *CRF* HEADER RECORD AND CHECK FOR ANY ERRORS 
*         WHICH WOULD PREVENT CORRECT AND CONSISTENT RECOVERY.
* 
*         ENTRY  *CRF* FET SET UP.
* 
*         EXIT   HEADER VALIDATED.  TAF CHARACTERISTICS STORED. 
* 
*         ERROR  TO *ERR* IF I/O OR LOGICAL ERROR IN HEADER OR IF 
*                NUMBER OF MESSAGES OR MESSAGE SIZE DECREASED.
*                (B5) = FWA OF ERROR MESSAGE. 
* 
*         USES   X - ALL. 
*                A - 1, 2, 3, 4, 6, 7.
*                B - 2, 5.
* 
*         CALLS  CES, FIO, SNM. 
* 
*         MACROS RECALL.
  
  
 RFH      SUBR               ENTRY/EXIT 
  
*         READ *CRF* HEADER.
  
          SX5    CRF         FET ADDRESS
          SX1    CIORD       READ 
          SX2    B1          ONE PRU TO READ
          SX6    B1          PRU ADDRESS
          RJ     FIO         INITIATE READ
          RECALL X5          WAIT *CRF* I/O TO COMPLETE 
          RJ     CES         CHECK ERROR STATUS 
          SB5    RFHC 
          NZ     X1,RFH1     IF I/O ERROR 
  
*         IF INCORRECT *CRF* HEADER, PRINT ERROR MESSAGE ON 
*         RECOVERY REPORT AND ABORT *TAFREC*. 
  
          SA2    TRBUF+TRFIW FILE NAME FOR HEADER 
          SA1    CUFN        FILE NAME FROM RECOVER DIRECTIVE 
          BX3    X2-X1
          NZ     X3,RFH1     IF NOT SAME
          SA2    TRBUF+TRRSW SAVE SHUTDOWN STATUS 
          BX6    X2 
          SA6    SDST 
          SA3    CUID 
  
*         IF *RECOVER* DIRECTIVE HAS REDUCED NUMBER OF MESSAGES 
*         OR MESSAGE SIZE, PRINT ERROR ON RECOVERY REPORT AND 
*         ABORT *TAFREC*. 
  
          SA4    TREC+X3
          MX0    TRNWN
          LX0    TRNWS-59 
          BX5    X0*X2       *MS* FROM *CRF*
          BX1    X0*X4       *MS* FROM RECOVER DIRECTIVE
          IX7    X1-X5
          SB5    RFHA 
          NG     X7,RFH1     IF *MS* HAS BEEN DECREASED 
          LX5    TRNWN-TRNWS-1
          LX1    TRNWN-TRNWS-1
          SX7    X5-MAXMS-1 
          SB5    RFHC 
          PL     X7,RFH1     IF LOGICAL ERROR 
          SX6    X5+TRMWL+77B 
          AX6    6           MESSAGE LENGTH IN PRU-S
          SA6    PPMO 
          LX6    6           MESSAGE LENGTH IN WORDS ROUNDED TO N*64
          SA6    WPMO 
          SX6    X1+TRMWL+77B 
          AX6    6
          LX6    6           SAME FOR NEW *CRF* 
          SA6    WPMN 
          LX0    TRNMS-59+59-TRNWS
          BX5    X0*X2       *NM* FROM *CRF*
          BX6    X0*X4       *NM* FROM *RECOVER* DIRECTIVE
          LX5    TRNMN-TRNMS-1
          LX6    TRNMN-TRNMS-1
          SX7    X5-TRMM-1
          PL     X7,RFH1     IF LOGICAL ERROR 
          IX7    X6-X5
          SA7    ADMN        ADDITIONAL MESSAGES ON NEW *CRF* 
          BX6    X5 
          SA6    NUMO        NUMBER OF MESSAGES ON OLD *CRF*
          SB5    RFHB 
          NG     X7,RFH1     IF *NM* REDUCED
          LX0    -24
          BX6    X0*X2       NUMBER OF RECOVERY UNITS 
          SA6    NMRU 
          EQ     RFHX        RETURN 
  
*         *CRF* HEADER ERROR OR *RECOVER* DIRECTIVE INCORRECT.
  
 RFH1     SB2    1RX
          SA1    CUFN 
          RJ     SNM         SET NAME IN MESSAGE
          EQ     ERR         ERROR
  
 RFHA     DATA   C* MS REDUCTION INCORRECT - XXXXXXX.*
 RFHB     DATA   C* NM REDUCTION INCORRECT - XXXXXXX.*
 RFHC     DATA   C* CRF HEADER ERROR - XXXXXXX.*
 BDR      SPACE  4,50 
**        BDR - BUILD DIRECTORY OF RECOVERY UNITS.
* 
*         READ THE *CRF* AND CREATE A SORTED DIRECTORY OF 
*         RECOVERY UNITS.  THE AUTOMATIC RECOVERY BIT IS SET IN THE 
*         TST FOR EACH ACTIVE RECOVERY UNIT, IF TAF WAS 
*         SHUT DOWN ABNORMALLY. 
* 
*         DIRECTORY ENTRY FORMAT. 
* 
*T  W1    42/TERMINAL,6/ TY,12/ STEP
*T, W2    1/ I,1/ E,1/ D,1/ C,2/ ,24/ TSEQ,30/ DA 
*T, W3    60/ DATE
*T, W4    60/ TIME
* 
*         WORD 1. 
*                TERMINAL = TERMINAL NAME.
*                TY       = TRANSACTION TYPE. 
*                STEP     = TRANSACTION STEP. 
* 
*         WORD 2. 
*                I        = TERMINAL INACTIVE FLAG. 
*                E        = ERROR IN RECOVERY UNIT. 
*                D        = *CDCS* MAY BE USED BY THE TRANSACTION.
*                C        = *CRM* MAY BE USED BY THE TRANSACTION. 
*                TSEQ     = TRANSACTION SEQUENCE NUMBER.
*                DA       = RANDOM PRU ADDRESS OF RECOVERY UNIT.
* 
*         WORD 3. 
*                DATE     = DATE OF LAST RECORDED TRANSACTION.
* 
*         WORD 4. 
*                TIME     = TIME OF LAST RECORDED TRANSACTION.
* 
* 
*         ENTRY  (NMRU) = NUMBER OF RECOVERY UNITS ON OLD *CRF*.
*                (NUMO) = NUMBER OF USER MESSAGES ON OLD *CRF*. 
*                (WPMO) = WORDS PER USER MESSAGE ON OLD *CRF*.
* 
*         EXIT   (X6) = 0 IF REFORMAT NOT NECESSARY.
*                (B5) = FWA OF ERROR MESSAGE IF ERROR.
*                DIRECTORY BUILT. 
*                TO *ERR* IF I/O OR LOGICAL ERROR OR
*                IF ACTIVE RECOVERY UNIT DELETED FROM NETWORK FILE. 
* 
*         USES   X - ALL. 
*                A - ALL. 
*                B - 2, 3, 4, 5.
* 
*         CALLS  CES, FIO, RMR, SDR, SNM. 
* 
*         MACROS MESSAGE, RECALL. 
  
  
 BDR      SUBR               ENTRY/EXIT 
          SA1    NMRU 
          SA0    X1          NUMBER OF RECOVERY UNITS 
          BX6    X6-X6       CLEAR ERROR FLAG 
          SA6    BDRE 
  
*         COMPUTE PRU-S IN RECOVERY UNIT TO READ. 
  
          SA3    NUMO        NUMBER MESSAGES ON OLD *CRF* 
          SA5    WPMO        WORDS PER MESSAGE ON OLD *CRF* 
          BX6    X5 
          AX6    6           PRU-S PER MESSAGE
          SX3    X3+B1       INCLUDE *SECURE* MESSAGE 
          IX6    X6*X3
          SX6    X6+B1       INCLUDE RECOVERY UNIT HEADER 
          SX6    X6+MRIPL    INCLUDE INITIAL INPUT
          SA6    BDRA        PRU-S PER RECOVERY UNIT
          IX7    X3*X5       WORDS IN ALL MESSAGES
          SX7    X7+MRIWL    INCLUDE INITIAL INPUT
          SA7    A6+B1
          SX7    DIR         START OF DIRECTORY 
          SA7    BDRD 
          SX5    CRF
          SX6    2
          SA6    BDRC        INITIALIZE DISK ADDRESS
  
*         READ RECOVERY UNITS.  RECOVERY UNITS BEGIN AT PRU 2.
  
 BDR1     SX2    B1+         ONE PRU TO READ
          SX1    CIORD
          RJ     FIO         READ RECOVERY UNIT HEADER
          RECALL X5          WAIT I/O 
          RJ     CES
          ZR     X1,BDR4     IF NO I/O ERROR
  
*         AN I/O ERROR OR BAD DATA HAS BEEN DETECTED ON THE *CRF*.
*         IF ERROR OVERRIDE HAS NOT BEEN SET, REPORT ERROR AND
*         ABORT *TAFREC*. 
  
 BDR2     SA1    OVRD 
          SA2    TERR 
          SX6    X2+B1       INCREMENT ERROR COUNT
          SA6    A2 
          SA6    BDRE        INDICATE REFORMAT NECESSARY
          NZ     X1,BDR11    IF ERROR OVERIDE SET 
 BDR3     SB2    1RX         *CRF* RECOVERY UNIT ERROR
          SB5    BDRG 
          SA1    CUFN        CURRENT FILE NAME
          RJ     SNM
          EQ     ERR         PROCESS ERROR
  
 BDR4     SA2    TRBUF+TRUNW RECOVERY UNIT NAME 
          BX6    X2 
          SA6    BDRH+2 
          SA1    HTST        HIGHEST TST ORDINAL
          SA3    LTST        LOWEST TST ORDINAL 
          SB2    X1 
          SB3    X3 
          MX0    TSTNN
 BDR5     SA3    B3+B1       SEARCH TST FOR TERMINAL NAME 
          BX6    X0*X3
          BX6    X6-X2
          ZR     X6,BDR6     IF FOUND 
          SB3    B3+TSTLLE
          SB4    B2-B3
          GE     B4,BDR5     IF NOT END OF TST
  
*         A TERMINAL HAS BEEN DELETED FROM THE NETWORK FILE.
*         IF TERMINAL LAST RAN A NON RECOVERABLE TRANSACTION, DELETE
*         RECOVERY UNIT.  OTHERWISE REPORT ERROR. 
  
          SA2    TRBUF+TRCSW STEP WORD
          MX0    -TRCSN 
          BX4    -X0*X2 
          SX6    B1          SET REFORMAT FLAG
          SA6    BDRE 
          SA1    NMRU 
          SX6    X1-1        DECREMENT NUMBER OF RECOVERY UNITS 
          SA6    A1 
          SA1    TDEL 
          SX6    X1+B1       INCREMENT COUNT OF DELETED RECOVERY UNITS
          SA6    A1+
          ZR     X4,BDR11    IF NON RECOVERABLE TRANSACTION 
          SB2    1RX         ERROR - ACTIVE RECOVERY UNIT(S) DELETED. 
          SB5    -BDRF
          SB3    BDRI 
          SA1    BDRH+2      RECOVERY UNIT NAME 
          RJ     SNM         SET NAME IN MESSAGE
          MESSAGE  BDRI,0,R 
          WRITEW R,BDRI,5    * ACTIVE RECOVERY UNIT(S) DELETED.*
          EQ     BDR11       CONTINUE PROCESSING NEXT UNIT
  
*         RECOVER TERMINAL.  INDICATE RECOVERY PROCESSING NEEDED
*         FOR TERMINAL IN TST.
  
 BDR6     MESSAGE  BDRH,B1   *B-DISPLAY* MESSAGE
          SA2    TRBUF+TRCSW STEP WORD
          MX0    -TRCSN 
          BX2    -X0*X2 
          SB5    X2-CSCD
          ZR     B5,BDR7     IF *CDCS* DOWN 
          SB5    X2-CSTI
          ZR     B5,BDR7     IF RECOVERABLE TRANSACTION/JOB INPUT 
          SB5    X2-CSBC
          ZR     B5,BDR7     IF BEGIN/COMMIT ID-S LOGGED
          SB5    X2-CSND
          ZR     B5,BDR7     IF NAM DOWN
          EQ     BDR8        RECOVERY BIT NOT SET 
  
*         SET AUTOMATIC RECOVERY BIT. 
  
 BDR7     SA3    A3-TSTNW+TSARW 
          MX6    TSARN
          LX6    TSARS-59 
          BX6    X3+X6       SET AUTO RECOVERY BIT
          SA6    A3 
  
*         BUILD DIRECTORY ENTRY.
  
 BDR8     SA1    BDRD 
          SA2    BDRH+2      TERMINAL NAME
          BX6    X2 
          SA2    TRBUF+TRCNW
          MX0    -TRCNN 
          BX7    -X0*X2      TRANSACTION SEQUENCE NUMBER
          LX7    30 
          SA2    BDRC        DISK ADDRESS 
          BX7    X7+X2
          SA3    TRBUF+TRCSW
          MX0    -TRCSN 
          BX4    -X0*X3      CURRENT TRANSACTION STEP 
          SX0    X4-TSTPL 
          PL     X0,BDR2     IF TRANSACTION STEP NOT IN TABLE 
          NZ     X4,BDR9     IF NOT NONRECOVERABLE TRANSACTION
          MX2    1
          BX7    X7+X2       ADD INACTIVE FLAG
 BDR9     BX6    X6+X4       ADD STEP TO DIRECTORY
          LX3    TRTYN-TRTYS-1
          MX0    -TRTYN 
          BX4    -X0*X3 
          SA3    TNRC+X4
          SX0    X4-TTYPL-1 
          PL     X0,BDR2     IF TRANSACTION TYPE NOT IN TABLE 
          LX4    17-5 
          BX6    X6+X4       ADD TYPE TO DIRECTORY
          SA6    X1 
          SA7    A6+B1
          SX6    X3+B1       INCREMENT COUNT OF RECOVERED TYPES 
          SA6    A3 
          SA3    TRBUF+TRCDW DATE 
          SA4    TRBUF+TRCTW TIME 
          BX6    X3 
          BX7    X4 
          SA6    A7+B1
          SA7    A6+B1
  
*         READ ALL MESSAGES FOR RECOVERY UNIT TO HELP AVOID I/O 
*         ERRORS DURING TRANSACTION PROCESSING. 
  
          SA2    BDRB        WORDS IN ALL MESSAGES
          RJ     RMR         READ MESSAGE RECORDS 
          SA2    BDRD 
          ZR     X1,BDR10    IF NO ERROR
  
*         AN I/O ERROR OCCURRED ON A MESSAGE RECORD IN THE
*         RECOVERY UNIT.  IF NO ERROR OVERRIDE, REPORT ERROR ON 
*         RECOVERY REPORT AND ABORT *TAFREC*.  OTHERWISE, REFORMAT
*         THE *CRF* AND INDICATE THAT RECOVERY IS NO LONGER AVAILABLE 
*         FOR RECOVERY UNIT.
  
          SA1    OVRD 
          ZR     X1,BDR3     IF ERROR OVERRIDE NOT SET
          SA1    X2+B1
          MX3    1
          LX3    -1 
          BX6    X1+X3       SET ERROR BIT
          SA6    A1 
          SA1    TERR 
          SX6    X1+B1       INCREMENT ERROR COUNT
          SA6    A1+
          SA6    BDRE        INDICATE REFORMAT NECESSARY
 BDR10    SX6    X2+RUDL     UPDATE DIRECTORY ADDRESS 
          SA6    BDRD 
 BDR11    SA0    A0-B1       NUMBER OF RECOVERY UNITS LEFT
          SA2    BDRC        UPDATE PRU ADDRESS OF NEXT RECOVERY UNIT 
          SX7    A0 
          SA3    BDRA        INCREMENT
          IX6    X2+X3
          SA6    A2 
          NZ     X7,BDR1     IF MORE RECOVERY UNITS 
  
*         SORT DIRECTORY OF RECOVERY UNITS BY TERMINAL NAME.
  
          SA1    BDRD 
          SX1    X1-DIR      DIRECTORY LENGTH 
          SB3    DIR         FWA OF DIRECTORY 
          SB4    RUDL        DIRECTORY ENTRY LENGTH 
          RJ     SDR         SORT DIRECTORY 
  
*         REFORMAT *CRF* IF NUMBER OF TERMINALS CHANGED, OR IF
*         NUMBER OF USER MESSAGES OR MESSAGE SIZE INCREASED, OR 
*         IF I/O OR DATA ERROR OCCURRED.
  
          SA1    BDRE        ERROR INDICATOR
          BX6    X1 
          NZ     X6,BDRX     IF REFORMAT NECESSARY
          SA2    NMRU        NUMBER OF RECOVERY UNITS 
          SA3    HTST 
          SA4    LTST 
          IX3    X3-X4
          SX4    TSTLLE 
          IX3    X3/X4
          SX3    X3+B1       NUMBER OF TST ENTRIES
          IX6    X3-X2
          NZ     X6,BDRX     IF REFORMAT NECESSARY
          SA1    CUID        CURRENT ID 
          SA1    TREC+X1
          MX0    12 
          LX0    36 
          BX6    X0*X1       NUMBER MESSAGES ON *RECOVER* DIRECTIVE 
          LX6    -24
          SA2    NUMO        NUMBER USER MESSAGES ON OLD *CRF*
          IX6    X6-X2
          NZ     X6,BDRX     IF REFORMAT NECESSARY
          LX0    12 
          BX6    X0*X1
          LX6    -36         PRU-S PER USER MESSAGE FROM *RECOVER*
          SA2    PPMO        PRU-S PER USER MESSAGE ON OLD *CRF*
          IX6    X6-X2
          EQ     BDRX        RETURN 
  
 BDRA     CON    0           PRU-S PER RECOVERY UNIT
 BDRB     CON    0           WORDS IN ALL MESSAGE RECORDS 
 BDRC     CON    0           CURRENT DISK ADDRESS 
 BDRD     CON    0           CURRENT DIRECTORY ADDRESS
 BDRE     CON    0           *CRF* REFORMAT FLAG
 BDRF     DATA   C* RECOVERABLE RUN UNIT DELETED - XXXXXXX.*
 BDRG     DATA   C* CRF RUN UNIT ERROR - XXXXXXX.*
 BDRH     DATA   30H       RECOVERING - XXXXXXX.
 BDRI     BSSZ   5
 RMR      SPACE  4,20 
**        RMR - READ MESSAGE RECORDS. 
* 
*         READ MESSAGE RECORDS IN A RECOVERY UNIT TO CHECK FOR
*         I/O ERRORS. 
* 
*         ENTRY  (X2) = NUMBER OF WORDS IN ALL MESSAGE RECORDS. 
*                (X5) = FET ADDRESS.
* 
*         EXIT   (X1) = 0 IF NO ERRORS ENCOUNTERED. 
* 
*         USES   X - 1, 2, 6, 7.
*                A - 2, 7.
* 
*         CALLS  CES, FIO.
* 
*         MACROS RECALL.
  
  
 RMR      SUBR               ENTRY/EXIT 
          SX7    X2-TRBUFL/100B*100B
          SA7    RMRA 
          AX2    6           CONVERT TO PRU-S 
          NG     X7,RMR1     IF LESS THAN A BUFFER SIZE 
          NZ     X7,RMR2     IF NOT SAME AS BUFFER SIZE 
 RMR1     SX6    B0 
          SX1    CIORD
          RJ     FIO         READ MESSAGE RECORDS 
          RECALL X5          WAIT I/O 
          RJ     CES         CHECK ERROR STATUS 
          EQ     RMRX        RETURN 
  
 RMR2     SX6    B0+
          SX1    CIORD
          SX2    TRBUFL/100B
          RJ     FIO
          RECALL X5          WAIT I/O 
          RJ     CES         CHECK ERROR STATUS 
          NZ     X1,RMRX     IF ERROR 
          SA2    RMRA 
          SX7    X2-TRBUFL/100B*100B
          AX2    6           PRU-S
          NG     X7,RMR1     IF LESS THAN A BUFFER FULL 
          ZR     X7,RMR1     IF EXACTLY A BUFFER FULL 
          SA7    A2 
          EQ     RMR2        READ MORE MESSAGE RECORDS
  
 RMRA     CON    0           WORDS IN ALL MESSAGE RECORDS 
 FRL      SPACE  4,20 
**        FRL - FORMAT REPORT LINE. 
* 
*         EXTRACT INFORMATION FROM THE DIRECTORY ENTRY AND FORMAT 
*         A PRINT LINE FOR THE REPORT FILE. 
* 
*         ENTRY  (X5) = ADDRESS OF THE DIRECTORY ENTRY. 
*                (A0) = COMMENT INDEX.
* 
*         EXIT   LINE WRITTEN TO REPORT FILE. 
* 
*         USES   X - 0, 1, 2, 6, 7. 
*                A - 1, 2, 6, 7.
*                B - 2. 
* 
*         CALLS  ALC, CDD, SFN. 
* 
*         MACROS WRITEW.
  
  
 FRL      SUBR               ENTRY/EXIT 
          MX0    42 
          SA1    X5 
          BX1    X0*X1       TERMINAL NAME
          RJ     SFN         SPACE FILL NAME
          LX6    53-59       USE BLANK FOR PRINTER CONTROL
          SA6    RWSA 
          MX0    24 
          LX0    53-59
          SA1    X5+B1
          BX1    X0*X1
          LX1    23-53
          NZ     X1,FRL1     IF TRANSACTION SEQUENCE NUMBER PRESENT 
          SA1    BLNK 
          BX6    X1 
          SA6    RWSA+1 
          SA6    A6+B1
          SA6    A6+B1
          SA6    A6+B1
          SA6    A6+B1
          EQ     FRL2        PRINT COMMENT
  
 FRL1     RJ     COD         CONVERT TO DISPLAY 
          LX6    12 
          MX0    48 
          SX2    2RB
          BX6    X0*X6
          BX6    X6+X2
          SA6    RWSA+1 
          MX0    6
          LX0    18 
          SA1    X5 
          BX2    X0*X1
          LX2    -12         TRANSACTION TYPE 
          SA2    TTYP+X2
          BX6    X2 
          SA6    A6+B1
          MX0    12 
          LX0    12 
          BX2    X0*X1       TRANSACTION STEP 
          SA2    TSTP+X2
          BX6    X2 
          SA6    A6+B1
          SA1    X5+2        DATE 
          SA2    A1+B1       TIME 
          BX7    X1 
          BX6    X2 
          SA7    A6+B1
          SA6    A7+B1
 FRL2     SA1    FRLA+A0     GET COMMENT
          SA2    A1+B1
          BX6    X1 
          BX7    X2 
          SA6    A6+B1
          SA7    A6+B1
          SB2    B1 
          RJ     ALC         ADVANCE LINE COUNT 
          WRITEW R,RWSA,RWSAL 
          EQ     FRLX        RETURN 
  
*         TABLE OF COMMENTS FOR REPORT FILE (12 CHARACTERS MAXIMUM).
  
 FRLA     BSS    0
          LOC    0
          DATA   C*RECOVERED* 
          DATA   C*INITIALIZED* 
          LOC    *O 
 STN      SPACE  4,20 
**        STN - SEARCH TERMINAL NAME. 
* 
*         SEARCH A TABLE FOR THE REQUIRED TERMINAL NAME.
* 
*         ENTRY  (X1) = TERMINAL NAME.
*                (B3) = FWA OF TABLE. 
*                (B4) = LENGTH OF ENTRY.
*                (B5) = LWA OF TABLE + 1. 
* 
*         EXIT   (X5) = ADDRESS OF ENTRY. 
*                     = 0 IF TERMINAL NOT FOUND.
*                (X1) = TERMINAL NAME.
* 
*         USES   X - 0, 1, 2, 4, 5, 6, 7. 
*                A - 2. 
*                B - 3, 5.
  
  
 STN      SUBR               ENTRY/EXIT 
          LX1    59-17
          MX0    42          MASK FOR TERMINAL NAME 
          BX5    X5-X5
          EQ     STN2        ENTER LOOP 
  
*         USE BINARY SEARCH TO FIND TERMINAL. 
  
 STN1     SB3    A2+B4       SET NEW LOW LIMIT
 STN2     SX7    B5-B3       FIND MIDDLE
          SX4    B4 
          IX7    X7/X4
          AX7    1
          SX4    B4 
          IX7    X4*X7
          SA2    B3+X7       READ AN ENTRY
          BX4    X0*X2
          LX4    42 
          IX6    X4-X1
          ZR     X6,STN3     IF ENTRY FOUND 
          ZR     X7,STN4     IF END OF SEARCH 
          NG     X6,STN1     IF TOO LOW IN TABLE
          SB5    A2          SET NEW UPPER LIMIT
          EQ     STN2        NEXT ENTRY 
  
 STN3     SX5    A2          ADDRESS OF ENTRY 
 STN4     LX1    17-59       REPOSITION TERMINAL NAME 
          EQ     STNX        RETURN 
 SDR      SPACE  4,15 
**        SDR - SORT DIRECTORY OF RECOVERY UNITS. 
* 
*         ENTRY  (B3) = FWA OF TABLE. 
*                (B4) = LENGTH OF ENTRY.
*                (X1) = LENGTH OF TABLE.
* 
*         EXIT   DIRECTORY SORTED BY TERMINAL NAME. 
* 
*         USES   X - ALL. 
*                A - 3, 6.
*                B - 2, 4, 6, 7.
  
  
 SDR      SUBR               ENTRY/EXIT 
          MX0    42 
          SX2    B4 
          MX4    12 
          BX3    X1 
          IX3    X3/X2       NUMBER OF ENTRIES
          SX2    B4 
          NX6,B2 X3 
          AX4    X4,B2
          SX1    B3+X1
          BX5    X5-X5
          EQ     SDR7        ENTER SORT LOOP
  
 SDR1     PL     X5,SDR3     IF NO SWAP 
          SB7    X2          NUMBER OF WORDS TO MOVE
          SB6    B6+B2
 SDR2     SB7    B7-B1       DECREMENT INDEX
          SA3    SDRA+B7
          BX6    X3 
          SA6    B6+B7
          NZ     B7,SDR2     IF NOT END OF ENTRY
 SDR3     SB4    B4+X2
          SX3    B4+
          IX3    X3-X1
          BX5    X5-X5
          ZR     X3,SDR7     IF END OF TABLE
          SB7    X2          NUMBER OF WORDS TO SAVE
 SDR4     SB7    B7-B1
          SA3    B4+B7
          BX6    X3 
          SA6    SDRA+B7
          NZ     B7,SDR4     IF NOT END OF ENTRY
          SB6    B4-B2
          BX7    X0*X3
          LX7    42          SHIFT SO NO SIGN BIT 
 SDR5     SA3    B6+
          BX6    X0*X3
          LX6    42          SHIFT SO NO SIGN BIT 
          IX6    X7-X6
          PL     X6,SDR1     IF IN ORDER
          SB7    X2 
          SX5    B6+B2
 SDR6     SB7    B7-B1
          SA3    B6+B7
          BX6    X3 
          SA6    X5+B7
          NZ     B7,SDR6     IF NOT END OF ENTRY
          MX5    1           INDICATE ENTRY REPLACED
          SB6    B6-B2
          GE     B6,B3,SDR5  IF IN BOUNDS 
          EQ     SDR1        SELECT NEXT ENTRY
  
 SDR7     AX4    1
          BX3    -X4
          IX7    X2*X3
          SB2    X7 
          SB7    X2 
          SB4    B3+X7
          NZ     X4,SDR4     IF MORE TO SORT
          EQ     SDRX        RETURN 
  
 SDRA     BSSZ   RUDL        TEMPORARY STORAGE
 GHL      SPACE  4,15 
**        GHL - GET HIGHEST/LOWEST TST ENTRY ADDRESSES. 
* 
*         CALCULATE THE HIGHEST AND LOWEST TST ADDRESSES FOR
*         THE REQUIRED NETWORK FILE.
* 
*         ENTRY  (CUID) = CURRENT ID. 
* 
*         EXIT   (X6) = HIGHEST ADDRESS.
*                (X7) = LOWEST ADDRESS. 
* 
*         USES   X - 0, 1, 2, 3, 4, 6, 7. 
*                A - 1, 3.
  
  
 GHL      SUBR               ENTRY/EXIT 
          SA1    CUID 
          SX3    TTFTE       LENGTH OF TST HEADING ENTRY
          IX3    X3*X1
          SA3    TSTHD+X3    GET HIGHEST TST ORDINAL FOR ID 
          MX0    -TFHON 
          LX3    TFHON-1-TFHOS  RIGHT JUSTIFY HIGHEST ORDINAL 
          BX2    -X0*X3      HIGHEST ORDINAL
          SX4    B1+
 GHL1     SX1    X1-1 
          NG     X1,GHL2     IF START OF TST HEADER REACHED 
          SA3    A3-TTFTE 
          ZR     X3,GHL1     IF NO NETWORK FILE FOR THIS ID 
          LX3    TFHON-1-TFHOS  RIGHT JUSTIFY HIGHEST ORDINAL 
          BX4    -X0*X3      HIGHEST ORDINAL OF PREVIOUS NETWORK FILE 
          SX4    X4+1        LOWEST ORDINAL FOR THIS NETWORK FILE 
 GHL2     SX0    TSTLLE 
          IX2    X0*X2       CONVERT TO OFFSET
          IX4    X0*X4
          SX0    TST
          IX6    X0+X2       CONVERT TO ABSOLUTE ADDRESS
          IX7    X0+X4
          EQ     GHLX        RETURN 
 ZFB      SPACE  4,10 
**        ZFB - ZERO FILL BUFFER. 
* 
*         ENTRY  (B5) = FWA OF BUFFER.
*                (B6) = NUMBER OF WORDS.
* 
*         USES   X - 6. 
*                A - 6. 
*                B - 5, 6.
  
  
 ZFB      SUBR               ENTRY/EXIT 
          EQ     B6,ZFBX     IF NONE
          SX6    B0+
 ZFB1     SA6    B5 
          SB5    B5+B1
          SB6    B6-B1
          NE     B6,ZFB1     IF MORE TO DO
          EQ     ZFBX        RETURN 
 ALC      SPACE  4,15 
**        ALC - ADVANCE LINE COUNT. 
* 
*         ADVANCE THE LINE COUNT OF THE REPORT FILE AND IF
*         NECESSARY, PRINT THE HEADING AND SUBHEADING ON A NEW PAGE.
* 
*         ENTRY  (B2) = NUMBER OF LINES TO ADVANCE. 
* 
*         USES   X - 1, 2, 6, 7.
*                A - 1, 2, 6. 
* 
*         CALLS  CDD. 
* 
*         MACROS WRITEW.
  
  
 ALC      SUBR               ENTRY/EXIT 
          SA1    LCNT        CURRENT LINE COUNT 
          SX6    X1+B2
          SX7    X6-LINP
          PL     X7,ALC1     IF PAGE FULL 
          SA6    A1 
          EQ     ALCX        RETURN 
  
 ALC1     SX6    B2+5        LINE COUNT PLUS HEADING
          SA2    SBHD+2 
          IX6    X6+X2       INCLUDE SUBHEADING LINE COUNT
          SA6    A1 
          SA1    PCNT 
          SX1    X1+B1       INCREMENT PAGE COUNT 
          BX6    X1 
          SA6    A1+
          RJ     CDD         CONVERT TO DISPLAY CODE
          BX6    X4 
          SA6    HEAD1
          WRITEW R,HEAD,HEADL  WRITE NEW HEADING
          SA1    SBHD        SUBHEADING ADDRESS 
          SA2    A1+B1       LENGTH 
          WRITEW R,X1,X2
          EQ     ALCX        RETURN 
 ERR      SPACE  4,10 
**        ERR - ERROR PROCESSOR.
* 
*         ISSUE A DAYFILE ERROR MESSAGE AND ABORT *TAFREC*. 
* 
*         ENTRY  (B5) = FWA OF ERROR MESSAGE. 
* 
*         MACROS ABORT, MESSAGE, SETPFP, WRITER.
  
  
 ERR      MESSAGE  B5,0,R    ISSUE SPECIFIC ERROR MESSAGE 
          MESSAGE  ERRA,0,R 
          SA1    DFFM        DEFAULT FAMILY 
          SX0    10B         *SETPFP* FLAGS 
          BX6    X0+X1
          SA6    PFPA        *SETPFP* CALL BLOCK
          SETPFP PFPA        RESET TO DEFAULT FAMILY
          WRITER  R,R        FLUSH REPORT FILE BUFFER 
          ABORT 
  
 ERRA     DATA   C* CRF RECOVERY/INITIALIZATION ABORTED.* 
          SPACE  4,10 
*         COMMON DECKS. 
  
          LIST   X
*CALL     COMKFIO 
          LIST   -X 
          SPACE  4,10 
*CALL     COMCCDD 
*CALL     COMCCIO 
*CALL     COMCCOD 
*CALL     COMCCPM 
*CALL     COMCDXB 
*CALL     COMCLFM 
*CALL     COMCPFM 
*CALL     COMCRDW 
*CALL     COMCSFN 
*CALL     COMCSNM 
*CALL     COMCSYS 
*CALL     COMCWTC 
*CALL     COMCWTW 
*CALL     COMCZTB 
          TITLE  *TAFREC* PRESET ROUTINES.
 PRS      SPACE  4,10 
**        PRS - PRESET *TAFREC*.
* 
*         PERFORM PRESET PROCESSING FOR *TAFREC*. 
*         PRESET CONSISTS OF -
* 
*                PROCESSING THE TCF.
*                SETTING THE *K-DISPLAY*. 
*                PROCESSING THE NETWORK FILE(S).
*                ATTACHING OR DEFINING THE CRF(S).
* 
*         CALLS  CDD, COD, IIM, PNF, PRK, PTF, RKD, SKD,
*                SRS, ZFB.
* 
*         MACROS CLOCK, DATE, GETPFP, READ, READW, REWIND,
*                STATUS, WRITEW.
  
  
 PRS      SUBR
          SB1    1
          SX7    B0+
          SA7    VECSC       CLEAR CURRENT ECS ADDRESS
          SA7    VTST        SET *O-DISPLAY* INACTIVE 
          DATE   DATE 
          CLOCK  TIME 
          GETPFP PFPA        GET PERMANENT FILE PARAMETERS
          SA1    PFPA 
          BX6    X1 
          SA6    DFFM 
          SX7    TTFTL
          SA7    TSTLW       PRESET TST LENGTH
          SA1    DATE 
          SA2    TIME 
          BX6    X1 
          BX7    X2 
          SA6    PRSC 
          SA7    A6+B1
          WRITEW R,PRSB,PRSBL  WRITE REPORT FILE BANNER 
          SX7    PMSG        ADDRESS OF *PFM* ERROR MESSAGES
          SA7    CRF+CFPW 
          SA7    CRFA+CFPW
          SA7    TCF+CFPW 
          SA7    N+CFPW 
          SB5    TSTHD       FWA OF TST HEADER
          SB6    TTFTL+TSTLLE  HEADER LENGTH + FIRST TST ENTRY
          RJ     ZFB         ZERO FILL BUFFER 
  
*         DETERMINE IF RESTART. 
  
          SA1    B0          POSITION TO SENSE SWITCH 3 
          LX1    59-8 
          PL     X1,PRS1     IF RECOVERY MODE NOT SELECTED
          REWIND TIF,R
          READ   TIF
          READW  TIF,PRSA,1  READ WORD ONE INTO TEMPORARY LOCATION
          SX6    B1          SET RESTART FLAG 
          LX6    TIRFS-0
          SA6    PRSA 
          READW  TIF,VLOCS,VLOCL  RESTORE POINTERS
          SX7    B0+
          SA7    VTST        SET *O-DISPLAY* INACTIVE 
          SA7    VTOT        CLEAR *TOTAL* LOAD FLAG
          SA7    VECSC       CLEAR CURRENT EXTENDED MEMORY ADDRESS
          REWIND TIF
          SA7    VINT        CLEAR *TAFXXX1* COMPLETE FLAG
          SA1    PRSE        INDICATE RESTART 
          BX6    X1 
          SA6    HEAD2
          RJ     RKD         SET UP RESTART *K-DISPLAY* 
          EQ     PRS2        PROCESS TCF
  
*         SET UP INITIAL *TAFREC* VALUES. 
  
 PRS1     BX7    X7-X7       CLEAR *TAFXXX1* COMPLETE FLAG
          SA7    VINT 
          SX6    NSCP 
          SX7    NCMB 
          LX6    41-17
          LX7    41-17
          SA6    VNSCP       NUMBER OF SUBCONTROL POINTS
          SA7    VNCMB       NUMBER OF COMMUNICATION BLOCKS 
          SX7    SCMFL
          SA7    VMFL        MAXIMUM FL FOR SUBCONTROL POINTS 
          SX7    ECSFL       MAXIMUM EXTENDED MEMORY FOR *TAF*
          SX6    RECDF
          SA6    VREC        USER RECOVERY FLAG DEFAULT VALUE 
          SA1    PRSD 
          BX6    X1 
          LX7    9           CORRECTLY POSITION *ECSFL* 
          SA7    VECS 
          SA6    VTFL        SYSTEM TASK LIBRARY FILE NAME
          SX1    CMMBFL      BASE FL FOR CMM
          SX6    CMMEFL      EXPANDABLE FL FOR CMM
          LX6    18 
          BX7    X1+X6
          SX1    CMMTFL      TARGET FL FOR CMM
          LX1    36 
          BX7    X1+X7
          SA7    VCMM        SAVE CMM FL
  
*         SAVE INITIAL *TIF* VALUES IN CASE OF ABORT. 
  
          REWIND TIF,R
          WRITEW TIF,PRSA,1  STATUS WORD
          WRITEW TIF,VLOCS,VLOCL  LOW CORE SYMBOLS
          WRITER TIF,R       FLUSH BUFFER 
  
*         PROCESS *TAF* CONFIGURATION PARAMETERS. 
  
 PRS2     RJ     PTF         PROCESS TAF CONFIGURATION FILE 
          ZR     X2,PRS3     IF *K-DISPLAY* NOT REQUESTED 
          SX3    KPRS 
          RJ     PRK         PRESET K-DISPLAY BUFFER
          RJ     SKD         SET *K-DISPLAY*
  
*         COMPUTE NUMBER OF C.B.-S RESERVED FOR SMALL INPUT.
  
 PRS3     SB5    -NLIN*NCBC  NUMBER OF C.B. FOR LARGE INPUT 
          SA2    VNCMB       NUMBER OF C.B.-S 
          LX2    17-41
          SX6    X2+B5       COMPUTE *VNSIN*
          SX6    X6-RSCMB 
          LX6    41-17
          SB5    PRSG 
          NG     X6,ERR      IF NOT ENOUGH C.B.-S 
          SA6    VNSIN
  
*         PROCESS NETWORK FILES.
  
          SA1    CUID 
          SX2    MAXNF
          SX1    X1+B1       NEXT ID
          IX2    X2-X1
          ZR     X2,PRS4     IF ALL ID-S PROCESSED
          SX2    2
          IX5    X2*X1
          BX6    X1 
          SA6    A1 
          SA1    TFAM+X5+1
          ZR     X1,PRS3     IF NO NETWORK FILE 
          RJ     PNF         PROCESS NETWORK FILE 
          SX1    IPTAR
          ZR     X1,PRS3     IF AUTO RECOVERY DISABLED
          RJ     SRS         SET RECOVERY STATUS
          EQ     PRS3        NEXT ID
  
*         WRITE LOW CORE POINTERS.
  
 PRS4     REWIND TIF,R
          WRITEW TIF,PRSA,1  FALGS FOR *TAF1* 
          WRITEW TIF,VLOCS,VLOCL  WRITE LOW CM POINTERS 
  
*         ISSUE DAYFILE MESSAGES. 
  
 PRS6     MESSAGE  IIMA      * INITIALIZATION OPTIONS.* 
          SA1    VNCMB       NUMBER OF COMMUNICATION BLOCKS 
          LX1    -24
          RJ     CDD         CONSTANT TO DECIMAL DISPLAY
          SB5    IIMB        *  K.CMB=XX.*
          BX1    X6 
          LX1    48 
          RJ     IIM         ISSUE INITIALIZATION MESSAGE 
          SA1    VECS        EXTENDED MEMORY FL 
          LX1    -9 
          RJ     COD         CONSTANT TO OCTAL DISPLAY
          BX1    X6 
          LX1    42 
          SB5    IIMC        *  K.ECS=XXXK.*
          RJ     IIM         ISSUE INITIALIZATION MESSAGE 
          SA1    VMFL        TAF MAXIMUM FL 
          RJ     COD         CONSTANT TO OCTAL DISPLAY
          BX1    X6 
          LX1    24 
          SB5    IIME        *  K.MFL=XXXXXXB.* 
          RJ     IIM         ISSUE INITIALIZATION MESSAGE 
          SA2    VREC        GET RECOVERY FLAG
          SX1    3L NO
          LX1    42 
          ZR     X2,PRS7     IF USER RECOVERY NOT SET 
          SX1    3LYES
          LX1    42 
          SX2    X2 
          NZ     X2,PRS7     IF USER RECOVERY SET 
          SX1    3LCRM
          LX1    42 
 PRS7     SB5    IIMF        *  K.REC=XXX.* 
          RJ     IIM         ISSUE INITIALIZATION MESSAGE 
          SA1    VNSCP       NUMBER OF SUBCONTROL POINTS
          LX1    -24
          RJ     CDD         CONSTANT TO DECIMAL DISPLAY
          BX1    X6 
          LX1    48 
          SB5    IIMG        *  K.SCP=XX.*
          RJ     IIM         ISSUE INITIALIZATION MESSAGE 
          SA1    VTFL        NAME OF SYSTEM TASK LIBRARY
          AX1    18 
          LX1    18 
          SB5    IIMH        *  K.TLF=XXXXXXX.* 
          RJ     IIM         ISSUE INITIALIZATION MESSAGE 
          SA1    INTG        *CRF* INTIALIZATION OPTION 
          SB5    IIMI        *  K.INT=CRF,XXXXXXX.* 
          RJ     IIM         ISSUE INITIALIZATION MESSAGE 
          SA2    PRSA 
          LX2    59-TICRS    *CRM* INITIALIZATION OPTION
          SA1    PRSF 
          PL     X2,PRS8     IF NOT *ALL* 
          SX1    3LALL
          LX1    42 
 PRS8     SB5    IIMJ        *  K.INT=CRM,XXXX.*
          RJ     IIM         ISSUE INITIALIZATION MESSAGE 
          SA2    OVRD        *CRF* ERROR OVERRIDE OPTION
          SX1    3L NO
          LX1    42 
          ZR     X2,PRS9     IF NOT ERROR OVERRIDE
          SX1    3LYES
          LX1    42 
 PRS9     SB5    IIMK        *  K.ERO=CRF,XXX.* 
          RJ     IIM         ISSUE INITIALIZATION MESSAGE 
          SA2    VCMM        CMM FL 
          SX1    X2          CMM BASE FL
          RJ     COD         CONVERT OCTAL TO DISPLAY 
          BX1    X4 
          SB5    IIML        *  K.BFL=XXXXXXB.* 
          RJ     IIM         ISSUE INITIALIZATION MESSAGE 
          SA1    VCMM 
          AX1    18          CMM EXPANDABLE FL
          SX1    X1 
          RJ     COD         CONVERT OCTAL TO DISPLAY 
          BX1    X4 
          SB5    IIMM        *  K.EFL=XXXXXXB.* 
          RJ     IIM         ISSUE INITIALIZATION MESSAGE 
          SA1    VCMM 
          AX1    36 
          RJ     COD         CONVERT OCTAL TO DISPLAY 
          BX1    X4 
          SB5    IIMN        *  K.TFL=XXXXXXB.* 
          RJ     IIM         ISSUE INITIALIZATION MESSAGE 
          EQ     PRSX        RETURN 
  
 PRSA     CON    0           FLAG WORD
  
*         REPORT FILE BANNER
  
 PRSB     DATA   C/1****************************************************
,*****************/ 
          DATA   1L 
          DATA   1L 
          DATA   10H
          DATA   C*     TAF INITIALIZATION AND RECOVERY REPORT* 
          DATA   1L 
          DATA   20H
          DATA   C*GIVE TO TAF ADMINISTRATOR* 
          DATA   1L 
          DATA   20H
 PRSC     BSS    2           DATE/TIME
          DATA   1L 
          DATA   1L 
          DATA   C/ ****************************************************
,*****************/ 
 PRSBL    EQU    *-PRSB 
  
 PRSD     VFD    42/0L"TLFM",18/1 
 PRSE     DATA   10H   RESTART
 PRSF     DATA   4LNONE 
 PRSG     DATA   C* NOT ENOUGH COMMUNICATION BLOCKS DEFINED.* 
 IIM      SPACE  4,10 
**        IIM - ISSUE INITIALIZATION MESSAGE. 
* 
*         ENTRY  (B5) = FWA OF MESSAGE. 
*                (X1) = VALUE TO BE PUT IN MESSAGE. 
* 
*         USES   B - 2, 3, 5. 
* 
*         CALLS  SNM. 
  
  
 IIM      SUBR               ENTRY/EXIT 
          SB2    1RX         SET REPLACEMENT CHARACTER
          SB3    DAYB        ALTERNATE ASSEMBLY AREA
          SB5    -B5
          RJ     SNM         SET NAME IN MESSAGE
          MESSAGE  DAYB      ISSUE MESSAGE TO DAYFILE 
          EQ     IIMX        RETURN 
  
 IIMA     DATA   C* INITIALIZATION OPTIONS.*
 IIMB     DATA   C*  K.CMB=XX.* 
 IIMC     DATA   C*  K.ECS=XXXK.* 
 IIME     DATA   C*  K.MFL=XXXXXXB.*
 IIMF     DATA   C*  K.REC=XXX.*
 IIMG     DATA   C*  K.SCP=XX.* 
 IIMH     DATA   C*  K.TLF=XXXXXXX.*
 IIMI     DATA   C*  K.INT=CRF,XXXXXXX.*
 IIMJ     DATA   C*  K.INT=CRM,XXXX.* 
 IIMK     DATA   C*  K.ERO=CRF,XXX.*
 IIML     DATA   C*  K.BFL=XXXXXXB.*
 IIMM     DATA   C*  K.EFL=XXXXXXB.*
 IIMN     DATA   C*  K.TFL=XXXXXXB.*
 PTF      SPACE  4,40 
**        PTF - PROCESS *TAF* CONFIGURATION FILE. 
* 
*         READ DIRECTIVES FROM THE TCF AND VALIDATE THE 
*         PARAMETERS.  ALL DIRECTIVES ARE VALIDATED BUT ONLY A SUBSET 
*         OF THEM ARE FULLY PROCESSED WITHIN *TAFREC*.  THE OTHERS
*         RECEIVE FINAL PROCESSING IN *TAFNAM1*.
* 
*         VALID DIRECTIVES ARE -
* 
*         *      DISPLAY(DSTAT) 
*         *      K.COMMAND. 
*         *      NETWORK(ID=I,FM=FAMILY,UN=USERNAM) 
*         *      RECOVER(ID=I,NM=NMSG,MS=MSIZE) 
*                DMS(DM,SW,DB1,DB2,...,DBN) 
* 
*         WHERE  DSTAT   = *ON* OR *OFF* DEFINES IF K-DISPLAY IS USED.
*                COMMAND = INITIALIZATION OPTIONS, STOP, END OR GO. 
*                I       = NETWORK FILE AND *CRF* ID (0-7). 
*                FAMILY  = FAMILY WHERE NETWORK FILE AND *CRF* RESIDE.
*                USERNAM = USER NAME OF NETWORK FILE AND *CRF*. 
*                NMSG    = NUMBER OF USER MESSAGES/TERMINAL ON *CRF*. 
*                MSIZE   = MAXIMUM USER MESSAGE SIZE. 
*                DM      = DATA MANAGER (*TAF*,*CRM*,*TOTAL*,*OTHER*).
*                SW      = *ON* OR *OFF*. 
*                DBI     = DATA BASE NAMES. 
* 
*         DIRECTIVES FLAGGED BY * ARE FULLY PROCESSED IN *TAFREC*.
* 
*         EXIT   (X2) .NE. 0 IF K-DISPLAY TO BE SET.
*                *TCF* PROCESSED. 
*                (B5) = FWA OF ERROR MESSAGE IF ERROR.
*                TO *SKD* IF ERRORS IN *TCF*. 
*                TO *ERR* IF *TCF* NOT FOUND, OTHER THAN
*                *K.COMMAND* ERRORS OR OPERATOR TERMINATION.
* 
*         USES   X - ALL. 
*                A - ALL. 
*                B - 2, 3, 4, 5, 7. 
* 
*         CALLS  ALC, DMS, DSP, DXB, NET, PKC, RCV, SKD, UPC. 
* 
*         MACROS GET, MESSAGE, READ, READC, REWIND, STATUS, WRITEC, 
*                WRITEW.
* 
*         NOTES  *K-DISPLAY* WILL BE SET IN CASE OF INCORRECT 
*                DIRECTIVES.
  
  
 PTF      SUBR               ENTRY/EXIT 
          SX6    PTFQ 
          SX7    PTFQL
          SA6    SBHD        SET SUB HEADING ADDRESS
          SA7    A6+B1       LENGTH 
          SX6    B1+B1       SUBHEADING LINE COUNT
          SA6    A7+B1
  
*         IF TCF IS LOCAL, USE IT, OTHERWISE GET TCF
*         FROM *TAF-S* USER INDEX.
  
          STATUS TCF         SEE IF TCF IS LOCAL
          SA1    X2 
          MX0    11 
          LX1    59-11
          BX1    X0*X1
          NZ     X1,PTF1     IF TCF LOCAL 
          GET    TCF
          MX0    8
          SA1    TCF
          LX1    59-17
          BX1    X0*X1
          ZR     X1,PTF1     IF TCF FOUND 
          SB5    PTFD 
          EQ     ERR         ERROR - FILE TCF NOT FOUND 
  
 PTF1     REWIND TCF,R       LOCAL TCF MUST BE REWOUND IF RESTART 
          READ   TCF,R
          SA1    TCF+2       IN 
          SA2    A1+B1       OUT
          IX3    X1-X2       IN-OUT 
          NZ     X3,PTF2     IF TCF FILE NOT EMPTY
          SB5    PTFE 
          EQ     ERR         ERROR - TCF FILE EMPTY 
  
*         SET DEFAULT *TAF* CONFIGURATION VALUES. 
  
 PTF2     SX6    B0+
          SA1    DFNM        DEFAULT *NM* 
          SA2    DFMS        DEFAULT *MS* 
          SA6    ID          CLEAR *ID* 
          BX6    X1 
          BX7    X2 
          SA6    A6+B1
          SA7    A6+B1
          READC  TCF,PTFB,16 READ DIRECTIVE IMAGE 
          NZ     X1,PTF6     IF NO MORE ENTRIES 
          SB2    B1 
          RJ     ALC         ADVANCE LINE COUNT 
          WRITEW R,BLNK,2 
          WRITEC R,PTFB      WRITE DIRECTIVE TO REPORT FILE 
          SB7    PTFC        FWA TO UNPACK INTO 
          SA5    PTFB        FIRST WORD TO UNPACK 
          RJ     UPC         UNPACK DIRECTIVE IMAGE 
          ZR     X6,PTF3     IF NO UNPACK ERRORS
          SA0    PTFF        * INCORRECT TCF ENTRIES* 
          EQ     PTF5        REPORT ERROR 
  
 PTF3     MX0    42 
          SA1    PTFC 
          SA4    PTFA        FWA OF KEYWORD TABLE 
          SA0    PTFH 
 PTF4     ZR     X4,PTF5     IF INCORRECT KEYWORD 
          BX5    X1-X4
          BX2    X0*X5
          SB3    X4 
          SA4    A4+B1
          NZ     X2,PTF4     IF NO MATCH
          JP     B3          PROCESS KEYWORD
  
*         ENTRY FROM  *SKD*.
*         WRITE ERROR MESSAGE TO RECOVERY REPORT. 
  
 PTF5     WRITEW R,PTFG,PTFGL  WRITE GENERAL ERROR MESSAGE
          WRITEC R,A0        WRITE DETAILED ERROR MESSAGE 
          MESSAGE  PTFB,3    WRITE STATEMENT IN ERROR 
          MESSAGE  A0,3      WRITE ERROR MESSAGE
          SA1    PTFN 
          SX6    X1+B1       INCREMENT NUMBER OF ERRORS 
          SA6    A1 
          EQ     PTF2        PROCESS NEXT DIRECTIVE 
  
 PTF6     SX6    B0          CLEAR TCF ORIGIN 
          SA6    KCOF 
          SA1    PTFZ        *K.* ERROR COUNT 
          SA3    PTFN        TOTAL ERROR COUNT
          IX6    X3-X1       GET FATAL ERROR COUNT
          SA6    PTFN 
          NZ     X6,PTF7     IF FATAL ERRORS
          ZR     X1,PTF7     IF NO *K.* ERRORS
          SA6    PTFU        CLEAR *K-DISPLAY* STATUS FLAG
          RJ     SKD         DISPLAY
 PTF7     WRITEW R,PTFY,B1   BLANK LINE 
          SA3    PTFN        ERROR COUNT
          SA2    PTFAA       MUST HAVE A *USER* COMMAND 
          SA4    PTFO        CHECK MATCH OF *NETWORK* AND *RECOVER* 
          IX6    X4+X3
          IX6    X6+X2
          SA2    PTFU 
          SA1    PTFR        *TAFNAM* MUST HAVE A *NETWORK* DIRECTIVE 
          IX6    X6+X1
          SA5    PTFS        RECOVERY MUST HAVE A *RECOVER* DIRECTIVE 
          IX6    X6+X5
          ZR     X6,PTFX     IF NO ERRORS 
          ZR     X1,PTF8     IF *NETWORK* DIRECTIVE PRESENT 
          SA0    X4          SAVE X4
          SB2    B1+B1
          RJ     ALC         ADVANCE LINE COUNT 
          WRITEC R,PTFV      *NETWORK* DIRECTIVE(S) REQUIRED
          SX4    A0          RESTORE X4 
 PTF8     ZR     X5,PTF8.1   IF *RECOVER* DIRECTIVE PRESENT 
          BX5    X4          SAVE X4
          SB2    B1+B1
          RJ     ALC         ADVANCE LINE COUNT 
          WRITEC  R,PTFW     *RECOVER* DIRECTIVE(S) REQUIRED
          BX4    X5          RESTORE X4 
 PTF8.1   SA2    PTFAA
          ZR     X2,PTF9     IF *USER* COMMAND PRESENT
          BX5    X4          SAVE *PTFO* FLAGS FOR *NETWORK/RECOVER*
          SB2    B1+B1
          RJ     ALC         ADVANCE LINE COUNT 
          WRITEC R,PTFAC     * USER COMMAND REQUIRED.*
          BX4    X5          RESTORE *PTFO* FLAGS FOR *NETWORK/RECOVER* 
 PTF9     ZR     X4,PTF10    IF *RECOVER* AND *NETWORK* ID-S MATCH
          SB2    B1+B1
          RJ     ALC         ADVANCE LINE COUNT 
          WRITEC R,PTFP      *RECOVER* AND *NETWORK* ID-S DO NOT MATCH
  
  
 PTF10    SB5    PTFF 
          EQ     ERR         ERROR - INCORRECT TCF ENTRIES
  
*         PROCESS *DISPLAY*.
  
 PTF11    SA1    PTFC+1      GET PARAMETER
          RJ     DSP         PROCESS *DISPLAY* DIRECTIVE
          SA0    PTFI 
          NZ     X3,PTF5     IF ERROR IN DIRECTIVE
          SA6    PTFU        INDICATE *K-DISPLAY* STATUS
          MX6    12 
          SA6    PTFA        INHIBIT MORE *DISPLAY* DIRECTIVES
          EQ     PTF2        PROCESS NEXT DIRECTIVE 
  
*         PROCESS *NETWORK*.
  
 PTF12    SB4    B6-1        ARGUMENT COUNT 
          SA4    PTFC+1      FIRST ARGUMENT 
          RJ     NET         PROCESS *NETWORK* DIRECTIVE
          SB4    A0 
          NE     B4,PTF5     IF DIRECTIVE ERROR 
          BX6    X6-X6
          SA6    PTFR        INDICATE *NETWORK* DIRECTIVE PRESENT 
          SX1    IPTAR
          ZR     X1,PTF2     IF AUTO RECOVERY NOT ENABLED 
          SA1    PTFO 
          SX2    B1 
          LX2    X2,B5
          BX6    X1-X2       SET/CLEAR BIT FOR THIS *ID*
          SA6    A1 
          EQ     PTF2        PROCESS NEXT DIRECTIVE 
  
*         PROCESS *RECOVER*.
  
 PTF13    SX1    IPTAR-1
          SA0    PTFK        * RECOVERY DISABLED.*
          NZ     X1,PTF5     IF *RECOVER* INCORRECT 
          SA4    PTFC+1      FIRST ARGUMENT 
          SB4    B6-1        ARGUMENT COUNT 
          RJ     RCV         PROCESS *RECOVER* DIRECTIVE
          SB4    A0+
          NE     B4,PTF5     IF DIRECTIVE ERROR 
          SA1    PTFO 
          SX2    B1 
          LX2    X2,B6
          BX6    X1-X2       SET/CLEAR BIT FOR THIS ID
          SA6    A1 
          SX6    B0+
          SA6    PTFS        INDICATE *RECOVER* DIRECTIVE PRESENT 
          EQ     PTF2        PROCESS NEXT DIRECTIVE 
  
*         PROCESS *DMS*.
  
 PTF14    SA1    PTFC        FWA OF UNPACKED DIRECTIVE BUFFER 
          RJ     DMS         PROCESS *DMS*
          SA0    PTFI        * PARAMETER ERROR.*
          NZ     X5,PTF5     IF ERROR 
          EQ     PTF2        PROCESS NEXT DIRECTIVE 
  
*         PROCESS BATCH CONCURRENCY COMMAND *TBCON,N.*
  
 PTF15    SA5    PTFC+B1     NUMBER OF BATCH CONCURRENCY JOBS 
          SA0    PTFI        *PARAMETER ERROR*
          RJ     DXB         CONVERT NUMBER 
          NZ     X4,PTF5     IF CONVERSION ERROR
          EQ     PTF2        PROCESS NEXT DIRECTIVE 
  
*         PROCESS *K.COMMAND* 
  
 PTF16    SA1    B0 
          LX1    59-8        POSITION TO SENSE SWITCH 3 
          NG     X1,PTF2     IF RECOVERY MODE SELECTED
          SA1    PTFB        FIRST PARAMETER
          SX6    B1          SET *K.COMMAND* MODE 
          SA6    KCOF 
          RJ     SKD         PROCESS *K.COMMAND*
  
*         ENTRY POINT FROM *SKD*. 
  
 PTF17    ZR     X2,PTF2     IF NO ERROR
          SA1    PTFZ        *K.* ERROR COUNT 
          SX6    X1+B1       INCREMENT ERROR COUNT
          SA6    A1 
          EQ     PTF5        RECORD COUNT ERROR IN REPORT 
  
*         PROCESS *USER* COMMAND. 
  
 PTF18    SA5    PTFAA       MUST HAVE ONLY ONE *USER* COMMAND
          SA0    PTFAD
          SB2    X5 
          NE     B1,B2,PTF5  IF NOT FIRST *USER* COMMAND
          SX6    B0          INDICATE AT LEAST ONE *USER* COMMAND 
          SA6    A5 
          RJ     USR         PROCESS *USER* COMMAND 
          SX6    A0 
          NZ     X6,PTF5     IF ERROR OCCURRED
          EQ     PTF2        PROCESS NEXT COMMAND 
  
*         TABLE OF VALID DIRECTIVE KEYWORDS.
  
 PTFA     VFD    42/0LDISPLAY,18/PTF11
          VFD    42/0LNETWORK,18/PTF12
          VFD    42/0LRECOVER,18/PTF13
          VFD    42/0LDMS,18/PTF14
          VFD    42/0LK,18/PTF16
          VFD    42/0LTBCON,18/PTF15
          VFD    42/0LACCOUNT,18/PTF18  *ACCOUNT* COMMAND 
          VFD    42/0LUSER,18/PTF18  *USER* COMMAND 
          CON    0           TABLE TERMINATOR 
  
 PTFB     BSSZ   16          BUFFER FOR DIRECTIVE IMAGE 
 PTFC     BSSZ   80          BUFFER FOR UNPACKED DIRECTIVE
  
 PTFD     DATA   C* FILE TCF NOT FOUND.*
 PTFE     DATA   C* TCF FILE EMPTY.*
 PTFF     DATA   C* INCORRECT TCF ENTRY.* 
  
 PTFG     DATA   40H     ***  ERROR IN ABOVE DIRECTIVE  *** 
 PTFGL    EQU    *-PTFG 
 PTFH     DATA   C* UNKNOWN DIRECTIVE.* 
 PTFI     DATA   C* PARAMETER ERROR.* 
 PTFK     DATA   C* RECOVERY DISABLED.* 
 PTFL     DATA   C* DUPLICATE RECOVER ID.*
 PTFM     DATA   C* DUPLICATE NETWORK ID.*
  
 PTFN     CON    0           NUMBER OF DIRECTIVE ERRORS 
 PTFO     CON    0           FLAGS FOR *NETWORK*/*RECOVER* DIRECTIVES 
 PTFP     DATA   10H
          DATA   C*          NONMATCHING NETWORK AND RECOVER ID-S*
 PTFQ     DATA   20H
          DATA   C*TAF CONFIGURATION FILE*
          DATA   1L 
 PTFQL    EQU    *-PTFQ 
 PTFR     CON    1           MUST BE AT LEAST ONE *NETWORK* DIRECTIVE 
 .A       IFEQ   IPTAR,1
 PTFS     CON    1           MUST BE AT LEAST ONE *RECOVER* DIRECTIVE 
 .A       ELSE
 PTFS     CON    0           NO *RECOVER* DIRECTIVES
 .A       ENDIF 
 PTFU     CON    0           SET *K-DISPLAY* IF NONZERO 
 PTFV     DATA   10H
          DATA   C*     NETWORK DIRECTIVE(S) REQUIRED.* 
 PTFW     DATA   10H
          DATA   C*     RECOVER DIRECTIVE(S) REQUIRED.* 
 PTFY     DATA   1L 
 PTFZ     CON    0           *K-COMMAND* ERROR COUNT
 PTFAA    CON    1           MUST BE ONLY ONE *USER* COMMAND
 PTFAB    DATA   C* USER COMMAND NOT VALID ON FAMILY.*
 PTFAC    DATA   C* USER COMMAND DOES NOT APPEAR IN TCF.* 
 PTFAD    DATA   C* MORE THAN ONE USER COMMAND IN TCF.* 
 DSP      SPACE  4,10 
**        DSP - PROCESS *DISPLAY* DIRECTIVE.
* 
*         ENTRY  (X1) = DISPLAY STATUS. 
* 
*         EXIT   (X6) = NONZERO IF *K-DISPLAY* TO BE SET. 
*                (X3) = 0 IF NO ERROR IN DIRECTIVE. 
* 
*         USES   X - 2, 3, 6. 
*                A - 2. 
  
  
 DSP      SUBR               ENTRY/EXIT 
          BX6    X6-X6       PRESET DISPLAY OFF 
          SA2    DSPA 
          BX3    X2-X1
          ZR     X3,DSPX     IF *OFF* 
          SA2    A2+B1
          BX3    X2-X1
          NZ     X3,DSPX     IF NOT *ON*
          SX6    DSP
          EQ     DSPX        RETURN 
  
*         TABLE OF VALID DISPLAY STATUSES.
  
 DSPA     VFD    42/0LOFF,18/0
          VFD    42/0LON,18/0 
 DSP      SPACE  4,20 
**        NET - PROCESS *NETWORK* DIRECTIVE.
* 
*         ENTRY  (A4) = ADDRESS OF FIRST ARGUMENT.
*                (B4) = ARGUMENT COUNT. 
* 
*         EXIT   (A0) = FWA OF ERROR MESSAGE IF ERROR.
*                     = 0 IF NO ERROR.
*                (B5) = NETWORK ID. 
* 
*         USES   X - 1, 2, 5, 6, 7. 
*                A - 0, 1, 2, 5, 7. 
*                B - 5, 6, 7. 
* 
*         CALLS  ARG, DXB.
* 
*         MACROS SYSTEM.
  
  
 NET      SUBR               ENTRY/EXIT 
          SA0    PTFI        * PARAMETER ERROR.*
          SB5    NETA        ARGUMENT TABLE 
          RJ     ARG         PROCESS ARGUMENTS
          NZ     X1,NETX     IF ERRORS
          SA5    ID 
          SB7    B1+
          RJ     DXB         DISPLAY TO BINARY
          NZ     X4,NETX     IF INCORRECT ID
          SX7    X6-MAXNF 
          PL     X7,NETX     IF INCORRECT ID
          SB5    X6 
          SX7    B1+B1
          IX6    X7*X6
          SA1    TFAM+X6+1
          SA0    PTFM        * DUPLICATE NETWORK ID.* 
          NZ     X1,NETX     IF ID ALREADY USED 
          SB6    X6+
          SYSTEM CPM,R,FM,56B*100B  VALIDATE FAMILY/USER NAME 
          SA1    UN 
          SA0    PTFAB       * USER NOT VALID ON FAMILY.* 
          SX6    X1+
          ZR     X6,NETX     IF INCORRECT FAMILY/ USER NAME 
          SA2    FM          SAVE FAMILY NAME 
          BX7    X2 
          SA0    B0          INDICATE NO ERROR
          SA7    TFAM+B6
          BX7    X1 
          SA7    A7+1        SAVE USER INDEX
          EQ     NETX        RETURN 
  
*         ARGUMENT TABLE FOR *NETWORK* DIRECTIVE. 
  
 NETA     BSS    0
 ID       ARG    NETB,ID,400B 
 FM       ARG    NETB,FM
 UN       ARG    NETB,UN
          CON    0           TABLE TERMINATOR 
  
 NETB     CON    0           FLAG NONEQUIVALENCED PARAMETERS
 RCV      SPACE  4,15 
**        RCV - PROCESS *RECOVER* DIRECTIVE.
* 
*         ENTRY  (A4) = ADDRESS OF FIRST ARGUMENT.
*                (B4) = ARGUMENT COUNT. 
* 
*         EXIT   (A0) = FWA OF ERROR MESSAGE IF ERROR.
*                     = 0 IF NO ERROR.
*                (B6) = RECOVER ID. 
* 
*         USES   X - 1, 4, 5, 6, 7. 
*                A - 0, 1, 5, 6.
*                B - 5, 6, 7. 
* 
*         CALLS  ARG, DXB.
  
  
 RCV      SUBR               ENTRY/EXIT 
          SA0    PTFI        * PARAMETER ERROR.*
          SB5    RCVA        ARGUMENT TABLE 
          RJ     ARG         PROCESS ARGUMENTS
          NZ     X1,RCVX     IF ERRORS
          SA5    ID 
          SB7    B1 
          RJ     DXB         DISPLAY TO BINARY
          SB6    X6 
          NZ     X4,RCVX     IF INCORRECT ID
          SX7    X6-MAXRC 
          PL     X7,RCVX     IF INCORRECT ID
          SA5    NM 
          RJ     DXB         DISPLAY TO BINARY
          NZ     X4,RCVX     IF INCORRECT *NM*
          SX7    X6-TRMM-1
          PL     X7,RCVX     IF INCORRECT *NM*
          SA1    TREC+B6
          SA0    PTFL        * DUPLICATE RECOVER ID.* 
          NZ     X1,RCVX     IF ID ALREADY USED 
          LX6    24 
          BX6    X6+X1
          SA6    A1+         SAVE NUMBER OF USER MESSAGES 
          SA5    MS 
          RJ     DXB         DISPLAY TO BINARY
          SA0    PTFI        * PARAMETER ERROR.*
          NZ     X4,RCVX     IF INCORRECT *MS*
          SX7    X6-MAXMS 
          PL     X7,RCVX     IF INCORRECT *MS*
          SA1    TREC+B6
          SX4    X6+TRMWL+77B 
          AX4    6           PRU-S PER MESSAGE RECORD 
          LX4    36 
          LX6    12 
          BX6    X6+X1
          BX6    X6+X4
          SA6    A1          SAVE MAXIMUM MESSAGE SIZE
          SA0    B0+         SET NO ERROR 
          EQ     RCVX        RETURN 
  
*         ARGUMENT TABLE FOR *RECOVER* DIRECTIVE. 
  
 RCVA     BSS    0
 ID       ARG    RCVB,ID,400B 
 NM       ARG    RCVB,NM
 MS       ARG    RCVB,MS
          CON    0           TABLE TERMINATOR 
  
 RCVB     CON    0           FLAG NON EQUIVALENCED PARAMETERS 
 DMS      SPACE  4,10 
**        DMS - PROCESS *DMS* DIRECTIVE.
* 
*         ENTRY  (A1) = FWA OF UNPACKED DIRECTIVE BUFFER. 
* 
*         EXIT   (X5) = 0 IF NO ERROR.
*                TO *ERR* IF DB-NAME ERROR. 
* 
*         USES   X - 0, 1, 2, 4, 5. 
*                A - 1, 2.
*                B - 5. 
  
  
 DMS      SUBR               ENTRY/EXIT 
          MX0    42          MASK FOR PARAMETERS
          SA1    A1+B1
          SA2    DMSA 
 DMS1     ZR     X2,DMSX     IF INCORRECT DATA MANAGER
          BX4    X1-X2
          SA2    A2+B1
          BX5    X0*X4
          NZ     X5,DMS1     IF NO MATCH
          SA1    A1+B1       SECOND ARGUMENT (DATA MANAGER STATUS)
          SA2    DMSB 
 DMS2     ZR     X2,DMSX     IF INCORRECT STATUS
          BX4    X1-X2
          SA2    A2+B1
          BX5    X0*X4
          NZ     X5,DMS2     IF NO MATCH
          MX0    6
          SX2    1RZ
          LX2    -6 
 DMS3     SA1    A1+B1
          SX5    B0 
          ZR     X1,DMSX     IF END OF STATEMENT
          BX4    X0*X1
          BX5    X4-X2
          NZ     X5,DMS3     IF *DB-NAME* DOES NOT START WITH *Z* 
          SB5    MZDB        ISSUE ERROR MESSAGE
          EQ     ERR         PROCESS ERROR
  
*         TABLE OF VALID DATA MANAGERS. 
  
 DMSA     VFD    42/0LCRM,18/0
          VFD    42/0LTOTAL,18/0
          VFD    42/0LOTHER,18/0
          CON    0           TABLE TERMINATOR 
  
*         TABLE OF VALID STATUS SWITCHES. 
  
 DMSB     VFD    42/0LOFF,18/0
          VFD    42/0LON,18/0 
          CON    0           TABLE TERMINATOR 
 USR      SPACE  4,25 
**        USR - PROCESS *USER* COMMAND. 
* 
*         THE *USER* COMMAND IS USED TO INDICATE WHICH USER NAME
*         TAF IS TO RUN UNDER.  THIS USER NAME MUST BE ASSIGNED THE 
*         USER INDEX SPECIFIED BY *TRUI*. 
* 
*         USER(UN,PW,FM)
*         ACCOUNT(UN,PW,FM) 
* 
*         WHERE  UN = USER NAME.
*                PW = PASSWORD. 
*                FM = FAMILY. 
* 
*         ENTRY  (A1) = FWA OF PARAMETER TO CHECK.
* 
*         EXIT   (A0) = 0, IF NO ERROR. 
*                     = FWA OF ERROR MESSAGE, IF ERROR. 
* 
*         USES   X - 1, 3, 7. 
*                A - 0, 1, 7. 
*                B - 3, 4.
* 
*         MACROS SETPFP, SYSTEM.
  
  
 USR      SUBR               ENTRY/EXIT 
          MX3    42          MASK FOR PARAMETER 
          SA1    A1+1        USER NAME
          BX7    X3*X1
          SA7    VUSN 
          SA7    USRC 
          SA7    UN 
          SA1    A1+B1       PASSWORD 
          BX7    X3*X1
          SA7    USRB 
          SA1    A1+B1       FAMILY NAME
          BX7    X3*X1
          SA7    VFMN 
          SA7    USRA 
          SA7    FM 
  
*         VALIDATE USER.
  
          SYSTEM CPM,R,USRA,56B*100B  VALIDATE USER NAME
          SA1    USRC        GET USER INDEX 
          SB3    X1+
          SB4    TRUI        USER INDEX TAF MUST RUN UNDER
          SA0    PTFAB       *USER* NOT VALID ON FAMILY 
          ZR     B3,USRX     IF INCORRECT USER
          SA1    VFMN        RESET FAMILY NAME
          BX7    X1 
          SA7    USRA 
          SX0    10B         *SETPFP* FLAGS 
          BX7    X0+X7
          SA7    PFPA        *SETPFP* CALL BLOCK
          SETPFP PFPA        SET FAMILY 
          SA0    B0          NO ERRORS
          EQ     USRX        EXIT 
  
  
 USRA     VFD    42/0,18/0   FAMILY NAME
 USRB     VFD    42/0,18/0   PASSWORD 
 USRC     VFD    42/0,18/0   USER NAME
          BSSZ   10          PARAMETERS 
 PNF      SPACE  4,25 
**        PNF - PROCESS NETWORK FILE. 
* 
*         READ THE NETWORK DESCRIPTION FILE AND BUILD THE TST.
*         TERMINALS ENTRIES REMAIN IN THE ORDER THEY APPEAR IN THE
*         NETWORK FILE.  FOR MULTIPLE NETWORK FILES, THE TERMINALS
*         WILL BE GROUPED BY NETWORK FILE.
* 
*         REFERENCE TO RECOVERY IN THIS ROUTINE DOES NOT RELATE 
*         TO AUTOMATIC RECOVERY, BUT RATHER TO THE *K.REC* COMMAND. 
* 
*         ENTRY  (CUID) = CURRENT ID. 
* 
*         EXIT   (B5) = FWA OF ERROR MESSAGE. 
*                TST BUILT FOR THE NETWORK FILE.
*                TO *ERR* IF ERRORS IN TERMINAL DESCRIPTIONS. 
* 
*         USES   X - ALL. 
*                A - 0, 1, 2, 3, 4, 6, 7. 
*                B - 2, 3, 4, 5, 7. 
* 
*         CALLS  ANF, ATD, SNM, STB.
* 
*         MACROS MESSAGE, READ, RETURN. 
  
  
 PNF      SUBR               ENTRY/EXIT 
          RJ     ANF         ATTACH NETWORK FILE
          BX6    X1 
          SA6    PNFG        SAVE NETWORK FILE NAME 
          READ   N           INITIATE READ
 PNF1     SX5    N           FET ADDRESS
          SA0    PNFA        SCRATCH TABLE POINTER
          RJ     ATD         ASSEMBLE TERMINAL DESCRIPTION
          SA3    PNFF        ADDRESS OF NEXT ENTRY
          SA0    X3+
          ZR     X1,PNF3     IF NO ERROR
          NG     X4,PNF6     IF EOR/EOF ENCOUNTERED 
          SX5    X2+
          NZ     X4,PNF2     IF NOT NULL FILE 
          SX5    PNFC        * NULL DESCRIPTION FILE.*
 PNF2     SB2    1RX
          SB5    PNFB        * FORMAT ERROR IN NETWORK FILE.* 
          SA1    PNFG 
          RJ     SNM         SET NAME IN MESSAGE
          MESSAGE  PNFB      FORMAT ERROR IN TERMINAL DESCRIPTION FILE
          SB5    X5 
          EQ     ERR         PROCESS ERROR
  
*         BUILD TERMINAL STATUS TABLE FROM NETWORK FILE.
  
 PNF3     SA1    /COMCRTN/TT.  TERMINAL TYPE
          SA3    /COMCRTN/DB.  DATA BASE NAME 
          SX2    1RZ
          MX0    6
          LX2    -6 
          BX4    X0*X3
          BX6    X4-X2
          NZ     X6,PNF5     IF VALID *DB-NAME* 
          SB5    MZDB        ISSUE ERROR MESSAGE
          EQ     ERR         PROCESS ERROR
  
 PNF5     LX1    59-11
          PL     X1,PNF1     IF NOT A TRANSACTION TERMINAL
          LX3    TSDBS-59 
          SA1    /COMCRTN/RS.  DATA BASE READ SECURITY LEVEL
          SA2    /COMCRTN/US.  DATA BASE UPDATE SECURITY LEVEL
          LX1    TSRSS-TSRSN+1
          SA4    /COMCRTN/TN.  TERMINAL NAME
          BX1    X1+X3
          BX6    X4 
          SA3    /COMCRTN/UA.  USER ARGUMENTS 
          LX2    TSUSS-TSUSN+1
          BX7    X1+X2
          SA6    A0+1        SECOND WORD OF TST ENTRY 
          BX7    X7+X3
          SA1    /COMCRTN/IS.  ON/OFF 
          LX1    TSTOS-TSTON+1
          BX7    X7+X1
          SX6    A0+TSTLLE   ADVANCE TST POINTER
          SA6    PNFF 
          SA1    PRSA 
          SA2    VREC        *K-DISPLAY* RECOVERY 
          MX6    -1 
          BX6    -X6*X2 
          LX6    TSRBS-0     SET USER RECOVERY BIT IN TST 
          BX7    X7+X6
          SA7    A0+
          LX1    59-0 
          LX2    59-0 
          NG     X1,PNF1     IF SENSE SWITCH 3 IS SET 
          NG     X2,PNF1     IF RECOVERY MODE SELECTED
          SA1    PNFI 
          SX6    X1+B1       INCREMENT NUMBER OF ENTRIES
          SA6    A1 
          SX6    X6-IPTST-1 
          NG     X6,PNF1     IF MAXIMUM NOT EXCEEDED
          SB5    PNFJ        * MAXIMUM TERMINALS EXCEEDED.* 
          EQ     ERR         PROCESS ERROR
  
*         SORT TST ON MUX CHANNEL/EQUIPMENT/PORT KEY FOR *TAFTS*. 
  
 PNF6     RETURN N           RETURN NETWORK FILE
          SA1    PNFE 
          SX6    A0 
          SA6    A1          SET FWA OF TST FOR NEXT NETWORK FILE 
          IX7    X6-X1       LENGTH OF TST
          SA1    TSTLW
          IX6    X7+X1
          SA6    A1          ADJUST CUMULATIVE LENGTH 
          SX2    TSTLLE 
          IX7    X7/X2       NUMBER OF TST ENTRIES
          SA3    PNFH 
          IX7    X3+X7       UPDATE HIGHEST ORDINAL 
          SA7    A3 
          LX7    48 
          SA1    CUID        ID 
          SX2    TTFTE
          IX1    X2*X1
          SA7    TSTHD+X1 
          SX6    B0+
          SA6    /COMCRTN/ST CLEAR COMCRTN FLAGS FOR NEXT NETWORK FILE
          SA6    /COMCRTN/ATDA
          NZ     X7,PNFX     IF TRANSACTION TERMINALS DEFINED 
          SB2    1RX
          SB5    PNFD        * NO TERMINALS IN NETWORK FILE.* 
          SA1    PNFG 
          RJ     SNM         SET NAME IN MESSAGE
          EQ     ERR         PROCESS ERROR
  
 PNFA     VFD    12/0,18/BRTNL,30/BRTN  SCRATCH TABLE POINTER 
 PNFB     DATA   C* FORMAT ERROR IN NETWORK FILE - XXXXXXX.*
 PNFC     DATA   C* NULL DESCRIPTION FILE.* 
 PNFD     DATA   C* NO TERMINALS IN NETWORK FILE - XXXXXXX.*
 PNFE     CON    TST         INITIAL TST ENTRY
 PNFF     CON    TST+TSTLLE  CURRENT TST ENTRY
 PNFG     CON    0           NETWORK FILE NAME
 PNFH     CON    -1          CURRENT HIGHEST TST ORDINAL
 PNFI     CON    0           NUMBER OF TERMINAL ENTRIES 
 PNFJ     DATA   C* MAXIMUM TERMINALS EXCEEDED.*
 PNFK     DATA   C* NO  DATA BASE NAME TERMINAL - XXXXXXX.* 
 ANF      SPACE  4,30 
**        ANF - ATTACH NETWORK DESCRIPTOR FILE. 
* 
*         THIS ROUTINE ATTACHES THE NETWORK DESCRIPTION FILE *NCTFI*
*         WHERE THE *I* WAS SPECIFIED BY THE *ID* PARAMETER ON THE
*         *NETWORK* STATEMENT.  THE FILE RESIDES UNDER THE FAMILY AND 
*         USER NAME SPECIFIED ON THIS *NETWORK* STATEMENT.
* 
*         ENTRY  (CUID) = CURRENT ID. 
* 
*         EXIT   (X1) = NETWORK FILE NAME.
*                (B5) = FWA OF ERROR MESSAGE. 
*                TO *ERR* IF NETWORK FILE NOT FOUND.
* 
*         USES   X - 1, 2, 3, 5, 6. 
*                A - 1, 2, 3, 6.
*                B - 2, 5.
* 
*         CALLS  SNM. 
* 
*         MACROS ATTACH, SETPFP.
  
  
 ANF      SUBR               ENTRY/EXIT 
          SX2    1R0
          SA1    CUID        ID 
          IX2    X1+X2       BINARY TO DISPLAY
          LX1    1           OFFSET INTO *TFAM* 
          SA1    TFAM+X1     FAMILY NAME
          SA3    A1+B1       USER INDEX 
          BX6    X1 
          SA6    ANFG        SAVE FAMILY NAME 
          SX5    13B         *SETPFP* FLAGS 
          BX6    X5+X6
          SA6    PFPA        *SETPFP* CALL BLOCK
          BX6    X3 
          SA6    PFPA+2 
          SA1    ANFA 
          LX2    35-5 
          BX6    X1+X2       NETWORK FILE NAME
          SA6    ANFF 
          SX2    PTRD 
          BX6    X6+X2
          SA6    N+CFPN      SET NAME IN FET
          SETPFP PFPA        SET PERMANENT FILE PARAMETERS
          ATTACH N           ATTACH NETWORK FILE
          SA1    N
          MX2    8
          LX1    59-17
          BX2    X2*X1
          SA1    ANFF        GET NETWORK FILE NAME
          ZR     X2,ANFX     IF FILE AVAILABLE
          SB2    1RX
          SB5    ANFE        * NETWORK FILE NOT FOUND.* 
          RJ     SNM         SET NAME IN MESSAGE
          EQ     ERR         PROCESS ERROR
  
 ANFA     VFD    42/0LNCTF,18/0 
 ANFD     CON    0           MACHINE ID 
 ANFE     DATA   C* NETWORK FILE NOT FOUND - XXXXXXX.*
 ANFF     BSS    1           NETWORK FILE BEING PROCESSED 
 ANFG     BSS    1           FAMILY NAME OF CURRENT NETWORK FILE
 RKD      SPACE  4,15 
**        RKD - RESTART *K-DISPLAY*.
* 
*         RECOVER PARAMETERS ENTERED FROM THE *K-DISPLAY* AT
*         *TAF* INITIALIZATION AND STORE THEM IN THE *K-DISPLAY*
*         BUFFER AND REPORT FILE BUFFER.
* 
*         ENTRY  LOW CM POINTERS AVAILABLE. 
* 
*         USES   X - ALL. 
*                A - 1, 6, 7. 
*                B - 2. 
* 
*         CALLS  CDD, COD, SFN. 
  
  
 RKD      SUBR               ENTRY/EXIT 
          SA1    VNSCP       SUB CONTROL POINTS 
          LX1    -24
          RJ     CDD         CONVERT TO DISPLAY 
          MX0    18 
          LX4    -18
          SA1    RKDA 
          BX6    -X0*X4 
          BX6    X1+X6
          SA6    KSCP+B1
          SA6    DIS1+B1
          SA1    VNCMB       COMMUNICATION BLOCKS 
          LX1    -24
          RJ     CDD
          LX4    -18
          BX6    -X0*X4 
          SA1    RKDA 
          BX6    X1+X6
          SA6    KCMB+B1
          SA6    DIS2+B1
          SA1    VREC        USER RECOVERY
          LX1    -24
          SA1    RKDB+X1
          BX6    X1 
          SA6    KREC+B1
          SA6    DIS4+B1
          SA1    VMFL        MAXIMUM FL 
          RJ     COD         CONVERT TO OCTAL DISPLAY 
          MX3    -6 
          SB2    60 
          SX2    1R 
          SX1    1RB         ADD -B- TO NUMBER
 RKD1     LX4    6
          SB2    B2-6 
          BX5    -X3*X4 
          IX5    X5-X2
          NZ     X5,RKD1     IF NOT BLANK 
          BX4    X3*X4
          BX4    X4+X1       MERGE IN -B- 
          LX4    B2          REPOSITION 
          LX4    -18
          BX6    -X0*X4 
          SA1    RKDA 
          BX6    X1+X6
          SA6    KMFL+B1
          SA6    DIS5+B1
          SA1    VECS        MAXIMUM EXTENDED MEMORY
          LX1    -9 
          RJ     COD         CONVERT TO OCTAL DISPLAY 
          MX3    -6 
          SB2    60 
          SX2    1R 
          SX1    1RK         ADD -K- TO NUMBER
 RKD2     LX4    6
          SB2    B2-6 
          BX5    -X3*X4 
          IX5    X5-X2
          NZ     X5,RKD2     IF NOT BLANK 
          BX4    X3*X4
          BX4    X4+X1       MERGE IN -K- 
          LX4    B2          REPOSITION 
          LX4    -18
          SA1    RKDA 
          BX6    -X0*X4 
          BX6    X1+X6
          SA6    KECS+B1
          SA6    DIS6+B1
          SA1    VTFL        TASK LIBRARY FILE
          MX2    -1 
          BX1    X2*X1
          RJ     SFN         SPACE FILL NAME
          LX6    -18
          BX6    -X0*X6 
          SA1    RKDA 
          BX6    X1+X6
          SA6    KTLF+B1
          SA6    DIS7+B1
          SA1    BLNK        UPDATE REPORT FILE HEADER
          SA2    RKDC 
          BX6    X1 
          BX7    X2 
          SA6    SKDE+1 
          SA7    A6+1 
          EQ     RKDX        RETURN 
  
 RKDA     VFD    60/3L =
 RKDB     DATA   10H = NO 
          DATA   10H = YES
 RKDC     DATA   10H  RESTART 
 SRS      SPACE  4,25 
**        SRS - SET RECOVERY STATUS.
* 
*         ATTEMPT TO ATTACH THE *CRF* FROM THE FAMILY/USERNAME
*         SPECIFIED ON THE NETWORK DIRECTIVE.  IF NOT FOUND, ATTEMPT
*         TO ATTACH THE ALTERNATE *CRF* (CRFAI).  IF *CRFAI* FOUND, 
*         CHANGE ITS NAME TO *CRFI*.  IF NEITHER *CRFI* OR *CRFAI* ARE
*         FOUND BUT INITIALIZE STATUS WAS SET VIA THE *K.INT* COMMAND,
*         THEN DEFINE *CRFI*. 
* 
*         ENTRY  (CUID) = CURRENT ID. 
* 
*         EXIT   *CRF* LOCAL. 
*                (B5) = FWA OF ERROR MESSAGE. 
*                TO *ERR* IF CRF NOT FOUND AND INITIALIZE FLAG NOT SET. 
* 
*         USES   X - 1, 2, 5, 6.
*                A - 1, 6.
*                B - 2, 5.
* 
*         CALLS  SNM. 
* 
*         MACROS ATTACH, CHANGE, DEFINE.
  
  
 SRS      SUBR               ENTRY/EXIT 
          SA1    CUID        CURRENT ID 
          SX2    1R0
          IX5    X2+X1       BINARY TO DISPLAY
          LX5    29-5 
          SA1    RFN
          SX2    B1 
          BX6    X1+X5       *CRFI* 
          SA6    CRF+CFPN 
          SA6    CRF+CFNF 
          BX6    X6+X2       COMPLETE BIT 
          SA6    CRF         STORE IN FET 
          ATTACH CRF         ATTACH *CRF* 
          SA1    CRF
          MX2    8
          LX1    59-17
          BX2    X2*X1
          ZR     X2,SRSX     IF FILE FOUND
          SA1    RFNA 
          LX5    35-41
          BX6    X1+X5       *CRFAI*
          SA6    CRF+CFPN 
          ATTACH CRF         ATTACH ALTERNATE *CRF* 
          MX2    8
          SA1    CRF
          LX1    59-17
          BX2    X2*X1
          NZ     X2,SRS1     IF FILE NOT FOUND
          CHANGE CRF         CHANGE NAME TO *CRFI*
          EQ     SRSX        RETURN 
  
*         RECOVERY FILE WAS NOT FOUND.  IF INITIALIZE WAS SPECIFIED 
*         DEFINE THE RECOVERY FILE. 
  
 SRS1     SA1    CUID 
          SA1    TREC+X1
          MX6    -3 
          BX6    -X6*X1      STATUS 
          SX6    X6-IST 
          NZ     X6,SRS2     IF NOT INITIALIZE
          SA1    CRF+CFNF 
          BX6    X1          CORRECT FILE NAME
          SA6    CRF+CFPN 
          DEFINE CRF
          EQ     SRSX        RETURN 
  
*         ABORT *TAFREC* WHEN THE RECOVERY FILE NOT FOUND AND 
*         INITIALIZATION NOT SPECIFIED. 
  
 SRS2     SA1    CRF
          MX2    42 
          BX1    X2*X1
          SB2    1RX
          SB5    SRSA        * COMMUNICATIONS RECOVERY FILE NOT FOUND.* 
          RJ     SNM         SET NAME IN MESSAGE
          EQ     ERR         PROCESS ERROR
  
 SRSA     DATA   C* TAF COMM. RECOVERY FILE NOT FOUND - XXXXXXX.* 
 PKC      SPACE 4,20
 SKD      SPACE  4,25 
**        SKD - SET *K-DISPLAY*.
* 
*         FORMAT AND DIPLAY THE INITIAL *K-DISPLAY* AND ACCEPT
*         OPERATOR ENTERED CHANGES AND/OR COMMANDS AND *K.COMMANDS* 
*         FROM THE *TCF* FILE.
* 
*         COMMANDS ARE OF THE FORM -
*                K.CMD = PARAMETERS.
* 
*         WHERE  CMD = A THREE CHARACTER COMMAND. 
*                PARAMETERS = 1-15 CHARACTERS  ( A-Z  0-9  , )
*                             TERMINATED BY A PERIOD. 
* 
*         IF A VALID COMMAND IS ENTERED, *SKD* JUMPS TO THE 
*         COMMAND PROCESSOR.
* 
*         ENTRY  (A1) = FWA OF STATEMENT BUFFER, IF (KCOF) .NE. 0.
* 
*         EXIT   TO *PTF17*  IF CONSOLE COMMAND.
*                TO *PTF5* IF UNPACK ERRORS ON TCF FILE DATA. 
* 
*         USES   X - ALL. 
*                A - 0, 1, 2, 3, 5, 6, 7. 
*                B - 2, 3, 4, 5, 6, 7.
* 
*         CALLS  UPC, ZTB.
* 
*         MACROS CONSOLE, RECALL, WRITEW. 
  
  
 SKD      SUBR               ENTRY/EXIT 
          SA2    KCOF        CHECK COMMAND ORIGIN 
          NZ     X2,SKD4     IF NOT CONSOLE MODE
          SX6    SKDE 
          SX7    SKDEL
          SA6    SBHD        SUB HEADING ADDRESS
          SA7    A6+B1       LENGTH 
          SX6    B1+B1       SUBHEADING LINE COUNT
          SA6    A7+B1
          SX6    LINP 
          SA6    LCNT        FORCE NEW PAGE 
          SB7    5           ASSUME DECIMAL BASE FOR DXB,ALSO CNSTNT 5
          CONSOLE  KCTRL     SET *K-DISPLAY* REQUEST
 SKD1     SA1    KCOF        COMMAND ORIGIN 
          SX2    B0+
          NZ     X1,PTF17    IF NOT CONSOLE COMMAND 
          SX6    B0+
          SA6    KBUF        SET INPUT PROCESSED INDICATOR
          SA6    KILL        TURN OFF ERROR MESSAGE 
          SA6    KILL1
          SA6    SKDD 
 SKD2     SA1    KBUF 
          NZ     X1,SKD3     IF INPUT TO PROCESS
          RECALL
          EQ     SKD2        LOOP 
  
*         PROCESS CONSOLE INPUT.
  
 SKD3     SB2    B0+
          SB3    5
 SKD3.1   SA1    KBUF+B2
          RJ     ZTB         CONVERT TRAILING ZEROES TO BLANKS
          SB2    B2+B1
          SA6    A1          ALLOW MISSING TERMINATOR TO BE LEGAL 
          SA6    KBUF1+B2    ECHO DSD INPUT TO K-DISPLAY
          LT     B2,B3,SKD3.1  IF NOT END OF INPUT BUFFER 
          SA5    KBUF        UNPACK STATEMENT 
          SB7    PTFC 
          RJ     UPC         UNPACK 
          SA1    PTFC-1 
          ZR     X6,SKD8     IF NO UNPACK ERRORS
          EQ     SKD14       UNPACK ERRORS
  
*         PROCESS *TCF* *K.COMMANDS*
  
 SKD4     MX4    6
          SB3    B0 
          SX2    1R.         SET *.* AS SEARCH CHARACTER
          LX2    59-5 
          SA0    PTFF        *INCORRECT TCF ENTRIES.* 
 SKD5     SA1    A1+B3       FETCH BUFFER BLOCK 
          SB3    B3+B1       INCREMENT WORD COUNT 
          SB4    B3-16
          ZR     B4,PTF5     IF NO PERIOD IN STATEMENT
          SB5    B0+         CLEAR SHIFT COUNT
 SKD6     BX3    X4*X1       CHECK FOR *.*
          IX3    X3-X2
          ZR     X3,SKD7     IF FOUND 
          SB5    B5+6        SHIFT COUNT
          SB4    B5-60
          ZR     B4,SKD5     IF NOT FOUND 
          LX1    6
          EQ     SKD6        CHECK NEXT CHARACTER 
  
 SKD7     MX0    -54         MASK OUT THE *.* 
          BX1    -X0*X1 
          SX2    1R,         *,* TO INSERT FOR UPC CALL 
          LX2    59-5 
          BX1    X1+X2
          SB3    60 
          SB5    B3-B5
          LX6    X1,B5       SHIFT BACK TO ORIGINAL POSITION
          SA6    A1+         RESTORE WORD IN BUFFER 
          SA5    PTFB        FIRST WORD TO UNPACK 
          SB7    PTFC        FWA TO UNPACK INTO 
          RJ     UPC         UNPACK 
          SA1    PTFC 
          ZR     X6,SKD8     IF NO UNPACK ERRORS
          SA0    PTFF        *INCORRECT TCF ENTRIES*
          EQ     PTF5        REPORT ERROR 
  
 SKD8     SA1    A1+B1
          MX0    42 
          BX1    X0*X1       MASK OUT THE SEPERATOR 
          SA2    SKDC-1      VALID COMMAND TABLE
 SKD9     SA2    A2+B1       GET NEXT *K.COMMAND* 
          ZR     X2,SKD14    IF END OF TABLE
          BX3    X0*X2
          IX4    X1-X3
          NZ     X4,SKD9     IF NO MATCH
          SA3    A1+B1       GET SECOND PARAMETER 
          BX3    X0*X3
          BX7    X3 
          ZR     X3,SKD13    IF SECOND PARAMETER ZERO 
          SA1    A3+B1       GET THIRD PARAMETER
          BX1    X0*X1
          BX6    X1 
          MX0    6
          ZR     X6,SKD13    IF NEXT PARAMETER ZERO 
          SB2    B0 
          BX4    X7 
 SKD10    SB2    B2+6        COUNT CHARACTERS IN SECOND PARAMETER 
          ZR     X4,SKD11    IF NEXT CHARACTER IS ZERO
          LX7    6
          BX4    X0*X7
          EQ     SKD10       CHECK NEXT CHARACTER 
  
 SKD11    AX6    B2,X6
          MX4    1           REMOVE SIGN EXTENSION
          SB3    B2-1 
          AX4    X4,B3       VARIABLE MASK
          PL     X6,SKD12    IF SIGN EXTEND IS ZEROS
          BX6    -X4*X6 
 SKD12    BX7    X6+X3
          SB3    60 
          SB3    B3-B2
          LX6    X1,B3
          BX6    X4*X6
          SX1    1R,         ADD A *,* FOR RECEIVING ROUTINES 
          LX1    53-5 
          SB2    B2-12
          AX1    X1,B2
          IX7    X7+X1
 SKD13    SB3    X2 
          JP     B3          PROCESS THE *K.COMMAND*
  
*         SET INCORRECT INPUT MESSAGE ON SCREEN.
  
 SKD14    SA2    KCOF 
          SA0    KCNV        * K.COMMAND NOT VALID.*
          NZ     X2,PTF17    IF NOT CONSOLE COMMAND 
          SA1    KILL2       FIRST LINE OF ERROR MESSAGE
          MX7    0
          BX6    X1 
          SA6    KILL        SET INTO ERROR LINE POSITION 
          SA7    KBUF 
          SA7    SKDD 
          EQ     SKD2        WAIT FOR NEXT INPUT
  
*         IF END OF *K-DISPLAY* WRITE IT TO REPORT FILE.
  
 SKD15    SA1    KCOF 
          ZR     X1,SKD16    IF  CONSOLE ORIGIN 
          SX2    B0+         CLEAR ERROR FLAG 
          EQ     SKDX        RETURN 
  
 SKD16    CONSOLE  SKDB      TURN OFF *K-DISPLAY* 
          SB2    30 
          RJ     ALC         ADVANCE LINE COUNT 
          WRITEW R,DISP,DISPL  WRITE *K-DISPLAY* TO REPORT FILE 
          EQ     SKDX        RETURN 
  
  
 SKDA     VFD    6/1R0,54/0  UPPER DISPLAY CODE LIMIT FOR COMMAND CHARS 
  
 SKDB     CON    0           ZERO WORD TO TURN OFF *K-DISPLAY*
  
*         TABLE OF VALID *K-DISPLAY* COMMANDS.
  
 SKDC     VFD    42/0LSCP,18/SCP
          VFD    42/0LCMB,18/CMB
          VFD    42/0LREC,18/REC
          VFD    42/0LMFL,18/MFL
          VFD    42/0LECS,18/ECS
          VFD    42/0LTLF,18/TLF
          VFD    42/0LINT,18/INT
          VFD    42/0LERO,18/ERO
          VFD    42/0LBFL,18/BFL
          VFD    42/0LEFL,18/EFL
          VFD    42/0LTFL,18/TFL
          VFD    42/0LSTOP,18/STP 
          VFD    42/0LEND,18/SKD15
          VFD    42/0LGO,18/SKD15 
          CON    0           TABLE TERMINATOR 
  
 SKDD     BSSZ   1           FIRST 10 CHARACTERS OF PARAMETER 
  
 SKDE     DATA   10H
          DATA   C*     INITIALIZATION K-DISPLAY* 
          DATA   1L 
 SKDEL    EQU    *-SKDE 
          SPACE  4,10 
**        INITIALIZATION *K-DISPLAY* COMMANDS.
* 
*         THE FOLLOWING COMMANDS CAN BE USED TO CHANGE PARAMETERS 
*         USED BY *TAF* AND THE DATA MANAGER FOR INITIALIZATION, AND
*         TO INITIALIZE VARIOUS FILES USED BY *TAF*.
 SCP      SPACE  4,20 
**        K.SCP=N.
* 
*         CHANGE THE NUMBER OF SUBCONTROL POINTS. 
* 
*         ENTRY  (X7) = NUMBER OF SUBCONTROL POINTS IN DISPLAY CODE.
* 
*         EXIT   TO *SKD1*.  *K-DISPLAY* AND REPORT UPDATED.
*                TO *SKD14* IF ERROR IN PARAMETER.
* 
*         USES   X - 1, 2, 3, 4, 5, 6, 7. 
*                A - 2, 6, 7. 
*                B - 2. 
* 
*         CALLS  CDD, DXB, UKD. 
  
  
 SCP      BSS    0           ENTRY
          BX5    X7 
          RJ     DXB         CONVERT EQUIVALENCED FIELD TO NUMBER 
          NZ     X5,SKD14    IF ERROR IN NUMBER 
          SX2    X6-MINSCP
          NG     X2,SKD14    IF INCORRECT SUBCP COUNT 
          SB2    X6-MAXSCP
          GT     B2,SKD14    IF INCORRECT SUBCP 
          BX1    X6 
          LX6    24 
          SA6    VNSCP       RESET SUBCP COUNT FOR INITIALIZATION 
          RJ     CDD         CONVERT DECIMAL TO DISPLAY CODE
          SA2    KSCP+1      *SCP* WORD IN DISPLAY
          SB5    DIS1+1      UPDATE REPORT
          SB6    B1 
          RJ     UKD         UPDATE THE *K-DISPLAY* AND REPORT
          EQ     SKD1        PROCESS NEXT INPUT 
 CMB      SPACE  4,20 
**        K.CMB=N.
* 
*         CHANGE THE NUMBER OF COMMUNICATION BLOCKS.
* 
*         ENTRY  (X7) = NUMBER OF COMMUNICATION BLOCKS IN DISPLAY 
*                      CODE.
* 
*         EXIT   TO *SKD1*.  *K-DISPLAY* AND REPORT UPDATED.
*                TO *SKD14* IF ERROR IN PARAMETER.
* 
*         USES   X - 1, 2, 3, 4, 5, 6, 7. 
*                A - 2, 6, 7. 
*                B - 2. 
* 
*         CALLS  CDD, DXB, UKD. 
  
  
 CMB      BSS    0           ENTRY
          BX5    X7 
          RJ     DXB         CONVERT DISPLAY CODE TO BINARY 
          NZ     X4,SKD14    IF ERROR IN NUMBER 
          SX2    X6-MINCMB
          NG     X2,SKD14    IF INCORRECT C.B. COUNT
          SB2    X6-MAXCMB
          GT     B2,SKD14    IF INCORRECT C.B. COUNT
          BX1    X6 
          LX6    24 
          SA6    VNCMB       RESET C.B. COUNT 
          RJ     CDD         LEFT JUSTIFY NUMBER
          SA2    KCMB+1      *CMB* WORD IN DISPLAY
          SB5    DIS2+1      UPDATE REPORT
          SB6    B1 
          RJ     UKD         UPDATE THE *K-DISPLAY* AND REPORT
          EQ     SKD1        PROCESS NEXT INPUT 
 REC      SPACE  4,15 
**        K.REC=AA. 
* 
*         SET USER RECOVERY, *CRM* RECOVERY, OR BOTH. 
* 
*         ENTRY  (X7) = USER RECOVERY OPTION. 
* 
*         EXIT   TO *SKD1*.  *K-DISPLAY* AND REPORT UPDATED.
*                TO *SKD14* IR ERROR IN PARAMETER.
* 
*         USES   X - 1, 2, 3, 7.
*                A - 1, 2, 6, 7.
* 
*         CALLS  SFN. 
  
  
 REC      BSS    0           ENTRY
          BX1    X7 
          RJ     SFN         SPACE FILL ANSWER
          SA1    RECA        *YES*
          SA2    A1+B1       *NO* 
          BX3    X1-X6
          SA1    RECB        *CRM*
          SX7    1           SET USER RECOVERY FLAG 
          ZR     X3,REC1     IF *YES* 
          BX3    X2-X6
          SX7    B0          TURN OFF USER RECOVERY FLAG
          ZR     X3,REC2     IF *NO*
          BX3    X1-X6
          NZ     X3,SKD14    IF INCORRECT INPUT 
          EQ     SKD1        PROCESS NEXT INPUT 
  
 REC1     SA1    VREC 
          BX7    X7+X1
 REC2     SA6    KREC+1 
          SA7    VREC        SET USER RECOVERY FLAG 
          SA6    DIS4+1      UPDATE REPORT
          EQ     SKD1        PROCESS NEXT INPUT 
  
 RECA     DATA   10HYES 
          DATA   10HNO
 RECB     DATA   10HCRM 
 MFL      SPACE  4,20 
**        K.MFL=NNNNNN. 
* 
*         CHANGE THE MAXIMUM FIELD LENGTH THAT *TAF* IS TO USE.  THIS 
*         PARAMETER IS ALSO DYNAMICALLY CHANGEABLE WHILE *TAF* IS 
*         RUNNING.
* 
*         ENTRY  (X7) = FIELD LENGTH IN DISPLAY CODE. 
* 
*         EXIT   TO *SKD1*.  *K-DISPLAY* AND REPORT UPDATED.
*                TO *SKD14* IF ERROR IN PARAMETER.
* 
*         USES   X - 1, 2, 3, 4, 5, 6, 7. 
*                A - 2, 6, 7. 
*                B - 2, 3, 4, 7.
* 
*         CALLS  COD, DXB, UKD. 
  
  
 MFL      BSS    0           ENTRY
          BX5    X7 
          SB7    B0          ASSUME OCTAL CONVERSION
          RJ     DXB         CONVERT DISPLAY CODE TO BINARY 
          SB7    5
          NZ     X4,SKD14    IF ERROR IN NUMBER 
          SX3    MAXMFL+1    MAXIMUM FIELD LENGTH ALLOWED 
          NO
          IX4    X6-X3
          PL     X4,SKD14    IF INCORRECT FILED LENGTH COUNT
          SX2    X6-MINMFL
          NG     X2,SKD14    IF INCORRECT FIELD LENGTH COUNT
          SA6    VMFL        RESET FIELD LENGTH VALUE 
          BX1    X6 
          RJ     COD         LEFT JUSTIFY NUMBER
          SA2    KMFL+1      *MFL* WORD IN DISPLAY
          SX3    1RB         ADD *B*
          SB5    DIS5+1      UPDATE REPORT
          SB6    B0 
          RJ     UKD         UPDATE THE *K-DISPLAY* AND REPORT
          EQ     SKD1        PROCESS NEXT INPUT 
 ECS      SPACE  4,15 
**        K.ECS=NNNNN.
* 
*         CHANGE THE EXTENDED MEMORY LENGTH REQUIRED FOR *TAF*. 
* 
*         ENTRY  (X7) = EXTENDED MEMORY FIELD LENGTH IN DISPLAY CODE. 
* 
*         EXIT   TO *SKD1*.  *K-DISPLAY* AND REPORT UPDATED.
*                TO *SKD14* IF ERROR IN PARAMETER.
* 
*         USES   X - 1, 2, 3, 4, 5, 6, 7. 
*                A - 2, 6, 7. 
*                B - 2, 3, 4, 7.
* 
*         CALLS  COD, DXB, UKD. 
  
  
 ECS      BSS    0           ENTRY
          BX5    X7 
          SB7    B0          ASSUME OCTAL CONVERSION
          RJ     DXB         CONVERT DISPLAY TO BINARY
          SB7    5
          NZ     X4,SKD14    IF ERROR IN NUMBER 
          SX3    MAXECS+1    MAXIMUM ECS FIELD LENGTH ALLOWED 
          IX4    X6-X3
          PL     X4,SKD14    IF MORE THAN MAXIMUM REQUESTED 
          SX2    X6-MINECS
          NG     X2,SKD14    IF LESS THAN MINIMUM REQUESTED 
          LX6    9
          SA6    VECS        SET EXTENDED MEMORY FIELD LENGTH 
          LX6    -9 
          BX1    X6 
          RJ     COD         CONVERT OCTAL TO DISPLAY 
          SA2    KECS+1      *EXTENDED MEMORY* WORD IN DISPLAY
          SX3    1RK         ADD *K*
          SB5    DIS6+1      UPDATE REPORT
          SB6    B0 
          RJ     UKD         UPDATE THE *K-DISPLAY* AND REPORT
          EQ     SKD1        PROCESS NEXT INPUT 
 TLF      SPACE  4,15 
**        K.TLF=FILE NAME.
* 
*         CHANGE THE NAME OF THE TASK LIBRARY FILE. 
* 
*         ENTRY  (X7) = TASK LIBRARY FILE NAME. 
* 
*         EXIT   TO *SKD1*.  *K-DISPLAY* AND REPORT UPDATED.
* 
*         USES   X - 1, 2, 3, 6, 7. 
*                A - 2, 6, 7. 
* 
*         CALLS  SFN, UKD.
  
  
 TLF      BSS    0
          SX6    B1 
          BX6    X6+X7       SET STATUS OF ONE
          SA6    VTFL 
          BX1    X7 
          RJ     SFN         SPACE FILL NAME
          SA2    KTLF+1      FILE NAME IN DISPLAY 
          BX4    X6 
          SB5    DIS7+1      UPDATE REPORT
          SB6    1
          RJ     UKD         UPDATE THE *K-DISPLAY* AND REPORT
          EQ     SKD1        PROCESS NEXT INPUT 
 INT      SPACE  4,30 
**        K.INT=P1,P2.
* 
*         INITIALIZE FILE COMMAND.
* 
*         P1 = CRF      - COMMUNICATIONS RECOVERY FILE. 
*              CRM      - *CRM* RECOVERY FILES. 
* 
*         P2 = ALL      - INITIALIZE ALL. 
*              NONE     - INITIALIZE NONE (RECOVER).
*              IJKLMNO  - INITIALIZE THOSE DEFINED BY THE 
*                         OCTAL DIGITS IN *IJKLMNO*.
*                         THIS OPTION NOT VALID FOR P1=CRM. 
*                         REPEATED USE OF THIS OPTION HAS 
*                         CUMULATIVE AFFECT IF DIFFERENT
*                         DIGITS ARE USED.
* 
*         ENTRY  (X7) = FIRST TEN CHARACTERS. 
*                (X6) = LAST CHARACTER. 
* 
*         EXIT   TO *SKD1*.  *K-DISPLAY* AND REPORT UPDATED.
*                TO *SKD14* IF ERROR IN PARAMETER.
* 
*         USES   X - ALL. 
*                A - 1, 2, 3, 4, 6, 7.
*                B - 2, 3, 5, 6.
* 
*         CALLS  SFN. 
  
  
 INT      BSS    0           ENTRY
          SA7    INTD        SAVE PARAMETERS
          SA6    INTE 
          MX0    24 
          BX4    X0*X7       EXTRACT FILE TYPE
          SA1    INTA-1 
 INT1     SA1    A1+B1
          ZR     X1,SKD14    IF INCORRECT FILE TYPE 
          BX2    X0*X1
          BX2    X4-X2
          NZ     X2,INT1     IF NO MATCH
          SB3    X1 
          JP     B3          JUMP TO PROCESSOR
  
*         PROCESS *CRF*.
  
 INT2     SX2    IPTAR
          SB2    MAXRC-1
          SB3    INTH 
          NZ     X2,INT3     IF AUTOMATIC RECOVERY DEFINED
          SA1    INTF 
          SA2    A1+B1
          BX6    X1 
          BX7    X2 
          SA6    KILL1       ADD SPECIFIC ERROR MESSAGE 
          SA7    A6+B1
          EQ     SKD14       DISPLAY ERROR MESSAGE
  
 INT3     LT     B2,INT4     IF ALL ID-S DONE 
          SA4    TREC+B2
          MX3    59 
          BX6    X3*X4       CLEAR RECOVERY BIT 
          SA6    B3+B2
          SB2    B2-B1
          EQ     INT3        NEXT ID
  
 INT4     SA4    INTE 
          BX6    X4 
          BX4    -X0*X7      FIRST WORD OF PARAMETER
          LX4    24 
          LX6    24 
          LX0    24 
          BX5    X0*X6
          BX5    X4+X5       NEXT TWO CHARACTERS
          SA1    INTB-1 
          BX6    X5          SAVE FOR DAYFILE MESSAGE 
          SA6    INTG 
          MX0    42 
          SB5    KINT+1      DISPLAY BUFFER ADDRESS TO ALTER
          SB6    DIS8+1      REPORT FILE BUFFER ADDRESS TO ALTER
 INT5     SA1    A1+B1
          ZR     X1,INT10    IF END OF LIST 
          BX2    X0*X1
          BX2    X5-X2
          NZ     X2,INT5     IF NO MATCH
          SX2    X1          STATUS  (INITIALIZE OR RECOVER)
          SB2    MAXRC-1
 INT6     LT     B2,INT7     IF ALL ID-S DONE 
          SA1    B3+B2
          SB2    B2-B1
          ZR     X1,INT6     IF NO *CRF* THIS ID
          BX6    X1+X2       SET STATUS 
          SA6    A1 
          EQ     INT6        NEXT ID
  
 INT7     SB2    MAXRC-1
 INT8     LT     B2,INT9     IF END OF LIST 
          SA3    INTH+B2
          BX6    X3 
          SA6    TREC+B2
          SB2    B2-B1
          EQ     INT8        NEXT ENTRY 
  
 INT9     SA1    INTD 
          RJ     SFN         SPACE FILL NAME
          SA6    B5          UPDATE *K-DISPLAY* 
          SA6    B6          UPDATE REPORT
          SA1    INTE        SEVENTH CHARACTER OF PARAMETER STRING
          ZR     X1,INT9.1   IF STRING IS LESS THAN 7 CHARACTERS
          SA2    B6+B1       *DIS8*+2 
          MX0    -54
          BX2    -X0*X2 
          BX6    X1+X2
          SA6    A2+
 INT9.1   RJ     SFN         SPACE FILL FILE NAME 
          SA6    B5+B1
          EQ     SKD1        PROCESS NEXT COMMAND 
  
 INT10    MX0    -6 
          SB2    7           MAXIMUM DIGITS IN STRING 
 INT11    EQ     B2,INT12    IF MAXIMUM DIGITS PROCESSED
          LX5    6
          BX2    -X0*X5      EXTRACT DIGIT
          ZR     X2,INT7     IF ALL DIGITS PROCESSED
          SX3    X2-1R0 
          NG     X3,SKD14    IF NOT NUMERIC 
          SX3    X2-1R8 
          PL     X3,SKD14    IF NOT OCTAL OR NUMERIC
          SX2    X2-1R0      DISPLAY TO BINARY
          SB2    B2-B1
          SA3    TREC+X2
          ZR     X3,INT11    IF NO *CRF* FOR THIS ID
          SX4    IST         INITIALIZE STATUS
          BX6    X3+X4
          SA6    INTH+X2
          EQ     INT11       NEXT DIGIT 
  
 INT12    LX5    6
          BX2    -X0*X5 
          NZ     X2,SKD14    IF GREATER THAN SEVEN DIGITS 
          EQ     INT7        MOVE DATA TO BUFFER
  
*         PROCESS CRM.
  
 INT13    BX4    -X0*X7 
          LX4    24          NEXT PARAMETER 
          SA1    INTB-1 
          MX0    42 
 INT14    SA1    A1+B1
          ZR     X1,SKD14    IF END OF LIST 
          BX2    X0*X1
          BX2    X4-X2
          NZ     X2,INT14    IF NO MATCH
          SA2    PRSA        FLAG WORD
          SX1    X1 
          LX1    TICRS
          MX3    59 
          LX3    TICRS
          BX6    X3*X2       CLEAR CRM RECOVERY BIT 
          BX6    X6+X1       ADD NEW *CRM* RECOVERY STATUS
          SA6    A2 
          SB5    KINC+1      *K-DISPLAY* BUFFER TO ALTER
          SB6    DIS9+1      REPORT BUFFER ADDRESS TO ALTER 
          EQ     INT9        UPDATE *K-DISPLAY* AND REPORT
  
*         TABLE OF VALID FIRST PARAMETERS.
  
 INTA     VFD    42/4LCRF,,18/INT2
          VFD    42/4LCRM,,18/INT13 
          CON    0           TABLE TERMINATOR 
  
*         TABLE OF VALID STATIC SECOND PARAMETERS.
  
 INTB     VFD    42/0LALL,18/IST
          VFD    42/0LNONE,18/RST 
          CON    0           TABLE TERMINATOR 
  
 INTD     CON    0           FIRST TEN CHARACTERS OF PARAMETER
 INTE     CON    0           LAST CHARACTER OF PARAMETER STRING 
 INTF     DATA   20HRECOVERY DISABLED.
 INTG     DATA   4LNONE      P2 FOR P1 = *CRF*
 INTH     BSSZ   MAXRC       TEMPORARY BUFFER 
 ERO      SPACE  4,20 
**        K.ERO=P1,P2.
* 
*         WHERE  P1 = CRF    COMMAND RELATES TO COMMUNICATIONS RECOVERY 
*                P2 = YES    OVERRIDE FILE ERRORS.
*                   = NO     DO NOT OVERRIDE FILE ERRORS. 
* 
*         THIS COMMAND PROVIDES THE CAPABILITY TO OVERRIDE I/O OR 
*         LOGICAL ERRORS IN THE *CRF* RECOVERY UNITS. 
* 
*         ENTRY  (X7) = OVERRIDE OPTION.
* 
*         EXIT   TO *SKD1*.  *K-DISPLAY* AND REPORT UPDATED.
*                TO *SKD14* IF ERROR IN PARAMETER.
* 
*         USES   X - 0, 1, 2, 4, 6, 7.
*                A - 1, 2, 6, 7.
*                B - 3, 5, 6. 
  
  
 ERO      BSS    0           ENTRY
          SA7    EROA        SAVE COMMAND PARAMETERS
          MX0    24 
          BX4    X0*X7       EXTRACT P1 
          SA1    EROB-1 
 ERO1     SA1    A1+B1       NEXT FILE TYPE 
          ZR     X1,SKD14    IF END OF LIST 
          BX2    X0*X1
          BX2    X4-X2
          NZ     X2,ERO1     IF NO MATCH
          SB3    X1 
          JP     B3          JUMP TO PROCESSOR
  
*         PROCESS *CRF*.
  
 ERO2     SX2    IPTAR
          NZ     X2,ERO3     IF AUTOMATIC RECOVERY ENABLED
          SA1    EROD 
          SA2    A1+B1
          BX6    X1 
          BX7    X2 
          SA6    KILL1       ADD SPECIFIC ERROR MESSAGE 
          SA7    A6+B1
          EQ     SKD14       DISPLAY SPECIFIC ERROR MESSAGE 
  
 ERO3     BX4    -X0*X7      EXTRACT P2 
          LX4    24 
          SA1    EROC-1 
 ERO4     SA1    A1+B1       NEXT OPTION
          ZR     X1,SKD14    IF END OF LIST 
          BX2    X0*X1
          BX2    X4-X2
          NZ     X2,ERO4     IF NO MATCH
          SX6    X1 
          SA6    OVRD        SET OVERRIDE FLAG
          SB5    KERO+1      *K-DISPLAY* BUFFER ADDRESS TO ALTER
          SB6    DIS10+1     REPORT FILE BUFFER ADDRESS TO ALTER
          SA1    EROA        GET COMMAND PARAMETERS 
          BX6    X1 
          SA6    B5+         UPDATE *K-DISPLAY* 
          SA6    B6          UPDATE REPORT
          EQ     SKD1        PROCESS NEXT COMMAND 
  
 EROA     CON    0           COMMAND PARAMETERS 
  
*         TABLE OF VALID FIRST PARAMETERS.
  
 EROB     VFD    42/4LCRF,,18/ERO2
          CON    0           TABLE TERMINATOR 
  
*         TABLE OF VALID SECOND PARAMETERS FOR P1 = *CRF*.
  
 EROC     VFD    42/0LYES,18/1
          VFD    42/0LNO,18/0 
          CON    0           TABLE TERMINATOR 
  
 EROD     DATA   20HRECOVERY DISABLED.
          TITLE  DISPLAY FORMATS. 
 BFL      SPACE  4,15 
***       K.BFL=N.
* 
*         CHANGE THE BASE FL FOR CMM. 
* 
*         EXIT   (VCMM) = 6/0,18/CMMTFL,18/CMMEFL,18/CMMBFL.
*                TO *SKD1* TO PROCESS NEXT INPUT. 
* 
*         USES   A - 1, 2, 6, 7.
*                B - 2, 3, 7. 
*                X - ALL. 
* 
*         CALLS  COD, DXB, UKD. 
  
  
 BFL      BSS    0           ENTRY
          BX5    X7 
          SB7    B0          ASSUME OCTAL CONVERSION
          RJ     DXB         CONVERT TO BINARY
          SB7    5
          NZ     X4,SKD14    IF ERROR IN NUMBER 
          SX2    X6-MINCMM
          NG     X2,SKD14    IF LESS THAN MINIMUM 
          SX4    MAXCMM 
          IX2    X4-X6
          BX1    X6 
          NG     X2,SKD14    IF GREATER THAN MAXIMUM
          SA2    VCMM        UPDATE BASE CMM FL 
          MX0    42 
          BX2    X0*X2
          BX6    X2+X6       ADD NEW BASE CMM FL
          SA6    A2 
          RJ     COD         CONVERT OCTAL TO DISPLAY 
          SA2    KBFL+1      *BFL* WORD IN DISPLAY
          SB5    DIS11+1     UPDATE REPORT
          SX3    1RB         ADD *B*
          SB6    B0 
          RJ     UKD         UPDATE THE *K-DISPLAY* AND REPORT
          EQ     SKD1        PROCESS NEXT INPUT 
 EFL      SPACE  4,15 
***       K.EFL=N.
* 
*         CHANGE THE EXPANDABLE FL FOR CMM. 
* 
*         EXIT   (VCMM) = 6/0,18/CMMTFL,18/CMMEFL,18/CMMBFL.
*                TO *SKD1* TO PROCESS NEXT INPUT. 
* 
*         USES   A - 1, 2, 6, 7.
*                B - 2, 3, 7. 
*                X - ALL. 
* 
*         CALLS  COD, DXB, UKD. 
  
  
 EFL      BSS    0           ENTRY
          BX5    X7 
          SB7    B0          ASSUME OCTAL CONVERSION
          RJ     DXB         CONVERT TO BINARY
          SB7    5
          NZ     X4,SKD14    IF ERROR IN NUMBER 
          NG     X2,SKD14    IF LESS THAN MINIMUM 
          SX4    MAXCME 
          IX2    X4-X6
          BX1    X6 
          NG     X2,SKD14    IF GREATER THAN MAXIMUM
          SA2    VCMM        UPDATE BASE CMM FL 
          MX0    42 
          LX0    18 
          BX0    X0*X2
          LX6    18 
          BX6    X0+X6       ADD NEW EXPANDABLE CMM FL
          SA6    A2 
          RJ     COD         CONVERT OCTAL TO DISPLAY 
          SA2    KEFL+1      *EFL* WORD IN DISPLAY
          SX3    1RB         ADD *B*
          SB5    DIS12+1     UPDATE  REPORT 
          SB6    B0 
          RJ     UKD         UPDATE THE *K-DISPLAY* AND REPORT
          EQ     SKD1        PROCESS NEXT INPUT 
 TFL      SPACE  4,15 
***       K.TFL=N.
* 
*         CHANGE THE TARGET FL FOR CMM. 
* 
*         EXIT   (VCMM) = 6/0,18/CMMTFL,18/CMMEFL,18/CMMBFL.
*                TO *SKD1* TO PROCESS NEXT INPUT. 
* 
*         USES   X - ALL. 
*                A - 1, 2, 6, 7.
*                B - 2, 3, 7. 
* 
*         CALLS  COD, DXB, UKD. 
  
  
 TFL      BSS    0           ENTRY
          BX5    X7 
          SB7    B0          ASSUME OCTAL CONVERSION
          RJ     DXB         CONVERT TO BINARY
          SB7    5
          NZ     X4,SKD14    IF ERROR IN NUMBER 
          SX4    MINCMT 
          IX2    X6-X4
          NG     X2,SKD14    IF LESS THAN MINIMUM 
          SX4    MAXCMT 
          IX2    X4-X6
          BX1    X6 
          NG     X2,SKD14    IF GREATER THAN MAXIMUM
          SA2    VCMM        UPDATE TARGET CMM FL 
          MX0    -36
          LX6    36 
          BX0    -X0*X2 
          BX6    X0+X6
          SA6    A2 
          RJ     COD         CONVERT OCTAL TO DISPLAY 
          SA2    KTFL+1      *TFL* WORD IN DISPLAY
          SX3    1RB         ADD *B*
          SB5    DIS13+1     UPDATE REPORT
          SB6    B0 
          RJ     UKD         UPDATE THE *K-DISPLAY* AND REPORT
          EQ     SKD1        PROCESS NEXT INPUT 
 STP      SPACE  4,10 
***       K.STOP. 
* 
*         PROCESS *K.STOP* COMMAND. 
* 
*         EXIT   (B5) = ADDRESS OF MESSAGE. 
*                EXIT TO ERR SUBROUTINE TO ABORT *TAFREC*.
* 
*         USES   B - 5. 
  
  
 STP      BSS    0           ENTRY
          SA2    KCOF        COMMAND ORIGIN 
          NZ     X2,STP1     IF NOT CONSOLE ORIGIN
          CONSOLE  SKDB      TURN OFF *K-DISPLAY* 
 STP1     SB5    STPA        *OPERATOR TERMINATION.*
          EQ     ERR         ABORT
  
 STPA     DATA   C* OPERATOR TERMINATION.*
 UKD      SPACE 4,15
**        UKD    UPDATE THE *K-DISPLAY* AND REPORT. 
* 
*         ENTRY  (X2) = DISPLAY WORD. 
*                (X3) = INSERT CHARACTER, IF (B6).EQ.0. 
*                (X4) = DISPLAY CODE CONVERSION LEFT JUSTIFIED. 
*                (A2) = ADDRESS OF WORD IN DISPLAY. 
*                (B2) = 6*COUNT OF DIGITS CONVERTED.
*                (B5) = ADDRESS OF THE DISPLAY WORD.
*                (B6) = 1 IF WORD ALREADY PARTIALLY FORMATTED.
*                     = 0 IF WORD NOT FORMATTED.
* 
*         EXIT   *K-DISPLAY* AND REPORT UPDATED.
* 
*         USES   X - 1, 2, 3, 4, 5, 6, 7. 
*                A - 7. 
*                B - 2, 3, 4. 
  
  
 UKD      SUBR
          NZ     B6,UKD1     IF PARTIALLY FORMATTED 
          MX5    1
          SB3    B2-B1
          SB4    B3+6 
          AX6    X5,B3       MASK FOR NUMBER
          AX5    X5,B4       MASK FOR BLANKS LESS ONE 
          SB2    -B2
          SB4    54+B2       SHIFT COUNT TO POSITION THE CHARACTER
          LX3    X3,B4
          BX1    X6*X4       NUMBER 
          IX1    X1+X3       ADD CHARACTER
          BX2    -X5*X4 
          BX4    X1+X2       ADD IN BLANKS
 UKD1     BX7    X4 
          SA7    A2          UPDATE *K-DISPLAY* 
          SA7    B5+         UPDATE REPORT
          EQ     UKDX        RETURN 
          SPACE  4,10 
*         DEFINE INITIAL *K-DISPLAY* BY MICROS. 
  
  
 HHED     MICRO  1,,*TRANSACTION EXECUTIVE INITIALIZATION OPTIONS*
 HHEC     MICRO  1,,*TAF INITIALIZATION OPTIONS*
 HOPD     MICRO  1,,*OPTION                         DESCRIPTION*
 MSCP     MICRO  1,17,*SCP = "NSCPM"          * 
 HSCP     MICRO  1,,*SUB CONTROL POINTS ("MINSCPM" - "MAXSCPM").* 
 MCMB     MICRO  1,17,*CMB = "NCMBM"         *
 HCMB     MICRO  1,,*COMMUNICATION BLOCKS ("MINCMBM" - "MAXCMBM").* 
 MREC     MICRO  1,,*REC = NO         * 
 HREC     MICRO  1,,*RECOVERY MODE (YES OR NO).*
 MMFL     MICRO  1,17,*MFL = "SCMFLM"B     *
 HMFL     MICRO  1,,*MAXIMUM FIELD LENGTH ("MINMFLM"B - "MAXMFLM"B).* 
 MECS     MICRO  1,17,*ECS = "ECSFLM"K         *
 HECS     MICRO  1,,*EXTENDED MEMORY FIELD LENGTH ("MINECSM"K - "MAXECSM
,"K).*
 MTLF     MICRO  1,17,*TLF = "TLFM"          *
 HTLF     MICRO  1,,*TASK LIBRARY FILE (1-7 CHARACTERS).* 
 MINT     MICRO  1,,*INT = CRF,NONE   * 
 HINT     MICRO  1,,*INITIALIZE CRF RECOVERY FILES [NONE,ALL OR*
 AINT     MICRO  1,,*1-7 DIGITS].*
 MINC     MICRO  1,,*INT = CRM,NONE   * 
 HINC     MICRO  1,,*INITIALIZE CRM RECOVERY FILES (NONE OR ALL).*
 MERO     MICRO  1,,*ERO = CRF,NO     * 
 HERO     MICRO  1,,*ERROR OVERRIDE (YES OR NO).* 
 MBFL     MICRO  1,17,*BFL = "CMMBFLM"B     * 
 HBFL     MICRO  1,,*CMM BASE FL ("MINCMMM"B - "MAXCMMM"B).*
 MEFL     MICRO  1,17,*EFL = "CMMEFLM"B         * 
 HEFL     MICRO  1,,*CMM EXPANDABLE FL (0 - "MAXCMEM"B).* 
 MTFL     MICRO  1,17,*TFL = "CMMTFLM"B     * 
 HTFL     MICRO  1,,*CMM TARGET FL ("MINTMEM"B - "MAXTMEM"B).*
          SPACE  4,10 
*         *K-DISPLAY* BUFFER FOR THE OPERATOR CONSOLE.
  
  
 KCTRL    VFD    24/KBUF,18/0,18/KDIS 
 KBUF     BSS    5           KEYBOARD BUFFER
          DATA   1L.         ALLOW COMMANDS WITHOUT TERMINATOR
 KDIS     VFD    12/0,36/0,12/2 
          KDL    20,T,("HHEC")
          KDL    6,H,("HOPD") 
 KSCP     KDL    1,,("MSCP")
          KDL    21,K,("HSCP")
 KCMB     KDL    1,,("MCMB")
          KDL    21,K,("HCMB")
 KREC     KDL    1,,("MREC")
          KDL    21,K,("HREC")
 KMFL     KDL    1,,("MMFL")
          KDL    21,K,("HMFL")
 KECS     KDL    1,,("MECS")
          KDL    21,K,("HECS")
 KTLF     KDL    1,,("MTLF")
          KDL    21,H,("HTLF")
 KINT     KDL    1,,("MINT")
          CHAR   1R[,1R(
          CHAR   1R],1R)
          CODE   O
          KDL    21,K,("HINT")
          KDL    21,K,("AINT")
          CODE   *
 KINC     KDL    1,,("MINC")
          KDL    21,K,("HINC")
 KERO     KDL    1,,("MERO")
          KDL    21,H,("HERO")
 KBFL     KDL    1,,("MBFL")
          KDL    21,K,("HBFL")
 KEFL     KDL    1,,("MEFL")
          KDL    21,K,("HEFL")
 KTFL     KDL    1,,("MTFL")
          KDL    21,K,("HTFL")
 KBUF1    KDL    1,I,(
,       ) 
 KILL     KDL    7,M,(FORMAT ERROR.  )
 KILL1    BSSZ   2           SPECIFIC ERROR MESSAGE 
          BSSZ   1
 KILL2    KDL    7,M,(FORMAT )  DUPLICATE FIRST LINE OF ERROR MESSAGE 
  
*         Y-COORDINATE TABLE. 
  
 KPRS     KDL    *
          SPACE  4,10 
 PRK      HERE               REMOTE BLOCK FROM *COMCDCP*
          SPACE  4,10 
*         *K-DISPLAY* BUFFER FOR REPORT FILE. 
  
          CHAR   1R[,1R(
          CHAR   1R],1R)
          CODE   O
 DISP     DATA   C*                       "HHEC"* 
          DATA   1L 
          DATA   C*         "HOPD"* 
          DATA   1L 
 DIS1     DATA   C*    "MSCP"   "HSCP"* 
 DIS2     DATA   C*    "MCMB"   "HCMB"* 
 DIS4     DATA   C*    "MREC"   "HREC"* 
 DIS5     DATA   C*    "MMFL"   "HMFL"* 
 DIS6     DATA   C*    "MECS"   "HECS"* 
 DIS7     DATA   C*    "MTLF"   "HTLF"* 
          DATA   1L 
          CHAR   1R[,1R(
          CHAR   1R],1R)
          CODE   O
 DIS8     DATA   C*    "MINT"   "HINT"* 
          DATA   C*                        "AINT"*
          CODE   *
 DIS9     DATA   C*    "MINC"   "HINC"* 
 DIS10    DATA   C*    "MERO"   "HERO"* 
          DATA   1L 
 DIS11    DATA   C*    "MBFL"   "HBFL"* 
 DIS12    DATA   C*    "MEFL"   "HEFL"* 
 DIS13    DATA   C*    "MTFL"   "HTFL"* 
 DISPL    EQU    *-DISP 
          TITLE  FETS AND COMMON DECKS. 
*         FETS USED IN *PRESET*.
  
 TCF      BSS    0           *TAF* CONFIGURATION FILE 
 TCF      FILEB  TCBUF,TCBUFL,EPR,FET=13
  
 N        BSS    0           NETWORK FILE 
 NETWORK  FILEB  NBUF,NBUFL,EPR,FET=12
  
  
*         TAGS NEEDED FOR ASSEMBLY OF *COMCRTN*.
  
 VBPT     EQU    3           ADDITIONAL PLT WORDS FOR HIGH SPEED LINES
 ABMA     CON    0           NUMBER OF ADDITIONAL HIGH SPEED LINES
          SPACE  4,10 
*         COMMON DECKS USED IN *PRESET*.
  
*CALL     COMSNET 
*CALL     COMCARG 
*CALL     COMCRDC 
*CALL     COMCRDS 
*CALL     COMCRTN 
*CALL     COMCUPC 
          SPACE  4,10 
 ENDP     EQU    *           END OF PRESET CODE 
 BUFFERS  TITLE  BUFFERS. 
*         BUFFERS.
  
 TRBUF    EQU    PRS               COMMUNICATIONS RECOVERY FILE 
 TRBUFL   EQU    7*64+2 
  
 TABUF    EQU    TRBUF+TRBUFL      ALTERNATE  RECOVERY FILE 
 TABUFL   EQU    7*64+1 
  
 PBUF     EQU    TABUF+TABUFL      PRU BUFFER 
 PBUFL    EQU    7*64 
  
 DIR      EQU    PBUF+PBUFL        DIRECTORY OF RECOVERY UNITS
 DIRL     EQU    RUDL*IPTST 
  
 TCBUF    EQU    ENDP              *TAF* CONFIGURATION FILE 
 TCBUFL   EQU    2*64+1 
  
 NBUF     EQU    TCBUF+TCBUFL      NETWORK FILE 
 NBUFL    EQU    4*64+1 
  
 BRTN     EQU    NBUF+NBUFL  SCRATCH AREA FOR *COMCRTN* 
 BRTNL    EQU    IPTST
  
 TBUF     EQU    BRTN+BRTNL  TAF INITIALIZATION FILE
 TBUFL    EQU    3*64+1 
  
 RBUF     EQU    TBUF+TBUFL        RECOVERY REPORT FILE 
 RBUFL    EQU    4*64+1 
  
 RWSA     EQU    RBUF+RBUFL  *WSA* FOR REPORT FILE
 RWSAL    EQU    8
  
 TSTLW    EQU    RWSA+RWSAL        TERMINAL STATUS TABLE LENGTH WORD
 TSTHD    EQU    TSTLW+1           TST HEADER 
 TST      EQU    TSTHD+TTFTL       START OF TST 
 TSTL     EQU    TSTLLE*IPTST      STORAGE FOR TST
  
 RFL=     EQU    TST+TSTL 
  
          END 
