.TITLE DIRATA .IDENT /V2.0/ ; FORMERLY SRDATA ; ; *** SRD UPDATE AUDIT CONTROL-13 NOV 1979 12:07:42 ; EDIT # 0023 5 Dec 1979 9:33:00 DR1:[300,3]SRDATA.MAC;34 ; PREVIOUS EDIT 13 NOV 1979 11:59:06 DR1:[300,3]SRDATA.MAC;32 ;+ ; FORMERLY SRDATA---SORT DIRECTORY DATA MODULE ; ; THIS MODULE CONTAINS MOST OF THE IMPURE DATA FOR THE ; SORT DIRECTORY TASK -- DIR ;- ;******************************************* ; SRD V5.0 MODIFIED DEC 1978 BY RAY VAN TASSLE---MOTOROLA ; 1) FIXED ERROR IN DIRECTORY WRITE-BACK THAT WOULD LOSE FILES. ; 2) FIXED ERROR (11D) IN FIGURING WORK BUFFER SIZE ; 3) REPLACED TO: DEVICE WITH TI: ; 4) FIXED A COUPLE OF INITIALIZATION BUGS THAT WOULD SOMETIMES ; CAUSE SORT & LIST TO RUN WILD ; 5) FIXED A TOO-SMALL BUFFER IN TRAP ROUTINE (ERROR PRINT) ; ; 6) CHANGES TO ALLOW A VERY LARGE DIRECTORY BE DONE IN PIECES ; (WITHOUT WRITE-BACK, THOUGH) ; 7) REMOVED THE UN-USED "/HV" SWITCH ; 8) ADDED "/MI" SWITCH (MIDDLE-SIZE LISTING---WITH DATE & TIME) ; 9) CHANGED DEFAULTS TO /LI/NA ; 10) PRINT # OF FILES SELECTED & TOTAL ; 11) CHECK FILE ID/SEQ # IF /MI OR /DA OR /FU, ETC. ; 12) CHANGED SO /-LI DOES EVERYTHING EXCEPT ACTUAL LIST ; 13) PUT "TAB" AS 1ST CHAR ON LISTING LINE ; 14) EXCLUDE [0,0] FROM WILD-CARD UIC (ALSO [0,*] AND [*,0]) ; 15) IN /SE TEMPLATE, BOTH "%" AND "?" MATCH ANY ONE CHAR. ; 16) ADDED ERROR MESSAGE AND RE-TRY ON ERROR DURING DIRECTORY WRITE-BACK ; ;***** ; ; DIRATA--DATA MODULE FOR DIR UTILITY; MAJOR DAMAGE DONE WAS TO HOW ; SRD AND DIR READ IN COMMANDS FROM MCR--SRD VIA GCML$, DIR VIA GMCR$. ; MINOR EXTENSION OF SOME DATA STRUCTURES TO ACCEPT RT-11 V3B STYLE ; DIRECTORY REQUESTS, AND IN THE LISTING FORMAT OF THE DIRECTORY. ; ; REQUIRED RSX-11M SYSGEN OPTIONS: ; FULL DUPLEX TERMINAL SUPPORT FOR READ-AFTER-PROMPT, AND GET ; MULTIPLE CHARACTERISITICS ; PARENT-OFFSPRING TASKING ; GET PARTITION PARAMETERS ; GET TASK PARAMETERS ; ; PAUL SORENSON ; PULMONARY RESEARCH ; S3, MAYO CLINIC ; ROCHESTER, MN 55904 ; (507)-284-8395 ; ;***** ; ; UPDATE 8/80--PRS; ORIGINAL EDIT FOR "DIR" TASK ; UPDATE 1/82 -- PRS; CHANGE LISTING FORMAT TO INCLUDE GRAND TOTALS, ; ADD NECESSARY DATA STRUCTURES TO DIRATA. ADD SUPPORT FOR ; WILD CHARACTERS IN UFD FIELDS. ; UPDATE 3/82 -- PRS; ADD SUPPORT FOR SETTING REVISION/CREATION/ ; EXPIRATION DATES. ADD SUPPORT FOR DELETION ON BASIS OF ; EXPIRATION DATE. ; UPDATE 4/82 -- PRS; REALLOCATE SWITCH MASK BITS TO BE GROUPED ; ACCORDING TO FUNCTIONALITY ; ;***** ;- ; ; SYSTEM MACRO CALLS ; .MCALL FDBDF$,FSRSZ$,FDRC$A,FDOP$A,FDBF$A,FDBK$A,CSI$ .MCALL FDAT$A,NMBLK$,FCSBT$,FDOF$L,FHDOF$,QIO$ .MCALL GMCR$,SPWN$ FHDOF$ DEF$L FCSBT$ FDOF$L CSI$ FSRSZ$ 1 ; ;SYMBOL DEFINITIONS ; CMDLUN ==1 ;LUN FOR CMD INPUT TILUN ==1 ;LUN FOR TERMINAL -- ; ONLY ACCEPT COMMANDS FROM TI: FOR NOW UFDLUN ==2 ;LUN TO READ USER-FILE-DIECTORY LSTLUN ==3 ;LUN TO LIST SORTED DIRECTORY HDRLUN ==4 ;LUN TO READ/WRITE FILE HEADER TIEFN ==1 ;EFN FOR TERMINAL RELATED I/O DSKEFN ==2 ;EFN FOR DIRECTORY DEVICE RELATED I/O LSTEFN ==3 ;EFN FOR LIST DEVICE REALTED I/O ; DI$CMD ==^RDIR ;DIRECTORY COMMAND DE$CMD ==^RDEL ;DELETE COMMAND PU$CMD ==^RPUR ;PURGE COMMAND .PSECT $IDATA,RW,D,LCL,CON,REL ; ; *** NEW FOR DIR, RESERVE SPACE FOR A STATUS WORD TO BE RETURNED ON EXST$ ; EXSTAT:: .WORD 0 ; ; *** NEW FOR DIR, MOVE BUFFER FOR TASK'S PARAMETERS OUT OF SRDINI TO HERE ; PARBF$:: .BLKW 16. ; ; *** NEW FOR DIR, DEFINE PRIVILEGE BYTE BY GET TERMINAL MULTIPLE CHAR. ; $TIPRV:: .BYTE TC.PRI ; ASK FOR PRIVILEGE STATUS OF TI: $PRIV:: .BYTE 0 ; PRIVILEGE BYTE, SET = 1 IF PRIVILEGED ; ; COMMAND BUFFER & CONTROL BLOCK ; CSIBLK::.BLKB C.SIZE ; ; ;***** ; ; HOLD FULL MCR COMMAND VIA GMCR$ MACRO RATHER THAN GCMLB$ MACRO ; AS DONE IN SRD V5.0 ; ;***** ; MCRCMD:: GMCR$ ;DEFINE DPB FOR GET MCR DIRECTIVE ; PRMPT:: .BLKB 132. ;BUFFER FOR SELECTIVE DELETE PROMPT ; LINBUF::.BLKB 132. ;BUFFER FOR LISTING ; CMDSIZ:: .WORD 0 ;SIZE OF MCR COMMAND CMDADR:: .WORD MCRCMD+G.MCRB ;DEFINE COMMAND START CMDNAM:: .BLKW 1 ;SAVE SPACE FOR RAD50 OF MCR COMMAND ; THAT ACTIVATED TASK (DIR,DEL OR PUR) ; UFDFDB::FDBDF$ FDRC$A FD.RWM ;READ/WRITE MODE FDBK$A ,512.,,DSKEFN,IOSB$ FDOP$A UFDLUN,,,FO.RD ; ;SETUP DEFAULT FILENAME BLOCK USED BY "INIT2" DURING COMMAND PARSING. ALSO ; RESERVES AN AREA FOR DIRECTORY FILE NAME BLOCK. USED IN SELECTIVE DELETE AND ; PRINTING HEADER INFO ; SAVFNB:: ;RESERVE SPACE FOR FILENAME BLOCK NMBLK$ 200200,DIR,1,SY,0 ; LSTFDB::FDBDF$ FDAT$A R.VAR,FD.CR FDOP$A LSTLUN,,,FO.WRT ; ; SET DEFAULT LISTING DEVICE TO TI: ; LSTDFN::NMBLK$ DIRECTORY,LST,0,TI,0 ; ; COMMON IOSB$--SHARED WITH SPWN$ SO EXPAND TO TAKE CARE OF SPWN$'S ; RESERVED SPACE ; IOSB$:: .BLKW 8. ; ; READ FILE HEADER DPB ; READHD::QIO$ IO.RAT,HDRLUN,DSKEFN,,IOSB$,,<0,RATLST> ; RATLST: .BYTE -12,0 ;ATTRIBUTE LIST---READ ENTIRE HEADER .WORD HDBUF$ ;THIS IS THE BUFFER POINTER .WORD 0 ; LIST TERMINATOR ; ; WRITE FILE HEADER DPB ; WRITHD::QIO$ IO.WAT,HDRLUN,DSKEFN,,IOSB$,,<0,WATLST> ; WATLST: .BYTE 15,43 ;WRITE ATTRIBUTE LIST---WRITE REV #, ; REV/CRE/EXP DATES .WORD HDBUF$+56+I.RVNO;THIS IS THE BUFFER POINTER, SHOULD REALLY BE ; SETUP BY PROGRAM USING # @H.IDOF IN HEADER. .WORD 0 ; LIST TERMINATOR HDBUF$::.BLKW 256. ;THIS IS THE BUFFER FOR FILE HEADER ; ;***** ; ; NEW FOR DIR--SUPPORT SPWN$ DIRECTIVE FOR SPOOLING A FILE OF ; DIRECTORY INFORMATION ; ;***** ; SPWNIT::SPWN$ MCR...,,,,,LSTEFN,,IOSB$ ;SPAWN TO MCR FOR PRINT AND PIP ; ; ; SAVE AREA FOR STACK POINTER, DEFINE DIRECTORY BUFFER LIMITS ; SAVSP:: .BLKW 1 $XX1:: .WORD $$$XX1 ;SAVE ADDRESSES USED TO SELF SIZE BUFFER SPACE $XX2:: .WORD $$$XX2 $XX3:: .WORD $$$XX3 DIRBF$:: +0 ;SET POINTER TO START OF BUFFER DIRBE$::.BLKW 1 ;END OF DIRECTORY BUFFER HERE ; ; CSI SWITCH VALUE BUFFERS ; SEBUF$::.BLKB 20. ;SELECT NAME BUFFER .EVEN SRBUF$::.BLKW 4 ;NEW FOR DIR--HOLDS EITHER "NAME" OR "TYPE" ;OPTIONAL VALUE FOR SORT SWITCH LINSZ$::.BLKW 1 ;LINE SIZE SWITCH VALUE DATIM$::.BLKB 20. ;KEEP SYSTEM DATE & TIME HERE .EVEN DABUF$::.BLKB 9. ;SELECTED DATE HERE .BYTE 0 .EVEN BEBUF$::.BLKB 9. ;BEFORE DATE HERE .BYTE 0 .EVEN AFBUF$::.BLKB 9. ;AFTER DATE HERE .BYTE 0 .EVEN .IFDF ST$DAT ;INCLUDE ONLY IF SUPPORT SETTING FILE DATES SDBUF$::.BLKB 9. ;SET FILE'S CR/RV/EX DATE HERE .BYTE 0 .EVEN .ENDC ;ST$DAT OUBUF$::.WORD 0. ;SPECIFY OUTPUT FILESPEC LENGTH .BLKB 40. ;NEW FOR DIR, HOLDS OPTIONAL OUTPUT FILESPEC .EVEN SWMSK$::.WORD 0 ;1ST WORD FOR CSI COMMAND SWITCHES SWMS1$::.WORD 0 ;2ND WORD FOR CSI COMMAND SWITCHES SWMS2$::.WORD 0 ;3RD WORD FOR CSI COMMAND SWITCHES ; DAVAL$::.WORD 0 ;SPECIFIC DATE VALUE .WORD 0 ;RESERVE WORD FOR TIME (NOT IMPLEMENTED YET) BEVAL$::.WORD -1 ;BEFORE DATE VALUE .WORD 0 ;RESERVE WORD FOR TIME (NOT IMPLEMENTED YET) AFVAL$::.WORD +0 ;AFTER DATE VALUE .WORD 0 ;RESERVE WORD FOR TIME (NOT IMPLEMENTED YET) SVNUM$::.WORD 0 ;VERSION NUMBER TO SEARCH FOR ; ;WILD CARD DIRECTORY FLAGS. ADD SUPPORT FOR WILD CHARACTERS IN UIC ; FIELD. NOTE: THESE VARIABLES ARE POSITION DEPENDENT !!! ; NXUIC$::.BLKW 1 ;NEXT UIC TO CHECK, INDEX INTO MFD LIST WCGRP$::.BLKW 1 ;GROUP CODE OR 0 FOR WILD CARD GRP $GRPS:: .BLKB 4 ;RESERVE SPACE FOR ASCII GROUP STRING ; THAT WILL CONSIST OF 3 CHAR MAX + ";" WCUSR$::.BLKW 1 ;USER NUMBER OR ZERO FOR WILD CARD USER $USRS:: .BLKB 4 ;SAME FOR USER STRING... ";" TERMINATOR USED ; BY "SRDTST" FOR STRING MATCHING .EVEN ; ; ;***** ; TOTAL BLOCKS, # FILES FOR BOTH SINGLE UIC'S AND GRAND TOTALS ; FOR WILD UIC LISTINGS. NOTE: THESE VARIABLES ARE POSITION ; DEPENDENT (!!!) DOUBLE PRECISION VALUES ;***** ; $TBLKU:: .WORD 0 ; TOTAL BLOCKS USED .WORD 0 $TBLKA:: .WORD 0 ; TOTAL BLOCKS ALLOCATED .WORD 0 $TFILS:: .WORD 0 ; # OF FILES SELECTED IN SINGLE DIRECTORY .WORD 0 $GTBU:: .WORD 0 ; GRAND TOTAL BLOCKS USED .WORD 0 $GTBA:: .WORD 0 ; GRAND TOTAL BLOCKS ALLOCATED .WORD 0 $GTFLS:: .WORD 0 ; GRAND TOTAL # FILES .WORD 0 $GTDIR:: .WORD 0 ; GRAND TOTAL # DIRECTORIES LISTED .WORD 0 .END