.TITLE SRDROT .IDENT /3.1/ ; 7-FEB-77 ; ; CORRECTION WB02---MAKE SURE STACK IS CLEAN WHEN DOING ; WILD CARD DIRECTORY SEARCHS. ; ;+ ; ; **SRD--SORT DIRECTORY ; ; TASK ROOT SEGMENT ; ; THIS TASK WILL SORT A RSX11M DIRECTORY ; THEN CREATE A LISTING WITH SEVERAL 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 BIT #LISW,SWMSK$ ; LISTING ACTIVE? BEQ LSTNX$ ; BR IF NO-FORGET THAT ROUTINE CALL SRDLST ; LIST THE FILE LSTNX$::MOV #UFDFDB,R0 ; GET THIS VALUE MOV SAVSP,SP ; MAKE SURE STACK IS CLEAR ; *WB02* CALL CCLOSE ; CONDITIONALLY CLOSE TST NXUIC$ ; DOING WILD CARD? BEQ RESTR$ ; BR IF NO CALL SRDNUD ; FIND NEXT DIRECTORY TO WORK ON BCC SRD2 ; PROCESS IF ONE FOUND RESTR$:: ; RESTART FOR SURE! BIT #LISW,SWMSK$ ; LISTING ACTIVE? BEQ 10$ ; BR IF NO BIT #FLFL,FLAGS$ ; ANYTHING GET LISTED? BEQ 5$ ; BR IF NO FILES BIT #SPSW,SWMSK$ ; SPOOL THIS FILE? BEQ 10$ ; BR IF NO MOV #LSTFDB,R0 ; GET THE FILE DESC. BLK CALL .PRINT ; INSERT IN PRINT QUEUE BR 10$ ; CONTINUE 5$: ; REFERENCE DIAG NOFL ; ISSUE "NO SUCH FILE" DIAGNOSTIC 10$: MOV SAVSP,SP ; CLEAN THE STACK CLOSE$ #LSTFDB ; --- JSR R0,ATTDET ; MAKE SURE DEVICE- .WORD IO.DET ; --IS DETACHED! BR SRD1 ; ELSE START OVER-FROM THE TOP! ; ; CCLOSE-CONDITONAL CLOSE ; ; THIS ROUTINE IS CALLED WITH AN FDB ADDRESS IN R0 ; IT DISPATCHES TO CLOSE IF THE FILE IS OPEN, ; ELSE RETURNS DIRECTLY TO THE CALLER. ; CCLOSE::TST F.BDB(R0) ; IS FILE OPEN? BEQ 10$ ; BR IF YES JMP .CLOSE ; CLOSE THE FILE 10$: RETURN ; ELSE GO BACK FORM HERE .PSECT $PDATA CON,RW,D,LCL SSTVC$::.WORD 0,0,0,0,0,0 .WORD TRAP0 .END $SRD0