(George Source)
Macros used: BLOCK, BXE, BXGE, BXU, CHAIN, FINDPEREC, FIXTRA, JBUSY, LBSUN, MASK, PMBSNUM, PMCORES, PMESSAGE, SEGENTRY, SETBIT
22FL #OPT K0PMFS=0 22^= #LIS K0PMFS>K0POST>K0ALLGEO 23DW #SEG PMFS85 [M.C.D. MANN 23YG # THIS SEGMENT GIVES A POSTMORTEM OF FILE STORE RELEVANT 24D6 # ONLY TO THE CURRENT JOB OR,IF THERE IS NO CURRENT JOB, 24XQ # THAT RELEVANT ONLY TO THE CURRENT ACTIVITY.ALL 25CB # MONITORING FILES OPEN AT SYSTEM BREAK TIME WILL BE 25X2 # LISTED AND IF ANY CHAINS OR RINGS ARE FOUND TO BE 26BL # BROKEN THEN ALL JOBS WILL BE TREATED IN THE SAME WAY 26W= # AS THE CURRENT ONE. 27*W # 27TG 8HPMFS 28*6 # 28SQ # ENTRY POINT TABLE 29#B # 29S2 SEGENTRY K1PMFS,XK1PMFS 2=?L # 2=R= # TABLE USED BY RESTORE TIME MACRO TO CONTAIN NAMES OF FILES WHICH 2?=W # ARE TO BE PRINTED IN FULL BY PMFS 2?QG # 2#=6 FIXTRA AFRESBS 2#PQ XAFRESBS +RESBS [END OF PMFS 2*9B FIXTRA FNUMBER [USED FOR REMAINDER WHEN PRINTING 2*P2 NUMBER +0 [IN BLOCK FORMAT 2B8L FIXTRA JTFCB 2BN= TFCB +FILE+FCB 2C7W FIXTRA JTRDATUM 2CMG PTRDATUM +0 [PTR.TO F.DESC.TABLE FOR B/S 2D76 FIXTRA JXFCB 2DLQ XFCB +0 [ADDR. OF FILE/FCB BLOCK 2DW3 ... FIXTRA JMASK1 2F5# ...MASK1 #77777777 2F#K ... FIXTRA JXBITAB 2FHW ...XBITAB [BIT MAP AREA 2FR7 ...#REP 21 2G2D ... 0 2G9P ...XBITEND [END OF BIT MAP AREA 2GF2 ...XJFULLTAB [LIST OF FILES TO BE PRINTED 2GN? ... 12HSYSTEM 2GXJ ... 12HIDF 2H6T ... FIXTRA JFULLTAB [MENDABLE VIA "PMFILE" MACRO 2HB6 ...#GAP 30 2HKC ... FIXTRA JTABEND 2HSN ... 0 [ZERO RECORD AT END OF TABLE 2HYC ... FIXTRA JBSREC 2J46 XBSREC 2JHQ #GAP K53-K50 [DEVICE LIST RECORD 2K3B +0 2K55 ...#SKI G3 2K6S ...( 2K8H ... FIXTRA JJZDECANT 2K== ... BRN ZDECANT2 2K?^ ...# 2K*N ...RECSW +0 2KCC ...PAGES +0 2KF6 ...) 2KH2 MASK #17777777 2L^W MASK2 #77777 2MFG MASKCGC #03400000 [CLEAN/GENERAL/COPY MODE MASK 2M^6 MJOBDES 4HB5B1 [LANGUAGE CODE - JOB DESCRIPTION FILE 2NDQ MONFILE 4HB1B0 [ - MONITORING FILE 2NYB MDIR 4HC1 [ - DIRECTORY FILE 2PD2 MSYST 4HB1 [ - SYSTEM FILE 2PXL MBLKNO +0 [USED TO STORE BLOCK NUM 2QC= SUMCORE +0 [CHECKSUM OF BLOCK IN CORE 2QWW RESH1 4H : [COLON TO PRECEDE USER NAME 2RBG NGEN +0 [GEN NO. - 1 IF DIRECTORY ELSE FGEN 2RW6 TFSTACK +FILE+FSTACK 2S*Q TFURB +FILE+FURB 2STB TFUWB +FILE+FUWB 2T2J ...TFURRB +FILE+FURRB 2T7Q ...TFURWB +FILE+FURWB 2T*2 SPACES 2TSL #REPT 3 [USED BY ZDECANT TO STORE 2W#= 4H [LOCAL NAME AS SPACES 2WRW TWTY +19 2X?G X24 +24 2XR6 XACT #60 2Y=Q XLINK0 +0 2YQB XLINK1 +0 2^=2 XLINK2 +0 34MB XX3 +0 [USED TO 3572 XX5 +0 [PRESERVE 35LL XX7 +0 [ACCS. 366= PREF +0 [LOGICAL FILE NO 36KW RBACKPR +0 [ADDR. OF CURRENT ELEMENT ON RING 375G SBACKPR +0 [ADDR. OF CURRENT BLOCK ON CHAIN 37K6 SYSTDIR +0 [NON-ZERO IF DIRECTORY OF SYSTEM FILE 384Q XBACTRING +0 [ADDR. OF ACTRING WORD OF CURRENT 38JB [ACTIVITY BLOCK 3942 XBFILER +0 [BASE OF AN ACTIVITY'S FILE RING 39HL XBLIST +0 [BLOCK LIST MODIFIER WORD 3=3= XBRIND +0 [ZBLXPRINT CHAIN BREAK IND 3=GW XBSCOMP +0 [B/S COMPARISON MARKER 3?2G XCGC +0 [SET NON-ZERO IF FILE OPEN IN ANY OF 3?G6 [CLEAN/GENERAL/COPY MODES 3?^Q XCOND LDX 1 ALFTP [DATA 3#FB LDX 1 AFDTP 3#^2 LDN 1 0 [BREAK IN INDEX CHAIN 3*DL XCOUNT +0 [COUNT OF ELEMENTS IN FSTACK BLOCK 3*Y= XFCBLEN +0 [SET TO NO.OF BLOCKS OF FCB+1 3BCW XJOBNO +0 [CURRENT ACTIVITY'S JOB NO. 3BXG XNEXTACT +0 [USED BY NEXTACT - CONTAINS ADDR. OF 3CC6 [BLOCK ON ACT. RING 3CWQ XPRINTED +0 [BLOCKS PRINTED IND. 3DBB UFSTACK +0 [ADDR. OF FILE/FSTACK BLOCK 3DW2 USER0 +0 [SET IF LOCALNAME OF JFULLTAB ENTRY 0 3F*L TEXT0 8HEND OF 3FT= TEXT1 20HFILESTORE POSTMORTEM 3G#W TEXT2 20HFSTACK BLOCK CORRUPT 3GSG TEXT3 20HFGN/LNG= / 3H#6 TEXT4 20HNO BLOCKS TO PRINT 3HRQ TEXT5 40HTHE FOLLOWING BLOCK IS PRINTED FROM CORE 3J?B TEXT6 52HCORE VERSION DIFFERS FROM B/S : B/S VERSION FOLLOWS 3JR2 TEXT7 8HBLOCK 3K=L TEXT8 44HB/S TRANSFER IMPOSSIBLE-INDEX CHAIN CORRUPT 3KQ= TEXT9 40HLOGICAL FILE DOES NOT EXIST 3L9W TEXT12 16HMONITORING FILES 3LPG TEXT13 36HFULL PRINT OF FILES REQUIRED ENSUES 3M96 TEXT14 48HCHAIN/RING BREAK FOUND:FULL FILESTORE PM ENSUES 3MDY ...TEXT15 13HBLOCK CORRUPT 3MNQ # 3N8B # ROUTINE TO GET ADDR. OF NEXT BLOCK ON CHAIN AND VALIDATE ITS 3NN2 # FORWARD POINTER 3P7L # 3PM= # ENTRY X0=LINK 3Q6W # SBACKPR=ADDR. OF CURRENT BLOCK 3QLG # 3R66 # EXIT 0 1 IF POINTERS OF NEXT BLOCK OK. 3RKQ # X2 & SBACKPR = ADDR. OF NEXT BLOCK 3S5B # EXIT 0 0 IF CHAIN BREAK DETECTED 3SK2 # 3T4L SEARCH [FORWARD CHAINING 3TJ= SMO SBACKPR(1) 3W3W LDX 2 FPTR [LOAD ADDR. OF NEXT BLOCK 3WHG SEARCHA [TO VALIDATE FPTR OF BLOCK 3X36 LDX 3 FPTR(2) 3XGQ S3 STO 2 SBACKPR(1) [STORE BLOCK ADDR. 3Y2B S2 PMCORES 3,S1 [J IF FORWARD PTR INVALID 3YG2 EXIT 0 1 [OK 3Y^L S1 EXIT 0 0 [CORRUPTION 3^F= # 3^YW SEARCHB [BACKWARD CHAINING 42DG SMO SBACKPR(1) 42Y6 LDX 2 BPTR [LOAD ADDR. OF NEXT BLOCK 43CQ SEARCHC [TO VALIDATE FORWARD PTR 43XB LDX 3 BPTR(2) 44C2 BRN S3 44WL # 45B= # ROUTINE TO GET ADDR.OF NEXT ELEMENT ON RING AND VALIDATE ITS 45TW # FORWARD POINTER 46*G # 46T6 # ENTRY X0=LINK 47#Q # RBACKPR=ADDR. OF CURRENT ELEMENT 47SB # 48#2 # EXIT 0 1 IF POINTERS OF NEXT ELEMENT OK 48RL # X2 & RBACKPR = ADDR. OF NEXT ELEMENT 49?= # EXIT 0 0 IF CHAIN BREAK DETECTED 49QW # 4==G RSEARCH [FORWARD RINGING 4=Q6 SMO RBACKPR(1) 4?9Q LDX 2 0 [LOAD ADDR. OF NEXT ELEMENT 4?PB RSEARCHA [TO VALIDATE FORWARD PTR OF ELEMENT 4#92 LDX 3 0(2) 4#NL STO 2 RBACKPR(1) [STORE ELEMENT ADDR. 4*8= BRN S2 4*MW # 4B7G # ROUTINE TO GET ADDR. OF NEXT ELEMENT ON ACT. RING AND VALIDATE 4BM6 # ITS POINTERS.THIS ROUTINE IS USED EXCLUSIVELY BY ZGETACT. 4C6Q # 4CLB # ENTRY X0=LINK 4D62 # XNEXTACT=ADDR. OF CURRENT ELEMENT 4DKL # 4F5= # EXIT 1 IF POINTERS OF NEXT ELEMENT OK 4FJW # X2 & XNEXTACT = ADDR. OF NEXT ELEMENT 4G4G # EXIT 0 IF CHAIN BREAK DETECTED 4GJ6 # 4H3Q NEXTACT [FORWARD RINGING 4HHB SMO XNEXTACT(1) 4J32 LDX 2 0 [LOAD ADDR. OF NEXT ELEMENT 4JGL LDX 3 1(2) 4K2= TXU 3 XNEXTACT(1) 4KFW BCS S1 [J IF ELEMENTS BACKWORD PTR CORRUPT 4K^G NEXTACTA 4LF6 LDX 3 0(2) 4LYQ STO 2 XNEXTACT(1) [STORE ELEMENT ADDR. 4MDB BRN S2 4MY2 # 4NCL # THIS ROUTINE IS TO FIND THE BLOQPTR AND EXPECTS 'CALL 3 ' TO BE 4NX= # FOLLOWED BY - +BSTB+(?)*#10000 4PBW # 4PWG # ENTRY X3=LINK 4QB6 # 4QTQ # EXIT 1 - X1=BLOQPTR 4R*B # 4RT2 MHUNTIL 4S#L LDN 1 BINDEX 4SS= LDX 1 FPTR(1) 4T?W PMCORES 1,WRONG2 4TRG LDX 0 ATYPE(1) 4W?6 SBX 0 0(3) [TEST FOR REQ'D BLOCK 4WQQ BZE 0 OUT [EXIT IF REQ'D BLOCK 4X=B LDX 0 FPTR(1) 4XQ2 SBN 0 BINDEX 4Y9L BNZ 0 MHUNTIL+1 [J IF NOT BASE OF CHAIN 4YP= WRONG2 4^8W LDX 7 FXPM2 [INDEX CHAIN IS BROKEN 4^NG TRYAGAIN 5286 SMO 7 52MQ OBEY XCOND [PICK UP TABLE ADDRESS 537B BZE 1 MIND [J AS BLOCK NOT FOUND - CORRUPTION 53M2 PMCORES 1,MIND 546L LDX 0 ATYPE(1) 54L= SBX 0 0(3) 555W BZE 0 OUT [J IF REQ'D BLOCK 55KG ADN 7 1 5656 BRN TRYAGAIN 56JQ OUT EXIT 3 1 574B MIND LDX 3 FXPM2 57J2 PMESSAGE TEXT8(3),11 583L LDX 1 FXPM2 [EXIT FROM ZBLKPRINT ROUTINE 58H= LDX 0 XLINK2(1) 592W EXIT 0 0 59GG # 5=26 # ROUTINE TO PRINT A BLOCK OF A FILE DEFINED BY CURRENT FCB AND A 5=FQ # BLOCK LIST WORD MODIFIER.ALSO THE ROUTINE WILL COMPARE THE BLOCK 5=^B # IN CORE WITH ITS B/S ORIGIN UNDER CERTAIN CIRCUMSTANCES AND IF 5?F2 # DIFFERENT WILL PRINT THE B/S VERSION. 5?YL # 5#D= # ENTRY X0=LINK 5#XW # XBLIST=BLOCK LIST MODIFIER WORD 5*CG # XFCB=ADDR. OF FILE/FCB BLOCK 5*X6 # 5BBQ # EXIT 0 5BWB # ALL ACCS. UNDEFINED 5CB2 ZBLKPRINT 5CTL STO 0 XLINK2(1) 5D*= STOZ XBSCOMP(1) [CLEAR B/S COMPARISON MARKER 5DSW LDX 2 XFCB(1) 5F#G SMO XBLIST(1) 5FS6 LDX 4 FBLKS(2) [LOAD BLOCK NO. OF REQUIRED BLOCK 5G?Q STO 4 MBLKNO(1) 5GRB CALL 0 SEARCHA [VALIDATE FCBS FPTR 5H?2 BRN ZBREAK [J IF CHAIN BREAK 5HQL ZB1 CALL 0 SEARCH [GET ADDR. OF NEXT BLOCK ON CHAIN 5J== BRN ZBREAK [J IF CHAIN BREAK(POINTERS INVALID) 5JPW LDX 6 ATYPE(2) 5K9G SRL 6 12 5KP6 TXU 6 TFCB(1) 5L8Q BCC ZB7 [J IF ANOTHER FILE/FCB BLOCK 5L=^ ... BXE 6 TFSTACK(1),ZB1 5L*8 ... BXE 6 TFURB(1),ZBUB 5LCC ... BXE 6 TFUWB(1),ZBUB 5LFL ... BXE 6 TFURRB(1),ZBUB 5LHT ... BXU 6 TFURWB(1),ZB1 5LL4 ...ZBUB [USAGE BLOCK FOUND 5LNB TXU 4 BACK2(2) 5M82 BCS ZB1 [J IF NOT REQUIRED BLOCK NO. 5MML LDX 5 XAFRESBS(1) 5N7= LDN 4 A1(2) 5NLW MOVE 4 0 [MOVE BLOCK TO END OF PMFS 5P6G TXU 6 TFURB(1) 5PL6 BCC ZBCHSUM [J IF FILE/FURB TO CHECKSUM BLOCK 5Q5Q TXU 6 TFUWB(1) 5QKB BCS ZBPRINT [J IF NOT FILE/FUWB & DON'T CHECKSUM( 5R52 LDX 7 XCGC(1) [IF CLEAN/GENERAL/COPY SWITCH 5RJL BZE 7 ZBPRINT [UNSET,DON'T CHECKSUM 5S4= # NOW TO CHECKSUM BLOCK 5SHW ZBCHSUM 5T3G STO 6 XBSCOMP(1) [SET B/S COMPARISON MARKER 5TH6 SUM 3 0 [CALCULATE CHECKSUM 5W2Q STO 3 SUMCORE(1) 5WGB ZBPRINT 5X22 PMESSAGE TEXT5(1),10 ['THE FOLLOWING BLOCK IS PRINTED 5XFL [FROM CORE' 5X^= ZB2 LDN 4 TEXT7(1) 5YDW LDX 5 JPMOD 5YYG ADN 5 2 5^D6 MVCH 4 5 [STORE 'BLOCK' IN BUFFER 5^XQ BCHX 5 £ 62CB STO 5 JPMOD 62X2 LDX 5 XBLIST(1) 63BL CALL 7 (JDECN) [CONVERT & STORE BLOCK LIST MODIFIE 63W= CALL 7 (JUP) 64*W +3 64TG LDX 5 MBLKNO(1) 65*6 CALL 7 (JOCT) [CONVERT & STORE BLOCK NO. 65SQ CALL 7 (JPRINT2) 66#B # NOW TO PRINT BLOCK 66S2 ZB3 SMO FXPM1 67?L STOZ FMODBLK [INITIALISE BLOCK MODIFIER 67R= LDN 3 512 68=W STO 3 NUMBER(1) 68QG LDN 4 0 [INITIALISE LINE MODIFIER 68T5 ...#SKI G3 68XN ...( 692? ... LDX 5 RECSW(1) [ARE WE PRINTING RECALL FILE 694W ... BNG 5 RECP1 [YES 697F ...) 69=6 LDX 5 TEXT3+4(1) [LOAD FILES LANGUAGE CODE 69PQ TXU 5 MONFILE(1) 6=9B BCC ZBCHAR 6=P2 TXU 5 MJOBDES(1) 6?8L BCS ZBLOCK 6?N= # MONITORING & JOB DESCRIPTION FILES ARE NOW PRINTED IN CHARACTER 6#7W # FORMAT 6#MG ZBCHAR 6*76 CALL 7 (JPRINT1) 6*LQ LDN 3 512 6B6B SMO FXPM1 6BL2 STO 3 FREMAIN [SET REMAINDER 6C5L LDN 1 0 [INITIALISE WORD MODIFIER 6CK= ZB4 LDX 7 FXPM1 6D4W ADX 7 FPRRCD 6DJG CALL 3 (7) [NOW PRINT IN CHARACTER FORMAT 6F46 BRN ZB4 [J TO PRINT NEXT RECORD 6FHQ BRN ZB6 [J AS BLOCK PRINTED 6G3B [ERROR SO PRINT IN BLOCK FORMAT 6GH2 # PRINT IN BLOCK FORMAT 6H2L ZBLOCK 6HG= LDX 7 FXPM1 6H^W ADX 7 FPRLIN 6JFG CALL 3 (7) [NOW PRINT IN BLOCK FORMAT 6J^6 LDX 1 FXPM2 6KDQ TXU 4 TWTY(1) 6KYB BCC ZB5 [J AS FIRST/NEXT 128 WORDS PRINTED 6LD2 BUX 4 ZBLOCK 6LXL ZB5 LDX 0 NUMBER(1) 6MC= SBN 0 129 6MWW BNG 0 ZB6 [J IF ALL PRINTED 6NBG CALL 7 (JPRINT1) 6NW6 LDN 4 0 6P*Q LDN 5 128 6PTB SBS 5 NUMBER(1) 6Q*2 SMO FXPM1 6QSL ADS 5 FMODBLK 6R#= BRN ZBLOCK [J TO PRINT NEXT 128 WORDS 6RRW ZB6 LDX 1 FXPM2 6S?G LDX 5 XBSCOMP(1) 6SR6 BZE 5 ZEX [EXIT IF B/S COMPARISON NOT REQUIRED 6T=Q BRN ZB7 6T?6 ...#SKI G3 6T?G ...( 6T?W ...# 6T#= ...# PRINT OF RECALL FILE 6T#L ...RECP1 6T*2 ... LDX 1 FXPM1 6T*B ... LDX 7 FXPM1 6T*Q ... ADX 7 JRECBLK 6TB6 ... CALL 0 (7) 6TBG ... BRN RECP2 [BLOCKLET PRINTED OK 6TBW ... LDX 1 FXPM2 6TC= ... LDX 2 CONSCNTRL [HAVE WE REACHED END OF FILE? 6TCL ... LDX 0 PAGES(1) 6TD2 ... SBX 0 CORET(2) 6TDB ... BPZ 0 RECP3 [YES 6TDQ ... PMESSAGE TEXT15(1),4 [NO THEN ERROR 6TF6 ... LDN 4 0 [INITIALISE LINE MODIFIER 6TFG ... LDN 0 1 6TFW ... ADS 0 PAGES(1) 6TG= ... SMO FXPM1 6TGL ... LDX 2 FMODBLK 6TH2 ... BNZ 2 ZBLOCK 6THB ... ADS 0 PAGES(1) 6THQ ... BRN ZBLOCK 6TJ6 ...RECP2 LDX 1 FXPM2 6TJG ... LDN 0 1 6TJW ... ADS 0 PAGES(1) 6TK= ... LDX 0 NUMBER(1) 6TKL ... SBN 0 256 6TL2 ... BZE 0 ZEX [FINISHED 6TLB ... STO 0 NUMBER(1) 6TLQ ... LDN 5 256 6TM6 ... SMO FXPM1 6TMG ... ADS 5 FMODBLK 6TMW ... BRN RECP1 6TN= ...RECP3 LDX 0 XLINK1(1) [EXIT DIRECT FROM ZDECANT 6TNL ... EXIT 0 0 6TP2 ...# 6TPB ...) 6TQB ZBREAK 6W=2 LDN 5 1 6WPL STO 5 XBRIND(1) [SET CHAIN BREAK INDICATOR 6X9= # 6XNW # THERE NOW FOLLOWS THE CODE FOR LOCATING DEVICE HOLDING REQUIRED 6Y8G # RESIDENCE AND BLOCK 6YN6 # 6^7Q ZB7 LDX 3 XFCB(1) 6^MB LDX 4 BSPRE(3) 7272 BZE 4 WRNG3 [J IF LOGICAL FILE NO. ZERO 72LL BXE 4 PREF(1),ZBTRAN [J IF B/S SAME AS BEFORE 736= STO 4 PREF(1) [STORE LOGICAL FILE NO. 73KW CALL 3 MHUNTIL 745G #HAL +BSTB+ALFTABLE,0 74K6 SMO FXPM2 754Q LDX 2 PREF [RESTORE LOGICAL FILE NO. 75JB SLL 2 1 [MULTIPLY BY 2 TO POINT TO ALFTBL 7642 BXGE 2 ALOGLEN(1),WRNG3 76HL SMO 2 773= LDX 5 A1(1) [PICK UP FIRST WORD OF PAIR 77GW BNG 5 WRNG3 782G LDN 2 #7777 78G6 ANDX 2 5 [POINTER FOR FILE DESC.TABLE IN 2 78^Q SRL 5 12 [BSUNIT NO. OF BSFILE 79FB CALL 3 MHUNTIL 79^2 #HAL +BSTB+FDTABLE,0 7=DL SMO 2 [NOT EQUIVALENT TO SMO 2 7=Y= LDN 3 0(1) [ LDX 3 1 7?CW LDX 1 FXPM2 7?XG STO 3 PTRDATUM(1) [FOR DATUMBLK 7#C6 LDCH 2 A1(3) 7#WQ FINDPEREC 3,APFOTY,2,NEXT [NEXT USED AS LABEL IN MACRO 7*BB BNG 3 WRNG3 [(3) SHOULD POINT TO A DEVICE LIST 7*W2 LBSUN 3,4 [B/S UNIT NO. IN X4 7B*L SBX 4 5 [IF NOT CORRECT ONE 7BT= BNZ 4 NEXT [RE-ENTER FINDPEREC 7C#W SMO FXPM1 7CSG LDX 0 JBSPTR 7D#6 BZE 0 RDUMP [IF NO JBSPTR SET NO NEED TO UNDUMP 7DRQ SBX 0 3 7F?B BZE 0 ZBTRAN [IF NO CHANGE - NO NEED TO SWAP 7FR2 LDN 4 XBSREC(1) 7G=L SMO FXPM1 7GQ= LDX 5 JBSPTR 7GXD ...XBUSY 7H4L ... JBUSY 5,XBUSY [JUMP IF DEVICE IS BUSY 7H9W MOVE 4 K53 [ELSE UNDUMP FROM XBSREC TO 7HPG [PREVIOUS JBSPTR. 7J96 RDUMP SMO FXPM1 7JNQ STO 3 JBSPTR [THEN SET UP PRESENT JBSPTR 7K8B LDX 4 3 7K#? ... 7KD8 ...WTBSTRAN 7KJ5 ... JBUSY 3,WTBSTRAN [WAIT FOR DEVICE HOLDING THE FILE STO 7KN2 LDN 5 XBSREC(1) 7L7L MOVE 4 K53 [AND DUMP FROM PRESENT JBSPTR 7LM= [TO XBSREC 7M6W ZBTRAN 7MLG PMBSNUM XAFRESBS(1),MBLKNO(1) [TRANSFER BLOCK FROM B/S 7N66 LDX 1 FXPM2 7NKQ LDX 7 XBSCOMP(1) 7P5B BZE 7 ZB2 [J IF B/S COMPARISON NOT REQUIRED 7PK2 STOZ XBSCOMP(1) [UNSET B/S COMPARISON MARKER 7Q4L LDX 4 XAFRESBS(1) 7QJ= SUM 3 0 [CHECKSUM B/S VERSION 7R3W SBX 3 SUMCORE(1) 7RHG BZE 3 ZEX [EXIT IF CHECKSUMS EQUAL 7S36 CALL 7 (JPRINT1) 7SGQ PMESSAGE TEXT6(1),13 7T2B CALL 7 (JPRINT1) 7TG2 BRN ZB3 [J TO PRINT B/S VERSION 7T^L # 7WF= WRNG3 LDX 1 FXPM2 7WYW LDN 2 TEXT9(1) [LOGICAL FILE NO. DOES NOT EXIST 7XDG LDX 3 JLPMOD 7XY6 MOVE 2 10 7YCQ CALL 7 (JUP) 7YXB +14 7^C2 LDX 5 PREF(1) 7^WL CALL 7 (JOCT) [OCTALISE LOGICAL FILE NO. 82B= CALL 7 (JPRINT2) [& OUTPUT ERROR MESSAGE 82TW ZEX LDX 0 XLINK2(1) 83*G EXIT 0 0 83T6 # 84#Q # THIS ROUTINE INTERPRETS A 21 WORD AREA AS A BIT MAP,EACH SET BIT 84SB # (BY ITS POSITION) INDICATING A BLOCK,RELATIVE TO START OF FCB'S 85#2 # BLOCK LIST,WHICH IS REQUIRED TO BE PRINTED.THE REQUIRED BLOCKS 85RL # ARE THEN PRINTED. 86?= # 86QW # ENTRY X0=LINK 87=G # XFCB=ADDR. OF FILE/FCB BLOCK 87Q6 # 889Q # EXIT 0 - OK 88PB # 1 - INVALID PTR FOUND BY BLOCK PRINTING CODE(ZBLKPRINT) 8992 # ALL ACCS. UNDEFINED 89NL ZDECANT 8=8= STO 0 XLINK1(1) 8=MW LDX 2 XFCB(1) 8?7G # PRINT FILE NAME HEADING 8?M6 LDX 7 COMM(2) 8#6Q BNG 7 YDIR [J IF DIRECTORY 8#LB LDX 6 FGEN(2) [LOAD GENERATION NO. 8*62 LDX 7 FLAN(2) [LOAD LANGUAGE CODE 8*KL LDN 4 FLOC1(2) [LOCAL NAME OF FILE 8B5= LDN 2 FUSER1(2) [ADDR. OF USER NAME 8BJW BRN ZD1 8BLS ...#SKI G3 8BNQ ...( 8BQN ...ZDECANT2 8BSL ... LDX 2 MASK1(1) 8BWJ ... STO 2 RECSW(1) [SET SWITCH TO INDICATE PRINT RECALL 8BYG ... BRN ZDECANT 8C2D ...) 8C4G YDIR 8CJ6 LDN 4 SPACES(1) [LOCAL NAME AS SPACES 8D3Q LDN 2 FME1(2) [LOAD ADDR.OF USER NAME 8DHB LDN 6 1 [LOAD GENERATION OF 1 8F32 LDX 7 MDIR(1) [LOAD DIRECTORY FILE LANGUAGE CODE 8FGL ZD1 8G2= STO 6 NGEN(1) [STORE GEN. NO. 8GFW STO 7 TEXT3+4(1) [STORE LANGUAGE CODE 8G^G # SET UP FILE NAME HEADING IN BUFFER 8HF6 LDX 6 RESH1(1) 8HYQ LDX 3 JLPMOD 8JDB STO 6 2(3) 8JY2 ADN 3 3 8KCL MOVE 2 3 [STORE USER NAME 8KNC ...# 8K^8 ...# REMOVING THE TRAILING SPACES FROM USER NAME BY BACKWARD SCANNING 8L9^ ...# 8LGQ ... LDN 7 12 8LRH ... ADN 3 3 [POINTER TO WORD IMMEDIATELY NEXT TO 8M4# ...ZD2 SLC 3 2 [CONVERT INTO CHAR ADDR 8M*5 ... SBN 3 1 [ADDR OF THE LAST CHAR OF WORD FME3 O 8MKW ... SRC 3 2 8MWM ... LDCH 0 0(3) [LAST CHAR OF USER NAME ON FIRST ENTR 8N7D ... SBN 0 #20 [IS IT A SPACE? 8ND9 ... BNZ 0 ZD3 [J IF CHAR NOT SPACE 8NP2 ... BCT 7 ZD2 8N^R ...ZD3 BCHX 3 £ 8P=J ... LDN 0 #36 8PH* ... DCH 0 0(3) [DEPOSIT '.' AS LAST CHAR IN USER NAM 8PS= BCHX 3 £ 8Q?W LDX 2 4 8QRG MVCH 2 12 [STORE FILE NAME 8R?6 # NOW SET UP FGN/LNG 8RQQ LDX 3 JLPMOD 8S=B ADN 3 10 8SQ2 LDN 2 TEXT3(1) 8T9L MOVE 2 5 [STORE 'FGN/LNG= / 8TP= LDX 5 NGEN(1) [LOAD GEN. NO. 8W8W ADN 3 2 8WNG STO 3 JPMOD 8X86 CALL 7 (JDECN) [CONVERT & STORE GEN. NO. IN CHARS. 8XMQ CALL 7 (JPRINT2) [NOW PRINT THE HEADER LINE 8Y7B # 8YM2 STOZ XBRIND(1) [CLEAR ZBLXPRINT CHAIN BREAK IND. 8^6L STOZ XPRINTED(1) [CLEAR BLOCKS PRINTED INDICATOR 8^L= SMO XFCB(1) 925W LDX 6 FBLMOD [LENGTH OF FCB RELATIVE TO FBLMOD 92KG SBN 6 FBLKS-A1 [LOAD NO. OF BLOCKS+1 9356 STO 6 XFCBLEN(1) 93JQ LDN 6 0 [BLOCK LIST MODIFIER 944B LDN 3 XBITAB(1) [LOAD ADDR.OF BIT MAP AREA 94J2 ZD4 LDN 4 XBITEND(1) 953L TXU 3 4 95H= BCC ZDEND [J IF END OF BIT MAP AREA 962W LDN 7 24 [LOAD BIT REMAINDER COUNT 96GG LDX 5 0(3) [LOAD FIRST/NEXT WORD OF BIT MAP AREA 9726 ZD5 BZE 5 ZD7 [J IF NO MORE BITS SET 97FQ BPZ 5 ZD6 [J IF BLOCK NOT TO BE PRINTED 97^B TXL 6 XFCBLEN(1) [J IF BLOCK LIST MODIFIER > SIZE 98F2 BCC ZDEND [OF FCB'S BLOCK LIST 98YL STO 3 XPRINTED(1) [SET BLOCKS PRINTED INDICATOR 99D= STO 5 XX5(1) [STORE ENTRY FROM MAP AREA 99XW STO 6 XBLIST(1) [STORE BLOCK LIST MODIFIER 9=CG STO 7 XX7(1) [STORE BIT REMAINDER COUNT 9=X6 # 9?BQ CALL 0 ZBLKPRINT [PRINT BLOCK 9?WB # 9#B2 LDX 3 XPRINTED(1) [RESTORE ACCS. 9#TL LDX 5 XX5(1) 9**= LDX 6 XBLIST(1) 9*SW LDX 7 XX7(1) 9B#G ZD6 SLL 5 1 [READY TO TEST NEXT BIT OF MAP AREA(1 9BS6 ADN 6 1 [INCREAS BLOCK LIST MODIFIER 9C?Q SBN 7 1 [REDUCE BIT REMAINDER COUNT 9CRB BRN ZD5 9D?2 ZD7 ADX 6 7 [INCREASE BLOCK MOD. BY BITS REM. 9DQL ADN 3 1 [ADDR.OF NEXT WORD IN MAP AREA 9F== BRN ZD4 9FPW ZDEND 9G9G LDX 4 XPRINTED(1) 9GP6 BNZ 4 ZDEND1 [J IF BLOCKS PRINTED 9H8Q PMESSAGE TEXT4(1),5 [OTHERWISE MESS. - NO BLOCKS 9HNB ZDEND1 9J82 CALL 7 (JPRINT) 9JML LDX 4 XBRIND(1) [LOAD CHAIN BREAK IND. 9K7= LDX 0 XLINK1(1) [OTHERWISE 9KLW BZE 4 ZDEX [EXIT 0 IF NO CHAIN BREAKS 9L6G EXIT 0 1 [EXIT 1 9LL6 ZDEX EXIT 0 0 9M5Q # 9MKB # THIS ROUTINE WILL SET THE BITS IN THE BIT MAP AREA(XBITAB) TO 9N52 # INDICATE WHICH BLOCKS ARE TO BE PRINTED 9NJL # 9P4= # ENTRY X2=ADDRESS OF FILE/FCB BLOCK 9PHW # X7=NO.OF L.S. BITS SET INDICATES NO OF BLOCKS REQUIRED 9Q3G # TO BE PRINTED. E.G. BITS 22 & 23 SET INDICATES 9QH6 # CURRENT & LAST BLOCK(WRITTEN,READ ETC.) TO BE PRINTED 9R2Q # X0=LINK 9RGB # 9S22 # EXIT X4,X5,X6 & X7 UNDEFINED 9SFL # 9S^= SETWRITE 9TDW LDX 6 FBLMOD(2) [LOAD BLOCK NO. OF LAST BLOCK 9TYG SBN 6 FBLKS-A1+1 [APPENDED RELATIVE TO FBLKS OF FCB 9WD6 # 9WXQ # ENTRY X6=BLOCK NO. TO BE PRINTED RELATIVE TO FBLKS OF FCB 9XCB # 9XX2 SETBIT 9YBL DVS 5 X24(1) [BLOCK NO. MULTIPLE OF 24 + REMAINDER 9YW= LDN 4 23 9^*W SBX 4 5 9^TG LDX 5 6 =2*6 LDN 6 0 =2SQ SMO 4 =3#B SLL 67 0 [POSITION BLOCK NO. USING REMAINDER =3S2 BZE 5 SET1 [J IF BLOCK NO < 24 =4?L SMO 5 =4R= ORS 6 XBITAB-1(1) [SET BITS IN =5=W SET1 SMO 5 [APPROPRIATE WORD =5QG ORS 7 XBITAB(1) [OF BIT MAP AREA =6=6 EXIT 0 0 =6PQ # =79B # FOR A GIVEN FCB & FSTACK THIS ROUTINE WILL SET UP A BIT MAP =7P2 # REPRESENTING THOSE BLOCKS OF THE FILE WHICH IT IS REQUIRED =88L # TO PRINT.MONITORING FILES ARE IGNORED BY THIS ROUTINE. =8N= # =97W # ENTRY X0=LINK =9MG # XFCB=ADDR. OF FILE/FCB BLOCK ==76 # UFSTACK=ADDR. OF FILE/FSTACK BLOCK ==LQ # =?6B # EXIT 0 - OK =?L2 # 1 - FILE IS A MONITORING FILE =#5L # ALL ACCS. EXCEPT X1 UNDEFINED =#K= XFSTACK =*4W STO 0 XLINK1(1) =*JG LDX 2 XFCB(1) =B46 LDX 6 FLAN(2) [LOAD LANGUAGE CODE OF FILE =BHQ TXU 6 MONFILE(1) =C3B BCS XF1 =CH2 EXIT 0 1 [EXIT IF MONITORING FILE =D2L # =DG= XF1 STOZ SYSTDIR(1) =D^W STOZ XCGC(1) =FFG STOZ XBITAB(1) =F^6 LDN 4 XBITAB(1) =GDQ LDN 5 XBITAB+1(1) =GYB MOVE 4 20 [ZEROISE BIT MAP AREA =HD2 # =HXL LDX 3 UFSTACK(1) =JC= LDX 4 ARINGNO(3) [LOAD NO.OF ELEMENTS IN FSTACK BLOCK =JWW ANDX 4 MASK2(1) =K6N ... BZE 4 XF12 =KBG ADN 3 ARINGNO+1 [OBTAIN ADDR. OF FIRST ELEMENT =KW6 TXU 6 MSYST(1) =L*Q BCC XFSYD [J IF SYSTEM FILE =LTB LDX 6 COMM(2) =M*2 BPZ 6 XF2 [J IF NOT DIRECTORY FILE =MSL XFSYD STO 3 SYSTDIR(1) [SET INDICATOR =N#= XF2 STO 4 XCOUNT(1) [SET COUNT OF FSTACK ELEMENTS =NRW LDX 7 FGENERAL1(3) =P?G SLC 7 2 =PR6 BPZ 7 XF3 [J IF NOT APPEND MODE =Q=Q LDN 7 3 [BIT PATTERN TO PRINT CURRENT & LAST =QQB [BLOCK APPENDED =R=2 CALL 0 SETWRITE [SET BITS IN BIT MAP AREA =RPL XF3 LDX 7 FGENERAL1(3) =S9= ANDX 7 MASKCGC(1) =SNW BZE 7 XF5 =T8G STO 7 XCGC(1) [SET CLEAN/GENERAL/COPY MODE SWITCH =TN6 XF5 LDX 7 FGENERAL1(3) =W7Q SLC 7 3 =WMB BPZ 7 XF11 [J IF NOT WRITE MODE =X72 LDN 7 1 [SET BIT IN BIT MAP AREA TO PRINT =XLL CALL 0 SETWRITE [CURRENT APPEND BLOCK =Y6= LDX 6 SYSTDIR(1) =YKW BNZ 6 XF7 [J IF DIR. OR SYST. FILE =^5G LDX 7 FGENERAL1(3) =^K6 SLC 7 4 ?24Q BPZ 7 XF10 [J IF NOT GENERAL MODE ?2JB XF7 LDX 6 FREADBLOCK(3) ?342 BNG 6 XF9 [J AS FREADBLOCK NOT USABLE ?3HL SBN 6 FBLKS-2 [SET BITS CORRESPONDING TO CURRENT ?43= LDN 7 #37 [READ BLOCK AND UP TO TWO EITHER ?4GW XF8 CALL 0 SETBIT [SIDE ?52G XF9 ADN 3 FELLEN [UPDATE FSTACK ELEMENT POINTER ?5G6 LDX 4 XCOUNT(1) ?5^Q BCT 4 XF2 [REDUCE FSTACK ELEMENT COUNT ?6FB ...XF12 LDX 0 XLINK1(1) ?6^2 EXIT 0 0 ?7DL # ?7Y= XF10 LDX 6 FREADBLOCK(3) ?8CW BNG 6 XF9 ?8XG SBN 6 FBLKS [SET BITS CORRESPONDING TO CURRENT ?9C6 LDN 7 3 [AND PREVIOUS READ BLOCKS ?9WQ BRN XF8 ?=6J ...XF11 LDX 4 SYSTDIR [SYSTEM FILE OR DIRECTORY? ?=BB ... BNZ 4 XF7 [J TO SET APPROPRIATE BITS ?=L8 ... SLC 7 1 ?=W2 BNG 7 XF7 [J IF GENERAL MODE ??*L SRC 7 3 ??T= BNG 7 XF10 [J IF READR MODE ?##W SRC 7 1 ?#SG BNG 7 XF10 [J IF READ MODE ?*#6 BRN XF9 ?*RQ # ?B?B # ROUTINE TO EXAMINE AN ACTIVITY TO DETERMINE WHAT FILES IT HAS ?BR2 # OPEN;EXAMINE THE MODES IN WHICH THESE FILES ARE OPEN AND PRINT ?C=L # THE APPROPRIATE BLOCKS FROM THESE FILES ?CQ= # ?D9W # ENTRY X0=LINK ?DPG # X2=ADDR.OF ACTRING WORD OF CURRENT ACTIVITY BLOCK ?F96 # ?FNQ # EXIT 0 - OK ?G8B # XCHNBRK - INVALID POINTER FOUND ?GN2 # ALL ACCS. UNDEFINED EXCEPT X1 ?H7L ZFILEPRINT ?HM= STO 0 XLINK0(1) ?J6W ADN 2 FILERING-ACTRING [STORE BASE ADDR. OF THIS ?JLG STO 2 XBFILER(1) [ACTIVITY'S FILE RING ?K66 CALL 0 RSEARCHA [VALIDATE ELEMENTS FORWARD PTR ?KKQ BRN XCHNBRK ?L5B ZF1 CALL 0 RSEARCH [GET NEXT ELEMENT ADDR. CHECKING PTRS ?LK2 BRN XCHNBRK ?M4L TXU 2 XBFILER(1) ?MJ= BCS ZF2 ?N3W LDX 0 XLINK0(1) ?NHG EXIT 0 0 ?P36 ZF2 ADX 2 FBACKPOINT(2) [LOAD BLOCK START ADDR. ?PGQ PMCORES 2,ZFERR [IS FBACKPOINT CORRUPT ?Q2B LDX 4 ATYPE(2) ?QG2 SRL 4 12 ?Q^L TXU 4 TFSTACK(1) ?RF= BCC ZF3 [J IF FILE/FSTACK BLOCK ?RYW BRN ZF1 ?SDG # ?SY6 ZFERR PMESSAGE TEXT2(1),5 ['FSTACK BLOCK CORRUPT ?TCQ BRN ZF1 ?TXB # STEP BACK TO PREVIOUS FILE/FCB BLOCK ?WC2 ZF3 STO 2 UFSTACK(1) [STORE ADDR. OF FSTACK BLOCK ?WWL CALL 0 SEARCHC [VALIDATE FSTACK FORWARD PTR. ?XB= BRN XCHNBRK ?XTW ZF4 CALL 0 SEARCHB [GET ADDR.OF NEXT BLOCK CHECKING PTRS ?Y*G BRN XCHNBRK ?YT6 LDX 4 ATYPE(2) ?^#Q SRL 4 12 ?^SB TXU 4 TFCB(1) #2#2 BCC ZF5 [J IF FILE/FCB BLOCK #2RL TXU 4 TFSTACK(1) #3?= BCC XCHNBRK [J IF ANOTHER FSTACK BEFORE FCB #3QW BRN ZF4 #4=G # #4Q6 ZF5 STO 2 XFCB(1) [STORE ADDR. OF FCB #59Q CALL 0 XFSTACK [SET UP FILE BLOCK INFORMATION #5PB # #692 CALL 0 ZDECANT [PRINT BLOCKS REQUIRED #6NL BRN ZF1 [OK #78= BRN XCHNBRK [INVALID POINTER FOUND. #7MW # #87G # THIS ROUTINE GETS THE NEXT ACTIVITY BLOCK ON THE ACTIVITY RING #8M6 # WITH A GIVEN JOB NUMBER IN ITS JOBNO WORD.IF KEY JOB NUMBER IS #96Q # ZERO WE DON'T SEARCH AT ALL. #9LB # #=62 # ENTRY X7=LINK #=KL # XJOBNO=KEY JOB NO. WORD #?5= # XNEXTACT=ADDR. OF ACTRING WORD OF CURRENT ACT. BLOCK #?JW # XBACTRING=BASE OF SEARCH ##4G # ##J6 # EXIT 0 - OK,XNEXTACT=ADDR. OF ACTRING WORD OF NEXT ACT. BLOCK #*3Q # WITH JOB NO. SAME AS KEY JOB NO. #*HB # 1 - IF XJOBNO ZERO OR BASE OF SEARCH REACHED #B32 # XCHNBRK - IF BLOCK POINTERS INVALID #BGL # #C2= ZGETACT #CFW LDX 4 XJOBNO(1) #C^G BZE 4 ZG2 [EXIT 1 IF KEY JOB NO. ZERO #DF6 ZG1 CALL 0 NEXTACT [GET ADDR. OF NEXT ACT. BLOCK #DYQ BRN XCHNBRK [J IF INVALID PTR'S #FDB TXU 2 XBACTRING(1) #FY2 BCC ZG2 [EXIT 1 IF BASE OF SEARCH REACHED #GCL LDX 4 JOBNO-ACTRING(2) #GX= TXU 4 XJOBNO(1) [J IF JOB NO. NOT #HBW BCS ZG1 [THE SAME AS KEY JOB NO. #HWG EXIT 7 0 #JB6 ZG2 EXIT 7 1 #JTQ # #K*B # THIS ROUTINE LOCATES AND PRINTS MONITORING FILES. #KT2 # #L#L # ENTRY X0=LINK #LS= # #M?W # EXIT 0 #MRG # #N?6 ZMONFILES #NQQ STO 0 XLINK0(1) #P=B PMESSAGE TEXT12(1),4 ['MONITORING FILES' #PQ2 LDX 2 FXPM1 #Q9L ADX 2 JGETFCB1 #QP= CALL 0 (2) #R8W BRN ZM2 [GOT FILE/FCB BLOCK #RNG ZMEX LDX 0 XLINK0(1) #S86 EXIT 0 0 [DOUBLE BREAK OR END OF CHAIN #SMQ ZM1 LDX 2 FXPM1 #T7B ADX 2 JGETFCB #TM2 CALL 0 (2) #W6L BRN ZM2 [NEXT FILE/FCB BLOCK #WL= BRN ZMEX #X5W ZM2 LDX 4 FLAN(2) #XKG TXU 4 MONFILE(1) #Y56 BCS ZM1 [J IF NOT MONITORING FILE #YJQ STOZ XCGC(1) [CLEAR CLEAN/GENERAL/COPY MODE SWITCH #^4B CALL 0 SEARCHA [VALIDATE FPTR #^J2 BRN ZM1 [FPTR INVALID *23L ZM3 CALL 0 SEARCH [ADDR. OF NEXT BLOCK *2H= BRN ZM1 [CHAIN BREAK *32W LDX 4 ATYPE(2) *3GG SRL 4 12 *426 TXU 4 TFSTACK(1) *4FQ BCC ZM4 [J IF FILE/FSTACK BLOCK *4^B TXU 4 TFCB(1) *5F2 BCS ZM3 [IF NOT FILE/FCB,THEN GET NEXT BLOCK *5YL BRN ZM1 [OTHERWISE CARRY ON WITH FCB SEARCH *6D= FIXTRA JZM4 *6XW ZM4 NULL *7CG STOZ XBITAB(1) *7X6 LDN 4 XBITAB(1) *8BQ LDN 5 XBITAB+1(1) *8WB MOVE 4 20 [ZEROISE BIT MAP AREA *9B2 LDX 4 ARINGNO(2) [LOAD NO. OF ELEMENTS IN FSTACK *9TL ANDX 4 MASK2(1) *=5D ... BZE 4 ZM1 *=*= ADN 2 ARINGNO+1 [ADDR. OF FIRST ELEMENT *=SW ZM5 LDX 5 FGENERAL1(2) [LOAD MODE WORD OF FIRST/NEXT ELEMENT *?#G ANDX 5 MASKCGC(1) *?S6 BNZ 5 ZM6 [J IF CLEAN/GENERAL/COPY MODE *#?Q ADN 2 FELLEN [ADDR. OF NEXT ELEMENT *#RB BCT 4 ZM5 [J IF MORE ELEMENTS **?2 BRN ZM7 **QL ZM6 STO 5 XCGC(1) [SET SWITCH *B== ZM7 LDX 2 XFCB(1) [LOAD ADDR. OF FCB *BPW LDN 7 #77 [SET BIT PATTERN FOR LAST 6 BLOCKS *C9G [OF FILE *CP6 FIXTRA JZM25 *D8Q CALL 0 SETWRITE [SET BITS IN BIT MAP AREA *DNB CALL 0 ZDECANT [PRINT BLOCKS *F82 BRN ZM1 [GO GET NEXT FCB *FML BRN ZM1 [& IF CHAIN BREAK *G7= # *GLW # THIS ROUTINE CHECKS TO SEE IF THE RESTORE TIME MACRO PMFILE HAS *H6G # BEEN USED AND IF SO PRINTS OUT IN FULL THE NOMINATED FILES. *HL6 # *J5Q # ENTRY X0=LINK *JKB # *K52 # EXIT 0 *KJL # *L4= ZRESTFILES *LHW STO 0 XLINK0(1) *M3G LDX 4 XJFULLTAB(1) *MH6 BZE 4 ZREX [J IF TABLE EMPTY *N2Q LDX 4 MASK1(1) *NGB STO 4 XBITAB(1) [SET BIT MAP AREA *P22 LDN 4 XBITAB(1) [CORRESPONDING *PFL LDN 5 XBITAB+1(1) [TO ALL BLOCKS *P^= MOVE 4 20 [IN FCB LIST *QDW PMESSAGE TEXT13(1),9 ['FULL PRINT OF FILES REQ'D ENSUES *QYG LDN 3 XJFULLTAB(1) [ADDR. OF TABLE *RD6 ZR1 STOZ USER0(1) *RXQ LDX 4 3(3) *SCB STO 3 XX3(1) *SX2 BNZ 4 ZR2 *TBL STO 3 USER0(1) [SET SWITCH TO ONLY CHECK USER NAME(1 *TW= ZR2 LDX 2 FXPM1 *W*W ADX 2 JGETFCB1 *WTG CALL 0 (2) *X*6 BRN ZR4 [FOUND FIRST FCB *XSQ ZREX LDX 0 XLINK0(1) *Y#B EXIT 0 0 *YS2 ZR3 LDX 2 FXPM1 *^?L ADX 2 JGETFCB *^R= CALL 0 (2) B2=W BRN ZR4 [FOUND NEXT FCB B2QG BRN ZR11 B3=6 ZR4 LDX 3 XX3(1) B3PQ LDX 4 FUSER1(2) [LOAD BLOCKS USER NAME B49B LDX 5 FUSER2(2) B4P2 LDX 6 FUSER3(2) B58L TXU 4 0(3) [TEST AGAINST B5N= TXU 5 1(3) B67W TXU 6 2(3) B6MG BCS ZR3 [J IF USER NAMES DIFFER B776 LDX 4 USER0(1) B7LQ BNZ 4 ZR5 [J IF CHECKING LOCALNAME NOT REQ'D B86B LDX 4 FLOC1(2) [LOAD BLOCKS LOCALNAME B8L2 LDX 5 FLOC2(2) B95L LDX 6 FLOC3(2) B9K= TXU 4 3(3) B=4W TXU 5 4(3) B=JG TXU 6 5(3) B?46 BCS ZR3 [J IF LOCALNAMES DIFFER B?HQ ZR5 STOZ XCGC(1) [CLEAR CLEAN/GENERAL/COPY MODE SWITCH B#3B CALL 0 SEARCHA [VALIDATE FPTR B#H2 BRN ZR10 B*2L ZR6 CALL 0 SEARCH [ADDR. OF NEXT BLOCK B*G= BRN ZR10 B*^W LDX 4 ATYPE(2) BBFG SRL 4 12 BB^6 TXU 4 TFSTACK(1) BCDQ BCC ZR7 [J IF FILE/FSTACK BLOCK BCYB TXU 4 TFCB(1) BDD2 BCS ZR6 [IF NOT FILE/FCB,THEN GET NEXT BLOCK BDXL BRN ZR10 [OTHERWISE CARRY ON TO NEXT FCB BFC= ZR7 LDX 4 ARINGNO(2) [LOAD NO. OF ELEMENTS IN FSTACK BFWW ANDX 4 MASK2(1) BG6N ... BZE 4 ZR3 BGBG ADN 2 ARINGNO+1 [ADDR. OF FIRST ELEMENT BGW6 ZR8 LDX 5 FGENERAL1(2) [LOAD MODE WORD OF FIRST/NEXT ELEMENT BH*Q ANDX 5 MASKCGC(1) BHTB BNZ 5 ZR9 [J IF CLEAN/GENERAL/COPY MODE BJ*2 ADN 2 FELLEN [ADDR. OF NEXT ELEMENT BJSL BCT 4 ZR8 [J IF MORE ELEMENTS BK#= BRN ZR10 BKRW ZR9 STO 5 XCGC(1) [SET SWITCH BL?G ZR10 CALL 0 ZDECANT [PRINT BLOCKS BLR6 BRN £ BM=Q LDX 4 USER0(1) [IF ONLY CHECKING USER NAME, BMQB BNZ 4 ZR3 [THEN GO GET NEXT FCB BN=2 ZR11 LDX 3 XX3(1) BNPL ADN 3 6 [ADDR. OF NEXT TABLE ENTRY BP9= LDX 4 0(3) BPNW BZE 4 ZREX [J IF TABLE EMPTY BQ8G BRN ZR1 BQN6 # BR7Q # ENTRY TO OUTPUT A POSTMORTEM OF FILE STORE BRMB # BS72 XK1PMFS BSLL # BT6= LDX 1 FXPM2 BTKW ADS 1 XAFRESBS(1) BW5G CALL 7 (JPRINT) [NEW PAGE BWK6 PMESSAGE TEXT1(1),5 [HEADING-'FILE STORE POST MORTEM BX4Q SMO FXPMDR BXJB LDX 4 APMBRKCHS BY42 BNG 4 XCHNBRK [J IF BROKEN CHAINS FOUND BY PMBRKCHS BYHL BNZ 4 XPMFULLS [J IF MACRO PMFULLS WAS HERE B^3= LDX 2 FX2 B^GW ANDX 2 MASK(1) C22G PMCORES 2,XCHNBRK [J IF FX2 CORRUPT C2G6 LDCH 4 ATYPE(2) C2^Q TXL 4 XACT(1) C3FB BCS XCHNBRK [J IF NOT AN ACTIVITY C3^2 LDX 4 JOBNO(2) [LOAD & STORE CURRENT C4DL STO 4 XJOBNO(1) [ACTIVITY JOB NO. C4Y= ADN 2 ACTRING [STORE ADDR.OF ACTRING WORD OF C5CW STO 2 XBACTRING(1) [CURRENT ACTIVITY BLOCK C5XG CALL 0 NEXTACTA [VALIDATE FPTR C6C6 BRN XCHNBRK [& J IF CORRUPT C6WQ PMFS1 CALL 0 ZFILEPRINT [EXAMINE CURRENT ACT. AND PRINT C7BB [APPROPRIATE BLOCKS C7W2 CALL 7 ZGETACT [GET NEXT ACT.BLOCK WITH SAME JOB NO. C8*L BRN PMFS1 [J IF SUCH A BLOCK C8T= # C9#W # NO MORE ACT. BLOCKS WITH KEY JOB NO. C9SG # C=#6 # C=RQ # PRINT MASTER DIRECTORY FILE C??B # C?R2 PMFS2 LDCT 4 #400 [SET TO PRINT BLOCK C#=L STO 4 XBITAB(1) C#Q= LDX 2 FXPM1 C*9W ADX 2 JGETFCB1 C*PG CALL 0 (2) [GET ADDRESS OF FCB BLOCK CB96 CALL 0 ZDECANT [PRINT BLOCK CBNQ BRN £ CC8B # CCN2 CALL 0 ZMONFILES [LOCATE & PRINT MONITORING FILES CD7L CALL 0 ZRESTFILES [PRINT FILES SPEC. BY PMFILE CDM= PMESSAGE TEXT0(1),7 ['END OF F/S PM' CF6W SMO FXPM1 CFLG LDX 5 JBSPTR CG66 BZE 5 PMFS3 [IF JBSPTR SET,UNDUMP CGKQ LDN 4 XBSREC(1) [FROM XBSREC BACK CGQY ...WAITFOR CGY6 ... JBUSY 5,WAITFOR [JUMP IF DEVICE IS BUSY CH5B MOVE 4 K53 [TO WHERE THEY SHOULD BE CHK2 PMFS3 BRN (JPMSEG) [ADIOS AMIGOS CJ4L # CJJ= # THIS LABEL IS BRANCHED TO IF A CHAIN/RING BREAK IS ENCOUNTERED.IT CK3W # USES A SEARCH BASED ON THE FILE CHAIN TO TREAT ALL FILES AS WE CKHG # WOULD WISH TO TREAT THOSE OPEN TO THE CURRENT ACTIVITY. CL36 # CLGQ XCHNBRK CM2B PMESSAGE TEXT14(1),12 ['CHAIN/RING BRK FOUND:FULL F/S PM CMG2 [ENSUES' CM^L XPMFULLS CNF= LDX 2 FXPM1 CNYW ADX 2 JGETFCB1 CPDG CALL 0 (2) CPY6 BRN XCH2 [GOT FIRST FCB CQCQ BRN PMFS2 [DBL BRK OR END OF CHAIN CQXB XCH1 LDX 2 FXPM1 CRC2 ADX 2 JGETFCB CRWL CALL 0 (2) CSB= BRN XCH2 [GOT NEXT FCB CSTW BRN PMFS2 [DBL BRK OR END OF CHAIN CT*G XCH2 CALL 0 SEARCHA CTT6 BRN XCH1 [INVALID FPTR CW#Q XCH3 CALL 0 SEARCH [GET NEXT BLOCK CWSB BRN XCH1 [INVALID FPTR CX#2 LDX 4 ATYPE(2) CXRL SRL 4 12 CY?= TXU 4 TFSTACK(1) CYQW BCC XCH4 [J IF FILE/FSTACK BLOCK C^=G TXU 4 TFCB(1) C^Q6 BCS XCH3 [IF NOT FILE/FCB,THEN GET NEXT BLOCK D29Q BRN XCH1 [OTHERWISE CARRY ON TO NEXT FCB D2PB XCH4 STO 2 UFSTACK(1) D392 CALL 0 XFSTACK [SET UP BIT MAP AREA D3NL CALL 0 ZDECANT [OK- SO PRINT BLOCKS D48= BRN XCH1 [MONITORING FILE FOUND D4MW BRN XCH1 D57G RESBS D5M6 #END ^^^^ ...142331360015