TITLE DU - list disk usage by user .DECSAVE p==17 Call=pushj p, Ret=popj p, Pcall=jumpa 1, ifndef verbose,verbose==0 Start: jfcl move p, [-lpdl,,pdl-1] reset Movsi 1,(RC%AWL) Hrroi 2,[Asciz '*'] RCUSR Movem 3,Usr Tlnn 1,(RC%NOM\RC%AMB\RC%NMD) Tlnn 1,(RC%WLD) ;This is neccessary due to RCDIR bugs Jrst LOSS Loop: Setzm Usum Hrroi 1,Ustr Move 2,Usr DIRST Erjmp Next ifn verbose,[ Hrroi 1, Ustr PSOUT Call TerPri ] Hrroi 1, [Asciz 'ps'] Call OnDisk Hrroi 1, [Asciz 'usr0'] Call OnDisk Hrroi 1, [Asciz 'usr1'] Call OnDisk Hrroi 1, [Asciz 'ap20'] Call OnDisk Next: Movsi 1,(RC%AWL+RC%STP) ;Step to the next directory Hrroi 2,[Asciz '*'] Move 3,Usr RCUSR Movem 3,Usr Tlnn 1,(RC%NOM\RC%AMB\RC%NMD) Tlnn 1,(RC%WLD) ;This is neccessary due to RCDIR bugs Jrst Done Hrroi 1, ustr PSOUT Hrroi 1, [asciz ' Total:'] PSOUT Call .TTAB Move 2, Usum Call PU Call TerPri Call TerPri Jrst Loop Done: HALTF Jrst Start TerPri: Hrroi 1,[Asciz ' '] ? PSOUT Ret ; 1/ bp to disk name ; ustr/ user string OnDisk: Setzm Sum Movem 1, dname Move 2, 1 Hrroi 1, tmp Setz 3, SOUT Movei 2, ": Idpb 2, 1 Movei 2, "< ;> Idpb 2, 1 Hrroi 2, ustr SOUT ;< Movei 2, "> Idpb 2, 1 Idpb 3, 1 ;tie off Movsi 1, (rc%emo) Hrroi 2, tmp RCDIR Erjmp .popj jumpe 3, .popj movem 3, dno Call DoUsage ;do main dir ; now do subdirs Move 2, dname Hrroi 1, tmp Setz 3, SOUT Movei 2, ": Idpb 2, 1 Movei 2, "< ;> Idpb 2, 1 Hrroi 2, ustr SOUT Movei 2, ". Idpb 2, 1 Movei 2, "* Idpb 2, 1 ;< Movei 2, "> Idpb 2, 1 Idpb 3, 1 ;tie off Movsi 1,(RC%AWL) ;allow wilds Hrroi 2, tmp RCDIR Movem 3, dno Tlnn 1,(RC%NOM\RC%AMB\RC%NMD) ;no match, ambig, no more Tlnn 1,(RC%WLD) ;(contained wild cards) Ret Loop2: Call DoUsage Next2: Movsi 1,(RC%AWL+RC%STP) ;Step to the next directory Hrroi 2,tmp Move 3,dno RCDIR Movem 3,dno Tlnn 1,(RC%NOM\RC%AMB\RC%NMD) Tlnn 1,(RC%WLD) ;This is neccessary due to RCDIR bugs Trna Jrst Loop2 Done2: ifn verbose,[ Move 1, dname PSOUT Hrroi 1, [Asciz ' total:'] PSOUT Call .TTAB Move 2, Sum Call PU Call Terpri ] Ret ; dno/ dir number DoUsage: Setzm Dstr Hrroi 1,Dstr Move 2,dno DIRST Erjmp .+1 Move 1, dno GTDAL Erjmp Next2 Addm 2, Sum Addm 2, Usum ifn verbose,[ Hrroi 1, Dstr PSOUT Call .TTAB Call PU Call Terpri ] Ret ; print usage in pages (and blocks) PU: Call .PDEC Call .TTAB Movei 1, "( ;) PBOUT Imuli 2, 512.*5/512. ;(ie * 5 ) Call .PDEC ;( Movei 1, ") PBOUT Ret .PDEC: Movei 1, .PRIOU Movei 3, 10. NOUT trn Ret .TTAB: Movei 1, ^I PBOUT .popj: Ret Loss: Jrst 4, . Usr: Block 1 ;user number ustr: block 20 ;USER for above tmp: block 30 ;DISK: dno: block 1 ;curr dir number for above Dstr: block 30 ;string for dno Sum: block 1 ;total used for this user on this disk Usum: block 1 ;total for this user on all disks pdl: block ;push downe list dname: block 1 ;bp to curr disk name END Start the good always die young...