.TITLE SRDROT .IDENT -5.0- ; 19-NOV-79 ; ; CORRECTION WB02---MAKE SURE STACK IS CLEAN WHEN DOING ; WILD CARD DIRECTORY SEARCHS. ; ; MODIFIED: VERSION 4.1, 08-MAR-79 ; BRUCE C. WRIGHT ; DUKE UNIVERSITY MEDICAL CENTER ; DURHAM, N. C. 27710 ; NUMEROUS BUG FIXES AND CONDITIONALISE FOR IAS/RSX-11D ;+ ; ; VERSION 4.1A - 11-JUL-79 ; ADD SUPPORT FOR /CO/LO/MU SWITCHES ; VERSION 4.1B - 15-JUL-79 ; ADD SUPPORT FOR /BE AND /AF FOR SELECTION OF FILES BETWEEN ; THE TWO DATES; ; LIST CREATION DATES WITH /DA SWITCH AS WELL AS WITH /AF AND ; /BE SWITCHES. ; VERSION 4.1C - 18-JUL-79 ; TREAT FILE SPECIFICATION STRING GIVEN IN COMMAND LINE ; (BUT NOT IN /SE: OR /SD: SWITCH STRING) AS IF IT HAD ; WILD CARD MATCHING AFTER NAME AND TYPE STRINGS GIVEN, ; UNLESS /DE, /SD, OR /PU SPECIFIED; ALSO INSERT '.' IF ; NONE GIVEN IN /SE: OR /SD: SWITCH STRING. ; VERSION 4.1D - 29-JUL-79 ; FIX BUG IN /SD PROCESSING SO ALONE DOES NOT CAUSE FILE ; DELETION IF 'Y' PREVIOUSLY ENTERED; ALSO IMPLEMENT ; YES/NO/QUIT/GO RESPONSES FOR /SD, ACQUIRED FROM THE JACKSON ; LABORATORY VERSION; AND MINOR FIX TO AVOID SYNTAX ERROR IF ; NAME.TYP/SD USED AFTER PREVIOUS /SD:NAME.TYP OR /SE:NAME.TYP. ; VERSION 4.1E - 30-JUL-79 ; ADD SUPPORT FOR /OV:[N] SWITCH TO LIST OBSOLETE VERSIONS OF ; FILES, WHICH ARE THE FILES WHICH WOULD BE DELETED IF THE ; /PU:[N] SWITCH WERE USED, AND THOSE WHICH WOULD NOT BE LISTED ; IF THE /SV:[N] SWITCH WERE SPECIFIED. ; VERSION 4.1F - 05-AUG-79 ; CONDITIONALIZE FOR RSX-11M V3.0 AND EARLIER VERSIONS, AND ; FOR APPENDING WILD CARD MATCHING CHARACTERS TO IMPLICIT ; SELECTION FILE NAME STRING (THE VERSION 4.1C MODIFICATION). ; ; BOB TURKELSON ; NASA/GODDARD SPACE FLIGHT CENTER ; CODE 934 ; GREENBELT, MARYLAND 20771 ; ; VERSION 5.0 - 19-NOV-79 ; ; PREPARE SIG SUPPORTED VERSION, UPDATED ALL MODULES ; TO VERSION 5.0, ADDED /IDENT,/BF SUPPORT. ; H.R.TUMBLIN, DUMC ; ; **SRD--SORT DIRECTORY ; ; TASK ROOT SEGMENT ; ; THIS TASK WILL SORT A FILES-11 DIRECTORY ; THEN CREATE A LISTING WITH SEVERAL SELECTION OPTIONS ; ; THIS IS THE MAIN ROUTINE, AND IS PURE. ; ;- ; ; SYSTEM MACRO CALLS ; .MCALL FINIT$,CLOSE$,QIOW$S $SRD0:: ; INITIAL ENTERY MOV SP,SAVSP ; MARK THE STACK FINIT$ ; SET UP FCS SRD1: CALL SRDINI ; INIT NEXT RUN BIT #IDSW,SWMS2$ ; CHECK FOR /ID SWITCH BEQ 10$ ; EQ - THEN IT'S NOT SET QIOW$S #IO.WVB,#TTYLUN,,,,,<#SRDVER,#SRDVS,#0> BCC LSTNX$ ; CC - THEN SUCCESS CALL $ALERR ; DIAGNOSE ERROR BR LSTNX$ ; AND START OVER 10$: BIT #BFSW,SWMS2$ ; DISPLAY BUFFER SIZE BEQ SRD2 ; EQ - NO CALL SRDDBF ; DISPLAY BUFFER SIZE BR LSTNX$ ; AND START OVER 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* .IF DF R$$11M ; IF ON RSX11M .IF NDF D$$CAL ; IF NO DYNAMIC CHECKPOINTING... MOV DIRIC$,R1 ; R1 = LAST INCREMENT. BEQ 10$ ; IF EQ, WE ARE AT INITIAL SIZE. CLR DIRIC$ ; SAY WE ARE BACK TO INITIAL SIZE. NEG R1 ; INDICATE DECREASE SIZE EXRG$S R1 ; GO BACK TO ORIGINAL SIZE. BCC 10$ ; IF CC, ALL OK HALT ; ABORT TASK. .ENDC .ENDC 10$: 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 #BFSW!IDSW,SWMS2$ ; ID ! BF active ? BNE 10$ ; NE - then skip rest 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