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