.TITLE SRDATA .IDENT /V5.0/ ; UPDATE AUDIT CONTROL-13 NOV 1979 12:07:42 ; EDIT # 0027 25 Mar 1981 16:05:10 DR0:[300,57]SRDATA.MAC;40 ; PREVIOUS EDIT 23 Mar 1981 12:15:52 DR0:[300,57]SRDATA.MAC;37 ;+ ; SRDATA---SORT DIRECTORY DATA MODULE ; ; THIS MODULE CONTAINS ALL IMPURE DATA FOR THE ; ...DIRECTORY SORT TASK ;- ;******************************************* ; THIS VERSION 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 ; ;********* TKB FILE FOR NON-OVERLAID VERSION **** ;SRD/MU/-FP,SRD/-SP/CR=SRDROT ;SRDATA ;SRDINI,SRDLST,SRDNUD,SRDOPR,SRDSRT,SRDSUB,SRDTRP,SRDTST ;/ ;EXTTSK=10000 ;TASK=...SRD ;STACK=128 ;TSKV=SSTVC$:7 ;ASG=TI:1 ;ASG=SY:2:3 ;UNITS=4 ;// ; ; ; SYSTEM MACRO CALLS ; .MCALL FDBDF$,FSRSZ$,FDRC$A,FDOP$A,FDBF$A,GCMLB$,FDBK$A,CSI$ .MCALL FDAT$A,NMBLK$,FCSBT$,FDOF$L,QIO$,QIOW$ .ENABL LC FCSBT$ FDOF$L CSI$ FSRSZ$ 1 ; ; LOCAL DEFINITIONS CMDLUN ==1 ;LUN FOR CMD INPUT UFDLUN ==2 ;LUN TO READ USER-FILE-DIECTORY LSTLUN ==3 ;LUN TO LIST SORTED DIRECTORY HDRLUN==4 ; LUN TO READ FILE HEADER DSKEFN =1 ;EFN FOR UFD READ SYNC. ; ; ; COMMAND BUFFER & CONTROL BLOCK ; CSIBLK::.BLKB C.SIZE ; CMDBLK::GCMLB$ 2,SRD,,CMDLUN ; CMDSIZ==CMDBLK+G.CMLD ;DEFINE COMMAND SIZE ADDRESS CMDADR==CMDSIZ+2 ;...AND ADDRESS POINTER ; UFDFDB::FDBDF$ FDRC$A FD.RWM ;READ/WRITE MODE FDBK$A ,512.,,DSKEFN,IOSB$ FDOP$A UFDLUN,,,FO.RD ; LSTFDB::FDBDF$ FDAT$A R.VAR,FD.CR FDRC$A FD.PLC,LINBUF,132. FDOP$A LSTLUN,,,FO.WRT IOSB$:: .BLKW 2 ; ;QIO DPB TO ATTACH/DETACH THE LISTING DEVICE ; LSTQIO::QIOW$ IO.ATT,LSTLUN,17 ;**V5.1 LSTDFN::NMBLK$ DIRECTORY,LST,0,SY,0 ; ; SAVE AREA FOR STACK POINTER ; SAVSP:: .BLKW 1 $XX1:: .WORD $$$XX1 $XX2:: .WORD $$$XX2 $XX3:: .WORD $$$XX3 DIRBF$:: +0 ;SET POINTER TO START OF BUFFER DIRBE$::.BLKW 1 ;END OF DIRECTORY BUFFER HERE SEBUF$::.BLKB 20. ;SELECT NAME BUFFER LINSZ$::.BLKW 1 ;LINE SIZE SWITCH VALUE DABUF$::.BLKB 9. ;DATE HERE .BYTE 0 BEBUF$::.BLKB 11. ;DATE HERE .BYTE 0 AFBUF$::.BLKB 11. ;DATE HERE .BYTE 0 ;SENTENAL .EVEN SWMSK$::.BLKW 1 SWMS1$::.BLKW 1 BEVAL$:: -1 ; BEFORE DATE VALUE AFVAL$:: +0 ; AFTER DATE VALUE SVNUM$::.BLKW 1 ;VERSION NUMBER TO SEARCH FOR DATIM$::.BLKB 20. ;KEEP DATE & TIME HERE ; ;SAVE AREA FOR DIRECTORY AND DEVICE INFO FOR SELECTIVE DELETE ; SAVDID::.BLKW 2 ;DIRECTORY ID SAVED HERE SAVDVN::.BLKW 1 ;DEVICE NAME GOES HERE SAVUNM::.BLKW 1 ;UNIT NUMBER HERE ; ;WILD CARD DIRECTORY FLAGS ; NXUIC$::.BLKW 1 ;NEXT UIC TO CHECK WCGRP$::.BLKW 1 ;GROUP CODE OR 0 FOR WILD CARD GRP WCUSR$::.BLKW 1 ;USER NUMBER OR ZERO FOR WILD .EVEN ;WORD ALIGNMENT NEEDED UICS$:: .ASCIZ /000/ ;PROTOTYPE UIC FIELD .EVEN ; ;READ FILE HEADER DPB ; READHD::QIO$ IO.RAT,HDRLUN,DSKEFN,,IOSB$,,<0,ATTLST> ; ATTLST: .BYTE -10.,0 ;ATTRIBUTE LIST---READ ENTIRE HEADER .WORD HDBUF$ ;THIS IS THE BUFFER POINTER .WORD 0 ; LIST TERMINATOR HDBUF$::.BLKW 256. ;THIS IS THE BUFFER ; .BYTE 040,040 ; 2 SPACES LINBUF::.BLKB 132. .BYTE 040,040 ; SPACES PRMPT:: .BLKB 132. ;++001 FILMSG:: .ASCII ' XXXXX. Files Selected ' FTMSG:: .ASCII ' XXXXX. Files Total' FMLEN==.-FILMSG GTMSG:: .ASCII ' ******Grand Totals *********' GTMSGL==.-GTMSG SBMSG:: .ASCII ' Selected Blocks Used/Allocated : ' SBAREA::.BLKB 18.+3. .EVEN NUMFS:: .WORD 0 ; # OF FILES SELECTED NUMFT:: .WORD 0 ; # OF FILES TOTAL ; TBLKA:: +0,0 ; TOTAL BLOCKS ALLOCATED TBLKU:: +0,0 ; USED GNUMFS:: +0 ; GRAND TOTALS GNUMFT:: +0 GTBLKA:: +0,0 GTBLKU:: +0,0 FOSGRP::.WORD 0 ; FILE OWNER SELECT--GROUP FOSMEM::.WORD 0 ; FILE OWNER SELECT--MEMBER .END