@CAT,P 1089-005-005.,///10000 @ASG,T TEMP.,///10000 @ELT,OI TEMP.1089-005-005,,,142160053441,000 )@@G@@**PF**@@@@Z#@@@@@@@@@@@[@^I@@@]FE@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@W@@@@@@@@@@@@@@@@@@@AB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AC )@@G@@@@@@@@@@]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B@@@@@@@@@@@@@@@@@@@@[@@@@@@AD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^@@@@@@@@@@@@@@@@@@@@@AE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@C@@@@@@@@@@@@@@@@@@AF )@@G@@@@@@@@@@H@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@@@@@@@@@@@@@@@@@@@G@@@@@@AG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AH )@@G@@@@@@@@@@D@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AI )@@G@@@@F@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AM )@@G@@@@@@@@@@@@@E@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@E@@HAN )@@G@@SDF @@@@@@@K[@@@ @ @@@[[@@@@O@@@@W@D^5GGVAT AO )@@G@@@@@@@@@K[@@@ @ @@@[[@@@@$@@@@WOESA PWBLOCK @@@@@@@K[@@@AP )@@G@@ @ @@@[[@@@@J@@@@W;I@-DWWGETLOG @@@@@@@K[@@@ AQ )@@G@@@ @@@[[@@@@\@@@@XEI@+DWWTSKEY @@@@@@@K[@@@ @ @@@[[@@@@RAR )@@G@@@@@@X9I@Z@@@@@@EA )@@G@@@@@@@@@@@@@@)>))*_@@@@@@@@@@@@@@@@@@)(@)?Z@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@[@@@@@@@@@@@@@@@EC )@@G@@@@@@@@@@@@@@@@@@@@@@@@]@^@@A@[@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ED )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ER )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ES )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ET )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@_@@@@@@@[@#V#Y@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@D1[D( ^)@^@)FN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@ OFF DSGUNL @ @@@@ FT )@@G@@ ON OLDSTUFF @G@@@@ TZ SIZFLG IF SFU )@@G@@IZE OPT AND FILE BACKED UP @F@@@@ JNZ BACKEDUP,CHK200 FV )@@G@@ MUST LINK FOR BACKUP SIZE @ @@@@ OFF OLDSTUFF @^@@@@FW )@@G@@ ON NSSP@F@@@@ TZ TESTS ANY FX )@@G@@SUPER SPEC TESTS GIVEN? @G@@@@ J CHK130 YES,FY )@@G@@ LINK IF REM OR BACKED UP @ @@@@ ON SORTOK @E@@@@FZ )@@G@@ TZ SORT IS A SORT BEING DONE? @H@@@@ GA )@@G@@ J CHK130 YES, LINK IF REMOVABLE OR BACKED UP GB )@@G@@@ @@@@ OFF SORTOK @E@@@@ J CHK140 GC )@@G@@ NO, TRY TO AVOID LINK @D@@@@CHK130 JNZ BACKEDUP,CHK200 GD )@@G@@ IF BACKED UP, OR@E@@@@ JNZ RDISC,CHK200 REM DISGE )@@G@@C, LINK. @]@@@@CHK140 . @^@@@@ OFF NSSP@[@@@@. GF )@@G@@@D@@@@. IF SHORT LISTING, NEED MI1 FOR REMOVABLE FILES ONLY @[@@@@. GG )@@G@@@F@@@@ JNZ LONGLIST,$+2 IF LONG LISTING, LET IT THRUGH )@@G@@@F@@@@ JZ RDISC,CHK220 SHORT LISTING - IF FIXED, GI )@@G@@@G@@@@. DON'T NEED MAIN ITEM SECTGJ )@@G@@OR 1 @G@@@@ JNZ RDISC,CHK200 IF REMOVABLE, GET MAINGK )@@G@@ ITEM SEC 1 @F@@@@ JZ BACKEDUP,CHK220 FIXED - NO LINK GL )@@G@@IF NO BACKUP@[@@@@. @G@@@@. IF FILE IS BACKED UP OR REMOVABLE, MUST GM )@@G@@LINK TO MI SEC 1 FOR MORE INFO@[@@@@. @E@@@@CHK200 TZ SFMOGN )@@G@@DE2 SINGLE-FILE MODE? @F@@@@ J 0,X9 GO )@@G@@ YES, HAVE MI1 FROM DREAD$ @E@@@@ LA A0,DESCFLAGP )@@G@@GS GET DESCRIPTOR BITS @F@@@@ TOP,U A0,BM1BIT GQ )@@G@@ BAD MAIN ITEM SECTOR 1? @D@@@@ J CHK210 GR )@@G@@ NO, GO LINK @D@@@@ SR R15,BMI1 YES, SET FGS )@@G@@LAG @G@@@@ SZ BACKEDUP CLEAR REM DISC & BACKEGT )@@G@@D-UP FLAGS @ @@@@ SZ RDISC @C@@@@ J GU )@@G@@ CHK220 DON'T LINK@G@@@@CHK210 LA,U A0,MI1 GV )@@G@@ GET M.I. SEC 1 BUFFER ADDRESS @F@@@@ LA A1,MI0MI1LGW )@@G@@NK GET LINK FROM MI0 TO MI1 @E@@@@ LMJ X11,DIRLNKGX )@@G@@$ FIND M.I. SECTOR 1 @D@@@@LNKRTN* J DIRECERR GY )@@G@@ ERROR RETURN @[@@@@. @F@@@@. DIREC$ ERROR ROUTINE RETURNS HERE GZ )@@G@@IF ERROR OCCURRED AT 'CHK210' @[@@@@. @F@@@@CHK220* TZ LIOPHA )@@G@@T Q,F,I, OR P OPTIONS SET? @F@@@@ J GBU HB )@@G@@ YES, ALREADY PERFORMED TESTS@E@@@@ J 0,X9HC )@@G@@ NO, PERFORM TESTS @ @@@@/. CHECK DESIRED PARAMETERS HD )@@G@@@[@@@@. @B@@@@. ACCOUNT, PROJECT, OR QUALIFIER CHECK @[@@@@. HE )@@G@@@G@@@@QQOPT* TZ CPT C-OPTION SET FOR PARTIAL SPEHF )@@G@@C? @F@@@@ J CHK280 YES, CHECK PARTIAL SPEHG )@@G@@C @G@@@@CHK250 DTE A9,0,X7 DOES SPEC MATCH THAT OHH )@@G@@F FILE? @D@@@@ J CHK270 NO, GET ANOTHER HI )@@G@@@[@@@@. @#@@@@. TEST PASSED @[@@@@. @D@@@@CHK260 TNZ HJ )@@G@@ LIOPT LEAD ITEM OPTION@F@@@@ J GBU HK )@@G@@ NO, MAIN ITEM, SO GO ON @D@@@@ J CHK001 HL )@@G@@ YES, GET MI0 @[@@@@. @#@@@@. TEST FAILED @[@@@@. HM )@@G@@@D@@@@CHK270 TNZ LIOPT LEAD ITEM OPTION@E@@@@ HN )@@G@@ J CHK001 NO, GET ANOTHER ITEM @F@@@@ J HO )@@G@@ GALI YES, GET ANOTHER LEAD ITEM @[@@@@. @ @@@@HP )@@G@@. CATEGORY (PARTIAL SPECS) @[@@@@. @G@@@@CHK280 LX X11,HQ )@@G@@(66,0) KLUDGE - ONCE THROUGH FOR C-OPT @D@@@@ TZ HR )@@G@@ YPT IS Y-OPTION SET?@E@@@@ LX X11,(3,0) HS )@@G@@ YES, DO IT 11 TIMES @G@@@@CHK290 DL A9,0,X7 HT )@@G@@ GET PARAMATER FROM LI0 OR MI0 @E@@@@ DSC A9,0,*X11 HU )@@G@@ ROTATE 0-11 CHARS @E@@@@ AND A10,ACMASK+1 HV )@@G@@ MASK OFF DESIRED CHARS@ @@@@ AND A9,ACMASK @C@@@@ HW )@@G@@ DAN A10,MFD$+9 MATCH? @C@@@@ DJZ A10,HX )@@G@@CHK260 IF SO, TOK@E@@@@ TLEM,U X11,66 SHIFHY )@@G@@TED 11 CHARS YET? @E@@@@ J CHK290 NO, SHIFT HZ )@@G@@ANOTHER CHAR@F@@@@ J CHK270 YES, NO MATCH - IA )@@G@@GET ANOTHER @G@@@@/. F OPTION WITH UNAMBIGUOUS QUAL*FILE -- USE 'IIOPT' IB )@@G@@FOR I, FC, FY @[@@@@. @E@@@@FFOPT* J CHK001 IC )@@G@@ JUST GET THE MAIN ITEM@[@@@@. @B@@@@. USE LOOKUP TABLE ENTRY TO FIID )@@G@@ND LEAD ITEM@[@@@@. @D@@@@FFOPT1 DS A9,FILE SAVEIE )@@G@@ FILENAME @F@@@@ DL A0,PCT GET SPECIFIED QUIF )@@G@@ALIFIER @C@@@@ DS A0,QUAL STORE IT @F@@@@IG )@@G@@ LA,U A0,QUAL POINT TO QUAL AND FILENAME @F@@@@IH )@@G@@ LMJ X11,DIRLUF$ FIND THE LEAD ITEM LINK @D@@@@II )@@G@@ J DIRECERR ERROR RETURN @F@@@@ JZIJ )@@G@@ A0,FFEOF IF LINK = 0, TREAT LIKE EOF @G@@@@ SAIK )@@G@@ A0,A1 ELSE MOVE IT TO A1 FOR DIRLED$ @F@@@@ IL )@@G@@ LA,U A0,LI0 GET LEAD ITEM BUFFER ADDRESS@E@@@@ IM )@@G@@ LMJ X11,DIRLED$ LINK TO LEAD ITEM @D@@@@ J IN )@@G@@ DIRECERR ERROR RETURN @G@@@@ SR R15,IO )@@G@@USELUT INDICATE THAT WE GOT THE LEAD @F@@@@. IP )@@G@@ ITEM VIA THE LOOKUP TABLE @F@@@@ J IQ )@@G@@ CHK002 MERGE INTO DIRSEC$ CODE @[@@@@. @A@@@@. ZEROIR )@@G@@ LEAD ITEM LINK - NO SUCH FILE@[@@@@. @E@@@@FFEOF LA,U A1,3IS )@@G@@ SIMULATE DIRSEC$ EOF @E@@@@ J DIRECERR IT )@@G@@ NOW HANDLE LIKE EOF @D@@@@/. I OPTION ONLY, OR F WITH C/Y-OPTIIU )@@G@@ON -- FILENAME @[@@@@. @D@@@@IIOPT* TZ IPT IV )@@G@@ IS I-OPTION SET?@F@@@@ J CHK310 YES, FILENIW )@@G@@AME CHECK ONLY @F@@@@ DL A0,PCT GET QUAL SIX )@@G@@PEC SAVED IN PCT @D@@@@ DTE A0,QUAL QUAL MATCHIY )@@G@@? @D@@@@ J GALI NO, TRY AGAIN @E@@@@IZ )@@G@@CHK310 TZ CPT PARTIAL FILENAME? @G@@@@ JA )@@G@@ J CHK280 YES, HANDLE LIKE PARTIAL ACCOUNT @E@@@@JB )@@G@@ J CHK250 NO, MAKE SIMPLE CHECK @[@@@@. JC )@@G@@@^@@@@. X-OPTION (EXEC FILES) @[@@@@. @F@@@@XXOPT* DL A0,AJD )@@G@@CCOUNT GRAB THE ACCOUNT NUMBER @E@@@@ DJZ A0,GJE )@@G@@BU IF ZERO, SNAGGED ONE @E@@@@ DTE A0,(OVHDA)JF )@@G@@ OVERHEAD ACCOUNT? @D@@@@ J CHK001 JG )@@G@@ NO, TRY AGAIN @D@@@@ J GBU YES, SNAGGJH )@@G@@ED ONE@[@@@@. @A@@@@. K-OPTION (REMOVABLE DISC FILE) @[@@@@. JI )@@G@@@C@@@@KKOPT* TZ BMI1 BAD MI1? @F@@@@ J JJ )@@G@@ CHK001 YES, DON'T BOTHER CHECKING @E@@@@ L,JK )@@G@@U R1,5 FOR FIRST 5 PACKIDS @F@@@@ LXM,U JL )@@G@@ A0,PACKENTRY CHECK SPEC VS. PACK LIST @^@@@@ LXI,U JM )@@G@@ A0,2@C@@@@ SE A9,0,*A0 FIND IT? @F@@@@ JN )@@G@@ J $+2 NO, MAYBE TRY SECOND SPEC @F@@@@ JO )@@G@@ J GBU YES, CONTINUE OTHER CHECKS @F@@@@ JP )@@G@@ JZ A10,CHK001 2ND SPEC GIVEN? NO,SEC @F@@@@ JQ )@@G@@ L,U R1,5 YES, NOW CHECK FOR 2ND SPEC @A@@@@ JR )@@G@@ LXM,U A0,PACKENTRY @C@@@@ SE A10,0,*A0 JS )@@G@@ FIND IT? @E@@@@ J CHK001 NO, TRY NEXT FILJT )@@G@@E @E@@@@. YES, CONTINUE TO GBU JU )@@G@@@]@@@@/GBU* . @ @@@@ ON OLDSTUFF @[@@@@. @B@@@@JV )@@G@@. SPECIAL SIZE AND TYPE-OF-FILE CHECKS @[@@@@. @C@@@@ TNJW )@@G@@Z RPT R-OPTION? @D@@@@ J CHK410 JX )@@G@@ NOT R, TRY D @[@@@@. @D@@@@. R-OPTION - CHECK FOR VARIOUSJY )@@G@@ DISABLED INDICATIONS @[@@@@. @E@@@@ LA,S1 A0,DISABLEJZ )@@G@@S PICK UP DISABLE-BITS @E@@@@ LA A1,DISDX KA )@@G@@ GET PARAMETER INDEX @D@@@@ TNE,U A1,RPRL LASTKB )@@G@@ ITEM (BMI)?@E@@@@ LA A0,DESCFLAGS YES, GET OTHER BKC )@@G@@ITS @D@@@@ EX REVR CHECK PARAMETER @E@@@@KD )@@G@@ J CHK001 NO, TRY ANOTHER FILE @[@@@@. KE )@@G@@@F@@@@. DATE OPTION ROUTINE (ONLY FILES NOT REF'D SINCE DATE SPECIFIED) KF )@@G@@@[@@@@. @D@@@@CHK410 TNZ DPT D-OPTION SET? KG )@@G@@@C@@@@ J CHK420 NO, GO ON @E@@@@ LAKH )@@G@@,H1 A0,DATLSTASG GET YR,MON,DAY IN A0 @F@@@@ LA KI )@@G@@ A1,DATREF YR,MO,DA I/P IN H2 OF A1 @G@@@@ EX KJ )@@G@@ REVD M.I. DATE LE (GT) INPUT DATE? @D@@@@ J KK )@@G@@ CHK001 NO, GET ANOTHER @]@@@@CHK420 . @ @@@@ KL )@@G@@ OFF OLDSTUFF @F@@@@ SZ FILESIZE INITKM )@@G@@IALIZE TOTAL TRACKS @E@@@@ SZ SAVESIZE INITKN )@@G@@IALIZE SIZE HOLDER@A@@@@ ON OLDMFD**OLDSTUFF@E@@@@ KO )@@G@@ TZ MFD$F NEW FORMAT MFD FILE? @H@@@@ J KP )@@G@@ CHK430 YES, CAN'T CHECK FOR GRANULES BY EQUIP @D@@@@KQ )@@G@@ L A0,TPT GET T-OPTION @F@@@@ TEKR )@@G@@,U A0,1 SET (AND NOT REVERSED)? @D@@@@ TNKS )@@G@@Z EQDX SPEC3 GIVEN? @C@@@@ J CHK4KT )@@G@@30 NO,CHK430 @E@@@@ LA A0,EQDX GET KU )@@G@@EQUIP INDEX IN A0 @F@@@@ AA,U A0,GRANULES-1 POINT TO PKV )@@G@@ROPER WORD OF MI0 @F@@@@ TNZ 0,A0 ANY GRANS KW )@@G@@ON SPEC'D EQUIP? @E@@@@ J CHK001 NO, TRY ANKX )@@G@@OTHER FILE @]@@@@CHK430 . @A@@@@ OFF OLDMFD**OLDSTUFFKY )@@G@@@C@@@@ TZ TAP TAPE FILE?@ @@@@ ONKZ )@@G@@ OLDSTUFF=0@F@@@@ J NSZOPT YES, DON'TLA )@@G@@ ADD UP TRACKS @ @@@@ OFF OLDSTUFF=0@ @@@@ ONLB )@@G@@ OLDSTUFF @F@@@@ J *SZOPT YES, DON'TLC )@@G@@ ADD UP TRACKS @ @@@@ OFF OLDSTUFF @[@@@@. @F@@@@LD )@@G@@. ADD UP MASS STORAGE GRANULE COUNTS, AND STORE TOTAL IN SAVESIZE.@E@@@@LE )@@G@@. SHOULD ALL BE ZERO IF FILE IS UNLOADED, BUT DO IT ANYHOW. @[@@@@. LF )@@G@@@F@@@@ LA FILESIZE,GRANULES+7 . START WITH LAST VALUE LG )@@G@@@^@@@@ LX,U A0,6@F@@@@ LA,U A1,GRANULES+6 LH )@@G@@ POINT TO PROPER WORD IN MI0 @ @@@@ LXI,XU A1,-1 @F@@@@LI )@@G@@ AA,H2 FILESIZE,0,*A1 ADD TRACKS ON EACH DEVICE @ @@@@LJ )@@G@@ JGD A0,$-1 @E@@@@ TP PCHAR LK )@@G@@ POSITION GRANULARITY? @G@@@@ LSSL FILESIZE,6 YES,LL )@@G@@ MULTIPLY BY 64 TO GET TRACKS @D@@@@ SA FILESIZE,SAVESIZLM )@@G@@E STORE FILE SIZE @A@@@@ ON OLDMFD**OLDSTUFF@[@@@@. LN )@@G@@@G@@@@. IF A SPEC3 EQUIP TYPE WAS GIVEN, USE GRAN COUNT ON THAT EQUIPMENLO )@@G@@T @^@@@@. ONLY IN THE TOTALS. @[@@@@. @E@@@@ TZ LP )@@G@@ MFD$F NEW FORMAT MFD FILE? @E@@@@ J CHK4LQ )@@G@@40 YES, CAN'T HANDLE THIS@E@@@@ LA A0,EQDX LR )@@G@@ GET F-TYPE EQUIP INDEX@G@@@@ JZ A0,CHK440 LS )@@G@@ WAS ONE SPECIFIED (IN SPEC3)? @F@@@@ AA,U A0,GRANULELT )@@G@@S-1 POINT TO PROPER WORD OF MI0 @F@@@@ LA FILESIZE,0LU )@@G@@,A0 YES, GET GRANS ON THAT EQUIP@E@@@@ TP PCHAR LV )@@G@@ POSITION GRANULARITY? @D@@@@ LSSL FILESIZE,6 LW )@@G@@ YES, MULT BY 64 @A@@@@ OFF OLDMFD**OLDSTUFF@[@@@@. LX )@@G@@@F@@@@. IF FILE IS UNLOADED, BE SURE TRACK COUNT IS ZERO FOR TOTALS LY )@@G@@@[@@@@. @C@@@@CHK440 TP DESCFLAGS UNLOADED? @F@@@@LZ )@@G@@ SZ FILESIZE YES, ZERO OUT TOTAL IN A15 @ @@@@MA )@@G@@ ON OLDSTUFF @E@@@@ J *SZOPT MB )@@G@@ JUMP TO PROPER ROUTINE@[@@@@. @F@@@@. CHECK AGAINST SIZE IN SPEC2 MC )@@G@@(USE SECURE TAPE BLOCKS IF UNLOADED)@[@@@@. @C@@@@SZCHK* TZ MD )@@G@@ TAP TAPE FILE?@E@@@@ J CHK460 ME )@@G@@ YES, SKIP SIZE CHECK @D@@@@ TP DESCFLAGS IS FMF )@@G@@ILE LOADED? @F@@@@ J CHK450 NO, SKIP LOADED MG )@@G@@TRACK CHECK @F@@@@ EX SZLOD IS FILE > SPEC2 MH )@@G@@TRACKS? @F@@@@ J CHK460 YES, BUT CHECK FMI )@@G@@OR U-OPTION @E@@@@ J CHK001 NO, GET NEXT FILMJ )@@G@@E @F@@@@CHK450 JZ BACKEDUP,CHK001 IF NO BACKUP, TRY ANOTMK )@@G@@HER @F@@@@ LA FILESIZE,BKUPTEXT YES, GET BACKUP BLOCK ML )@@G@@COUNT @F@@@@ EX SZBAK MORE THAN SPEC2 BLOCKSMM )@@G@@? @E@@@@ J CHK001 NOPE, TRY NEXT FILE MN )@@G@@@D@@@@CHK460 TNZ UPT U-OPTION SET? @D@@@@ MO )@@G@@ J NSZOPT IF NOT, GO ON @[@@@@. @ @@@@. U-OPMP )@@G@@TION (UNLOADED FILES) @[@@@@. @C@@@@UNOPT* EX UNCHEK MQ )@@G@@ U-OPTION @E@@@@ J CHK001 FILE IS NOMR )@@G@@T UNLOADED @ @@@@ OFF OLDSTUFF @[@@@@. @E@@@@. NO SMS )@@G@@PECIAL SIZE OPTIONS (OR THEY ALL PASSED THE TESTS) @[@@@@. @]@@@@MT )@@G@@NSZOPT* . @^@@@@ ON NSSP@F@@@@ TNZ TESTMU )@@G@@S ANY SUPER SPEC TESTS TO DO? @C@@@@ J CHK5MV )@@G@@00 NO, GO ON @[@@@@. @F@@@@. PERFORM ALL SUPER SPEC TESTSMW )@@G@@, PUTTING RESULTS IN POLISH TABLE. @D@@@@. IF TEST PASSES, RESULT = 1. MX )@@G@@ IF FAILURE, RESULT = 0.@D@@@@. THEN CALL POLTRAN TO EVALUATE POLISH EXPMY )@@G@@RESSION. @E@@@@. (IF ALL THE TESTS ARE AND'S, A SHORT-CUT MAY BE TAKEMZ )@@G@@N). @[@@@@. @E@@@@ LA A1,AOX GET AND/ORNA )@@G@@/XOR BITS @A@@@@ AND,U A1,ORBIT+XORBIT;@F@@@@ NB )@@G@@ +NOTBIT JUST OR/XOR/NOT BITS TO A2 @F@@@@ L NC )@@G@@ R1,TESTS GET NUMBER OF TESTS TO DO @D@@@@ JGND )@@G@@D R1,$+1 ADJUST FOR JGD @D@@@@ LX X2,(NE )@@G@@SSIZE,0) INITIALIZE INDEX@G@@@@CHK470 EX SSLOAD,X2 NF )@@G@@ EXECUTE LOAD OF DIRECTORY INFO @E@@@@ TP SSLOAD,X2 NG )@@G@@ WAS THAT A 'DL' ? @H@@@@ J CHK472 NH )@@G@@ YES, SKIP SHIFT AND MASK OPERATIONS @G@@@@ TNZ SSHINI )@@G@@FT,X2 IS THERE SHIFTING TO BE DONE? @B@@@@ J NJ )@@G@@ CHK471 NO @F@@@@ LA,H1 A1,SSHIFT,X2 YES,NK )@@G@@ GET LEFT SHIFT COUNT @C@@@@ LSSL A0,0,A1 SHIFNL )@@G@@T LEFT@E@@@@ LA,H2 A1,SSHIFT,X2 GET RIGHT SHIFT COUNT NM )@@G@@@D@@@@ SSL A0,0,A1 SHIFT RIGHT @F@@@@CHK471NN )@@G@@ AND A0,SSMASK,X2 PERFORM 'AND' WITH MASK @E@@@@ NO )@@G@@ LA A0,SSPVAL,X2 LOAD SPECIFIED VALUE @F@@@@CHK472 EXNP )@@G@@ SSTEST,X2 EXECUTE 'DTE A0,SSPVAL' @E@@@@. NQ )@@G@@ OR ' A0,A1' @D@@@@ J NR )@@G@@ CHK474 TEST FAILED @D@@@@. NS )@@G@@ TEST SUCCEEDED @E@@@@ LA,U A0,TRUE MARKNT )@@G@@ TEST SUCCEEDED @C@@@@ J CHK480 GO ON NU )@@G@@@D@@@@CHK474 LA,U A0,FALSE MARK TEST FAILED@G@@@@CHK480NV )@@G@@ JNZ A2,CHK490 IF OR'S, XOR'S, OR NOT'S WERE @G@@@@NW )@@G@@. SPECIFIED, MUST USE POLTRAN NX )@@G@@@F@@@@ JZ A0,CHK495 ONLY AND'S - IF ANY FAIL, NY )@@G@@@E@@@@. DEFINITELY FALSE @D@@@@NZ )@@G@@ J CHK492 THIS ONE PASSED @G@@@@CHK490 LAOA )@@G@@ A1,SSLINK,X2 GET LINK TO POLISH TABLE ENTRY @F@@@@ OB )@@G@@ SA A0,POLISH,A1 STORE RESULT IN POLISH TABLE@E@@@@CHK492OC )@@G@@ NOP 0,0,*X2 INCREMENT TEST INDEX @E@@@@ JGOD )@@G@@D R1,CHK470 PERFORM ALL TESTS @G@@@@ TZ OE )@@G@@ A2 SKIP IF ONLY AND'S (ALL TRUE) @F@@@@ LMOF )@@G@@J X11,POLTRAN EVALUATE POLISH EXPRESSION @F@@@@CHK495 JZOG )@@G@@ A0,CHK001 IF FALSE, GET NEXT FILE @]@@@@CHK500 . OH )@@G@@@^@@@@ OFF NSSP@E@@@@ J MFD500 OI )@@G@@ RETURN TO MAIN SEG @#@@@@ END ___@@@. THEN CALL POLTRAOJ )@@G@@N TO EVALUATE POLISH EXPRESSION. @E@@@@. (IF ALL THE TESTS ARE AND'S,OK )@@G@@ A SHORT-CUT MAY BE TAKEN). @[@@@@. @E@@@@*[S@@@*SDFF*@#@@@@. D I OL )@@G@@R E C $ @[@@@@. @G@@@@. DIREC$ IS A SET OF SUBROUTINES FOR RETRIOM )@@G@@EVING INFORMATION FROM THE @D@@@@. MASTER FILE DIRECTORY. THE ROUTINON )@@G@@ES INVOLVED ARE: @[@@@@. @F@@@@. DIRINT - OBTAINS DIRECTORY IN DOO )@@G@@GET$ FILE, AND BUILDS TABLES. @[@@@@. @E@@@@. DIREND - FREES DGETOP )@@G@@$ FILE AND RE-INITIALIZES DIREC$ @[@@@@. @G@@@@. DIRFIL - REDEOQ )@@G@@FINES DGET$ FILE NAME (ASSUMED NAME = $$--DGET--$$) @[@@@@. @F@@@@OR )@@G@@. DIRSEC - SEARCHES DGET$ FILE, AND TRANSFERS DESIRED TYPES OF @E@@@@OS )@@G@@. DIRECTORY ITEM SECTORS TO THE USER'S BUFFER. @[@@@@. OT )@@G@@@E@@@@. DIRLNK - LINKS TO A PARTICULAR DIRECTORY ITEM SECTOR, @C@@@@OU )@@G@@. AND RETURNS IT TO THE CALLER. @[@@@@. @G@@@@. DIOV )@@G@@RLUT - GIVES THE LOOKUP TABLE TO THE USER 1 SECTOR AT A TIME. @[@@@@OW )@@G@@. @E@@@@. DIRLUW - RETURNS THE LOOKUP TABLE ENTRY FOR A GIVEN OX )@@G@@@A@@@@. QUALIFIER*FILENAME. @[@@@@. @G@@@@. DIRLUF OY )@@G@@- LIKE DIRLUW, BUT FOLLOWS SEARCH ITEM CHAIN TO FIND THE @D@@@@. OZ )@@G@@ LEAD ITEM LINK WORD, AND RETURNS THAT. @[@@@@. @G@@@@. DIPA )@@G@@RLED - GIVEN A LEAD ITEM LINK WORD, FINDS THE LEAD ITEM, THEN @A@@@@PB )@@G@@. ACTS LIKE DIRSEC. @[@@@@. @G@@@@. EACH OF THESE ROPC )@@G@@UTINES CAN BE CALLED FROM FORTRAN-V ('E' OR 'T'), @G@@@@. ASCII FTN,PD )@@G@@ OR ASSEMBLY. THE ASSEMBLY ENTRY POINTS HAVE A $ APPENDED @G@@@@. TO TPE )@@G@@HE NAMES. THESE ROUTINES DESTROY X11, A0, A1, A2, A3, AND R1. @[@@@@PF )@@G@@. @G@@@@. THIS VERSION, FOR EXEC LEVELS 27-20-225 THROUGH 33R1, WAS PG )@@G@@ADAPTED @F@@@@. FROM D. ARTHUR'S ORIGINAL VERSION WRITTEN AT NYU CIRPH )@@G@@CA 1971. @[@@@@. @G@@@@. THE REQUIREMENT THAT DIREC$ BE ABLE TO DPI )@@G@@ETERMINE WHETHER IT IS BEING @G@@@@. CALLED FROM FORTRAN-V OR ASCII FTNPJ )@@G@@ HAS RESULTED IN INCOMPATIBILITY @G@@@@. WITH PREVIOUS LEVELS OF DIREPK )@@G@@C$. THE '$ERR' AND 'ECODE' IN THE FORTRAN@B@@@@. CALLING SEQUENCES HAVEPL )@@G@@ BEEN REVERSED. @[@@@@. @E@@@@. PM )@@G@@ D. ARTHUR (NML) AND @F@@@@. D. KPN )@@G@@URLAND (ISD) - MAY 1976 @E@@@@. B. HPO )@@G@@IRSCHMAN (ISD) AND@G@@@@. D. KURLANDPP )@@G@@ (ISD) - NOVEMBER 1976 @^@@@@/. GENERAL DESCRIPTION: @[@@@@. @F@@@@PQ )@@G@@. DIRINT OBTAINS A COPY OF THE DIRECTORIES IN THE DGET$ FILE. @G@@@@PR )@@G@@. ON EACH CALL, DIRSEC SCANS THE DGET$ FILE UNTIL IT FINDS THE NEXT PS )@@G@@@G@@@@. LEAD ITEM. IF THE USER'S DIRINT MASK INDICATED THAT HE WANTED LPT )@@G@@EAD @G@@@@. ITEMS, DIRSEC TRANSFERS THE LEAD ITEM TO THE USER'S BUFFERPU )@@G@@. IF MAIN @G@@@@. ITEMS ARE ALSO WANTED, DIRSEC WILL USE INTERNAL CALLPV )@@G@@S ON DIRLNK$ TO @F@@@@. RETRIEVE THEM, USING THE MAIN ITEM LINKS FOUNDPW )@@G@@ IN THE LEAD ITEM.@G@@@@. IF THE SECTOR PASSED BACK CONTAINS A LINK TO SPX )@@G@@OME OTHER DIRECTORY ITEM@G@@@@. (THEY ALL DO) AND THE CALLING PROGRAM WAPY )@@G@@NTS TO SEE THAT OTHER ITEM, @G@@@@. DIRLNK MAY BE CALLED TO FIND IT (EPZ )@@G@@G, FIND MAIN ITEM SECTOR 1 USING @C@@@@. LINK ADDRESS FOUND IN MAIN IQA )@@G@@TEM SECTOR 0). @[@@@@. @[@@@@. @^@@@@ AXR$ . QB )@@G@@@[@@@@. @F@@@@LC$CODE EQU 1 GENERATE CODE UNQC )@@G@@DER LC 1 @F@@@@LC$DATA EQU 0 GENERATE DATA UNQD )@@G@@DER LC 0 @[@@@@. @F@@@@DEBUG EQU 0 NONZQE )@@G@@ERO TO TURN ON SNOOPY @F@@@@. MUSTQF )@@G@@ BE >1 FOR DIRINT TRACE @F@@@@SNAP EQU 0 NONZQG )@@G@@ERO TO TURN ON SNAP$'S @[@@@@. @F@@@@PRE33 EQU 1 QH )@@G@@ 0 TO TURN OFF ALL PRE-MFDF @E@@@@. QI )@@G@@ COMPATABILITY CODE @F@@@@LEVEL27 EQU 0 QJ )@@G@@ 0 TO TURN OFF 27-20-225 @G@@@@. QK )@@G@@ COMPATABILITY CODE (ASSUMED 0 IF @D@@@@. QL )@@G@@ PRE33 = 0). @[@@@@. @F@@@@DIRSIZ EQU 0 QM )@@G@@ INITIAL SIZE OF DGET$ FILE @[@@@@. @G@@@@. IF DIRSIZ IS NOTQN )@@G@@ LARGE ENOUGH, DIRINT WILL FREE THE DGET$ FILE AND @G@@@@. RE-ASSIGN QO )@@G@@IT WITH THE PROPER RESERVE (RETURNED BY MSCON$). YOU CAN @F@@@@. AVOIQP )@@G@@D THIS OVERHEAD (2 EXTRA CSF$'S AND 1 EXTRA MSCON$ CALL) @E@@@@. BY EQQ )@@G@@NSURING THAT DIRSIZ IS LARGE ENOUGH TO ACCOMODATE ALL @F@@@@. ANTICIPATEQR )@@G@@D GROWTH. THE COST OF THIS IS THAT ALL DGET$ FILES @E@@@@. WILL BE A QS )@@G@@LITTLE (OR A LOT) LARGER THAN THEY HAVE TO BE. @G@@@@. EVENTUALLY, IF TQT )@@G@@HE DIRECTORY SIZE GROWS PAST WHAT YOU ANTICIPATED, @F@@@@. YOU WILL GQU )@@G@@ET THE OVERHEAD BACK, ALONG WITH LOG MESSAGES TELLING @F@@@@. YOU TO INCQV )@@G@@REASE DIRSIZ. IN THE MEANTIME, YOU WASTE THE EXTRA @F@@@@. TRACKS. IQW )@@G@@F YOU HAVE MANY DEMAND JOBS CARRYING OVERSIZE DGET$ @F@@@@. FILES AROUQX )@@G@@ND, THIS COST MAY BECOME SIGNIFICANT. YOU CAN GET RID@F@@@@. OF THE WHOQY )@@G@@LE PROBLEM BY SETTING DIRSIZ TO 0 AND LETTING DIRINT @F@@@@. ALWAYS ASSQZ )@@G@@IGN THE OPTIMUM SIZE, WITH THE ASSOCIATED 2 CSF$'S @^@@@@. AND EXTRA RA )@@G@@MSCON$ CALL.@[@@@@. @G@@@@MAXDIR EQU 01400 MAXIRB )@@G@@MUM POSSIBLE DIRECTORY TRACKS @[@@@@. @F@@@@. MAXDIR IS THE MAXIMUM RC )@@G@@SIZE DIRECTORY DIREC$ CAN HANDLE. SETTING@F@@@@. IT TOO HIGH MEANS CARRRD )@@G@@YING AN OVERSIZE INCORE TABLE. SETTING IT@F@@@@. TOO LOW MEANS GETTING RE )@@G@@BACK AN ERROR TYPE 6 ON EVERY DIRINT CALL.@F@@@@. THE TABLE MENTIONED HERF )@@G@@RE IS 'ADDTBL', WHICH IS BUILT IN ONE OF @F@@@@. DIRINT'S TRACK-SIZE DGRG )@@G@@ET$ BUFFERS, SHARING THAT AREA WITH THE @A@@@@. MCT AND LOOKUP TABLE BRH )@@G@@UFFERS. @[@@@@. @F@@@@LUTL EQU 16 SIZERI )@@G@@ OF LOOKUP TABLE BUFFER,@C@@@@. IN SRJ )@@G@@ECTORS@[@@@@. @G@@@@. LUTL MUST BE AT LEAST 1. MAKING IT A MULTIPLERK )@@G@@ OF 4 WILL ELIMINATE @D@@@@. READ-BEFORE-WRITES WHEN READING THE LOOKRL )@@G@@UP TABLE. @F@@@@. THE LUT BUFFER IS CONSTRUCTED IN ONE OF DIRINT'S TRARM )@@G@@CK-SIZE @G@@@@. DGET$ BUFFERS, SHARING THAT AREA WITH 'ADDTBL' AND TRN )@@G@@HE MCT BUFFER. @[@@@@. @[@@@@. @^@@@@. FORTRAN LINK EQUFS RO )@@G@@@[@@@@. @F@@@@ECODE EQUF 0 ECODE 2-WORD BUFRP )@@G@@FER ADDRESS @D@@@@ERRORRTN EQUF 1 ERROR RETURN RQ )@@G@@@D@@@@INTMASK EQUF 2 DIRINT MASK @D@@@@LIBIT RR )@@G@@ EQU 2 WANT LEAD ITEMS @D@@@@MIBIT EQU RS )@@G@@ 4 WANT MAIN ITEMS @E@@@@SEPBIT EQU 010 RT )@@G@@ MIBUF IS LIBUF+28 @E@@@@USERBUFAD EQUF 2 RU )@@G@@ USER'S BUFFER ADDRESS @E@@@@USERFORK EQUF 3 DIRIRV )@@G@@NT FORK$ WORD @G@@@@USERLINK EQUF 3 USER'S LINRW )@@G@@K WORD (FOR DIRLNK) @F@@@@USERLUTW EQUF 3 USERRX )@@G@@ EXPECTS LUT WORD HERE @[@@@@. @H@@@@. ERROR TYPES STORED IN ECODE RY )@@G@@(OR A1) ... ERROR CODE STORED IN ECODE+1 (OR A2)@[@@@@. @D@@@@MSCERRRZ )@@G@@ EQU 1 MSCON$ ERROR @F@@@@. SA )@@G@@ ECODE+1 = CONTENTS OF A0 @C@@@@IOERR EQU SB )@@G@@ 2 I/O ERROR @G@@@@. SC )@@G@@ ECODE+1 = CONTENTS OF IOPACKET+3 @G@@@@EOFERR EQU 3 SD )@@G@@ EOF ON DIRSEC, DIRLUT, OR DIRLED @G@@@@. SE )@@G@@ CALL. NEXT CALL WILL START AT @E@@@@. SF )@@G@@ THE BEGINNING AGAIN. @H@@@@CSFERR EQU 4 SG )@@G@@ CSF$ ERROR ON @ASG,T OF DGET$ FILE. @E@@@@. SH )@@G@@ ECODE+1 = FAC STATUS @G@@@@INITERR EQU SI )@@G@@ 5 DIRSEC, DIRLNK, OR DIRLED CALLED @G@@@@. SJ )@@G@@ BEFORE DIRINT HAS SET UP ADDTBL @F@@@@SIZERRSK )@@G@@ EQU 6 TOO MANY DIRECTORY TRACKS - @G@@@@. SL )@@G@@ OVERFLEW ADDTBL DURING DIRINT. @H@@@@SM )@@G@@. INCREASE MAXDIR TO VALUE IN ECODE+SN )@@G@@1 @F@@@@. PLUS SOME EXPANSION FASO )@@G@@CTOR. @F@@@@LNKERR EQU 7 BAD ADDRESS PASSED TO SP )@@G@@DIRLNK@F@@@@. ECODE+1 = USER'S LINK SQ )@@G@@WORD @F@@@@MCTERR EQU 8 ERROR RETURN FROM ER MSR )@@G@@CT$ @E@@@@. ECODE+1 = MCT$ STATUS SS )@@G@@@E@@@@MSKERR EQU 9 DIRINT MASK ERROR @G@@@@ST )@@G@@. ECODE+1 = MASK PASSED BY USER SU )@@G@@@F@@@@MFDFERR EQU 10 IF PRE33=0 AND DGET$ RETURNSSV )@@G@@@G@@@@. OLD-FORMAT DIRECTORY, THIS ESW )@@G@@RROR @E@@@@. TYPE WILL BE RETURNED.SX )@@G@@@G@@@@LUFERR EQU 11 DIRLUF ERROR: SEE DETAILS ASY )@@G@@T @E@@@@. DIRLUF ENTRY POINT. SZ )@@G@@@#@@@@/$(LC$DATA) LIT @[@@@@. @F@@@@CSFIM '@ASG,T $$--DGETA )@@G@@T--$$,F/' DGET$ ASSIGN/FREE IMAGE @G@@@@INTRES ' /2000 . ' TB )@@G@@ INITIAL RESERVE IS PLUGGED IN @F@@@@FLAGS + 0 TC )@@G@@ VARIOUS FLAGS AND COUNTERS @E@@@@TRYCNT EQUF FLAGTD )@@G@@S,,S1 DGET$ ATTEMPT COUNT @F@@@@SEP EQUF FLAGS,,S2 TE )@@G@@ SEPARATE LI/MI BUFFERS FLAG @F@@@@WANTL EQUF FLAGS,,S3 TF )@@G@@ WANT LEAD ITEMS FROM DIRSEC @F@@@@WANTM EQUF FLAGS,,S4 TG )@@G@@ WANT MAIN ITEMS FROM DIRSEC @G@@@@INTERNAL EQUF FLAGS,,S5 TH )@@G@@ SET IF INTERNAL CALL TO DIRLNK @E@@@@DGETP EQUF FLAGTI )@@G@@S,,S6 NON-ZERO IF DGETP$ @[@@@@. @D@@@@LFLAG + TJ )@@G@@ 0 LEAD ITEM STUFF @G@@@@GOTL1 EQUF LFLAG,,H1 TK )@@G@@ NONZERO IF LEAD ITEM SEC 1 INCORE @F@@@@HMANY EQUF LFLATL )@@G@@G,,H2 COUNT OF MAIN ITEMS RETURNED@E@@@@. TM )@@G@@ FOR THIS LEAD ITEM @[@@@@. @G@@@@LINKERADD + TN )@@G@@ 0 SAVE LINK ADDRESS FROM DIRLNK @F@@@@ENTRYINFO + TO )@@G@@ 0 SAVE OF ENTRY INFORMATION @F@@@@FORPKT EQTP )@@G@@UF ENTRYINFO,,H1 FORTRAN PARAMETER PACKET @F@@@@BUFRADDR EQTQ )@@G@@UF ENTRYINFO,,H2 ADDRESS OF USER'S BUFFER @[@@@@. @F@@@@TR )@@G@@LINDEX + 0 LATEST INDEX INTO LEAD ITEM @E@@@@TS )@@G@@. SEC 0 OR 1 (M.I. LINK)@[@@@@. TT )@@G@@@E@@@@GOTONE* + 0 LEAD-ITEM-IN-CORE FLAG@G@@@@TU )@@G@@DIR$MFDF* + 0 NONZERO IF NEW DIRECOTRY FORMAT TV )@@G@@@[@@@@. @G@@@@IOPAK '$$--DGET--$$' GENERAL DGET$ FITW )@@G@@LE I/O PACKET @^@@@@ + 0 @A@@@@ + TX )@@G@@ 0,R$,0,0,0,0 @ @@@@ + 28,BUF @^@@@@ + TY )@@G@@ 0 @ @@@@ ON PRE33 @D@@@@MCTPKT + TZ )@@G@@ 0,MCTTBL MCT$ PACKET @G@@@@MASK1 + 0377777777UA )@@G@@77 MASK FLAG BITS OUT OF ABSOLUTE @F@@@@. UB )@@G@@ WORD ADDRESSABLE ADDRESS @ @@@@ OFF PRE3UC )@@G@@3 @G@@@@MASK2 + 037777777700 MASK FLAG BITS OUT OF UD )@@G@@ABSOLUTE @G@@@@. ADDR AND TRUNCATUE )@@G@@E SECTOR ADDR @F@@@@. TO NEXT LOUF )@@G@@WERE TRACK ADDR. @D@@@@ADDL + 0 LENGTH OF UG )@@G@@ADDTBL@G@@@@NXSEC + 0 SECTOR ADDRESS OF NEXTUH )@@G@@ SECTOR @F@@@@. TO BE ANALYZED BUI )@@G@@Y DIRSEC @F@@@@FIRSTR + 0 TRACK ADDRESS OFUJ )@@G@@ FIRST TRACK@G@@@@. CONTAINING MFD IUK )@@G@@TEMS (AFTER LUT) @G@@@@QSEC + 0 TOTAL SECTUL )@@G@@OR LENGTH OF DGET$ FILE @F@@@@DX + 0 POINUM )@@G@@TER INTO 'BUF' WHICH @G@@@@. CONAUN )@@G@@TINS DAS, POINTING TO ENTRY @E@@@@. UO )@@G@@ FOR CURRENT TRACK. @F@@@@RELADD + 0 FOR UP )@@G@@NEW (MFDF) DIRECTORY @F@@@@. ONLYUQ )@@G@@ WORD 0 OF FIRST DAS FOR@G@@@@. A GIUR )@@G@@VEN UNIT HAS PROPER LDAT INDEX@F@@@@. US )@@G@@ AND SECTOR ADDRESS. WE MUST@H@@@@. UT )@@G@@ KEEP TRACK OF THE RELATIVE ADDRESS. @[@@@@. @H@@@@MSCON$FN* . UU )@@G@@ TO ALLOW CHANGING OF MSCON$ FUNCTION @E@@@@UV )@@G@@MSPKT + DGET$ MSCON$ DGET$ PACKET @D@@@@ UW )@@G@@ '$$--DGET--$$' DGET$ FILE NAME @G@@@@ + UX )@@G@@ DIRSIZ NECESSARY RESERVE RETURNED HERE @E@@@@ + UY )@@G@@ TRKBUF,TRKBUF2 BUFFERS FOR DGET$ @E@@@@PAKID$* + UZ )@@G@@ 0 PACK ID FOR DGETP$ @E@@@@SAVR2 RES 1 VA )@@G@@ REGISTER SAVE AREA @^@@@@SAVX8 RES 1 @^@@@@VB )@@G@@SAVX11 RES 1 @D@@@@SAVX11X RES 2 INTEVC )@@G@@RNAL SAVING @F@@@@LUFQF + 0 SAVE USER'S QUALVD )@@G@@FL ADDRESS @G@@@@LBUF RES 28 BUFFER FOR LEAD VE )@@G@@ITEM SECTOR 0 @F@@@@ + 0 MAIN ITEM VF )@@G@@LINK LOOP STOPPER @G@@@@L1BUF RES 28 BUFFER FORVG )@@G@@ LEAD ITEM SECTOR 1 @E@@@@BUF RES 28 DAS VH )@@G@@AND STAGING BUFFER@E@@@@TRKBUF RES 1792 FIRST DGETVI )@@G@@$ BUFFER @G@@@@. ALSO USED DURINGVJ )@@G@@ DIRSEC,DIRLNK TO @F@@@@. HOLD CURREVK )@@G@@NT DIRECTORY TRACK@E@@@@MCTSIZ EQU 512*(PRE33>0) LENGTH OF VL )@@G@@MCT$ BUFFER @E@@@@LUTSIZ EQU 28*LUTL SIZE OF LUT BUFFVM )@@G@@ER @F@@@@LEFT EQU 1792-(MCTSIZ+LUTSIZ) REMAINDER OF TRACK BVN )@@G@@UFFER @B@@@@ DO MAXDIRLEFT-1 ,ADDSIZ EQU MAXDIR @F@@@@TRKBUF2 . VP )@@G@@ SECOND DGET$ TRACK BUFFER @D@@@@MCTTBL RES MCTSIZ VQ )@@G@@ MCT$ BUFFER @E@@@@LUT RES LUTSIZ LOOKVR )@@G@@UP TABLE BUFFER @G@@@@ADDTBL RES ADDSIZ TABLE OF DVS )@@G@@IRECTORY TRACK ADDRESSES@[@@@@. @^@@@@. LOOKUP TABLE INFO @[@@@@VT )@@G@@. @G@@@@LUTSTART EQU 1 FIRST LUT SECTOR IN DGVU )@@G@@ET$ FILE @E@@@@DCLUTS* + 0 LUT SIZE IN WORDVV )@@G@@S @E@@@@LUTSECS + 0 LUT SIZE IN SECTORS VW )@@G@@@F@@@@NXLUTSEC + 0 NEXT LUT SECTOR FOR DIRLUT VX )@@G@@@D@@@@LUTRD '$$--DGET--$$' LUT I/O PACKET @^@@@@ VY )@@G@@ + 0 @A@@@@ + 0,R$,0,0,0,0 @ @@@@ VZ )@@G@@ + LUTSIZ,LUT@E@@@@ - LUTL INITWA )@@G@@IAL CALL INDICATOR@[@@@@. @G@@@@LEDFLG + 0 WB )@@G@@ INDICATES LEAD ITEM WAS RETRIEVED @D@@@@. WC )@@G@@ VIA DIRLED CALL.@ @@@@ ON DIRSIZ>0 @E@@@@LOGMSGWD )@@G@@ '@LOG DIREC$ MSG - DIRSIZ SHOULD BE INCREASED . '@ @@@@ OFWE )@@G@@F DIRSIZ>0 @^@@@@ ON SNAP@#@@@@NXSECSNP 'NXSEC 'WF )@@G@@@A@@@@ + 0200005,NXSEC @^@@@@ + 0 WG )@@G@@@#@@@@ADDSNP 'ADDTBL'@ @@@@ + 0,ADDTBL @^@@@@ WH )@@G@@ + 0 @#@@@@DASSNP 'DAS '@ @@@@ + 28,BWI )@@G@@UF @^@@@@ + 0 @#@@@@LUTSNP 'LUT '@ @@@@ WJ )@@G@@ + LUTSIZ,LUT@^@@@@ + 0 @#@@@@ OFWK )@@G@@F @]@@@@/$(LC$CODE).@[@@@@. @G@@@@. DIRFIL - SETS DGET$ FILE NAMWL )@@G@@E AS SOMETHING OTHER THAN $$--DGET--$$. @[@@@@. @C@@@@. FORTRWM )@@G@@AN: CALL DIRFIL (12HDGETFILENAME) @[@@@@. @C@@@@. ASSEMBLY: WN )@@G@@DL A0,('DGETFILENAME') @A@@@@. LMJ X11,DIRFIL$ WO )@@G@@@A@@@@. @[@@@@. @G@@@@. THE INWP )@@G@@PUT PARAMETER MUST BE A 12-CHARACTER FIELDATA FILENAME, @A@@@@. WQ )@@G@@LEFT-JUSTIFIED, SPACE-FILLED. @[@@@@. @E@@@@FILARG EQU 1 WR )@@G@@ NUMBER OF ARGUMENTS @[@@@@. @F@@@@DIRFIL* LA WS )@@G@@ A2,(-1,FILARG) # OF ARGS, NO ERROR RETURN @G@@@@ LMJ WT )@@G@@ A3,FORLNK SET UP FORPKT AND RETURN POINTS @E@@@@ LAWU )@@G@@,U A0,*0,A0 LOAD FILENAME ADDRESS @E@@@@ DL WV )@@G@@ A0,,A0 LOAD THE FILENAME @F@@@@DIRFIL$* DS A0,IWW )@@G@@OPAK STORE NEW NAME IN I/O PACKET@D@@@@ DS A0,MWX )@@G@@SPKT+1 AND MSCON PACKET@D@@@@ DS A0,CSFIM+2 WY )@@G@@ AND CSF$ IMAGE @E@@@@ DS A0,LUTRD ALSO LUT IWZ )@@G@@/O PACKET @C@@@@ J 0,X11 RETURN @E@@@@XA )@@G@@/. DIREND - FREES DGET$ FILE AND RE-INITIALIZES DIREC$. @F@@@@. XB )@@G@@ THE POINT OF THIS IS THAT DIREC$ TRIES TO AVOID THE @E@@@@. XC )@@G@@ OVERHEAD OF THE MSCON$/DGET$, WHERE POSSIBLE, BY@F@@@@. XD )@@G@@RETAINING THE COPY OF THE DIRECTORIES ACROSS SEVERAL @F@@@@. XE )@@G@@EXECUTIONS. THIS IS INAPPROPRIATE IN SOME CASES: YOU@G@@@@. XF )@@G@@MAY EXECUTE SOMETHING USING DIREC$, THEN DO SOME @CAT'S @F@@@@. XG )@@G@@ AND @DELETE'S, AND EXECUTE THE PROGRAM AGAIN TO SEE @G@@@@. XH )@@G@@ THE CHANGES. THAT WON'T WORK IF DIREC$ IS USING A COPY @G@@@@XI )@@G@@. OF THE DIRECTORIES FROM BEFORE THE CHANGES. IN THAT CASE, XJ )@@G@@@F@@@@. CALLING DIREND THROWS AWAY THE OLD COPY SO THAT A XK )@@G@@@D@@@@. SUBSEQUENT DIRINT WILL GET A NEW COPY. @[@@@@. XL )@@G@@@ @@@@. FORTRAN: CALL DIREND @[@@@@. @A@@@@. ASSEMBLY: LXM )@@G@@MJ X11,DIREND$@A@@@@. @[@@@@. XN )@@G@@@F@@@@ENDARG EQU 0 NUMBER OF ARGUMENTS (DUMMY) XO )@@G@@@[@@@@. @F@@@@DIREND* LA A2,(-1,ENDARG) # OF ARGS, NO ERXP )@@G@@ROR RETURN @G@@@@ LMJ A3,FORLNK SET UP FORPKT ANXQ )@@G@@D RETURN POINTS @D@@@@DIREND$* LA A0,('@FREE ') CHANGE CSFXR )@@G@@IM @C@@@@ LA A1,CSFIM TO '@FREE'@E@@@@ XS )@@G@@ SA A0,CSFIM AFTER SAVING 'ASG,T' @G@@@@ LAXT )@@G@@ A0,(4,CSFIM) GET CSF$ IMAGE LENGTH AND ADDR @E@@@@ XU )@@G@@ ER CSF$ FREE THE DGET$ FILE @D@@@@ SAXV )@@G@@ A1,CSFIM RESTORE 'ASG,T' @E@@@@ SZ NXSEXW )@@G@@C ZERO DRUM ADDRESS @D@@@@ J 0,X11 XX )@@G@@ RETURN TO CALLER@G@@@@/. DIRINT - ASSIGNS DGET$ FILE, OBTAINS A XY )@@G@@COPY OF THE DIRECTORIES, AND @G@@@@. BUILDS ADDTBL. IF FILE XZ )@@G@@ALREADY EXISTS, JUST BUILDS ADDTBL. @[@@@@. @D@@@@. FORTRAN: CYA )@@G@@ALL DIRINT (ECODE,$ERR,MASK,FORK) @[@@@@. @C@@@@. ASSEMBLY: LYB )@@G@@A,U A0,MASK MASK BITS @E@@@@. LXI,U A0,(FORK$ PYC )@@G@@ARAMETER) (OPTIONAL) @A@@@@. LMJ X11,DIRINT$@E@@@@YD )@@G@@. A1,A2 CONTAIN ERROR CODE @A@@@@. YE )@@G@@ @[@@@@. @D@@@@. MASK VALUES: (BITS YF )@@G@@MAY BE SET IN ANY COMBINATION)@[@@@@. @G@@@@. LIBIT = 002 - IF SYG )@@G@@ET, DIRSEC WILL RETURN LEAD ITEMS (SECTOR 0) @G@@@@. MIBIT = 004 YH )@@G@@- IF SET, DIRSEC WILL RETURN MAIN ITEMS (SECTOR 0) @G@@@@. SEPBIT YI )@@G@@= 010 - IF SET, DIRSEC WILL PUT LEAD ITEMS IN BUFFER ADDRESS@G@@@@. YJ )@@G@@ GIVEN IN DIRSEC CALL, AND MAIN ITEMS IN BUFFER+28 @[@@@@YK )@@G@@. @G@@@@. IF BOTH LIBIT AND MIBIT ARE SET, DIRSEC WILL RETRIEVEYL )@@G@@ LEAD ITEMS @G@@@@. AS WELL AS MAIN ITEMS. FOR ASSEMBLY CALLS, A0 WYM )@@G@@ILL CONTAIN 0 IF A@G@@@@. LEAD ITEM WAS RETURNED, OR 1 IF A MAIN ITYN )@@G@@EM WAS RETRUEND. FOR @G@@@@. FOR FORTRAN CALLS, THIS VALUE WILL YO )@@G@@BE RETURNED IN ECODE (WITH A @G@@@@. NORMAL RETURN). IF YOU WANT TYP )@@G@@O MOVE ON TO THE NEXT LEAD ITEM @G@@@@. WITHOUT RETURNING ALL TYQ )@@G@@HE MAIN ITEMS FOR THE CURRENT LEAD ITEM, @G@@@@. DIREC$'S EXTERNALYR )@@G@@IZED CELL 'GOTONE' SHOULD BE CLEARED BEFORE THE @^@@@@. NEXT DIRSECYS )@@G@@ CALL.@[@@@@. @G@@@@. FORK$ WORD - WHEN DOING A DGET$, NO OTHER AYT )@@G@@CTIVITES MAY BE RUNNING.@G@@@@. FOLLOWING THE DGET$, DIRINT MUST BUILYU )@@G@@D ADDTBL: THIS TAKES A WHILE,@G@@@@. SO IF YOU'D LIKE TO DO SOMETHINYV )@@G@@G ELSE WHILE IT'S GOING ON, YOU MAY @G@@@@. INDICATE SO WITH THE FORKYW )@@G@@$ WORD. IF IT IS 0, IT WILL BE IGNORED, @G@@@@. BUT IF IT IS NON-ZEYX )@@G@@RO, DIRINT WILL DO AN ER FORK$ TO THE ADDRESS @C@@@@. SPECIFIED, AFYY )@@G@@TER THE ACTUAL DGET$ IS DONE. @[@@@@. @F@@@@. IF A CALLING PROGRAYZ )@@G@@M WISHES TO SEE THE REMOVABLE COPY OF @F@@@@. DIRECTORIES FOR FILZA )@@G@@ES ON A CURRENTLY MOUNTED REMOVABLE DISK, @F@@@@. THE FOLLOWING SEQUEZB )@@G@@NCE WILL CHANGE DIRINT TO DO A DGETP$ @^@@@@. INSTEAD OF A DGET$:ZC )@@G@@@[@@@@. @ @@@@. L,U A0,DGETP$ @F@@@@. S ZD )@@G@@ A0,MSCON$FN CHANGE FUNCTION TO DGETP$ @A@@@@. L ZE )@@G@@ A0,('PACKID') @D@@@@. S A0,PAKID$ STORE THE ZF )@@G@@PACKID@F@@@@. LMJ X11,DIREND$ GET RID OF ANY DGET$ FZG )@@G@@ILE @D@@@@. LA,U A0,MASK LOAD THE MASK @C@@@@ZH )@@G@@. LMJ X11,DIRINT$ DO DGETP$ @#@@@@. ...ETC. ZI )@@G@@@[@@@@. @G@@@@. NOTE THAT 'LIBIT' MAY NOT BE SET FOR DGETP$, SINCZJ )@@G@@E THE REMOVABLE @F@@@@. PACK DIRECTORY DOES NOT CONTAIN LEAD ITEMS.ZK )@@G@@ 'SEPBIT' WILL @B@@@@. BE IGNORED IN THIS INSTANCE, ALSO. @[@@@@ZL )@@G@@. @E@@@@INTARG EQU 4 NUMBER OF ARGUMENTS ZM )@@G@@@[@@@@. @G@@@@DIRINT* LA,U A2,INTARG # OF ARGUMENTS, ZN )@@G@@WITH ERROR RETURN @G@@@@ LMJ A3,FORLNK SET UP FORZO )@@G@@PKT AND RETURN POINTS @F@@@@ LA,U A3,*USERFORK,A0 POINZP )@@G@@T TO FORK$ PARAMETER @E@@@@ LA A3,,A3 LOADZQ )@@G@@ FORK$ PARAMETER @E@@@@ LA,U A0,*INTMASK,A0 POINT TO MZR )@@G@@ASK BITS @D@@@@ LA A0,,A0 LOAD MASK BITS ZS )@@G@@@C@@@@ J DIRINT2 CONTINUE @F@@@@DIRINT$* SZZT )@@G@@ FORPKT DECLARE ASSEMBLY ENTRANCE @E@@@@ LAZU )@@G@@ A3,A0 LOAD ENTRY PARAMETER @F@@@@ SSL ZV )@@G@@ A3,18 SHIFT TO GET FORK$ WORD @F@@@@ TZ ZW )@@G@@ A3 IF THERE'S A FORK$ WORD, @C@@@@ LA ZX )@@G@@ A3,,A3 GET IT @F@@@@ LXI,U X11,,X11 ZY )@@G@@ LOAD ERROR RETURN POINT @F@@@@ LXM,U X11,1,X11 ZZ )@@G@@ LOAD NORMAL RETURN POINT @E@@@@DIRINT2 SX X11,SAVX11 AA )@@G@@ SAVE RETURN POINTS @G@@@@ SZ FLAGS CLEAAB )@@G@@R SEP,WANTL,WANTM,INTERNAL, @D@@@@. AC )@@G@@ AND TRYCNT FLAGS@G@@@@ AND,U A0,LIBIT++MIBIT MUST WANT AD )@@G@@EITHER LI'S OR MI'S @E@@@@ JZ A1,BADMASK IF NAE )@@G@@EITHER, MASK ERROR@F@@@@ LA A1,MSCON$FN GET MSCON$AF )@@G@@ FUNCTION CODE @C@@@@ TE,U A1,DGETP$ DGETP$ ? AG )@@G@@@C@@@@ J NOTDGETP NO, GO ON @D@@@@ SAAH )@@G@@ A0,DGETP YES, SET FLAG @F@@@@ TEP,U A0,LAI )@@G@@IBIT DOES USER WANT LEAD ITEMS? @F@@@@ J BADMAJ )@@G@@ASK YES, WELL THERE AREN'T ANY! @G@@@@ J REASAK )@@G@@G (NO) OK, SKIP SETTING OF FLAGS @]@@@@NOTDGETP . @D@@@@AL )@@G@@ TEP,U A0,LIBIT WANT LEAD ITEMS?@D@@@@ SAAM )@@G@@ A0,WANTL YES, SET FLAG @D@@@@ TEP,U A0,MAN )@@G@@IBIT WANT MAIN ITEMS?@D@@@@ SA A0,WANTM AO )@@G@@ YES, SET FLAG @G@@@@ TEP,U A0,SEPBIT BIT 3 SET AP )@@G@@FOR SEPARATE ITEMS? @D@@@@ SA A0,SEP YES,AQ )@@G@@ SET FLAG @[@@@@. @E@@@@. PLUG INITIAL RESERVE INTO CSF$ IMAGE ANDAR )@@G@@ ASSIGN DGET$ FILE@[@@@@. @E@@@@REASG LA A0,MSPKT+3 AS )@@G@@ GET INITIAL RESERVE @F@@@@ JZ A0,ZRO IF ZAT )@@G@@ERO, LEAVE IT ALONE @D@@@@ SSL A0,5 ADD AU )@@G@@ABOUT 3% @G@@@@ TLE,U A0,3 AT LEAST 3 TRACKAV )@@G@@S BEING ADDED? @G@@@@ LA,U A0,2 NO, ADD 2 AW )@@G@@TRACKS TO ACCOMODATE @G@@@@ AA A0,MSPKT+3 DYNAAX )@@G@@MIC EXPANSION, TO BE SAFE @A@@@@ZRO LA A2,('/ ') AY )@@G@@@E@@@@CN DSL A0,36 CONVERT TO FD DECIMAL @ @@@@AZ )@@G@@ DI,U A0,10 @E@@@@ AA,U A1,'0' BA )@@G@@ CONVERT TO FIELDATA @E@@@@ DSL A1,6 LEFTBB )@@G@@-JUSTIFY IN A2 @ @@@@ JNZ A0,CN @E@@@@ SABC )@@G@@ A2,INTRES STORE IN ASG IMAGE @F@@@@ L,U BD )@@G@@ A0,CSFIM GET DGET$ FILE @ASG IMAGE @E@@@@ ER BE )@@G@@ CSF$ @ASG,T OUR DGET$ FILE @F@@@@ JNZ A0,CBF )@@G@@SFR IF NO GOOD, HANDLE ERROR @[@@@@. @B@@@@. OBTAIN COPBG )@@G@@Y OF DIRECTORIES IN DGET$ FILE@[@@@@. @C@@@@ L,U A0,MBH )@@G@@SPKT DO DGET$ @ @@@@ ER MSCON$ @D@@@@ BI )@@G@@ JN A0,MSCR JUMP IF NO GOOD @E@@@@DGETOK L BJ )@@G@@ A0,A3 WANNA FORK ANYTHING? @D@@@@ JZ A0,$BK )@@G@@+2 IF NOT, GO ON @C@@@@ ER FORK$ BL )@@G@@ YES, DO IT@G@@@@ DO DEBUG>1 , SLJ TON$ DEBUG MUST BE >1BM )@@G@@ FOR DIRINT TRACE @F@@@@ LA A0,(28,BUF) SET TO REABN )@@G@@D SEC. 0 INTO BUF @ @@@@ SA A0,IOPAK+4@G@@@@ SZBO )@@G@@ IOPAK+5 INITIALIZE DGET$ DRUM ADDR TO ZERO@D@@@@ BP )@@G@@ LA,U A0,IOPAK LOAD I/O PACKET @E@@@@ ER BQ )@@G@@ IOW$ READ FIRST SECTOR @D@@@@ TZ,S1 IOPABR )@@G@@K+3 CHECK I/O STATUS@D@@@@ SLJ IOR BS )@@G@@ HANDLE I/O ERROR@E@@@@ SZ DIR$MFDF ASSUME OLDBT )@@G@@ MFD FORMAT @F@@@@ TP BUF+3 NEW MFD FILE (MFBU )@@G@@DF) FORMAT? @F@@@@ SA A0,DIR$MFDF YES, SET NEW-FORBV )@@G@@MAT FLAG @ @@@@ ON PRE33=0 @F@@@@ TZ BW )@@G@@ DIR$MFDF CORRECT FORMAT DGET$ FILE? @C@@@@ J BX )@@G@@ $+3 YES, GO ON@E@@@@ LA,U A1,MFDFERR BY )@@G@@ NO, GET ERROR TYPE @F@@@@ J ERREXT1 RETUBZ )@@G@@RN ERROR TYPE TO USER @ @@@@ OFF PRE33=0 @E@@@@ CA )@@G@@ L,H1 A0,BUF+2 FIRST DIR TRK NUMBER @G@@@@ ANCB )@@G@@,U A0,1 CONVERT TO LOGICAL TRACK NUMBER @E@@@@ CC )@@G@@ S A0,FIRSTR SAVE ADDR OF FIRST TRK@G@@@@ L,CD )@@G@@H2 A0,BUF+2 GET # OF DIRECTORY TRACKS WRITTEN @F@@@@ CE )@@G@@ LSSL A0,6 CONVERT TO # OF SECTORS @F@@@@ CF )@@G@@ S A0,QSEC STORE # OF SECTORS WRITTEN @F@@@@ CG )@@G@@ LA,H2 A0,BUF+1 GET LENGTH OF LOOKUP TABLE @F@@@@ CH )@@G@@ SA A0,DCLUTS STORE FOR DIRLUW/DIRLUT @D@@@@ CI )@@G@@ DSL A0,36 SET FOR DIVIDE @F@@@@ DI,U CJ )@@G@@ A0,28 CONVERT TO SECTOR COUNT @D@@@@ TZ CK )@@G@@ A1 ANY REMAINDER? @E@@@@ A,U A0,1 CL )@@G@@ YES, BUMP COUNT BY 1 @F@@@@ A,U A0,1 CM )@@G@@ BUMP ANOTHER ONE FOR TESTS @F@@@@ SA A0,LUTSECS CN )@@G@@ STORE # OF SECS+1 FOR DIRLUT@F@@@@ LMJ A1,RESET CO )@@G@@ INITIALIZE NXSEC, DX, ETC. @[@@@@. @F@@@@. DIRLNK PROVIDES THE ABCP )@@G@@ILITY TO ACCEPT A DIRECTORY LINK ADDRESS @F@@@@. (EG, LINK-TO-SECTOR-1-CQ )@@G@@OF-MAIN-ITEM) AND RETRIEVE THE ITEM IT @F@@@@. POINTS TO. IN ORDER TCR )@@G@@O DO THIS, IT MUST TRANSLATE THE LINK @F@@@@. ADDRESS WHICH POINTS TCS )@@G@@O THE ACTUAL MFD ITEM INTO A RELATIVE @F@@@@. ADDRESS THAT POINTS TOCT )@@G@@ THE COPY OF THAT ITEM IN THE DGET$ FILE. @B@@@@. IT MAKES USE OF TWO FACU )@@G@@CTS TO DO THIS: @[@@@@. @E@@@@. 1. THE MFD IS COPIED TO THE DGECV )@@G@@T$ FILE TRACK BY TRACK. @F@@@@. THEREFORE, IF A GIVEN ITEM STARTS CW )@@G@@AT SECTOR 49 OR WORD @G@@@@. 1372 WITHIN SOME GIVEN TRACK OF THCX )@@G@@E MFD, THEN IT WILL START @F@@@@. AT SECTOR 49 OR WORD 1372 OFCY )@@G@@ THE COPY OF THAT TRACK IN @G@@@@. OUR DGET$ FILE. ALL WE NEEDCZ )@@G@@ TO DO IS FIND THE RIGHT TRACK. @G@@@@. 2. THE DGET$ FILE CONTAINDA )@@G@@S COPIES OF EACH DIRECTORY ALLOCATION @G@@@@. SECTOR (DAS). TDB )@@G@@HE DAS CONTAINS THE ADDRESS OF THE MFD TRACK @G@@@@. FROM WHICHDC )@@G@@ IT WAS COPIED, AS WELL AS THE MFD ADDRESSES FROM @E@@@@. WHICDD )@@G@@H THE NEXT FEW (UP TO 8) TRACKS WERE COPIED. @[@@@@. @G@@@@. DURIDE )@@G@@NG THE FOLLOWING ROUTINE, WE READ EVERY DAS IN THE DGET$ FILE. @G@@@@DF )@@G@@. FROM EACH ONE WE PULL OUT THE MFD ADDRESS OF EACH TRACK DESCRIBED IN DG )@@G@@@G@@@@. THE DAS. THESE ARE BUILT INTO A TABLE CALLED ADDTBL. POSITION DH )@@G@@IN @F@@@@. ADDTBL INDICATES POSITION IN THE DGET$ FILE (EG, THE 7TH WDI )@@G@@ORD OF@F@@@@. ADDTBL CONTAINS THE MFD ADDRESS FROM WHICH MSCON$ COPIED TDJ )@@G@@HE 7TH@G@@@@. TRACK OF DIRECTORY ITEMS INTO THE DGET$ FILE). NOTE THAT DK )@@G@@THIS IS @G@@@@. ALL ZERO-RELATIVE. ALSO NOTE THAT TRACK ZERO OF THEDL )@@G@@ DGET$ FILE IS @F@@@@. NOT TRACK ZERO OF DIRECTORY ITEMS: THE BEGINNDM )@@G@@ING OF THE DGET$ @F@@@@. FILE CONSISTS OF A TABLE OF CONTENTS AND THE LDN )@@G@@OOKUP TABLE. THE @F@@@@. TRACK NUMBER OF THE FIRST TRACK IN THE DGET$ FDO )@@G@@ILE WHICH CONTAINS@F@@@@. DIRECTORY ITEMS IS RETURNED BY MSCON$, IN WORDDP )@@G@@ 2,,H1 OF SECTOR 0@F@@@@. OF THE FILE. THIS IS THE TRACK WHICH WAS COPIDQ )@@G@@ED FROM THE MFD @C@@@@. LOCATION WHOSE ADDRESS IS IN WORD 0 OF ADDTBL.DR )@@G@@@[@@@@. @F@@@@. AFTER INITIALIZATION IS COMPLETE, CALLS MAY BE MADE DS )@@G@@TO DIRLNK TO@E@@@@. READ A SECTOR CORRESPONDING TO A GIVEN MFD (LINK) ADDT )@@G@@DRESS.@G@@@@. FIRST WE SEARCH ADDTBL TO FIND THE ADDRESS OF A TRACK WHICDU )@@G@@H WOULD @F@@@@. CONTAIN THE ADDRESS WE ARE LOOKING FOR. THE INDEX IDV )@@G@@NTO ADDTBL @F@@@@. IS THE RELATIVE TRACK NUMBER IN THE DGET$ FILE FOR TDW )@@G@@HE FIND. @F@@@@. THE OFFSET INTO THE TRACK IS DETERMINED FROM THE DIFDX )@@G@@FERENCE @G@@@@. BETWEEN THE ADDRESS WE ARE LOOKING FOR AND THE MFD ADY )@@G@@DDRESS OF THE @F@@@@. TRACK IT IS IN (FROM ADDTBL). THIS OFFSET INTDZ )@@G@@O THE TRACK IN THE@A@@@@. DGET$ FILE GIVES THE ITEM WE WANT.@[@@@@. EA )@@G@@@D@@@@. DWIGHT ARTHUR @D@@@@. EB )@@G@@ BOSTON, MAY 1976@[@@@@. @E@@@@ EC )@@G@@ L A0,QSEC # OF DIRECTORY SECTORS@G@@@@ ANED )@@G@@ A0,NXSEC SUBTRACT ADDR OF FIRST SECTOR @G@@@@ EE )@@G@@ SSL A0,6 CONVERT SECTOR COUNT TO TRACKS @E@@@@EF )@@G@@ TG,U A0,ADDSIZ+1 IS ADDTBL BIG ENOUGH? @G@@@@ EG )@@G@@ J OVFL NO, RETURN ERROR STATUS TO USER @ @@@@EH )@@G@@ ON PRE33 @E@@@@ TZ DIR$MFDF EI )@@G@@ NEW (MFDF) FORMAT? @F@@@@ J NOMCT YES,EJ )@@G@@ ALL SECTOR ADDRESSES @E@@@@. (EK )@@G@@DON'T NEED MCT) @G@@@@ L,U A0,MCTPKT GET MASTEREL )@@G@@ CONFIGURATION TABLE @^@@@@ ER MCT$@D@@@@ TZEM )@@G@@,S1 MCTPKT MCT$ STATUS OK? @B@@@@ J MCTREN )@@G@@ NO @ @@@@ ON LEVEL27 @F@@@@ LAEO )@@G@@,T2 A0,MCTTBL+5 GET MCT LEVEL INDICATOR @E@@@@ JNEP )@@G@@Z A0,NOMCT IF NEW FORMAT, GO ON @F@@@@ LA,U EQ )@@G@@ A0,1 OTHERWISE, MODIFY MASKS @ @@@@ SA,S1 ER )@@G@@ A0,MASK1 @ @@@@ SA,S1 A0,MASK2 @ @@@@ OFF ES )@@G@@ LEVEL27 @]@@@@NOMCT . @ @@@@ OFF PRE33 @F@@@@ET )@@G@@ L A0,NXSEC GET ADDR OF FIRST DIR SECTOR@F@@@@EU )@@G@@ S A0,IOPAK+5 SET FOR READ OF FIRST DAS @F@@@@EV )@@G@@. ACW IS STILL SET FOR 28,BUF @E@@@@EW )@@G@@ L A1,(1,0) SET INDEX INTO ADDTBL @E@@@@ EX )@@G@@ LXI,U A2,3 SET INCREMENT FOR DAS @F@@@@ LAEY )@@G@@,U A3,1 SET NEW-UNIT FLAG INITIALLY @[@@@@. @^@@@@EZ )@@G@@. READ NEXT DAS INTO BUF@[@@@@. @H@@@@GETDAS LA,U A0,IOPAK FA )@@G@@ READ DIRECTORY ALLOCATION SECTOR (DAS) @C@@@@ ER FB )@@G@@ IOW$ DO THE I/O@B@@@@ TZ,S1 IOPAK+3 FC )@@G@@ OK? @B@@@@ SLJ IOR NO @^@@@@ ONFD )@@G@@ SNAP@D@@@@ LA,U A0,DASSNP GET SNAP$ PKT FE )@@G@@@C@@@@ ER SNAP$ SNAP DAS @#@@@@ OFFF )@@G@@F @F@@@@ LXM,U A2,0 POINT TO FIRST WORD OFFG )@@G@@ DAS @[@@@@. @C@@@@. PICK UP NEXT DIRECTORY TRACK ADDRESS FROM DAS FH )@@G@@@[@@@@. @G@@@@GETTRACK LA A0,BUF,A2 GET DIRECTORY TRFI )@@G@@ACK ADDR FROM DAS @E@@@@ JN A0,SKIPTRACK IF NEGATIVFJ )@@G@@E, SKIP IT @G@@@@ JZ A3,SAMEUNIT GOOD TRACK: JUMPFK )@@G@@ IF NEW-UNIT CLEAR@F@@@@ SA A0,RELADD SAVE 1ST RFL )@@G@@EL ADDR ON UNIT @G@@@@. ONLY RELEVFM )@@G@@ANT FOR MFDF FORMAT, @G@@@@. BUT FN )@@G@@ALWAYS DOING IT SAVES A TEST @ @@@@ ON PRE33 @F@@@@FO )@@G@@ AA A0,(0400000,0) MARK AS POSSIBLE SHORT TRACK@ @@@@FP )@@G@@ OFF PRE33 @E@@@@ LA,U A3,0 FQ )@@G@@ CLEAR NEW-UNIT FLAG @C@@@@ J STORETRK GO OFR )@@G@@N @]@@@@SAMEUNIT . @ @@@@ ON PRE33 @G@@@@ FS )@@G@@ TNZ DIR$MFDF SAME UNIT: NEW FORMAT ADDRESS? @G@@@@FT )@@G@@ J STORETRK NO, USE ABSOLUTE ADDRESS, AS IS FU )@@G@@@ @@@@ OFF PRE33 @G@@@@ LA A0,RELADD FV )@@G@@ YES, GET LAST REL ADDR THIS UNIT @E@@@@ AA,U A0,0FW )@@G@@100 BUMP FOR THIS TRACK @D@@@@ SA A0,RELADD FX )@@G@@ UPDATE RELADD @G@@@@STORETRK S A0,ADDTBL,*A1 STORFY )@@G@@E DIR TRACK ADDR IN ADDTBL @[@@@@. @E@@@@. ANY TRACKS FOUND IN A FZ )@@G@@DAS WILL NOT HAVE DAS'S IN SECTOR 0,@H@@@@. SO BUMP DRUM ADDRESS OF NEXTGA )@@G@@ EXPECTED DAS TRACK FOR EACH TRACK WE FIND. @[@@@@. @D@@@@ GB )@@G@@ L A0,IOPAK+5 GET DRUM ADDRESS@G@@@@ A,U GC )@@G@@ A0,0100 BUMP ADDR OF NEXT TRACK WITH DAS @E@@@@ S GD )@@G@@ A0,IOPAK+5 UPDATE DRUM ADDRESS @F@@@@ J GE )@@G@@ NEXTTRACK GET NEXT TRACK FROM DAS @[@@@@. @E@@@@. AN EGF )@@G@@MPTY DAS TRACK ENTRY HAS BEEN ENCOUNTERED - SKIP IT @[@@@@. @G@@@@GG )@@G@@SKIPTRACK LA A0,RELADD ACCOUNT FOR MISSING TRACK IN MFDF GH )@@G@@@G@@@@ AA,U A0,0100 RELATIVE ADDRESSING STRUCTURGI )@@G@@E. @G@@@@ SA A0,RELADD (RELEVANT ONLY MFDF FOGJ )@@G@@RMAT, BUT @G@@@@. ALWAYS DOING IT GK )@@G@@SAVES A TEST). @[@@@@. @E@@@@. INCREMENT A2 (INDEX INTO DAS) AND GL )@@G@@GO GET NEXT TRACK ENTRY.@F@@@@. IF WE'VE REACHED THE END OF A DAS, GO GEGM )@@G@@T THE NEXT ONE. IF NO @B@@@@. MORE EXIST, INITIALIZATION IS COMPLETE. GN )@@G@@@[@@@@. @G@@@@NEXTTRACK TLEM,U A2,24 REACHED 8TH TRACGO )@@G@@K IN DAS YET? @F@@@@ J GETTRACK NO, CONTINGP )@@G@@UE WITH THIS DAS @G@@@@ TZ BUF,A2 YES, IS LIGQ )@@G@@NK-TO-NEXT-DAS ZERO @G@@@@ TP BUF,A2 OGR )@@G@@R NEGATIVE? (LOWER A2=27 HERE)@F@@@@ LA,U A3,1 GS )@@G@@ IF SO, SET NEW-UNIT FLAG @F@@@@ L A0,IOPAK+5 GT )@@G@@ ADDR OF NEXT EXPECTED DAS @F@@@@ TLE A0,QSEC GU )@@G@@ HAVE WE REACHED THE END? @E@@@@ J GETDAS GV )@@G@@ NO, READ NEXT DAS @[@@@@. @F@@@@. INITIALIZATION IS COMPLETE -GW )@@G@@ STORE ADDTBL LENGTH, AND RETURN @[@@@@. @E@@@@ SA,H2 GX )@@G@@ A1,ADDL STORE ADDTBL LENGTH @^@@@@ ON SNAPGY )@@G@@@F@@@@ SA,H1 A1,ADDSNP+1 STORE # OF WORDS TO SNAP GZ )@@G@@@C@@@@ LA,U A0,ADDSNP SNAP$ PKT @D@@@@ ERHA )@@G@@ SNAP$ SNAP ADDTBL @#@@@@ OFF @E@@@@HB )@@G@@ LX X11,SAVX11 LOAD RETURN ADDRESS @A@@@@ HC )@@G@@ DO DEBUG>0 , SLJ TOFF$ @E@@@@ J 0,X11 HD )@@G@@ TAKE NORMAL RETURN @E@@@@/. DIRSEC - GETS THE NEXT DESIRED ITEM FROHE )@@G@@M THE DGET$ FILE. @E@@@@. THE TYPE OF ITEM TO BE RETURNED IS DHF )@@G@@ETERMINED BY@B@@@@. THE MASK PASSED TO DIRINT. @[@@@@. HG )@@G@@@C@@@@. FORTRAN: CALL DIRSEC (ECODE,$ERR,BUFF) @[@@@@. @A@@@@HH )@@G@@. ASSEMBLY: LA,U A0,BUFF @A@@@@. LMJ X11,DHI )@@G@@IRSEC$@F@@@@. A1,A2 CONTAINS ERROR CHJ )@@G@@ODE @A@@@@. @[@@@@. @G@@@@. DIRSHK )@@G@@EC SCANS ALL DIRECTORY TRACKS IN THE DGET$ FILE SEQUENTIALLY. @H@@@@HL )@@G@@. NXSEC HOLDS THE ADDRESS OF THE NEXT SECTOR IN THE DGET$ FILE TO BE REAHM )@@G@@D. @G@@@@. IF IT IS THE FIRST SECTOR IN A TRACK, WE READ THAT TRACK IHN )@@G@@NTO TRKBUF. @F@@@@. WE THEN CHECK EACH ALLOCATED SECTOR IN THE TRACK TO HO )@@G@@DETERMINE @H@@@@. WHETHER IT IS THE TYPE OF SECTOR THE USER WANTS. IFHP )@@G@@ SO, WE GIVE IT TO HIM. @[@@@@. @G@@@@. WHEN THE END OF THE DGET$ FIHQ )@@G@@LE IS ENCOUNTERED, WE USE AN ERROR RETURN,@A@@@@. AND GIVE THE USER AN EHR )@@G@@OF STATUS. @[@@@@. @G@@@@. DIRLED MAY OPTIONALLY BE USED TO POINT DHS )@@G@@IRSEC AT A PARTICULAR LEAD @H@@@@. ITEM. IN THIS CASE, SUCCESSIVE DIHT )@@G@@RSEC CALLS WILL RETURN THE MAIN ITEMS @G@@@@. ASSOCIATED WITH THAT LHU )@@G@@EAD ITEM ONLY. WHEN NO MORE MAIN ITEMS ARE @F@@@@. FOUND, THE EOF SHV )@@G@@TATUS IS RETURNED AND DIRSEC REVERTS TO NORMAL @#@@@@. SEARCHING MODE. HW )@@G@@@[@@@@. @E@@@@SECARG EQU 3 NUMBER OF ARGUMEHX )@@G@@NTS @[@@@@. @F@@@@DIRSEC* LA,U A2,SECARG # OR ARGS,HY )@@G@@ WITH ERROR RETURN@G@@@@ LMJ A3,FORLNK SET UP FORHZ )@@G@@PKT AND RETURN POINTS @E@@@@ LA,U A0,*USERBUFAD,A0 GET IA )@@G@@BUFFER ADDRESS @C@@@@ J DIRSEC2 CONTINUE IB )@@G@@@E@@@@DIRSEC$* SZ FORPKT CLEAR FORTRAN CELL @E@@@@IC )@@G@@ LXI,U X11,,X11 LOAD ERROR ADDRESS @E@@@@ ID )@@G@@ LXM,U X11,1,X11 NORMAL RETURN POINT @C@@@@DIRSEC2 SXIE )@@G@@ X11,SAVX11 STORE X11 @A@@@@ DO DEBUG>0 , SLJ TONIF )@@G@@$ @E@@@@ SA A0,BUFRADDR SAVE BUFFER ADDRESS IG )@@G@@@G@@@@ TZ GOTONE ARE WE RETRIEVING MAIN ITEMSIH )@@G@@ (IN @G@@@@. WHICH CASE LEAD ITEM III )@@G@@S INCORE) ? @F@@@@ J GTMITM YES, GET NEXT MAIJ )@@G@@IN ITEM FOR @D@@@@. THIS LEAD ITEM. IK )@@G@@@F@@@@ SZ LEDFLG NO, BE SURE LEDFLG IS CLEAR IL )@@G@@@[@@@@. @F@@@@. WE ARE LOOKING FOR THE NEXT LEAD ITEM (OR MAIN ITEM,IM )@@G@@ IF DGETP$) @[@@@@. @F@@@@DIRSC1 L A2,NXSEC GET IN )@@G@@ADDR OF NEXT SECTOR @F@@@@ TNZ A2 ERROIO )@@G@@R IF NOT INITIALIZED @ @@@@ SLJ NOTINT @E@@@@ IP )@@G@@ TG A2,QSEC BEYOND LAST SECTOR? @F@@@@ J IQ )@@G@@ EOF YES, RETURN WITH EOF STATUS @[@@@@. @F@@@@IR )@@G@@. IF ADDRESS IS SECTOR 0 OF A TRACK, WE MUST READ IN THAT TRACK @[@@@@IS )@@G@@. @E@@@@ AND,U A2,077 FIRST SECTOR IN TRACK?IT )@@G@@@G@@@@ JNZ A3,HAVETRACK NO,HAVETRACK YES,READ TRACIU )@@G@@K @E@@@@ LA A1,(1792,TRKBUF) SET ACW AND DRUM ADDR IV )@@G@@@D@@@@ DS A1,IOPAK+4 IN I/O PACKET@D@@@@ IW )@@G@@ LA,U A0,IOPAK READ THE TRACK @^@@@@ ER IX )@@G@@ IOW$@C@@@@ TZ,S1 IOPAK+3 IO OK? @E@@@@ IY )@@G@@ SLJ IOR NOPE, RETURN IO STATUS@[@@@@. @H@@@@IZ )@@G@@. DX POINTS TO THE ENTRY WITHIN A DAS FOR THE CURRENT TRACK SO THAT DIRSJA )@@G@@EC @H@@@@. CAN CHECK THE SECTOR ALLOCATION BITS FOR THE TRACK. SINCEJB )@@G@@ WE JUST READ @F@@@@. IN A NEW TRACK, WE MUST FIND THE ENTRY IN THE JC )@@G@@CURRENT DAS WHICH @H@@@@. CORRESPONDS TO THE NEW TRACK. IF WE HAVE REACHJD )@@G@@ED THE END OF THE CURRENT DAS,@G@@@@. OUR NEW TRACK HAS A DAS IN SECTOR JE )@@G@@0, SO WE MUST MOVE THAT INTO OUR @F@@@@. CURRENT-DAS BUFFER, BUF. NJF )@@G@@OTE THAT DX IS INITIALIZED TO BUF+24@D@@@@. TO FORCE THIS ACTION ON THE JG )@@G@@INITIAL DIRSEC CALL. @[@@@@. @F@@@@NEWDX L A0,DX JH )@@G@@ GET CURRENT INDEX INTO DAS @F@@@@. JI )@@G@@ WHICH IS SITTING IN BUF @F@@@@ A,U A0,3 JJ )@@G@@ INCREMENT TO NEXT TRACK DESC@F@@@@ TG,U A0,BUF+27 JK )@@G@@ REACHED END OF CURRENT DAS? @F@@@@ J BTDAS JL )@@G@@ YES, MOVE NEW DAS INTO BUF @G@@@@ S A0,DX JM )@@G@@ NO, SET NEW INDEX IN CURRENT DAS @F@@@@ L A1,0JN )@@G@@,A0 GET TRACK ADDR FROM DAS @E@@@@ JZ A1,NJO )@@G@@EWDX IF ZERO, TRY ANOTHER @F@@@@ JN A1,NEWDX JP )@@G@@ ALSO IF TRACK UNALLOCATED@E@@@@ J HAVETRACK JQ )@@G@@ HAVE A GOOD TRACK @[@@@@. @E@@@@. MUST GET NEW DAS FROM JR )@@G@@THE DIRECTORY TRACK WE JUST READ IN @[@@@@. @F@@@@BTDAS LA JS )@@G@@ A0,(1,BUF) SET DAS ENTRY INDEX TO 0 @G@@@@ SA,H2 JT )@@G@@ A0,DX (FIRST ENTRY DESCRIBES SELF) @F@@@@ LRJU )@@G@@,U R1,28 SET FOR 28-WORD BT OF DAS @E@@@@ LAJV )@@G@@ A1,(1,TRKBUF) FROM TRKBUF TO BUF @C@@@@ BT JW )@@G@@ A0,0,*A1 DO IT @G@@@@ J BUMP1 JX )@@G@@ THE ADDRESS GIVEN WAS A DAS, SO @H@@@@. JY )@@G@@ BUMP NXSEC AND SEARCH FOR LEAD ITEM. @[@@@@. @D@@@@. AT TJZ )@@G@@HIS POINT, A2 CONTAINS SECTOR ADDRESS, AND DX @D@@@@. POINTS TO TRACK KA )@@G@@INDEX IN CURRENT-DAS BUFFER (BUF). @[@@@@. @G@@@@HAVETRACK SSC KB )@@G@@ A2,5 POSITION ADDRESS TO DETERMINE @F@@@@. KC )@@G@@ WHICH 32-SECTOR ALLOCATION @F@@@@. KD )@@G@@ WORD IN DAS IS APPLICABLE. @F@@@@ ANKE )@@G@@D,U A2,1 SET UP A3 AS INDEX TO 1ST OR@G@@@@. KF )@@G@@ 2ND SECTOR ALLOCATION WORD @G@@@@ KG )@@G@@ A A3,DX FOLLOWING TRACK ADDRESS IN DAS @F@@@@KH )@@G@@ SSL A2,31 GET SECTOR NUMBER MOD 32 @G@@@@KI )@@G@@ L A0,1,A3 GET BIT MASK FOR THESE 32 SECTORS KJ )@@G@@@F@@@@ LSSL A0,0,A2 ISOLATE BIT FOR THIS SECTOR KK )@@G@@@ @@@@ ON SNAP>1 @A@@@@ S A0,NXSECSNKL )@@G@@P+2 @A@@@@ L,U A0,NXSECSNP @ @@@@ ER KM )@@G@@ SNAP$ @#@@@@ OFF @H@@@@ JP A0,BUMP1 KN )@@G@@ IF BIT CLEAR, THIS SECTOR NOT IN USE @E@@@@ L KO )@@G@@ A2,NXSEC IN USE - GET ADDR @E@@@@ AND,U A2,0KP )@@G@@77 ISOLATE SECTOR NUMBER @E@@@@ MSI,U A3,28 KQ )@@G@@ CONVERT TO WORD INDEX @F@@@@ L A0,TRKBUF,A3 KR )@@G@@ GET FIRST WORD OF SECTOR @[@@@@. @H@@@@. DIRECTORY HOUSEKEEPINGKS )@@G@@ MAY LEAVE SHREDS OF MAIN ITEMS LYING AROUND WITH @H@@@@. DAS BITS SKT )@@G@@AYING THEY'RE IN USE. THEREFORE, WE HAVE TO SEARCH THE DGET$ @G@@@@KU )@@G@@. FILE IGNORING MAIN ITEMS, AND SNAGGING ONLY LEAD ITEMS. IF THE USER KV )@@G@@@G@@@@. WANTS MAIN ITEMS, WE'LL HAVE TO MAKE INTERNAL CALLS ON DIRLNK TOKW )@@G@@ GET @G@@@@. THEM, FEEDING IT LINKS FROM THE LEAD ITEM. THIS HAS ITS ADKX )@@G@@VANTAGES: @F@@@@. AT LEAST THIS WAY WE GROUP ALL THE F-CYCLES OF A FILKY )@@G@@E TOGETHER. @[@@@@. @F@@@@ LA A1,(1*/33) SET KZ )@@G@@TO CHECK FOR L.I. SEC 0 @C@@@@ TZ DGETP DGETLA )@@G@@P$ ? @F@@@@ LSSL A1,1 YES, CHECK FOR M.I. SELB )@@G@@C 0 @F@@@@ AND A0,A1 CORRECT TYPE OF SECTORLC )@@G@@? @D@@@@ JZ A1,BUMP1 NO,BUMP1 YES @F@@@@LD )@@G@@ TNZ WANTM DOES USER WANT MAIN ITEMS? @F@@@@LE )@@G@@ J GTLITM NO, JUST GIVE HIM LEAD ITEM @A@@@@LF )@@G@@ L A0,(1,TRKBUF) @F@@@@ AU A0,A3 LG )@@G@@ A1 = (1,TRKBUF+ITEMADDR) @ @@@@ LXM,U A0,LBUF LH )@@G@@@D@@@@ L,U R1,28 BLOCK TRANSFER @G@@@@ LI )@@G@@ BT A0,0,*A1 LITM TO LBUF FOR FINDING MITMS @G@@@@LJ )@@G@@ LA A0,(1,LBUF+11) SET INITIAL INDEX INTO LEAD ITEM 0LK )@@G@@@F@@@@ SA A0,LINDEX FOR FINDING MAIN ITEM LINKS LL )@@G@@@E@@@@ S A0,GOTONE MARK LITM IN CORE @E@@@@LM )@@G@@ SZ LFLAG CLEAR GOTL1, HMANY @D@@@@ LN )@@G@@ TNZ WANTL USER WANTS LITM?@E@@@@ J LO )@@G@@ GTMITM NO, GO GET HIM A MITM @[@@@@. @B@@@@. TRANSFER LLP )@@G@@EAD ITEM 0 TO USER'S BUFFER @[@@@@. @E@@@@GTLITM AA,U A2,1LQ )@@G@@ BUMP SECTOR ADDRESS @H@@@@ SA A2,NXSEC LR )@@G@@ UPDATE ADDRESS OF NEXT SECTOR TO READ @H@@@@ AA LS )@@G@@ A3,(1,TRKBUF) POINT TO LEAD ITEM SECTOR IN TRKBUF @F@@@@GTLITMLT )@@G@@2 LA A0,BUFRADDR GET USER'S BUFFER ADDRESS @E@@@@ LU )@@G@@ LXI,U A0,1 SET INCREMENT FOR BT @ @@@@ LRLV )@@G@@,U R1,28 @F@@@@ BT A0,0,*A3 BT LEAD ITLW )@@G@@EM TO USER BUFFER @F@@@@ LA,U A0,0 SET LEAD-ILX )@@G@@TEM FLAG, AND @D@@@@ TNZ FORPKT FORTRAN CALY )@@G@@LL ? @B@@@@ J DNOTFOR NOPE@E@@@@ LALZ )@@G@@ A0,FORPKT LOAD PACKET ADDRESS @E@@@@ LA,U MA )@@G@@ A0,*ECODE,A0 POINT TO ECODE CELL @D@@@@ SZ 0,A0MB )@@G@@ CLEAR ERROR CODE@E@@@@ SZ ECODE,A0 MC )@@G@@ SET LEAD ITEM FLAG @E@@@@DNOTFOR LX X11,SAVX11 LOADMD )@@G@@ RETURN ADDRESS @A@@@@ DO DEBUG>0 , SLJ TOFF$ @C@@@@ ME )@@G@@ J 0,X11 RETURN @[@@@@. @G@@@@. USER WANTSMF )@@G@@ MAIN ITEMS, SO LET'S FIND THEM USING LINKS FROM LEAD ITEM @[@@@@. MG )@@G@@@G@@@@GTMITM L A0,HMANY HOW MANY MITM'S PASSED SO FAMH )@@G@@R @F@@@@ TG,S4 A0,LBUF+9 ANY MORE IN THIS LEAD MI )@@G@@ITEM? @E@@@@ J NOMORM1 NO, GET NEXT LEAD ITEMMJ )@@G@@@F@@@@ A,U A0,1 YES, SHOW WE PASSED 1 MORE MK )@@G@@@ @@@@ S A0,HMANY @G@@@@ LA A0,LINDEX ML )@@G@@ PICK UP POINTER TO MAIN ITEM LINK @F@@@@ TZ GOTLMM )@@G@@1 LEAD ITEE SECTOR 1 INCORE? @G@@@@ J LIT1MN )@@G@@ YES, FIND MAIN ITEM LINKS THERE @D@@@@LIT0 TZ MO )@@G@@ 0,A0 FIND NEXT LINK @E@@@@ J GOTMILINK MP )@@G@@ GOOD LINK: HANDLE IT @F@@@@ TLEM,U A0,LBUF+27 MQ )@@G@@ END OF LEAD ITEM SECTOR 0? @D@@@@ J LIT0 MR )@@G@@ NO, KEEP GOING @G@@@@ LA,U A0,L1BUF STUFF LEADMS )@@G@@ ITEM SEC 1 IN L1BUF @F@@@@ LA A1,LBUF USE MT )@@G@@LBUF+0 AS LINK WORD @ @@@@ ON DEBUG @E@@@@ MU )@@G@@ LA,U A2,1 MARK AS INTERNAL CALL @D@@@@ SAMV )@@G@@ A2,INTERNAL ON DIRLNK$ @#@@@@ OFF @E@@@@MW )@@G@@ LA A2,SAVX11 LOAD USER'S RETURN @D@@@@ MX )@@G@@ LA A3,ENTRYINFO LOAD THE REST @D@@@@ DS MY )@@G@@ A2,SAVX11X HOLD IT FOR NOW @E@@@@ LMJ X11,DIRLNKMZ )@@G@@$ GET LEAD ITEM SECTOR 1@G@@@@ J NOMORM NA )@@G@@ IF ERROR, FORGET THIS LEAD ITEM @E@@@@ DL A2,SAVX11XNB )@@G@@ LOAD USER'S RETURN @C@@@@ SA A2,SAVX11 NC )@@G@@ REPLACE IT@E@@@@ SA A3,ENTRYINFO REPLACE SOME MORND )@@G@@E @^@@@@ LA,U A0,1@G@@@@ SA A0,GOTL1 NE )@@G@@ SET LEAD-ITEM-SEC-1-INCORE FLAG @G@@@@ LA A0,(NF )@@G@@1,L1BUF+1) SET INDEX INTO LEAD ITEM SEC 1 @F@@@@ SA NG )@@G@@ A0,LINDEX FOR FIRST MAIN ITEM LINK @D@@@@LIT1 TZ NH )@@G@@ 0,A0 LOOK FOR LINK @C@@@@ J GOTMILINK NI )@@G@@ GOT LINK @G@@@@ TLEM,U A0,L1BUF+15 REACHED ENNJ )@@G@@D OF LEAD ITEM SEC 1? @E@@@@ J LIT1 NO, NK )@@G@@TRY NEXT LINK @F@@@@ J NOMORM1 YES, FORGENL )@@G@@T THIS LEAD ITEM @[@@@@. @B@@@@. ERROR RETURN FROM INTERNAL DIRLNK$NM )@@G@@ CALL @[@@@@. @D@@@@NOMORM DL A2,SAVX11X LOAD SAVEDNN )@@G@@ STUFF@D@@@@ SA A2,SAVX11 RESTORE RETURNS @D@@@@NO )@@G@@ SA A3,ENTRYINFO AND OTHER STUFF @[@@@@. @^@@@@NP )@@G@@. END OF MAIN ITEM LINKS@[@@@@. @G@@@@NOMORM1 TZ LEDFLG NQ )@@G@@ ARE WE DOING A SINGLE LEAD ITEM? @E@@@@ J EOF NR )@@G@@ YES, TREAT AS EOF @D@@@@ SZ LFLAG NS )@@G@@ GOTL1,HMANY=0 @E@@@@ SZ GOTONE CLEANT )@@G@@R LINCOR FLAG @G@@@@ J DIRSC1 NO, SEARCHNU )@@G@@ FOR NEXT LEAD ITEM @[@@@@. @B@@@@. UPDATE NXSEC AND FIND NEXT LNV )@@G@@EAD ITEM @[@@@@. @E@@@@BUMP1 L A2,NXSEC POINNW )@@G@@T TO NEXT SECTOR @^@@@@ A,U A2,1@ @@@@ S NX )@@G@@ A2,NXSEC @E@@@@ J DIRSC1 LOOK FOR A LEAD NY )@@G@@ITEM @[@@@@. @I@@@@. HAVE LINK TO MAIN ITEM SECTOR 0 - USE INTERNALNZ )@@G@@ DIRLNK CALL TO GET IT FOR USER @[@@@@. @F@@@@GOTMILINK L OA )@@G@@ A1,0,*A0 PICK UP LINK TO MAIN ITEM @G@@@@. OB )@@G@@ AND INCREMENT LINK WORD POINTER @G@@@@ SAOC )@@G@@ A0,LINDEX UPDATE LEAD ITEM INDEX POINTER @E@@@@ OD )@@G@@ LA A0,BUFRADDR GET USER'S BUFFER ADDR@F@@@@ TZOE )@@G@@ SEP SEPARATE LI/MI BUFFERS? @E@@@@ A,OF )@@G@@U A0,28 YES, PUT MI IN BUFF+28@ @@@@ ON OG )@@G@@ DEBUG @E@@@@ LA,U A2,1 MARK AS INTERNALOH )@@G@@ CALL @D@@@@ SA A2,INTERNAL ON DIRLNK$ @#@@@@OI )@@G@@ OFF @D@@@@ LA A2,SAVX11 LOAD RETUROJ )@@G@@NS @D@@@@ LA A3,ENTRYINFO AND POINTERS @C@@@@OK )@@G@@ DS A2,SAVX11X SAVE THEM @G@@@@ LMJ OL )@@G@@ X11,DIRLNK$ INTERNAL DIRLNK CALL FOR MAIN ITEM@F@@@@ J OM )@@G@@ NOMORM IF ERR, FORGET THIS FILE @D@@@@ LAON )@@G@@ A2,SAVX11X+1 GET CALLER INFO @F@@@@ SA A2,EOO )@@G@@NTRYINFO RESTORE IN NORMAL PLACE @E@@@@ L,U A0,1OP )@@G@@ SET MAIN-ITEM FLAG @D@@@@ TNZ FORPKT OQ )@@G@@ FORTRAN CALL ? @B@@@@ J MINOFOR NOPEOR )@@G@@@E@@@@ LA A1,FORPKT LOAD PACKET ADDRESS @F@@@@OS )@@G@@ LA,U A1,*ECODE,A1 LOAD ERROR CELL ADDRESS @F@@@@OT )@@G@@ SA A0,,A1 STORE ERROR CODE FOR USER @G@@@@OU )@@G@@MINOFOR LX X11,SAVX11X RETRIEVE USER'S RETURN ADDRESS OV )@@G@@@A@@@@ DO DEBUG>0 , SLJ TOFF$ @C@@@@ J 0,X1OW )@@G@@1 RETURN @G@@@@/. DIRLED - GIVEN A LEAD ITEM LINK ADDRESSOX )@@G@@ (AS FROM THE LOOKUP TABLE, @G@@@@. A SEARCH ITEM, OR A MAINOY )@@G@@ ITEM BACK LINK), FIND THE SECTOR @G@@@@. IT POINTS TO, AND OZ )@@G@@PLACE IT IN LBUF FOR DIRSEC. IF THE USER @H@@@@. WANTS LEAD IPA )@@G@@TEMS (AS INDICATED IN THE DIRINT MASK), THEN GIVE @G@@@@. PB )@@G@@IT TO HIM, ALSO. ON SUBSEQUENT CALLS, IF THE LEAD ITEM IS @G@@@@. PC )@@G@@ STILL IN CORE (GOTONE IS NONZERO), JUST MERGE INTO DIRSEC @E@@@@PD )@@G@@. CODE AND RETURN THE MAIN ITEMS TO THE USER. @[@@@@. PE )@@G@@@D@@@@. FORTRAN: CALL DIRLED (ECODE,$ERR,BUFF,LINK) @[@@@@. PF )@@G@@@A@@@@. ASSEMBLY: LA,U A0,BUFF @A@@@@. LA PG )@@G@@ A1,LINK @A@@@@. LMJ X11,DIRLED$@F@@@@. PH )@@G@@ A1,A2 CONTAINS ERROR CODE @A@@@@. PI )@@G@@ @[@@@@. @E@@@@LEDARG EQU 4 PJ )@@G@@ NUMBER OF ARGUMENTS @[@@@@. @F@@@@DIRLED* LA,U A2,LPK )@@G@@EDARG # OF ARGS, WITH ERROR RETURN@G@@@@ LMJ A3,FPL )@@G@@ORLNK SET UP FORPKT AND RETURN POINTS @E@@@@ LA,U PM )@@G@@ A1,*USERLINK,A0 POINT TO LINK WORD @F@@@@ LA A1,,PN )@@G@@A1 GET LINK WORD FROM USER @F@@@@ LA,U A0,*PO )@@G@@USERBUFAD,A0 GET USER'S BUFFER ADDRESS @E@@@@ J DIRLPP )@@G@@ED2 MERGE INTO ASM CODE @E@@@@DIRLED$* SZ FORPKT PQ )@@G@@ INDICATE ASM ENTRY @D@@@@ LXI,U X11,,X11 PR )@@G@@ SET ERROR RETURN@E@@@@ LXM,U X11,1,X11 AND NORMALPS )@@G@@ RETURN @D@@@@DIRLED2 SX X11,SAVX11 SAVE RETURN INFOPT )@@G@@@A@@@@ DO DEBUG>0 , SLJ TON$ @F@@@@ SA A0,BPU )@@G@@UFRADDR SAVE USER'S BUFFER ADDRESS @G@@@@ TZ GOTOPV )@@G@@NE DO WE ALREADY HAVE A LEAD ITEM? @F@@@@ J PW )@@G@@ GTMITM YES, MERGE INTO DIRSEC CODE @G@@@@ SA PX )@@G@@ A0,LEDFLG NO, SET THIS-LEAD-ITEM-ONLY FLAG @G@@@@ LAPY )@@G@@,U A0,LBUF SET OUR BUFFER ADDRESS FOR DIRLNK$@ @@@@ PZ )@@G@@ ON DEBUG @F@@@@ LA,U A2,1 SET QA )@@G@@INTERNAL-DIRLNK$ FLAG @A@@@@ SA A2,INTERNAL @ @@@@QB )@@G@@ OFF DEBUG @F@@@@ LA A2,SAVX11 QC )@@G@@ SAVE USER'S RETURN, ETC. @A@@@@ LA A3,ENTRYINFO QD )@@G@@@ @@@@ DS A2,SAVX11X@E@@@@ LMJ X11,DIRLNKQE )@@G@@$ INTERNAL DIRLNK$ CALL @D@@@@ J NOMORM QF )@@G@@ DIRLNK$ ERROR @F@@@@ DL A2,SAVX11X GET SAVED QG )@@G@@RETURN/ENTRY INFO @D@@@@ SA A2,SAVX11 AND RESTORQH )@@G@@E IT @A@@@@ SA A3,ENTRYINFO @F@@@@ LA QI )@@G@@ A0,(1,LBUF+11) SET MAIN ITEM LINK INDEX @ @@@@ SA QJ )@@G@@ A0,LINDEX @E@@@@ LA,U A0,1 MARK LEAD ITEM IQK )@@G@@NCORE @ @@@@ SA A0,GOTONE @G@@@@ TNZ WANTQL )@@G@@L DOES USER WANT THE LEAD ITEM? @F@@@@ J QM )@@G@@ GTMITM NO, MERGE INTO DIRSEC CODE @C@@@@ LA QN )@@G@@ A3,(1,LBUF) SET FOR BT@E@@@@ J GTLITM2 QO )@@G@@ MERGE INTO DIRSEC CODE@H@@@@/. DIRLNK - GIVEN A DIRECTORY LINK ADDRESSQP )@@G@@, FIND THE SECTOR IT POINTS TO, @D@@@@. AND TRANSFER IT TOQQ )@@G@@ THE CALLER'S BUFFER. @[@@@@. @D@@@@. FORTRAN: CALL DIRLNK (QR )@@G@@ECODE,$ERR,BUFF,LINK) @[@@@@. @A@@@@. ASSEMBLY: LA,U A0,BUQS )@@G@@FF @A@@@@. LA A1,LINK @A@@@@. LQT )@@G@@MJ X11,DIRLNK$@F@@@@. A1,A2 CONTQU )@@G@@AINS ERROR CODE @A@@@@. @[@@@@. QV )@@G@@@[@@@@. @E@@@@LNKARG EQU 4 NUMBER OF ARGUMEQW )@@G@@NTS @[@@@@. @F@@@@DIRLNK* LA,U A2,LNKARG # OF ARGS,QX )@@G@@ WITH ERROR RETURN@G@@@@ LMJ A3,FORLNK SET UP FORQY )@@G@@PKT AND RETURN POINTS @E@@@@ LA,U A1,*USERLINK,A0 POINQZ )@@G@@T TO LINK ADDRESS @E@@@@ LA A1,,A1 LOAD LINK RA )@@G@@ADDRESS @E@@@@ LA,U A0,*USERBUFAD,A0 LOAD BUFFER ADDRRB )@@G@@ESS @C@@@@ J DIRLNK2 CONTINUE @E@@@@DIRLNKRC )@@G@@$* SZ FORPKT CLEAR FORTRAN PACKET @E@@@@ LXRD )@@G@@I,U X11,,X11 LOAD ERROR RETURN @E@@@@ LXM,U RE )@@G@@ X11,1,X11 LOAD NORMAL RETURN @C@@@@DIRLNK2 SX X11,RF )@@G@@SAVX11 SAVE IT @A@@@@ DO DEBUG>0 , SLJ TON$ @E@@@@RG )@@G@@ SA A1,LINKERADD SAVE LINK ADDRESS @E@@@@ RH )@@G@@ SA A0,BUFRADDR SAVE BUFFER ADDRESS @G@@@@LINK01 TZRI )@@G@@ ADDL IS DIRINT INITIALIZATION COMPLETE?@ @@@@ RJ )@@G@@ TNZ NXSEC @B@@@@ SLJ NOTINT NO RK )@@G@@@D@@@@ S R2,SAVR2 YES, SAVE R2 @C@@@@ RL )@@G@@ S X8,SAVX8 AND X8 @[@@@@. @D@@@@. CODE RIPPERM )@@G@@D OFF FROM @SECURE 19R2 ELEMENT 'DIRECT' @[@@@@. @F@@@@ LARN )@@G@@ A0,A1 GET LINK WORD PASSED BY USER@D@@@@ JZRO )@@G@@ A0,ADDCN3 IF ZERO, ERROR @ @@@@ ON PRE3RP )@@G@@3 @F@@@@ TZ DIR$MFDF NEW FORMAT DIRECTORY FRQ )@@G@@ILE? @F@@@@ J ADDCN1 YES, GO DIRECTLY TO SERR )@@G@@ARCH @G@@@@ SSL A1,24 SHIFT UNTIL A1 = FLAGSRS )@@G@@ AND SS # @E@@@@ AND,U A1,0377 MASK OFF MOST FLRT )@@G@@AGS @D@@@@ TEP,U A2,0200 REMOVABLE DISC? @F@@@@RU )@@G@@ J ADDCN1 YES, GO DIRECTLY TO SEARCH @E@@@@RV )@@G@@ LA,T2 A1,MCTTBL+6 GET MCT HEADER LENGTH @ @@@@ RW )@@G@@ ON LEVEL27 @D@@@@ TNZ,T2 MCTTBL+5 LEVERX )@@G@@L 27 EXEC? @F@@@@ LA,T2 A1,MCTTBL+8 YES, GET OLD HEARY )@@G@@DER LENGTH @ @@@@ OFF LEVEL27 @D@@@@ A RZ )@@G@@ A1,A2 ADD SUBSYSTEM # @H@@@@ L,T3 A2,MCTTBL,SA )@@G@@A1 GET OFFSET FOR SUBSYSTEM STATUS ENTRY @E@@@@ L,S1 SB )@@G@@ A3,MCTTBL,A2 PICK UP EQUIPMENT CODE@G@@@@ TG,U A3,0SC )@@G@@30 FASTRAND FORMAT MASS STORAGE? @D@@@@ J SD )@@G@@ ADDCN1 YES, DO SEARCH @D@@@@ L X8,(1,1) SE )@@G@@ GET ADDTBL INDEX@G@@@@ADDCN0 L A1,ADDTBL-1,X8 GET SF )@@G@@DIR TRACK ADDR FROM ADDTBL @E@@@@ AND A1,MASK1 SG )@@G@@ MASK OFF FLAG BITS @E@@@@ AN,U A2,1 SET SH )@@G@@UP FOR RANGE TEST @ @@@@ AU,U A2,1792 @G@@@@ ANSI )@@G@@D A0,MASK1 REMOVE FLAG BITS FROM INPUT ADDR @G@@@@ SJ )@@G@@ TNW A2,A1 IS INPUT ADDR WITHIN THIS TRACK? @B@@@@SK )@@G@@ J ADDCN5 YES @F@@@@ADDCN4 TLEM X8,ASL )@@G@@DDL ARE WE AT END OF TABLE? @F@@@@ J ADDCSM )@@G@@N0 NO, TRY NEXT TRACK IN ADDTBL@E@@@@ J ADDCSN )@@G@@N3 YES, NO FIND: ERROR @F@@@@ADDCN5 L,U A3,0,X8 SO )@@G@@ A3 = INDEX INTO ADDTBL + 1 @D@@@@ AN,U A3,1 SP )@@G@@ ADJUST SLIGHTLY @G@@@@ A,U A2,1 RESESQ )@@G@@T A2 = TRACK ADDR FROM ADDTBL @F@@@@ AN A1,A2 SR )@@G@@ SUBTRACT TO GET WORD INDEX @E@@@@ TN ADDTBL,A3 SS )@@G@@ SHORT TRACK CASE? @C@@@@ J ADDCN7 NO -ST )@@G@@ SKIP @D@@@@ AND A0,(0777777) YES, MASK OFF H1@F@@@@SU )@@G@@ AN,H2 A1,ADDTBL,A3 SUBTRACT TO GET WORD INDEX @E@@@@SV )@@G@@ JN A1,ADDCN4 JUMP IF SHORT TRACK @D@@@@ADDCN7SW )@@G@@ LA,U A0,0 CLEAR FOR DIVIDE@E@@@@ DI,U SX )@@G@@ A0,034 FORM SECTOR INDEX @E@@@@ JNZ A1,ASY )@@G@@DDCN3 JUMP IF BAD REMAINDER @F@@@@ S A0,A1 SZ )@@G@@ STORE SECTOR INDEX IN A1 @C@@@@ J ADDCN2 TA )@@G@@ CONTINUE @ @@@@ OFF PRE33 @G@@@@ADDCN1 L TB )@@G@@ X8,(1,-1) SET ADDTBL INDEX AND INCREMENT @E@@@@ TC )@@G@@ L A2,ADDL A2 = TABLE LENGTH @E@@@@ S TD )@@G@@ A2,R1 STORE REPEAT COUNT @D@@@@ L TE )@@G@@ R2,MASK2 GET MASK FOR MSE@G@@@@ MSE A0,ADDTBL+TF )@@G@@1,*X8 SEARCH FOR EQUAL TRACK ADDRESS @D@@@@ J ADDCTG )@@G@@N3 NO FIND - ERROR @ @@@@ L R2,SAVR2 @F@@@@TH )@@G@@ L,U A3,0,X8 A3 = REL INDEX INTO ADDTBL @F@@@@TI )@@G@@ AND A0,(0777777) MASK OFF H1 OF INPUT ADDR @H@@@@TJ )@@G@@ AN,H2 A1,ADDTBL,A3 - FOUND TRK ADDR TO GET SECTOR INDTK )@@G@@EX @F@@@@ S A1,A0 STORE SECTOR INDEX IN TL )@@G@@A0 @C@@@@ADDCN2 L X8,SAVX8 RESTORE X8@E@@@@ TM )@@G@@ A A3,FIRSTR GET LOGICAL TRACK # @E@@@@ LSTN )@@G@@SL A3,6 CONVERT TO SECTOR # @D@@@@ A TO )@@G@@ A0,A3 ADD SECTOR INDEX@F@@@@ S A0,IOPAK+5TP )@@G@@ STORE AS DRUM ADDRESS FOR IO@E@@@@ L A2,NXSEC TQ )@@G@@ GET NEXT SECTOR ADDR @C@@@@ AN,U A2,1 TR )@@G@@ ADJUST @G@@@@ SSL A2,6 CONVERT TO DGET$TS )@@G@@ FILE TRACK # @F@@@@ SSL A0,6 CONVERT TATT )@@G@@RGET ADDR ALSO @[@@@@. @F@@@@. WE CURRENTLY HAVE ONE DIRECTORY TRTU )@@G@@ACK INCORE. IF THE REQUIRED @F@@@@. SECTOR IS WITHIN THAT TRACK, WE CATV )@@G@@N JUST BLOCK TRANSFER IT TO @E@@@@. THE CALLER'S BUFFER. IF NOT, WE MTW )@@G@@UST READ THE SECTOR IN @^@@@@. FROM THE DGET$ FILE. @[@@@@. @D@@@@TX )@@G@@ TNE A0,A2 SAME TRACK? @F@@@@ J TY )@@G@@ BT YES, ALREADY HAVE IT INCORE @E@@@@ LATZ )@@G@@ A0,BUFRADDR LOAD BUFFER ADDRESS @E@@@@ LXI,U UA )@@G@@ A0,28 SET TO READ 1 SECTOR @ @@@@ S A0,IUB )@@G@@OPAK+4@D@@@@ LA,U A0,IOPAK READ THE SECTOR @^@@@@UC )@@G@@ ER IOW$@C@@@@ TZ,S1 IOPAK+3 IO OUD )@@G@@K? @B@@@@ SLJ IOR NO @D@@@@ J UE )@@G@@ LINKDONE YES, ALL DONE @[@@@@. @G@@@@BT MSUF )@@G@@I,U A1,034 CONVERT SECTOR INDEX TO WORD INDEX@G@@@@ UG )@@G@@ AH A1,(1,TRKBUF) ADD START OF TRK BUFFER, AND INC @E@@@@UH )@@G@@ LA A0,BUFRADDR LOAD BUFFER ADDRESS @D@@@@ UI )@@G@@ LXI,U A0,1 SET INC FOR BT @ @@@@ L,U UJ )@@G@@ R1,28 @F@@@@ BT A0,0,*A1 MOVE SECTOR TO UUK )@@G@@SER'S BUFFER@]@@@@LINKDONE . @ @@@@ ON DEBUG @E@@@@UL )@@G@@ TNZ INTERNAL INTERNAL DIRLNK$ CALL?@E@@@@ UM )@@G@@ SLJ TOFF$ NO, TURN OFF SNOOPY @F@@@@ SZUN )@@G@@ INTERNAL CLEAR INTERNAL-DIRLNK$ FLAG @#@@@@ OFUO )@@G@@F @E@@@@ LX X11,SAVX11 LOAD RETURN ADDRESS UP )@@G@@@C@@@@ J 0,X11 RETURN @[@@@@. @]@@@@UQ )@@G@@. LINK ERROR@[@@@@. @E@@@@ADDCN3 L,U A1,LNKERR A0 GUR )@@G@@ETS ERROR TYPE @F@@@@ L A2,LINKERADD A2 GETS USUS )@@G@@ER'S LINK WORD @C@@@@ L R2,SAVR2 RESTORE R2UT )@@G@@@C@@@@ L X8,SAVX8 RESTORE X8@ @@@@ ONUU )@@G@@ DEBUG @E@@@@ TNZ INTERNAL INTERNAL DUV )@@G@@IRLNK$ CALL?@E@@@@ SLJ TOFF$ NO, TURN OFF SNOUW )@@G@@OPY @F@@@@ SZ INTERNAL CLEAR INTERNAL-DIRLNK$UX )@@G@@ FLAG @#@@@@ OFF @G@@@@ J ERREXT2 UY )@@G@@ NO, RETURN ERROR STATUS TO USER @F@@@@/. DIRLUT - RETURNS LUT SECTORUZ )@@G@@S ONE AT A TIME TO USER'B BUFFER. @[@@@@. @C@@@@. FORTRAN: CVA )@@G@@ALL DIRLUT (ECODE,$ERR,BUFF) @[@@@@. @A@@@@. ASSEMBLY: LA,U VB )@@G@@ A0,BUFF @A@@@@. LMJ X11,DIRLUT$@F@@@@. VC )@@G@@ A1,A2 CONTAINS ERROR CODE @A@@@@. VD )@@G@@ @[@@@@. @G@@@@. THE NEXT 28 WORDS OF LOOKUP VE )@@G@@TABLE WILL BE TRANSFERRED TO THE SUPPLIED @G@@@@. BUFFER. IF THE END OFVF )@@G@@ THE LOOKUP TABLE IS ENCOUNTERED, THE ERROR @D@@@@. RETURN WILL BE TVG )@@G@@AKEN, AND AN EOF STATUS RETURNED. @[@@@@. @E@@@@LUTARG EQU VH )@@G@@ 3 NUMBER OF ARGUMENTS @[@@@@. @F@@@@DIRLUT* LAVI )@@G@@,U A2,LUTARG # OF ARGS, WITH ERROR RETURN@G@@@@ LMVJ )@@G@@J A3,FORLNK SET UP FORPKT AND RETURN POINTS @F@@@@ VK )@@G@@ LA,U A0,*USERBUFAD,A0 GET USER'S BUFFER ADDRESS @E@@@@ VL )@@G@@ J DIRLUT2 MERGE INTO ASM CODE @E@@@@DIRLUT$* SZVM )@@G@@ FORPKT INDICATE ASM ENTRY @D@@@@ LXI,U VN )@@G@@ X11,,X11 SET ERROR RETURN@E@@@@ LXM,U X11,1,X11 VO )@@G@@ AND NORMAL RETURN @D@@@@DIRLUT2 SX X11,SAVX11 VP )@@G@@ SAVE RETURN INFO@A@@@@ DO DEBUG>0 , SLJ TON$ @E@@@@ VQ )@@G@@ SA A0,BUFRADDR SAVE BUFFER ADDRESS @E@@@@ LAVR )@@G@@ A0,NXLUTSEC NEXT LUT SECTOR TO GET@E@@@@ TG VS )@@G@@ A0,LUTSECS REACHED END OF LUT? @B@@@@ J EOF VT )@@G@@ YES @H@@@@ AA,U A0,LUTSTART NO, BUMP TVU )@@G@@O START OF LUT IN DGETT FILE @H@@@@ LMJ X11,GETLUT VV )@@G@@ POINT A0 TO START OF SECTOR IN CORE @E@@@@ LXI,U A0,1VW )@@G@@ SET INCREMENT FOR BT @F@@@@ LXM A1,BUFRADDVX )@@G@@R GET USER'S BUFFER ADDRESS @E@@@@ LXI,U A1,1 VY )@@G@@ SET INCREMENT FOR BT @E@@@@ LR,U R1,28 VZ )@@G@@ SET TO MOVE 1 SECTOR @H@@@@ BT A1,,*A0 TRANWA )@@G@@SFER LUT SECTOR TO USER'S BUFFER @E@@@@ LA A0,NXLUTSEWB )@@G@@C GET NEXT LUT SECTOR @C@@@@ AA,U A0,1 WC )@@G@@ BUMP IT @E@@@@ SA A0,NXLUTSEC UPDATE NEXT LUT WD )@@G@@SECTOR@E@@@@ LX X11,SAVX11 PICK UP RETURN INFO WE )@@G@@@A@@@@ DO DEBUG>0 , SLJ TOFF$ @D@@@@ J 0,X1WF )@@G@@1 NORMAL RETURN @G@@@@/. DIRLUW - GIVEN QUALIFIER AND FILEWG )@@G@@NAME, PERFORMS HASHING AND RETURNS @E@@@@. THE LOOKUP TABLE WWH )@@G@@ORD WHICH IS THUS REFERENCED. @[@@@@. @D@@@@. FORTRAN: CALL DIWI )@@G@@RLUW (ECODE,$ERR,QUALFL,LUTW) @[@@@@. @A@@@@. ASSEMBLY: LA,U WJ )@@G@@ A0,QUALFL @A@@@@. LMJ X11,DIRLUW$@F@@@@. WK )@@G@@ A1,A2 CONTAINS ERROR CODE @A@@@@. WL )@@G@@ @[@@@@. @F@@@@. WHERE 'QUALFL' IS THE ADDRESWM )@@G@@S OF A 4-WORD BUFFER CONTAINING THE @G@@@@. FIELDATA QUALIFIER AND FILENWN )@@G@@AME. FOR FORTRAN CALLS, THE LOOKUP TABLE @G@@@@. WORD WILL BE RETURNED WO )@@G@@IN 'LUTW' -- FOR ASSEMBLY, IT WILL BE PUT IN A0.@[@@@@. @E@@@@LUWARGWP )@@G@@ EQU 4 NUMBER OF ARGUMENTS @[@@@@. @F@@@@WQ )@@G@@DIRLUW* LA,U A2,LUWARG # OF ARG, WITH ERROR RETURN @G@@@@WR )@@G@@ LMJ A3,FORLNK SET UP FORPKT AND RETURN POINTS WS )@@G@@@F@@@@ LA,U A0,*USERBUFAD,A0 GET USER'S BUFFER ADDRESS WT )@@G@@@E@@@@ J DIRLUW2 MERGE INTO ASM CODE @E@@@@WU )@@G@@DIRLUW$* SZ FORPKT INDICATE ASM ENTRY @D@@@@ WV )@@G@@ LXI,U X11,,X11 SET ERROR RETURN@E@@@@ LXM,U WW )@@G@@ X11,1,X11 AND NORMAL RETURN @D@@@@DIRLUW2 SX X11,WX )@@G@@SAVX11 SAVE RETURN INFO@A@@@@ DO DEBUG>0 , SLJ TON$ WY )@@G@@@F@@@@ TZ ADDL IS INITIALIZATION COMPLETE? WZ )@@G@@@ @@@@ TNZ NXSEC @B@@@@ SLJ NOTINT XA )@@G@@ NO @H@@@@ DL A2,2,A0 YES, GET FILENAMXB )@@G@@E FROM USER'S PACKET @E@@@@ DL A0,0,A0 ALSOXC )@@G@@ THE QUALIFIER @F@@@@ DA A0,A2 GENERATE LXD )@@G@@OOKUP TABLE INDEX @ @@@@ DSC A0,18 @B@@@@ AHXE )@@G@@ A0,A1 H @B@@@@ DSL A0,18 XF )@@G@@ A@C@@@@ SSL A1,18 S @C@@@@ XG )@@G@@ AA A0,A1 H @ @@@@ DSL A0,3XH )@@G@@6 @G@@@@ DI A0,DCLUTS DIVIDE BY SIZE OF LOOKXI )@@G@@UP TABLE @G@@@@. NOW HAVE LUT WORXJ )@@G@@D INDEX IN A1 @E@@@@ LA,U A0,0 SET FOR DIXK )@@G@@VIDE AGAIN @F@@@@ DI,U A0,28 GET LUT SECTOR IXL )@@G@@NDEX IN A0, @D@@@@. WORD INDEX IN A1XM )@@G@@@F@@@@ AA,U A0,LUTSTART ADD LUT STARTING SECTOR XN )@@G@@@H@@@@ LMJ X11,GETLUT POINT A0 TO START OF THE DESXO )@@G@@IRED SECTOR @D@@@@ AA A1,A0 ADD WORD OFFSET XP )@@G@@@E@@@@ LA A0,,A1 PICK UP THE LUT ENTRY @D@@@@XQ )@@G@@ TNZ FORPKT FORTRAN CALL? @B@@@@ J XR )@@G@@ LUWASM NO @G@@@@ LA A1,FORPKT XS )@@G@@ YES, GET PARAMETER LIST ADDRESS @E@@@@ LA,U A1,*USERLUXT )@@G@@TW,A1 POINT TO USER'S WORD @E@@@@ SA A0,,A1 XU )@@G@@ STORE ENTRY FOR USER @E@@@@LUWASM LX X11,SAVX11 PICKXV )@@G@@ UP RETURN INFO @A@@@@ DO DEBUG>0 , SLJ TOFF$ @D@@@@ XW )@@G@@ J 0,X11 NORMAL RETURN @G@@@@/. DIRLUF - GIVEN XX )@@G@@A QUALIFIER AND FILENAME, FINDS LOOKUP TABLE ENTRY, @G@@@@. XY )@@G@@AND FOLLOWS SEARCH ITEM CHAIN, IF NECESSARY, TO FIND THE @F@@@@. XZ )@@G@@ LEAD ITEM LINK. RETURNS LEAD ITEM LINK WORD OR 0. @[@@@@. YA )@@G@@@D@@@@. FORTRAN: CALL DIRLUF (ECODE,$ERR,QUALFL,LUTW) @[@@@@. YB )@@G@@@A@@@@. ASSEMBLY: LA,U A0,QUALFL @A@@@@. LMJ YC )@@G@@ X11,DIRLUF$@F@@@@. A1,A2 CONTAINS EYD )@@G@@RROR CODE @A@@@@. @[@@@@. @F@@@@YE )@@G@@. WHERE 'QUALFL' IS THE ADDRESS OF A 4-WORD BUFFER CONTAINING THE @A@@@@YF )@@G@@. FIELDATA QUALIFIER AND FILENAME. @[@@@@. @G@@@@. FOR FORTRAN CALLYG )@@G@@S, THE RESULTING LEAD ITEM LINK (OR 0) IS RETURNED @D@@@@. IN 'LUTW':YH )@@G@@ FOR ASSEMBLY, IT IS RETURNED IN A0. @[@@@@. @G@@@@. IF AN ERROYI )@@G@@R IS ENCOUNTERED IN THE SEARCH ITEM CHAIN, THE ERROR RETURN @D@@@@. WILLYJ )@@G@@ BE TAKEN, WITH ECODE (A1) SET TO 'LUFERR'. @[@@@@. @E@@@@LUFARGYK )@@G@@ EQU 4 NUMBER OF ARGUMENTS @[@@@@. @F@@@@YL )@@G@@DIRLUF* LA,U A2,LUFARG # OF ARG, WITH ERROR RETURN @G@@@@YM )@@G@@ LMJ A3,FORLNK SET UP FORPKT AND RETURN POINTS YN )@@G@@@E@@@@ LA,U A0,*USERBUFAD,A0 GET QUALFL ADDRESS @E@@@@YO )@@G@@ J DIRLUF2 MERGE INTO ASM CODE @E@@@@DIRLUFYP )@@G@@$* SZ FORPKT INDICATE ASM ENTRY @D@@@@ LXYQ )@@G@@I,U X11,,X11 SET ERROR RETURN@E@@@@ LXM,U X11,YR )@@G@@1,X11 AND NORMAL RETURN @D@@@@DIRLUF2 SX X11,SAVX11YS )@@G@@ SAVE RETURN INFO@A@@@@ DO DEBUG>0 , SLJ TON$ @F@@@@YT )@@G@@ TZ ADDL IS INITIALIZATION COMPLETE? @ @@@@YU )@@G@@ TNZ NXSEC @B@@@@ SLJ NOTINT YV )@@G@@ NO @E@@@@ SZ GOTONE CLEAR L.I. INCORE FLAGYW )@@G@@@E@@@@ SA A0,LUFQF SSAVE QUALFL ADDRESS @D@@@@YX )@@G@@ LA A2,SAVX11 GRAB RETURN INFO@D@@@@ LAYY )@@G@@ A3,ENTRYINFO AND ENTRY INFO @D@@@@ DS A2,SYZ )@@G@@AVX11X SAVE FOR LATER @E@@@@ LMJ X11,DIRLUW$ ZA )@@G@@ FIND LOOKUP TABLE WORD@D@@@@ J LUFERROR ERROZB )@@G@@R RETURN @G@@@@ JP A0,LUFDONE IF ENTRY IS POSIZC )@@G@@TIVE, RETURN IT @H@@@@. (IT'S EITHZD )@@G@@ER 0 OR A LEAD ITEM LINK) @G@@@@ SA A0,A1 ZE )@@G@@ OTHERWISE, PUT LINK WORD IN A1 @[@@@@. @G@@@@. LUT ENTRY POINTSZF )@@G@@ TO SEARCH ITEM -- GET IT, AND FIND LEAD ITEM LINK @[@@@@. @]@@@@ZG )@@G@@LUFSEARCH . @ @@@@ ON DEBUG @G@@@@ LA,U ZH )@@G@@ A0,1 SET INTERNAL DIRLNK$ CALL FLAG @A@@@@ SAZI )@@G@@ A0,INTERNAL @#@@@@ OFF @F@@@@ LA,U ZJ )@@G@@ A0,LBUF USE LBUF FOR SEARCH ITEM @E@@@@ LMJ ZK )@@G@@ X11,DIRLNK$ LINK TO SEARCH ITEM @D@@@@ J LUFEZL )@@G@@RROR ERROR RETURN @H@@@@ LA A2,LUFQF ZM )@@G@@ OK, GET ADDR OF USER'S QUALFL BUFFER @F@@@@ DL A0,0ZN )@@G@@,A2 GET SPECIFIED QUALIFIER @D@@@@ DL A2,2ZO )@@G@@,A2 AND FILENAME @F@@@@ LXI,U X11,5 ZP )@@G@@ SET INCREMENT FOR SEARCH @F@@@@ LXM,U X11,LBUF ZQ )@@G@@ POINT TO SEACH ITEM BUFFER @E@@@@LUFLOOP DTE A0,1,X11 ZR )@@G@@ MATCHING QUALIFIER? @B@@@@ J LUFLOOPE NO ZS )@@G@@@F@@@@ DTE A2,3,X11 YES, MATCHIN FILENAME TOO? ZT )@@G@@@B@@@@ J LUFLOOPE NO @F@@@@ LA ZU )@@G@@ A0,5,X11 YES, GET LEAD ITEM LINK @F@@@@ J ZV )@@G@@ LUFDONE AND RETURN IT TO THE USER @F@@@@LUFLOOPE TLEM,U ZW )@@G@@ X11,LBUF+20 ALL DONE WITH SEARCH ITEM? @D@@@@ J ZX )@@G@@ LUFLOOP NO, CONTINUE @E@@@@ TP LBUF+0 ZY )@@G@@ YES, ARE THERE MORE? @E@@@@ J LUFZERO ZZ )@@G@@ NO, RETURN A ZERO LINK@F@@@@ LA A1,LBUF+0 YES,AA )@@G@@ GET LINK TO NEXT S.I. @G@@@@ J LUFSEARCH CONTAB )@@G@@INUE SEARCH FOR LEAD ITEM @E@@@@LUFZERO LA,U A0,0 AC )@@G@@ INDICATE NO SUCH FILE @[@@@@. @D@@@@. HAVE LEAD ITEM LINK OR 0: RAD )@@G@@ETURN IT TO THE USER @[@@@@. @F@@@@LUFDONE DL A2,SAVX11XAE )@@G@@ GET SAVED ENTRY/RETURN INFO @D@@@@ SA A2,SAVX11 AF )@@G@@ AND RESTORE IT @A@@@@ SA A3,ENTRYINFO @E@@@@AG )@@G@@ TNZ FORPKT CALLED FROM FORTRAN? @E@@@@ AH )@@G@@ J LUFASM NO, FROM ASSEMBLY @F@@@@ LAAI )@@G@@ A1,FORPKT YES, POINT TO PARAMETER LIST@F@@@@ LAAJ )@@G@@,U A1,*USERLUTW,A1 POINT TO USER'S DATA WORD @F@@@@ SAAK )@@G@@ A0,,A1 STORE LINK WORD OR ZERO @F@@@@LUFASM LXAL )@@G@@ X11,SAVX11 GET NORMAL RETURN ADDRESS @A@@@@ DOAM )@@G@@ DEBUG>0 , SLJ TOFF$ @D@@@@ J 0,X11 NORMAN )@@G@@AL RETURN @[@@@@. @^@@@@. DIRLUF ERROR HANDLER @[@@@@. @G@@@@AO )@@G@@LUFERROR DL A0,SAVX11X RETRIEVE USER'S ENTRY/RETURN INFO AP )@@G@@@D@@@@ SA A0,SAVX11 AND RESTORE THEM@A@@@@ AQ )@@G@@ SA A1,ENTRYINFO @E@@@@ LA,U A1,LUFERR AR )@@G@@ INDICATE DIRLUF ERROR @E@@@@ J ERREXT1 TAKEAS )@@G@@ ERROR RETURN @D@@@@/. GETLUT - SUBROUTINE TO GET THE DESIRED LUT SEAT )@@G@@CTOR. @[@@@@. @F@@@@. ENTER WITH DGET$ FILE SECTOR # IN A0. READS UAU )@@G@@P THE SECTOR, IF @F@@@@. NECESSARY, AND SETS A0 TO THE ADDRESS OF THE SAV )@@G@@ECTOR IN CORE. @[@@@@. @ @@@@. DESTROYS X11, A0, A2, A3 @[@@@@AW )@@G@@. @F@@@@GETLUT LA A2,LUTRD+5 GET FIRST SECTOR IN COAX )@@G@@RE @D@@@@ TLE A0,A2 IS OURS THERE? @C@@@@AY )@@G@@ J GETLUT1 NO, GET IT@F@@@@ A,U AZ )@@G@@ A2,LUTL PERHAPS -- GET UPPER LIMIT @E@@@@ TLE BA )@@G@@ A0,A2 WELL, IS IT THERE? @D@@@@ J GETLBB )@@G@@UT2 YES, USE IT @E@@@@GETLUT1 SA A0,A2 BC )@@G@@ SAVE DESIRED SECTOR @D@@@@ DSL A2,36 SET BD )@@G@@FOR DIVIDE @F@@@@ DI,U A2,LUTL WANT TO READ FULBE )@@G@@L LUT RECORD@F@@@@ SA A0,A2 SAVE DESIRED SECBF )@@G@@TOR AGAIN @G@@@@ ANA A0,A3 CALCULATE 1ST SEBG )@@G@@CTOR OF LUT RECORD@E@@@@ SA A0,LUTRD+5 SET IN I/OBH )@@G@@ PACKET @D@@@@ LA,U A0,LUTRD GET I/O PACKET BI )@@G@@@E@@@@ ER IOW$ READ THE LUT RECORD @B@@@@BJ )@@G@@ TZ,S1 LUTRD+3 OK? @B@@@@ SLJ IOR BK )@@G@@ NO @^@@@@ ON SNAP@ @@@@ LA,U BL )@@G@@ A0,LUTSNP @ @@@@ ER SNAP$ @#@@@@ OFF BM )@@G@@@G@@@@ LA A0,A2 YES, RESTORE DESIRED SECTOR BN )@@G@@# @G@@@@GETLUT2 ANA A0,LUTRD+5 CALCULATE INDEX INTO LBO )@@G@@UT BUFFER @G@@@@ MSI,U A0,28 CONVERT SECTOR IBP )@@G@@NDEX TO WORD INDEX@G@@@@ LA,U A0,LUT,A0 POINT TO SBQ )@@G@@TART OF SECTOR IN CORE @D@@@@ J 0,X11 RETUBR )@@G@@RN TO CALLER@F@@@@/. FORLNK - INTERFACE FOR FORTRAN CALLS TO DIREC$ SUBRBS )@@G@@OUTINES @[@@@@. @F@@@@. ENTER WITH A2 = (ERROR-RETURN INDICATIBT )@@G@@ON,# OF ARGUMENTS). @F@@@@. WILL RETURN WITH A0 POINTING TO USER'SBU )@@G@@ PARAMETER LIST, AND @F@@@@. LOWER X11 = NORMAL RETURN ADDRESS. IFBV )@@G@@ H1 OF A2 IS POSITIVE @F@@@@. ON INPUT, THE ERROR RETURN ADDRESS WILBW )@@G@@L BE PUT IN UPPER X11. @[@@@@. @E@@@@FORLNK LXI,U X11,0 BX )@@G@@ CLEAR ERROR RETURN @F@@@@ TZ,S1 0,X11 BY )@@G@@ IS THIS AN ASCII FTN CALL @G@@@@. BZ )@@G@@ (OR 'T' SERIES FORTRAN-V WITH NO @D@@@@. CA )@@G@@ ARGUMENTS) ? @C@@@@ J FORLNK2 YES,CB )@@G@@ GO ON@G@@@@ LA,U A0,,X11 NO, LOAD PARAMETER LISCC )@@G@@T ADDRESS @G@@@@ AU,U A0,,A2 POINT A1 TO WORDCD )@@G@@ BEYOND LAST ARG @E@@@@ TNZ,S1 0,A1 'E' SERIESCE )@@G@@ FORTRAN-V? @G@@@@ AA,U A2,1 YES, ACCOUNT FORCF )@@G@@ WALKBACK WORD @D@@@@. IN NORMAL CG )@@G@@RETURN@F@@@@ AX,U X11,,A2 SET NORMAL RETURN ADDRCH )@@G@@ESS @[@@@@. @G@@@@. NOW HAVE NORMAL RETURN ADDRESS IN LOWER X11, ACI )@@G@@ND ADDRESS OF USER'S @^@@@@. PARAMETER LIST IN A0. @[@@@@. @F@@@@CJ )@@G@@. NOTE - FOR 'T' SERIES FORTRAN-V WITH NO ARGUMENTS, WE DON'T CARE@F@@@@CK )@@G@@. ABOUT THE PARAMETER LIST, BUT A2 HAD BETTER BE NEGATIVE! @F@@@@CL )@@G@@. ALSO, SINCE WE USE 'FORPKT' TO INDICATE A FORTRAN CALL @F@@@@CM )@@G@@. (VS. ASSEMBLY), WE MUST MAKE SURE THAT A0 IS NONZERO. @[@@@@CN )@@G@@. @G@@@@FORLNK2 TNZ,U 0,A0 'T' SERIES, NO ARGS, ACO )@@G@@ND A0=0? @H@@@@ LA,U A0,1 YES (OUCH!), FORCP )@@G@@PKT MUST BE NONZERO @F@@@@ SA A0,FORPKT SAVECQ )@@G@@ A0 AS PACKET ADDRESS @F@@@@ JN A2,0,A3 JUMPCR )@@G@@ IF NO ERROR RETURN @F@@@@ LXI,U X11,*ERRORRTN,A0 SET CS )@@G@@ERROR RETURN ADDRESS @D@@@@ J 0,A3 RETUCT )@@G@@RN TO CALLER@[@@@@. @A@@@@. RE-INITIALIZE FLAGS AND ADDRESSES @[@@@@CU )@@G@@. @F@@@@RESET SZ GOTONE CLEAR LEAD-ITEM-IN-CORCV )@@G@@E FLAG@E@@@@ SZ LFLAG CLEAR HMANY,GOTL1 CW )@@G@@@F@@@@ TZ LEDFLG JUST DOING ONE LEAD ITEM? CX )@@G@@@E@@@@ J RESET2 YES, SKIP SOME OF THIS@E@@@@CY )@@G@@ SZ NXLUTSEC INITIALIZE DIRLUT @F@@@@ CZ )@@G@@ LA A0,FIRSTR GET ADDR PF FIRST DIREC TRK @E@@@@ DA )@@G@@ LSSL A0,6 CONVERT TO SECTORS @G@@@@ SADB )@@G@@ A0,NXSEC STORE AS NEXT SECTOR FOR DIRSEC @G@@@@ DC )@@G@@ LA,U A0,BUF+24 INITIALIZE DAS ENTRY INDEX TO @F@@@@DD )@@G@@ SA A0,DX BT OF DAS FROM FIRST TRACK @E@@@@DE )@@G@@ LA,XU A0,-LUTL GET A NEGATIVE NUMBER @F@@@@ DF )@@G@@ SA A0,LUTRD+5 SET INITIAL CALL ON DIRLUT @G@@@@RESET2DG )@@G@@ SZ LEDFLG CLEAR JUST-THIS-LEAD-ITEM FLAG @D@@@@DH )@@G@@ J 0,A1 RETURN TO CALLER@[@@@@. @ @@@@DI )@@G@@. MSCON$ ERROR DURING DIRINT @[@@@@. @G@@@@MSCR L A2,ADJ )@@G@@0 SAVE A0 AS RETURNED BY MSCON$ @G@@@@ LSSL DK )@@G@@ A0,12 GET ERROR STATUS - IF IT'S 033, @G@@@@ SSDL )@@G@@L A0,30 EXEC HAS RESET INITIAL RESERVE @F@@@@ DM )@@G@@ TNE,U A0,033 IN MSPKT+3 TO NEEDED VALUE,@D@@@@ DN )@@G@@ J TRYAGN SO TRY AGAIN @F@@@@DGETER L,U DO )@@G@@ A1,MSCERR NO GOOD, SET ERROR TYPE @E@@@@ J DP )@@G@@ ERREXT2 AND DO ERROR RETURN @F@@@@TRYAGN L A0,TDQ )@@G@@RYCNT GET DGET$ ATTEMPT COUNT @D@@@@ A,U A0,1DR )@@G@@ INCREMENT COUNT @C@@@@ S A0,TRYCNT DS )@@G@@ STORE IT @D@@@@ TG,U A0,3 THIRD ATTEMPT? DT )@@G@@@C@@@@ J DGETER YES, QUIT @ @@@@ ONDU )@@G@@ DIRSIZ>0 @G@@@@ AN,U A0,1 ADJUST ATTDV )@@G@@EMPT COUNT FOR TEST @E@@@@ JNZ A0,$+3 IF FDW )@@G@@IRST TIME THRU, @G@@@@ L,U A0,LOGMSG TELL 'EM DDX )@@G@@IRSIZ GOTTA BE CHANGED @E@@@@ ER CSF$ SENDDY )@@G@@ @LOG MESSAGE @ @@@@ OFF DIRSIZ>0 @D@@@@ LMDZ )@@G@@J X11,DIREND$ FREE DGET$ FILE @H@@@@ J REASEA )@@G@@G TRY RE-ASSIGNING WITH PROPER RESERVE @[@@@@. @^@@@@EB )@@G@@. I/O ERROR ENCOUNTERED @[@@@@. @D@@@@IOR J 0 EC )@@G@@ ENTERED VIA SLJ @E@@@@ L,U A1,IOERR SET ED )@@G@@I/O ERROR TYPE @E@@@@ L A2,3,A0 A1 = STATUEE )@@G@@S, ETC. @G@@@@ J ERREXT2 NO, RETURN ERROREF )@@G@@ TYPE/CODE TO USER@[@@@@. @#@@@@. MAXDIR TOO SMALL@[@@@@. @D@@@@EG )@@G@@OVFL LA,U A1,SIZERR GET ERROR TYPE @E@@@@ LAEH )@@G@@ A2,MSPKT+3 AND REQUIRED SIZE @F@@@@ J EI )@@G@@ ERREXT2 RETURN ERROR STATUS TO USER @[@@@@. @]@@@@. MCT$EJ )@@G@@ ERROR@[@@@@. @F@@@@MCTR LA,U A1,MCTERR SET FOR MCEK )@@G@@T$ ERROR TYPE @D@@@@ LA,S1 A2,MCTPKT GET STATUSEL )@@G@@ IN A2@F@@@@ J ERREXT2 RETURN ERROR STATUS TOEM )@@G@@ USER @[@@@@. @ @@@@. BAD DIRINT MASK SPECIFIED @[@@@@. @D@@@@EN )@@G@@BADMASK L A2,A0 GET MASK IN A2 @F@@@@ L,EO )@@G@@U A1,MSKERR SET 'BAD MASK' ERROR CODE @G@@@@ J EP )@@G@@ ERREXT2 RETURN ERROR TYPE/CODE TO USER @[@@@@. EQ )@@G@@@E@@@@. EOF ENCOUNTERED DURING DIRSEC/DIRLED/DIRLUT OPERATION @[@@@@ER )@@G@@. @F@@@@EOF LMJ A1,RESET RE-INITIALIZE FLAGS, EES )@@G@@TC. @[@@@@. @H@@@@. NOW, IF SOMEONE GETS EOF RTN, THEN CALLS AGAINET )@@G@@, DIRSEC WILL START OVER AT @D@@@@. THE BEGINNING >WITHOUT< RE-INITIALEU )@@G@@IZING ADDTBL, ETC.@[@@@@. @F@@@@ L,U A1,EOFERR EV )@@G@@ SET 'DIRSEC EOF' ERROR TYPE @D@@@@ J ERREXT1 EW )@@G@@ RETURN TO USER @[@@@@. @^@@@@. CSF$ ERROR ENCOUNTERED@[@@@@. EX )@@G@@@E@@@@CSFR XOR A0,(1*/33) FILE ALREADY ASSIGNED?@E@@@@EY )@@G@@ JZ A1,RERUN YES, MAY BE RERUN @E@@@@ EZ )@@G@@ L A2,A0 NO, A2 GETS STATUS @F@@@@ L,FA )@@G@@U A1,CSFERR A0 GETS CSF$ ERROR CODE @F@@@@ J FB )@@G@@ ERREXT2 RETURN ERROR CODE TO CALLER @E@@@@RERUN TNFC )@@G@@Z NXSEC ALREADY INITIALIZED? @C@@@@ J FD )@@G@@ DGETOK NO, DO IT @F@@@@ LMJ A1,RESET FE )@@G@@ RE-INITIALIZE FLAGS, ETC. @E@@@@ LX X11,SAVX11 FF )@@G@@ LOAD RETURN ADDRESS @C@@@@ J 0,X11 RETUFG )@@G@@RN @[@@@@. @E@@@@. DIRSEC/DIRLNK/DIRLUW/DIRLED CALLED BEFORE DIRIFH )@@G@@NT COMPLETE @[@@@@. @F@@@@NOTINT J 0 ENTEFI )@@G@@RED BY SLJ (BECAUSE OF @G@@@@. MOREFJ )@@G@@ THAN ONE WAY TO GET HERE) @D@@@@ L,U A1,INITERR FK )@@G@@ GET ERROR TYPE @[@@@@. @A@@@@. RETURN ERROR TYPE/CODE TO CALLER FL )@@G@@@[@@@@. @E@@@@ERREXT1 LA,U A2,0 NO ERROR CODE INFM )@@G@@VOLVED@D@@@@ERREXT2 TNZ FORPKT FORTRAN CALL ? @E@@@@FN )@@G@@ J ERRASM NO. SKIP STATUS STORE @E@@@@ FO )@@G@@ LX X11,FORPKT LOAD PACKET ADDRESS @E@@@@ LXFP )@@G@@,U X11,*ECODE,X11 POINT TO ERROR CELLS @F@@@@ DS FQ )@@G@@ A1,,X11 STOTRE ERROR CODE FOR USER @F@@@@ERRASM LX,H1 FR )@@G@@ X11,SAVX11 LOAD ERROR RETURN POINT @ @@@@ ON FS )@@G@@ DEBUG @E@@@@ TNZ INTERNAL INTENRAL DIRLNK$FT )@@G@@ CALL?@E@@@@ SLJ TOFF$ NO, TURN OFF TRACE FU )@@G@@@F@@@@ SZ INTERNAL CLEAR INTERNAL-DIRLNK$ FLAG FV )@@G@@@#@@@@ OFF @E@@@@ J 0,X11 TAKEFW )@@G@@ ERROR RETURN @#@@@@ END ___ J ERREXT2 FX )@@G@@ RETURN ERROR STATUS TO USER @[@@@@. @ @@@@. BAD DIRINT MASK SPECIFFY )@@G@@IED @[@@@@. @D@@@@*[S@@@*SDFF*@E@@@@. @MFD - DIREC$ INITIALIZATIONFZ )@@G@@ AND ERROR INTERFACE ROUTINES @[@@@@. @^@@@@$(1) LIT . GA )@@G@@@^@@@@ AXR$ . @G@@@@ CONFIG . GB )@@G@@ DEFINE CONFIGURATION PARAMETERS @D@@@@ EQUFS . GC )@@G@@ DEFINE TAGS @[@@@@. @B@@@@. DIREC$ INITIALIZATION INTERFGD )@@G@@ACE ROUTINE @[@@@@. @D@@@@DIRMASK EQU 016 DIRIGE )@@G@@NT MASK @B@@@@DG$ EQU DGFILE='$$--DGET--$$' @[@@@@. GF )@@G@@@]@@@@DIR000* . @ @@@@ ON DG$=0 @[@@@@. @F@@@@GG )@@G@@. IF DGET$ FILENAME IS NOT $$--DGET--$$, BETTER INFORM DIREC$. @[@@@@GH )@@G@@. @E@@@@ DL A0,(DGFILE) GET DGET$ FILENAME GI )@@G@@@F@@@@ LMJ X11,DIRFIL$ LET DIREC$ KNOW WHAT IT IS GJ )@@G@@@ @@@@ OFF DG$=0 @[@@@@. @G@@@@. IF THE N-OPTION GK )@@G@@IS SET, GET A NEW COPY OF THE DIRECTORY. IF NOT, @E@@@@. USE THE COGL )@@G@@PY WE HAVE (IF WE DON'T HAVE ONE, GET ONE). @[@@@@. @C@@@@ GM )@@G@@ TNZ NPT N OPTION? @G@@@@ J DIR0GN )@@G@@10 NO, USE OLD COPY OF MFD, IF ANY @G@@@@ LMJ GO )@@G@@ X11,DIREND$ YES, RESET FOR NEW DGET$ COPY @[@@@@. @G@@@@GP )@@G@@. GET DGET$ FILE AND DO THE DGET$ (UNLESS YOU ALREADY HAVE A GOOD ONE) GQ )@@G@@@[@@@@. @D@@@@DIR010 LA,U A0,DIRMASK GET DIRINT MASK GR )@@G@@@F@@@@ LMJ X11,DIRINT$ DO DGET$ AND SET UP DIREC$ GS )@@G@@@D@@@@ J DIRECERR ERROR RETURN @ @@@@ GT )@@G@@ ON OLDMFD @[@@@@. @F@@@@. USE DIREC$'S TAG 'DIR$MFDF' GU )@@G@@AS A CONVENIENT WAY TO DETERMINE @F@@@@. WHETHER DIRECTORY ITEMS CONFGV )@@G@@ORM TO THE OLD MFD FORMAT OR TO @D@@@@. THE NEW (MFDF) FORMAT, AND SGW )@@G@@ET MFD$F ACCORDINGLY. @[@@@@. @G@@@@. NOTE - IF DIREC$ IS NOT BEINGX )@@G@@G USED, THE SINGLE-FILE ROUTINE MUST SET @^@@@@. MFD$F PROPERLY.GY )@@G@@@[@@@@. @G@@@@ TZ DIR$MFDF DID DIRINT GET NGZ )@@G@@EW FORMAT DGET$? @F@@@@ SR R15,MFD$F YES, SET NHA )@@G@@EW-FORMAT FLAG @ @@@@ OFF OLDMFD @[@@@@. @F@@@@HB )@@G@@. LOAD CHECK/PRINT SEGMENT, AND RETURN TO MFD100 IN MAIN SEGMENT. @[@@@@HC )@@G@@. @I@@@@ L$OAD CHEKPRTSG,MFD100,1 . LOAD CHK/PRT SEG AHD )@@G@@ND RETURN TO MFD100 @^@@@@/. DIREC$ ERROR ROUTINE @[@@@@. @D@@@@HE )@@G@@ERRMSG 'MFD ERROR TYPE & CODE &' DIREC$ ERROR MSG@G@@@@DIRECERR* LXHF )@@G@@I X11,X11 SAVE RETURN ADDR IN UPPER X11 @D@@@@ HG )@@G@@ TE,U A1,3 DIRSEC$ EOF? @B@@@@ J HH )@@G@@ ERR100 NO @ @@@@ ON SORTOK @D@@@@ HI )@@G@@ TZ SORT SORT DESIRED? @C@@@@ J HJ )@@G@@ DOSORT YES, DO IT@ @@@@ OFF SORTOK @D@@@@HK )@@G@@ J MFD600 NO, FINISH UP @E@@@@ERR100 DSHL )@@G@@ A1,ECODE SAVE ERROR TYPE & CODE@C@@@@ E$DIT HM )@@G@@ EDPACK OPEN EDIT @E@@@@ E$MSG ERRMSG HN )@@G@@ EDIT START OF MSG @D@@@@ E$DECV ECODE EDITHO )@@G@@ ERROR TYPE @E@@@@ TNZ ECODE+1 ERROR CODE PRESEHP )@@G@@NT? @D@@@@ J ERR200 NO, PRINT MSG @D@@@@HQ )@@G@@ E$MSGR . CONTINUE MSG @D@@@@ E$HR )@@G@@OCTF 12,ECODE+1 EDIT ERROR CODE @C@@@@ERR200 P$RINT POUTHS )@@G@@ PRINT MSG @C@@@@ L A0,X11 GET HT )@@G@@X11 @F@@@@ SSL A0,18 ISOLATE DIRECERR RTN SHU )@@G@@AVE @D@@@@ LXI,U X11,0 PREVENT LOOPS @ @@@@HV )@@G@@ AN,U A0,LNKRTN @F@@@@ SR R15,BMI1 HW )@@G@@ MARK AS BAD MAIN ITEM SEC 1 @F@@@@ JZ A0,CHK220 HX )@@G@@ TO 'CHK220' IF FROM 'LNKRTN'@C@@@@ J MFD700 HY )@@G@@ ELSE EXIT @#@@@@ END ___O, USE OLD COPY OF MFD, IF ANY HZ )@@G@@@G@@@@ LMJ X11,DIREND$ YES, RESET FOR NEW DGET$ COPIA )@@G@@*[S@@@*SDFF*@^@@@@$(1) AXR$ . @[@@@@. @G@@@@. DYNAMIC SEIB )@@G@@GMENT MCORE$ ROUTINE - ADAPTED FROM 'DLOAD$' RLIB$ ELEMENT @[@@@@. IC )@@G@@@F@@@@DSEG* LSSL A1,2 CONVERT SEGID TO SLT INDEX ID )@@G@@@E@@@@ A,U A1,SLT$ GET ADDR OF SLT ENTRY @F@@@@IE )@@G@@ L,S2 A0,,A1 TEST IF SEG DEFINED AS DSEG @ @@@@IF )@@G@@ TE,U A0,011 @ @@@@ TNE,U A0,010 @E@@@@IG )@@G@@ J $+2 IS A DSEG - CONTINUE @D@@@@ IH )@@G@@ ER EABT$ MUST BE A DSEG @E@@@@ L,H1 II )@@G@@ A0,1,A1 LOAD IBANK ADDR NEEDED@G@@@@ L,S2 A2,SIJ )@@G@@LT$ DETERMINE IF SLT FORMAT COMPLEX @ @@@@ TNE,U IK )@@G@@ A2,022 @E@@@@ J DLOAD0 IF COMPLEX, DLOAIL )@@G@@D0 @E@@@@ JZ A0,$+3 CHECK FOR VOID SEGMENTIM )@@G@@@G@@@@ A A0,(1*/34) SET PROGRAM-WIDE BIT FOR MCOIN )@@G@@RE @D@@@@ ER MCORE$ EXPAND IBANK @E@@@@IO )@@G@@ L,H1 A0,2,A1 LOAD DBANK ADDR NEEDED@E@@@@ IP )@@G@@ JZ A0,DLOAD2 CHECK FOR VOID SEG @D@@@@ A IQ )@@G@@ A0,(1*/34) SET PGM-WIDE BIT@D@@@@ ER MCORIR )@@G@@E$ EXPAND DBANK @C@@@@ J DLOAD2 IS )@@G@@ CONTINUE @F@@@@DLOAD0 L A2,A1 SAVE INITIAL SLTIT )@@G@@ ENTRY ADDR @E@@@@DLOAD1 JZ A0,$+4 CHECK FOR VOID SIU )@@G@@EG @E@@@@ LXI,T1 A0,2,A2 LOAD BDI FOR THIS BANKIV )@@G@@@D@@@@ A A0,(1*/34) SET PGM-WIDE BIT@D@@@@ IW )@@G@@ ER MCORE$ EXPAND BANK @F@@@@ L,H2 IX )@@G@@ A2,2,A2 LOAD LINK TO NEXT EXTENSION @F@@@@ JZ IY )@@G@@ A2,DLOAD2 JUMP IF ALL EXTENSIONS DONE @E@@@@ A,U IZ )@@G@@ A2,SLT$ COMPUTE EXTENSION ADDR@E@@@@ L,H1 A0,1JA )@@G@@,A2 LOAD BANK ADDR NEEDED @F@@@@ J DLOAD1 JB )@@G@@ CONTINUE EXPANSION LOOP @F@@@@DLOAD2 L,U A2,024 JC )@@G@@ MARK SEG AS OVERLAY SEG @ @@@@ S,S2 A2,,A1 JD )@@G@@@C@@@@ J 0,X11 RETURN @#@@@@ ENJE )@@G@@D ___B@@@@@@@@0586AA*[S@@@*SDFF*@^@@@@. @MFD HEADING ROUTINE @[@@@@JF )@@G@@. @^@@@@ AXR$ . @G@@@@ CONFIG . JG )@@G@@ DEFINE CONFIGUARTION PARAMETERS @D@@@@ EQUFS . JH )@@G@@ DEFINE TAGS @[@@@@. @D@@@@PRT FORM 12,6JI )@@G@@,18 FORMAT T1,S3,H2 @[@@@@. @D@@@@. VARIABLE-LENGTH TABLE JJ )@@G@@OF HEADING PRINT$ PACKETS @[@@@@. @]@@@@P3 . @ @@@@ JK )@@G@@ ON LEGEND @A@@@@ PRT 2,LG1,LEGND1 @A@@@@JL )@@G@@ PRT 1,LG2,LEGND2 @A@@@@ PRT 1,LG3,LEGNJM )@@G@@D3 @A@@@@ PRT 1,LG4,LEGND4 @A@@@@ PRT JN )@@G@@ 1,LG5,LEGND5 @A@@@@ PRT 1,LG6,LEGND6 @A@@@@ JO )@@G@@ PRT 1,LG7,LEGND7 @A@@@@ PRT 1,LG8,LEGND8 JP )@@G@@@A@@@@ PRT 1,LG9,LEGND9 @A@@@@ PRT 1,LGJQ )@@G@@10,LEGND10 @ @@@@P4 PRT -0,22,LIN5@ @@@@ OFF JR )@@G@@ LEGEND @ @@@@ ON LEGEND=0 @ @@@@P4 PRT JS )@@G@@ 2,22,LIN5 @ @@@@ OFF LEGEND=0 @ @@@@ PRT JT )@@G@@ 1,22,LIN6 @ @@@@ PRT 1,22,LIN7 @F@@@@P4L EQU JU )@@G@@ $-P4 NUMBER OF HEADING LINES @F@@@@P3L EQU JV )@@G@@ $-P3 SAME, INCLUDING LEGEND LINES@[@@@@. @ @@@@ JW )@@G@@ ON LEGEND @D@@@@LEGND1 'SPECIAL CHARACTER MEANINGS (COLJX )@@G@@S. 42,43)' @ @@@@LG1 EQU $-LEGND1 @A@@@@LEGND2 +' @ : JY )@@G@@'+(WRNCHR*/18) @A@@@@ 'WARNING ONLY DISABLED' @ @@@@LG2 JZ )@@G@@ EQU $-LEGND2 @A@@@@LEGND3 +' @ : '+(HDWCHR*/18) @ @@@@KA )@@G@@ 'HARDWARE DISABLED' @ @@@@LG3 EQU $-LEGND3 @A@@@@KB )@@G@@LEGND4 +' @ : '+(BBTCHR*/18) @ @@@@ 'BAD BACKUP TAPE' KC )@@G@@@ @@@@LG4 EQU $-LEGND4 @A@@@@LEGND5 +' @ : '+(BMICHR*/1KD )@@G@@8) @A@@@@ 'BAD MAIN ITEM SECTOR 1' @ @@@@LG5 EQU KE )@@G@@ $-LEGND5 @A@@@@LEGND6 +' @ : '+(LPSCHR*/18) @A@@@@ 'LKF )@@G@@APSE ENTRIES EXIST' @ @@@@LG6 EQU $-LEGND6 @A@@@@LEGND7KG )@@G@@ +' @ : '+(NOBCHR*/18) @ @@@@ 'NO BACKUP EXISTS' @ @@@@KH )@@G@@LG7 EQU $-LEGND7 @A@@@@LEGND8 +' @ : '+(BNCCHR*/18) KI )@@G@@@ @@@@ 'BACKUP NOT CURRENT'@ @@@@LG8 EQU $-LEGND8 KJ )@@G@@@A@@@@LEGND9 +' @ : '+(DELCHR*/18) @B@@@@ 'FILE MARKED FKK )@@G@@OR DELETION OR' @ @@@@LG9 EQU $-LEGND9 @D@@@@LEGND10 ' KL )@@G@@ ASSIGNED WITH ''U'' OR ''C'' OPTIONS'@ @@@@LG10 EQU $-LEKM )@@G@@GND10 @ @@@@ OFF LEGEND @C@@@@LIN5 'MAX KN )@@G@@ NO. LAST HIGHES'@C@@@@ 'T TOTAL KO )@@G@@ '@C@@@@ ' CATALOG '@A@@@@ KP )@@G@@ 'BACKUP TAPE CREATED '@C@@@@LIN6 'GRAN OPT EQUP ASG RKQ )@@G@@EF. TR'@C@@@@ 'ACK FILENAME '@C@@@@KR )@@G@@ ' ACCOUNT PROJECT DATE N'@A@@@@ 'UMBER PKS )@@G@@OS BLK DATE TIME '@]@@@@LIN7 . @A@@@@ DO 22 , '----KT )@@G@@--' @]@@@@/$(1) . @[@@@@. @F@@@@. ENTRY POINT FOR INITIAL HEADKU )@@G@@ING, WITH LEGEND IF CONFIGURED. @#@@@@. CALLED BY INIT2.@[@@@@. KV )@@G@@@F@@@@HDG100* LR,U R1,P3L-1 NUMBER OF HEADING LINES - 1 KW )@@G@@@E@@@@. INCLUDING LEGEND @E@@@@KX )@@G@@ LA,U A3,P3 FIRST LINE OF HEADING @E@@@@ KY )@@G@@ LMJ X11,HDG300 PRINT THE HEADING @G@@@@ L$KZ )@@G@@OAD INSEG,IN2200,1 RETURN TO INITIALIZATION ROUTINE @ @@@@ LA )@@G@@ ON BRKOK @[@@@@. @F@@@@. ENTRY POINT USED BY 'PRINT' LB )@@G@@ROUTINE TO REPRINT THE HEADING IF @E@@@@. 'BREAK' WAS SPECIFIED AND THLC )@@G@@E SORT KEY VALUE HAS CHANGED. @[@@@@. @F@@@@HDG200* LR,U R1,PLD )@@G@@4L-1 NUMBER OF HEADING LINES - 1 @E@@@@. LE )@@G@@ EXCLUDING LEGEND @E@@@@ LA,U A3,P4 LF )@@G@@ FIRST LINE OF HEADING @E@@@@ LMJ X11,HDG300 LG )@@G@@ PRINT THE HEADING @F@@@@ L$OAD CHEKPRTSG,PR0095,1 . LH )@@G@@RETURN TO PRINT ROUTINE @ @@@@ OFF BRKOK @[@@@@. LI )@@G@@@ @@@@. SUBROUTINE TO PRINT HEADING @[@@@@. @ @@@@. ENTER VIA: LMJ LJ )@@G@@ X11,HDG300 @C@@@@. WITH: R1 = NUMBER OF LINES TO PRINT (-1)@C@@@@LK )@@G@@. A3 = ADDRESS OF FIRST PRINT PACKET@[@@@@. @D@@@@HDG300LL )@@G@@ JNZ LONGLIST,HDG310 LONG LISTING? @D@@@@. LM )@@G@@ YES, HDG310 @C@@@@ LA,U A2,12 LN )@@G@@ NO, SHORT @F@@@@ LA,U A1,P4L-1 NUMBER OF LO )@@G@@HEADING LINES - 1 @F@@@@ SA,S3 A2,P4,A1 SHORTEN EALP )@@G@@CH LINE OF HEADING@E@@@@ JGD A1,$-1 FROM 22LQ )@@G@@ TO 12 WORDS@G@@@@HDG310 LXI,U A3,1 SET INCREMENT FOLR )@@G@@R PRINT LINE INDEX@D@@@@HDG320 LA A0,,*A3 GET PRINT LS )@@G@@PACKET@E@@@@ ER PRINT$ PRINT LINE OF HEADING LT )@@G@@@D@@@@ JGD R1,HDG320 PRINT ALL LINES @D@@@@ LU )@@G@@ J 0,X11 RETURN TO CALLER@#@@@@ END LV )@@G@@___ 'FILE MARKED FOR DELETION OR' @ @@@@LG9 EQU $-LELW )@@G@@GND9 @D@@@@LEGND10 ' *[S@@@*SDFF*@A@@@@. @MFD INITIALIZATION - PHASE LX )@@G@@2 @[@@@@. @^@@@@ AXR$ . @F@@@@ CONFIG LY )@@G@@ . DEFINE CONFIG PARAMETERS @D@@@@ EQUFS LZ )@@G@@ . DEFINE EQUF'S @[@@@@. @D@@@@PRT FORM MA )@@G@@ 12,6,18 PRINT$ FORM @[@@@@. @ @@@@ ON MB )@@G@@ PRVOPS @C@@@@ERR3 'ILLEGAL USE OF PRIVILEGED OPTION' @A@@@@MC )@@G@@ERR3P PRT 2,$-ERR3,ERR3 @E@@@@OPRIV + PRVOPS MD )@@G@@ PRIVILEGED OPTIONS @ @@@@ OFF PRVOPS @[@@@@ME )@@G@@. @D@@@@. REMOTE LOAD TABLE FOR C/Y OPTION SPEC MASK, ETC. @[@@@@MF )@@G@@. @E@@@@ACLD LA,S1 A0,0,X2 GENERAL LOAD TABLE MG )@@G@@@ @@@@ LA,S2 A0,0,X2 @ @@@@ LA,S3 A0,0,X2 MH )@@G@@@ @@@@ LA,S4 A0,0,X2 @ @@@@ LA,S5 A0,0,X2 MI )@@G@@@ @@@@ LA,S6 A0,0,X2 @ @@@@ LA,S1 A0,1,X2 MJ )@@G@@@ @@@@ LA,S2 A0,1,X2 @ @@@@ LA,S3 A0,1,X2 MK )@@G@@@ @@@@ LA,S4 A0,1,X2 @ @@@@ LA,S5 A0,1,X2 ML )@@G@@@ @@@@ LA,S6 A0,1,X2 @[@@@@. @C@@@@. REMOTE STORE TABMM )@@G@@LE FOR C/Y OPTION SPEC MASK @[@@@@. @F@@@@ACST SZ,S1 ACMAMN )@@G@@SK PARTIAL SPEC STORE TABLE @ @@@@ SZ,S2 ACMAMO )@@G@@SK @ @@@@ SZ,S3 ACMASK @ @@@@ SZ,S4 ACMAMP )@@G@@SK @ @@@@ SZ,S5 ACMASK @ @@@@ SZ,S6 ACMAMQ )@@G@@SK @ @@@@ SZ,S1 ACMASK+1 @ @@@@ SZ,S2 ACMAMR )@@G@@SK+1 @ @@@@ SZ,S3 ACMASK+1 @ @@@@ SZ,S4 ACMAMS )@@G@@SK+1 @ @@@@ SZ,S5 ACMASK+1 @ @@@@ SZ,S6 ACMAMT )@@G@@SK+1 @[@@@@. @ @@@@ ON OLDSTUFF @[@@@@. @C@@@@MU )@@G@@. LOAD AND STORE TABLES FOR DATE CONVERSION @[@@@@. @D@@@@DATELDMV )@@G@@ LA,T1 A0,INDT FIELDATA MONTH @B@@@@ LA,T2 MW )@@G@@ A0,INDT DAY @B@@@@ LA,T3 A0,INDT YEARMX )@@G@@@D@@@@DATEST SA,S5 A0,DATREF BINARY MONTH @B@@@@ MY )@@G@@ SA,S6 A0,DATREF DAY @B@@@@ SA,S4 A0,DATREF MZ )@@G@@ YEAR@[@@@@. @C@@@@INDT RES 1 INPUNA )@@G@@T DATE@ @@@@NOOP NOP 0,0,0 @E@@@@PPKT PRT 1,1,NB )@@G@@INDT ECHO PRINT PACKET @G@@@@TPKT PRT 1,2,DMSG NC )@@G@@ REQUEST DATE (OR PARAMTERS) PKT @A@@@@ + DATEND )@@G@@RR,INDT @E@@@@DMSG 'ENTER DATE: ' D-OPTION DATE RENE )@@G@@QUEST @F@@@@RMSG 'PARAMETER: ' R-OPTION PARAMETER REQNF )@@G@@UEST @ @@@@DATERM 'DATE SPEC ERROR' @ @@@@PRMERM 'PARAMETER ERRNG )@@G@@OR' @ @@@@ OFF OLDSTUFF @[@@@@. @G@@@@. MCT$ PACKENH )@@G@@T AND BUFFER (SEE COMMENTS AT TAG 'MCTEQ' IN ELEMENT 'MFD' @[@@@@. NI )@@G@@@D@@@@MCTPK + 3,MCT MCT$ PACKET @D@@@@ NJ )@@G@@ + 030,0 GET WORDS 0-027 @D@@@@MCT RES NK )@@G@@ 030 MCT$ BUFFER @C@@@@/$(1),IN2000* . PHASE 2 OF @MNL )@@G@@FD INITIALIZATION @[@@@@. @F@@@@. GET USER'S PCT. CHECK FOR ILLEGALNM )@@G@@ USE OF PRIVILEGED OPTIONS @[@@@@. @D@@@@ LA A0,(NN )@@G@@21,PCT) SET TO READ PCT @C@@@@ ER PCT$ NO )@@G@@ DO IT @D@@@@ LA,S2 A0,PCT+4 GET 'ABORT FLAG'NP )@@G@@@E@@@@ TEP,U A0,040 IS USER PRIVILEGED? @F@@@@NQ )@@G@@ SR R15,PRIVLGD YES, SET PRIVILEGED FLAG @G@@@@NR )@@G@@ LA A0,(10,PROJPK) DO FITEM$ OF DIAG$ TO PICK UP REALNS )@@G@@@H@@@@. PROJECT (PCT COULD HAVE @QUANT )@@G@@L VALUE) @E@@@@ ER FITEM$ PUTS PROJ IN PCTNU )@@G@@+2 @ @@@@ ON PRVOPS @G@@@@ LA A0,ONV )@@G@@PTWRD GET OPTION BITS SAVED BY INIT1 @F@@@@ AND NW )@@G@@ A0,OPRIV MASK OUT PRIVILEGED OPTIONS @F@@@@ JZ NX )@@G@@ A1,IN2010 IF NONE BEING USED, GO ON @E@@@@ TNZ NY )@@G@@ PRIVLGD IS USER PRIVILEGED? @G@@@@ J IN24NZ )@@G@@10 NO, ISSUE ERROR MESSAGE AND EXIT @ @@@@ OFF OA )@@G@@ PRVOPS @[@@@@. @A@@@@. CHECK POLISH TABLE FOR CORRECTNESS@[@@@@OB )@@G@@. @]@@@@IN2010 . @^@@@@ ON NSSP@ @@@@ ONOC )@@G@@ POLDBG @E@@@@ L$OAD PR2SG,SN900,1 JUMP TO SNOD )@@G@@AP$ ROUTINE @F@@@@IN2020* . SNAP$ ROUTINE REOE )@@G@@TURNS HERE @ @@@@ OFF POLDBG @E@@@@ TZ OF )@@G@@ AOX ANY POLISH SPECS? @E@@@@ LMJ X11,OG )@@G@@POLTRAN CHECK POLISH TABLE @^@@@@ OFF NSSP@ @@@@OH )@@G@@ ON OLDSTUFF @[@@@@. @B@@@@. MODIFY CODE IF OPTION OI )@@G@@REVERSAL IS SET @[@@@@. @C@@@@ LA A0,NOOP OJ )@@G@@ GET A NOP @E@@@@ TP TPT IS T-OPTION REVEOK )@@G@@RSED? @H@@@@ SA A0,REVT YES, IF NOT TAPE FILE,OL )@@G@@ IGNORE T-OPT @C@@@@ LA,H1 A0,REVO GET JZ OM )@@G@@@D@@@@ A,U A0,0400 CHANGE TO JNZ @E@@@@ ON )@@G@@ TP OPT O-OPTION REVERSED? @D@@@@ SAOO )@@G@@,H1 A0,REVO YES, PUT IT BACK@ @@@@ LA,U A0,0OP )@@G@@55 @E@@@@ TP DPT D-OPTION REVERSED? OQ )@@G@@@E@@@@ SA,S1 A0,REVD YES, CHANGE TLE TO TG @ @@@@OR )@@G@@ LA,U A0,044 @E@@@@ TP RPT OS )@@G@@ R-OPTION REVERSED? @E@@@@ SA,S1 A0,REVR YES,OT )@@G@@ CHANGE TOP TO TEP@E@@@@ TP VPT V-OPTION ROU )@@G@@EVERSED? @E@@@@ SA,S1 A0,REVV YES, CHANGE TOP OV )@@G@@TO TEP@E@@@@ TP GPT G-OPTION REVERSED? OW )@@G@@@E@@@@ SA,S1 A0,REVG YES, CHANGE TOP TO TEP@ @@@@OX )@@G@@ LA,U A0,060 @E@@@@ TP UPT OY )@@G@@ U-OPTION REVERSED? @E@@@@ SA,S1 A0,UNCHEK YES,OZ )@@G@@ CHANGE TN TO TP @[@@@@. @ @@@@. CHECK FOR D AND R OPTIONS @[@@@@PA )@@G@@. @D@@@@ TZ DPT D-OPTION SET? @D@@@@PB )@@G@@ J IN2100 YES, HANDLE IT @C@@@@ TZPC )@@G@@ RPT R-OPTION? @B@@@@ J IN2130 PD )@@G@@ YES @D@@@@ J IN2140 NO, SO GO ON PE )@@G@@@[@@@@. @F@@@@. D-OPTION ROUTINE - DO TREAD TO PICK UP DATE TO CHECKPF )@@G@@ AGAINST @[@@@@. @D@@@@IN2100 LA,U A0,TPKT GET PG )@@G@@TREAD PACKET@D@@@@ ER TREAD$ ASK FOR DATE PH )@@G@@@E@@@@ SA A0,A1 SAVE INPUT WORD COUNT @C@@@@PI )@@G@@ P$RINT PPKT ECHO REPLY@D@@@@ LA,U PJ )@@G@@ A0,,A1 INPUT WORD COUNT@C@@@@ TE,U A0,1 PK )@@G@@ 1 WORD? @E@@@@ J DATERR NO, DATE IPL )@@G@@NPUT ERROR @D@@@@ LA,U A2,2 FOR MM,DD,YY... PM )@@G@@@G@@@@IN2110 EX DATELD,A2 CONVERT FD DATE TO TDATE$ FOPN )@@G@@RMAT @E@@@@ ANA,U A0,06060 STRIP OFF FIELDATA PO )@@G@@@D@@@@ DSL A0,6 GET UNITS IN A1 @D@@@@ PP )@@G@@ SSL A1,30 SHIFT THEM DOWN @E@@@@ MSI,U PQ )@@G@@ A0,10 MULTIPLY TENS BY TEN @C@@@@ AA A0,APR )@@G@@1 ADD UNITS @C@@@@ TNE,U A2,2 YEARPS )@@G@@? @D@@@@ ANA,U A0,64 YES, MAKE MOD 64@D@@@@PT )@@G@@ EX DATEST,A2 STORE IN MAKD @E@@@@ JGPU )@@G@@D A2,IN2110 CONTINUE FOR DD,YY @E@@@@ TZ PV )@@G@@ RPT R-OPTION ALSO SET? @F@@@@ J IN21PW )@@G@@30 YES, GO TO R-OPTION ROUTINE @E@@@@ J IN21PX )@@G@@40 NO, PRINT HEADING @[@@@@. @D@@@@DATERR LA PY )@@G@@ A0,( PRT 1,3,DATERM) GET MSG @E@@@@ J MFD900 PZ )@@G@@ PRINT IT AND EXIT @[@@@@. @D@@@@PRMERR LA A0,(QA )@@G@@ PRT 1,3,PRMERM) GET MSG @E@@@@ J MFD900 QB )@@G@@ PRINT IT AND EXIT @[@@@@. @G@@@@. R-OPTION ROUTINE - REQUEST PQC )@@G@@ARAMETER FOR TYPE OF DISABLE TO CHECK @[@@@@. @F@@@@IN2130 LAQD )@@G@@,U A0,RMSG GET ADDR OF PARAMETERS MSG @E@@@@ SAQE )@@G@@,H2 A0,TPKT STORE IN TREAD$ PACKET@D@@@@ LA,U QF )@@G@@ A0,PRMERR GET EOF ADDR @E@@@@ SA,H1 A0,TPKT+1 QG )@@G@@ STORE IN TREAD$ PKT @ @@@@ LA,U A0,TPKT @E@@@@QH )@@G@@ ER TREAD$ REQUEST PARAMETERS @E@@@@ QI )@@G@@ SA A0,A1 SAVE INPUT WORD COUNT @C@@@@ P$QJ )@@G@@RINT PPKT ECHO REPLY@D@@@@ LA,U A0,,A1 QK )@@G@@ INPUT WORD COUNT@C@@@@ TE,U A0,1 ONE QL )@@G@@WORD? @C@@@@ J PRMERR NO, ERROR @G@@@@ QM )@@G@@ L,H1 A0,INDT PARAMETER FOR SEARCH (3 CHARS) @F@@@@QN )@@G@@ LR,U R1,RPRL REPEAT COUNT (TABLE LENGTH) @C@@@@QO )@@G@@ LA A1,(1,0) LOAD INDEX@F@@@@ SE,H1 QP )@@G@@ A0,RPR,*A1 TEST FOR PARAMETERS IN TABLE@E@@@@ J QQ )@@G@@ PRMERR ILLEGAL PARAMETER @E@@@@ SA A1,DQR )@@G@@ISDX STORE PARAMETER INDEX @ @@@@ OFF OLDSTUFF QS )@@G@@@[@@@@. @^@@@@. SET BATCH/DEMAND MODE @[@@@@. @F@@@@IN2140 SRQT )@@G@@ R15,LONGLIST ASSUME LONG LISTING MODE @D@@@@ TZQU )@@G@@ SPT IS S-OPTION SET?@G@@@@ J IN21QV )@@G@@50 YES, REVERSE MEANING OF H-OPTION @D@@@@ TNE,U QW )@@G@@ A14,4 NOT DEMAND? @D@@@@ TZ LPT QX )@@G@@ OR L-OPTION SET?@F@@@@ J IN2160 YES,QY )@@G@@ LEAVE H-OPTION AS IS @G@@@@ LA A2,OPTWRD WE'RQZ )@@G@@E DEMAND: GET OPTION WORD @E@@@@ TEP A2,(1*/34) RA )@@G@@ ARE WE BREAKPOINTED? @F@@@@ J IN2160 YES,RB )@@G@@ ASSUME 'BATCH' MODE IF @F@@@@. NEITRC )@@G@@HER L NOR S-OPT IS GIVEN@[@@@@. @G@@@@. DEMAND MODE - SET FOR SHORT RD )@@G@@LISTING, AND REVERSE MEANING OF H-OPTION @[@@@@. @E@@@@IN2150 SZRE )@@G@@ LONGLIST SET SHORT-LISTING MODE@F@@@@ LA RF )@@G@@ A0,HPT GET USER'S H-OPTION SETTING @C@@@@ XOR,U RG )@@G@@ A0,1 REVERSE IT@F@@@@ SA A1,HPT RH )@@G@@ STORE NEW H-OPTION SETTING @F@@@@IN2160 TNZ HPT RI )@@G@@ H-OPTION (NO HEADING) SET? @E@@@@ TZ JPT RJ )@@G@@ NO, TEST FOR J-OPTION @G@@@@ J IN2200 H ORRK )@@G@@ J OPTION, SO DON'T PRINT @H@@@@ ON WOPTOK RL )@@G@@ ************************************** @G@@@@ JNZ LONGRM )@@G@@LIST,IN2170 LONG LISTING? YES, PRINT HEADING @E@@@@ TZ RN )@@G@@ WPT DEMAND WITH W-OPTION? @E@@@@ TZ SPT RO )@@G@@ BUT S-OPTION SET? @E@@@@ J IN2170 RP )@@G@@ YES, PRINT HEADING @D@@@@ J IN2200 RQ )@@G@@ NO, SKIP HEADING@H@@@@ OFF WOPTOK **********RR )@@G@@**************************** @[@@@@. @#@@@@. PRINT HEADING @[@@@@RS )@@G@@. @G@@@@IN2170 L$OAD HDGSEG,HDG100,1 LOAD HDGSEG AND PRINT RT )@@G@@THE HEADING @E@@@@. (RETURN TO IN220RU )@@G@@0) @]@@@@/IN2200* . @ @@@@ ON OLDSTUFF @[@@@@. RV )@@G@@@G@@@@. SELECT SECONDARY ATTRIBUTE CHECK ROUTINE BASED ON OPTIONS AND SPRW )@@G@@EC2 @F@@@@. SIZE, IF GIVEN. STORE ROUTINE ADDRESS IN 'SZOPT', AND SIZRX )@@G@@E, IF @^@@@@. GIVEN, IN 'SZOPT+1'. @[@@@@. @F@@@@ TNZ RY )@@G@@ SIZFLG SPEC2 (TRACK SIZE) GIVEN? @B@@@@ J RZ )@@G@@ IN2220 NO @D@@@@ LA,U A0,2 SET SA )@@G@@FOR SPEC 2 @D@@@@ SA A0,SPECN STORE FOR SPECERSB )@@G@@@F@@@@ L A1,SIZFLG GET NO. OF CHARS IN SPEC2 SC )@@G@@@D@@@@ AN,U A1,1 LESS 1 FOR JGD @F@@@@ SD )@@G@@ L X1,(1,0) INITIALIZE EX REMOTE INDEX @[@@@@. SE )@@G@@@G@@@@. NORMALLY, ALL FILES WHICH ARE AT LEAST TRACKS IN SIZE WISF )@@G@@LL @H@@@@. BE LISTED, BUT IF FIRST CHAR OF SPEC2 IS '-', THEN TEST SHSG )@@G@@OULD BE REVERSED. @[@@@@. @F@@@@ LA,S1 A0,SIZE SH )@@G@@ GET 1ST CHAR OF SAVED SPEC2 @F@@@@ TE,U A0,'-' SI )@@G@@ WANT TO DO SIZE <= SPEC2? @G@@@@ J IN2210 SJ )@@G@@ NO, HANDLE NORMAL SIZE > SPEC2 @G@@@@ TNZ A1 SK )@@G@@ IS THE '-' THE ONLY CHARACTER? @D@@@@ LMJ X10,SL )@@G@@SPECER YES, SPEC ERROR @G@@@@ AN,U A1,1,*X1 SM )@@G@@ -1 TO IGNORE DASH, AND INC X1 @E@@@@ LA,S1 A2,SZLOD SN )@@G@@ GET SZLOD OPCODE (TG) @F@@@@ LA,S1 A3,SZBAK SO )@@G@@ GET SZBAK OP CODE (TLE) @E@@@@ SA,S1 A3,SZLOD SP )@@G@@ AND SWITCH THEM AROUND@ @@@@ SA,S1 A2,SZBAK @[@@@@. SQ )@@G@@@D@@@@. CONVERT SIZE SPEC FROM DECIMAL FIELDATA TO BINARY @[@@@@. SR )@@G@@@F@@@@IN2210 L,U X2,SIZE X2 = ADDR OF SAVED SPEC2 SS )@@G@@@E@@@@ LA,U A3,0 INITIALIZE ACCUMULATOR@C@@@@ST )@@G@@IN2215 EX ACLD,*X1 GET A CHAR@E@@@@ AN,U SU )@@G@@ A0,060 STRIP OFF FIELDATA @D@@@@ TP A0 SV )@@G@@ IS IT A NUMBER? @D@@@@ LMJ X10,SPECER SW )@@G@@ NO, SPEC ERROR @D@@@@ MSI,U A3,10 CONVERT DESX )@@G@@CIMAL @D@@@@ A A3,A0 VALUE TO BINARY @ @@@@SY )@@G@@ JGD A1,IN2215 @F@@@@ LA,U A2,SZCHK SZ )@@G@@ SET FOR SIZE CHECK ROUTINE @C@@@@ J IN2230 TA )@@G@@ GO ON @[@@@@. @F@@@@. CHECK FOR U-OPTION. IF SET, SECONDARY CTB )@@G@@HECK ROUTINE = UNOPT, @^@@@@. IF NOT, = NSZOPT. @[@@@@. @F@@@@TC )@@G@@IN2220 LA,U A2,NSZOPT ASSUME NO SIZE, ETC., CHECK @D@@@@TD )@@G@@ TZ UPT U-OPTION SET? @G@@@@ LATE )@@G@@,U A2,UNOPT YES, LOAD ADDR OF UNLOADED TEST @[@@@@. TF )@@G@@@F@@@@. STORE SECONDARY ROUTINE ADDR (AND CONVERTED SIZE, IF SPEC'D) TG )@@G@@@[@@@@. @G@@@@IN2230 DS A2,SZOPT STORE ADDR OF DETH )@@G@@SIRED ROUTINE @F@@@@. (AND SIZE,TI )@@G@@ IF APPLICABLE) @ @@@@ OFF OLDSTUFF @D@@@@ TZTJ )@@G@@ YPT IS Y-OPTION SET?@E@@@@ SR R15,TK )@@G@@CPT YES, ASSUME C-OPTION @[@@@@. @D@@@@. IF SINGLE-FILE MTL )@@G@@ODE IS SET, HANDLE IT. OTHERWISE, @H@@@@. SEARCH OPTION TABLE FOR FIRSTM )@@G@@T PRIMARY ATTRIBUTE OPTION WHICH IS SET, AND @H@@@@. JUMP TO THE APPRTN )@@G@@OPRIATE ROUTINE. IF OPTION IS NOT SET, OR IF IT IS NOT @C@@@@. A PRTO )@@G@@IMARY ATTRIBUTE OPTION, CONTINUE SEARCH. @F@@@@. IF NO PRIMARY ATTRIBUTTP )@@G@@E OPTIONS ARE SET, SOMETHING IS WRONG. @[@@@@. @E@@@@ TZTQ )@@G@@ SFMODE SINGLE-FILE MODE? @G@@@@ J TR )@@G@@ IN2380 YES, JUMP TO SINGLE-FILE THINGEE @G@@@@ LXTS )@@G@@ X11,(1,0) INITIALIZE OPTION TABLE INDEX @E@@@@ TT )@@G@@ LR,U R1,26 NUMBER OF OPTIONS @E@@@@ LATU )@@G@@,U A0,1 CHECK FOR SET OPTION @E@@@@ SA TV )@@G@@ A0,SPECN SET SPEC=1 FOR SPECER @B@@@@GOON* SE,T1 A0,OTW )@@G@@PTIONS,*X11 SET?@E@@@@ ER EABT$ SHOULD NOTTX )@@G@@ GET HERE! @F@@@@ J *OPTIONS-1,X11 YES, GO TO PROPETY )@@G@@R ROUTINE @[@@@@. @]@@@@. QUALIFIERS@[@@@@. @F@@@@QOPT* LXTZ )@@G@@,U X7,QUAL SET TO CHECK QUAL OF FILE @E@@@@ LAUA )@@G@@,U A3,021 AGAINST QUAL IN PCT @G@@@@ J UB )@@G@@ IN2270 CAN CHECK PROJ AND QUAL IN LI0 @[@@@@. @]@@@@UC )@@G@@. PROJECTS @[@@@@. @F@@@@POPT* LX,U X7,PROJ SET UD )@@G@@TO CHECK PROJ OF FILE @E@@@@ LA,U A3,2 AGAIUE )@@G@@NST PROJ IN PCT @E@@@@IN2270 SR R15,LIOPT SET LI-CHEUF )@@G@@CK FLAG @C@@@@ J IN2290 CONTINUE @[@@@@UG )@@G@@. @]@@@@. ACCOUNTS @[@@@@. @F@@@@AOPT* LX,U X7,ACCOUNTUH )@@G@@ SET TO CHECK ACCT OF FILE @E@@@@ LA,U A3,023 UI )@@G@@ AGAINST ACCT IN PCT @[@@@@. @^@@@@. QUALS, PROJS, ACCTS UJ )@@G@@@[@@@@. @F@@@@IN2290 DL A9,PCT,A3 GET THINGO FROM UK )@@G@@PCT IN CASE @E@@@@. NOTHING IN SPEC UL )@@G@@FIELD.@F@@@@ TZ,S1 MFD$+1 ANYTHING IN SPEC FIELDUM )@@G@@? @D@@@@ DL A9,MFD$+9 YES, GET IT @E@@@@UN )@@G@@ DS A9,MFD$+9 STORE FOR LATER USE @E@@@@ UO )@@G@@ LX,U X2,MFD$+9 SPEC IS IN ELT FIEL @G@@@@ TZUP )@@G@@ CPT C-OPTION SET FOR PARTIAL SPEC? @E@@@@ UQ )@@G@@ LMJ X11,PARTIAL YES, FORM SPEC MASK @I@@@@ ONUR )@@G@@ MBPTUA . ********************************************** US )@@G@@@E@@@@ TNZ QPT LET Q-OPTION THROUGH @D@@@@UT )@@G@@ TZ CPT C-OPTION, TOO @I@@@@ OFUU )@@G@@F MBPTUA . ********************************************** UV )@@G@@@I@@@@ ON MBPTUA=0 . ********************************UW )@@G@@************** @D@@@@ TNZ PPT P-OPTION SUX )@@G@@PEC'D?@I@@@@ OFF MBPTUA=0 . **************************UY )@@G@@******************** @F@@@@ J IN2310 DON'UZ )@@G@@T CHECK FOR PRIV MODE @E@@@@ TNZ PRIVLGD IS UVA )@@G@@SER PRIVLEGED? @F@@@@ J IN2320 NO - CHECKVB )@@G@@ ACCT OR PROJ @E@@@@IN2310 LX,U X9,QQOPT SET TO RETVC )@@G@@URN TO QQOPT@F@@@@ J IN2430 ALL SET, GO KICKVD )@@G@@ OFF DIREC$ @[@@@@. @ @@@@. CHECK THIS GUY'S CREDENTIALS@[@@@@. VE )@@G@@@F@@@@IN2320 DTE A9,PCT,A3 CHECK SPEC, IF ANY, VS. PCT VF )@@G@@@F@@@@ J IN2410 NO MATCH, THROW HIM OFF VG )@@G@@@C@@@@ J IN2310 OK, GO ON @[@@@@. @D@@@@VH )@@G@@. F AND I OPTIONS - ALL F-CYCLES OF A PARTICULAR FILE @[@@@@. @E@@@@VI )@@G@@FOPT* SR R15,LIOPT SET LI-CHECK FLAG @F@@@@ VJ )@@G@@ LX,U X2,MFD$+4 ASSUME SPEC IS IN FN FIELD @D@@@@ VK )@@G@@ TZ,S2 MFD$ REALLY THERE? @C@@@@ J VL )@@G@@ IN2350 YES, GO ON@E@@@@ TNZ,S1 MFD$+1 VM )@@G@@ NO, IS ELEMENT THERE? @D@@@@ LMJ X10,SPECER NO, VN )@@G@@SPEC ERROR @G@@@@ LX,U X2,MFD$+9 YES, SET FOR SPEVO )@@G@@C IN ELT FIELD @C@@@@IN2350 DL A9,,X2 GET SPEC VP )@@G@@@D@@@@ TZ CPT C/Y-OPTION SET? @E@@@@ VQ )@@G@@ LMJ X11,PARTIAL YES, FORM SPEC MASK @C@@@@ TZVR )@@G@@ IPT I-OPTION? @D@@@@ J IN2360 VS )@@G@@ YES, SKIP QUAL @E@@@@ DL A0,PCT+2 GET VT )@@G@@PROJ FROM PCT @D@@@@ TZ,S1 MFD$ ANY QUAL GVU )@@G@@IVEN? @G@@@@ DL A0,MFD$+2 YES, GET QUAL FROM SPEVV )@@G@@C FIELD @D@@@@ TZ,S6 MFD$ IMPLIED QUAL? VW )@@G@@@E@@@@ DL A0,PCT+021 YES, GET QUAL FROM PCT@F@@@@VX )@@G@@ DS A0,PCT STORE QUAL FOR CHECK ROUTINE@[@@@@VY )@@G@@. @G@@@@. IF THE QUALIFIER AND FILENAME TO BE LISTED ARE DEFINED UNAVZ )@@G@@MBIGUOUSLY, @F@@@@. WE CAN SPEED THINGS UP BY USING THE LOOKUP TABLE TO WA )@@G@@POINT TO THE@]@@@@. LEAD ITEM.@[@@@@. @E@@@@IN2360 TNZ CPT WB )@@G@@ IS C OR Y OPTION SET? @E@@@@ TZ IPT WC )@@G@@ OR IS I OPTION SET? @G@@@@ J IN2365 WD )@@G@@ YES, MUST SEARCH THE LONG WAY @F@@@@ LX,U X9,FFOPT WE )@@G@@ NO, USE THE LOOKUP TABLE @E@@@@ LA,XU A0,-1 WF )@@G@@ SET FLAG FOR CHK000 @G@@@@ SA A0,USELUT WG )@@G@@ INDICATING DIRLED$ VS. DIRSEC$ @E@@@@ J IN2430 WH )@@G@@ INITIALIZE DIREC$ @G@@@@IN2365 LX,U X7,FILE WI )@@G@@ POINT TO FILENAME IN L.I. BUF @F@@@@ LX,U X9,IIOPT WJ )@@G@@ SET FOR FC, FY, OR I OPTIONS@F@@@@ J IN2430 WK )@@G@@ ALL SET, GO KICK OFF DIREC$ @[@@@@. @B@@@@. Z-OPTION -- LISTWL )@@G@@ ALL FILES IF PRIVILEGED@[@@@@. @E@@@@ZOPT* LX,U X9,GBU WM )@@G@@ SET UP FOR GO RIGHT ON@G@@@@ J IN2430 WN )@@G@@ NO, DON'T DO ANY ADDITIONAL CHECKS@E@@@@. WO )@@G@@ LIKE ON PROJ OR ACCT @[@@@@. @E@@@@. SINGLE-FILE MODE - NO WP )@@G@@PRIMARY ATTRIBUTE CHECKS NECESSARY @[@@@@. @D@@@@IN2380 LX,U WQ )@@G@@ X9,GBU GO RIGHT ON @[@@@@. @D@@@@. SEE COMMENTS ABOWR )@@G@@VE TAG 'MCTEQ' IN ELEMENT 'MFD' @[@@@@. @D@@@@ L,U WS )@@G@@ A0,MCTPK GET MCT$ PKT @F@@@@ ER MCT$ WT )@@G@@ GET A PORTION OF THE MCT @D@@@@ L,T2 A0,MCT+5 WU )@@G@@ GET MCT VERSION @E@@@@ TLE,U A0,4 LEVEWV )@@G@@L 33R1 OR HIGHER? @E@@@@ J IN2385 NO, SKIP TWW )@@G@@HIS STUFF @H@@@@ L A0,MCT+027 YES, GET SPEC. MWX )@@G@@NEM. TBL LENGTH,OFFSET @D@@@@ S A0,MCTPK+1 SET WY )@@G@@IN MCT$ PKT @H@@@@ L,U A0,MCTEQ GET ADDR OF BUFFWZ )@@G@@ER IN ELEMENT 'MFD' @D@@@@ S,H2 A0,MCTPK STORXA )@@G@@E IN PKT @F@@@@ L,U A0,MCTPK GET MCT PACKET AXB )@@G@@DDR AGAIN @F@@@@ ER MCT$ RETRIEVE SPECIFIXC )@@G@@C MNEMONICS @H@@@@IN2385 L$OAD QFSEG,QF000,1 LOAD AND JUMP TOXD )@@G@@ SINGLE-FILE SEGMENT @ @@@@. X-OPTION LIST EXEC FILES @[@@@@. XE )@@G@@@E@@@@XOPT* LX,U X9,XXOPT EXEC FILE ROUTINE @D@@@@XF )@@G@@ J IN2430 START UP DIREC$ @ @@@@ ONXG )@@G@@ PRVOPS @[@@@@. @#@@@@. NON-PRIVILEGED @[@@@@. @E@@@@XH )@@G@@IN2410 LA A0,ERR3P GET PRINT$ PACKET @E@@@@ XI )@@G@@ J MFD900 PRINT IT AND EXIT @ @@@@ OFXJ )@@G@@F PRVOPS @[@@@@. @A@@@@. K-OPTION FOR REMOVABLE DISC PACKS XK )@@G@@@[@@@@. @E@@@@KOPT* TNZ,S1 MFD$+1 ELEMENT MUST BE XL )@@G@@GIVEN @E@@@@ LMJ X10,SPECER IF NOT, SPEC ERROR XM )@@G@@@E@@@@ LA A9,MFD$+9 PICK UP PACK I.D. @C@@@@XN )@@G@@ LA,U A10,0 CLEAR A10 @D@@@@ TZ,S2 XO )@@G@@ MFD$+1 VERSION GIVEN? @E@@@@ LA A10,MFD$+1XP )@@G@@1 YES, GET 2ND PACKID @E@@@@ LX,U X9,KKOPT XQ )@@G@@ SET UP PACK I.D. LABEL@[@@@@. @H@@@@. DIREC$ IS NEEDED, SO WE MUSTXR )@@G@@ LOAD SEGMENT DIRSEG AND RELINQUISH CONTROL TO @G@@@@. THE DIREC$ INITIXS )@@G@@ALIZATION INTERFACE ROUTINE, WHICH RETURNS TO MFD100. @[@@@@. @G@@@@XT )@@G@@IN2430 L,U A1,DIRSEG PREPARE FOR LOADING DIREC$ SEG XU )@@G@@@E@@@@ LMJ X11,DSEG DO NECESSARY MCORE @G@@@@XV )@@G@@ L$OAD DIRSEG,DIR000,1 JUMP TO DIREC$ INTERFACE ROUTINE XW )@@G@@@F@@@@/. PARTIAL SPEC ROUTINE - $'S IN SPEC FIELD ARE TRANSPARENT XX )@@G@@@[@@@@. @D@@@@PARTIAL LA,U A1,11 FOR 12 CHARS XY )@@G@@@E@@@@ EX ACLD,A1 GET 1 CHAR OF SPEC @C@@@@XZ )@@G@@ TNE,U A0,'$' IS IT A $?@F@@@@ EX YA )@@G@@ ACST,A1 YES, STORE ZERO IN MASK @E@@@@ JGD YB )@@G@@ A1,PARTIAL+1 CONTINUE FOR 12 CHARS @F@@@@ AND A10,YC )@@G@@ACMASK+1 MASK OUT UNWANTED CHARS @ @@@@ AND A9,AYD )@@G@@CMASK @F@@@@ DJZ A10,IN2510 DISALLOW SPEC OF ALL $YE )@@G@@'S @F@@@@ DS A10,MFD$+9 STORE IN SPEC FIELD AGYF )@@G@@AIN @C@@@@ J 0,X11 RETURN @[@@@@. YG )@@G@@@D@@@@IN2510 LA,U A0,1 SET FOR SPEC 1 @D@@@@ YH )@@G@@ SA A0,SPECN SAVE FOR SPECER @D@@@@ LMJ YI )@@G@@ X10,SPECER EDIT SPEC ERROR @#@@@@ END ___ S YJ )@@G@@ A0,MCTPK+1 SET IN MCT$ PKT @H@@@@ L,U A0,MCTEQ YK )@@G@@ GET ADDR OF BUFFER IN ELEMENT 'MFD' @D@@@@ S,H2 YL )@@G@@*[S@@@*SDFF*@^@@@@ AXR$ . @G@@@@ CONFIG . YM )@@G@@ DEFINE CONFIGURATION PARAMTERES @F@@@@FLAP EQU YN )@@G@@ 0 NONZERO TO TURN ON FLAP @D@@@@PRT FORM YO )@@G@@ 12,6,18 FORMAT T1,S3,H2 @D@@@@POUT* PRT 1,22,LINOUYP )@@G@@T PRINT PACKET @D@@@@POUT2* PRT 2,22,LINOUT PRINYQ )@@G@@T PACKET @[@@@@. @E@@@@LINOUT* RES 23 EDITYR )@@G@@$ IMAGE BUFFER @F@@@@PROJPK* 'DIAG$ ' FITEM$ PKTYS )@@G@@ FOR REAL PROJ @D@@@@PCT* RES 21 PCT$ BUFFEYT )@@G@@R @E@@@@MFD$* RES 14 ELT$ SPEC1 BUFFER YU )@@G@@@[@@@@. @D@@@@. ITEMS BETWEEN RECSTART AND RECLEN WILL BE SORTED YV )@@G@@@[@@@@. @]@@@@RECSTART* . @D@@@@LIBUF0* RES 28 YW )@@G@@ LEAD ITEM BUFFER@F@@@@MIBUF0* RES 28 BUFFER FORYX )@@G@@ M.I. SECTOR 0 @F@@@@. MI0 MUST BYY )@@G@@E LI0+28, DUE TO @E@@@@. CODING IN YZ )@@G@@DIRSEC. @D@@@@MIBUF1* . MI SEC 1 BUFFER ZA )@@G@@@ @@@@ ON OLDSTUFF @E@@@@SNOITPO* RES 2 ZB )@@G@@ REVERSE OPTIONS SPEC'D@ @@@@ OFF OLDSTUFF @H@@@@ZC )@@G@@OPTWRD* RES 1 INIT1-INIT2 TMP STORAGE FOR OPTIONZD )@@G@@S @F@@@@ RES 28-($-MIBUF1) REST OF MI SEC 1 BUFFEZE )@@G@@R @E@@@@ RES 1 SAVEAREA - ALSO SORTEDZF )@@G@@@E@@@@ + 0 FLAGS SORTED WITH FILE@F@@@@ZG )@@G@@RECLEN* EQU $-RECSTART SORT RECORD LENGTH IN WORDS @D@@@@ZH )@@G@@RECCHAR* EQU RECLEN*6 AND CHARACTERS@ @@@@ ONZI )@@G@@ SNAPOK @E@@@@LI1* . L.I. SEC 1ZJ )@@G@@ BUFFER @ @@@@ OFF SNAPOK @E@@@@MI2* RES ZK )@@G@@ 28 M.I. SEC 2-N BUFFER @^@@@@ ON NSSPZL )@@G@@@[@@@@. @H@@@@. SUPER SPEC REMOTE TEST INSTRUCTION TABLE - CREATED BZM )@@G@@Y INIT1, AND EXECUTED @^@@@@. BY 'CHECK' ROUTINE. @[@@@@. @E@@@@ZN )@@G@@. FOR SINGLE-WORD SPECS FOR DOUBLE-WORD SPECS@E@@@@. ZO )@@G@@--------------------- ---------------------@D@@@@. LA<,J>ZP )@@G@@ A0,,X8 DL A0,,X8@D@@@@. LSSL A0, AND SSZQ )@@G@@L A0, DTE A0,SSPVAL@^@@@@. AND A0,SSMASK @^@@@@. ZR )@@G@@LA A0,SSPVAL @^@@@@. A0,A1 @[@@@@. @E@@@@SSIZE*ZS )@@G@@ EQU 6 SPEC TEST ENTRY LENGTH@E@@@@SSTAB* REZT )@@G@@S SSIZE*NSSP RESERVE TABLE SPACE @[@@@@. @G@@@@SSLOADZU )@@G@@* EQU SSTAB+0 'DL' OR 'LA' OF DIRECTORY INFO @G@@@@ZV )@@G@@SSHIFT* EQU SSTAB+1 SHIFT OR NOP (SKIPPED FOR 'DL') ZW )@@G@@@G@@@@SSTEST* EQU SSTAB+2 'TE' OR 'DTE' WITH SPEC VALUZX )@@G@@E @H@@@@SSPVAL* EQU SSTAB+3 SPEC VALUE CONVERTED TZY )@@G@@O PROPER FORM @G@@@@SSMASK* EQU SSTAB+4 MASK, OR SZZ )@@G@@ECOND WORD OF SPEC VALUE@F@@@@SSLINK* EQU SSTAB+5 LINKAA )@@G@@ TO POLISH TABLE ENTRY @E@@@@. (FORAB )@@G@@ RESULT OF TEST) @[@@@@. @G@@@@. POLISH: POLISH NOTATION TABLE. INAC )@@G@@IT1 DECODES THE AND'S, OR'S, AND @G@@@@. XOR'S INTO NUMBERS, AD )@@G@@AND PLACES THESE NUMBERS IN THE POLISH @G@@@@. TABLE IN THE OAE )@@G@@RDER IN WHICH THEY ARE ENCOUNTERED. A BLANK @F@@@@. ENTRY ISAF )@@G@@ LEFT FOR EACH ACTUAL TEST SPEC WHICH IS FOUND, @G@@@@. AND WHENAG )@@G@@ THE TEST IS PERFORMED, THE RESULT IS PLACED IN THE @C@@@@. PRAH )@@G@@OPER LOCATION IN THE POLISH TABLE. @[@@@@. @E@@@@POLISH* RES AI )@@G@@ NSSP POLISH NOTATION TABLE @[@@@@. @G@@@@. TRANS: THIAJ )@@G@@S TABLE CONTAINS THE INTERMEDIATE RESULTS OBTAINED WHILE @B@@@@. AK )@@G@@ EVALUATING THE POLISH EXPRESSION.@[@@@@. @E@@@@TRANS RES AL )@@G@@ NSSP TRANSLATION TABLE @[@@@@. @E@@@@POLERM 'PAM )@@G@@OLISH NOTATION ERROR' POLTRAN ERROR MESSAGE @^@@@@ OFF AN )@@G@@ NSSP@[@@@@. @F@@@@USELUT* + 0 DIRLED$ VSAO )@@G@@. DIRSEC$ FLAG @E@@@@ECODE* + 0 DIREC$ ERRAP )@@G@@OR CODES @^@@@@ + 0 @ @@@@ ON OLDSAQ )@@G@@TUFF @G@@@@SZOPT* RES 2 SECONDARY ATTRIBUTE OPAR )@@G@@TION ROUTINE@D@@@@. AND PARAMETER AS )@@G@@@ @@@@ OFF OLDSTUFF @[@@@@. @A@@@@. INTERMEDIATE AAT )@@G@@ND FINAL TOTALS @[@@@@. @F@@@@TOTSIZ EQU (BRKMAX*BRKOK)+1AU )@@G@@ # OF TOTALS CELLS NEEDED @D@@@@BRTOT* . AV )@@G@@ REMOVABLE TRACKS@ @@@@ DO TOTSIZ , + 0 @D@@@@BVTOT* . AW )@@G@@ V-OPTION TRACKS @ @@@@ DO TOTSIZ , + AX )@@G@@0 @D@@@@BGTOT* . G-OPTION TRACKS @ @@@@AY )@@G@@ DO TOTSIZ , + 0 @F@@@@BTOT* . AZ )@@G@@ FIXED TRACKS (INCLUDING V/G)@ @@@@ DO TOTSIZ , + 0 @E@@@@BA )@@G@@BSECTOT* . SECURE BACKUP BLOCKS @ @@@@ BB )@@G@@ DO TOTSIZ , + 0 @D@@@@BUNLTOT* . UNLOBC )@@G@@ADED TRACKS @ @@@@ DO TOTSIZ , + 0 @G@@@@CNT1* . BD )@@G@@ V-OPTION FILES, G-OPTION FILES @ @@@@ DOBE )@@G@@ TOTSIZ , + 0,0 @G@@@@CNT2* . TAPE FILESBF )@@G@@, REMOVABLE DISC FILES @ @@@@ DO TOTSIZ , + 0,0 @H@@@@CNT3* BG )@@G@@ . UNLOADED FILES, TOTAL FILES SELECTED BH )@@G@@@ @@@@ DO TOTSIZ , + 0,0 @^@@@@. MASK FOR PARTIAL SPECS@[@@@@BI )@@G@@. @F@@@@ACMASK* - 0D INITIALIZE FOR FULL SPBJ )@@G@@EC @ @@@@ ON OLDMFD @[@@@@. @^@@@@. EQUIPMENT BK )@@G@@CODE TABLE @[@@@@. @#@@@@EQUCD* 'F2' @#@@@@ 'FB' BL )@@G@@@#@@@@ 'F4' @#@@@@ 'F8' @#@@@@ 'F17' BM )@@G@@@#@@@@ 'F14' @#@@@@ 'F40' @#@@@@ 'FCS' BN )@@G@@@ @@@@EQUCDL* EQU $-EQUCD @E@@@@SUB30* 'F3' BO )@@G@@ FASTRAND-III SUBCODE @D@@@@ 'F60' BP )@@G@@ 8460 SUBCODE @D@@@@SUB35* 'F24' 8424 SUBCOBQ )@@G@@DE @[@@@@. @B@@@@TAPEQP* '8C7' 01 @B@@@@BR )@@G@@ '6C7' 02 @B@@@@ '8CB' BS )@@G@@ 03 @B@@@@ '6CB' 04 @B@@@@BT )@@G@@ '8C9' 05 @B@@@@ '6C9' BU )@@G@@ 06 @B@@@@ '4C' 07 @B@@@@BV )@@G@@ '4CB' 010 @B@@@@ 'U12' BW )@@G@@ 011 @B@@@@ 'U16' 012 @B@@@@BX )@@G@@ '12N' 013 @B@@@@ '16N' BY )@@G@@ 014 @B@@@@ '20N' 015 @B@@@@BZ )@@G@@ '3A' 016 @B@@@@ '2A' CA )@@G@@ 017 @ @@@@ OFF OLDMFD @[@@@@. @B@@@@CB )@@G@@. *** K L U D G E F O L L O W S *** @[@@@@. @H@@@@. WHEN THE SCC )@@G@@INGLE-FILE ROUTINE DOES AN ER FITEM$ FOR A TEMPORARY FILE, FITEM$ @G@@@@CD )@@G@@. RETURNS THE OLD EQUIPMENT CODE NUMBERS, WHICH WE PREFER NOT TO USE CE )@@G@@@G@@@@. ANYMORE. SINCE THE FILE IS ASSIGNED, WE CAN PICK UP THE EQUIPMECF )@@G@@NT @F@@@@. INDEX FROM THE PCT ITEM, AND USE THAT TO PICK UP THE SPECICG )@@G@@FIC @G@@@@. MNEMONIC FOR THE EQUIPMENT INDEX. THIS IS NOT QUITE WHAT CH )@@G@@WE WANT, @F@@@@. SINCE FOR OTHER FILES WE PRINT THE ASSIGN MNEMONIC, CI )@@G@@BUT IT SEEMS@G@@@@. TO BE THE BEST WE CAN DO FOR NOW. ANYHOW, TO DO THICJ )@@G@@S, WE MUST GET @F@@@@. THE SPECIFIC MNEMONIC TABLE FROM THE MCT, OR UCK )@@G@@SE THE 'FEQP$' @ @@@@. SUBFUNCTION OF ER INFO$... @[@@@@. @G@@@@CL )@@G@@MCTEQ* + 0 IF YOU HAVE >40 DISTINCT EQUIPMENTCM )@@G@@@H@@@@ RES 39 TYPES, YOU'LL HAVE TO INCREACN )@@G@@SE THIS @E@@@@. (SEE ALSO INIT2)CO )@@G@@. @[@@@@. @B@@@@. *** K L U D G E P R E C E D E S *** @[@@@@CP )@@G@@. @[@@@@. @D@@@@EDPACK* E$PKT 23,LINOUT EDIT$ PACKCQ )@@G@@ET @ @@@@ ON OLDSTUFF @F@@@@DATREF* + 0 CR )@@G@@ YY,MM,DD DATE FROM D-OPTION @F@@@@RPR* . CS )@@G@@ R-OPTION PARAMETER TABLE @E@@@@ + 'DISCT )@@G@@',DISBTA DISABLED IN ANY WAY @E@@@@ + 'HDW',DISBCU )@@G@@TH HARDWARE DISABLED @D@@@@ + 'WRN',DISBTW CV )@@G@@ WARNING ONLY @D@@@@ + 'BBT',DISBTB BAD BACKUPCW )@@G@@ TAPE @D@@@@ + 'BMI',BM1BIT BAD MAIN ITEM @G@@@@CX )@@G@@RPRL* EQU $-RPR LENGTH OF R-OPTIOH PARAMETER TBL CY )@@G@@@[@@@@. @D@@@@SIZE* + 0 SPEC2 HOLDER CZ )@@G@@@ @@@@ OFF OLDSTUFF @[@@@@. @C@@@@MRFLGS* + DA )@@G@@ 0,0,0,0,0,0 MORE FLAGS@D@@@@LINE2* + 0 DB )@@G@@ 2ND LINE FLAGS @C@@@@FLAG3* + 0,0,0,0,0,0 MORE FLAGSDC )@@G@@@C@@@@FLAG4* + 0,0,0,0,0,0 MORE FLAGS@C@@@@FLAG5* + DD )@@G@@ 0 MORE FLAGS@[@@@@. @#@@@@. OPTION TABLE DE )@@G@@@[@@@@. @B@@@@. ZERO ENTRY INDICATES UNDEFINED OPTION. @D@@@@. OTHEDF )@@G@@RWISE, H2 = PRIMARY ATTRIBUTE ROUTINE ADDRESS. @G@@@@. IF OPTION IS NOTDG )@@G@@ A PRIMARY ATTRIBUTE OPTION, 'GOON' SHOULD BE USED. @G@@@@. INIT1 WILLDH )@@G@@ SET T1 OF THE ENTRY = 1 IF THE OPTION IS DEFINED AND SET. @[@@@@. DI )@@G@@@F@@@@. IF 'OLDSTUFF' IS TURNED ON, S3 = 040 INDICATES THAT THE OPTION DJ )@@G@@@F@@@@. IS REVERSIBLE, AND T1 WILL BE SET TO -1 IF THE USER HAS REVERSEDDK )@@G@@@E@@@@. IT BY SPECIFYING THE OPTION IN THE SPEC2 VERSION FIELD. @[@@@@DL )@@G@@. @ @@@@ ON OLDSTUFF @E@@@@OLDOP EQU (040DM )@@G@@*/18)+GOON REVERSIBLE OPTION @ @@@@ OFF OLDSTUFF DN )@@G@@@ @@@@ ON OLDSTUFF=0@D@@@@OLDOP EQU 0 DO )@@G@@ UNDEFINED OPTION@ @@@@ OFF OLDSTUFF=0@[@@@@. DP )@@G@@@B@@@@OPTIONS* + 0,AOPT A @B@@@@ DO DQ )@@G@@ 2 , + 0,GOON B-C @B@@@@ + OLDOP D DR )@@G@@@B@@@@ + 0,GOON E @B@@@@ + DS )@@G@@ 0,FOPT F @B@@@@ + OLDOP G DT )@@G@@@B@@@@ + 0,GOON H @B@@@@ + DU )@@G@@ 0,FOPT I @B@@@@ + 0,GOON J DV )@@G@@@B@@@@ + 0,KOPT K @B@@@@ DO DW )@@G@@ 3 , + 0,GOON L-N @B@@@@ + OLDOP O DX )@@G@@@B@@@@ + 0,POPT P @B@@@@ + DY )@@G@@ 0,QOPT Q @B@@@@ + OLDOP R DZ )@@G@@@B@@@@ + 0,GOON S @B@@@@ DO 3 , +EA )@@G@@ OLDOP T-V @B@@@@ + 0,GOON W EB )@@G@@@B@@@@ + 0,XOPT X @B@@@@ + EC )@@G@@ 0,GOON Y @B@@@@ + 0,ZOPT Z ED )@@G@@@[@@@@. @ @@@@ ON SORTOK @[@@@@. @F@@@@. SORTEE )@@G@@ PARAMETER TABLE, SORTBL, SHOULD CONTAIN EVERYTHING EXCEPT @E@@@@. KEY EF )@@G@@PARAMETERS, WHICH ARE CREATED IN 'TABLE2' BY INIT1. @[@@@@. @G@@@@EG )@@G@@SORTBL* R$FILE 'COPY',TABLE2 'RSZW',RECLEN 'FILES','XA','XB' ; EH )@@G@@@D@@@@ 'FPOC',MFD400 'LPOC',LPOC 'CHECK','D','F' @D@@@@TABLE2EI )@@G@@* + 0,TABLE2 START OF TABLE @F@@@@ + EJ )@@G@@ 06300,0,0 DELETE CONSOLE MESSAGES @[@@@@. @G@@@@. SORTEK )@@G@@ KEYS ARE INSERTED IN 'ADDKEYS' DYNAMICALLY BY INIT1, BASED ON @G@@@@EL )@@G@@. SPECS. IF 'B' OPTION IS USED, SORT KEYS FOR QUALIFIER, FILENAME, EM )@@G@@@F@@@@. AND FCYCLE ARE AUTOMATICALLY ADDED AT THE END OF THE LIST. THE EN )@@G@@@E@@@@. LIST IS TERMINATED BY AN END-OF-PARAMETER-TABLE SENTINEL. @E@@@@EO )@@G@@. THEREFORE, A MINIMUM OF 7 WORDS IS NEEDED FOR ADDKEYS. @[@@@@. EP )@@G@@@D@@@@KEYL EQU 7+(NSSP<6)*(2*NSSP)+(NSSP>5)*(2*5)@^@@@@ADDKEYEQ )@@G@@S* RES KEYL@ @@@@ ON BRKOK @[@@@@. @G@@@@ER )@@G@@. BRKTBL WILL CONTAIN THE NECESSARY INSTRUCTIONS AND DATA TO PROVIDE THEES )@@G@@@H@@@@. SUBTOTAL ('BREAK') FEATURE. EACH ENTRY IS BRKSIZ WORDS IN LENGTET )@@G@@H, BUT THE @F@@@@. CONTENTS VARY WITH THE SORT KEY TYPE. BRKTBL IS BUIEU )@@G@@LT BY INIT1.@[@@@@. @F@@@@. SINGLE WORD DOUBLE WORDEV )@@G@@ SINGLE BIT@F@@@@. ----------- -----------EW )@@G@@ ----------@G@@@@. 0 LA<,J> A0,,X8 DL A0,,EX )@@G@@X8 LA, A0,,X8@H@@@@. 1 TE A0,2,*X5 DTE AEY )@@G@@0,2,*X5 LMJ X11,BRKBIT @H@@@@. 2 + FORMER VALUEZ )@@G@@E + FORMER VALUE + FORMER VALUE @G@@@@. 3 + FORMER VALUE + BIT MASK @G@@@@. 4 FB )@@G@@+ 0, + 0, + 0, @H@@@@FC )@@G@@. 5 SHIFT LEFT,RIGHT SHIFT LEFT,RIGHFD )@@G@@T @[@@@@. @H@@@@. WHERE IS THE PARTIAL WORD DESIGNATOR, IF AFE )@@G@@NY, AND IS THE OFFSET @G@@@@. INTO THE SORT RECORD. IS TFF )@@G@@HE FIRST 3 CHARACTER OF THE SPEC. @[@@@@. @E@@@@BRKSIZ EQU FG )@@G@@ 6 SIZE OF BRKTBL ENTRY @H@@@@BRKPNT* + -BRKFH )@@G@@SIZ,BRKTBL+(BRKMAX*BRKSIZ) INITIAL BRKTBL POINTER @E@@@@BRKTBL* REFI )@@G@@S BRKMAX*BRKSIZ BRKSIZ-WORD ENTRIES @[@@@@. @E@@@@BRKLOAFJ )@@G@@D* EQU 0 LOAD OF DIRECTORY INFO@F@@@@BRKTEST* EQFK )@@G@@U 1 TEST VERSUS PREVIOUS VALUE @D@@@@BRKVAL* EQFL )@@G@@U 2 PREVIOUS VALUE @H@@@@BRKMASK* EQU 3 FM )@@G@@ MASK FOR SINGLE BIT, OR WORD 2 OF VALUE @D@@@@BRKSPEC* EQFN )@@G@@U 4 BREAK SPEC FLAGS@F@@@@. FO )@@G@@ S2 = NEW-HEADING-WANTED FLAG@D@@@@. FP )@@G@@ S3 = SPEC NUMBER@F@@@@. FQ )@@G@@ H2 = 1ST 3 CHARACTER OF SPEC@F@@@@BRKSHFT* EQU 5 FR )@@G@@ LEFT,RIGHT SHIFT COUNTS @[@@@@. @F@@@@INVALU* + 1,1 FS )@@G@@ BREAK INITIAL VALUE FLAGS @^@@@@BRKCNT* + 0 FT )@@G@@@G@@@@BRKSTOP* + 0 STARTING BREAK INDEX FOR TOTFU )@@G@@ALS @ @@@@ OFF BRKOK @ @@@@ OFF SORTFV )@@G@@OK @[@@@@. @ @@@@. DEFINE EQUF TAGS @[@@@@. @D@@@@FW )@@G@@ EQUFS . EQUF DEFINITIONS@ @@@@ ONFX )@@G@@ OLDSTUFF @[@@@@. @E@@@@. THESE INSTRUCTIONS, WHICH GET EXECFY )@@G@@UTED REMOTELY BY THE @E@@@@. FILE CHECK ROUTINE, HAVE THEIR TESTS REVFZ )@@G@@ERSED BY INIT2 @E@@@@. IF THE CORRESPONDING OPTION IS REVERSED ON THEGA )@@G@@ CALL CARD. @[@@@@. @F@@@@REVT* J GALI SELEGB )@@G@@CT (SKIP) TAPE FILES @G@@@@REVO* JZ RDISC,GALI SELEGC )@@G@@CT (SKIP) REMOVABLE DISC FILES@F@@@@REVG* TOP,U A0,MI0GBIT GD )@@G@@ SELECT (SKIP) G-OPTION FILES@F@@@@REVV* TOP,U A0,VBIT GE )@@G@@ SELECT (SKIP) V-OPTION FILES@F@@@@REVR* TOP,H2 A0,RPR-1,A1 GF )@@G@@ SELECT (SKIP) DISABLED FILES@F@@@@UNCHEK* TN DESCFLAGS GG )@@G@@ SELECT (SKIP) UNLOADED FILES@G@@@@REVD* TLE A1,A0 GH )@@G@@ SELECT (SKIP) USING REFERENCE DATE@H@@@@SZLOD* TG FILESIZE,SGI )@@G@@ZOPT+1 SELECT (SKIP) USING FILE SIZE CRITERIA @H@@@@SZBAK* TLE GJ )@@G@@ FILESIZE,SZOPT+1 SELECT (SKIP) USING BACKUP BLOCK COUNT @ @@@@ GK )@@G@@ OFF OLDSTUFF @#@@@@/$(1). BEGIN @[@@@@. @F@@@@. LOADGL )@@G@@ INITIALIZATION SEGMENT (INSEG), WHICH IS COMPOSED OF INIT1 @G@@@@. AND GM )@@G@@INIT2 ROUTINES. INIT1 VALIDATES THE SPEC FIELDS AND DOES MUCH @F@@@@GN )@@G@@. OF THE OPTION CHECKING. WHEN DONE, INIT1 JUMPS TO INIT2 TO SET @F@@@@GO )@@G@@. ROUTINE ADDRESSES, INITIALIZE DIREC$ IF NEEDED, AND PRINT THE @D@@@@GP )@@G@@. HEADING (VIA OVERLAY SEGMENT HDGSEG) IF DESIRED. @F@@@@. IF SINGLE-GQ )@@G@@FILE MODE WAS NOT SPECIFIED, INIT2 WILL THEN NORMALLY @F@@@@. OVERLAY ITGR )@@G@@SELF WITH THE CHECK/PRINT SEGMENT (CHEKPRTSG) AND @^@@@@. RETURN TO GS )@@G@@MFD100. @[@@@@. @G@@@@. IF SINGLE-FILE MODE IS SPECIFIED, INIT2 GT )@@G@@LOADS AND JUMPS TO QFSEG, @G@@@@. WHICH LOADS CHEKPRTSG AND RETURNS GU )@@G@@TO 'MFD100' IF THE DREAD$ GOES OK. @G@@@@. IF NOT, IT WILL PRINT AN ERRGV )@@G@@OR MESSAGE, ISSUE A READ$ FOR ANOTHER @H@@@@. FILE, AND TRY AGAIN. GW )@@G@@IF AN @EOF IS ENCOUNTERED, IT WILL RETURN TO 'MFD700'.@F@@@@. IN SINGLE-GX )@@G@@FILE MODE, THE DIREC$ SEGMENT IS NOT NEEDED, SO QFSEG @B@@@@. AND DIRSEGGY )@@G@@ OCCUPY THE SAME PROGRAM AREA.@[@@@@. @]@@@@MFD . @^@@@@ GZ )@@G@@ ON FLAP@^@@@@FSKIP$* EQU 1 @^@@@@FJUMP$* EQU HA )@@G@@ 2 @^@@@@FJUMPS$* EQU 1 @^@@@@U1110T* EQU 0 @^@@@@HB )@@G@@FLOP$STOP* EQU 0 @^@@@@FTIO$* EQU 1 @G@@@@ TEHC )@@G@@P A5,(1*/('Z'-'E')) E-OPTION TO TURN ON FLAP OUTPUT @E@@@@ HD )@@G@@ SLJ FLOP$ START FLAP OUTPUT @^@@@@ OFHE )@@G@@F FLAP@E@@@@ L$OAD INSEG,IN1000,1 PERFORM INITIALIHF )@@G@@ZATION@B@@@@. QFSEG RETURNS HERE IF DREAD$ GOES OK. @C@@@@. INSEG RETUHG )@@G@@RNS HERE AFTER INITIALIZING DIREC$. @[@@@@. @B@@@@. LOAD SDFO SEGMENHH )@@G@@T IF W-OPTION IS SET @[@@@@. @]@@@@MFD100* . @ @@@@ ONHI )@@G@@ WOPTOK @D@@@@ TZ WPT IS W-OPTIOHJ )@@G@@N SET?@G@@@@ TZ SDFLOD AND SDFO SEG NOT ALREAHK )@@G@@DY LOADED? @D@@@@ J MFD200 NO, CONTINUE HL )@@G@@@C@@@@ L,U A1,SDFOSG GET SEGID @E@@@@ LMHM )@@G@@J X11,DSEG ACQUIRE NECESSARY CORE@H@@@@ L$OAD HN )@@G@@ SDFOSG,SDF000,1 J TO SDFOO ROUTINE, RETURN TO MFD200 @ @@@@ HO )@@G@@ OFF WOPTOK @[@@@@. @^@@@@. OPEN SORT IF NEEDED @[@@@@HP )@@G@@. @]@@@@MFD200* . @ @@@@ ON SORTOK @D@@@@ HQ )@@G@@ TNZ SORT SORT DESIRED? @F@@@@ J HR )@@G@@ MFD400 NO, START DIRECTORY SEARCH@[@@@@. @C@@@@. SORTHS )@@G@@ DESIRED...ACQUIRE CORE AND LOAD SORT DSEG@[@@@@. @F@@@@ TZHT )@@G@@ SORTED SORT SEG ALREADY LOADED? @F@@@@ J HU )@@G@@ NOSORTF YES, NO NEED FOR SORTF CALL @H@@@@. HV )@@G@@ JUST OPEN SORT, AND RETURN TO MFD400 @E@@@@HW )@@G@@ DO SRTDBG , P$RINT (0102,('SORT LOAD$ ')) @C@@@@ HX )@@G@@ L,U A1,SORTSG GET SEGID @F@@@@ LMJ X11,HY )@@G@@DSEG PREPARE FOR DSEG LOADING @G@@@@ L$OAD SORTHZ )@@G@@SG,OPNSRT,1 LOAD AND JUMP TO SORT SEGMENT @ @@@@ OFF IA )@@G@@ SORTOK @[@@@@. @ @@@@. FIND NEXT FILE TO BE LISTED @H@@@@. IF SIB )@@G@@ORT NOT BEING DONE, J MFD400...OTHERWISE, GET NEXT RECORD FROM SORT IC )@@G@@@[@@@@. @]@@@@MFD300* . @ @@@@ ON SORTOK @D@@@@ID )@@G@@ TZ SORT SORT BEING DONE?@G@@@@ J IE )@@G@@ SRTNXT YES, GET NEXT RECORD FROM SORT @G@@@@. IF )@@G@@ JUMP TO 'PRINT' IF RECORD FOUND, @E@@@@IG )@@G@@. TO 'MFD600' IF EOF @ @@@@ IH )@@G@@ OFF SORTOK @[@@@@. @G@@@@. START DIRECTORY ITEM CHECK RII )@@G@@OUTINE. 'OPNSRT' RETURNS HERE AFTER R$OPN@[@@@@. @]@@@@MFD400 . IJ )@@G@@@A@@@@ ON SORTOK**SRTDBG @D@@@@ TNZ SORTIK )@@G@@ SORT BEING DONE?@E@@@@ J MFD401 IL )@@G@@ NO, DON'T PRINT MSG @B@@@@ P$RINT (0101,('FPOC ')) IM )@@G@@@]@@@@MFD401 . @A@@@@ OFF SORTOK**SRTDBG @H@@@@ IN )@@G@@ J CHK000 J TO ITM CHK ROUTINE, RETURN TO MFD500 IO )@@G@@@[@@@@. @C@@@@. RELEASE RECORD TO SORT IF SORT IS TURNED ON @[@@@@IP )@@G@@. @]@@@@MFD500* . @ @@@@ ON SORTOK @D@@@@ IQ )@@G@@ TZ SORT WAS SORT SPEC'D?@F@@@@ J IR )@@G@@ GOTREC YES, RELEASE RECORD TO SORT @G@@@@. IS )@@G@@ RETURN TO MFD400 TO GET NEXT FILE @ @@@@ OFIT )@@G@@F SORTOK @[@@@@. @E@@@@. OTHERWISE, JUST JUMP TO PRINT ROUTIU )@@G@@INE TO EDIT FILE INFO @[@@@@. @E@@@@ J PR000 IV )@@G@@ JUMP TO PRINT ROUTINE @ @@@@/. FINISH UP - PRINT TOTALS@[@@@@IW )@@G@@. @]@@@@MFD600* @ @@@@ ON BRKOK @H@@@@ IX )@@G@@ SZ BRKSTOP SET HIGHEST BREAK LEVEL FOR GRAND TOTALSIY )@@G@@@ @@@@ OFF BRKOK @E@@@@MFD620 L$OAD TOTSEG,TOTIZ )@@G@@000,1 JUMP TO TOTALS ROUTINE@G@@@@MFD700* . JA )@@G@@ RETURNS HERE AFTER GRAND TOTALS @ @@@@ ON MSTITE JB )@@G@@@E@@@@ TNZ SFMODE2 SINGLE-FILE MODE? @D@@@@JC )@@G@@ TZ MPT OR M-OPTION SET?@F@@@@ J JD )@@G@@ $+2 YES, DON'T FREE DGET$ FILE @D@@@@ LMJE )@@G@@J X11,DIREND$ FREE DGET$ FILE @ @@@@ OFF MSTIJF )@@G@@TE @E@@@@ DO WOPTOK>0 , TNZ WPT . IS W-OPTION SET? JG )@@G@@@D@@@@ ER EXIT$ NO, WE'RE THRU! @ @@@@ JH )@@G@@ ON WOPTOK @F@@@@ LA,U A0,FCT YES,JI )@@G@@ MUST CLOSE SDF FILE @E@@@@ LMJ X11,SDFOC$ CLOSJJ )@@G@@E THE SDF FILE @E@@@@ ER ERR$ ERROR RETUJK )@@G@@RN FROM SDFO@[@@@@$(0). @E@@@@OMSG 'OUTPUT IN DATAFILE &' TELLJL )@@G@@ 'EM WHERE IT IS @[@@@@$(1). @C@@@@ E$DIT EDPACK JM )@@G@@ OPEN EDIT @F@@@@ E$MSG OMSG EDIT 'OUTPUT IN JN )@@G@@DATAFILE ' @E@@@@ E$FD2 (WFILE) EDIT SDF FILENAMJO )@@G@@E @E@@@@ LA A0,POUT2 GET PRINT$ PACKET JP )@@G@@@ @@@@ OFF WOPTOK @D@@@@MFD900* ER PRINT$ JQ )@@G@@ PRINT THE IMAGE @D@@@@ ER EXIT$ NOW JR )@@G@@WE'RE THRU! @[@@@@. @D@@@@. COMPOSE SPEC ERROR MSG - ENTER VIA LMJ JS )@@G@@X10,SPECER @A@@@@. SPEC NUMBER SHOULD BE IN SPECN @[@@@@. @C@@@@JT )@@G@@SPECER* E$DIT EDPACK OPEN EDIT @C@@@@ E$MSG JU )@@G@@ SPECERM START MSG @D@@@@ E$DECV SPECN JV )@@G@@ ADD SPEC NUMBER @D@@@@ E$MSGR . CONTINUE MJW )@@G@@SG @E@@@@ E$OCTF 6,0,X10,U EDIT RETURN ADDRESS JX )@@G@@@D@@@@ LA A0,POUT GET PRINT PACKET@C@@@@ JY )@@G@@ J MFD900 PRINT IT @B@@@@SPECERM 'SPEC & ERROR JZ )@@G@@DETECTED AT &' @^@@@@/ ON NSSP@[@@@@. @B@@@@. POLIKA )@@G@@SH EXPRESSION EVALUATION ROUTINE @[@@@@. @H@@@@. DECODE THE 'POLIKB )@@G@@SH' TABLE, AND RETURN WITH A0 INDICATING WHETHER OR NOT @G@@@@. THE KC )@@G@@EXPRESSION IS TRUE. INTERMEDIATE RESULTS GO IN 'TRANS' TABLE. @[@@@@KD )@@G@@. @G@@@@POLTRAN* TZ POLNTH IS LENGTH OF POLISH TAKE )@@G@@BLE ZERO? @G@@@@ TNZ TESTS OR HAVE NO TESTSKF )@@G@@ BEEN SPECIFIED? @C@@@@ J POL400 YES, ERRORKG )@@G@@@F@@@@ LR R1,POLNTH GET LENGTH OF POLISH TABLE KH )@@G@@@D@@@@ JGD R1,$+1 ADJUST FOR JGD @G@@@@ KI )@@G@@ LX X1,(1,0) INITIALIZE POLISH TABLE INDEX @F@@@@KJ )@@G@@ LX X2,(1,0) INITIALIZE TRANS TABLE INDEX@G@@@@KK )@@G@@POL100 LA A0,POLISH,*X1 PICK UP ITEM FROM POLISH TABLE KL )@@G@@@E@@@@ TG,U A0,TRUE+1 IS IT AN OPERATION? @F@@@@KM )@@G@@ J POL300 YES, STORE IT IN TRANS TABLE@E@@@@KN )@@G@@ TNZ,U 0,X2 IS FIRST SPEC OPERAND?@F@@@@ KO )@@G@@ J POL400 YES, OPERATION MUST BE FIRST@H@@@@POL200KP )@@G@@ LA A1,TRANS-1,X2 OPERAND - GET LAST ITEM PUT IN TRANS KQ )@@G@@@F@@@@ SA A1,A2 SAVE IN A2 IN CASE OF 'NOT' KR )@@G@@@F@@@@ TNE,U A1,NOT WAS IT A 'NOT' OPERATION? KS )@@G@@@E@@@@ J POL240 YES, HANDLE IT NOW @G@@@@KT )@@G@@ TG,U A1,TRUE+1 NO, WAS IT ANOTHER OPERATION? KU )@@G@@@H@@@@ J POL300 YES, MUST STORE THIS OPERANDKV )@@G@@ IN TRANS @F@@@@ LA A2,TRANS-2,X2 GET LAST OPERATIKW )@@G@@ON IN TRANS @E@@@@POL240 ANA,U A2,TRUE+1 CONVERT INTO OP KX )@@G@@INDEX @E@@@@ EX OP,A2 DO AND/OR/XOR A0,A1 KY )@@G@@@E@@@@ LA A0,A1 RESULT IN A0 AGAIN @E@@@@KZ )@@G@@ ANX,U X2,1 BACK UP TRANS INDEX @F@@@@ LA )@@G@@ TE,U A2,NOT-(TRUE+1) WAS THIS A 'NOT' OPERATION? @F@@@@ LB )@@G@@ ANX,U X2,1 NO, BACK UP A LITTLE MORE @F@@@@ LC )@@G@@ TNZ,U 0,X2 NO OPERATIONS LEFT IN TRANS?@F@@@@ LD )@@G@@ J POL500 GOOD, SHOULD BE ALL DONE @E@@@@ LE )@@G@@ J POL200 TRY COMBINING AGAIN @H@@@@POL300 SALF )@@G@@ A0,TRANS,*X2 STORE OPERAND OR OPERATION IN TRANS @F@@@@LG )@@G@@ JGD R1,POL100 CONTINUE UNTIL ALL DONE @[@@@@LH )@@G@@. @ @@@@. ERROR IN POLISH EXPRESSION @[@@@@. @H@@@@POL400 LALI )@@G@@ A0,(PRT 1,4,POLERM) . GET 'POLISH NOTATION ERROR' MSG @E@@@@LJ )@@G@@ J MFD900 PRINT IT, AND EXIT @[@@@@. LK )@@G@@@A@@@@. TABLE OF LOGICAL INSTRUCTIONS @[@@@@. @ @@@@OP ANLL )@@G@@D A0,A1 @ @@@@ OR A0,A1 @ @@@@ XOLM )@@G@@R A0,A1 @G@@@@ XOR,U A0,TRUE 'NOT' - COLN )@@G@@MPLEMENT THE OPERAND @[@@@@. @E@@@@POL500 TZ R1 LO )@@G@@ R1 SHOULD BE ZERO @F@@@@ J POL400 LP )@@G@@ IF NOT, SOMETHING'S WRONG @G@@@@ J 0,X11 LQ )@@G@@ RETURN WITH A0 = 0 OR 1 (F OR T) @^@@@@ OFF NSSP@^@@@@LR )@@G@@ END MFD ___@@@ LR R1,POLNTH GET LS )@@G@@LENGTH OF POLISH TABLE *[S@@@*SDFF*@G@@@@. @MFD PRINT ROUTINE - FORMS OLT )@@G@@NE-LINE SUMMARY LISTING FOR EACH FILE @[@@@@. @^@@@@ AXLU )@@G@@R$ . @G@@@@ CONFIG . DEFINE CONFIGURALV )@@G@@TION PARAMTERES @D@@@@ EQUFS . DEFINE TAGLW )@@G@@S @[@@@@. @D@@@@PRT FORM 12,6,18 FORM T1,S3LX )@@G@@,H2 @[@@@@. @^@@@@P PROC 1,3 @D@@@@CHECK* NAME LY )@@G@@ 0 FOR TEP TEST @D@@@@CHOCK* NAME 1 LZ )@@G@@ FOR TOP TEST @E@@@@ LA,U A0,P(1,1) GET MA )@@G@@OPTION LETTER @D@@@@ DO P(0,0)=0 , TEP,U A1,P(1,2) CHECK OPTIMB )@@G@@ON BIT@D@@@@ DO P(0,0)=1 , TOP,U A1,P(1,2) CHECK OPTION BIT@F@@@@MC )@@G@@ EX ST,*A2 STORE LETTER IN PRINT LINE @^@@@@MD )@@G@@ END . @[@@@@. @ @@@@ ON OLDMFD ME )@@G@@@B@@@@OTHEQP 'CARD' . 040 @B@@@@ '??' MF )@@G@@ . 041 @B@@@@ 'PTP' . 042 MG )@@G@@@B@@@@ '??' . 043 @B@@@@ 'HSP' MH )@@G@@ . 044 @B@@@@ 'MHSP' . 045 MI )@@G@@@B@@@@ '??' . 046 @B@@@@ '9300' MJ )@@G@@ . 047 @B@@@@ '1004' . 050 MK )@@G@@@B@@@@ '??' . 051 @B@@@@ '??' ML )@@G@@ . 052 @B@@@@ '??' . 053 MM )@@G@@@B@@@@ '??' . 054 @B@@@@ '??' MN )@@G@@ . 055 @B@@@@ '??' . 056 MO )@@G@@@B@@@@ '0770' . 057 @B@@@@ 'CONSOL'MP )@@G@@ . 060 @B@@@@ '??' . 061 MQ )@@G@@@B@@@@ '??' . 062 @B@@@@ '??' MR )@@G@@ . 063 @B@@@@ '??' . 064 MS )@@G@@@B@@@@ '??' . 065 @B@@@@ '??' MT )@@G@@ . 066 @B@@@@ '??' . 067 MU )@@G@@@B@@@@ 'CTS' . 070 @B@@@@ 'WTS' MV )@@G@@ . 071 @B@@@@ 'CTMC' . 072 MW )@@G@@@B@@@@ 'C/SP' . 073 @B@@@@ '??' MX )@@G@@ . 074 @B@@@@ '??' . 075 MY )@@G@@@B@@@@ '??' . 076 @B@@@@ 'ARB' MZ )@@G@@ . 077 @ @@@@ OFF OLDMFD @[@@@@. NA )@@G@@@ @@@@. STORE TABLE FOR CAT OPTIONS @[@@@@. @C@@@@ST SA,S2 NB )@@G@@ A0,LINOUT+1 A @C@@@@ SA,S3 A0,LINOUT+1 NC )@@G@@ AB @C@@@@ SA,S4 A0,LINOUT+1 ABC@C@@@@ND )@@G@@ SA,S1 A0,LINOUT+1 DABC@C@@@@ SA,S6 NE )@@G@@ A0,LINOUT EDABC@C@@@@ SA,S5 A0,LINOUT NF )@@G@@ FEDABC@C@@@@ SA,S4 A0,LINOUT GFEDABC@C@@@@NG )@@G@@ SA,S3 A0,LINOUT HGFEDABC@C@@@@ SA,S2 NH )@@G@@ A0,LINOUT IHGFEDABC@C@@@@ SA,S1 A0,LINOUT NI )@@G@@ JIHGFEDABC@B@@@@/$(1),PR000* . START PRINT ROUTINE @[@@@@. NJ )@@G@@@E@@@@. BETTER CONVERT THE CAT AND REF DATES BACK TO TDATE$ FORMAT@[@@@@NK )@@G@@. @G@@@@ LA,H1 A0,DATLSTASG GET DATE IN YR,MON,DAYNL )@@G@@ FORMAT @E@@@@ SA,T1 A0,DATLSTASG STORE MON,DAY INNM )@@G@@ T1 @E@@@@ SSL A0,12 GET YEAR ALONE IN A0 NN )@@G@@@F@@@@ SA,S3 A0,DATLSTASG STORE IT IN TDATE$ FORMAT NO )@@G@@@G@@@@ LA,H1 A0,DATCATLGD GET DATE IN YR,MON,DAY FORMANP )@@G@@T @E@@@@ SA,T1 A0,DATCATLGD STORE MON,DAY IN T1 NQ )@@G@@@E@@@@ SSL A0,12 GET YEAR ALONE IN A0 @F@@@@NR )@@G@@ SA,S3 A0,DATCATLGD STORE IT IN TDATE$ FORMAT @E@@@@NS )@@G@@ TZ SFMODE2 SINGLE-FILE MODE? @G@@@@ NT )@@G@@ J PR030 YES, SKIP TOTALS AND BREAK CHECKS @ @@@@NU )@@G@@ ON BRKOK=0 @G@@@@ LX,U X4,0 NV )@@G@@ NO, ASSUME GRAND TOTALS INDEX @ @@@@ OFF BRKOK=0 NW )@@G@@@ @@@@ ON BRKOK @G@@@@ LX X4,BRKCNT NX )@@G@@ SET TOTALS INDEX TO BREAK COUNT @F@@@@ TZ BRKCNY )@@G@@NT WERE NO BREAKS SPECIFIED, OR@I@@@@ TZ,H1 INVANZ )@@G@@LU IS THIS THE VERY FIRST PRINTABLE FILE? @I@@@@ OA )@@G@@ J COUNT YES, JUST INCREMENT TOTALS AND PRINT INFOB )@@G@@O @H@@@@ LX X5,BRKPNT YES, GET BREAK TABLE POC )@@G@@OINTER AND INDEX @[@@@@. @G@@@@. PERFORM THE TESTS INDICATED BY EACOD )@@G@@H 'BREAK' SPECIFICATION TO DETERMINE@H@@@@. WHETHER THE PARTICULAR SORT OE )@@G@@KEY FIELDS FOR THIS FILE ARE DIFFERENT FROM @G@@@@. THOSE OF THE PREOF )@@G@@VIOUS FILE. IF THEY'RE ALL THE SAME, COUNT THIS FILE,@H@@@@. AND PRINT OG )@@G@@THE NORMAL INFORMATION ABOUT IT. IF DIFFERENT, CHARGE OFF INTO @H@@@@OH )@@G@@. THE TOTALS ROUTINE TO PRINT SUBTOTALS. THEN COUNT THE FILE AND PRINT OI )@@G@@IT. @[@@@@. @G@@@@BRKCHK TNZ X4 ARE WE AT OJ )@@G@@THE GRAND TOTALS INDEX? @D@@@@ J BRKCHK3 YES,OK )@@G@@ SKIP IT @F@@@@ EX BRKLOAD,X5 EXECUTE LOAD INSOL )@@G@@TRUCTION @F@@@@ TNZ BRKSHFT,X5 ANY SHIFTING TO OM )@@G@@BE DONE? @B@@@@ J BRKCHK0 NO @E@@@@ ON )@@G@@ LA,H1 A1,BRKSHFT,X5 GET LEFT SHIFT COUNT @C@@@@ LSOO )@@G@@SL A0,0,A1 SHIFT LEFT@E@@@@ LA,H2 A1,BRKSHFTOP )@@G@@,X5 GET RIGHT SHIFT COUNT @D@@@@ SSL A0,0,A1 OQ )@@G@@ SHIFT RIGHT @F@@@@BRKCHK0 EX BRKTEST,X5 EXECUTE TEOR )@@G@@ST INSTRUCTION @D@@@@ J DOBREAK TEST FAILEOS )@@G@@D @D@@@@ J BRKCHK2 TEST PASSED @[@@@@OT )@@G@@. @G@@@@. THIS SUBROUTINE IS USED ONLY FOR 'BREAK' SPECS WHERE THE KOU )@@G@@EY FIELD @F@@@@. IS A SINGLE-BIT VALUE, AS IN THE SPECS WITH ASSUMED OV )@@G@@VALUES. @F@@@@. THE ABOVE CODE REMOTELY EXECUTES AN 'LMJ X11,BRKBIT'OW )@@G@@ FOR SUCH @E@@@@. A KEY FIELD, WITH THE VALUE FOR THE CURRENT FILE IN OX )@@G@@A0. @[@@@@. @E@@@@BRKBIT* LA A1,BRKVAL,X5 GET PREVIOOY )@@G@@US VALUE @F@@@@ AND A1,BRKMASK,X5 MASK OFF ASSUMEDOZ )@@G@@ VALUE BIT @G@@@@ AND A0,BRKMASK,*X5 DO THE SAME WITHPA )@@G@@ CURRENT VALUE @C@@@@ TE A1,A2 EQUAL? PB )@@G@@@B@@@@ J 0,X11 NO @B@@@@ J PC )@@G@@ 1,X11 YES @[@@@@. @G@@@@. A KEY FIELD FOR THIS FILE ISPD )@@G@@ DIFFERENT FROM THAT OF THE PREVIOUS FILE.@D@@@@. SET A FLAG, AND SAVE TPE )@@G@@HE BREAK LEVEL FOR LATER USE. @[@@@@. @E@@@@DOBREAK SR,H2 R15,PF )@@G@@INVALU SET INITIAL VALUE FLAG@G@@@@ SX X4,BRKSTOPPG )@@G@@ SET HIGHEST-LEVEL-BREAK INDICATOR @E@@@@BRKCHK2 JGD X4,BPH )@@G@@RKCHK CHECK ALL BREAK LEVELS@[@@@@. @G@@@@. IF ANY BREAK LEVPI )@@G@@EL HAS TRIGGERED A BREAK, PRINT THE SUBTOTALS UP TO @B@@@@. THE HIGHESPJ )@@G@@T BREAK LEVEL WHICH DID SO. @[@@@@. @E@@@@BRKCHK3 TNZ,H2 INVAPK )@@G@@LU HAS A BREAK OCCURRED? @G@@@@ J TOTRTN PL )@@G@@ NO, JUST COUNT AND PRINT THE FILE @E@@@@ L$OAD TOTSPM )@@G@@EG,TOT000,1 GO PRINT SUBTOTALS @E@@@@TOTRTN* . PN )@@G@@ TOTSEG RETURNS HERE @G@@@@ LX X4,BRKCNT PO )@@G@@ SET TOTALS INDEX TO BREAK COUNT @]@@@@COUNT . @ @@@@ OFPP )@@G@@F BRKOK @[@@@@. @#@@@@. INCREMENT TOTALS@[@@@@. @G@@@@PQ )@@G@@ BUMP PFCT . INCREMENT TOTAL FILES SELECTED PR )@@G@@@C@@@@ TNZ TAP TAPE FILE?@B@@@@ J PS )@@G@@ PR0035 NO @F@@@@ BUMP TFCT PT )@@G@@. INCREMENT TAPE FILE COUNT @G@@@@ J PR0070 PU )@@G@@ NO OTHER TOTALS FOR TAPE FILE @E@@@@PR0035 JZ RDISC,PR00PV )@@G@@40 REMOVABLE DISC FILE? @H@@@@ BUMP RTOT FILESIZE PW )@@G@@ YES, INCREMENT REMOVABLE TRACK COUNT @F@@@@ BUMP RFCTPX )@@G@@ . AND REMOVABLE FILE COUNT @D@@@@PR0040 TNZ VFILPY )@@G@@ V-OPTION FILE? @B@@@@ J PR0050 PZ )@@G@@ NO @G@@@@ BUMP VTOT FILESIZE YES, INCREMENT V-OPT TQA )@@G@@RACK COUNT @E@@@@ BUMP VFCT . AND V-OPT FILE CQB )@@G@@OUNT @D@@@@PR0050 TNZ GFIL G-OPTION FILE? @B@@@@QC )@@G@@ J PR0055 NO @G@@@@ BUMP GTOTQD )@@G@@ FILESIZE YES, INCREMENT G-OPT TRACK COUNT @E@@@@ BUMP QE )@@G@@ GFCT . AND G-OPT FILE COUNT @G@@@@PR0055 JNZ RDISQF )@@G@@C,PR0070 SKIP UNLOADED TEST IF REMOVABLE @C@@@@ TP QG )@@G@@ DESCFLAGS UNLOADED? @G@@@@ J PR0060 QH )@@G@@ YES, DON'T COUNT AS LOADED TRACKS @G@@@@ BUMP TOT FILEQI )@@G@@SIZE NO, INCREMENT TOTAL FIXED TRACKS @C@@@@ J PR00QJ )@@G@@70 GO ON @F@@@@PR0060 BUMP UNLTOT BKUPTEXT INCRQK )@@G@@EMENT UNLOAADED TRACKS @F@@@@ BUMP UFCT . AND QL )@@G@@UNLOADED FILE COUNT @E@@@@PR0070 JZ LONGLIST,PR0080 JUMPQM )@@G@@ IF SHORT LISTING @E@@@@ JZ BACKEDUP,PR0080 JUMP IF NOQN )@@G@@ BACKUP @C@@@@ TNZ BKUPREEL1 BACKED UP?@B@@@@QO )@@G@@ J PR0080 NO @G@@@@ BUMP SECTQP )@@G@@OT BKUPTEXT YES, INCREMENT BACKUP BLOCK COUNT @]@@@@PR0080 . @ @@@@QQ )@@G@@ ON BRKOK @ @@@@ ON BRKDBG @B@@@@QR )@@G@@ P$RINT ( PRT 2,DBGL,DBG) @ @@@@ E$DIT EDPAQS )@@G@@CK @ @@@@ E$DECF 2,0,X4,U @ @@@@ E$DECF 7,PFQT )@@G@@CT @ @@@@ E$DECF 7,TFCT @ @@@@ E$DECF 7,VFQU )@@G@@CT @ @@@@ E$DECF 7,UFCT @ @@@@ E$DECF 7,TOQV )@@G@@T @ @@@@ E$DECF 7,VTOT @ @@@@ E$DECF 7,UNQW )@@G@@LTOT @ @@@@ E$DECF 7,SECTOT @^@@@@ P$RINT POUTQX )@@G@@@]@@@@$(0) . @G@@@@DBG 'X4 PFCT TFCT VFCT UFCT TOTQY )@@G@@ VTOT UNLTOT SECTOT' @ @@@@DBGL EQU $-DBG @]@@@@$(1) QZ )@@G@@ . @ @@@@ OFF BRKDBG @G@@@@ JGD X4,CRA )@@G@@OUNT INCREMENT ALL NECESSARY SUBTOTALS,@F@@@@. RB )@@G@@ FOLLOWED BY GRAND TOTALS @[@@@@. @H@@@@. ALL RC )@@G@@NECESSARY SUBTOTALS HAVE NOW BEEN PRINTED, AND THE GRAND TOTALS ARE RD )@@G@@@H@@@@. UP TO DATE. IF THIS FILE CAUSED A BREAK BY VIRTUE OF HAVING A DRE )@@G@@IFFERENT @G@@@@. KEY FIELD VALUE THAN THAT OF THE PREVIOUS FILE, WE MRF )@@G@@UST STASH AWAY THE@F@@@@. CONTENTS OF THOSE FIELDS (FOR THIS FILE) FOR FRG )@@G@@UTURE COMPARISONS.@[@@@@. @E@@@@ TZ BRKCNT RH )@@G@@ ANY BREAKS SPECIFIED? @F@@@@ TNZ INVALU YES,RI )@@G@@ NEED TO SET VALUES? @B@@@@ J PR020 NOPERJ )@@G@@@E@@@@ LX X4,BRKCNT YES, GET BREAK COUNT @G@@@@RK )@@G@@ LX X5,BRKPNT GET BREAK TABLE POINTER AND INDEX RL )@@G@@@E@@@@ ANX,U X4,1 SUBTRACT 1 FOR JGD @D@@@@RM )@@G@@PR0090 EX BRKLOAD,X5 GET THE VALUE @E@@@@ TPRN )@@G@@ BRKLOAD,X5 WAS THAT A 'DL A0' ? @D@@@@ J RO )@@G@@ PR0092 YES, DO 'DS A0' @F@@@@ TNZ BRKSHFT,X5RP )@@G@@ NO, ANY SHIFTING TO BE DONE?@C@@@@ J PR0091 RQ )@@G@@ NO, GO ON @E@@@@ LA,H1 A1,BRKSHFT,X5 GET LEFT SRR )@@G@@HIFT COUNT @C@@@@ LSSL A0,0,A1 SHIFT LEFT@E@@@@RS )@@G@@ LA,H2 A1,BRKSHFT,X5 GET RIGHT SHIFT COUNT @D@@@@ RT )@@G@@ SSL A0,0,A1 SHIFT RIGHT @G@@@@PR0091 SA RU )@@G@@ A0,BRKVAL,*X5 STORE NEW VALUE FOR BREAK TEST @C@@@@ J RV )@@G@@ PR0093 GO ON @F@@@@PR0092 DS A0,BRKVAL,RW )@@G@@*X5 STORE NEW DOUBLE-WAORD VALUE@D@@@@PR0093 JGD X4,PR0090 RX )@@G@@ DO IT AGAIN @[@@@@. @H@@@@. OUR NEW FILE HAS CAUSED A BRRY )@@G@@EAK, SO LET'S PRINT A NEW HEADING IF REQUESTED @[@@@@. @H@@@@ RZ )@@G@@ TZ,H1 INVALU HAVE WE ALREADY PRINTED SOME FILES? SA )@@G@@@H@@@@ J PR0095 NO, WE JUST DID A HDG, SO SKSB )@@G@@IP THIS ONE @D@@@@ LA A0,BRKCNT GET BREAK COUNT SC )@@G@@@G@@@@ ANA A0,BRKSTOP WE WANT THE HIGHEST LEVEL ONSD )@@G@@E @H@@@@ MSI,H1 A0,BRKPNT SO GET SET TO SKIP LOWSE )@@G@@ER LEVEL ENTRIES @E@@@@ LX X5,BRKPNT POINT TO BSF )@@G@@REAK TABLE @G@@@@ AX X5,A0 ADJUST TO HIGHESSG )@@G@@T LEVEL BREAK @F@@@@ TNZ,S2 BRKSPEC,X5 IS A NEW HSH )@@G@@EADING DESIRED? @C@@@@ J PR0095 NO, GO ON SI )@@G@@@E@@@@ TNZ HPT H-OPTION SET OR... @D@@@@SJ )@@G@@ TZ JPT J-OPTION SET? @D@@@@ J SK )@@G@@ PR0095 YES, NO HEADING @E@@@@ L$OAD HDGSSL )@@G@@EG,HDG200,1 PRINT NEW HEADINGS @I@@@@PR0095* . SM )@@G@@ HDGSEG R @F@@@@ SZSN )@@G@@ INVALU CLEAR INITIAL VALUE FLAG @ @@@@ OFSO )@@G@@F BRKOK @[@@@@. @D@@@@. CHECK FOR J-OPTION: IF SET, DON'TSP )@@G@@ PRINT ANYTHING @[@@@@. @D@@@@PR020 TZ JPT SQ )@@G@@ J-OPTION SET? @H@@@@ J MFD300 YES - DON'SR )@@G@@T PRINT, JUST GET NEXT FILE @C@@@@PR030 E$DIT EDPACK SS )@@G@@ OPEN EDIT @F@@@@ TNZ ARB ARBITRARY DEVICEST )@@G@@ FILE, OR @D@@@@ TZ TAP CAT'D TAPE FILE?SU )@@G@@@F@@@@ J PR040 YES, SKIP MAX GRAN STUFF SV )@@G@@@C@@@@ E$DECF 4,MAXGRAN MAX GRAN @F@@@@ LASW )@@G@@,U A0,'T' ASSUME TRACK GRANULARITY @D@@@@ TPSX )@@G@@ PCHAR POSITION GRAN? @D@@@@ LA,U A0,'SY )@@G@@P' YES, SAY SO @^@@@@ E$CHAR . @[@@@@. SZ )@@G@@@A@@@@. EDIT CATALOGUE OPTION LETTERS @[@@@@. @D@@@@PR040 LATA )@@G@@ A1,INHIBITS GET OPTION BITS @G@@@@ LA A2,(TB )@@G@@1,0) SET TO STORE OPTIONS IN PRINT LINE@E@@@@ CHOCK TC )@@G@@ 'P',PBIT CHECK FOR PUBLIC FILE @C@@@@ CHECK 'R',TD )@@G@@RONLY READ-ONLY?@ @@@@ ON GVHUSH>1 @E@@@@ TE )@@G@@ TNZ PRIVLGD IS USER PRIVILEGED? @G@@@@ J TF )@@G@@ PR050 NO, SKIP PRINT OF G/V OPTIONS @ @@@@ TG )@@G@@ OFF GVHUSH>1 @C@@@@ CHECK 'V',VBIT V-OPTH )@@G@@TION? @C@@@@ CHECK 'G',MI0GBIT G-OPTION? @D@@@@PR050 TI )@@G@@ CHECK 'W',WONLY WRITE-ONLY? @C@@@@. EDIT A LETTER INTJ )@@G@@DICATING FILE @ASG STATE: @C@@@@. BLANK - FILE NOT CURRENTLY ASSIGNETK )@@G@@D TO ANYONE @C@@@@. A - FILE ASSIGNED TO AT LEAST ONE RUN @C@@@@TL )@@G@@. X - FILE EXCLUSIVELY ASSIGNED TO SOME RUN @E@@@@. C - (SINGLE-TM )@@G@@FILE MODE ONLY) FILE @ASG,C BY THIS RUN @E@@@@. U - (SINGLE-FILE MTN )@@G@@ODE ONLY) FILE @ASG,U BY THIS RUN @G@@@@. T - (SINGLE-FILE MODE ONTO )@@G@@LY) TEMPORARY FILE ASSIGNED TO THIS RUN @[@@@@. @D@@@@ LATP )@@G@@ A0,CURASGCNT GET ASG COUNT @G@@@@ TZ SFASTQ )@@G@@G ASSIGNED FOR SINGLE-FILE DREAD$ ? @E@@@@ AN,U TR )@@G@@ A0,1 YES, DON'T COUNT IT @E@@@@ JZ A0,PTS )@@G@@R060 ASSIGNED TO ANYONE? @E@@@@ LA,U A0,'A' TT )@@G@@ YES, GET SET FOR 'A' @F@@@@ TEP,U A1,XUSE TU )@@G@@ IS IT EXCLUSIVELY ASG'D? @E@@@@ LA,U A0,'X' TV )@@G@@ YES, CHANGE TO 'X' @E@@@@ TZ UCOPT @ASGTW )@@G@@,U OR @ASG,C? @D@@@@ LA A0,UCOPT YES, GET LTX )@@G@@ETTER @D@@@@ TZ TEMP TEMPORARY FILE? @D@@@@TY )@@G@@ LA,U A0,'T' YES, GET A 'T' @E@@@@ EXTZ )@@G@@ ST,*A2 STORE PROPER CHAR @[@@@@. @D@@@@. IF TUA )@@G@@APE FILE, EDIT MODE BITS AND EQUIPMENT TYPE @[@@@@. @D@@@@PR060 UB )@@G@@ TNZ TAP CAT'D TAPE FILE?@E@@@@ J UC )@@G@@ PR110 NO, GET F-EQUIP TYPE @D@@@@ LA A1,TUD )@@G@@APEMODES GET TAPE MODES @E@@@@ LA,U A0,'H' UE )@@G@@ ASSUME HIGH DENSITY @D@@@@ TOP,U A1,020 LOW UF )@@G@@DENSITY? @ @@@@ TOP,U A1,010 @C@@@@ J UG )@@G@@ PR061 NO - JUMP @D@@@@ LA,U A0,'L' UH )@@G@@ YES, SET FOR 'L'@C@@@@ J PR063 GO ON UI )@@G@@@D@@@@PR061 TEP,U A1,010 MEDIUM DENSITY? @C@@@@ UJ )@@G@@ J PR062 NO - JUMP @D@@@@ LA,U A0,'UK )@@G@@M' YES, SET FOR 'M'@C@@@@ J PR063 UL )@@G@@ GO ON @E@@@@PR062 TZ TMSAMODES MSA TAPE EQUIPMEUM )@@G@@NT? @E@@@@ TP TMSAMODES YES - 1600 DENSITY? UN )@@G@@@C@@@@ J PR063 NO - SKIP @[@@@@. @F@@@@UO )@@G@@. BIT 2**35 OF MI0+21 IS USED TO INDICATE 800-FPI MODE FOR DUAL- @E@@@@UP )@@G@@. DENSITY 9-TRACK MSA TAPE DRIVES. IT IS SET FOR 800, CLEAR@E@@@@. FOR UQ )@@G@@1600. THIS IS THE ONLY WAY TO CHECK FOR 'V' OPTION. @E@@@@. HOWEVER, TUR )@@G@@HIS BIT IS CLEAR FOR 7-TRACK MSA DRIVES, SO WE @F@@@@. MUST CHECK FOR 9US )@@G@@-TRACK BEFORE ADDING THE 'V'. I DON'T LIKE @D@@@@. THIS, SINCE IT RUT )@@G@@ELIES ON THE 'OLD EQUIPMENT CODE'. @[@@@@. @E@@@@ LA UU )@@G@@ A3,MI0OLDEQP GET OLD EQUIPMENT CODE@E@@@@ TG,U A3,0UV )@@G@@13 9-TRACK MSA TAPE? @ @@@@ TG,U A3,016 UW )@@G@@@D@@@@ J PR063 NO, KEEP THE 'H'@D@@@@ UX )@@G@@ LA,U A0,'V' SET FOR 'V' @E@@@@PR063 EX UY )@@G@@ ST,*A2 STORE DENSITY LETTER @E@@@@ LA,U A0,'UZ )@@G@@O' ASSUME ODD PARITY @D@@@@ TEP,U A1,040 VA )@@G@@ EVEN PARITY? @B@@@@ LA,U A0,'E' YES VB )@@G@@@E@@@@ EX ST,*A2 STORE CORRECT LETTER @F@@@@VC )@@G@@ LA,U A0,'I' SET FOR SOFTWARE TRANSLATE @F@@@@VD )@@G@@ TEP,U A1,04 SOFTWARE TRANSLATE SET? @E@@@@VE )@@G@@ EX ST,*A2 YES, STORE I-OPTION @E@@@@ VF )@@G@@ TNZ TMSAMODES MSA TAPE EQUIPMENT? @D@@@@ J VG )@@G@@ PR100 NO, CONTINUE @D@@@@ LA A1,TVH )@@G@@MSAMODES GET MODE BITS @D@@@@ CHECK 'D',0200 VI )@@G@@ DUAL DENSITY? @D@@@@PR100 LA A1,TAPEJOPT GET OTHER VJ )@@G@@BITS @C@@@@ CHECK 'J',040 J-OPTION? @ @@@@ VK )@@G@@ ON OLDMFD @E@@@@ TZ MFD$F NEW VL )@@G@@FORMAT MFD FILE? @E@@@@ J PR150 YES, USE AVM )@@G@@SG MNEMONIC @E@@@@ LA A0,MI0OLDEQP GET EQUIPMENT COVN )@@G@@DE @E@@@@ LA A1,TAPEQP-1,A0 GET TAPE EQUIP TYPE VO )@@G@@@ @@@@ OFF OLDMFD @G@@@@ J PR150 VP )@@G@@ STORE EQUIP TYPE IN PRINT IMAGE @[@@@@. @B@@@@. NOT A TAPEVQ )@@G@@ FILE - EDIT EQUIPMENT TYPE @[@@@@. @]@@@@PR110 . @ @@@@ VR )@@G@@ ON OLDMFD @E@@@@ TZ MFD$F NEW VS )@@G@@FORMAT MFD FILE? @G@@@@ J PR145 YES, USE AVT )@@G@@SG MNEMONIC OR PACKID @E@@@@ LA A0,MI0OLDEQP GET VU )@@G@@EQUIPMENT CODE @D@@@@ TLE,U A0,040 MASS STORAVV )@@G@@GE? @D@@@@ J PR120 YES, HANDLE IT @F@@@@VW )@@G@@ LA A1,OTHEQP-040,A0 NO, SOME OTHER DEVICE TYPE @C@@@@VX )@@G@@ J PR150 EDIT IT @[@@@@. @G@@@@. MASSVY )@@G@@ STORAGE FILE - TAKE SUBCODE INTO ACCOUNT. IF REMOVABLE DISC, @ @@@@VZ )@@G@@. EDIT THE PACKID INSTEAD. @[@@@@. @G@@@@PR120 LA A1,EWA )@@G@@QUCD-030,A0 GET NORMAL MASS STORAGE EQUIP TYPE@E@@@@ TE,U WB )@@G@@ A0,030 F2/3/60 OR F14/24 ? @ @@@@ TNE,U A0,0WC )@@G@@35 @E@@@@ J $+2 YES, CHECK FOR SUBCODEWD )@@G@@@E@@@@ J PR140 NO, NORMAL EQUIP TYPE @D@@@@WE )@@G@@PR130 TNZ OLDSUBCOD SUBCODE PRESENT?@B@@@@ J WF )@@G@@ PR140 NO @D@@@@ L,U A2,SUB35-1 WG )@@G@@ ASSUME F14/24 @D@@@@ TNE,U A0,030 REALLY F2/WH )@@G@@3/60? @B@@@@ L,U A2,SUB30-1 YES @F@@@@ A WI )@@G@@ A2,OLDSUBCOD ADD SUBCODE TO GET INDEX @D@@@@ L WJ )@@G@@ A1,0,A2 LOAD SUBTYPE @E@@@@PR140 AND A1,(WK )@@G@@0757777777777) CHANGE 'F' TO 'D' @D@@@@ L,S1 A0,PCHAR WL )@@G@@ GET PCHAR FLAGS @G@@@@ TEP,U A0,010 BIT WM )@@G@@33 SET (WORD ADDRESSABLE)? @D@@@@ L A1,A2 WN )@@G@@ GET 'D' VERSION @ @@@@ OFF OLDMFD @E@@@@PR145 JZWO )@@G@@ RDISC,PR150 IF FIXED, SKIP PACKID @G@@@@ TNZ WP )@@G@@ NBRPACKS SHOULD HAVE A NONZERO PACK COUNT @G@@@@ J WQ )@@G@@ PR150 BUT IF IT DOESN'T, SKIP PACKID @E@@@@ WR )@@G@@ LA A1,PACKENTRY PICK UP FIRST PACK ID @D@@@@ J WS )@@G@@ PR151 EDIT PACKID @[@@@@. @B@@@@. STORE EQUIWT )@@G@@PMENT TYPE IN PRINT IMAGE @[@@@@. @]@@@@PR150 . @ @@@@ WU )@@G@@ ON OLDMFD @E@@@@ TZ MFD$F NEW WV )@@G@@FORMAT MFD FILE? @ @@@@ OFF OLDMFD @G@@@@ LAWW )@@G@@ A1,MNEMONIC YES, GRAB THE ASSIGN MNEMONIC @F@@@@. WX )@@G@@ NO, USE EQUIP CODE IN A1 @A@@@@PR151 WY )@@G@@ LA A2,(' ') @ @@@@ DSC A1,30 @D@@@@WZ )@@G@@ SA,S6 A1,LINOUT+1 STORE EQUIP TYPE@A@@@@ SAXA )@@G@@ A2,LINOUT+2 @E@@@@ E$COL 17 LEAVXB )@@G@@E ROOM FOR PACKID @D@@@@. EDIT TOTAL ASSIGN COUNT AND DATE LAST REFERENCXC )@@G@@ED @[@@@@. @C@@@@ E$DECF 4,TOTASGCNT ASG COUNT XD )@@G@@@^@@@@ E$COL 22 @D@@@@ E$DAY1 DATLSTASG XE )@@G@@ DATE LAST REF'D @D@@@@ TZ TAP CAT'D TAPEXF )@@G@@ FILE?@F@@@@ J PR170 YES, PICK UP REEL NUMBXG )@@G@@ER @E@@@@ TZ ARB ARBITRARY DEVICE? XH )@@G@@@F@@@@ J PR180 YES, GO ON TO QUALIFIER XI )@@G@@@[@@@@. @C@@@@. EDIT HIGHEST/TOTAL TRACKS (*UNL* IF UNLOADED) @[@@@@XJ )@@G@@. @^@@@@ E$COL 36 @E@@@@ TN DESCFLAGS XK )@@G@@ IS FILE UNLOADED? @B@@@@ J PR160 XL )@@G@@ NO @ @@@@ ON DSGUNL @D@@@@ TZ PRIVXM )@@G@@LGD PRIVILEGED? @C@@@@ J PR155 XN )@@G@@ YES, JUMP @E@@@@ E$DECF 4,BKUPTEXT SECURE BACKUP BLXO )@@G@@OCKS @D@@@@ E$COL 31 BACK UP A BIT @E@@@@XP )@@G@@ LA,U A0,0 ZERO HIGH REFERENCE @D@@@@ XQ )@@G@@ E$DECF 4 PUT IT IN IMAGE @D@@@@ J XR )@@G@@ PR180 SKIP NEXT PART @]@@@@PR155 . @ @@@@ OFXS )@@G@@F DSGUNL @D@@@@ E$FD1 ('*UNL* ') YES, PRINTXT )@@G@@ *UNL*@D@@@@ J PR180 GO GET QUALIFIER@E@@@@XU )@@G@@PR160 E$DECF 4,SAVESIZE TOTAL LOADED TRACKS @F@@@@ XV )@@G@@ E$COL 31 BACK UP FOR HIGHEST TRACK @F@@@@ XW )@@G@@ E$DECF 4,HITRACK HIGHEST TRACK REFERENCED @F@@@@ XX )@@G@@ J PR180 GET QUALIFIER, FILENAME, ETC@[@@@@. XY )@@G@@@C@@@@. EDIT REEL NUMBEER FOR CATALOGUED TAPE FILE @[@@@@. @C@@@@XZ )@@G@@PR170 TNZ NBRREELS ANY REELS?@D@@@@ J YA )@@G@@ PR180 NO, SKIP IT @D@@@@ E$COL 31 YB )@@G@@ YES, MOVE OVER @E@@@@ E$COPY 6,TAPEREEL1 INSEYC )@@G@@RT REEL NUMBER @E@@@@. EDIT Q*F(C) PRECEDED BY A CHAR DENOTING DISABLYD )@@G@@ED STATUS @[@@@@. @^@@@@PR180 E$COL 42 @E@@@@ LAYE )@@G@@,U A0,' ' ASSUME NOT DISABLED @F@@@@ TN YF )@@G@@ DISABLES IS FILE DISABLED IN ANY WAY?@E@@@@ J YG )@@G@@ PR190 NO, EDIT A SPACE HERE @E@@@@ LA,S1 A1,DYH )@@G@@ISABLES YES, GET DISABLE-BITS @F@@@@ LA,U A0,WRNCHR YI )@@G@@ ASSUME WARNING-ONLY DISABLED@D@@@@ TEP,U A1,DISBTB YJ )@@G@@ BAD BACKUP TAPE?@E@@@@ LA,U A0,BBTCHR YES,YK )@@G@@ GET BAD-TAPE CHAR@F@@@@ TZ BMI1 BAD MAIN IYL )@@G@@TEM SECTOR 1? @E@@@@ LA,U A0,BMICHR YES, GET BYM )@@G@@AD-MI1 CHAR @E@@@@ TEP,U A1,DISBTH HARDWARE-DISABLEYN )@@G@@D? @D@@@@ LA,U A0,HDWCHR YES, GET CHAR @E@@@@YO )@@G@@PR190 E$CHAR . STORE DISABLE-CHAR @[@@@@. YP )@@G@@@E@@@@. EXEC FILENAMES MAY HAVE @ SIGNS AND SPACES IMBEDDED WITHIN@G@@@@YQ )@@G@@. THE QUALIFIER AND FILENAME. MUST COUNT CHARACTERS, AND USE ECOPY$. YR )@@G@@@[@@@@. @C@@@@ DL A2,QUAL GET QUAL @G@@@@YS )@@G@@ LMJ X11,TRAIL COUNT CHARS - TRAILING BLANKS YT )@@G@@@ @@@@ LA,U A0,QUAL @F@@@@ LMJ X11,ECOPY$YU )@@G@@ EDIT CORRECT NUMBER OF CHAR @C@@@@ E$CHAR '*' YV )@@G@@ ASTERISK @D@@@@ DL A2,FILE GET FILENAYW )@@G@@ME @F@@@@ LMJ X11,TRAIL COUNT CHARS - TRALING YX )@@G@@BLANKS@ @@@@ LA,U A0,FILE @F@@@@ LMJ X11,YY )@@G@@ECOPY$ EDIT CORRECT NUMBER OF CHARS@C@@@@ E$CHAR '(' YZ )@@G@@ OPEN PAREN@C@@@@ E$DECV FCYCLE F-CYZA )@@G@@CLE @D@@@@ E$CHAR ')' CLOSE PAREN @H@@@@ZB )@@G@@ ON WOPTOK **********************************ZC )@@G@@**** @[@@@@. @E@@@@. CHECK FOR W-OPTION: IF SET, WRITE Q*F(C) TO SZD )@@G@@DF FILE @[@@@@. @D@@@@ TZ WPT W-OPZE )@@G@@TION SET? @G@@@@ J SDF100 YES, JUMP TO SDFZF )@@G@@ OUTPUT ROUTINE @]@@@@PR300* . @H@@@@ OFF WOPTOK ZG )@@G@@ ************************************** @H@@@@ JZ ZH )@@G@@ LONGLIST,PR460 IF SHORT LIST, SKIP ACCT, PROJ, ETC. @[@@@@. ZI )@@G@@@F@@@@. LONG LISTING - CONTINUE EDITING: ADD ACCOUNT, PROJ, DATE CAT'D ZJ )@@G@@@[@@@@. @D@@@@ E$COL 72 SET FOR ACCOUNT ZK )@@G@@@E@@@@ E$COPY 12,ACCOUNT EDIT ACCOUNT NUMBER @^@@@@ZL )@@G@@ E$COL 85 @C@@@@ E$COPY 12,PROJ PROJZM )@@G@@ECT-ID@^@@@@ E$COL 98 @D@@@@ TZ TEMP ZN )@@G@@ TEMPORARY FILE? @D@@@@ J PR310 YES,ZO )@@G@@ NO CAT DATE@F@@@@ E$DAY1 DATCATLGD NO, EDIT CATALOGZP )@@G@@UE DATE @C@@@@ J PR320 CONTINUE @E@@@@ZQ )@@G@@PR310 E$COPY 6,('') SAY IT'S TEMPORARY @]@@@@PR320 ZR )@@G@@ . @[@@@@. @A@@@@. EDIT SECURE BACKUP INFORMATION @[@@@@. ZS )@@G@@@G@@@@ JNZ BACKEDUP,PR430 IF THERE'S A BACKUP, GO GET ZT )@@G@@IT @F@@@@ TNZ BMI1 BAD MAIN ITEM SECTOR 1ZU )@@G@@? @D@@@@ J PR420 NO, CONTINUE @D@@@@ZV )@@G@@ DL A0,('***BAD MI SE') . GET MSG @E@@@@ DSZW )@@G@@ A0,LINOUT+18 STORE IN PRINT LINE @D@@@@ LA ZX )@@G@@ A0,('C 1***') GET END OF MSG @E@@@@ SA A0,LINOUT+ZY )@@G@@20 STORE IN PRINT LINE @F@@@@ J PR480 ZZ )@@G@@ CHECK FOR LAPSES AND PRINT @[@@@@. @]@@@@. NO BACKUP @[@@@@. AA )@@G@@@C@@@@PR420 LA A0,('*NONE*') NO BACKUP @A@@@@ LAAB )@@G@@ A1,(' ') @ @@@@ DSC A0,30 @A@@@@ AC )@@G@@ SA,S6 A0,LINOUT+17 @D@@@@ SA A1,LINOUT+18 AD )@@G@@ STORE IN IMAGE @E@@@@ LA,U A0,NOBCHR GET NO-BACAE )@@G@@KUP CHAR @E@@@@ SA,S6 A0,LINOUT+6 STORE IN PRINT LAF )@@G@@INE @F@@@@ J PR480 CHECK FOR LAPSES AND PAG )@@G@@RINT @[@@@@. @D@@@@. MAKE SURE BACKUP EXISTS BEFORE TRYING TO EDIT AH )@@G@@IT @[@@@@. @F@@@@PR430 TNZ BKUPREEL1 IS THERE RAI )@@G@@EALLY A BACKUP? @B@@@@ J PR420 NO @[@@@@AJ )@@G@@. @H@@@@. EDIT BACKUP REEL NUMBER, FILE POSITION, BLOCK COUNT, AND CAK )@@G@@REATION TIME/DATE @[@@@@. @^@@@@ E$SKIP 1 @ @@@@ AL )@@G@@ ON PRVSEC @D@@@@ TNZ PRIVLGD PRIVAM )@@G@@ILEGED? @B@@@@ J PR440 NOPE@ @@@@ AN )@@G@@ OFF PRVSEC @D@@@@ E$COPY 6,BKUPREEL1 BACKAO )@@G@@UP REEL @ @@@@ ON PRVSEC @D@@@@ J AP )@@G@@ PR450 SKIP THE SLASHES@F@@@@PR440 E$COPY 6,('//////AQ )@@G@@') SLASH OUT REEL NUMBER @]@@@@PR450 . @ @@@@ OFAR )@@G@@F PRVSEC @^@@@@ E$COL 114 @D@@@@ E$DECF AS )@@G@@ 3,BKUPFILE BACKUP POSITION @^@@@@ E$COL 117 @C@@@@AT )@@G@@ E$DECF 4,BKUPTEXT SEC TRACKS@^@@@@ ON AU )@@G@@ DCFZ@^@@@@ E$SKIP 1 @C@@@@ E$DCFZ 2,BKUPTIMEAV )@@G@@,,S1 EDIT MONTH@D@@@@ E$DCFZ 2,BKUPTIME,,S2 EDIT BACKUAW )@@G@@P DATE@^@@@@ OFF DCFZ@ @@@@ ON DCFZ<1 AX )@@G@@@^@@@@ LA,U A0,0@F@@@@ LA,S1 A1,BKUPTIME AY )@@G@@ MONTH TAPE WRITTEN (TDATE$) @E@@@@ DI,U A0,10 AZ )@@G@@ GET FD DECIMAL NUMBER @ @@@@ AA,U A0,'0' @D@@@@ BA )@@G@@ SA,S3 A0,LINOUT+20 FOR OUTPUT IMAGE@ @@@@ AA,U BB )@@G@@ A1,'0' @A@@@@ SA,S4 A1,LINOUT+20 @F@@@@ LABC )@@G@@,S2 A1,BKUPTIME DAY TAPE WRITTEN (TDATE$) @^@@@@ LABD )@@G@@,U A0,0@E@@@@ DI,U A0,10 GET FD DECIMAL NBE )@@G@@UMBER @ @@@@ AA,U A0,'0' @D@@@@ SA,S5 A0,LBF )@@G@@INOUT+20 FOR OUTPUT IMAGE@ @@@@ AA,U A1,'0' @A@@@@BG )@@G@@ SA,S6 A1,LINOUT+20 @ @@@@ OFF DCFZ<1 BH )@@G@@@^@@@@ E$COL 127 @F@@@@ E$TIME BKUPTIME BI )@@G@@ EDIT IN TIME TAPE WRITTEN @G@@@@. ADD CHAR TO PRINT LINE INDICATING BJ )@@G@@WHETHER BACKUP IS CURRENT OR NOT @[@@@@. @H@@@@PR460 LA,U BK )@@G@@ A0,NOBCHR ASSUME NO BACKUP - GET NO-BACKUP CHAR @E@@@@ BL )@@G@@ JZ BACKEDUP,PR470 IF NO BACKUP, SAY SO @C@@@@ TPBM )@@G@@ DESCFLAGS UNLOADED? @F@@@@ J PR480 BN )@@G@@ YES, BACKUP MUST BE CURRENT @F@@@@ LA,U A0,BNCCHR BO )@@G@@ GET BACKUP NOT CURRENT CHAR @G@@@@ TZ TIM1STWRT BP )@@G@@ UPDATED SINCE BACKUP CREATED? @E@@@@PR470 SA,S6 A0,LBQ )@@G@@INOUT+6 STORE BACKUP STATUS @[@@@@. @ @@@@. CHECK FOR LAPSE BR )@@G@@ENTRIES @[@@@@. @E@@@@PR480 LA A1,DESCFLAGS GET BS )@@G@@DESCRIPTOR FLAGS @D@@@@ LA,U A0,LPSCHR GET LAPSE BT )@@G@@CHAR @E@@@@ TEP,U A1,LPSBIT BIT 32 (LAPSE) SET? BU )@@G@@@F@@@@ SA,S6 A0,LINOUT+6 YES, ADD CHAR TO OUTPUT LINEBV )@@G@@@E@@@@ LA,U A0,DELCHR GET TO-BE-DROPPED CHAR@F@@@@BW )@@G@@ TEP,U A1,DROPBIT BIT 24 SET (TO BE DROPPED)? @F@@@@BX )@@G@@ SA,S6 A0,LINOUT+6 YES, STORE IN OUTPUT IMAGE @[@@@@BY )@@G@@. @C@@@@. THE TIME HAS COME TO PRINT THE INFORMATION @[@@@@. BZ )@@G@@@C@@@@ P$RINT POUT PRINT LINE@F@@@@ SZCA )@@G@@ LINE2 CLEAR NRP,NTP,NLPS,NSB FLAGS@ @@@@ ONCB )@@G@@ EXTRA @[@@@@. @G@@@@. DETERMINE WHETHER OR NOT ADDITIONACC )@@G@@L PRINT LINES ARE NEEDED TO EDIT @#@@@@. MORE STUFF. @[@@@@. CD )@@G@@@C@@@@ TNZ TAP TAPE? @B@@@@ J CE )@@G@@ PR500 NO @[@@@@. @E@@@@. TAPE FILE: SECOND LINCF )@@G@@E NEEDED IF >1 REEL IN DIRECTORY @[@@@@. @G@@@@ LA CG )@@G@@ A0,NBRREELS GET NUMBER OF REELS CATALOGUED @D@@@@ JZCH )@@G@@ A0,PR520 SKIP IF NONE @C@@@@ AN,U A0,1CI )@@G@@ LESS ONE @G@@@@ SA A0,NTP SET CJ )@@G@@NUMBER OF REELS LEFT TO DO @C@@@@ J PR520 CK )@@G@@ CONTINUE @E@@@@PR500 TZ BMI1 BAD MAIN ITEM SECL )@@G@@C 1? @D@@@@ J PR520 YES, SKIP AHEAD @E@@@@CM )@@G@@ JZ RDISC,PR510 REM DISC? NO,PR510 @[@@@@. CN )@@G@@@F@@@@. REMOVABLE DISC FILE: SECOND LINE NEEDED IF >1 PACK IN DIRECTORYCO )@@G@@@[@@@@. @F@@@@ LA A0,NBRPACKS YES, GET NUMBER CP )@@G@@OF PACKS @D@@@@ JZ A0,PR510 IF NONE, SKIP CQ )@@G@@@G@@@@ AN,U A0,1 BUT ONE HAS ALREADY BEEN DONCR )@@G@@E @F@@@@ SA A0,NRP STORE REMAINING PACK CCS )@@G@@OUNT @[@@@@. @G@@@@. LAPSE ENTRIES AND ADDITIONAL BACKUP TAPES REQUCT )@@G@@IRE SECOND LINE, BUT @B@@@@. DON'T DO IT IF DEMAND (SHORT LISTING). CU )@@G@@@[@@@@. @G@@@@PR510 JZ LONGLIST,PR520 NO BACKUPS OR LACV )@@G@@PSES IF SHORT @E@@@@ JZ BACKEDUP,PR515 SKIP IF NOCW )@@G@@ BACKUP @ @@@@ ON PRVSEC @E@@@@ TNZ CX )@@G@@ PRIVLGD IS USER PRIVILEGED? @F@@@@ J PR51CY )@@G@@5 NO, HIDE BACKUP REEL #'S @ @@@@ OFF PRVSCZ )@@G@@EC @F@@@@ LA A0,BKUPREELS SECURE BACKUP REEL COUDA )@@G@@NT @D@@@@ JZ A0,PR520 IF NONE, SKIP @C@@@@DB )@@G@@ AN,U A0,1 LESS ONE @F@@@@ SA DC )@@G@@ A0,NSB NUMBER OF BACKUPS LEFT TO DO@E@@@@PR515 LA DD )@@G@@ A0,DESCFLAGS GET DESCRIPTOR BITS @D@@@@ TOP,U A0,LDE )@@G@@PSBIT ANY LAPSES? @C@@@@ J PR520 DF )@@G@@ NO, GO ON @F@@@@ LA A0,NBRLAPSES GET NUMBEER OF LDG )@@G@@APSE ENTRIES@D@@@@ SA A0,NLPS AND STORE IT DH )@@G@@@[@@@@. @H@@@@. IF ADDITIONAL LINES ARE NECESSARY FOR ANY OF THE ABODI )@@G@@VE REASONS, OVERLAY @G@@@@. THIS SEGMENT WITH 'PR2SG' AND JUMP TO ITDJ )@@G@@. ALSO GO TO PR2SG IF IN @F@@@@. SINGLE-FILE MODE, SINCE THE FITEM$DK )@@G@@ GIVES ADDITIONAL INFORMATION @ @@@@. ABOUT SUCH THINGS AS TAPES. @[@@@@DL )@@G@@. @C@@@@PR520 TNZ TAP TAPE FILE?@C@@@@ DM )@@G@@ J PR525 NO, GO ON @F@@@@ TZ TMSADN )@@G@@MODES YES - MSA TAPE EQUIPMENT? @F@@@@ J PR53DO )@@G@@0 YES, FORCE LOAD OF PRINT2 @G@@@@PR525 TNZ LINEDP )@@G@@2 ANYTHING TO PRINT ON 2ND LINE? @G@@@@ TZ DQ )@@G@@ SFITEM FITEM$ DONE FOR SINGLE-FILE MODE? @E@@@@ J DR )@@G@@ $+2 YES, PRINT MORE STUFF @B@@@@ J DS )@@G@@ PR600 NOPE@H@@@@PR530 L$OAD PR2SG,PMORE,1 JUMPDT )@@G@@ TO ADDITIONAL-LINES PRINT ROUTINE @ @@@@ OFF EXTRA DU )@@G@@@[@@@@. @G@@@@. IF MASS STORAGE EQUIPMENT TYPE WAS GIVEN IN SPEC3, ADV )@@G@@N ADDITIONAL LINE @G@@@@. IS PRINTED GIVING INITIAL RESERVE AND BREAKDOWDW )@@G@@N OF GRANULE COUNTS BY @#@@@@. EQUIPMENT TYPE. @[@@@@. @E@@@@PR600*DX )@@G@@ TNZ TAP SKIP IF FILE IS TAPE @F@@@@ TNDY )@@G@@Z EPT FOR MASS STORAGE, PRIN 2ND @G@@@@. DZ )@@G@@ LINE WITH INITIAL RESERVE AND @F@@@@. EA )@@G@@ GRANULE COUNTS IF REQUESTED @D@@@@ EB )@@G@@ J PR900 CHECK FOR SNAP$ @C@@@@ E$DIT EC )@@G@@ EDPACK OPEN EDIT @^@@@@ E$COL 5 @E@@@@ ED )@@G@@ E$COPY 12,('INIT. RES.: ') . INITIAL RESERVE @D@@@@ E$EE )@@G@@DECV INITRESV EDIT RESERVE @D@@@@ LA,U A0,'EF )@@G@@T' ASSUME TRACKS @C@@@@ TP PCHAR EG )@@G@@ POSITION? @B@@@@ LA,U A0,'P' YES @F@@@@ EH )@@G@@ E$CHAR . EDIT GRANULARITY INDICATOR @D@@@@ EI )@@G@@ TP DESCFLAGS LOADED FILE? @H@@@@ TZ EJ )@@G@@ SAVESIZE OR UNLOADED WITH GRANS LYING AROUND? @G@@@@ EK )@@G@@ J $+2 YES, BETTER PRINT THOSE GRANULES @E@@@@EL )@@G@@ J PR640 NO, NO GRANULE COUNT @[@@@@. EM )@@G@@@^@@@@. EDIT GRANULE COUNTS @[@@@@. @B@@@@ E$COPY 12,(EN )@@G@@' GRANULES: ') . @G@@@@ LX X4,(1,1) INITIALIZEEO )@@G@@ FOR NO. OF EQUIP TYPES @F@@@@PR610 LA,U A1,GRANULES-1 POINEP )@@G@@T TO GRANULE ENTRIES @E@@@@ AA,U A1,,X4 BUMPEQ )@@G@@ TO PROPER GROUP @F@@@@ TNZ,H2 0,A1 ANY GRANS ER )@@G@@ON THIS EQUIP? @E@@@@ J PR630 NO, TRY THES )@@G@@E NEXT ONE @E@@@@ E$COLN . GET CURRENT COLUET )@@G@@MN @E@@@@ LA,U A1,122 ASSUME BATCH MODE EU )@@G@@@D@@@@ TNZ LONGLIST SHORT LISTING? @E@@@@ EV )@@G@@ LA,U A1,62 YES, SHORTER LINES @D@@@@ TLEW )@@G@@E A0,A1 REACHED MAX YET?@E@@@@ J PR62EX )@@G@@0 NO, CONTINUE EDITING @F@@@@ P$RINT POUT EY )@@G@@ YES, PRINT CURRENT LINE @E@@@@ E$DIT EDPACK EZ )@@G@@ AND START ANOTHER @E@@@@ E$COL 19 FA )@@G@@ START AT 19, AND GO ON@]@@@@PR620 . @ @@@@ ON OLDMFB )@@G@@FD @E@@@@ TZ MFD$F NEW FORMAT MFD FILE? FC )@@G@@@B@@@@ J PR621 YES @D@@@@ E$FD1 FD )@@G@@ EQUCD-1,X4 GET EQUIP CODE @C@@@@ J PR622 FE )@@G@@ GO ON @]@@@@PR621 . @ @@@@ OFF OLDMFD FF )@@G@@@D@@@@ E$COPY 5,('GROUP ') EDIT 'GROUP' @E@@@@ FG )@@G@@ E$DECV 0,X4,U EDIT GROUP NUMBER @D@@@@PR622 E$FH )@@G@@CHAR '=' EDIT = SIGN @F@@@@ LA,U A1,GFI )@@G@@RANULES-1 POINT TO GRANULE ENTRIES @E@@@@ AA,U A1,,FJ )@@G@@X4 BUMP TO PROPER GROUP @E@@@@ E$DECV 0,A1,H2 FK )@@G@@ EDIT NO. OF GRANULES @E@@@@ E$SKIP 2 FL )@@G@@ MOVE OVER FOR NEXT ONE@D@@@@PR630 TLEM,U X4,8 MOREFM )@@G@@ TYPES? @D@@@@ J PR610 YES, GO GET THEMFN )@@G@@@E@@@@PR640 P$RINT POUT NO, PRINT THE LINE @]@@@@FO )@@G@@/PR900 . @ @@@@ ON SNAPOK @[@@@@. @C@@@@. PERFFP )@@G@@ORM SNAP$ OF DIRECTORY ITEMS IF DESIRED @[@@@@. @D@@@@ LAFQ )@@G@@ A2,SNAP GET SNAP FLAG @F@@@@ JZ A2,PFR )@@G@@R990 SKIP IF NO SNAPS WANTED @F@@@@ L$OAD PR2SFS )@@G@@G,SN000,1 LOAD AND ENTER SNAP$ ROUTINE@G@@@@PR990* . FT )@@G@@ RETURN HERE FROM SNAP$ ROUTINE @ @@@@ OFF FU )@@G@@ SNAPOK @D@@@@ J MFD300 GET NEXT FILE FV )@@G@@@[@@@@. @F@@@@. TRAILING-BLANK COUNTING ROUTINE FOR QUAL AND FILENAMFW )@@G@@E EDITING @[@@@@. @E@@@@TRAIL L,U A1,12 ASSUFX )@@G@@ME 12-CHAR NAME @E@@@@ AND,U A3,077 ISOLATE LAFY )@@G@@ST CHAR @C@@@@ TE,U A4,5 BLANK? @G@@@@FZ )@@G@@ J 0,X11 NO, RETURN WITH CHAR COUNT IN A1 GA )@@G@@@D@@@@ AN,U A1,1 YES, 1 LESS CHAR@F@@@@ GB )@@G@@ DSL A2,6 GET NEXT CHAR INTO POSITION @F@@@@ GC )@@G@@ J TRAIL+1 CHECK UNTIL NON-BLANK FOUND @#@@@@ GD )@@G@@ END ___O, TRY THE NEXT ONE @E@@@@ E$COLN . GE )@@G@@ GET CURRENT COLU*[S@@@*SDFF*@^@@@@. @MFD PRINT2 ROUTINE @[@@@@GF )@@G@@. @G@@@@. CALLED BY PRINT ROUTINE IF ADDITIONAL LINES ARE NEEDED FORGG )@@G@@ MULTIPLE @E@@@@. TAPE REELS, DISC PACKS, AND/OR SECURE BACKUPS. ALSOGH )@@G@@ EDITS@F@@@@. LAPSE ENTRIES AND EXTRA INFORMATION PROVIDED BY FITEM$ WHEGI )@@G@@N @ @@@@. SINGLE-FILE MODE IS SET. @[@@@@. @^@@@@ AXGJ )@@G@@R$ . @G@@@@ CONFIG . DEFINE CONFIGURAGK )@@G@@TION PARAMETERS @D@@@@ EQUFS . DEFINE TAGGL )@@G@@S @#@@@@MORE 'MORE &'@^@@@@PACKS 'PACKS:&' @^@@@@REELS GM )@@G@@ 'REELS:&' @^@@@@BAKS 'BACKUPS:&' @B@@@@LAPS 'LAPSE FGN )@@G@@ROM & AT & TO & AT &' @E@@@@TAP1 'UNIT: & REELS: & INDEX: & CUGO )@@G@@RRENT: & NEXT: &'@B@@@@TAP2 'NOISE: &FILES EXTENDED: &' @ @@@@GP )@@G@@TAP3 'BLOCKS EXTENDED: &'@ @@@@MSA8 '8-BIT PACKED &' @ @@@@GQ )@@G@@MSA6 '6-BIT PACKED &' @ @@@@MSAQ 'QUARTER WORD &' @ @@@@GR )@@G@@DCONV 'DATA CONVERSION &'@ @@@@BCDEBC 'BCD/EBCDIC &' @ @@@@GS )@@G@@XS3ASC 'XS3/ASCII (MSA) &'@A@@@@XS3EBC 'XS3/EBCDIC (MSA) &' GT )@@G@@@ @@@@FDASC 'FD/ASCII (MSA) &' @ @@@@FDEBC 'FD/EBCDIC (MSA) &'GU )@@G@@@^@@@@HDWMOD 'HDW MODE: &' @^@@@@COL1 EQU 5 @^@@@@COL2 GV )@@G@@ EQU 19 @^@@@@COL3 EQU 124 @^@@@@COL4 EQU GW )@@G@@ 64 @E@@@@MI2PAKBIT EQU 040 DISC PACK ENTRIES GX )@@G@@@E@@@@MI2BAKBIT EQU 020 BACKUP REEL ENTRIES @D@@@@GY )@@G@@MI2LPSBIT EQU 010 LAPSE ENTRIES @#@@@@/$(1),PMORE*GZ )@@G@@ . @[@@@@. @A@@@@. HANDLE EXTRA TAPE REELS FIRST @[@@@@. HA )@@G@@@F@@@@ LA A8,NTP GET NUMBER OF EXTRA REELS HB )@@G@@@E@@@@ JZ A8,PM200 IF NONE, SKIP TO PACKS@C@@@@HC )@@G@@ E$DIT EDPACK OPEN EDIT @C@@@@ E$COL HD )@@G@@ COL1 POSITION @C@@@@ E$MSG MORE HE )@@G@@ 'MORE' @C@@@@ E$MSG REELS 'REELS:' @C@@@@HF )@@G@@ E$COL COL2 POSITION @D@@@@ E$FD1 HG )@@G@@ TAPEREEL2 EDIT SECOND REEL@D@@@@ AN,U A8,1 HH )@@G@@ ONE LESS TO DO @E@@@@ JZ A8,PM110 PRINHI )@@G@@T IF THAT'S ALL @E@@@@ LA,U A0,MI0DADLNK FIRST LINKHJ )@@G@@ WORD ADDR @^@@@@ J $+2 @F@@@@PM100 LA,U A0,MHK )@@G@@I2 GET NEXT LINK WORD ADDR @D@@@@ LMJ X10,HL )@@G@@GETNXT GET NEXT SECTOR @E@@@@ J PM110 HM )@@G@@ NO MORE, SO PRINT @G@@@@ LX X4,(1,2) GET HN )@@G@@SECTOR INDEX AND INCREMENT @E@@@@ LXI,U X10,26 HO )@@G@@ WORD LIMIT IN SECTOR @D@@@@ LMJ X10,EDSUB FORMHP )@@G@@ PRINT LINES@E@@@@ J PM100 NEED ANOTHER SECHQ )@@G@@TOR @D@@@@PM110 P$RINT POUT PRINT THE LINE @ @@@@HR )@@G@@. NOW DO REMOVABLE DISC PACKS @[@@@@. @F@@@@PM200 LA A8,NHS )@@G@@RP GET NUMBER OF EXTRA PACKS @F@@@@ JZ A8,PHT )@@G@@M300 IF NONE, GO ON TO BACKUPS @C@@@@ E$DIT EDPAHU )@@G@@CK OPEN EDIT @C@@@@ E$COL COL1 POSIHV )@@G@@TION @C@@@@ E$MSG MORE 'MORE' @C@@@@ HW )@@G@@ E$MSG PACKS 'PACKS:' @C@@@@ E$COL COL2HX )@@G@@ POSITION @D@@@@ TNZ TEMP TEMPHY )@@G@@ORARY FILE? @E@@@@ J PM208 NO, HANDLE NORMAHZ )@@G@@LLY @G@@@@ E$FD1 PACKENTRY+1 YES, QF SETS UP 1-WRD IA )@@G@@ENTRIES @G@@@@ LX X4,(1,20) SET INDEX AND INIB )@@G@@C FOR PACKS 3-10 @C@@@@ J PM210 CONTINUE IC )@@G@@@E@@@@PM208 E$FD1 PACKENTRY+2 EDIT SECOND PACKID @G@@@@ID )@@G@@ LX X4,(2,22) SET INDEX AND INC FOR PACKS 3-5 IE )@@G@@@D@@@@PM210 AN,U A8,1 ONE LESS PACK @F@@@@ IF )@@G@@ JZ A8,PM230 IF NO MORE, JUST PRINT LINE @E@@@@ IG )@@G@@ E$CHAR ',' OTHERWISE, EDIT COMMA @C@@@@ E$IH )@@G@@SKIP 1 POSITION @ @@@@ LA,U A0,MI1 II )@@G@@@ @@@@ AA,U A0,,X4 @D@@@@ E$FD1 0,A0 IJ )@@G@@ EDIT NEXT PACKID@F@@@@ L,U A0,26 ASSUIK )@@G@@ME 5 2-WORD ENTRIES @D@@@@ TZ TEMP TEMPIL )@@G@@ORARY FILE? @E@@@@ L,U A0,27 YES, 10 1-WORD EIM )@@G@@NTRIES@F@@@@ TLEM X4,A0 ANY MORE IN THIS SECTOIN )@@G@@R? @D@@@@ J PM210 YES, GO GET THEM@H@@@@IO )@@G@@ AN,U A8,1 NO MORE THIS SECOTR...ONE LESS TO IP )@@G@@DO @E@@@@ JZ A8,PM230 IF NO MORE, PRINT LINEIQ )@@G@@@E@@@@ LA,U A0,MI1 FIRST LINK WORD ADDR @^@@@@IR )@@G@@ J $+2 @E@@@@PM220 LA,U A0,MI2 NEXTIS )@@G@@ LINK WORD ADDR @D@@@@ LMJ X10,GETNXT GET NEXT SIT )@@G@@ECTOR @E@@@@ J PM230 NO MORE, PRINT LINE IU )@@G@@@E@@@@ LA,S1 A0,MI2+7 GET DESCRIPTOR BITS @F@@@@IV )@@G@@ TOP,U A0,MI2PAKBIT IS THIS A PACKID SECTOR? @E@@@@IW )@@G@@ J PM220 NO, TRY NEXT SECTOR @F@@@@ IX )@@G@@ LX X4,(2,8) GET SECTOR INDEX AND INC @E@@@@ IY )@@G@@ LXI,U X10,26 SECTOR WORD LIMIT @D@@@@ LMIZ )@@G@@J X10,EDSUB FORM PRINT LINES@D@@@@ J PM22JA )@@G@@0 NEED NEXT SECTOR@C@@@@PM230 P$RINT POUT JB )@@G@@ PRINT LINE@ @@@@. NOW FOR EXTRA BACKUP REELS @[@@@@. @F@@@@PM300 JC )@@G@@ LA A8,NSB GET NUMBER OF EXTRA BACKUPS @ @@@@ JD )@@G@@ ON PRVSEC @E@@@@ TNZ PRIVLGD IS RJE )@@G@@UN PRIVILEGED? @E@@@@ J PM400 NO, FORGETJF )@@G@@ REEL NUMBER@ @@@@ OFF PRVSEC @D@@@@ JZ JG )@@G@@ A8,PM400 IF NONE, GO ON @C@@@@ E$DIT EDPACK JH )@@G@@ OPEN EDIT @C@@@@ E$COL COL1 POSITION JI )@@G@@@C@@@@ E$MSG MORE 'MORE' @C@@@@ E$JJ )@@G@@MSG BAKS 'BACKUPS:'@C@@@@ E$COL COL2 JK )@@G@@ POSITION @F@@@@ E$FD1 BKUPREEL2 EDIT SECONJL )@@G@@D BACKUP REEL @D@@@@ AN,U A8,1 ONE LESS TJM )@@G@@O DO @E@@@@ JZ A8,PM320 IF NO MORE, PRINT LINEJN )@@G@@@E@@@@ LA,U A0,MI1 FIRST LINK WORD ADDR @^@@@@JO )@@G@@ J $+2 @D@@@@PM310 LA,U A0,MI2 NEXTJP )@@G@@ LINK ADDR @D@@@@ LMJ X10,GETNXT GET NEXT SECTOR JQ )@@G@@@F@@@@ J PM320 NO MORE SECTORS, SO PRINT JR )@@G@@@E@@@@ LA,S1 A0,MI2+7 GET DESCRIPTOR BITS @F@@@@JS )@@G@@ TOP,U A0,MI2BAKBIT IS THIS A BACKUP SECTOR? @E@@@@JT )@@G@@ J PM310 NO, GET NEXT SECTOR @F@@@@ JU )@@G@@ LX X4,(1,8) GET SECTOR INDEX AND INC @E@@@@ JV )@@G@@ LXI,U X10,27 SECTOR WORD LIMIT @D@@@@ LMJW )@@G@@J X10,EDSUB FORM PRINT LINES@D@@@@ J PM31JX )@@G@@0 NEED NEXT SECTOR@^@@@@PM320 P$RINT POUT@#@@@@. LAPSJY )@@G@@E EDITING @[@@@@. @F@@@@PM400 LA A8,NLPS GET JZ )@@G@@NUMBER OF LAPSE ENTRIES @E@@@@ JZ A8,PM500 IF NKA )@@G@@ONE, WE'RE THROUGH@E@@@@ LXM,U X4,LAPSENTRY GET MI1 INKB )@@G@@C AND INDEX @^@@@@ LXI,U X4,2@D@@@@PM410 LMJ X10,KC )@@G@@LPSED EDIT LAPSE ENTRY@C@@@@ TLEM,U X4,LAPSENTRY+2 KD )@@G@@ THAT ALL? @D@@@@ J PM410 NO, GET NEXT ONEKE )@@G@@@E@@@@ LA,U A0,MI1 GET FIRST LINK ADDR @^@@@@KF )@@G@@ J $+2 @E@@@@PM420 LA,U A0,MI2 GET KG )@@G@@NEXT LINK ADDR @D@@@@ LMJ X10,GETNXT GET NEXT SKH )@@G@@ECTOR @D@@@@ J PM500 NO MORE, GO ON @D@@@@KI )@@G@@ LA,S1 A0,MI2+7 GET DESC BITS @D@@@@ TOKJ )@@G@@P,U A0,MI2LPSBIT LAPSE ENTRIES? @E@@@@ J PM42KK )@@G@@0 NO, TRY ANOTHER SECTOR@E@@@@ LX X4,(2,MI2+KL )@@G@@8) SET MI2 INDEX AND INC @D@@@@PM430 LMJ X10,LPSED KM )@@G@@ EDIT LAPSE ENTRY@F@@@@ TLEM,U X4,MI2+26 FINISHED WKN )@@G@@ITH THIS SECTOR? @F@@@@ J PM430 NOT YET, CKO )@@G@@ONTINUE EDITING @E@@@@ J PM420 YES, GET NKP )@@G@@EXT SECTOR @[@@@@. @C@@@@LPSED E$DIT EDPACK OPENKQ )@@G@@ EDIT @C@@@@ E$COL COL1 POSITION @D@@@@ KR )@@G@@ E$MSG LAPS 'LAPSE FROM' @D@@@@ E$DAY1 KS )@@G@@ 0,X4 EDIT START DATE @B@@@@ E$MSGR . KT )@@G@@ 'AT'@D@@@@ E$TIME 0,X4 EDIT START TIME KU )@@G@@@B@@@@ E$MSGR . 'TO'@D@@@@ E$DAY1 KV )@@G@@ 1,X4 EDIT END DATE @B@@@@ **PF**@@@@<[@@@@@@@@@@@[KW )@@G@@@#M@@@]FE@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@KX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@^@@@@W@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@KY )@@G@@@@@@@@@@@@@@@@@@@@@@[@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@KZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@A@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@]@@@@@@@@@@@@@@@LF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LG )@@G@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LJ )@@G@@@@@@@@@@@@@@@@@@@^@@@@@@@@@@@@@@@@@@@@@@@@@@E@@BTOC @@@@@@@K[@@@LK )@@G@@ @ @@@[@@@@@S@@@@W@J^\CFNSKEL @@@@@@@@[@@@ LL )@@G@@@ @@@[@@@@@]@@@@WSJ \CFNLISTER @@@@@@@K[@@@ @ @@@[[@@@@RLM )@@G@@@@@@WUJ \CFNFLIST @@@@@@@@A@@@ )@@]@@@@@@^K@@@@W1GBUAMMLN )@@G@@SUMMARY @@@@@@@K[@@@ @ @=@ B@@@[8@@@@-[E*^CFNREADME LO )@@G@@@@B@@@@K[@@@ @ @@@[@@@@@ @@@@+9G,UAAUREADME @@@@@@@K[@@@LP )@@G@@OCT94 @ @@@[@@@@@#@@@@+"HCSE^YREADME @@@@@@@K[@@@ LQ )@@G@@@ @@@[@@@@@ @@@@<]G,UAAU@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LT )@@G@@@@@@@@@@@@@@0:3;UX1)OS:_1F4+UT0;[D=<0-2[;4J^XA%:J$>BY 0U6M370NGJR60D01H^LU )@@G@@0LP#_]0SA^&40F\2L_0[\NT3IP<90]0:JBE/J&UV$E08_'-00:74IZ03/6C5I P2RI6:65JLV )@@G@@0L]ESVJO@)N\J!=>4B0-;L-#0C %ZO\3H_DH\'AB^^\3Q*3[IH]^4U1#]:%WI=E,+NI/FN[CLW )@@G@@I.(AY3J=;E0<6%73LX )@@G@@0%:J%H0+VU'3KO P%@KJJ(>,KI$ ]ZJX\Y?KJQ5)^:JZQH+6@@@@@@@@@@@@@@@@@@@@@@@@LY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@02,*,W@@@@@@2N%[VIY?Y]!JRD('30;OUD>0(9T$@1:8'S^03QR+5I6Z^2SJGISY/JID?-'ME )@@G@@I/'+^OJI[A&.0%:J%H0;\&6U0%2Z)+KJJ(>,KO@-M=KJ&M78JQ5)^:J^3U7ZJQA*JQ@@@@@@MF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@0%2$4J2N6S? 13 GW:1L9EV\0!O5(MK )@@G@@\3T+E%\0.,AEI 97Z71DK,YNIB""6DI5X%=GI$;$-YJ=$-4^0*RACS0UTF3C1< [4C0(/N!-ML )@@G@@JHMV&DJR\?\PJQWQ>EJI[A&.JWQJ^J0+VU'30%2Z)+0)YA;;KI$ ]ZKJ&M78KOC@6AJZQH+6MM )@@G@@JQA*JQJ=>P^_@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@1V+[XFMP )@@G@@1323!V1<1U] 1N>1BT1@XB <2]$JY 1LT_3AI T KZIQ8,O8I5X*%2I5^?I=EU$[JP/IO,I&[UO\I"S%5-1:)>K=J^WQ+P1S\,)R1@->[\1KIH:R0(MJATJOX\6IMS )@@G@@JWF A&1]Z /X0VUC%[JYSIR*J>''[R0<1)AZ0%%+3>0+TX*$0:DDH*015/+[0(+&85JX\Y?KMT )@@G@@JQ5)^:JZQH+6KJ62K[KJ#34CKIH*E_@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MW )@@G@@@@@@@@@@@@@@1TM=_7@@@@@@29*^KT2#7B/-1FG-WW2FN>7+1U*I::@@@@@@H RYAIO UZ&MX )@@G@@I=D-UWHP+E69H_!'=/I5WXS81N8R;_JJQB<[0S&J0*I4SH\PJBC.AZJGU-4N@@@@@@1U_.8*MY )@@G@@0T<\MBI6Z^2NJ=;=%L1'N%@)IR32F1JH\4'UH=6(1JI=(I+I2]4F^FI!,GJT2M@4W]1NTSN/MZ )@@G@@1:=P 0%%+3>0;\&6U0%2ZF&015/+[NA )@@G@@1# X;:01"9JMJQ5)^:J^3U7ZJQA*JQKJ#34CKJ".X!KJV,MG@@@@@@@@@@@@@@@@@@@@@@@@NB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ND )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@1N$@!L2%#0U#2DS1[B1*&?@J1@[ 4T2]N;+I1LY)9"NE )@@G@@HARKITH,82)0I&-"T2I\Q[L8H_!'=/IX;Y\+J^3I2N1L!L0[JWUMI 0K=6:!JBC.AZJQ+/<,NF )@@G@@JO$D0V!T&VJR*^MDJ>=!@*0+TX*$NH )@@G@@0%2ZF&0)Y[E:0(+&8501"9JM0<(\+?JZQH+6JQA*JQJ=>P^_KIH*E_KJV,MGKJ0LW-@@@@@@NI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2K1MRJ2(VD7\2U9!O(2F*%M2NL )@@G@@18W4$XHXYVEMH.("-Q2@JTJU18)\0Z1%1E *197A1]2[VM?918=&_,1(",N>2[L87^1(7;-4NM )@@G@@1S5SHX1<(KW51)\6>1H5L;^&3F1&9F2)";$L0'J2/<11&+/>I?ZE6B2KK*ZZ1;_X SI!VZ.8NN )@@G@@1%E#Y?1-&JM73N@CKK-7J PT$?JHKF-BNP )@@G@@I4\\&/JG&^YSKB___0HJ[ >_2:FU3"F5?Y"+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IRP#X2NS )@@G@@H?)$"+H6_<+EI _D_,IXIH'52CT$DQ1U*P?0IPO>23IXC8;"I$0,"\IW3*QOIO)M?INU )@@G@@1;_X SI==Y) JJ+_Y2I?[4?9I577$;G"60F92L]/V+HJ&YL3H!03NJ1V*)ZN0%!]B'JGPZENNV )@@G@@JQ5WHZ1S(H9D0W H5K^[ZH=Q/N/H\[7\T3*@@0Z4K\VJ!3'FIP$JZ9>^5NW )@@G@@JQQ>T[J>T ;.J&67>YJX- G$J?:T"@HIH &@KB__"#H&*RI#38G#07@@@@@@@@@@@@@@@@@@NX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NZ )@@G@@@@@@@@@@@@@@10\=TC3K3SS!28(4CN2VPLOM13&2_]2'/#$=2EG]N1GY:47.G/8B?UH$+:1UOA )@@G@@IG\[X:H\ .EEI^I*'5IX_;O2IO@#!/1#!W>3JJ3:>P1TM'I'1F2F7<0(-L^&IY6#T(JBV-64OB )@@G@@JR 2D 1T27PM01QFDZ19I5&2IX1.*SJJ$Q,6I=C.U[I6Y =]I^79I21FZN>+IQ_17'I\=@;YOC )@@G@@1NT%GO0()-?TJO(D)WJXQ?7NI\'\L?JX=#5Z0<"3X/0VRY_MJQ=P]"JILD%\JW-)"W2:0J$BOD )@@G@@3LP0U33=50L1(112:FU4@H&*RI@KJ___\21>M*QOE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@1+NM3\3CC.-R2:8QJ<2M+A!J1%GUMXOI )@@G@@I @!/E4EP$S$2:IB70JRT5:R1N'HE40:*T01IH66".1U_2WU0(UH)[1S5^;'1]TT*%3+'@0,OJ )@@G@@HH$:,'32)OO>23Y(7-I\.0?WJX$0]Z0<"%Q40VRH&]I?==6TJQVE&,0:R[@70+($I02-*Q:FOK )@@G@@3T=H;A2'6)MCJQ<\FAJIL]=\JW-S-C0T=TSH0U3'M10L17!P0)<18/0+@U=50S4[3UF5?Y=KOL )@@G@@38G^DB21>M*QKJ___3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ON )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@H4_9K3H^JB,/HJ@$$,HY<2BIOO )@@G@@H66NNE2%1P091;<')6H,>$!7H68K2GI 7FP+H7JVHNIB!)#[1:"(R1I5Q?%MOP )@@G@@02#.G'IP^=VTIY Q1D0%%=CBI <.?(JHNH/%0:LJVAI K"MKJG&-R\2UV=%+H_:8?PI\0^[OOQ )@@G@@I 8A;OIOS<-.G.E !)2N2?P8HJ/IK)H$BH/<1'=CBS1K,9V)IRT(Z IX:YF1134B;61EX,6_OR )@@G@@IXT[(EI=]^/TH\ID6ZH>/J!3H\P!/P4D5S-Q43=,B,4)H<[[I4W:&FIO5?&%IX2"-)I7,( NOS )@@G@@IWLQPOI>B*C]13&ST.I?L,+?H$[-(X4TR].?KJ__6C1L&5\-I4>2KY1N+Q70I\,\7N@@@@@@OT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@I=$ FWOV )@@G@@H46H;[I^@("UIJ)OO]I$9.:H1;<')51LR/!>IZ+WI-I$8G=(I7@P]>I?TS_:IY3+^HI?H(VQOW )@@G@@I/\%_I1T&@.:JW4L"U0K*#/9JH<=K]JRIS^Q0L\VDSJGQ7 (J!I^PQ0MI_),JB:H*7J?>M^.OX )@@G@@19;GF%I!X56NJR.):^I60GN9J ZV]!H!'_121F4];7,A3:+5S-JR<#&_OZ )@@G@@JHV#(+[PJR7_M_J=IVMKJ>2'=ZJY6%SKJ$STD[PI )@@G@@JI^+HFJ$'ZB;129[S-4:J1K_I4>2KUJWDV@9KJ' O]JO5R]"0<4 -Y@@@@@@@@@@@@@@@@@@PJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@I>F:5TG6])$LHJ5L'+PL )@@G@@H,2$LXIX7H<%2#&ODO1M&]YZI^(&P8IP'9BYI4(ABSI>"AY@IAYQFDIW-P4-I7(- /I!ACR7PM )@@G@@JZR:>N0F_Y@<,[H.'IHV1:QWOL01X?SY0%OR*Y1N+Q7500SMY&JO5R]_KB;6K6JOF;$#PQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PS )@@G@@IRM4!^GYG;5KG/XRPCHWX3:CIHH%YS2D0=+=1SU3PLH.XU=OIJ]Q1)I!1EOGI>F2R+I^.6<%PT )@@G@@IRG/PII6%RNW12D#&BJJ'M*10U37GWJA[(@7JJ]34G0N1CP1JHPAA;J$LY WI597<32U+X&ZPU )@@G@@1+F(A.1%8=77I?[&2#JX\JJBI,[#3MJAQV^%IGE*,S1#-'7CIX R_MI7VA&"1K#^?S0*4A-,PV )@@G@@JO=X#YJWO.A9I?O+V+JI7';402"MC&0:SL=9JIV"2KJAAIV:JJFP=308_P'11[B+4008@ IEPW )@@G@@JWF'U/JPPA1 JX><,[0:GC3]016NYB0(<(V^1'8W#"IW[?41JP:9]#01UJDII\,\7IJQ&R0@PX )@@G@@0<4 -YJOF;$#KG]C3?@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PZ )@@G@@@@@@@@@@@@@@@@@@@@2@)EA*21(OT=2+\+M^2N EUW1'7L-WH5F@@SIZ$#:^126NU'YJ^X%6PI=;.!)I!'4CL2TC]@G2*2$$C2U:U<)HX%1+:2CIR3,2C"\QSQE )@@G@@H6 ^HN2%I 4^1'"0,02C0@$K2K70F?1;ON=(KZ___32:]/HJ39!/JQ7]?+1VEGYK0;E#L;0%#;M9OA0+;ZU!0VG 9@H$")N%IWE3_R1'_&6_11*;0!QK )@@G@@0SSEL+0+-Q5O0S7%*_IR8^V.IGBVN"IQ^TFXJ$$5=BJXY(DWJ$CPN.1*#X?Y138]0]1('L+?QL )@@G@@H"-K+L1UV?J*1N!1>^I$U.661'"0,\1KEH@A1N&MN31V%!8"1EN.+R2':@43K=@@@@3C3-F5QM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@1D1><229]V2?2VYN(1QO )@@G@@2@B>0#1LB49+IW^0TKZPGIPN;\[QP )@@G@@ TNE,U A0,MI2 FIRST TIME THROUGH? @F@@@@ QQ )@@G@@ J DREAD1 NO, PACKET ALREADY SET UP @D@@@@ QR )@@G@@ LXI,U A1,03401 GET MAIN ITEMS, @F@@@@ TNE,U QS )@@G@@ A0,MI0 UNLESS LINK WORD IS MI0+0, @G@@@@ LXI,U QT )@@G@@ A1,03402 IN WHICH CASE, GET GRANULE ITEMS @E@@@@ LXQU )@@G@@M,U A1,MI2 FOR TAPE REEL NUMBERS @E@@@@ SA QV )@@G@@ A1,RDPKT+3 STORE IN MSCON$ PACKET@F@@@@ LA,U A1,2QW )@@G@@ ASSUME START WITH SECTOR 2 @E@@@@ TNE,U A0,MQX )@@G@@I0 GETTING GRANULE ITEMS?@F@@@@ LA,U A1,0 QY )@@G@@ YES, START WITH SECTOR 0 @C@@@@ J DREAD2 QZ )@@G@@ CONTINUE @F@@@@DREAD1 L,T1 A1,RDPKT+4 GET PREVIORA )@@G@@US STARTING SECTOR@F@@@@ A,U A1,1 INCREMENT RB )@@G@@TO NEXT SECTOR @F@@@@DREAD2 SA,T1 A1,RDPKT+4 AND STORE RC )@@G@@IN MSCON$ PACKET @E@@@@ LA,U A0,RDPKT GET ADDR ORD )@@G@@F PACKET @D@@@@ ER MSCON$ DO THE DREAD$ RE )@@G@@@E@@@@ JP A0,1,X10 IF OK, NORMAL RETURN @F@@@@RF )@@G@@ J 0,X10 OTHERWISE, ERROR RETURN @#@@@@RG )@@G@@ END ___OSITION @D@@@@EDSUB2 E$FD1 MI2,X4 RH )@@G@@ EDIT NEXT ITEM @D@@@@ AN,U A8,1*[S@@@*SDFF*@B@@@@. @MFDRI )@@G@@ SINGLE FILE DREAD$ / FITEM$ ROUTINE@[@@@@. @^@@@@ AXR$ RJ )@@G@@ . @G@@@@ CONFIG . DEFINE CONFIGURATION PRK )@@G@@ARAMETERS @D@@@@ EQUFS . DEFINE TAGS RL )@@G@@@F@@@@QFEP E$PKT 14,RBUFF . @USE IMAGE EDIT$ PACKET RM )@@G@@@^@@@@USEIM '@USE USE$,'@E@@@@RBUFF RES 15 RN )@@G@@ EXTERNAL FILENAME @D@@@@PRT FORM 12,6,18 PRINRO )@@G@@T$ PKT FORM @A@@@@ERR4 'ILLEGAL FILENAME SYNTAX' @E@@@@ASGIM '@RP )@@G@@ASG,AQYZ USE$ . ' DREAD$ FILE ASG IMAGE @C@@@@FREIM* '@FREE,ARQ )@@G@@ USE$ . ' FREE IMAGE@E@@@@RDPKT* + DREAD$ RR )@@G@@ PACKET FOR MSCON$ @C@@@@ 'USE$ ' FILERS )@@G@@NAME @E@@@@ + 03400,RECSTART BUFFER SIZE AND ADDR. RT )@@G@@@D@@@@ + 0 SECTOR START @D@@@@FITEM*RU )@@G@@ 'USE$ ' FITEM$ PACKET @^@@@@ RES RV )@@G@@ 11 @B@@@@ ON (CHKPCT>0)**(FATSIZ>0)@G@@@@FATBL RERW )@@G@@S FATSIZ INFO RETURNED BY MSALL$ PUT HERE @E@@@@FATPK RX )@@G@@ + 1,MSALL$ FLAG AS 5-WORD PACKET @F@@@@ + RY )@@G@@ FATSIZ,FATBL LENGTH AND ADDR OF BUFFER @E@@@@ + RZ )@@G@@ 0 (FILLED BY MSCON$) @C@@@@ + SA )@@G@@ 0 '' @C@@@@ + 0 SB )@@G@@ '' @F@@@@MSBEG EQUF FATPK+3,,H1 MS EQUIP - BEGINSC )@@G@@NING INDEX @F@@@@MSEND EQUF FATPK+3,,H2 MS EQUIPMENT - LSD )@@G@@AST INDEX @F@@@@DSCBEG EQUF FATBL+4,,H1 DISC EQUIP - BEGSE )@@G@@INNING INDEX@F@@@@DSCEND EQUF FATPK+4,,H2 DISC EQUIP - LASSF )@@G@@T INDEX @B@@@@ OFF (CHKPCT>0)**(FATSIZ>0)@B@@@@ SG )@@G@@ ON (CHKPCT>0)**(LDJOK=0) @D@@@@PCTBUF RES 01000 SH )@@G@@ PCT$ BUFFER @^@@@@PCTNAM + 0 @B@@@@ OFSI )@@G@@F (CHKPCT>0)**(LDJOK=0) @ @@@@ ON CHKPCT @F@@@@SJ )@@G@@PCTDADN* + 0 POINTER TO NEXT PCT DAD/GTB @F@@@@SK )@@G@@. ITEM, FOR TEMP FILE DAD SNAP@ @@@@SL )@@G@@ OFF CHKPCT @[@@@@. @#@@@@. ER ERRPR$ PACKET@[@@@@SM )@@G@@. @F@@@@ERRPKT + 040,0,0,0,0,0 FOR FACILITY ERROR MESSN )@@G@@SAGES @^@@@@ + 0 @F@@@@ + 0 SO )@@G@@ FAC STATUS BITS GO HERE @#@@@@/$(1),QF000* . @[@@@@. SP )@@G@@@D@@@@. SINGLE-FILE MODE WAS SPECIFIED, SO WE'LL GET THE @E@@@@. INFOSQ )@@G@@RMATION ABOUT A PARTICULAR FILE WITHOUT DOING A DGET$.@[@@@@. @E@@@@SR )@@G@@. 1. FIRST, ATTACH AN INTERNAL NAME TO THE SPECIFIED FILE. @F@@@@. 2. NSS )@@G@@OW TRY AN ER FITEM$ ON THAT FILE. IF IT DOES NOT WORK, @G@@@@. AST )@@G@@SSIGN THE FILE, AND GO ON TO STEP 4. IF THE FITEM$ DOES WORK, @B@@@@SU )@@G@@. THE FILE IS ASSIGNED BY THE USER. @F@@@@. 3. USING INFO FROM FITSV )@@G@@EM$, CHECK FOR TAPE FILE, TEMPORARY FILE, @G@@@@. ARBITRARY DEVICE FISW )@@G@@LE (NOT TAPE OR MS), ETC., AND SET APPROPRIATE @F@@@@. FLAGS. IF FISX )@@G@@LE IS NOT TEMPORARY OR ARBITRARY DEVICE, GO ON @E@@@@. TO STEP 4. ISY )@@G@@F FILE IS TEMPORARY OR ARB DEVICE, CREATE @G@@@@. FAKE LEAD ITEM AND SZ )@@G@@MAIN ITEM BASED ON INFORMATION FROM FTIEM$. @ @@@@. THEN GO ON TOTA )@@G@@ STEP 5. @F@@@@. 4. FILE IS CATALOGUED MASS STORAGE OR TAPE FILE, ANDTB )@@G@@ MAY OR MAY @F@@@@. NOT BE ASSIGNED BY THE USER. AN ER MSCON$ IS NOWTC )@@G@@ DONE, USING@G@@@@. THE DREAD$ FUNCTION, TO OBTAIN THE DIRECTORY INFOTD )@@G@@RMATION FOR THIS @F@@@@. FILE. FIRST THE LEAD ITEM IS READ, AND THETE )@@G@@N THE MAIN ITEM. @G@@@@. CHECKS ARE MADE TO DETERMINE WHETHER THE FITF )@@G@@LE IS REMOVABLE DISC, @D@@@@. TAPE, OR G-OPTION, AND APPROPRIATE FLTG )@@G@@AGS ARE SET.@G@@@@. 5. IF THE FILE IS NOT ASSIGNED BY THE USER, OR IF ITTH )@@G@@ IS A TAPE FILE, @H@@@@. THIS STEP IS SKIPPED. IF NOT, WE LOAD THE TI )@@G@@RUN'S PCT BANK, VIA AN LDJ @H@@@@. (OR ER PCT$), AND FIND THE FILETJ )@@G@@ DESCRIPTION ENTRY FOR THIS FILE. THIS @F@@@@. IS THE ONLY WAY TO TK )@@G@@FIND THE GRANULE COUNTS AND PACKIDS FOR @G@@@@. TEMPORARY FIXED ANDTL )@@G@@ REMOVABLE MASS STORAGE FILES, AND SOMETIMES @F@@@@. PROVIDES MORETM )@@G@@ UP-TO-DATE GRANULE COUNTS FOR CATALOGUED FILES,@G@@@@. AS WELL. AFTTN )@@G@@ER GATHERING AS MUCH INFORMATION AS IS USEFUL FOR THE @D@@@@. SPECIFITO )@@G@@C CASE, WE LDJ BACK TO THE NORMAL DBANK. @G@@@@. FOR TEMPORARY REMOVTP )@@G@@ABLE DISC FILES, ADDITIONAL CODE IS NEEDED TO @G@@@@. OBTAIN A COPYTQ )@@G@@ OF THE FASTRAND-FORMAT MASS STORAGE AVAILABILTY TABLE@F@@@@. (FATBL)TR )@@G@@, BECAUSE THE PCT ONLY HAS SUBSYSTEM AND UNIT NUMBERS @F@@@@. FOR THETS )@@G@@ DISC DRIVES INVOLVED, NOT THE PACKIDS. FATBL MUST BE@E@@@@. SEARCHETT )@@G@@D AND CHECKED AGAINST THE PCT 'PACKID' TABLE. @F@@@@. 6. IF THE FILE ITU )@@G@@S TEMPORARY OR ARBITRARY DEVICE, THE @USE NAME @#@@@@. IS NOW FREED.TV )@@G@@@G@@@@. IF NOT, WE DETERMINE WHETHER OR NOT TO FREE THE @USE RELATIONTW )@@G@@SHIP @F@@@@. NOW. IF A SECOND PRINT LINE WILL BE NECESSARY FOR THE TX )@@G@@FILE, @F@@@@. THEN WE WON'T FREE IT NOW: ROUTINE 'PRINT2' WILL FREE TY )@@G@@IT. @[@@@@. @F@@@@ L$OAD CHEKPRTSG,,1 LOAD CHECKTZ )@@G@@/PRINT SEGMENT @F@@@@. ****** SR R15,SFMODE SET SINGLEUA )@@G@@-FILE MODE FLAG @G@@@@ SR R15,SFMODE2 SET OTHER UB )@@G@@SINGLE-FILE MODE FLAG @G@@@@ LA A0,(0100000,QF700) . UC )@@G@@SET UP CONTINGENCY ROUTINE @D@@@@ ER IALL$ UD )@@G@@ REGISTER IT @D@@@@ TZ,S2 MFD$ FILENAME GUE )@@G@@IVEN? @F@@@@ J QF004 YES, NO ELEMENT SUBSTIUF )@@G@@TUTION@F@@@@ LA,S1 A0,MFD$+1 GET CHARS IN ELEMENT NUG )@@G@@AME @H@@@@ JZ A0,QF910 IF NOTHING THERE EITHEUH )@@G@@R, ASSUME TPF$ @F@@@@ SA,S2 A0,MFD$ STORE AS CUI )@@G@@HARS IN FILENAME @D@@@@ DL A0,MFD$+9 GET ELEMENUJ )@@G@@T NAME@F@@@@ DS A0,MFD$+4 STORE IN FILENAME FIELUK )@@G@@D @F@@@@ LA,S3 A0,MFD$+1 GET ELEMENT CYCLE CHARUL )@@G@@ COUNT@F@@@@ SA,S3 A0,MFD$ STORE AS F-CYCLE CHAR UM )@@G@@COUNT @D@@@@ JZ A0,QF004 IF NONE, GO ON @D@@@@UN )@@G@@ LA A0,MFD$+13 GET ELT CYCLE @D@@@@ SAUO )@@G@@ A0,MFD$+6 STORE AS FCYCLE @[@@@@. @C@@@@. COMPOSE @UUP )@@G@@SE IMAGE FROM FILENAME IN SPEC FIELD@[@@@@. @E@@@@QF004 E$DIT UQ )@@G@@ QFEP OPEN @USE IMAGE EDIT @D@@@@ TZ,S1 MFD$UR )@@G@@ QUAL GIVEN? @B@@@@ J QF006 US )@@G@@ YES @E@@@@ TNZ,S6 MFD$ IMPLIED QUALIFIER? UT )@@G@@@B@@@@ J QF010 NO @E@@@@ E$FD2 UU )@@G@@ PCT+021 PICK UP LATEST @QUAL @C@@@@ J QF00UV )@@G@@8 CONTINUE @D@@@@QF006 E$FD2 MFD$+2 ADD UW )@@G@@QUALIFIER @D@@@@QF008 E$CHAR '*' AND AN ASTERISK UX )@@G@@@D@@@@QF010 E$FD2 MFD$+4 ADD FILENAME @C@@@@ UY )@@G@@ TNZ,S3 MFD$ F-CYCLE? @B@@@@ J QF01UZ )@@G@@2 NO @^@@@@ E$CHAR '(' @C@@@@ E$FD1 VA )@@G@@ MFD$+6 ADD FCYCLE@^@@@@ E$CHAR ')' @C@@@@QF012 VB )@@G@@ TNZ,S4 MFD$ READ KEY? @B@@@@ J QF01VC )@@G@@4 NO @^@@@@ E$CHAR '/' @D@@@@ E$COPY VD )@@G@@ 6,MFD$+7 ADD READ KEY @C@@@@ TNZ,S5 MFD$ VE )@@G@@ WRITE KEY?@B@@@@ J QF018 NO @E@@@@VF )@@G@@ J QF016 READ AND WRITE KEYS @C@@@@QF014 VG )@@G@@ TNZ,S5 MFD$ WRITE KEY?@B@@@@ J QF01VH )@@G@@8 NO @E@@@@ E$CHAR '/' ONE FOR THVI )@@G@@E READ KEY, @F@@@@QF016 E$CHAR '/' AND ONE FOR THE VJ )@@G@@WRITE KEY @D@@@@ E$COPY 6,MFD$+8 ADD WRITE KEY VK )@@G@@@D@@@@QF018 E$COPY 4,('. . ') TERMINATE IMAGE @E@@@@. NOW VL )@@G@@HAVE @USE IMAGE, EITHER COMPOSED FROM SPEC FIELD OR @F@@@@. CREATED BYVM )@@G@@ PUTTING '@USE USE$' IN FRONT OF IMAGE READ VIA READ$.@[@@@@. @G@@@@VN )@@G@@QF020 LA A0,(16,USEIM) GET IMAGE ADDR AND MAX LENGTH VO )@@G@@@D@@@@ ER CSF$ PERFORM @USE @D@@@@ VP )@@G@@ JNZ A0,QF430 HANDLE ERROR @[@@@@. @F@@@@. TRY VQ )@@G@@ER FITEM$. IF IT WORKS, FILE IS ASG'ED TO USER, AND MAY BE @G@@@@. TEMPVR )@@G@@ORARY FILE. IF NOT, MUST BE CATALOGUED FILE: WE MUST ASG IT @#@@@@VS )@@G@@. TO DO DREAD$. @[@@@@. @H@@@@ SZ FLAG4 VT )@@G@@ ZERO SFASG,SFITEM,ARB,UCOPT,TEMP FLAGS @E@@@@ SZ FITEVU )@@G@@M+10 INITIALIZE SUBCODE @G@@@@ SZ FITEM+11 VV )@@G@@ CLEAR TAPE REELS IN CASE LEFT @E@@@@ SZ FITEVW )@@G@@M+12 BY PRVIOUS FITEM$ @B@@@@ LA A0,(037777VX )@@G@@7,FITEM) . @D@@@@ ER FITEM$ GET FILE INFO VY )@@G@@@E@@@@ TNZ,S1 FITEM+6 IS FILE ASSIGNED? @E@@@@VZ )@@G@@ J QF070 NO, ASG AND DO DREAD$ @E@@@@ WA )@@G@@ SR R15,SFITEM YES, SET FITEM FLAG @[@@@@. @ @@@@WB )@@G@@. CHECK FOR @ASG,C OR @ASG,U @[@@@@. @D@@@@ LA,S1 A0,FWC )@@G@@ITEM+6 GET EQUIP CODE @E@@@@ TG,U A0,070 WD )@@G@@ COMMUNICATIONS STUFF? @D@@@@ J FIT005 YES,WE )@@G@@ SKIP THIS @D@@@@ L A1,FITEM+7 GET OPTION BITS WF )@@G@@@E@@@@ LA,U A2,0 ASSUME NOT C OR U @D@@@@WG )@@G@@ TEP A1,(1*/('Z'-'C')) C-OPTION USED? @D@@@@ L,WH )@@G@@U A2,'C' YES, GET FD 'C' @D@@@@ TEP,U A1,1WI )@@G@@*/('Z'-'U') U-OPTION USED? @D@@@@ L,U A2,'U' WJ )@@G@@ YES, GET FD U @F@@@@ S A2,UCOPT STORE ZEROWK )@@G@@ OR CHAR IN FLAG @[@@@@. @E@@@@. CHECK FOR ARBITRARY DEVICE FILE (NWL )@@G@@OT TAPE OR MASS STORAGE)@[@@@@. @E@@@@FIT005 TLE,U A0,040 WM )@@G@@ TAPE OR MASS STORAGE? @F@@@@ J FIT010 WN )@@G@@ YES, CHECK FOR TEMP FILE @D@@@@ SR R15,ARB WO )@@G@@ YES, SET FLAG @E@@@@ J FIT020 SKIP TEMP WP )@@G@@FILE CHECK @[@@@@. @ @@@@. CHECK FOR TEMPORARY FILE @[@@@@. WQ )@@G@@@D@@@@FIT010 LA,S1 A0,FITEM+7 GET DESC BITS @D@@@@ WR )@@G@@ TOP,U A0,020 TEMPORARY FILE? @G@@@@ J WS )@@G@@ QF080 NO, DO DREAD$ FOR CATALOGUED FILE @[@@@@. @G@@@@WT )@@G@@. TEMPORARY FILE: CREATE FAKE LEAD/MAIN ITEMS USING INFO FROM FITEM$ WU )@@G@@@[@@@@. @E@@@@FIT020 SR R15,TEMP SET TEMP FILE FLWV )@@G@@AG @ @@@@ L,U R1,28*3 @A@@@@ LA A0,(WW )@@G@@1,RECSTART) @ @@@@ LA,U A1,(0) @F@@@@ BT WX )@@G@@ A0,,*A1 ZERO-FILL LI0, MI0, AND MI1 @ @@@@ ON WY )@@G@@ OLDMFD @F@@@@ SR R15,MFD$F ASSUME NEW-FORMAWZ )@@G@@T 'MFD' @ @@@@ OFF OLDMFD @C@@@@ DL XA )@@G@@ A0,FITEM+4 QUALIFIER @ @@@@ DS A0,QUAL @ @@@@XB )@@G@@ DS A0,MI0QUAL@C@@@@ DL A0,FITEM+2 XC )@@G@@ FILENAME @ @@@@ DS A0,FILE @ @@@@ DS XD )@@G@@ A0,MI0FILE@C@@@@ DL A0,PCT+2 PROJECT-ID@ @@@@XE )@@G@@ DS A0,PROJ @ @@@@ DS A0,MI0PROJ@C@@@@XF )@@G@@ DL A0,PCT+023 ACCOUNT @ @@@@ DS XG )@@G@@ A0,ACCOUNT@C@@@@ LA,S1 A0,FITEM+6 EQUIP CODE@E@@@@XH )@@G@@ TG,U A0,020 WORD ADDRESSABLE? @ @@@@ XI )@@G@@ TG,U A0,026 @B@@@@ J $+2 NO XJ )@@G@@@F@@@@ A,U A0,012 YES, CHANGE TO F-TYPE CODE XK )@@G@@@F@@@@ SA A0,MI0OLDEQP SET OLD EQUIP CODE IN MI0 XL )@@G@@@F@@@@ SZ FLAGS CLEAR TAP,GFIL,VFIL,BMI1 XM )@@G@@@D@@@@ SZ RDISC CLEAR RDISC FLAG@G@@@@ XN )@@G@@ L A1,('F ') ASSUME NORMAL MASS STORAGE EQUIP @F@@@@XO )@@G@@ S A1,MNEMONIC STORE AS ASSIGN MNEMONIC @G@@@@XP )@@G@@. AT THIS POINT, FILTYP = MSTYP (0) XQ )@@G@@@C@@@@ TG,U A0,020 TAPE FILE?@C@@@@ J XR )@@G@@ FIT030 NO, GO ON @D@@@@ SR R15,TAP XS )@@G@@ YES, SET FLAG @F@@@@ L,U A1,TAPTYP GET XT )@@G@@TAPE FILE TYPE INDICATOR@C@@@@ S A1,FILTYP SET XU )@@G@@IN LI0@E@@@@ L A1,('T ') GET TAPE EQUIP TYPE XV )@@G@@@F@@@@ S A1,MNEMONIC STORE AS ASSIGN MNEMONIC XW )@@G@@@C@@@@FIT030 LA,T3 A1,FITEM+6 GET FCYCLE@E@@@@ TLXX )@@G@@E,U A0,040 TAPE OR MASS STORAGE? @F@@@@ SA XY )@@G@@ A1,FCYCLE YES, STORE FCYCLE IN MI0 @D@@@@ LA,S6 XZ )@@G@@ A1,FITEM+10 GET SUBCODE @D@@@@ TG,U A0,030 YA )@@G@@ MASS STORAGE? @ @@@@ TG,U A0,040 @B@@@@ YB )@@G@@ J FIT100 NO @[@@@@. @ @@@@. TEMPORARY MASS SYC )@@G@@TORAGE FILE @[@@@@. @F@@@@ SA A1,OLDSUBCOD YES,YD )@@G@@ STORE SUBCODE IN LI0 @E@@@@ DL A0,FITEM+8 INITYE )@@G@@IAL GRAN,MAX GRAN @G@@@@. AND HIGHESYF )@@G@@T TRK,HIGHEST GRAN NBR @D@@@@ SA A0,MAXGRAN STORYG )@@G@@E MAX GRAN @E@@@@ SSL A0,18 ISOLATE INITIAL YH )@@G@@GRAN @C@@@@ SA A0,INITRESV STORE IT @E@@@@ YI )@@G@@ SA A1,HIGRANULE STORE HIGHEST GRAN NBR@F@@@@ SSYJ )@@G@@L A1,18 ISOLATE HIGHEST TRACK REF @C@@@@ SAYK )@@G@@ A1,HITRACK STORE IT @G@@@@ LA,S1 A1,PCHAR YL )@@G@@ PCHAR (ASSUMED = 0 AT THIS POINT) @E@@@@ TZ,S3 FITEYM )@@G@@M+6 POSITION GRANULARITY? @E@@@@ AA,U A1,POSBIT YN )@@G@@ YES, SET BIT FOR PCHAR@E@@@@ LA,S2 A0,FITEM+6 YO )@@G@@ GET FILE MODE BITS @E@@@@ TEP,U A0,01 WORDYP )@@G@@ ADDRESSABLE? @E@@@@ AA,U A1,WADBIT YES, SET BYQ )@@G@@IT FOR PCHAR@G@@@@ SA,S1 A1,PCHAR STORE PCHAR BITSYR )@@G@@ IN MAIN ITEM @E@@@@FIT100 L,S1 A0,FITEM+6 A0 = EQUIPYS )@@G@@MENT CODE @D@@@@ TG,U A0,070 COMM THING? YT )@@G@@@E@@@@ J FIT120 YES, NO ASG OPTIONS @[@@@@YU )@@G@@. @^@@@@. TAPE OR MASS STORAGE @[@@@@. @E@@@@ LA YV )@@G@@ A0,FITEM+7 A0 = ASSIGN OPTIONS @D@@@@ TOP A0,(YW )@@G@@1*/('Z'-'G')) G-OPTION FILE? @B@@@@ J FIT110 YX )@@G@@ NO @D@@@@ SR R15,GFIL YES, SET FLAG @H@@@@YY )@@G@@ LA A1,LI0STAT L.I. STATUS (ASSUMED=0 AT THIS POIYZ )@@G@@NT) @E@@@@ AA,U A1,LI0GBIT SET G-BIT IN LEAD ITEMZA )@@G@@@E@@@@ SA A1,LI0STAT STORE L.I. STATUS BITS@F@@@@ZB )@@G@@ LA A1,INHIBITS INHIBIT BITS (ASSUMED=0 NOW)@F@@@@ZC )@@G@@ AA,U A1,MI0GBIT SET M.I. G-OPTION INDICATOR @C@@@@ZD )@@G@@ J FIT111 GO ON @F@@@@FIT110 LA ZE )@@G@@ A1,INHIBITS INHIBIT BITS (ASSUMED=0 NOW)@E@@@@FIT111 TOP,U ZF )@@G@@ A0,1*/('Z'-'P') ASG'D WITH P-OPTION? @E@@@@ AA,U A1,PZG )@@G@@BIT NO, SET PRIVATE BIT @C@@@@ TEP,U A0,1*/('Z'ZH )@@G@@-'R') READ ONLY?@E@@@@ AA,U A1,RONLY YES, SET RZI )@@G@@EAD ONLY BIT@D@@@@ TEP,U A0,1*/('Z'-'W') WRITE ONLY? ZJ )@@G@@@D@@@@ AA,U A1,WONLY YES, SET BIT @E@@@@ ZK )@@G@@ SA A1,INHIBITS STORE INHIBIT BITS @C@@@@ TNZL )@@G@@Z TAP TAPE FILE?@B@@@@ J FIT120 ZM )@@G@@ NO @[@@@@. @ @@@@. TAPE FILE: SET MODE BITS @[@@@@. ZN )@@G@@@D@@@@ LA,H2 A0,FITEM+8 GET MODE BITS @E@@@@ ZO )@@G@@ L A1,MI0OLDEQP GET OLD EQUIPMENT CODE@D@@@@ TGZP )@@G@@,U A1,011 MSA TAPE DEVICE?@ @@@@ TG,U A1,0ZQ )@@G@@16 @D@@@@ J FIT118 NO, NON-MSA TAPE@[@@@@ZR )@@G@@. @B@@@@. TEMPORARY TAPE FILE ON MSA TAPE DEVICE: @E@@@@. UNIVAC'S DZS )@@G@@OCUMENTATION SAYS THAT THE NON-MSA TAPE MODES @F@@@@. CELL IN MI0+21,,ZT )@@G@@S4 IS ZERO FOR MSA TAPES, BUT THIS IS NOT TRUE. @[@@@@. @E@@@@ ZU )@@G@@ LA,U A2,010 ASSUME LOW DENSITY @D@@@@ TEZV )@@G@@P,U A0,1*/14 LOW DENSITY SET?@B@@@@ LA,U A2,0ZW )@@G@@20 YES @E@@@@ TEP,U A0,1*/15 HIGH DENSIZX )@@G@@TY SET? @B@@@@ LA,U A2,030 YES @D@@@@ ZY )@@G@@ TG,U A1,013 7-TRACK UNIT? @D@@@@ J ZZ )@@G@@ $+3 NO, 9-TRACK @E@@@@ TOP,U A0,1*/12 AA )@@G@@ YES, EVEN PARITY? @F@@@@ AA,U A2,040 AB )@@G@@ YES, SET EVEN PARITY BIT @G@@@@ SA A2,TAPEMODES AC )@@G@@ SET NON-MSA MODES IN MAIN ITEM @[@@@@. @ @@@@. CONTINUE WITH MSAD )@@G@@A TAPE MODES@[@@@@. @F@@@@ LA,U A2,00200 ASSUAE )@@G@@ME QUARTER-WORD TRANSFER@D@@@@ TEP,U A0,1*/17 8-BIAF )@@G@@T PACKED? @B@@@@ LA,U A2,01000 YES @D@@@@ AG )@@G@@ TEP,U A0,1*/16 6-BIT PACKED? @B@@@@ LA,U AH )@@G@@ A2,00400 YES @F@@@@ TG,U A1,013 7-TRAI )@@G@@ACK MSA TAPE DEVICE? @D@@@@ J FIT114 NO, AJ )@@G@@9-TRACK UNIT@E@@@@ TOP,U A0,1*/13 DATA CONVERTER OAK )@@G@@N? @F@@@@ AA,U A2,01 YES, SET BIT FOR MAIN AL )@@G@@ITEM @F@@@@ SA A2,TMSAMODES STORE IN MAIN ITEM CELAM )@@G@@L @C@@@@ J FIT120 AND GO ON @D@@@@FIT114AN )@@G@@ . 9-TRACK UNIT @C@@@@ TEP,U AO )@@G@@ A0,1*/11 800 FPI? @F@@@@ AA,U A2,04000 AP )@@G@@ YES, SET HIGH-DENSITY BIT @E@@@@ SA A2,TMSAMODES AQ )@@G@@ STORE IN MAIN ITEM @C@@@@ J FIT120 AND AR )@@G@@GO ON @[@@@@. @B@@@@. TEMPORARY TAPE FILE ON NON-MSA DEVICE @[@@@@AS )@@G@@. @]@@@@FIT118 . @D@@@@ SSL A0,9 ADJUAT )@@G@@ST THEM @C@@@@ SA A0,TAPEMODES STORE THEM@[@@@@AU )@@G@@. @E@@@@. ALL TEMPORARY FILES: SET TIME/DATE OF ASG, ASG COUNT AV )@@G@@@[@@@@. @E@@@@FIT120 ER TDATE$ GET CURRENT TIMEAW )@@G@@/DATE @E@@@@ SA A0,DATLSTASG STORE AS LAST ASG TIMEAX )@@G@@@D@@@@ SR R15,TOTASGCNT TOTAL ASSIGNS @G@@@@ AY )@@G@@ SR R15,CURASGCNT NUMBER OF RUNS ASG'D TO THIS FILE @G@@@@AZ )@@G@@ J QF090 DON'T DO DREAD$ FOR TEMP/ARB FILE BA )@@G@@@[@@@@. @F@@@@. CATALOGUED FILE - DO MSCON$ DREAD$ FOR DIRECTORY INFBB )@@G@@ORMATION @[@@@@. @F@@@@QF070 LA,U A0,ASGIM MUSTBC )@@G@@ FIRST ASSIGN THE FILE @^@@@@ ER CSF$@E@@@@ JNBD )@@G@@ A0,QF410 HANDLE ASSIGN ERROR @E@@@@ SR BE )@@G@@ R15,SFASG ASSIGN OK - SET FLAG @]@@@@QF080 . @D@@@@ BF )@@G@@ DO SNAPOK>0 , SZ RDPKT+4 SET FOR SECTOR 0@G@@@@ LA BG )@@G@@ A0,(03400,RECSTART) . SET UP DREAD$ FOR LEAD ITEM @C@@@@ SABH )@@G@@ A0,RDPKT+3 STORE ACW @E@@@@ LA,U A0,RDPKT BI )@@G@@ GET DREAD$ PKT ADDR @D@@@@ ER MSCON$ BJ )@@G@@ DREAD$ FOR LI0 @D@@@@ JN A0,QF420 HANDLE ERRBK )@@G@@OR @G@@@@ LA A0,(07001,RECSTART+28) . RESET DREAD$ FOBL )@@G@@R MI0 & 1 @E@@@@ SA A0,RDPKT+3 STORE IN DREAD$ BM )@@G@@ PKT @E@@@@ LA,U A0,RDPKT SET UP DREAD$ PACKET BN )@@G@@@D@@@@ ER MSCON$ DO DREAD$ MSCON$@E@@@@ BO )@@G@@ JN A0,QF420 NO GOOD? TELL USER @D@@@@ SZBP )@@G@@ FLAGS1 CLEAR TAP,GFIL @D@@@@ SZ RDISBQ )@@G@@C CLEAR RDISC FLAG@D@@@@ TP LI0STAT BR )@@G@@ G-OPTION FILE? @D@@@@ SR R15,GFIL YES, SET FBS )@@G@@LAG @ @@@@ ON OLDMFD @E@@@@ LA A0,DBT )@@G@@ESCFLAGS GET DESCRIPTOR FLAGS @D@@@@ TOP,U A0,OLDBIT BU )@@G@@ OLD FORMAT ITEM?@D@@@@ J QF084 NO, BV )@@G@@SKIP AHEAD @F@@@@ SZ MFD$F CLEAR NEW-FORMATBW )@@G@@ MFD FLAG @C@@@@ LA A0,LI0OLDEQP GET MEDIUM@C@@@@BX )@@G@@ TE,U A0,075 8414/24 @E@@@@ TNE,U BY )@@G@@ A0,076 OR 8440 REM DISC? @E@@@@ SR R15,BZ )@@G@@RDISC YES, SET RDISC FLAG @C@@@@ TLE,U A0,020 CA )@@G@@ TAPE FILE?@D@@@@ SR R15,TAP YES, SET FCB )@@G@@LAG @C@@@@ J QF090 GO ON @F@@@@QF084 CC )@@G@@ SR R15,MFD$F SET NEW-FORMAT MFD FLAG @ @@@@ CD )@@G@@ OFF OLDMFD @F@@@@ LA A0,FILTYP GET CE )@@G@@FILE TYPE FROM LEAD ITEM@F@@@@ JZ A0,QF090 JUMPCF )@@G@@ IF FIXED MASS STORAGE @D@@@@ TNE,U A0,TAPTYP MAGNCG )@@G@@ETIC TAPE? @D@@@@ SR R15,TAP YES, SET FLAG CH )@@G@@@E@@@@ TNE,U A0,REMTYP REMOVABLE DISC FILE? @D@@@@CI )@@G@@ SR R15,RDISC YES, SET FLAG @ @@@@ ONCJ )@@G@@ CHKPCT @[@@@@. @F@@@@. IF THE USER HAS ASSIGNED THE FILE CK )@@G@@(RATHER THAN @MFD ITSELF, @G@@@@. TO DO THE DREAD$), THEN WE CAN GETCL )@@G@@ ADDITIONAL INFORMATION ON THE FILE @G@@@@. FROM THE USER'S PCT. IF THECM )@@G@@ FILE IS A TEMPORARY REMOVABLE DISC FILE, @F@@@@. FOR INSTANCE, THIS IS CN )@@G@@THE ONLY WAY WE WILL GET THE PACKID(S). @G@@@@. ALSO, SINCE THE DIRECTCO )@@G@@ORY IS NOT UPDATED UNTIL THE USER FREES THE @G@@@@. FILE, THE DREAD$CP )@@G@@ MAY NOT PROVIDE UP-TO-DATE INFORMATION ON SUCH ITEMS @G@@@@. AS THE GRACQ )@@G@@NULE COUNTS, ETC. THIS INFORMATION MAY BE MORE CURRENT @D@@@@. IN TCR )@@G@@HE PCT, IF THE INFORMATION IS NOT IN EXPOOL. @[@@@@. @G@@@@QF090 CS )@@G@@ TZ SFASG ASG'D BY SINGLE-FILE MODE ROUTINE?@E@@@@CT )@@G@@ J PCT700 YES, DON'T SEARCH PCT @E@@@@ CU )@@G@@ TZ TAP CATALOGUED TAPE FILE? @^@@@@ TZCV )@@G@@ TEMP@D@@@@ J $+2 NO, CHECK PCT CW )@@G@@@F@@@@ J PCT700 YES, DON'T BOTHER WITH PCT CX )@@G@@@[@@@@. @F@@@@. PCT DOES NOT SEEM TO HAVE CORRECT HIGHEST/TOTAL TRACCY )@@G@@K COUNTS @C@@@@. WHEN CATALOGUED FILE IS EXCLUSIVELY ASSIGNED @[@@@@CZ )@@G@@. @D@@@@ TZ TEMP TEMPORARY FILE? @E@@@@DA )@@G@@ J QF092 YES, SKIP X-ASG TEST @E@@@@ DB )@@G@@ LA A0,INHIBITS GET INHIBIT FLAGS @C@@@@ TEDC )@@G@@P,U A0,XUSE ASG,X ? @E@@@@ J PCT700 DD )@@G@@ YES, SKIP PCT SEARCH @F@@@@QF092 LA A0,QUAL DE )@@G@@ GET FIRST WORD OF QUALIFIER @F@@@@ LA A1,FILE DF )@@G@@ AND FIRST WORD OF FILENAME @[@@@@. @F@@@@. SYS$*LIB$ PCT ITEM DOEDG )@@G@@S NOT HAVE GRANULE COUNTS...DON'T USE IT @[@@@@. @E@@@@ DTDH )@@G@@E A0,('SYS$ LIB$ ') . IS FILE SYS$*LIB$ @C@@@@ J DI )@@G@@ $+2 NO, GO ON @F@@@@ J PCT700 DJ )@@G@@ YES, DON'T BOTHER WITH PCT @G@@@@ LX,U X10,0 DK )@@G@@ INDICATE NOT 'PCTDAD' SUB CALL @C@@@@ J PCT000 DL )@@G@@ GO ON @[@@@@. @F@@@@. ENTRY POINT FOR USE BY 'PRINT' ROUDM )@@G@@TINE IF DAD/GTB SNAP IS WANTED@^@@@@. FOR A TEMPORARY FILE. @[@@@@. DN )@@G@@@F@@@@PCTDAD* . ENTER VIA LMJ X10,PCTDAD DO )@@G@@@[@@@@. @]@@@@PCT000 . @ @@@@ ON LDJOK @D@@@@DP )@@G@@ LXI,U X11,PCTBD$ GET BDI FOR PCT @D@@@@ LDDQ )@@G@@J X11,PCT100 LOAD PCT BANK @F@@@@$(0). DR )@@G@@ THESE INSTRUCTIONS IN IBANK @]@@@@PCT100 . @[@@@@. DS )@@G@@@D@@@@. CHECK FOR 1108 OR 1110, AND GET PROPER PCT ADDRESS @[@@@@. DT )@@G@@@H@@@@ LX,U X4,RPCTA$-1 X4 = RELATIVE PCT ADDRESS FODU )@@G@@R 1108/6 @D@@@@ DI,U A4,0 DIVIDE BY ZERO DV )@@G@@@E@@@@ JNDF U1108 IF 1108, ALWAYS JUMPS @F@@@@DW )@@G@@ LX,U X4,RPCTA$ 1110 - GET REL PCT ADDR @ @@@@DX )@@G@@ OFF LDJOK @ @@@@ ON LDJOK=0 @E@@@@DY )@@G@@ L,U A0,PCTBUF GET ADDR OF PCT BUFFER@F@@@@ DZ )@@G@@ L A1,(01000,0) REQUEST FIRST PCT BLOCK @^@@@@ EA )@@G@@ ER PCT$@F@@@@ L,U A0,0777241 FAKE ADDR EB )@@G@@OF PCTNAM, SINCE @F@@@@ S A0,PCTNAM LINKS WILLEC )@@G@@ BE RELATIVE TO IT@E@@@@ LX,U X4,PCTBUF POINT TO PED )@@G@@CT BUFFER @ @@@@ OFF LDJOK=0 @F@@@@U1108 A,U EE )@@G@@ X4,0241 POINT TO FIRST PCTNAM BUFFER@D@@@@ TNZ EF )@@G@@ X10 PCTDAD CALL? @C@@@@ J PCT120 EG )@@G@@ NO, GO ON @G@@@@ TZ PCTDADN YES: FIRSTEH )@@G@@ TIME FOR THIS FILE? @F@@@@ J PCTDAD2 NO, EI )@@G@@ALREADY HAVE ITEM LINK @]@@@@PCT120 . @D@@@@ DL A4,FEJ )@@G@@ITEM GET FILENAME @F@@@@PCT200 L X3,X4 EK )@@G@@ X3 = ADDR OF PCTNAM BUFFER @F@@@@ LXI,U X3,3 EL )@@G@@ SET FOR 3-WORD NAME ENTRIES @G@@@@ L,S3 A0,,X4 EM )@@G@@ GET NUMBER OF FILES THIS BUFFER @G@@@@ JZ A0,PCT500 EN )@@G@@ IF NONE, CHECK FOR ANOTHER BUFFER @D@@@@ AN,U A0,1EO )@@G@@ ADJUST FOR JGD @G@@@@ S A0,R1 EP )@@G@@ R1 = NUMBER OF FILES-1 FOR LOOP @[@@@@. @G@@@@. SINCE WE JUST DIEQ )@@G@@D A @USE, WE SHOULD FIND THE FILENAME ON FIRST TRY @[@@@@. @G@@@@ER )@@G@@PCT300 DTE A4,1,X3 CHECK FILENAME VS. NAME IN BUFFER ES )@@G@@@G@@@@ J PCT400 NO MATCH, TRY NEXT ENTRY IN ET )@@G@@BUFFER@G@@@@ L,H2 A0,3,X3 MATCH - PICK UP DESC TEU )@@G@@ABLE INDEX @D@@@@ A A0,X4 ADD PCTNAM ADDR EV )@@G@@@F@@@@ DO LDJOK=0 , LMJ A3,PCTLNK OBTAIN CORRECT PCT BLOCK EW )@@G@@@D@@@@ TNZ X10 PCTDAD CALL? @C@@@@ EX )@@G@@ J PCT305 NO, GO ON @G@@@@ LA,H2 A1,0EY )@@G@@,A0 GET LINK TO FIRST DAD/GTB ITEM @F@@@@ LXI,U EZ )@@G@@ A1,0,A0 GET DESC ITEM ADDR ALSO @E@@@@ SA FA )@@G@@ A1,PCTDADN UPDATE NEXT ITEM ADDR @E@@@@ J PCTDFB )@@G@@AD2 HANDLE SUBROUTINE CALL@[@@@@. @B@@@@. NO GRANULE COUNTFC )@@G@@S FOR TAPE/ARB FILES @[@@@@. @C@@@@PCT305 TNZ TAP FD )@@G@@ TAPE FILE?@D@@@@ TZ ARB OR ARB DEVFE )@@G@@ICE? @F@@@@ J PCT320 YES, SKIP GRANULE COUNFF )@@G@@TS @C@@@@ LA,S3 A1,3,A0 GET PCFIND@E@@@@ FG )@@G@@ TNE,U A1,1 EXPOOL ITEM EXISTS? @H@@@@ J FH )@@G@@ PCT320 YES, WON'T FIND GRANULE COUNTS HERE @G@@@@FI )@@G@@ L A3,A0 SET FOR TRANSFER OF GRANULE COUNTSFJ )@@G@@@E@@@@ LXI,U A3,-1 FROM DESC TABLE TO MI0@^@@@@FK )@@G@@ L,U A1,7@F@@@@ LXM,U X3,GRANULES+7 POINFL )@@G@@T TO LAST GRANULE ENTRY @C@@@@ LXI,U X3,-1 SET FM )@@G@@INC @ @@@@PCT310 L,H2 A2,016,*A3@E@@@@ SA,H2 A2,0FN )@@G@@,*X3 STORE GRANULE COUNTS @G@@@@ JGD A1,PCT310 FO )@@G@@ GET COUNTS FOR EQUIP TYPES 030-037@F@@@@ LA,H1 A1,0FP )@@G@@12,A0 GET HIGHEST TRACK WRITTEN @E@@@@ SA A1,HFQ )@@G@@ITRACK STORE IN MAIN ITEM @[@@@@. @C@@@@. SEE COMMENTS AT FR )@@G@@TAG 'MCTEQ' IN ELEMENT 'MFD' @[@@@@. @D@@@@PCT320 TNZ TEMPFS )@@G@@ TEMPORARY FILE? @F@@@@ J PCT600 FT )@@G@@ NO, NO NEED FOR MSALL$, ETC.@H@@@@ TNZ MCTEQ FU )@@G@@ ANYTHING IN SPECIFIC MNEMONIC TABLE? @C@@@@ J PCT3FV )@@G@@25 NO, GO ON @H@@@@ L,T1 X3,1,A0 YES,FW )@@G@@ PICK UP EQUIP INDEX FROM PCT ITEM @E@@@@ L A1,MCTEQ-1FX )@@G@@,X3 GET SPECIFIC MNEMONIC @F@@@@ S A1,MNEMONIC FY )@@G@@ STORE IN MAIN ITEM SECTOR 0 @C@@@@ J PCT330 FZ )@@G@@ GO ON @]@@@@PCT325 . @ @@@@ ON OLDMFD @G@@@@GA )@@G@@ SZ MFD$F WELL, CAN'T BE NEW FORMAT 'MFD' GB )@@G@@@ @@@@ OFF OLDMFD @C@@@@PCT330 TNZ TAP GC )@@G@@ TAPE FILE?@D@@@@ TZ ARB OR ARB DEVGD )@@G@@ICE? @E@@@@ J PCT600 YES, ALL DONE WITH PCTGE )@@G@@@ @@@@ ON FATSIZ=0 @D@@@@ J PCT600 GF )@@G@@ RETURN TO NORMAL@ @@@@ OFF FATSIZ=0 @ @@@@ GG )@@G@@ ON FATSIZ @H@@@@ TNZ,H1 014,A0 TEMPGH )@@G@@ FILE WITH PACKID LINK (REMOVABLE) @E@@@@ J PCT600 GI )@@G@@ NO, NO NEED FOR MSALL$@[@@@@. @F@@@@. IT'S A TEMPORARY REMOVGJ )@@G@@ABLE DISC FILE - GET FATBL TO FIND PACKIDS@[@@@@. @F@@@@ S GK )@@G@@ A0,X4 STORE DESC ITEM ADDR IN X4 @E@@@@ L,GL )@@G@@U A0,FATPK GET MSCON$ PACKET @C@@@@ ER GM )@@G@@ MSCON$ DO MSALL$ @E@@@@ JN A0,PCT600 GN )@@G@@ IF NO GOOD, FORGET IT @F@@@@ L X3,MSBEG GET GO )@@G@@STARTING MS DEVICE INDEX@F@@@@ AN,T1 X3,1,X4 - EQGP )@@G@@UIP INDEX FOR THIS FILE @E@@@@. = INGQ )@@G@@DEX INTO FATBL @ @@@@ ON OLDMFD @D@@@@ TZGR )@@G@@ MSBEG NEW-TYPE FATBL? @C@@@@ J $+3 GS )@@G@@ YES, GO ON@F@@@@ L,S1 X3,1,X4 NO, GT )@@G@@GET OLD EQUIPMENT CODE @E@@@@ AN,U X3,030 ADJUGU )@@G@@ST FOR FATBL INDEX@ @@@@ OFF OLDMFD @F@@@@ L,GV )@@G@@H1 A0,014,X4 GET REL LINK TO PACKID TABLE@E@@@@ A GW )@@G@@ A0,X4 ADD CURRENT ITEM ADDR @F@@@@ DO LDJOKGX )@@G@@=0 , LMJ A3,PCTLNK OBTAIN CORRECT PCT BLOCK @F@@@@ S GY )@@G@@ A0,X4 X4 = ADDR OF PACKID TABLE @F@@@@ L GZ )@@G@@ A1,X3 A1 = EQUIP INDEX INTO FATBL @ @@@@ ON HA )@@G@@ OLDMFD @D@@@@ TZ MSBEG NEW-TYPE FATBL? HB )@@G@@@C@@@@ J $+3 YES, GO ON@G@@@@ TNHC )@@G@@Z,H1 FATBL,A1 ANY OF THESE DISCS CONFIGURED? @F@@@@ HD )@@G@@ J PCT600 NO, FORGET THE WHOLE THING @ @@@@ HE )@@G@@ OFF OLDMFD @G@@@@ L,H1 X3,FATBL,A1 YES,HF )@@G@@ GET LINK TO STATUS TABLE @H@@@@ A,U X3,FATBL HG )@@G@@ X3 = ABS LOC OF STATUS TBL IN FATBL @E@@@@ L,T1 R3,,HH )@@G@@X3 R3 = NUMBER OF UNITS @D@@@@ JGD R3,$+1 HI )@@G@@ ADJUST FOR JGD @G@@@@ A X3,(5,3) SET HJ )@@G@@INC, MOVE UP TO UNIT INFO @[@@@@. @F@@@@. FOR EACH DISC UNIT IN HK )@@G@@FATBL, CHECK TO SEE IF THIS UNIT IS IN @ @@@@. THE FILE'S PACKID TABLHL )@@G@@E. @[@@@@. @G@@@@FAT100 L,H2 A0,,X4 GET NUMBERHM )@@G@@ OF PACKS THIS FILE @D@@@@ TG,U A0,11 MOREHN )@@G@@ THAN 10? @D@@@@ L,U A0,10 YES, LIMIT TO 10HO )@@G@@@G@@@@ S A0,R1 SET SEARCH REPEAT COUNT IN RHP )@@G@@1 @E@@@@ L,H1 A0,1,X3 GET SS/U FROM FATBL HQ )@@G@@@G@@@@ L,U A1,1,X4 GET ADDR OF 1ST SS/U IN TABLHR )@@G@@E @D@@@@ LXI,U A1,1 ONE-WORD ENTRIES@F@@@@HS )@@G@@ SE,H1 A0,,*A1 IS THIS UNIT ONE OF THEM? @E@@@@HT )@@G@@ J FAT200 NO, TRY NEXT UNIT @E@@@@ HU )@@G@@ S R15,RDISC YES, SET REM DISC FLAG@E@@@@ LAHV )@@G@@ A1,NBRPACKS BUMP PACK COUNT IN MI1@^@@@@ A,U HW )@@G@@ A1,1@A@@@@ SA A1,NBRPACKS @E@@@@ L HX )@@G@@ A0,4,X3 GET PACKID FROM FATBL @E@@@@. HY )@@G@@ AND STORE IT IN MI1 @F@@@@ LA,U A2,PACKENTHZ )@@G@@RY-1 POINT TO PACKID ENTRIES @E@@@@ AA,U A2,,A1 IA )@@G@@ ADD CURRENT INDEX @G@@@@ S A0,0,A2 IB )@@G@@ NOTE: WE ARE STORING UP TO 10 @G@@@@. IC )@@G@@ PACKIDS, IN ONE-WORD ENTRIES, @G@@@@. ID )@@G@@ WHEREAS NORMAL FORMAT IS UP TO 5 @E@@@@. IE )@@G@@ IN 2-WORD ENTRIES @G@@@@. IF )@@G@@ PRINT2 ROUTINE WILL HAVE TO CHECK @G@@@@. IG )@@G@@ FOR TEMP FILE, AND CHANGE THINGS @D@@@@. IH )@@G@@ ACCORDINGLY. @E@@@@FAT200 NOP 0,0,II )@@G@@*X3 INC TO NEXT UNIT ENTRY@D@@@@ JGD R3,FAT100 IJ )@@G@@ CHECK ALL UNITS @C@@@@ J PCT600 ALL IK )@@G@@DONE @ @@@@ OFF FATSIZ @[@@@@. @E@@@@. HAVE NOT YIL )@@G@@ET FOUND CORRECT PCT ITEM ...CONTINUE LOOKING @[@@@@. @H@@@@PCT400IM )@@G@@ NOP 0,0,*X3 INDEX TO NEXT ENTRY IN PCTNAM BUFFER IN )@@G@@@G@@@@ JGD R1,PCT300 CHECK ALL ENTRIES IN THIS BUIO )@@G@@FFER @G@@@@PCT500 . REACHED END OF THIS PCTIP )@@G@@NAM BUFFER @F@@@@ TNZ,H2 0,X4 DOES ANOTHER BUFIQ )@@G@@FER EXIST? @D@@@@ J PCT600 NO, THAT'S ALL IR )@@G@@@H@@@@ L,H2 A0,,X4 YES, GET LINK TO NEXT PCTNAMIS )@@G@@ BUFFER @F@@@@ A A0,X4 ADD ADDR OF CURRIT )@@G@@ENT BUFFER @F@@@@ DO LDJOK=0 , LMJ A3,PCTLNK OBTAIN CORRECT PIU )@@G@@CT BLOCK @G@@@@ S A0,X4 X4 = ADDR OF NEWIV )@@G@@ PCTNAM BUFFER @G@@@@ J PCT200 SEARCH NEWIW )@@G@@ BUFFER FOR FILENAME @[@@@@/. @[@@@@. @G@@@@. CONTINUATION OF IX )@@G@@'PCTDAD' SUBROUTINE. FINDS NEXT DAD/GRANULE ITEM @E@@@@. (FOR A PARIY )@@G@@TICULAR FILE) IN THE PCT, AND RETURNS IT TO THE @F@@@@. CALLER IN MI0. IZ )@@G@@THE ONLY CALLER AT THE TIME OF THIS WRITING @F@@@@. IS THE 'PRINT' RJA )@@G@@OUTINE, WHICH USES IT TO SNAP THE DAD/GTB OF @#@@@@. TEMPORARY FILES.JB )@@G@@@[@@@@. @F@@@@PCTDAD2 LA,H2 A0,PCTDADN PICK UP DAD/GTB JC )@@G@@ITEM LINK @F@@@@ JZ A0,PCT600 IF NO MORE, RETUJD )@@G@@RN 0,X10 @G@@@@ AA,H1 A0,PCTDADN IT'S RELATIVE TOJE )@@G@@ PREVIOUS ITEM @F@@@@ DO LDJOK=0 , LMJ A3,PCTLNK OBTAIN CORJF )@@G@@RECT PCT BLOCK @E@@@@ SA,H1 A0,PCTDADN STORE ADDRJG )@@G@@ OF NEW ITEM@E@@@@ LA,H2 A1,0,A0 GET LINK TO NEXTJH )@@G@@ ITEM @F@@@@ SA,H2 A1,PCTDADN AND STORE IT FOR NEXT JI )@@G@@CALL @F@@@@ LA,H1 A2,1,A0 GET GRANULE # OF 1ST GJJ )@@G@@RAN @F@@@@. IN ITEM ***OLDMFD ONLYJK )@@G@@*** @G@@@@ AA,U A0,3 BUMP TO START OF DAD/GJL )@@G@@TB INFO @D@@@@ LXI,U A0,1 SET INC FOR BT JM )@@G@@@F@@@@ LXM,U A1,MI0 SET BT DESTINATION AS MI0 JN )@@G@@@D@@@@ LXI,U A1,1 SET INC FOR BT @E@@@@ JO )@@G@@ LR,U R1,28 BT ONE DAD/GTB ITEM @D@@@@ BTJP )@@G@@ A1,,*A0 DO THE TRANSFER @E@@@@ LX,U X10,JQ )@@G@@1,X10 SET TO RETURN TO 1,X10@E@@@@. JR )@@G@@ FALL THRU TO PCT600 TO@G@@@@. JS )@@G@@ RETRIEVE DBANK & RTN TO CALLER @C@@@@/. ALL THROUGH WITH PCT ...RJT )@@G@@ELOAD MFD'S DBANK @[@@@@. @H@@@@PCT600 . JU )@@G@@ NO MORE BUFFERS, OR GOT WHAT WE WANTED @E@@@@ DO LDJOK>0 , LJV )@@G@@DJ X11,PCT610 RELOAD PROGRAM DBANK @G@@@@$(1). JW )@@G@@ THESE INSTRUCTIONS IN DBANK AGAIN @F@@@@PCT610 TZ X10 JX )@@G@@ WAS THIS A PCTDAD SUB CALL? @E@@@@ J 0,X1JY )@@G@@0 YES, RETURN TO CALLER @ @@@@ OFF CHKPCT JZ )@@G@@@[@@@@. @E@@@@PCT700 TZ ARB ARBITRARY DEVICEKA )@@G@@? @E@@@@ J QF400 YES, FREE THE USE NAMEKB )@@G@@@[@@@@. @F@@@@. IF FILE HAS MORE THAN ONE TAPE REEL, OR MORE THAN ONKC )@@G@@E PACKID, OR@G@@@@. MORE THAN ONE BACKUP REEL (IN BATCH MODE), THEN A SEKD )@@G@@COND LINE WILL @G@@@@. BE PRINTED WITH THIS INFORMATION. ROUTINE 'PRKE )@@G@@INT2' WILL DO DREAD$'S, @E@@@@. SO WE SHOULD NOT FREE THE FILE HERE IF TKF )@@G@@HIS IS THE CASE. @F@@@@. ALSO, NO FREE SHOULD BE DONE NOW IF A SNAP$ ISKG )@@G@@ REQUESTED FOR THE@G@@@@. GRANULE (DAD) ITEMS, LEAD ITEM SECTOR 1, OR MAKH )@@G@@IN ITEM SECTORS 2-N. @[@@@@. @ @@@@ ON SNAPOK KI )@@G@@@D@@@@ LA A0,SNAP GET SNAP BITS @E@@@@ KJ )@@G@@ AND,U A0,SNGT+SNL1+SNM2 FUNNY SNAP$ WANTED? @F@@@@ JNKK )@@G@@Z A1,QF500 YES, DON'T FREE THE FILE YET@ @@@@ OFKL )@@G@@F SNAPOK @C@@@@ TZ TEMP TEMP FILE?KM )@@G@@@E@@@@ J QF400 YES, FREE THE USE NAME@C@@@@KN )@@G@@ TNZ TAP TAPE FILE?@B@@@@ J KO )@@G@@ QF100 NO @F@@@@ LA A0,NBRREELS YES,KP )@@G@@ GET NUMBER OF REELS @D@@@@ TG,U A0,2 MOREKQ )@@G@@ THAN ONE? @F@@@@ J QF500 YES, DON'T FREE KR )@@G@@FILE (PRINT2@D@@@@. WILL DO IT). KS )@@G@@@E@@@@ TZ TMSAMODES MSA TAPE EQUIPMENT? @E@@@@KT )@@G@@ J QF500 YES, DON'T FREE FILE @F@@@@QF100 KU )@@G@@ JZ RDISC,QF200 REMOVABLE? NO,QF200 YES @E@@@@ KV )@@G@@ LA A0,NBRPACKS GET NUMBER OF PACKS @D@@@@ TGKW )@@G@@,U A0,2 MORE THAN ONE? @E@@@@ J QF50KX )@@G@@0 YES, DON'T FREE FILE @E@@@@QF200 LA A1,DESCFLAKY )@@G@@GS GET DESCRIPTOR BITS @G@@@@ JZ LONGLIST,QF400 KZ )@@G@@ IF SHORT LISTING, DON'T WORRY @F@@@@. LA )@@G@@ ABOUT BACKUPS OR LAPSES @C@@@@ TOP,U A1,BAKBIT LB )@@G@@ BACKED UP?@B@@@@ J QF300 NO @F@@@@LC )@@G@@ LA A0,BKUPREELS GET NUMBER OF BACKUP REELS @D@@@@LD )@@G@@ TG,U A0,2 MORE THAN ONE? @E@@@@ J LE )@@G@@ QF500 YES, DON'T FREE FILE @C@@@@QF300 TEP,U LF )@@G@@ A1,LPSBIT LAPSES? @E@@@@ J QF500 LG )@@G@@ YES, DON'T FREE FILE @[@@@@. @F@@@@. FREE THE @USE RELATIONSHIP. LH )@@G@@ IF THE USER ALREADY HAD THE FILE @G@@@@. ASSIGNED, JUST FREE THE INTELI )@@G@@RNAL NAME 'USE$'. OTHERWISE, FREE THE @E@@@@. NAME AND THE FILE (BUTLJ )@@G@@ RETAIN ANY OTHER @USE RELATIONS). @[@@@@. @D@@@@QF400 LA,U LK )@@G@@ A0,' ' ASSUME @FREE,A @G@@@@ TZ SFASG LL )@@G@@ ASG'D BY SINGLE-FILE MODE ROUTINE?@F@@@@ LA,U A0,'LM )@@G@@R' YES, DO @FREE,AR INSTEAD @E@@@@ SA,S2 A0,FLN )@@G@@REIM+1 STORE CORRECT OPTION @D@@@@ LA,U A0,FREIM LO )@@G@@ GET FREE IMAGE @C@@@@ ER CSF$ DO CLP )@@G@@SF$ @B@@@@ JZ A0,QF500 OK @[@@@@. @B@@@@LQ )@@G@@. ERROR ASSIGNING (OR FREEING) THE FILE @[@@@@. @G@@@@QF410 S LR )@@G@@ A0,ERRPKT+2 STORE FAC ERROR BITS FOR ERRPR$ @D@@@@ LS )@@G@@ LA,U A0,FREIM GET @FREE IMAGE @D@@@@ ER LT )@@G@@ CSF$ FREE USE NAME @E@@@@ LA,U A0,ERRPKT LU )@@G@@ POINT TO ERRPR$ PACKET@H@@@@QF415 ER ERRPR$ LV )@@G@@ EDIT THE INFO (IF ERRPR$ IS UNDEFINED, @I@@@@. LW )@@G@@ WE AUTOMATICALLY REVERT TO THE OLD METHOD) @F@@@@ LX )@@G@@ JZ A0,QF900 IF OK, TRY ANOTHER DATA CARD@E@@@@QF416 LY )@@G@@ LX,U X10,('FAC: &') GET ADDR OF ERROR MSG @F@@@@ LALZ )@@G@@ A0,ERRPKT+2 RESTORE FAC REJECT CODE @D@@@@ J MA )@@G@@ QF440 PRINT ERROR CODE@[@@@@. @ @@@@. ERROR DOINMB )@@G@@G MSCON$ DREAD$ @[@@@@. @E@@@@QF420 LX,U X10,('MSCON ERR:MC )@@G@@ &') . GET MSG ADDR @C@@@@ J QF440 PRINMD )@@G@@T IT @[@@@@. @C@@@@. ERROR TRYING TO DO A '@USE USE$,Q*F(C). ' ??? ME )@@G@@@[@@@@. @D@@@@QF430 LX,U X10,('USE: &') GET MSG ADDR MF )@@G@@@[@@@@. @ @@@@. PRINT CORRECT ERROR MSG @[@@@@. @D@@@@QF440 MG )@@G@@ SA A0,ECODE+1 HANG ON TO ERROR@C@@@@ E$DIT MH )@@G@@ EDPACK OPEN EDIT @C@@@@ E$MSG 0,X10 MI )@@G@@ EDIT MSG @D@@@@ E$OCTF 12,ECODE+1 EDIT ERROR CODE MJ )@@G@@@D@@@@QF450 P$RINT POUT PRINT ERROR MSG @E@@@@ MK )@@G@@ J QF900 TRY AGAIN VIA READ$ @[@@@@. @F@@@@ML )@@G@@. IF RUN IS PRIVILEGED AND QFK OPTIONS ARE SET, PRINT KEYS ONLY @[@@@@MM )@@G@@. @D@@@@QF500 TZ KPT K-OPTION SET? @E@@@@MN )@@G@@ TNZ PRIVLGD AND RUN PRIVILEGED? @E@@@@ MO )@@G@@ J MFD100 NO, DO NORMAL STUFF @D@@@@ E$MP )@@G@@DIT EDPACK YES, OPEN EDIT @C@@@@ E$FD2 QUALMQ )@@G@@ QUALIFIER @^@@@@ E$CHAR '*' @C@@@@ E$MR )@@G@@FD2 FILE FILENAME @^@@@@ E$CHAR '(' @C@@@@MS )@@G@@ E$DECV FCYCLE F-CYCLE @^@@@@ E$CHAR MT )@@G@@ ')' @^@@@@ E$CHAR '/' @C@@@@ E$COPY 6,RDKEY MU )@@G@@ READ KEY @^@@@@ E$CHAR '/' @C@@@@ E$COPY MV )@@G@@ 6,WRKEY WRITE KEY @C@@@@ J QF450 MW )@@G@@ PRINT IT @B@@@@/ ON (CHKPCT>0)**(LDJOK=0) @[@@@@. MX )@@G@@@F@@@@. THIS SUBROUTINE IS FOR USE WHEN LDJ OF PCT BANK IS NOT DESIRED MY )@@G@@@F@@@@. (LDJOK EQU 0). IT CONVERTS THE RELATVIE PCT BUFFER ADDRESS MZ )@@G@@@G@@@@. INTO AN ADDRESS USABLE BY ER PCT$, AND LOADS THE PROPER PCT BLONA )@@G@@CK. @G@@@@. UPON EXIT, A0 CONTAINS THE ADDRESS WITHIN PCTBUF CORRESPONNB )@@G@@DING TO @A@@@@. THE DESIRED PCT RELATIVE ADDRESS. @[@@@@. @H@@@@NC )@@G@@PCTLNK TG,U A0,PCTBUF+01000 ADDR IN CURRENTLY-LOADED PCT BLOCKND )@@G@@? @B@@@@ J NOTCUR NO @E@@@@ L NE )@@G@@ A1,A0 YES, GET ADDR IN A1 @H@@@@ AN NF )@@G@@ A1,X4 SUBTRACT REL PCTBUF ADDR, LEAVING LINK @F@@@@ NG )@@G@@ A A1,PCTNAM ADD CURRENT ITEM BASE ADDR @E@@@@ NH )@@G@@ S A1,PCTNAM STORE NEW BASE ADDR @H@@@@ J NI )@@G@@ 0,A3 RETURN WITH A0=REL ADDR WITHIN PCTBUF @[@@@@NJ )@@G@@. @ @@@@. DESIRED BLOCK NOT IN PCTBUF @[@@@@. @H@@@@NOTCUR ANNK )@@G@@ A0,X4 SUBTRACT REL PCTBUF ADDR, LEAVING LINK @E@@@@NL )@@G@@ A,H2 A0,PCTNAM ADD CURRENT ITEM BASE @D@@@@ NM )@@G@@ S,H2 A0,PCTNAM STORE NEW BASE @E@@@@ AND,U NN )@@G@@ A0,0777000 ISOLATE BLOCK NUMBER @D@@@@ A,U A1,0NO )@@G@@1000 ADJUST FOR PCT$ @D@@@@ LXI,U A1,01000 NP )@@G@@ GET 1 PCT BLOCK @D@@@@ S A0,A2 SAVE REL ANQ )@@G@@DDR @E@@@@ L,U A0,PCTBUF GET ADDR OF PCT BUFFERNR )@@G@@@D@@@@ ER PCT$ GET PCT BLOCK @D@@@@ NS )@@G@@ L A0,A2 RETRIEVE ADDR @E@@@@ AND,U NT )@@G@@ A0,0777 MASK OUT BLOCK INFO @F@@@@ L,U A0,PNU )@@G@@CTBUF,A1 FORM REL ADDR INTO PCTBUF @C@@@@ J 0,A3NV )@@G@@ RETURN @B@@@@ OFF (CHKPCT>0)**(LDJOK=0) NW )@@G@@@F@@@@/. CSF$ CONTINGENCY ROUTINE FOR BAD FILENAME INPUT VIA READ$. NX )@@G@@@[@@@@. @^@@@@QF700 + 0D @F@@@@ LA,T1 A0,QNY )@@G@@F700 GET ERROR TYPE AND CODE @F@@@@ TE,U A0,0NZ )@@G@@440 SYNTAX ERROR ON CSF$ CALL? @F@@@@ J QF71OA )@@G@@0 NO, CHECK SOME MORE THINGS @D@@@@ P$RINT (PRTOB )@@G@@ 1,4,ERR4) PRINT ERROR MSG @F@@@@ J QF900 OC )@@G@@ AND TRY ANOTHER DATA CARD @E@@@@QF710 TE,U A0,0401 OD )@@G@@ ER INDEX OUT OF RANGE?@E@@@@ TNE,U A0,0403 OOE )@@G@@R NOT IN USE? @G@@@@ J $+2 YES, MAY BOF )@@G@@E ATTEMPT AT ER ERRPR$ @F@@@@ ER EABT$ NO, OG )@@G@@BETTER LUCK NEXT TIME @E@@@@ LA,H2 A0,QF700 GET OH )@@G@@ERROR ADDRESS @E@@@@ TE,U A0,QF415 ER ERRPR$ OI )@@G@@ROUTINE? @E@@@@ ER EABT$ NO, SOMEBODY GOOOJ )@@G@@FED @E@@@@ J QF416 YES, DO IT THE OLD WAYOK )@@G@@@B@@@@. USE READ$ TO GET ANOTHER FILE TO DO @[@@@@. @G@@@@QF900*OL )@@G@@ SR R15,SFMODE RESET SINGLE-FILE MODE INDICATOR @D@@@@OM )@@G@@ LA A0,(MFD700,RBUFF) GET READ$ PACKET@D@@@@ ERON )@@G@@ READ$ READ A CARD @C@@@@ J QF92OO )@@G@@0 GO AHEAD @D@@@@QF910 LA A0,('TPF$ ') NO, OP )@@G@@ASSUME TPF$ @D@@@@ SA A0,RBUFF PUT IT IN IMAGE OQ )@@G@@@E@@@@ LA,U A0,1 FUDGE FOR 1 WORD READ @G@@@@OR )@@G@@QF920 LA,U A1,' . ' GET SET TO TERMINATE THE IMAGE OS )@@G@@@G@@@@ TZ,U 0,A0 SKIP IF REPEATING PREVIOUS FOT )@@G@@ILE @G@@@@ SA,H1 A1,RBUFF,A0 TERMINATE WITH SPACE-POU )@@G@@ERIOD-SPACE @D@@@@ J QF020 DO THE @USE OV )@@G@@@#@@@@ END ___ A0,X4 SUBTRACT REL PCTBUF ADOW )@@G@@DR, LEAVING LINK @E@@@@ A,H2 A0,PCTNAM ADD CURRENOX )@@G@@T ITEM BASE @D@@@@ *[S@@@*SDFF*@ @@@@. @MFD SORT INTERFACE ROUTINESOY )@@G@@@[@@@@. @[@@@@. @G@@@@. M.I. SEC 0 WORDS 18-19, WHICH CONTAIN THOZ )@@G@@E DATE/TIME OF LAST REFERENCE @G@@@@. AND OF CATALOGUING, ARE MODIFIED SPA )@@G@@O THAT THEY ARE MORE EASILY SORTED. @[@@@@. @H@@@@. ------------PB )@@G@@------------------------------------------------------- @H@@@@. PC )@@G@@: YEAR : MON : DAY : TIME : PD )@@G@@@H@@@@. ------------------------------------------------------------PE )@@G@@------- @B@@@@. : : @B@@@@. PF )@@G@@:<-- THIS PORTION IS SORTED -->: @[@@@@. @G@@@@. TWO EXTRA WORDS PG )@@G@@ARE SORTED ALONG WITH LI0/MI0/MI1, TO SAVE FLAGS, ETC.@[@@@@. @H@@@@PH )@@G@@. ------------------------------------------------------------------PI )@@G@@- @H@@@@. : : BAK : RDISC : TOTAL SIZE PJ )@@G@@ : @H@@@@. ------------------------------------------PK )@@G@@------------------------- @H@@@@. : PL )@@G@@FLAGS : @H@@@@. ------------------PM )@@G@@------------------------------------------------- @[@@@@. @C@@@@PN )@@G@@. 'BAK' IS BACKED-UP FLAG IN A13, AND 'RDISC' @F@@@@. IS REMOVABLE-DISPO )@@G@@C FLAG IN A14. TOTAL SIZE IS NUMBER ACCUMULATED@ @@@@. IN A15 BY 'CHECKPP )@@G@@' ROUTINE. @[@@@@. @^@@@@ AXR$ . @G@@@@ COPQ )@@G@@NFIG . DEFINE CONFIGURATION PARAMETERS @D@@@@ PR )@@G@@ EQUFS . DEFINE TAGS @ @@@@ ON PS )@@G@@ SORTOK @E@@@@NREC + NFILES/2 NUMBER OF RECORDPT )@@G@@S @E@@@@NCHAR + RECCHAR CHARACTERS PER RECORD PU )@@G@@@[@@@@. @B@@@@$(1). CALL SORTF TO ASSIGN SORT FILES @[@@@@. PV )@@G@@@E@@@@OPNSRT* SR R15,SORTED MARK SORT-SEG-LOADED @E@@@@PW )@@G@@ LA,U A0,NFILES GET NUMBER OF FILES @G@@@@ PX )@@G@@ TZ ZPT PRIVILEGED AND DOING EVERYTHING? @F@@@@PY )@@G@@ SA A0,NREC YES, BETTER INCREASE NREC @D@@@@PZ )@@G@@ DO SRTDBG , P$RINT (0101,('SORTF ')) @E@@@@ LMQA )@@G@@J X11,SORTF ASSIGN SORT FILES @E@@@@ + QB )@@G@@ NREC NUMBER OF RECORDS @F@@@@ + NCHAQC )@@G@@R NUMBER OF CHAR PER RECORD @B@@@@ + 0 QD )@@G@@ WB @F@@@@NOSORTF* R$OPN SORTBL OPEN SORT,QE )@@G@@ RETURN TO FPOC @F@@@@. DON'T NEED PARAMETER CARD PROCESSING, SO REPLAQF )@@G@@CE KPARCD WITH: @[@@@@. @ @@@@ROPN$* LMJ X1,RSTRG$ @#@@@@QG )@@G@@ 'ROPN$ '@ @@@@ J RBPN$ @]@@@@RTMIN$* . QH )@@G@@@]@@@@RTMAX$* . @]@@@@RTPT$* . @]@@@@RTST$* . @]@@@@RTMT$* . QI )@@G@@@]@@@@RLBLK$* . @[@@@@. @^@@@@. RELEASE RECORD TO SORT@[@@@@. QJ )@@G@@@]@@@@GOTREC* . @G@@@@ SA BACKEDUP,SAVEBAK SAVE RDISCQK )@@G@@ AND BACKED-UP FLAGS @A@@@@ SA RDISC,SAVERDISC @D@@@@QL )@@G@@ DO SRTDBG , P$RINT (0101,('RREL$ ')) @E@@@@ L,QM )@@G@@U A0,RECSTART PASS THIS FILE TO SORT@^@@@@ R$REL QN )@@G@@ . @G@@@@ J CHK000 GET NEXT FILE (SEG IS QO )@@G@@LOADED) @[@@@@. @B@@@@. DIRSEC EOF HAS OCCURRED; DO THE SORT QP )@@G@@@[@@@@. @]@@@@DOSORT* . @D@@@@ DO SRTDBG , P$RINT QQ )@@G@@(0101,('RSORT$')) @F@@@@ R$SORT . DO THE SORQR )@@G@@T, RETURN TO LPOC @]@@@@LPOC* . @D@@@@ DO SRTDBG , PQS )@@G@@$RINT (0101,('LPOC ')) @[@@@@. @F@@@@. GET NEXT RECORD FROM SORT, AQT )@@G@@ND JUMP TO PRINT ROUTINE WITH IT @[@@@@. @]@@@@SRTNXT* . @D@@@@QU )@@G@@ DO SRTDBG , P$RINT (0101,('RRET$ ')) @H@@@@ R$QV )@@G@@RET SRTEOF . GET NEXT RECORD - IF EOF, GO TO SRTEOF @F@@@@QW )@@G@@ LX,U X8,,A0 POINT TO LI0/MI0/MI1 ETC. @F@@@@QX )@@G@@ LA BACKEDUP,SAVEBAK RETRIEVE RDISC, BAK FLAGS @A@@@@QY )@@G@@ LA RDISC,SAVERDISC @D@@@@ LA FILESIZE,SQZ )@@G@@AVESIZE RETRIEVE SIZE @H@@@@ J PR000 JUMPRA )@@G@@ TO PRINT ROUTINE (SEG IS LOADED) @[@@@@. @A@@@@. EOF STATUS RECEIRB )@@G@@VED FROM SORT @[@@@@. @E@@@@SRTEOF TNZ SFMODE2 RC )@@G@@ SINGLE-FILE MODE? @E@@@@ J MFD600 NO, RD )@@G@@RETURN TO MAIN SEG@F@@@@ J QF900 YES, RETURRE )@@G@@N FOR ANOTHER FILE@ @@@@ OFF SORTOK @#@@@@ ENRF )@@G@@D ___ERS PER RECORD @[@@@@. @B@@@@$(1). CALL SORTF TO ASSIGN SORRG )@@G@@*[S@@@*SDFF*@A@@@@. @MFD SUMMARY PRINTING ROUTINE @[@@@@. @E@@@@RH )@@G@@. CALLED AT TERMINATION UNLESS SINGLE-FILE MODE IS SET. @G@@@@. ALSORI )@@G@@ CALLED BY 'PRINT' ROUTINE IF THE 'BREAK' FEATURE IS TURNED ON @G@@@@RJ )@@G@@. AND THE NEW FILE DIFFERS FROM THE PREVIOUS FILE IN THE SPECIFIED WAY. RK )@@G@@@G@@@@. IN THAT CASE, WE PRINT EACH LEVEL OF SUBTOTALS UP TO THE LEVEL ARL )@@G@@T @ @@@@. WHICH THE BREAK OCCURRED. @[@@@@. @^@@@@ AXRM )@@G@@R$ . @G@@@@ CONFIG . DEFINE CONFIGURARN )@@G@@TION PARAMETERS @D@@@@ EQUFS . DEFINE TAGRO )@@G@@S @F@@@@TOTM01 'TRKS&: FIXED=&' TOTAL FIXED STORAGE ONRP )@@G@@-LINE @B@@@@TOTM02 ' REMOV=& V-OPT=& G-OPT=&' @B@@@@TOTM03 ' RQ )@@G@@ TOTAL BACKUP TAPE BLOCKS=&' @E@@@@TOTM04 'FILES: TOTAL=&' RR )@@G@@ TOTAL FILES PRINTED @F@@@@TOTM05 ' TAPES=&' TOTARS )@@G@@L CAT'D TAPES PRINTED @ @@@@ ON DSGUNL @ @@@@UNL RT )@@G@@ ' UNL=& TOTAL=&' @ @@@@ OFF DSGUNL @D@@@@PRT RU )@@G@@ FORM 12,6,18 PRINT$ FORM @ @@@@ ON RV )@@G@@ BRKOK @D@@@@GRAND 'GRAND TOTALS:' FOR GRAND TOTALSRW )@@G@@@A@@@@GRANDP PRT 2,$-GRAND,GRAND @^@@@@TOTALS 'TOTALS FOR &'RX )@@G@@@#@@@@NON 'NON-&' @^@@@@WHAT '?? '@[@@@@. @^@@@@RY )@@G@@P PROC 2 @^@@@@BRK* NAME . @ @@@@ + RZ )@@G@@ P(1,1) @ @@@@ J P(2,1) @#@@@@ ENSA )@@G@@D @[@@@@. @B@@@@TOTTAB BRK 'QUALIFIER ' TOTFD2 @B@@@@SB )@@G@@ BRK 'FILENAME ' TOTFD2 @B@@@@ BRK 'PROSC )@@G@@JECT ' TOTFD2 @B@@@@ BRK 'ACCOUNT ' TOTFD2 @B@@@@SD )@@G@@ BRK 'TYPE ' TOTFD1 @B@@@@ BRK 'REESE )@@G@@L ' TOTFD1 @B@@@@ BRK 'BACKUP ' TOTFD1 @B@@@@SF )@@G@@ BRK 'PACKID ' TOTFD1 @B@@@@ BRK 'ASGSG )@@G@@-COUNT ' TOTDECV@B@@@@ DO OLDMFD>0 , BRK 'EQUIPMENT ' TOTOCTV@B@@@@SH )@@G@@ BRK 'FCYCLE ' TOTDECV@B@@@@ BRK 'REFSI )@@G@@-DATE ' TOTDATE@B@@@@ BRK 'CAT-DATE ' TOTDATE@B@@@@SJ )@@G@@ BRK 'DISABLED ' TOTBIT @B@@@@ BRK 'UNLSK )@@G@@OADED ' TOTUNL @B@@@@MASSMSG BRK 'MASS-STORAGE' TOTMASS@B@@@@SL )@@G@@TAPEMSG BRK 'TAPE ' TOTTAPE@B@@@@ BRK 'REMSM )@@G@@OVABLE ' TOTREM @B@@@@ BRK 'GOPT ' TOTBIT @B@@@@SN )@@G@@ BRK 'VOPT ' TOTBIT @B@@@@PRIMSG BRK 'PRISO )@@G@@VATE ' TOTPRI @B@@@@PUBMSG BRK 'PUBLIC ' TOTPUB @A@@@@SP )@@G@@TOTTABL EQU ($-TOTTAB)/3 @^@@@@FIXMSG 'FIXED '@#@@@@SQ )@@G@@NONEMSG ''@^@@@@LODMSG 'LOADED '@ @@@@ OFF SR )@@G@@ BRKOK @#@@@@/$(1),TOT000* . @ @@@@ ON BRKOK=0 SS )@@G@@@H@@@@ LX,U X4,0 BE SURE WE'RE LOOKING AT GRAST )@@G@@ND TOTALS @ @@@@ OFF BRKOK=0 @ @@@@ ON SU )@@G@@ BRKOK @G@@@@ LX X4,BRKCNT START WITH LOWESSV )@@G@@T LEVEL BREAK @E@@@@ TNZ BRKCNT ANY BREAKSSW )@@G@@ SPECIFIED? @B@@@@ J TOT100 NO @]@@@@TOT010SX )@@G@@ . @D@@@@ TNZ X4 GRAND TOTALS? @B@@@@SY )@@G@@ J TOT090 YES @C@@@@ E$DIT EDPASZ )@@G@@CK OPEN EDIT @D@@@@ E$MSG TOTALS STARTA )@@G@@T MESSAGE @D@@@@ LA A0,BRKCNT GET BREAK COUNT TB )@@G@@@G@@@@ ANA A0,X4 NUMBER OF LOWER LEVELS TO SKTC )@@G@@IP @G@@@@ MSI,H1 A0,BRKPNT MULTIPLY BY LENGTH OF TD )@@G@@ENTRIES @E@@@@ LX X5,BRKPNT GET TABLE POINTETE )@@G@@R @G@@@@ AX X5,A0 SKIP PROPER NUMBER OF TF )@@G@@ENTRIES @G@@@@ LR R4,X4 MOVE CURRENT BRETG )@@G@@AK LEVEL TO R4 @E@@@@ JGD R4,$+1 ADJUST FORTH )@@G@@ LOOP COUNT @F@@@@TOT020 LA,H2 A0,BRKSPEC,X5 GET 1ST 3 CHARS TI )@@G@@OF SPEC @H@@@@ LX X10,(3,TOTTAB-3) INITIALIZE SEARCTJ )@@G@@H INDEX AND INCREMENT @E@@@@ LR,U R1,TOTTABL SET TK )@@G@@SEARCH LENGTH @E@@@@ SE,H1 A0,3,*X10 FIND SPEC TL )@@G@@IN TABLE? @C@@@@ J TOTWHAT NO, USE ??@G@@@@TM )@@G@@ LA A0,BRKVAL,X5 LOAD FORMER CONTENTS OF FIELD TN )@@G@@@F@@@@ EX 2,X10 YES, JUMP TO PROPER ROUTINE TO )@@G@@@]@@@@TOTWHAT . @G@@@@ TP BRKLOAD,X5 IS VALUE TTP )@@G@@WO FIELDATA WORDS (DL ?)@D@@@@ J TOTWHAT3 YES,TQ )@@G@@ HANDLE IT @B@@@@ E$FD1 ('SPEC ') NO @D@@@@ TR )@@G@@ E$DECV BRKSPEC,X5,S3 EDIT SPEC NUMBER@C@@@@ E$COPY TS )@@G@@ 3,(' = ') SPACE OVER@G@@@@ DL A0,BRKVAL,X5 TT )@@G@@ PICK UP VALUE AND MASK (IF ANY) @D@@@@ JZ A1,TOTWHATTU )@@G@@2 SKIP IF NO MASK @E@@@@ AND A0,A1 MASKTV )@@G@@ OFF PROPER BIT @E@@@@ LA,U A0,0 ASSUME BITTW )@@G@@ WAS NOT SET@D@@@@ TZ A1 WELL, WAS IT? TX )@@G@@@B@@@@ LA,U A0,1 YES @C@@@@TOTWHAT2 E$OCTV TY )@@G@@ . EDIT VALUE@E@@@@ J TOT060 TZ )@@G@@ GO ON TO NEXT LEVEL @D@@@@TOTWHAT3 LX,U X10,WHAT POINUA )@@G@@T TO '??' @H@@@@ J TOTFD2 WE DON'T KNOW WHUB )@@G@@AT IT IS, BUT PRINT IT @]@@@@TOTFD2 . @E@@@@ E$FD2 0,X1UC )@@G@@0 EDIT KEY FIELD NAME @C@@@@ E$SKIP 1 UD )@@G@@ SPACE OVER@E@@@@ E$FD2 BRKVAL,X5 EDIT FIELDUE )@@G@@ CONTENTS @C@@@@ J TOT060 GO ON @]@@@@UF )@@G@@TOTFD1 . @E@@@@ E$FD2 0,X10 EDIT KEY FIELD NUG )@@G@@AME @C@@@@ E$SKIP 1 SPACE OVER@E@@@@ UH )@@G@@ LA A0,BRKVAL,X5 PICK UP FIELD VALUE @A@@@@ TEUI )@@G@@ A0,(' ') @D@@@@ TNZ A0 BUT UJ )@@G@@IS IT ZERO? @E@@@@ LA A0,NONEMSG YES, SO SAY '' @E@@@@ E$FD1 . EDIT FIELD CONTENTS UL )@@G@@@C@@@@ J TOT060 GO ON @]@@@@TOTDECV . UM )@@G@@@E@@@@ E$FD2 0,X10 EDIT KEY FIELD NAME @C@@@@UN )@@G@@ E$SKIP 1 SPACE OVER@E@@@@ E$DECV UO )@@G@@ BRKVAL,X5 EDIT FIELD CONTENTS @C@@@@ J TOT0UP )@@G@@60 GO ON @]@@@@TOTOCTV . @E@@@@ E$FD2 0,X1UQ )@@G@@0 EDIT KEY FIELD NAME @C@@@@ E$SKIP 1 UR )@@G@@ SPACE OVER@E@@@@ E$OCTV BRKVAL,X5 EDIT FIELDUS )@@G@@ CONTENTS @C@@@@ J TOT060 GO ON @]@@@@UT )@@G@@TOTDATE . @E@@@@ E$FD2 0,X10 EDIT KEY FIELD NUU )@@G@@AME @C@@@@ E$SKIP 1 SPACE OVER@E@@@@ UV )@@G@@ LXI X10,BRKVAL,X5 GET DATE IN UPPER X10 @D@@@@ E$UW )@@G@@DAY1 X10 EDIT THE DATE @C@@@@ J TOT0UX )@@G@@60 GO ON @]@@@@TOTBIT . @D@@@@ TEP A0,BUY )@@G@@RKMASK,X5 WAS BIT SET? @B@@@@ J TOT050 UZ )@@G@@ YES @D@@@@ E$MSG NON NO, EDIT 'NON-' @C@@@@VA )@@G@@ J TOT050 GO ON @]@@@@TOTUNL . @D@@@@VB )@@G@@ TOP A0,BRKMASK,X5 WAS IT UNLOADED?@B@@@@ LXVC )@@G@@,U X10,LODMSG NO @C@@@@ J TOT050 VD )@@G@@ GO ON @]@@@@TOTMASS . @D@@@@ TEP A0,BRKMASK,X5 VE )@@G@@ WAS IT A TAPE? @B@@@@ LX,U X10,TAPEMSG YES @C@@@@VF )@@G@@ J TOT050 GO ON @]@@@@TOTTAPE . @E@@@@VG )@@G@@ TOP A0,BRKMASK,X5 WAS IT MASS STORAGE? @B@@@@ VH )@@G@@ LX,U X10,MASSMSG YES @C@@@@ J TOT050 VI )@@G@@ GO ON @]@@@@TOTREM . @C@@@@ TOP A0,BRKMASKVJ )@@G@@,X5 FIXED? @B@@@@ LX,U X10,FIXMSG YES @ @@@@VK )@@G@@ J TOT050 @]@@@@TOTPRI . @D@@@@ TOP VL )@@G@@ A0,BRKMASK,X5 WAS IT PUBLIC? @B@@@@ LX,U X10,PUBMSGVM )@@G@@ YES @C@@@@ J TOT050 GO ON @]@@@@VN )@@G@@TOTPUB . @D@@@@ TEP A0,BRKMASK,X5 WAS IT PRIVATE? VO )@@G@@@B@@@@ LX,U X10,PRIMSG YES @]@@@@TOT050 . @E@@@@VP )@@G@@ E$FD2 0,X10 EDIT TYPE OF FILE @]@@@@TOT060VQ )@@G@@ . @E@@@@ E$CHAR ',' GET SET FOR NEXT LEVELVR )@@G@@@C@@@@ E$SKIP 1 SPACE OVER@F@@@@ NOVS )@@G@@P 0,0,*X5 INCREMENT TO NEXT BREAK SPEC@D@@@@ JGVT )@@G@@D R4,TOT020 IF MORE, DO THEM@F@@@@ E$SKIP -2 VU )@@G@@ BACK UP OVER LAST COMMA @D@@@@ E$CHAR ':' VV )@@G@@ END WITH A COLON@D@@@@ P$RINT POUT2 VW )@@G@@ PRINT MESSAGE @F@@@@ J TOT100 PRINT FIRSVX )@@G@@T LINE OF TOTALS @]@@@@TOT090 . @E@@@@ P$RINT GRANDP VY )@@G@@ PRINT 'GRAND TOTALS:' @]@@@@TOT100 . @ @@@@ OFF VZ )@@G@@ BRKOK @ @@@@ E$DIT EDPACK @D@@@@ E$MSG WA )@@G@@ TOTM01 TRKS: FIXED = @ @@@@ ON OLDSTUFF WB )@@G@@@D@@@@ LA A0,TPT GET T-OPTION @F@@@@ WC )@@G@@ TNE,U A0,1 SET (AND NOT REVERSED)? @E@@@@ WD )@@G@@ J TOT120 YES, DO NORMAL STUFF @F@@@@ TNWE )@@G@@Z EQDX F-TYPE EQUIP GIVEN IN SPEC3?@E@@@@ J WF )@@G@@ TOT120 NO, DO NORMAL STUFF @E@@@@ E$SKIP WG )@@G@@ 1 YES, SKIP A SPACE @C@@@@ E$CHAR '(' WH )@@G@@ OPEN PAREN@D@@@@ LA A0,EQDX GET WI )@@G@@EQUIP INDEX @D@@@@ E$FD1 EQUCD-1,A0 EDIT EQUIP TYPE WJ )@@G@@@D@@@@ E$CHAR ')' CLOSE PAREN @ @@@@ WK )@@G@@ OFF OLDSTUFF @D@@@@TOT120 E$MSGR . RESUWL )@@G@@ME MSG EDIT @E@@@@ LA A0,TOT GET TOTAL FIXED WM )@@G@@TRACKS@ @@@@ ON DSGUNL @D@@@@ TNZ PRIVWN )@@G@@LGD PRIVILEGED? @E@@@@ AA A0,UNLTOT WO )@@G@@ ADD IN UNLOADED TRACKS@ @@@@ OFF DSGUNL @D@@@@ WP )@@G@@ E$DECV . PUT IT IN LINE @ @@@@ ON WQ )@@G@@ DSGUNL @D@@@@ TNZ PRIVLGD PRIVILEGED? WR )@@G@@@E@@@@ J TOT150 NO, SKIP UNLOADED BIZ @D@@@@WS )@@G@@ E$MSG UNL EDIT 'UNL=' @F@@@@ E$WT )@@G@@DECV UNLTOT EDIT IN UNLOADED TRACKS @G@@@@ E$WU )@@G@@MSGR . CONTINUE EDITING WITH 'TOTAL=' @E@@@@ WV )@@G@@ LA A0,TOT GET LOADED TRACKS @E@@@@ AAWW )@@G@@ A0,UNLTOT ADD IN UNLOADED TRACKS@D@@@@ E$DECV WX )@@G@@ . PUT IT IN IMAGE @]@@@@TOT150 . @ @@@@ OFWY )@@G@@F DSGUNL @D@@@@ E$MSG TOTM02 REMOVABLE WZ )@@G@@= @E@@@@ E$DECV RTOT EDIT TOTAL REM. TRACKSXA )@@G@@@ @@@@ ON GVHUSH @E@@@@ TNZ PRIVLGD XB )@@G@@ IS RUN PRIVILEGED? @E@@@@ J TOT200 XC )@@G@@ NO, SKIP V/G TOTALS @ @@@@ OFF GVHUSH @C@@@@ XD )@@G@@ E$MSGR . V-OPT = @E@@@@ E$DECV VTOTXE )@@G@@ EDIT V-OPTION TRACKS @C@@@@ E$MSGR . XF )@@G@@ G-OPT = @E@@@@ E$DECV GTOT EDIT G-OPTXG )@@G@@ION TRACKS @G@@@@TOT200 JZ LONGLIST,TOT300 IF SHORT LISTINGXH )@@G@@, SKIP SEC TRKS @E@@@@ E$MSG TOTM03 BACKUP TAPXI )@@G@@E BLOCKS = @E@@@@ E$DECV SECTOT EDIT SECURE TRACXJ )@@G@@KS @^@@@@TOT300 E$DITX . @F@@@@ P$RINT POUT2 XK )@@G@@ PRINT FIRST TOTALS LINE @ @@@@ E$DIT EDPACK XL )@@G@@@D@@@@ E$MSG TOTM04 FILES: TOTAL = @D@@@@ XM )@@G@@ E$DECV PFCT EDIT TOTAL FILES@ @@@@ ON XN )@@G@@ DSGUNL @E@@@@ TNZ PRIVLGD IS USER PRIVILEGXO )@@G@@ED? @D@@@@ J TOT350 NO, SKIP AHEAD @D@@@@XP )@@G@@ E$MSG UNL EDIT 'UNL=' @F@@@@ E$XQ )@@G@@DECV UFCT EDIT UNLOADED FILE COUNT @ @@@@ OFXR )@@G@@F DSGUNL @D@@@@TOT350 E$MSG TOTM02 REMOVABLE XS )@@G@@= @F@@@@ E$DECV RFCT EDIT REMOVABLE FILE TOXT )@@G@@TAL @ @@@@ ON GVHUSH @E@@@@ TNZ PRIVXU )@@G@@LGD IS RUN PRIVILEGED? @E@@@@ J TOT400 XV )@@G@@ NO, SKIP V/G TOTALS @ @@@@ OFF GVHUSH @C@@@@XW )@@G@@ E$MSGR . V-OPT = @F@@@@ E$DECV XX )@@G@@ VFCT EDIT V-OPTION FILE TOTAL @C@@@@ E$MSGR XY )@@G@@ . G-OPT = @F@@@@ E$DECV GFCT XZ )@@G@@ EDIT G-OPTION FILE TOTAL @C@@@@TOT400 E$MSG TOTM05 YA )@@G@@ TAPES = @E@@@@ E$DECV TFCT EDIT TAPE FILE CYB )@@G@@OUNT @^@@@@ E$DITX . @F@@@@ P$RINT POUT YC )@@G@@ PRINT SECOND TOTALS LINE @ @@@@ ON BRKOK YD )@@G@@@E@@@@ TNZ BRKCNT ANY BREAKS SPECIFIED? @C@@@@YE )@@G@@ J TOT480 NO, GO ON @F@@@@ SZ YF )@@G@@ RTOT RESET REMOVABLE TRACK COUNT @G@@@@ SZ YG )@@G@@ RFCT RESET REMOVABLE DISC FILE COUNT @F@@@@ SZYH )@@G@@ VTOT RESET V-OPT TRACK COUNT @E@@@@ SZYI )@@G@@ VFCT RESET V-OPT FILE COUNT@F@@@@ SZ YJ )@@G@@ GTOT RESET G-OPT TRACK COUNT @E@@@@ SZ YK )@@G@@ GFCT RESET G-OPT FILE COUNT@F@@@@ SZ TOT YL )@@G@@ RESET TOTAL FIXED TRACKS @F@@@@ SZ SECTYM )@@G@@OT RESET SECURE BACKUP BLOCKS @F@@@@ SZ PFCTYN )@@G@@ RESET TOTAL FILES SELECTED @E@@@@ SZ TFCTYO )@@G@@ RESET TAPE FILE COUNT @F@@@@ SZ UNLTOT YP )@@G@@ RESET UNLOADED TRACK COUNT @F@@@@ SZ UFCT YQ )@@G@@ RESET UNLOADED FILE COUNT @G@@@@ ANX,U X4,1 YR )@@G@@ DECREMENT BREAK INDEX FOR LOOP @G@@@@ LA A0,XYS )@@G@@4 MOVE BREAK INDEX TO AN A REGISTER @E@@@@ TG YT )@@G@@ A0,BRKSTOP REACHED OUR LIMIT YET?@G@@@@ J TOT0YU )@@G@@10 NO, PRINT HIGHER LEVEL TOTALS @F@@@@TOT480 TNZ YV )@@G@@ BRKSTOP WERE THESE THE GRAND TOTALS?@F@@@@ J YW )@@G@@ MFD700 YES, RETURN TO MAIN SEG @F@@@@ TZ YX )@@G@@ JPT ARE FILES BEING LISTED? @H@@@@ J YY )@@G@@ TOT490 NO, DON'T WORRY ABOUT SKIPPING A LINE @G@@@@ YZ )@@G@@ LA A0,( PRT 2,0,0) GET SET TO SKIP A LINE OR TWO @F@@@@ZA )@@G@@ LX X5,BRKPNT POINT TO LOWEST LEVEL BREAK @H@@@@ZB )@@G@@ TNZ HPT ARE HEADINGS BEING PRINTED, AND WAZC )@@G@@S A @H@@@@ TNZ,S2 BRKSPEC,X5 NEW HDG REQUESTED FZD )@@G@@OR THIS LEVEL? @H@@@@ ER PRINT$ NO, SKIP BZE )@@G@@EFORE NEXT FILE IS PRINTED @G@@@@TOT490 L$OAD CHEKPRTSG,TOTRTNZF )@@G@@,1 AND RETURN TO PRINT ROUTINE @ @@@@ OFF BRKOK ZG )@@G@@@ @@@@ ON BRKOK=0 @E@@@@ J MFD700 ZH )@@G@@ RETURN TO MAIN SEG @ @@@@ OFF BRKOK=0 @#@@@@ZI )@@G@@ END ___V VFCT EDIT V-OPTION FILE TOTAL ZJ )@@G@@@C@@@@ E$MSGR . G-OPT = @F@@@@ E$ZK )@@G@@DECV GFCT *[S@@@*SDFF*@ @@@@. @MFD SDF OUTPUT ROUTINE ZL )@@G@@@[@@@@. @F@@@@. CALLED IF W-OPTION IS SET. WRITES EACH QUALIFIER*FIZM )@@G@@LENAME(CYC) @F@@@@. INTO SDF FILE WHOSE NAME IS DEFINED BY CONFIG PARAMEZN )@@G@@TER 'WFILE'.@[@@@@. @^@@@@ AXR$ . @G@@@@ COZO )@@G@@NFIG . DEFINE CONFIGURATION PARAMETERS @D@@@@ ZP )@@G@@ EQUFS . DEFINE TAGS @ @@@@ ON ZQ )@@G@@ WOPTOK @^@@@@BUFFA RES 28 @^@@@@BUFFB RES 28 ZR )@@G@@@#@@@@FILES ' '@^@@@@ RES 5 @^@@@@ASG '@ZS )@@G@@ASG,T '@D@@@@ + WFILE OUTPUT FILE NAMEZT )@@G@@@E@@@@ASGL EQU $-ASG LENGTH OF CSF$ IMAGE @#@@@@ZU )@@G@@SDFF '*SDFF*'@D@@@@FCT* + WFILE OUTPUT FILZV )@@G@@E NAME@^@@@@ + 0 @ @@@@ + W$,0,0 ZW )@@G@@@^@@@@ + 28,0@^@@@@ + 0 @A@@@@ ZX )@@G@@ + BUFFA,BUFFB @^@@@@ + 1,0 @A@@@@ ZY )@@G@@ + 1,('*SDFF*') @^@@@@ + 1,0 @ @@@@ ZZ )@@G@@ + 05001,0,0 @[@@@@/$(1).@[@@@@. @C@@@@. SDF INITIALIZATIAA )@@G@@ON: SET UP FCT AND OPEN SDFO @[@@@@. @E@@@@SDF000* LA A0,(AB )@@G@@ASGL,ASG) ASSIGN OUTPUT FILE @^@@@@ ER CSF$@D@@@@AC )@@G@@ JN A0,SDF010 ERR$ IF NO GOOD @D@@@@ LAAD )@@G@@,U A0,FCT OK, OPEN SDFO @ @@@@ LMJ X11,AE )@@G@@SDFOO$@E@@@@ LMJ X11,SDFO$ WRITE '*SDFF*' LABEL AF )@@G@@@E@@@@SDF010 ER ERR$ GET OUT IF NO GOOD @ @@@@AG )@@G@@ LA,U A0,06 @E@@@@ SA,T1 A0,FCT+10 AH )@@G@@ SET TO WRITE 6 WORDS @F@@@@ LA,U A0,FILES STARAI )@@G@@TING WITH WORD OF BLANKS@E@@@@ SA,H2 A0,FCT+8 ALL AJ )@@G@@SET, GO TO IT! @E@@@@ SR R15,SDFLOD SET SDF OPAK )@@G@@ENED FLAG @F@@@@ J MFD200 RETURN TO PRINT AL )@@G@@ROUTINE @[@@@@. @^@@@@. SDF OUTPUT ROUTINE @[@@@@. @C@@@@AM )@@G@@SDF100* L,U R1,5 BT 5 WORDS@E@@@@ L AN )@@G@@ A0,(1,LINOUT+7) FROM PRINT BUFFER @E@@@@ L A1,(AO )@@G@@1,FILES+1) TO SDF OUTPUT BUFFER @C@@@@ BT A1,0,*A0 AP )@@G@@ DO THE BT @C@@@@ LA,U A0,5 BLANK AQ )@@G@@@F@@@@ SA,S1 A0,FILES+1 BLANK OUT DISAB CHAR, IF ANYAR )@@G@@@D@@@@ LA,U A0,FCT ADDR OF FCT @D@@@@ AS )@@G@@ LMJ X11,SDFO$ WRITE IT OUT @^@@@@ ER AT )@@G@@ ERR$@G@@@@ JNZ LONGLIST,PR300 IF LONG LISTING, PRINTAU )@@G@@ INFO ALSO @[@@@@. @G@@@@. W-OPTION WAS USED IN DEMAND (SHORT LISTIAV )@@G@@NG) MODE. IF THE S-OPTION @F@@@@. WAS ALSO USED EXPLICITLY, PRINT THAW )@@G@@E INFO. IF NOT, JUST GO BACK @^@@@@. FOR ANOTHER FILE. @[@@@@. AX )@@G@@@D@@@@ TNZ SPT S-OPTION SET? @G@@@@ AY )@@G@@ J MFD300 NO, GET NEXT FILE (NO PRINTING) @E@@@@AZ )@@G@@ J PR300 RETURN TO MAIN SEG @ @@@@ BA )@@G@@ OFF WOPTOK @#@@@@ END ___F '*SDFF*'@D@@@@BB )@@G@@FCT* + WFILE OUTPUT FILE NAME@^@@@@ + BC )@@G@@ 0 @ @@@@ + W$,0,0 *[S@@@*SDFF*@F@#@]@SSG BD )@@G@@ MAINTSKEL,,,,,,SGS/2,DESCRIBE,THISGEN,PCF/1,PCF,TCF/1,TCF @F@^@#@SSG BE )@@G@@MAINTSKEL,,,,,,SGS/2,DESCRIBE,THISGEN,PCF/1,PCF,TCF/1,TCF @F@ @^@SSG,FBF )@@G@@G MAINTSKEL,,,,,,SGS/2,DESCRIBE,THISGEN,PCF/1,PCF,TCF/1,TCF@G@A@ @SSG,FBG )@@G@@GW MAINTSKEL,,,,,,SGS/2,DESCRIBE,THISGEN,PCF/1,PCF,TCF/1,TCF @H@@@ABH )@@G@@@SSG,FGW MAINTSKEL,TPF$./TOC,,,,,SGS/2,DESCRIBE,THISGEN,PCF/1,PCF,TCF/1BI )@@G@@,TCF @[@@@]@EOF @[@@@]@EOF @#@#@]@PRT,S PCF,TCF ___@@@. @]@@@@BJ )@@G@@PR110 . @ @@@@ ON OLDMFD *[S@@@*SDFF*@ @C@B*. DESBK )@@G@@CRIBE ALL MFD ELEMENTS @A@E@C*. DESCRIBE SPECIAL MFD ELEMENTS @A@@@EBL )@@G@@*. PERMANENT SGS'ES FOR @MFD @[@@@B*. @G@@@EPROGRAM @MFD BM )@@G@@ . PROGRAM NAME FOR HEADINGS @[@@@E*. @H@@@EBN )@@G@@LANGUAGE MSM . ASSUMED LANGUAGE PROCESSOR (MABO )@@G@@SM) @[@@@E*. @ @C@BDESCRIBE GENDOC DOC,Q @F@E@CDESCRIBE GEBP )@@G@@NDOC DOC,Q . PUT THE Q OPTION ONE @F@@@EDESCRIBE GEBQ )@@G@@NDOC DOC,Q . PUT THE Q OPTION ON @F@E@CDESCRIBE MABR )@@G@@INTSKEL,DOC DOC,Q . PUT THE Q OPTION ONE @F@@@EDESCRIBE MABS )@@G@@INTSKEL,DOC DOC,Q . PUT THE Q OPTION ON @ @C@BDESCRIBE USBT )@@G@@ERDOC DOC,Q @E@D@CDESCRIBE USERDOC DOC,Q PUT THE BU )@@G@@Q OPTION ON @F@@@DDESCRIBE USERDOC DOC,Q . PUT THE Q OPBV )@@G@@TION ON @[@@@E*. @F@F@EDESCRIBE MFDDEF MSMD . BW )@@G@@DEFINITION MODE ASSEMBLY@F@F@EDESCRIBE SORTDEF MSMD . BX )@@G@@DEFINITION MODE ASSEMBLY@B@C@BDESCRIBE PROCS ASMP PROCS,UPDATEDBY )@@G@@@^@C@BDESCRIBE CHECK ASM @^@C@BDESCRIBE DIREC$ ASM @^@C@BDESCRIBZ )@@G@@BE DIRSUB ASM @^@C@BDESCRIBE DSEG ASM @^@C@BDESCRIBE HDG CA )@@G@@ ASM @^@C@BDESCRIBE INIT1 ASM @^@C@BDESCRIBE INIT2 ASM @^@C@BCB )@@G@@DESCRIBE MFD ASM @^@C@BDESCRIBE PRINT ASM @^@C@BDESCRIBE PRCC )@@G@@INT2 ASM @^@C@BDESCRIBE QF ASM @^@C@BDESCRIBE SNAP ASM CD )@@G@@@^@C@BDESCRIBE SORTER ASM @^@C@BDESCRIBE SORTF ASM @^@C@BDESCRICE )@@G@@BE TOTALS ASM @^@C@BDESCRIBE WOUT ASM @H@C@B*. DESCRIBE OLDMACF )@@G@@P MAP . USE SPECIFIC 'MAP' SGS IF NEEDED @H@D@CDESCRICG )@@G@@BE OLDMAP MAP . USE SPECIFIC 'MAP' SGS IF NEEDED CH )@@G@@@^@D@BDESCRIBE MFDMAP MAP @[@F@E*. @E@F@EDESCRIBE MFDMAP CI )@@G@@MAP . MAP SYMBOLICS @H@F@EDESCRIBE OLDMAP MAP CJ )@@G@@ . USE SPECIFIC 'MAP' SGS IF NEEDED @[@F@E*. ___FIER CK )@@G@@@[@@@@. @C@@@@. EDIT HIGHEST/TOTAL TRACKS (*UNL* IF UNLOADED) @[@@@@CL )@@G@@. @^@@@@ E$COL 36 @E@@@@ *[S@@@*SDFF*@E@@@@EQU BCM )@@G@@ASLEV/8 . BASE LEVEL NUMBER @E@@@@EQU UPDLEV/CN )@@G@@0 . UPDATE LEVEL NUMBER @F@@@@EQU LOCLEV/0 CO )@@G@@ . LOCAL UPDATE LEVEL NUMBER @#@@@@IBANK,M DATA CP )@@G@@@[@@@@$EVEN @]@@@@SEG MAIN @A@@@@IN MFD,DSEG,EDIT$($ALL),EDIT$T CQ )@@G@@@#@@@@SEG HDGSEG,(MAIN)@]@@@@IN HDG @#@@@@SEG INSEG,(MAIN) @^@@@@CR )@@G@@IN INIT1,INIT2,INFOR$ @^@@@@SEG CHEKPRTSG,(MAIN) @#@@@@IN CHECK,PCS )@@G@@RINT @#@@@@SEG PR2SG,(MAIN) @#@@@@IN PRINT2,SNAP @#@@@@SEG TOTSEG,CT )@@G@@(MAIN)@]@@@@IN TOTALS @B@@@@SEG QFSEG,(CHEKPRTSG,TOTSEG,PR2SG,HDGSEG)CU )@@G@@@]@@@@IN QF @C@@@@DSEG DIRSEG,(CHEKPRTSG,TOTSEG,PR2SG,HDGSEG) CV )@@G@@@#@@@@IN DIREC$,DIRSUB@#@@@@DSEG SDFOSG,() @#@@@@IN WOUT,SDFO CW )@@G@@@#@@@@DSEG SORTSG,() @B@@@@IN SORTER,PRATTS,BKEYS,RDFM$,PCORE,REBD$CX )@@G@@@^@@@@IN KRFIND,BCONSG,SORTF@#@@@@DBANK,MC CODE @[@@@@$ODD @]@@@@CY )@@G@@SEG MAIN @^@@@@IN MFD,DSEG,EDIT$T @#@@@@SEG HDGSEG,(MAIN)@]@@@@CZ )@@G@@IN HDG @#@@@@SEG INSEG,(MAIN) @^@@@@IN INIT1,INIT2,INFOR$ @^@@@@DA )@@G@@SEG CHEKPRTSG,(MAIN) @#@@@@IN CHECK,PRINT @#@@@@SEG PR2SG,(MAIN) DB )@@G@@@#@@@@IN PRINT2,SNAP @#@@@@SEG TOTSEG,(MAIN)@]@@@@IN TOTALS @B@@@@DC )@@G@@SEG QFSEG,(CHEKPRTSG,TOTSEG,PR2SG,HDGSEG)@]@@@@IN QF @C@@@@DSEG DDD )@@G@@IRSEG,(CHEKPRTSG,TOTSEG,PR2SG,HDGSEG) @#@@@@IN DIREC$,DIRSUB@#@@@@DE )@@G@@DSEG SDFOSG,() @#@@@@IN WOUT,SDFO @#@@@@DSEG SORTSG,() @B@@@@DF )@@G@@IN SORTER,PRATTS,BKEYS,RDFM$,PCORE,REBD$@^@@@@IN KRFIND,BCONSG,SORTFDG )@@G@@@[@@@@END ___@@BC^Z@@]CC!@@]>8)@@K/K@@HNG8K@@J*[S@@@*SDFF*@F@@@@. @MFDDH )@@G@@ SNAP$ ROUTINE - DUMPS DIRECTORY ITEMS SELECTED BY THE USER @[@@@@. DI )@@G@@@^@@@@ AXR$ . @G@@@@ CONFIG . DJ )@@G@@ DEFINE CONFIGURATION PARAMTERES @ @@@@ ON SNAPOK DK )@@G@@@D@@@@ EQUFS . DEFINE TAGS @D@@@@PRT DL )@@G@@ FORM 12,6,18 FORM T1,S3,H2 @[@@@@. @^@@@@P DM )@@G@@ PROC 1 @^@@@@SNAPP* NAME 0 @^@@@@SETSNAP* NAME DN )@@G@@ 1 @F@@@@ DO P(1)=0 , GO ERONLY SKIP IF NO PARAMETERS DO )@@G@@GIVEN @D@@@@ LA A0,(P(1,1)) GET HEADER INFO @H@@@@DP )@@G@@ DO OLDMFD=0 , GO ON SKIP 'DAD' CHECK IF NEW FORMAT ONLDQ )@@G@@Y @E@@@@ DO 1-(P(1,1)='DAD ') , GO ON SKIP IF NOT 'DAD' DR )@@G@@@E@@@@ TNZ MFD$F NEW FORMAT DIRECTORY? @G@@@@DS )@@G@@ LA A0,('GTB ') NO, USE 'GTB' RATHER THAN 'DAD' DT )@@G@@@^@@@@ON NAME . @E@@@@ SA A0,SNAPKT DU )@@G@@ STORE IN SNAP$ PACKET @E@@@@ LA,U A0,P(1,2) GET DV )@@G@@BUFFER ADDRESS @F@@@@ SA A0,BUFAD STORE IT IDW )@@G@@N SNAP$ PACKET @H@@@@ DO P(1)<3 , GO ERONLY IF NOT SPEDX )@@G@@CIFIED, LEAVE # WORDS AS IS @F@@@@ LA,U A0,P(1,3) DY )@@G@@ BUT IF SPECIFIED, USE IT @E@@@@ SA A0,NWRDS DZ )@@G@@ SET # OF WORDS TO SNAP@^@@@@ERONLY NAME . @G@@@@ DOEA )@@G@@ P(0,0)>0 , GO AWAY SKIP IF JUST SETTING UP PACKET @ @@@@ EB )@@G@@ ON SNAPSUB=0 @F@@@@ LA,U A0,SNAPKT GET EC )@@G@@SNAP$ PACKET ADDRESS @D@@@@ ER SNAP$ DO TED )@@G@@HE SNAP$ @ @@@@ OFF SNAPSUB=0 @ @@@@ ON EE )@@G@@ SNAPSUB @D@@@@ LMJ X10,SNAP$ DO THE SNAP$ EF )@@G@@@D@@@@ LA A2,SNAP RELOAD SNAP BITS@ @@@@ EG )@@G@@ OFF SNAPSUB @G@@@@ SR R15,SNAPKT+2 SET EH )@@G@@SNAPPED-SOMETHING INDICATOR @C@@@@ DO (P(1,1)='LI0')++(P(1,1)EI )@@G@@='LI1') , ; @F@@@@ SR R15,LISNPD SET LEAD-ITEM-SNEJ )@@G@@APPED FLAG @^@@@@AWAY NAME . @#@@@@ END @[@@@@EK )@@G@@. @D@@@@SNAPKT 'SEC ' SNAP$ PACKET @D@@@@EL )@@G@@ + 28,0 ASSUME 1 SECTOR @^@@@@ + EM )@@G@@ 0 @E@@@@NWRDS EQUF SNAPKT+1,,H1 # OF WORDS TO SNEN )@@G@@AP @F@@@@BUFAD EQUF SNAPKT+1,,H2 ADDRESS OF BUFFER TO SEO )@@G@@NAP @[@@@@. @ @@@@ ON CHKPCT=0 @C@@@@TEMPGT 'TEP )@@G@@EMP FILE DAD SNAP NOT CONFIGURED' @B@@@@TEMPGTP + 0200+($-TEEQ )@@G@@MPGT),TEMPGT@ @@@@ OFF CHKPCT=0 @ @@@@ ON ER )@@G@@ CHKPCT @E@@@@TDAD ' SNAP OF DAD ITEMS CURRENTLY IN PCT FOLLOWSES )@@G@@' @B@@@@TDADP + 0200+($-TDAD),TDAD @ @@@@ ONET )@@G@@ OLDMFD @D@@@@TGTBF 'FIRST GRANULE IN THIS GRANULE ITEM: &EU )@@G@@' @ @@@@ OF*[S@@[*SDFF*@^@@@@ *2AC1^@)^@)^@)^@)^[NC-A@O@@@@EV )@@G@@^@)^@)^@)^@)^@)E-U^@)^@)^@)^@)E1ICDHC*)^@)^@)^@)^@)^@)^@) 0)CT*GD,G9>^[!EW )@@G@@GD4GT* (-H19I-*HD,G8)I1>IL3HD\H0)I-\^[3I[-GT>IS)@E@@@@^@)^@)^@)^@)^@)DK)EX )@@G@@^@)^@)^@)^@)E1ICDHC(BDDQC(I^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)ETAES)^@)EY )@@G@@^@)^@)E1ICDHC*:A@)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)ETAES)^@)^@)^@)EZ )@@G@@E1ICDHC*:AC)^@)^@)^@)^@)^@) 0)@#@@@@E1ICDHC(BDDQC(I 0)@^@@@@ *6A09 )6A09FA )@@G@@^@)^@)^[NC-A@M@@@@^@)^@)^@)^@)^@)ES)^@)^@)^@)^@)CC6 -JE(OE[FE):AC0^@)^@)FB )@@G@@^@) 0)D(\I1>^[I))I9\IL=^[?G(,G94H@)H9&^[=GD4GC)HD!GD$G*)^@)@M@@@@^@)^@)^@)^@)FE )@@G@@^@)E-IC*)^@)^@)^@)CC0 -DD1GC(I^@)^@)^@)^@)^@) 0)DD3^[2G(^[3FF )@@G@@HD'G*)GD3^[+I(&G1>IK_^@)@F@@@@^@)^@)^@)^@)^@)DK)^@)^@)^@)^@)EL CTNFLJDS)FG )@@G@@^@)^@)^@)^@)^@) 0)FD>IS)@M@@@@^@)^@)^@)^@)^@)E-B^@)^@)^@)^@)CC0 -DD1GC(IFH )@@G@@^@)^@)^@)^@)^@) 0)DD3^[2G(IS)@]@@@@FJ )@@G@@EL CTNFLJDS,@^@@@@ *7A@1^@)^@)^@)^@)^[NC-A@M@@@@^@)^@)^@)^@)^@)D))^@)^@)FK )@@G@@^@)^@)CC4 -[A@)^@)^@)^@)^@)^@)^@) 0)DD&^@3 82^[4HD!G(3^[4H[(IS)H->H1$I-*FL )@@G@@^@"^[DD1GC(I@K@@@@^@)^@)^@)^@)^@)D(NDC?E*)^@)^@)CC4 )3^@)^@)^@)^@)^@)^@)FM )@@G@@^@) 0)E-*G(,^[7G*)H(5IT4^[4G(2H((H1-I->^@)@O@@@@^@)^@)^@)^@)^@)ETND))^@)FN )@@G@@^@)^@)CC4 )1^@)^@)^@)^@)^@)^@)^@) 0)CL>GT-I(3G*)H94H[>IL7HD3G*)I9>^9=^[4FO )@@G@@IL-IT*^[3H9!G(4H[(H1$^@)@H@@@@^@)^@)^@)^@)^@)E-IC*)^@)^@)^@)CC4 -DD1GC(IFP )@@G@@^@)^@)^@)^@)^@) 0)C9\H9=^[&HD4B8)^@)@F@@@@^@)^@)^@)^@)^@)DK)^@)^@)^@)^@)FQ )@@G@@E-MCDIETBD8)^@)^@)^@)^@)^@) 0)FD>IS)@H@@@@^@)^@)^@)^@)^@)E-B^@)^@)^@)^@)FR )@@G@@CC4 -DD1GC(I^@)^@)^@)^@)^@) 0)CL>I-4G(2^[&HD4B8)@F@@@@^@)^@)^@)^@)^@)DK)FS )@@G@@^@)^@)^@)^@)E-MCDIETOD9K^@)^@)^@)^@)^@) 0)D1\^@)@]@@@@E-MCDIETBD8,@^@@@@FT )@@G@@ *9A)5 )9A)7^@)^@)^[NC-A@]@@@@DDHD9AD-J 0)@E@@@@^@)^@)^@)^@)^@)^-[ET#DDDFU )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)CDKELDD1O^@)^@)FV )@@G@@BS)^@)^@)^@)^@)^@)^@)^@)^@) 0)@N@@@@^@)^@)^9TH95^[!GD9^[,H94^[3I[>GT(G19FW )@@G@@^[-^[!GD8HD!I(!^[(H(-G9>^[?G(,G94H@)B0)^8'^-#C)*D([F[DD-I C'^8)I9\IL=IS,FX )@@G@@^8)^@)@E@@@@^@)^@)^@)^@)^@)^-AC-[E-[^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@) 0)FY )@@G@@@J@@@@^@)^@)^@)^@)^@)FL[E@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@) 0)EL E-PFZ )@@G@@ELI^[OD8)E-[ETF^[GD9JE@)@^@@@@ *9BC5^@)^@)^@)^@)^[NC-A@#@@@@E-MCDIETOD9KGA )@@G@@ 0)^@)@E@@@@^@)^@)^@)^@)^@)^-[ET#DDD^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@) 0)GB )@@G@@@N@@@@^@)^@)^@)^@)^@)CDKELDD1O^@)^@)^9[^[2G(G(=G(=^[!GD8HD!GC )@@G@@I(!^[?G(,G94H@)GD&I->IK)I-2GD,IT?GD4HD\H0,^8)^@)@E@@@@^@)^@)^@)^@)^@)^-AGD )@@G@@C-[E-[^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)DK)^@)^@)GE )@@G@@^@)^@)CLPC1OD9JETCD9ME))^@)^@)^@) 0)@#@@@@CLPC1OD9JETCD9ME),@E@@@@^@)^@)GF )@@G@@^@)^@)^@)^-[ET#DDD^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)GG )@@G@@^@)CDKELDD1O^@)^@)BS)^@)^@)^@)^@)^@)^@)^@)^@) 0)@L@@@@^@$CD,^[(H10I(4^[2GH )@@G@@G(GT\IL=^[+GI )@@G@@I(&G1>IK,^8)@E@@@@^@)^@)^@)^@)^@)CDKELDD1O^@)^@)BS)^@)^@)^@)^@)^@)^@)^@)GJ )@@G@@^@) 0)@K@@@@^@$FD\I*)GT-H0)H(-HT>^[-^[+HD$G9>IK)IL>GT\IL=^[+I(&G1>IK)GL9GK )@@G@@^[3I[>GT(G19HD,G8)HD4IS)H->H1$I-* 0$@N@@@@^@)^@)^@)^@)^@)CDKELDD1O^@)^@)GL )@@G@@^9KI(4^[(I-3^[?G(,G94H@)HD,^[NI[>GT(G1(GT-I-(H9,^@5^[\G0)I-*G*)ET^C0)CT\GM )@@G@@H(!GD,G),^8)@E@@@@^@)^@)^@)^@)^@)^-AC-[E-[^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)GN )@@G@@^@) 0)@E@@@@^@)^@)^@)^@)^@)FL[E@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@) 0)GO )@@G@@@^@@@@ *1A@6BC?AC0A80^@)^[NC-A_@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GP )@@G@@*[S@@[*SDFF*@^@@@@ *1BC)^@)^@)^@)^@)^[[E))@L@@@@E-SD1NC0)^@)^@)C(LE(A -NGQ )@@G@@A))^@)ELLC1GCDBES)^@)^@)^@)^@)^@) 0)D1\H1'G(2H8)HD&^[[E))E-SD1N^[2G(1I(>GR )@@G@@IT4^@)@^@@@@ *1A02^@)^@)^@)^@)^[[E))@E@@@@^@)^@)^@)^@)^@)^9OF[IES)^@)^@)GS )@@G@@^@)^@$^@)^@)^@)^@)^@)^@)^@) 0)@M@@@@^@)^@)^@)^@)^@) S)^@)^@)^@)^@)E[MCTOGT )@@G@@F[IES)^@)^@)^@)^@)^@) 0)E[2H9IS)GU )@@G@@@^@@@@ *5BC8^@)^@)^@)^@)^[[E))@]@@@@E[MCTOF[IES,@K@@@@^@)^@)^@)^@)^@)ETUGV )@@G@@^@)^@)^@)^@)D([CTCDDS^@)^@)^@)^@)^@)^@) 0)E9-HD4^[&H92^[HCTO^[GC*)I-\^[$GW )@@G@@H8)GL9@N@@@@^@)^@)^@)^@)^@)ET E))^@)^@)^@)E-SD1NC0)^@)^@)^@)^@)^@)^@) 0)GX )@@G@@ET>I))G1?GD$^[4H8)G(,GD+H->^[4J[,IS)I[2H9G9(H0)H-\H9:HD,G8)G1\GZ )@@G@@IK)I-*H93G*)D- IS)@^@@@@ *6AC7 )6AC7^@)^@)^[[E))@L@@@@^@)^@)^@)^@)^@)E-UHA )@@G@@^@)^@)^@)^@)ELPD1NC0)^@)^@)^@)^@)^@)^@) 0)EL>ID5G(3I))G1\IK)IL5H13^[0IL\HB )@@G@@GT>IT3HD,G8_@F@@@@^@)^@)^@)^@)^@)DK)^@)^@)^@)^@)ELPD1OF[I^@)^@)^@)^@)^@)HC )@@G@@^@) 0)FD>IS)@N@@@@^@)^@)^@)^@)^@)E-U^@)^@)^@)^@)E-SD1NC0)^@)^@)^@)^@)^@)HD )@@G@@^@) 0)EL>ID5G(3I))G1\IK)I-2GD,IT-GT4HD\H0)I[2H9IS)@^@@@@ *6AC8HF )@@G@@^@)^@)^@)^@)^[[E))@]@@@@ELPD1OF[I 0)@^@@@@ *6AS3^@)^@)^@)^@)^[[E))@K@@@@HG )@@G@@^@)^@)^@)^@)^@)E-IFK)^@)^@)^@)ELPD1NC0)^@)^@)^@)^@)^@)^@) 0)EL5H13^[\IK)HH )@@G@@I-2GD,IT-GT4HD\H13B8)^@)@H@@@@^@)^@)^@)^@)^@)DK)^@)^@)^@)^@)E-SD1OC(NE))HI )@@G@@^@)^@)^@)^@)^@) 0)E-2GD,IT-GT4HD\H13@^@@@@ *6A)0^@)^@)^@)^@)^[[E))@]@@@@HJ )@@G@@E-SD1OC(NE),@K@@@@^@)^@)^@)^@)^@)E-IC*?E*)^@)^@)CC0 )1A@3^@)^@)^@)^@)^@)HK )@@G@@^@) 0)CC)I-2GD,IT-GT4HD\H0)H-\G8)G(,I-2JC_@F@@@@^@)^@)^@)^@)^@)DK)^@)^@)HL )@@G@@^@)^@)E-TE[ F81A@3^@)^@)^@)^@)^@) 0)FD>IS)@F@@@@^@)^@)^@)^@)^@)DK)^@)^@)HM )@@G@@^@)^@)CTJD1GD9JE@)^@)^@)^@)^@)^@) 0)D1\^@)@^@@@@ *7AS5^@)^@)^@)^@)^[[E))HN )@@G@@@E@@@@^@)^@)^@)^@)^@)^-AC-[E-[^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@) 0)@#@@@@HO )@@G@@E-TE[ F81A@3 0)^@)@L@@@@^@)^@)^@)^@)^@)C-G^@)^@)^@)^@)CC4 )0A*7 -SB@)^@)HP )@@G@@^@)^@)^@) 0)DD&^[0IL\G92GD!^[,GD!G*)HD3^[#DT#DTJD0)^@)@G@@@@^@)^@)^@)^@)HQ )@@G@@^@)C-OC*)^@)^@)^@)CC4 )*^-#CDN @$CTFCTFD9I^9^D)( C) 0)E-*G(,@J@@@@^@)^@)HR )@@G@@^@)^@)^@)E-U -P^@)^@)^@)A@)^@)^@)^@)^@)^@)^@)^@)^@) 0)DD$H1\IL>^[4H[>^[?HS )@@G@@H9$^[>H14IL9@E@@@@^@)^@)^@)^@)^@)DK)^@)^@)^@)^@)CTJD1GD9JE@)^@)^@)^@)^@)HT )@@G@@^@) 0)@E@@@@^@)^@)^@)^@)^@)D9KC(IC(^DDO^@)^@)^@)^@)^@)^@)^@)^@)^@)^@) 0)HU )@@G@@@M@@@@^@)^@)^@)^@)^@)C-G^@)^@)^@)^@)CC0 -[E-ODDHC(NE-[D(K -SB@) 0)C9 E))HV )@@G@@D1[D1JET CTJD1^ES)ETDD1#C*)AC!AC!AC9A@0^@)@L@@@@^@)^@)^@)^@)^@)D-HDK)^@)HW )@@G@@^@)^@)F@1AC?CTJD(KCD#E-ZE-^^@)^@) 0)C(=HD4^[^@)@L@@@@^@)^@)^@)^@)^@)C*=C-#C1U^@)^@)AK)^@)^@)^@)^@)^@)^@)^@)^@) 0)HY )@@G@@C(=HD4^[3G(@E@@@@^@)^@)^@)^@)^@)D9AC1[^@)HZ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@) 0)@K@@@@^@)^@)^@)^@)^@)D)?D@2^@)^@)^@)IA )@@G@@CC4 )4 -SB@)^@)^@)^@)^@)^@) 0)C9>I))H-\G8)G(,I-2JC)IT5GL4JD0G*)^@)@K@@@@IB )@@G@@^@)^@)^@)^@)^@)D)?E*)^@)^@)^@)CC5 )$B8$^@)^@)^@)^@)^@)^@) 0)DD,G-(GT-I->IC )@@G@@^[5H1:H1\I9,^[3I(+I-9I[>@L@@@@^@)^@)^@)^@)^@)E-IC*?E*)^@)^@)CC4 )1^@)^@)ID )@@G@@^@)^@)^@)^@)^@) 0)E-DE@)I[2H9$IL-H*)IL>GDIS)@K@@@@^@)^@)IF )@@G@@^@)^@)^@)E-IC*?E*)^@)^@)CC4 )2^@)^@)^@)^@)^@)^@)^@) 0)E-DE@)I[2H9$IL-H*)IG )@@G@@I->IL!HD,GD4HD\H0_@F@@@@^@)^@)^@)^@)^@)D)?E*)^@)^@)^@)CC5 )$E)$^@)^@)^@)IH )@@G@@^@)^@)^@) 0)FD>IS)@M@@@@^@)^@)^@)^@)^@)E-IC*?E*)^@)^@)CC4 )3^@)^@)^@)^@)II )@@G@@^@)^@)^@) 0)E-DE@)I-2GD,IT-GT4HD\H0?^[,H8)HD,I[5I))GD6GD(H)_@F@@@@^@)^@)IJ )@@G@@^@)^@)^@)D)?E*)^@)^@)^@)CC5 )$DC$^@)^@)^@)^@)^@)^@) 0)FD>IS)@E@@@@^@)^@)IK )@@G@@^@)^@)^@)C*=CTCCDM^@)^@)CC5 )?E8)^@)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)IL )@@G@@^@)C*=ETFDDK^@)^@)AC)^@)^@)^@)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)D9IIM )@@G@@CC)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@) 0)@M@@@@^@)^@)^@)^@)^@)C*=CTJE[TIN )@@G@@^@)^@)AC2 )0A*7 -SB@)^@)^@)^@)^@) 0)C(=HD4^[4IL-H13GDI))DC\D8)EL>ID5G(3I))CT\I(,I))^@)@E@@@@IT )@@G@@^@)^@)^@)^@)^@)C-G^@)^@)^@)^@)CC0 -[A))^@)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)IU )@@G@@^@)^@)^@)C-[D0)^@)^@)^@)CC0 )*BC9BC9BC9C)(^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)IV )@@G@@^@)E-I^@)^@)^@)^@)CC0^@)^@)^@)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)D))IW )@@G@@^@)^@)^@)^@)CC5 )*BC9BC9BC9 C)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)C*=C- CTAIX )@@G@@^@)^@)A0?CC5^@)^@)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)C*=D(NC9M^@)^@)IY )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)C-G^@)^@)^@)^@)CC4 )0IZ )@@G@@AC5 -SB@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)C-G^@)^@)^@)^@)CC0 -[A))^@)JA )@@G@@^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)C-[D0)^@)^@)^@)CC0 )*BC9BC9BC9C)(JB )@@G@@^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)E-I^@)^@)^@)^@)CC0^@)^@)^@)^@)^@)^@)^@)JC )@@G@@^@) 0)@E@@@@^@)^@)^@)^@)^@)D))^@)^@)^@)^@)CC5 )*BC9BC9BC9 C)^@)^@)^@) 0)JD )@@G@@@E@@@@^@)^@)^@)^@)^@)C*=C- CTA^@)^@)A0?CC5^@)^@)^@)^@)^@)^@)^@) 0)@E@@@@JE )@@G@@^@)^@)^@)^@)^@)C*=D(NC9M^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@) 0)@M@@@@^@)^@)JF )@@G@@^@)^@)^@)C-G^@)^@)^@)^@)CC4 )0AK1 -SB@)^@)^@)^@)^@) 0)C9>I))C(M^[-H1=^[#JG )@@G@@H9,I-2H9?^[#GD2G))GT*GD2G9>IS)@E@@@@^@)^@)^@)^@)^@)C-G^@)^@)^@)^@)CC0 -[JH )@@G@@A))^@)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)C-[D0)^@)^@)^@)CC0 )*BC9BC9JI )@@G@@BC9C)(^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)E-I^@)^@)^@)^@)CC0^@)^@)^@)^@)^@)JJ )@@G@@^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)D))^@)^@)^@)^@)CC5 )*BC9BC9BC9 C)^@)^@)JK )@@G@@^@) 0)@E@@@@^@)^@)^@)^@)^@)C*=C- CTA^@)^@)A0?CC5^@)^@)^@)^@)^@)^@)^@) 0)JL )@@G@@@E@@@@^@)^@)^@)^@)^@)C*=D(NC9M^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@) 0)@I@@@@JM )@@G@@^@)^@)^@)^@)^@)C-G^@)^@)^@)^@)CC4 )0AK7 -SB@)^@)^@)^@)^@) 0)C9>I))I9-HD4JN )@@G@@^[4HD!G*)^@)@E@@@@^@)^@)^@)^@)^@)C-G^@)^@)^@)^@)CC0 -[A))^@)^@)^@)^@)^@)JO )@@G@@^@) 0)@E@@@@^@)^@)^@)^@)^@)C-[D0)^@)^@)^@)CC0 )*BC9BC9BC9C)(^@)^@)^@) 0)JP )@@G@@@E@@@@^@)^@)^@)^@)^@)E-I^@)^@)^@)^@)CC0^@)^@)^@)^@)^@)^@)^@)^@) 0)@E@@@@JQ )@@G@@^@)^@)^@)^@)^@)D))^@)^@)^@)^@)CC5 )*BC9BC9BC9 C)^@)^@)^@) 0)@E@@@@^@)^@)JR )@@G@@^@)^@)^@)C*=C- CTA^@)^@)A0?CC5^@)^@)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)JS )@@G@@^@)C*=D(NC9M^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@) 0)@L@@@@^@)^@)^@)^@)^@)C-GJT )@@G@@^@)^@)^@)^@)CC4 )0AC7 -SB@)^@)^@)^@)^@) 0)C9>I))I-*G*)ID5GD,I-5H*)I-(H(>JU )@@G@@IK)I1-H-5G*)@E@@@@^@)^@)^@)^@)^@)C-G^@)^@)^@)^@)CC0 -[A))^@)^@)^@)^@)^@)JV )@@G@@^@) 0)@E@@@@^@)^@)^@)^@)^@)C-[D0)^@)^@)^@)CC0 )*BC9BC9BC9BC9C)(^@)^@) 0)JW )@@G@@@E@@@@^@)^@)^@)^@)^@)E-I^@)^@)^@)^@)CC0^@)^@)^@)^@)^@)^@)^@)^@) 0)@E@@@@JX )@@G@@^@)^@)^@)^@)^@)D))^@)^@)^@)^@)CC5 )*BC9BC9BC9BC9 C)^@)^@) 0)@E@@@@^@)^@)JY )@@G@@^@)^@)^@)C*=C- CTA^@)^@)B@?CC5^@)^@)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)JZ )@@G@@^@)CTGD9NC(^DDO^@)^@)^@)^@)^@)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)CDKKA )@@G@@ELDD1O^@)^@)C(^E[#E8)^@)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)DK)^@)^@)KB )@@G@@^@)^@)CTJD1GD9JE@)^@)^@)^@)^@)^@) 0)_@@@@@^@)^@)^@)^@)CTJD1GD9JE@)^@)^@)KC )@@G@@*[S@@[*SDFF*@ @@@@ *3B@?AS8^@)^@)^@)^[]D-JCTF^@)@M@@@@DDIC1JC-[E-[^@)EL KD )@@G@@ES)^@)^@)^@)AS)^@)^@)^@)^@)^@)^@)^@)^@) 0)C--I--^[+I(&G1>IK)G1\IK)D(JC- KE )@@G@@^))IL>ID5G(3I))^@)@]@@@@DDIC1KE-N 0)@E@@@@^@)^@)^@)^@)^@) S)^@)^@)^@)^@)KF )@@G@@DDIC1DD- ^)?A@?A@)^@)^@)^@) 0)@L@@@@^@)^@)^@)^@)^@) S)^@)^@)^@)^@)AK?A@)KG )@@G@@^@)^@)^@)^@)^@)^@)^@) 0)C1DD- D1[D( ^[[C-^EL ETN^[ADDGD- C))DDI^@)@E@@@@KH )@@G@@^@)^@)^@)^@)^@) S)^@)^@)^@)^@)C(LE(DE@= )0 )0^@)^@)^@)^@) 0)@E@@@@^@)^@)KI )@@G@@^@)^@)^@) S)^@)^@)^@)^@)AC?C(LETOCDO^@)^@)^@)^@)^@) 0)@E@@@@DDIC1KE-ND))KJ )@@G@@^@)^- EDP^@)^@)^@)^)!DDIC1KE-N^@)^@)^@)^@)^@) 0)@E@@@@C(LETOCDO^@)^@)EL KK )@@G@@ES)^@)^@)^@)AC)^@)^@)^@)^@)^@)^@)^@)^@) 0)@ @@@@ *1A*5AS)^@)^@)^@)^[]D-JKL )@@G@@CTF^@)@N@@@@^@)^@)^@)^@)^@)ES?D@2^@)^@)^@)F@6 -DD1AE[OES:AC)^@)^@)^@) 0)KM )@@G@@E->H-?^[DD1AD8=^[7H[(GT*^[&HD?G*)I-*G*)I--I[>^[(IS)^@)@F@@@@^@)^@)^@)^@)KN )@@G@@^@)D))^@)^@)^@)^@)CC0 )*DDIC1KE-ND)?DDIC1KE-N C) 0)^@)@K@@@@^@)^@)^@)^@)KO )@@G@@^@)C(M^@)^@)^@)^@)DDIC1J^))^@)^@)^@)^@)^@)^@) 0)C9>I))IT\H(>^[>ID5HD0H(>KP )@@G@@H14^[+HD4IS)@E@@@@^@)^@)^@)^@)^@)D))^@)^@)^@)^@)CC0 - EDNE-[E))^@)^@)^@)KQ )@@G@@^@) 0)@N@@@@^@)^@)^@)^@)^@)E-JE@?E*)^@)^@)CC0 )1 K\B@)^@)^@)^@)^@)^@) 0)KR )@@G@@ET:HD0^[7H[>H0)I-*HD3^[(IS)GC)GT-IL4IL(G-$G*)I--I[>^@)@L@@@@^@)^@)^@)^@)KS )@@G@@^@)DK)^@)^@)^@)^@)D1\H1#GD2I))^@)^@)^@)^@)^@) 0)C(?IT>^[(I))HD3^[,H94^[-KT )@@G@@^[^@)@M@@@@^@)^@)^@)^@)^@)D))^@)^@)^@)^@)CC0 -AC(LE[HD0)^@)KU )@@G@@^@)^@)^@) 0)C9>I))G1(H->^93^[>ID5HD0H(>H14^[!H1>H(\H1(GS)^@)@L@@@@^@)^@)KV )@@G@@^@)^@)^@)E-IC*)^@)^@)^@)CC0 )*^-#C1N @$CTOA@8BC9^9G C(^@,^[DIS)I-*HD3^[-KW )@@G@@^[^[4GD0G*_@F@@@@^@)^@)^@)^@)^@)DK)^@)^@)^@)^@)CT[ELOD9F^@)KX )@@G@@^@)^@)^@)^@)^@) 0)FD>IS)@L@@@@^@)^@)^@)^@)^@)E-IC*)^@)^@)^@)CC0 )*^-#C1NKY )@@G@@ @$CTOA)0A81^9G C(^@,^[DIS)I-*HD3^[-^[LDD# *2A))I--I[>B8)^@)@L@@@@^@)^@)KZ )@@G@@^@)^@)^@)DK)^@)^@)^@)^@)CL-G-#GD2I))^@)^@)^@)^@)^@) 0)FD>IS?^[7G*)G-\H0$LA )@@G@@I))H[-H1=H->^[4H[\IT>^@)@O@@@@^@)^@)^@)^@)^@)DK)^@)^@)^@)^@)CT[ELOD9F^@)LB )@@G@@^@)^@)^@)^@)^@) 0)CD3IT5H(>^[-H19^[\I-*G(2^[^[(IS)I-*G*)G9\LC )@@G@@H9=^[:@]@@@@D1\H1#GD2I),@ @@@@ *1A*5A0)^@)^@)^@)^[]D-JCTF^@)@]@@@@CT[ELOLD )@@G@@D9F 0)@ @@@@ *1A02A*)^@)^@)^@)^[]D-JCTF^@)@]@@@@CL-G-#GD2I),@E@@@@^@)^@)LE )@@G@@^@)^@)^@)C*=C-DE))^@)^@)E[[DS)^@)^@)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)LF )@@G@@^@)D-HDK)^@)^@)^@)F@9 - C-LC1ACS)^@)^@)^@)^@) 0)@O@@@@^@)^@)^@)^@)^@)C*=LG )@@G@@D(NC8)^@)^@) @$^[#CDME-MDD^C9 ^[OCDKC*)C(LE(DE[HC(IE))E-TE[ ^[#E)4A@7AC)LH )@@G@@D1JE))ETPE[KD9ME- C),^0$D)(^@,@E@@@@^@)^@)^@)^@)^@)C*=C-DE-S^@)^@)^@)^@)LI )@@G@@^@)^@)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)E[MDDIE))^@)^@)C(^E[#E8)^@)LJ )@@G@@^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)DK)^@)^@)^@)^@)FL[E[KDDO^@)^@)^@)LK )@@G@@^@)^@)^@) 0)_@@@@@[^L@@W[4[@@ZC@Y@@[R'-@@H*CI@@[/,0@ME[^L@@Y/K@@KWC@[@@)LL )@@G@@*[S@@[*SDFF*@ @@@@ *3A*?AS5^@)^@)^@)^[BC(OD-JC8)@E@@@@^)*D)=D(^ C?E-JD*)LM )@@G@@^@)D-DE))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@) 0)@ @@@@ *1A84^@)^@)^@)^@)^[BC(OLN )@@G@@D-JC8)@J@@@@^@)^@)^@)^@)^@)D))^@)^@)^@)^@)CC0 -SAC1^@)^@)^@)^@)^@)^@) 0)LO )@@G@@ET-I1>^[2G(4I(2H0)GD=G-2G(3IS)@L@@@@^@)^@)^@)^@)^@)D-HDK)^@)^@)^@)F@1AC?LP )@@G@@C9 E-GD9BEL CTNDDU^@) 0)C9>I))H-\G9(GT-H))IL>GT\IL=^[!I(?I-(I[?G*)@K@@@@LQ )@@G@@^@)^@)^@)^@)^@)D))^@)^@)^@)^@)F@1AC?CC0^@)^@)^@)^@)^@)^@) 0)EL>IT4H92G*)LR )@@G@@IL>I-5IL,^[-G-=IL>IT3^@)@ @@@@ *8AK0 )8AK0^@)^@)^[BC(OD-JC8)@E@@@@^@)^@)LS )@@G@@^@)^@)^@)D))^@)^@)^@)^@)CC5 -[D-[E-MC(#ETDFK)^@)^@) 0)@M@@@@^@)^@)^@)^@)LT )@@G@@^@)CDI -P^@)^@)^@)CC5 )1^@)^@)^@)^@)^@)^@)^@) 0)CT-H-^[-I(=HD4^[4IL-HD?^[4GD+H->^[&MA )@@G@@IL\H*)I-*G*)D(#E))@L@@@@ 0)^@)^@)^@)^@)I-\^[=G(4G(2H((H1>^[4H[>^[,I(!GL>MB )@@G@@IK)H9&^[7H92G-3^[-H0)HD,I->G92GD?^[!I(?I-(I[?G*)H9&^@)@L@@@@ 0)^@)^@)^@)MC )@@G@@^@)I9*HDIS)G(-GT*^[2G(^[[ET#DDD^[GH9$^[[MD )@@G@@I(=HD4^[OIL-HD? 0)@E@@@@ 0)^@)^@)^@)^@)E-*G*)CDGCDO^[(IS)CD5G-(I))E-2GD(ME )@@G@@H))^S1A@,^@)@[@@@@ 0)^@)@]@@@@^)*AK( 0)^@)@N@@@@CDOE-]D-NDDU^@)C(LE*)^@)MF )@@G@@^@)^@)AK0A@0^@)^@)^@)^@)^@)^@)^@) 0)CD3IT5H(>^[-I(=HD4^[4IL-HD?^[4GD+H->MG )@@G@@^[3HD'G*)B))AK0A@0@O@@@@CDGCDOEL CTNDDU^@:^@)^@)^@)^@)AK8^@)^@)^@)^@)^@)MH )@@G@@^@)^@)^@,^[MG(^[-^[!I(?I-(I[?G*)H9&^[4H[(IS)H(-H19^[7H92G-3MI )@@G@@@]@@@@F[SE[[DS,^@)@E@@@@^@)^@)^@)^@)^@)C*=E[FE-[^@)^@)BS)^@)^@)^@)^@)^@)MJ )@@G@@^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)AS3 -SF[DD([C9 ^@)BS)^@)^@)^@)^@)^@)^@)MK )@@G@@^@) 0)@E@@@@^@)^@)^@)^@)^@)^9^E[#^8?^9^^8)BS)^@)^@)^@)^@)^@)^@)^@)^@) 0)ML )@@G@@@E@@@@^@)^@)^@)^@)^@)^9NE[#^8?^9 ^8)BS)^@)^@)^@)^@)^@)^@)^@)^@) 0)@E@@@@MM )@@G@@^@)^@)^@)^@)^@)^9AE[N^8?AC)^@)BS)^@)^@)^@)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)MN )@@G@@^@)^@)^@)^9AE[M^8?AC)^@)BS)^@)^@)^@)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)MO )@@G@@^@)^9HETB^8?^8&^8)BS)^@)^@)^@)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)^9HMP )@@G@@C9[^8?^8&^8)BS)^@)^@)^@)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)^9^E[[^8?MQ )@@G@@A@1A@4^@;^@)^@)^@)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)^9NE[[^8?A@1A@5MR )@@G@@^@;^@)^@)^@)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)^9OCLG^8?F[GE-[CLG^@)MS )@@G@@^@)^@)^@)^@)^@)^@)^@) 0)@E@@@@F[SDDHCDBC*)^@)EL ES)^@)^@)^@)AS3^@)^@)^@)MT )@@G@@^@)^@)^@)^@)^@) 0)@E@@@@F[SC(^E[#E8)^@) S)^@)^@)^@)^@)A@1A@0 S3AS?F[SDDHMU )@@G@@CDBC*)^@) 0)@]@@@@D(#E-KDTO 0)@K@@@@^@)^@)^@)^@)^@) S)^@)^@)^@)^@)A@2AS?MV )@@G@@A@)^@)^@)^@)^@)^@)^@) 0)EL>GD=^[-I(=HD4^[4IL-HD?^[4GD+H->^@)@L@@@@^@)^@)MW )@@G@@^@)^@)^@) S)^@)^@)^@)^@)CDOE-]D-NDDU )0^@)^@)^@)^@) 0)DD,I-\^[4H[(IS)H--MX )@@G@@IL$G((IT*^[+I(&G1>IK)^@)@E@@@@^@)^@)^@)^@)^@) S)^@)^@)^@)^@)A@)^@)^@)^@)MY )@@G@@^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@) S)^@)^@)^@)^@)A@)^@)^@)^@)^@)^@)MZ )@@G@@^@)^@)^@) 0)@]@@@@^)*AC( 0)^@)@^@@@@C9 E-GD9BEL CTNDDU 0)^@)@E@@@@^@)^@)NA )@@G@@^@)^@)^@)ETQES)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@) 0)@M@@@@^@)^@)^@)^@)NB )@@G@@^@)D)?E*)^@)^@)^@)CC0 -[E-OCLGETDFK)^@)^@)^@) 0)C9>I))IT0GD^[0H9(H14G(2^[4H8)GL5G1&G(2^@)@E@@@@^@)^@)^@)^@)^@)D)?E*)^@)NG )@@G@@^@)^@)CC0 -HCTOE[FE))^@)^@)^@)^@) 0)@K@@@@^@)^@)^@)^@)^@)C(M^@)^@)^@)^@)NH )@@G@@D(#E)=^@)^@)^@)^@)^@)^@)^@) 0)EL>GD=^[-I(=HD4^[4IL-HD?^[4GD+H->^@)@E@@@@NI )@@G@@^@)^@)^@)^@)^@)E-U -NAC)^@)^@)D(#E-KDTO^@)^@)^@)^@)^@)^@) 0)@J@@@@^@)^@)NJ )@@G@@^@)^@)^@)DK)^@)^@)^@)^@)CDOC9 ELMA@1^@)^@)^@)^@)^@) 0)C(2IL\IK)H9+I--HD,NK )@@G@@HD,G8)D(#E))@K@@@@^@)^@)^@)^@)^@)D)?D@2^@)^@)^@)CC3 -HCTOE[FE))^@)^@)^@)NL )@@G@@^@) 0)C9>I))I[\HD,I->IK)I-\^[+I(&G1>IK)^@)@E@@@@^@)^@)^@)^@)^@)D)?D@2^@)NM )@@G@@^@)^@)CC3 )0 -[AS)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)E- -P^@)^@)^@)NN )@@G@@CC3 )=CTAES*^9[E)=^8(^@)^@) 0)@M@@@@^@)^@)^@)^@)^@)DK)^@)^@)^@)^@)CDOC9 NO )@@G@@ELMA@2^@)^@)^@)^@)^@) 0)CL-G))HT>JD7H92G))HD,^[-I(=HD4^[4IL-HD?^[4GD+H->NP )@@G@@@K@@@@^@)^@)^@)^@)^@)D)?D@2^@)^@)^@)CC3 -HCTOE[FE))^@)^@)^@)^@) 0)C9>I))NQ )@@G@@I[\HD,I->IK)I-\^[+I(&G1>IK)^@)@L@@@@^@)^@)^@)^@)^@)D)?D@2^@)^@)^@)CC3 )1NR )@@G@@A@?CC3^@)^@)^@)^@)^@) 0)C9>I))H-(H1:^[4H8)I--GL?G*)G1\IK)CDO^@I))I[\HD,I->IK)I-\^[+I(&G1>IK)^@)@M@@@@NV )@@G@@^@)^@)^@)^@)^@)CC?D@2^@)^@)^@)CC2 )1A@?CC2^@)^@)^@)^@)^@) 0)E[\HD,I))I-\NW )@@G@@^[=G(3GT2HD0I-\IK)G1\IK)CDO^@JD7H92G))HD,^[=G(3GT2HD0I-\IK)^@)@E@@@@OA )@@G@@^@)^@)^@)^@)^@)D)?ES1^@)^@)^@)CC3 )0AK6 -[AK)^@)^@)^@)^@) 0)@E@@@@^@)^@)OB )@@G@@^@)^@)^@)E- -P^@)^@)^@)CC3 )2^@)^@)^@)^@)^@)^@)^@) 0)@N@@@@^@)^@)^@)^@)OC )@@G@@^@)DK)^@)^@)^@)^@)CDOC9 ELMA@5^@)^@)^@)^@)^@) 0)DD,I1-H-(G))GT\H(0H->J@)OD )@@G@@HC,G),^[&H92^[[E))I92HD4G(2^@)@E@@@@^@)^@)^@)^@)^@)D)?D@2^@)^@)^@)CC3 )0OE )@@G@@AC5 -[AK)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)ES)^@)^@)^@)^@)CC3 -[D-[E-MOF )@@G@@C(#ETDFK)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)ET E-LE9H^@)^@)^@)^@)^@)^@)^@)^@)OG )@@G@@^@)^@)^@) 0)@M@@@@^@)^@)^@)^@)^@)ETKAC?ES4^@)^@)F[SE[[DS:AK)^@)^@)^@)^@)OH )@@G@@^@) 0)ET>I))C([ET#^[&H--G8)HD,^[3I[>GT(GD?^[0GDI))@N@@@@^@)^@)^@)^@)OI )@@G@@^@)ETKAC?ES5^@)^@)F[SE[[DS:AK)^@)^@)^@)^@)^@) 0)ET>I))C([ET#DDI^[&H--G8)OJ )@@G@@HD,^[3I[>GT(GD?^[0GDI))^@)@E@@@@^@)^@)^@)^@)^@)C*=C-DE))^@)^@)F[SE[[OK )@@G@@DS)^@)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)^-[ET#DDD^@)^@)^@)^@)^@)^@)OL )@@G@@^@)^@)^@)^@)^@) 0)@M@@@@^@)^@)^@)^@)^@)C*=D(NC8)^@)^@)E-JD**^9HCTO^[3GD9OM )@@G@@IS)CDGCDO^[MG(^[(IS)^0)I9\IL=IS,^0$D)(^@,@E@@@@^@)^@)ON )@@G@@^@)^@)^@)^-AC-[E-[^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)OO )@@G@@^@)C*=C- CTQ^@)^@)CDGCDOEL CTNDDU^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)C*=OP )@@G@@D(NC9M^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)C*=C-DE-SOQ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)CC=E[MDDIE))^@)OR )@@G@@F[SC(^E[#E8)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)CTGELLE9H^@)^@)^@)^@)OS )@@G@@^@)^@)^@)^@)^@)^@)^@) 0)@^@@@@CDOE[2H9+G(AGD(H->G),^@)@E@@@@^@)^@)^@)^@)OT )@@G@@^@)D-HDK)^@)^@)^@)F@9 -MC(GCLPC0)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)ELQOU )@@G@@ES)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)DK)^@)^@)OV )@@G@@^@)^@)A@?F@1AC)^@)^@)^@)^@)^@)^@) 0)@#@@@@CDOC9 ELMA@1 0)^@)@L@@@@^@)^@)OW )@@G@@^@)^@)^@)CDKELDD1O^@)^@)^9 IL2H92^[\GL4GD(H1(H1$^[[D-[E))EL>GT\IL=^[HI(?OX )@@G@@I-(I[?G*)G12H9!^[HCTO 0$@F@@@@^@)^@)^@)^@)^@)CDKELDD1O^@)^@)^9 IL2H92^[\OY )@@G@@GL4GD(H1(H1$^[HCTO 0$^@,@E@@@@^@)^@)^@)^@)^@)DK)^@)^@)^@)^@)CDOE[2H9+G(AOZ )@@G@@GD(H->G))^@)^@) 0)@#@@@@CDOC9 ELMA@2 0)^@)@L@@@@^@)^@)^@)^@)^@)CDKELDD1OPA )@@G@@^@)^@)^9 IL2H92^[\GL4GD(H1(H1$^[[D-[E))EL>GT\IL=^[HI(?I-(I[?G*)G12H9!^[HPB )@@G@@CTO 0$@J@@@@^@)^@)^@)^@)^@)CDKELDD1O^@)^@)^9]GD=^[:G(9I9\IL=^[(H0)GD5G-(PC )@@G@@I))I-2GD(H))I--GL?G*,^8) 0)^@)@E@@@@^@)^@)^@)^@)^@)DK)^@)^@)^@)^@)CDOE[2PD )@@G@@H9+G(AGD(H->G))^@)^@) 0)@#@@@@CDOC9 ELMA@3 0)^@)@L@@@@^@)^@)^@)^@)^@)CDKPE )@@G@@ELDD1O^@)^@)^9 IL2H92^[\GL4GD(H1(H1$^[[D-[E))EL>GT\IL=^[HI(?I-(I[?G*)G12PF )@@G@@H9!^[HCTO 0$@I@@@@^@)^@)^@)^@)^@)CDKELDD1O^@)^@)^9IE(GD))H-(H1:^[&H92^[-PG )@@G@@I(=HD4^[4IL-HD?^@G))^@)^@) 0)@#@@@@CDOC9 ELMA@4 0)^@)@L@@@@^@)^@)^@)^@)^@)CDKPI )@@G@@ELDD1O^@)^@)^9 IL2H92^[\GL4GD(H1(H1$^[[D-[E))EL>GT\IL=^[HI(?I-(I[?G*)G12PJ )@@G@@H9!^[HCTO 0$@I@@@@^@)^@)^@)^@)^@)CDKELDD1O^@)^@)^9DH16GD?HD=^[:G(9I9\IL=PK )@@G@@^[(H0)G->ITG))^@)^@) 0)@#@@@@CDOC9 ELMA@5 0)^@)@L@@@@^@)^@)^@)^@)^@)CDKPM )@@G@@ELDD1O^@)^@)^9 IL2H92^[\GL4GD(H1(H1$^[[D-[E))EL>GT\IL=^[HI(?I-(I[?G*)G12PN )@@G@@H9!^[HCTO 0$@J@@@@^@)^@)^@)^@)^@)CDKELDD1O^@)^@)^9DH16GD?HD=^[IK,^8) 0)@E@@@@^@)^@)^@)^@)^@)DK)^@)^@)^@)^@)PP )@@G@@CDOE[2H9+G(AGD(H->G))^@)^@) 0)_@@@@@T9)@@D[[)@@^/K@@RG;=K@@=C9)@@[[[-@@@PQ )@@G@@[[[@@[[[L@@]OBW@@#&;K@@[&;)@@[C^0@@LG80@@#;C0@@]*[S@@[*SDFF*@ @@@@ *8AS)PR )@@G@@^@)^@)^@)^@)^[OETFC(T^@)@E@@@@E@)^@)^@)^@)^@)E[MD9#^@)^@)^@)^@)^@)^@)^@)PS )@@G@@^@)^@)^@)^@)^@) 0)@E@@@@C9OE8%^@)^@)^@)D1[D( ^@)^@)^@)^@)^@)^@)^@)^@)^@)PT )@@G@@^@)^@)^@) 0)@J@@@@C1[D*)^@)^@)^@)C(LE*)^@)^@)^@)E@*AC?AC(^@)^@)^@)^@)^@)PU )@@G@@^@) 0)C1-H((H-9^[\G0)E->IL!HD,GD?IS)@H@@@@C- E0)^@)^@)^@)C(LE*)^@)^@)^@)PV )@@G@@E@*AC?AK(^@)^@)^@)^@)^@)^@) 0)C->I1(GT>^[OJD0G*)@K@@@@D(NC8)^@)^@)^@)C(LPW )@@G@@E*)^@)^@)^@)^-#CDN [K @1 )3 C(^@)^@)^@) 0)C(,G9?HD3H@)E->IL!HD,GD?^[OJD0PX )@@G@@G*)^@)@I@@@@^@)^@)^@)^@)^@)^-BC1JELH^@)^@)BC?C1[D*?BC?C- E0?AC8 )* [HETBPY )@@G@@BK=CT[ES*^8&^8( DG C) 0)@E@@@@^@)^@)^@)^@)^@)C(IC))^@)^@)^@)^@)^@)^@)^@)PZ )@@G@@^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)^-[ET#DDD^@)^@)^@)^@)^@)^@)^@)^@)QA )@@G@@^@)^@)^@) 0)@]@@@@C9OE9OCD] 0)@D@@@@^@)^@)^@)^@)^@)C9OE8)^@)^@)^@)AC?AS?QB )@@G@@^9^CTO^@5A@0^8)^@)@E@@@@^@)^@)^@)^@)^@)C9OE8)^@)^@)^@)AC?A@1A)?^9BG(,G(2QC )@@G@@HD<^[OE-T^8)@G@@@@^@)^@)^@)^@)^@)C9OE8)^@)^@)^@)AC?A@1A*?^9PE-N^@1A@) *)QD )@@G@@E(,GL5G1&G(2G(=^8)@G@@@@^@)^@)^@)^@)^@)C9OE8)^@)^@)^@)AC?A@2AS?^9PE-N^@1QE )@@G@@A@) *)CL5G1&G(2G(=^8)^@)@D@@@@^@)^@)^@)^@)^@)C9OE8)^@)^@)^@)AK?A)?^9^CTOQF )@@G@@^@1A@0A@$^@)@E@@@@^@)^@)^@)^@)^@)C9OE8)^@)^@)^@)AS?AC?^9PH1(ITG(=^@4A@\A)$^@)QN )@@G@@@F@@@@^@)^@)^@)^@)^@)C9OE8)^@)^@)^@)A)?A@2A8?^9BG(,G(2HD<^[DCLH^@3AK7A@$QO )@@G@@@E@@@@C9OE9OCD]D))^@)C(LE*)^@)^@)^@)^)!C9OE9OCD]^@)^@)^@)^@)^@) 0)@E@@@@QP )@@G@@^@)^@)^@)^@)^@)^-AC-[E-[^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@) 0)@[@@@@ 0)^@)QQ )@@G@@@#@@@@ *3AC6^@)^[OETFC(T@E@@@@^@)^@)^@)^@)^@)D))^@)^@)^@)^@)CC4 - EDNE-[QR )@@G@@E))^@)^@)^@)^@) 0)@L@@@@^@)^@)^@)^@)^@)E- E@?E*)^@)^@)CC4 )1 K\B@)^@)^@)QS )@@G@@^@)^@)^@) 0)DD3^[4H[(IS)GC)GT-IL4IL(G-$G*)I--I[>B8)^@)@K@@@@^@)^@)^@)^@)QT )@@G@@^@)DK)^@)^@)^@)^@)E-MDD^C9 ^@)^@)^@)^@)^@)^@) 0)FD>IS?^[3H8)HD4^[(IT,^94QU )@@G@@^@7 (4IL-GT:@#@@@@ *3AK0^@)^[OETFC(T@]@@@@E-MDD^C9 0)@ @@@@ *9B@0 )9B@0QV )@@G@@^@)^@)^[OETFC(T^@)@K@@@@^@)^@)^@)^@)^@)C*=D(NC8)^@)^@) @$E->IL!HD,GD?^[OQW )@@G@@JD0G*)GD,G))C9-I->I9-JC'^@)^0)^@!^@)^0$ C) 0)^@)@ @@@@ *9B@2^@)^@)^@)^@)QX )@@G@@^[OETFC(T^@)@L@@@@^@)^@)^@)^@)^@)D)?EC1^@)^@)^@)CC0 -OC(MD(OFDKC*)^@)^@)QY )@@G@@^@) 0)E9*G(,^[LAC)HD3^[3G(4^[>ID5GD?^[4H8)AC)^@)@M@@@@^@)^@)^@)^@)^@)E- QZ )@@G@@ -P^@)^@)^@)CC0 )1^@)^@)^@)^@)^@)^@)^@) 0)E-*G(,^[7G*)GD2G*)I-\^[-IT3I(!RA )@@G@@G*)CTHES)AC1A@0^@)@L@@@@^@)^@)^@)^@)^@)DK)^@)^@)^@)^@)D1JC- CTJC- ^@)^@)RB )@@G@@^@)^@)^@) 0)D1\I))GC)AT2G))I[-IL4JC)HD!HD4GD4HD\H0)^@)@L@@@@^@)^@)^@)^@)RC )@@G@@^@)D)?D@2^@)^@)^@)CC4 -OC(MD(OFDKC*)^@)^@)^@) 0)C9>I))G1-H((H-9^[-H1=^[=RD )@@G@@G(6HD^@)@K@@@@^@)^@)^@)^@)^@)D)?E*)^@)^@)^@)CC3 -BE-RE-[CK)^@)RE )@@G@@^@)^@)^@) 0)ET>G*)HD&^[4H[>IL>^[(IS)GC)H(-I-^[$GD4G(7GD9^[4GD+H->RG )@@G@@@E@@@@^@)^@)^@)^@)^@)D)?E*)^@)^@)^@)EK1 -BE-RE-[CLG^@)^@)^@)^@) 0)@E@@@@RH )@@G@@^@)^@)^@)^@)^@)ET -CAC)^@)^@)CC4 )0 )%CC3^@)^@)^@)^@)^@) 0)@L@@@@^@)^@)RI )@@G@@^@)^@)^@)DK)^@)^@)^@)^@)D1JC- CTJC- ^@)^@)^@)^@)^@) 0)DL5H(0^[7H[>H0)GT\RJ )@@G@@G->^[(IS)H1\I))HT,H97H0)@K@@@@^@)^@)^@)^@)^@)CDI -P^@)^@)^@)CC3 )1^@)^@)RK )@@G@@^@)^@)^@)^@)^@) 0)E[\HD,I))I-\^[!GD4GT*HD,G8)G(,I-2JC)@J@@@@^@)^@)^@)^@)RL )@@G@@^@)D)?D@2^@)^@)^@)CC0 )0 -[AS)^@)^@)^@)^@)^@) 0)C9>I))I[\HD,I->IK)I-\^[4RM )@@G@@HD4H->@E@@@@^@)^@)^@)^@)^@)ETQES)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@) 0)RN )@@G@@@E@@@@^@)^@)^@)^@)^@)C*=D(NC9M^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@) 0)@E@@@@RO )@@G@@^@)^@)^@)^@)^@)ELQES)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@) 0)@J@@@@^@)^@)RP )@@G@@^@)^@)^@)C*=D(NC8)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@) 0)E[5I))I-(I-?G*)HD,RQ )@@G@@^[!G(3IT-G9>@#@@@@D1JC- CTJC- 0)^@)_@@@@@^@)^@)^@) 0)C9>I))I[\HD,I->IK)RR )@@G@@I-\^[+I(&G1>IK)^@)@E@@@@^@)^@)^@)^@)^@)D)?D@2^@)^@)^@)CC3 )0 -[AS)^@)^@)RS )@@G@@^@)^@)^@) 0)@E@@@@^@)^@)*[S@@[*SDFF*@A@@@@ *6AC6^@)^@)^@)^@)^[KC1#D9HE[[RT )@@G@@EL ^@)@[@@@@ 0)^@)@M@@@@ 0)^@)^@)^@)^@)ET4IL(I@)I-2GD(H-(H1$^[7H92G-3^[\RU )@@G@@G0)GL?GD,HT3^[\G1&^[4H[>^[>H1=IS)H9&^[+H94H@)HD!GD$G(3 0)^@)@M@@@@ 0)^@)RV )@@G@@^@)^@)^@)CD,^[5H14IL-H13H--I->G))HD,I[5I))G1(H->^[!GD9^[*GD6G*)I-2GD(H-(RW )@@G@@H1$^[7H92G-3^[\G0)GL?GD,HT3^@)@J@@@@ 0)^@)^@)^@)^@)I9*HD^[-^[3HD$H1(G1(GT-H14^[=HD&G1>IL>H1I-7G(>H0)I-7H8)HD!GD$G(3^[4H[-I))GD2G*)H94H[>IL7HD3G*)I-*G*)IT-H(>RZ )@@G@@ 0)^@)@[@@@@ 0)^@)@K@@@@^@)^@)^@)^@)^@)D-JCD^ -OAC)^@)CC0 -JCTRAC)^@)^@)SA )@@G@@^@)^@)^@) 0)C9>I))H->H1$I-*^[\G0)HD!GD$G*)^S1^@)@J@@@@^@)^@)^@)^@)^@)D)?SB )@@G@@E*)^@)^@)^@)CC1 -NC-AADDD*)^@)^@)^@)^@) 0)E[\HD,I))I-\^[(H(-G9>^@H(\SD )@@G@@I1>^[4IL-HD?HD,G8)I9\IL=IS)H9&^[+H--H1:^@)@N@@@@^@)^@)^@)^@)^@)ES?ES2^@)SE )@@G@@^@)^@)CC0 -JCTRAC)^@)^@)^@)^@)^@) 0)ET4H92G*)I-*G*)IL>I1(IT>G))HD!GD$G*)SF )@@G@@I9\IL=^[?G(,G94H@)@E@@@@^@)^@)^@)^@)^@)ETND))^@)^@)^@)CC0 )6^@)^@)^@)^@)SG )@@G@@^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)ES?ES1^@)^@)^@)CC0 -JCTRAC)^@)^@)^@)^@)SH )@@G@@^@) 0)@K@@@@^@)^@)^@)^@)^@)D-JCD^ -OAC)^@)CC0 -JCTRAK)^@)^@)^@)^@)^@) 0)SI )@@G@@C9>I))H->H1$I-*^[\G0)HD!GD$G*)^S2^@)@J@@@@^@)^@)^@)^@)^@)D)?E*)^@)^@)^@)SJ )@@G@@CC1 -NC-AALDD*)^@)^@)^@)^@) 0)E[\HD,I))I-\^[(H(-G9>^@H(\I1>^[4IL-HD?SL )@@G@@HD,G8)I9\IL=IS)H9&^[+H--H1:^@)@N@@@@^@)^@)^@)^@)^@)ES?ES2^@)^@)^@)CC0 -JSM )@@G@@CTRAK)^@)^@)^@)^@)^@) 0)ET4H92G*)I-*G*)IL>I1(IT>G))HD!GD$G*)I9\IL=^[?G(,SN )@@G@@G94H@)@E@@@@^@)^@)^@)^@)^@)ETND))^@)^@)^@)CC0 )6^@)^@)^@)^@)^@)^@)^@) 0)SO )@@G@@@E@@@@^@)^@)^@)^@)^@)ES?ES1^@)^@)^@)CC0 -JCTRAK)^@)^@)^@)^@)^@) 0)_@@@@@SP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*[S@@[*SDFF*@ @@@[ *8^@)SQ )@@G@@^@)^@)^@)^@)^[NC(BD([E@)@ @@@[D1JE))ETTES=D-DCK= L#D9]D-IDS,@ @@@[D1JE))SR )@@G@@E(^ES=^-OE9J L^^-HEK,^@)@ @@@[D1JE))ETTES=D-DCK= LNC1N 0)^@)___@@@@@@@@@SS )@@G@@*[S@@[*SDFF*@ @@@@ *5A*?A*9^@)^@)^@)^[IC(RD(#E))@]@@@@DDKALOCD] 0)@L@@@@ST )@@G@@^@)^@)^@)^@)^@)CDKCTRE@)^@)^@$^[DH13I-2I(IT3H92IS&^8)^@)SU )@@G@@^@)^@)^@)^@)^@)^@,^[#H--IT3^@0@L@@@@^@)^@)^@)^@)^@)CDKCTRE@)^@)^@$^[#G(,SV )@@G@@I-2GD?^[KIL\GT>IT3H92^[PH1(I-3^0$^@)^@)^@)^@)^@)^@)^@,^[#H--IT3^@1@L@@@@SW )@@G@@^@)^@)^@)^@)^@)CDKCTRE@)^@)^@$^[#H9!H(-H1= 9[IL(I-*H(>I-(GS)E(,HD4IS&^8)SX )@@G@@^@)^@)^@)^@)^@)^@,^[#H--IT3^@2@L@@@@^@)^@)^@)^@)^@)CDKCTRE@)^@)^@$^[#G(,SY )@@G@@I-2GD?^[KIL\GT>IT3H92^[PH1(I-3^0$^@)^@)^@)^@)^@)^@)^@,^[#H--IT3^@3@L@@@@SZ )@@G@@^@)^@)^@)^@)^@)CDKCTRE@)^@)^@$^[DH13I-2I(IT3H92IS&^8)^@)TA )@@G@@^@)^@)^@)^@)^@)^@,^[#H--IT3^@4@L@@@@^@)^@)^@)^@)^@)CDKCTRE@)^@)^@$^[DH13TB )@@G@@I-2I(IT3H92IS&^8)^@)^@)^@)^@)^@)^@)^@,^[#H--IT3^@5@E@@@@TC )@@G@@DDKALOCD]D))^@)C(LE*)^@)^@)^@)^)!DDKALOCD]^@)^@)^@)^@)^@) 0)@ @@@@ *1AC9TD )@@G@@A8)^@)^@)^@)^[IC(RD(#E))@N@@@@^@)^@)^@)^@)^@)E-B -P^@)^@)^@)CC3 -DE@2E-[TE )@@G@@CLG *1^@)^@)^@) 0)DD,^[^[&H92G9>I))I-\^[5I[=GD4G*)DDKALOCD]^@)TF )@@G@@@M@@@@^@)^@)^@)^@)^@)D)?E*)^@)^@)^@)CC3 -DE@2E-[CLG *1^@)^@)^@) 0)E(3G*)TG )@@G@@I-*G*)H--I->IT4^[,GD!G*)G1\IK)GC)CTKE*)^@)_@@@@@C-^BC1@@E@[=@@@@@[A))F1ITH )@@G@@@C@@@H@@@@@RC-^BC1@@E@J*@@@@@[A*)F\+@^@@@#@@@@@RC-^BC1@@E@J*@@@@@[A*)F0,TI )@@G@@@C@@@^@@@@@RC-^BC1@@E@J**[S@@[*SDFF*@ @@@@ *1A@8 )1A@8^@)^@)^[#D9KFDB^@)TJ )@@G@@@M@@@@ET[E1]E(ACTIE))C(LE(A^@)^@)^@)CTJE[TCT# S2 )?D@1^@)^@)^@) 0)E1-H-5TK )@@G@@G*)H9&^[]E(ACTIE))IL>I-5IL,G(=^[-I))G(,G))@ @@@@ *3AK0^@)^@)^@)^@)^[#D9KTL )@@G@@FDB^@)@L@@@@^@)^@)^@)^@)^@)ES)^@)^@)^@)^@)CC0 -NCDQCLPC1#D1O^@)^@)^@) 0)TM )@@G@@EL>IT4H92G*)I-*HD3^[6GD?I(>^[4H8)CLPC1#D1O@ @@@@ *3AK7^@)^@)^@)^@)^[#D9KTN )@@G@@FDB^@)@[@@@@ 0)^@)@L@@@@ 0)^@)^@)^@)^@)CT*GD,G9>^[4H[>^[,I(!GL>IK)H9&^[+TO )@@G@@I(&G1>IL3^[4H8)B@)I9*G(,^[-H0)H95I-0I(4^[4GD0G*)HD3^@)@L@@@@ 0)^@)^@)^@)TP )@@G@@^@)GL>HD,G8)I92HD4I->H0)GD,G))I-*GD4^[4GD0G*)HD3^[\G0)I-*G*)H[-H-& ((H1H13GD4G(3^[&H92^[-H0)G(2IL\IK)H9&@K@@@@ 0)^@)^@)^@)^@)H9!TS )@@G@@HD3IT(H9,^[(H0)I-*G*)C(8G(<^93^[*GD,G-?HD,G8)H9&^[4H[>^[CDD#^[NI(+IT9IT4TT )@@G@@G(!^@)@L@@@@ 0)^@)^@)^@)^@)I9*HDI[\IL4 ))GL>H--I->G-?JC?^[7TU )@@G@@IL(I->^[>IL2H92IS)GD,G))JD>I))I-*G*)I(3G(2@L@@@@ 0)^@)^@)^@)^@)HD3^[,H94TV )@@G@@^[,H94HD&HD>G))GL9^[4H[>^[ J[>GS)H9&^[4H[>IT>^[>IL2H92IS,^@)E-*G*)IL>IT5TW )@@G@@H-4^@)@L@@@@ 0)^@)^@)^@)^@)HD3^[-I[0GD2G(,I-?JC)G9\H9=^[4GD0G(3^[4H[-I)?TX )@@G@@^[7H[>H0)IL>GD= ))GT\H14GD(H0)G-2H90I[>G))@C@@@@ 0)^@)^@)^@)^@)H92^[=I(0TY )@@G@@H-(GT-I->G))GL?H9IS?^[7G*)H[-I1>^[-H0)H95I-0I(4^[4GD0G*)UD )@@G@@@F@@@@^@)^@)^@)^@)^@)DK)^@)^@)^@)^@)D1^E-CDD#^@)^@)^@)^@)^@)^@) 0)D1\^@)UE )@@G@@@M@@@@^@)^@)^@)^@)^@)D)?E*)^@)^@)^@)F@6 -JE(OC1#E))^@)^@)^@)^@) 0)FD>IS?UF )@@G@@^[0H9(H14^[4H8)H95I-0I(4^[4GD0G*$IS)C1#E))@M@@@@^@)^@)^@)^@)^@)D))^@)^@)UG )@@G@@^@)^@)CC1 -AC(LE[HD0)^@)^@)^@)^@) 0)C9>I))I--I[>^93^[>ID5HD0H(>H14^[!H1>UH )@@G@@H(\H1(GS)^@)@K@@@@^@)^@)^@)^@)^@)E- ^@)^@)^@)^@)CC1 )*^-#C1N @$CTOA@8BC9UI )@@G@@^8( C) 0)DD3^[4H[(IS)GC)D[DCS)I--I[>B8)^@)@F@@@@^@)^@)^@)^@)^@)DK)^@)^@)UJ )@@G@@^@)^@)D1^E-CDD#^@)^@)^@)^@)^@)^@) 0)D1\^@)@M@@@@^@)^@)^@)^@)^@)ETOEK)^@)UK )@@G@@^@)^@)CC1 -]E(ACTIE))B@)^@)^@)^@) 0)FD>IS?^[5IT>^[,H8)H(\IL>^[4H[-H0)B@)UL )@@G@@GL5G1&G(2IS)@]@@@@D1^E-CDD# 0)@ @@@@ *3AS8^@)^@)^@)^@)^[#D9KFDB^@)@M@@@@UM )@@G@@^@)^@)^@)^@)^@)ES)^@)^@)^@)^@)CC0 -NCDQCLPC1#D1O^@)^@)^@) 0)EL>I-5IL,^[4UN )@@G@@H[(IS)CLPC1#D1O^[6GD?I(>^[-I))G(,G))@ @@@@ *3BC0^@)^@)^@)^@)^[#D9KFDB^@)UO )@@G@@@]@@@@C(SCTB 0)^@)@M@@@@^@)^@)^@)^@)^@)D))^@)^@)^@)^@)CC0 -NCDQCLPC1#D1OUP )@@G@@^@)^@)^@) 0)ET>I))CLPC1#D1O^[4H8)IL>ID5G(3I->G))I1-H-5G*)^@)@E@@@@^@)^@)UQ )@@G@@^@)^@)^@)ES)^@)^@)^@)^@)CC0 -]E(ACTIE))^@)^@)^@)^@) 0)@J@@@@^@)^@)^@)^@)UR )@@G@@^@)DK)^@)^@)^@)^@)D1SELL^@)^@)^@)^@)^@)^@)^@) 0)EL>I-5IL,^[4H8)H(-HD,^[?US )@@G@@H9\I@)@ @@@@ *4A09 )4A09^@)^@)^[#D9KFDB^@)@J@@@@^@)^@)^@)^@)^@)DK)^@)^@)UT )@@G@@^@)^@)C(SCTB^@)^@)^@)^@)^@)^@)^@) 0)D1\ ))G(8HD4^[4H8)D(JD1DE-JEK)@ @@@@UU )@@G@@ *5A*6 )5A*6^@)^@)^[#D9KFDB^@)@I@@@@^@)^@)^@)^@)^@)DK)^@)^@)^@)^@)C(SCTBUV )@@G@@^@)^@)^@)^@)^@)^@)^@) 0)C(8HD4^[4H8)D(JD1DE-JEK)@ @@@@ *9A)6 )9A)6^@)^@)UW )@@G@@^[#D9KFDB^@)@I@@@@^@)^@)^@)^@)^@)DK)^@)^@)^@)^@)C(SCTB^@)^@)^@)^@)^@)^@)UX )@@G@@^@) 0)C(SDDO^[OD8)D(JD1DE-JEK)@ @@@@ *1A)5AC?AC4A*1^@)^[#D9KFDB^@)@J@@@@UY )@@G@@^@)^@)^@)^@)^@)DK)^@)^@)^@)^@)C(SCTB^@)^@)^@)^@)^@)^@)^@) 0)EL E-PELI^[OUZ )@@G@@D8)D(JD1DE-JEK)^@)@ @@@[ *1A81B@)^@)^@)^@)^[#D9KFDB^@)@]@@@[E[KE[ D1^ 0)VA )@@G@@@ @@@[ *1A82A@?AC7AK0^@)^[#D9KFDB^@)@ @@@@ *1A83AC?AC7AS1^@)^[#D9KFDB^@)VB )@@G@@@I@@@@^@)^@)^@)^@)^@)DK)^@)^@)^@)^@)C(SCTB^@)^@)^@)^@)^@)^@)^@) 0)C(SDDOVC )@@G@@^[OD8)D(JD1DE-JEK)@ @@@@ *2AS4A8?AK3A)7^@)^[#D9KFDB^@)@I@@@@^@)^@)^@)^@)VD )@@G@@^@)DK)^@)^@)^@)^@)C(SCTB^@)^@)^@)^@)^@)^@)^@) 0)C(SDDO^[OD8)D(JD1DE-JEK)VE )@@G@@@ @@@@ *4BC2A)?A)9AK4^@)^[#D9KFDB^@)@J@@@@^@)^@)^@)^@)^@)DK)^@)^@)^@)^@)VF )@@G@@C(SCTB^@)^@)^@)^@)^@)^@)^@) 0)CD,G))IT,G(-HS)H9&G0)IT4GD$G*)@ @@@@ *5A@3VG )@@G@@A8?A*0AS7^@)^[#D9KFDB^@)@E@@@@^@)^@)^@)^@)^@)DK)^@)^@)^@)^@)C(SCTB^@)^@)VH )@@G@@^@)^@)^@)^@)^@) 0)___@@[/,0@O>A#@^DOR;K^H9&;@@@[*[S@@[*SDFF*@ @@@[ *7AC5VI )@@G@@^@)^@)^@)^@)^[GDD]E[MCS=@A@@@[^@)^@)^@)^@)^@)^82AK0A@\A*0A@$C-G^@)@J@@@[VJ )@@G@@^@)^@)^@)^@)^@) S)^@)^@)^@)^@)A*?AK?A@)^@)^@)^@)^@)^@)^@) 0)ED5HDIK) @9 89AS(^@)@ @@@[ *7AC8 )7AC9^@)^@)^[GDD]E[MCS=@ @@@[ *7AK1 )7AK1VL )@@G@@^@)^@)^[GDD]E[MCS=@G@@@[^@)^@)^@)^@)^@) S)^@)^@)^@)^@)A*?AC?A@)^@)^@)^@)VM )@@G@@^@)^@)^@) 0)D(>ILILBK)^[RH[>H0)GD=G-(H1$^[-^[,G(7^[IK)JD\I*)H(5IT4^[5I[=GD4G*)@L@@@@ 0)^@)^@)^@)^@)^@)^@)^@)^[4H[>VQ )@@G@@^[DE@2E-[CK)I--GL?G*)HD,^[IC(RD(#E))IT\^[4H[>^[2G(0H92I))I9(H-?^[5IT>^@)VR )@@G@@@H@@@@ 0)^@)^@)^@)^@)^@)^@)^@)^[4H[>^[GT4^[,H9!G(,GT?GD4I(2G*)G1\VS )@@G@@IK)CTKE*,^@)@[@@@@ 0)^@)___@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@*[S@@[*SDFF*@ @@@@ *1BC4^@)^@)^@)^@)^[ACD#DT FC)VU )@@G@@@E@@@@^@)^@)^@)^@)^@)C-OC*)^@)^@)^@)CC0 )*^82AK0A@\BC0A@$C-G C) 0)@E@@@@VV )@@G@@^@)^@)^@)^@)^@)E-U -P^@)^@)^@)A@)^@)^@)^@)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)VW )@@G@@^@)^@)^@)DK)^@)^@)^@)^@)ETPE[ EK9A@)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)VX )@@G@@^@)C-OC*)^@)^@)^@)CC0 )*^82AK0A@\A*0A@$C-G C) 0)@E@@@@^@)^@)^@)^@)^@)E-UVY )@@G@@ -P^@)^@)^@)A@)^@)^@)^@)^@)^@)^@)^@)^@) 0)@E@@@@^@)^@)^@)^@)^@)DK)^@)^@)VZ )@@G@@^@)^@)ETPE[ EK9A@)^@)^@)^@)^@)^@) 0)___@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@*[S@@[*SDFF*@^@@@@ *2A0)^@)^@)^@)^@)^[DD9^@K@@@@WB )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@) [NFDNE-TE@.^82AK0A@\A*0A@$C-G C: S;^@)^@,WC )@@G@@^[[H1,H95H1>@@@)_!)\M@@@\_;+$"@@@@C@@@@@@^@@@@@R@@@@@@@@@@@@@@@@@^@@@@@[^@)^@)BL )@@G@@@@@@@[^@)^@)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@]@@@@@R@@@@@@@@@@@@@@@@@ @@@@@HCTJE[ ^[N 1GBN )@@G@@D9^D(OES@@@@#)X#0Z^@-^K<^)>)W[ @( K: )! 0\A@1AK3A)5A07B@9BO]B).B0_)[[CL#BO )@@G@@C- C1BD[DDLFD-HD1J@@@@@]@@@@@R@@@@@@@@@@@@@@@@@]@@@@@[^@)^@)@@@@@@@@@@@@BP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BQ )@@G@@@@@@@@@@@@@@@@@@@]@@@@F$@@@@@@@@@@@@@@P@@P)0))5U@@J@@O)1:)1W@@B@@ @@#@BABR )@@G@@@@^)0\@@@@@@^#@80@@@@@@O[[@@@@@@^-A&@@@@@@@@]])@)@)@@@@@@@@V)V@[[]@@@@@@BS )@@G@@^@)^@>E*'B*>@@@@@@@@^)0"@@@@@@^#@80@@@@@@^[[@@@@@@^-A&@@@@@@@@]])@)@)@@@BT )@@C@@@@@@@W)B@[[#@@@@@@C(GET E*'B*>@@@@@@@@^)1H@@@@@@ BU @EOF @COPY,IO TEMP.1089-005-005,1089-005-005. @FREE TEMP.