.TITLE SRDROT .IDENT /V5.0/ ; UPDATE AUDIT CONTROL-13 NOV 1979 12:09:26 ; EDIT # 0011 25 Mar 1981 10:20:50 DR0:[300,57]SRDROT.MAC;20 ; PREVIOUS EDIT 24 Mar 1981 16:22:36 DR0:[300,57]SRDROT.MAC;17 ;+ ;**-1 ; ;**SRD--SORT DIRECTORY ; ; 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. ; ; ;- ; ;SYSTEM MACRO CALLS ; .MCALL FINIT$,CLOSE$ $SRD0:: ;INITIAL ENTERY MOV SP,SAVSP ;MARK THE STACK FINIT$ ;SET UP FCS SRD1: CALL SRDINI ;INIT NEXT RUN SRD2: CALL SRDOPR ;OPEN AND READ UFD CALL SRDSRT ;SORT THE DIRECTORY TST R5 BEQ 5$ FERR WBERR 5$: CALL SRDLST ;LIST THE FILE TST UFDFDB+F.BDB ; DIRECTORY STILL OPEN ?? BNE SRD2 ; YES, GO DO NEXT PIECE OF IT. LSTNX$:: MOV SAVSP,SP ; RECOVER THE STACK CLOSE$ #UFDFDB ; CLOSE UFD TST NXUIC$ ;DOING WILD CARD? BEQ RESTR$ ;BR IF NO BIC #HDSW,SWMSK$ ; FLAG HEADER NOT PRINTED ; ACCUMULATE THE GRAND-TOTALS ADD NUMFS,GNUMFS ADD NUMFT,GNUMFT ADD TBLKU+2,GTBLKU+2 ADC GTBLKU ADD TBLKU,GTBLKU ADD TBLKA+2,GTBLKA+2 ADC GTBLKA ADD TBLKA,GTBLKA CLR NUMFS ; TO COUNT # OF FILES CLR NUMFT CLR TBLKU ; CLEAR BLOCK COUNTS CLR TBLKU+2 CLR TBLKA CLR TBLKA+2 CALL SRDNUD ;FIND NEXT DIRECTORY TO WORK ON BCC SRD2 ;PROCESS IF ONE FOUND CALL SRDGTT ; PRINT GRAND TOTALS RESTR$:: ;RESTART FOR SURE! BIT #FLSW,SWMSK$ ;ANYTHING GET LISTED? BNE 10$ ;BR IF YES 5$: DIAG NOFL ;ISSUE "NO SUCH FILE" DIAGNOSTIC 10$: MOV SAVSP,SP ;CLEAN THE STACK CLOSE$ #UFDFDB ;MAKE SURE ALL FILES ARE CLOSED BIT #SPSW,SWMSK$ ;SPOOL THE FILE ? BEQ 15$ ;BR IF NO MOV #LSTFDB,R0 ;RECOVER FILE DESCRIPTOR BLOCK CALL .PRINT ;AND PRINT IT BR 20$ ;CONTINUE 15$: CLOSE$ #LSTFDB ;--- 20$: JSR R0,ATTDET ;MAKE SURE DEVICE- .WORD IO.DET ;--IS DETACHED! ;**-23 BR SRD1 ;ELSE START OVER-FROM THE TOP! .PSECT $PDATA CON,RW,D,LCL SSTVC$::.WORD 0,0,0,0,0,0 .WORD TRAP0 .END $SRD0