.TITLE DIRROT .IDENT /V2.0/ ;FORMERLY SRDROT V5.0 ; ; *** SRDROT EDIT HISTORY ; EDIT # 0008 31 OCT 1979 12:40:18 DR1:[300,3]SRDROT.MAC;13 ; PREVIOUS EDIT 23 OCT 1979 11:12:06 DR1:[300,3]SRDROT.MAC;12 ;+ ; ; *** DIR--RSX11M FILE DIRECTORY UTILITY ; ; TASK ROOT SEGMENT ; ; ; THIS TASK WILL SORT A RSX11M DIRECTORY ;THEN CREATE A LISTING WITH MANY SELECTION OPTIONS ; ;THIS IS THE MAIN ROUTINE, AND IS PURE. ; ; ; THE PRESENT VERSION OF DIRROT REPRESENTS AN EXTENSION OF THE ; ORIGINAL SORT DIRECTORY UTILITY (SRD) SUBMITTED TO THE DEC ; USER'S GROUP (DECUS) AT THE F'79 MEETINGS. MAJOR REVISION ; IN THIS UTILITY HAS BEEN LIMITED TO ACCEPTING A NEW MORE ; RT-11 V3B--CCL TYPE COMMAND SYNTAX. THE MODULES THAT HAVE BEEN ; ALTERED INCLUDE :SRDROT,SRDATA,SRDPRE,SRDINI,AND SRDLST. ; FOR MORE DETAILED DESCRIPTION OF THE CHANGES, CONSULT THE APPROPRIATE ; MODULE. ; ; PAUL SORENSON ; PULMONARY RESEARCH ; S3, MAYO CLINIC ; ROCHESTER, MN 55904 ; (507)-284-8395 ; ;***** ; ; LAST UPDATE 8/80--PRS; ORIGINAL EDIT ; UPDATE 11/80--PRS; MOVE CALL TO INIT2 INTO ROOT SEGMENT ; UPDATE 12/81--PRS; CHANGE ORDER OF CALLS IN ROOT SEGMENT, ADD ; GRAND TOTALS MESSAGE FOR MULTIPLE UIC DIRECTORIES, INCLUDE ; WILD CHARACTER (? OR %) SUPPORT IN UIC FIELDS (E.G. [3?,*] ; GETS ALL FILES IN GROUPS 30-37) ; ;- ; ;SYSTEM MACRO CALLS ; .MCALL FINIT$,CLOSE$,QIOW$S,EXST$S .PSECT $CODE1,I,RO,LCL,CON,REL .DIR:: ;INITIAL ENTRY MOV SP,SAVSP ;MARK THE STACK FINIT$ ;SET UP FCS CALL .INIT1 ;NEW INITIALIZATION ROUTINE FOR DIR CALL .INIT2 ;CONTINUE INITIALIZATION ; ; NEW FOR DIR--SRD USED TO ALTER REENTRY POINT FROM SRDINI WHEN ; DOING WILD CARD SEARCHES. DIR MAKES CHECK HERE ; TST NXUIC$ ;DOING WILD CARD UIC ? BEQ 15$ ;BRANCH IF NO 5$: CALL .DRNUD ;YES, FIND NEXT UFD TO OPEN BCS DONE ;BRANCH IF NO DIRECTORY FOUND 15$: CALL .DROPR ;OPEN AND READ UFD, SORT IT AND WRITE IT BACK ; IF SO DIRECTED 25$: CALL .DRLST ;LIST THE DIRECTORY BCS RESTR$ ;BRANCH IF PROBLEM TST UFDFDB+F.BDB ; DIRECTORY STILL OPEN ?? BNE 15$ ; YES, GO DO NEXT PIECE OF IT. ; ; TWO BITS USED FOR DETECTING STATUS OF LISTING. #HDSW SET IN SWMSK$ ; WHEN HEADER PRINTED, CLEARED WHEN OPEN NEXT UFD IN WILD UFD SEARCH. ; #FLSW SET IN SWMSK$ WHEN HEADER PRINTED BUT NEVER RESET, USED AS ; NO SUCH FILE FLAG. ; BIT #HDSW,SWMSK$ ;HEADER PRINTED ? BEQ 30$ ;BRANCH IF NO, SKIP TRAILER CALL .DRTR1 ; OUTPUT TRAILING MESSAGE FOR IND. DIRECTORY 30$: TST NXUIC$ ;DOING WILD CARD UIC'S? BEQ DONE ;BRANCH IF NO, FINISH UP ; ; CLEAN UP FROM ONE UFD, GET READY FOR NEXT. KEEP 3 COUNTERS FOR ; BOTH INDIVIDUAL DIRECTORIES AND GRAND TOTALS = # BLOCKS USED, # BLOCKS ; ALLOCATED, # FILES LISTED/SELECTED. THESE COUNTERS ARE POSITION ; DEPENDENT, DEFINED IN "DIRATA.MAC", AND ARE DOUBLE PRECISION ; INTEGER VALUES ; 40$: MOV #$TFILS+4,R0 ;FETCH ADDRESS FOLLOWING LO-WORD OF # FILES ; SELECTED MOV #$GTFLS+4,R1 ;FETCH ADDRESS FOLLOWING LO-WORD OF GRAND ; TOTAL FILES MOV #3,R2 ;3 DOUBLE PRECISION ADDITIONS TO DO: FILES ; SELECTED, BLOCKS ALLOCATED, BLOCKS USED TST -2(R0) ;CHECK IF ANY FILES IN THIS DIRECTORY BNE 45$ ;BRANCH IF YES TST -4(R0) ;CHECK HI-ORDER WORD TOO BEQ 5$ ;BRANCH IF NO FILES LISTED, DON'T COUNT IT 45$: ADD -(R0),-(R1) ;ACCUMULATE LOW ORDER WORD ADC -(R1) ; ADD IN CARRY BIT TO HI ORDER WORD CLR (R0) ; CLEAR LOW ORDER WORD FOR SINGLE DIR. TOTALS ADD -(R0),(R1) ;ACCUMULATE HIGH ORDER WORD CLR (R0) ; CLEAR HI ORDER WORD FOR SINGLE DIR. TOTALS SOB R2,45$ ;LOOP 3 TIMES INC $GTDIR+2 ;INCREMENT # DIRECTORIES LISTED ADC $GTDIR BIC #HDSW,SWMSK$ ; FLAG HEADER NOT PRINTED BR 5$ ; BRANCH BACK FOR NEXT UFD DONE: BIT #FLSW,SWMSK$ ;ANYTHING GET LISTED? BEQ 5$ ;BR IF NO TST $GTDIR ;CHECK HI ORDER WORD FOR # DIR'S LISTED BNE 2$ ;BRANCH IF NON-ZERO, OUTPUT TRAILER CMP $GTDIR+2,#1 ;AT LEAST 1 DIRECTORY LISTED? BLOS 10$ ;BRANCH IF