home *** CD-ROM | disk | FTP | other *** search
/ Jason Aller Floppy Collection / 189.img / TCS120S.ZIP / SYS.PAS < prev    next >
Pascal/Delphi Source File  |  1987-05-25  |  5KB  |  175 lines

  1. overlay procedure showsystemstatus;
  2. var totalused,totalidle,totalup,totaldown,totalmins,callsday,
  3.     total_disk,total_free,file_sizes:real;
  4.     total_files:integer;
  5.  
  6.   Procedure FileSZ;
  7.   var cnt,cnt2,curarea:integer;
  8.       ar,area:arearec;
  9.       ud:udrec;
  10.       Inscan,showit,fast:boolean;
  11.       Drv:array[1..15] of boolean;
  12.  
  13.   procedure assignud;
  14.   begin
  15.     close (udfile);
  16.     assign (udfile,'AREA'+strr(curarea))
  17.   end;
  18.  
  19.   const beenaborted:boolean=false;
  20.  
  21.   function aborted:boolean;
  22.   begin
  23.     if beenaborted then begin
  24.       aborted:=true;
  25.       exit
  26.     end;
  27.     aborted:=xpressed or hungupon;
  28.     if xpressed then begin
  29.       beenaborted:=true;
  30.       writeln (^B'File Calcuation aborted..')
  31.     end
  32.   end;
  33.  
  34.   procedure setarea (n:integer);
  35.   begin
  36.     curarea:=n;
  37.     seek(afile,n-1);
  38.     read (afile,area);
  39.     assignud;
  40.     close (udfile);
  41.     reset (udfile);
  42.     if ioresult<>0 then rewrite (udfile);
  43.   end;
  44.  
  45.   Procedure CheckDrive(dv:char);
  46.   var n:byte;
  47.       Temp_Disk,Temp_Free:real;
  48.  
  49.     procedure WriteFreeSpace (dr:byte);
  50.     var r:regs;
  51.         csize:real;
  52.  
  53.       function unsigned (i:integer):real;
  54.       begin
  55.         if i>=0 then unsigned:=i else unsigned:=65536.0+i
  56.       end;
  57.  
  58.     begin
  59.       r.ah:=$36;
  60.       r.dl:=dr;
  61.       intr ($21,r);
  62.       if r.ax=-1 then exit;
  63.       csize:=unsigned(r.ax)*unsigned(r.cx);
  64.       Temp_Free:=(csize*unsigned(r.bx))/1000;
  65.       Temp_Disk:=(csize*unsigned(r.dx))/1000;
  66.     end;
  67.  
  68.   begin
  69.     if (ord(dv)<65) or (ord(dv)>79) then exit;
  70.     n:=ord(dv)-64;
  71.     writefreespace(n);
  72.     if not Drv[n] then begin
  73.       Drv[n]:=true;
  74.       Total_Disk:=Total_Disk+Temp_Disk;
  75.       Total_Free:=Total_Free+Temp_Free;
  76.     end;
  77.   end;
  78.  
  79.   function getfname (path:lstr; name:mstr):lstr;
  80.   var l:lstr;
  81.   begin
  82.     l:=path;
  83.     if length(l)<>0 then if not (upcase(l[length(l)]) in [':','\'])
  84.       then l:=l+'\';
  85.     l:=l+name;
  86.     getfname:=l
  87.   end;
  88.  
  89.   begin
  90.     total_files:=0;
  91.     file_sizes:=0;
  92.     total_disk:=0;
  93.     Total_Free:=0;
  94.     for cnt:=1 to 15 do Drv[Cnt]:=false;
  95.     assign (afile,'AreaDir');
  96.     if exist ('Areadir') then begin
  97.       reset (afile);
  98.       if filesize (afile)<0 then exit
  99.     end else rewrite (afile);
  100.     cnt:=1;
  101.     while (cnt<=filesize(afile)) do begin
  102.       seek (afile,cnt-1);
  103.       read (afile,ar);
  104.       CheckDrive(upcase(ar.xmodemdir[1]));
  105.       setarea (cnt);
  106.       for cnt2:=filesize(udfile) downto 1 do begin
  107.         Seek (udfile,cnt2-1);
  108.         read (udfile,ud);
  109.         CheckDrive(upcase(ud.path[1]));
  110.         if aborted then begin
  111.           Total_Files:=0;
  112.           File_Sizes:=0;
  113.           Total_Disk:=0;
  114.           Total_Free:=0;
  115.           exit;
  116.         end;
  117.         if exist(getfname(ud.path,ud.filename)) then begin
  118.           Total_Files:=Total_Files+1;
  119.           File_Sizes:=File_Sizes+ud.filesize;
  120.         end;
  121.       end;
  122.       cnt:=cnt+1;
  123.     end;
  124.     File_Sizes:=File_Sizes/1000;
  125.     write(usr,'Drives Online: ');
  126.     for cnt:=1 to 15 do if Drv[cnt] then write (usr,chr(cnt+64),' ');
  127.   end;
  128.  
  129.   procedure percent (prompt:mstr; top,bot:real);
  130.   var p:real;
  131.   begin
  132.     write (prompt);
  133.     if bot<1 then begin
  134.       writeln (' Not Available');
  135.       exit
  136.     end;
  137.     p:=round(10000*top/bot)/100;
  138.     writeln (p:6:2,'%')
  139.   end;
  140.  
  141. begin
  142.   totalused:=numminsused.total+elapsedtime(numminsused);
  143.   totalidle:=numminsidle.total;
  144.   totalup:=totalidle+numminsused.total;
  145.   totalmins:=1440.0*(numdaysup-1.0)+timer;
  146.   totaldown:=totalmins-totalup;
  147.   callsday:=round(10*numcallers/numdaysup)/10;
  148.   writeln('Hold.. Calculating..');
  149.   writeln;
  150.   FileSZ;
  151.   writehdr ('System Statistics...');
  152.   writeln(^B^B^B);
  153.   writeln ('Time & date:       '^S,timestr,', ',datestr,
  154.        ^M^J'Calls today:       '^S,callstoday:7,
  155.        ^M^J'Total callers:     '^S,numcallers:7:0,
  156.        ^M^J'Total days up:     '^S,numdaysup:7,
  157.        ^M^J'Calls per day:     '^S,callsday:7:1,
  158.        ^M^J'Total mins in use: '^S,numminsused.total:7:0,
  159.        ^M^J'Total mins idle:   '^S,totalidle:7:0,
  160.        ^M^J'Mins file xfer:    '^S,numminsxfer.total:7:0,
  161.        ^M^J'Total mins up:     '^S,totalup:7:0,
  162.        ^M^J'Total mins down:   '^S,totaldown:7:0);
  163.   percent ('Pct used:          '^S,totalused,totalmins);
  164.   percent ('Pct dead:          '^S,totalidle,totalmins);
  165.   percent ('Pct up:            '^S,totalup,totalmins);
  166.   percent ('Pct down:          '^S,totaldown,totalmins);
  167.   writeln( 'Files Online:      '^S,total_files:7,
  168.        ^M^J'Files Storage:     '^S,File_Sizes/1000:7:3,' megs',
  169.        ^M^J'Total Storage:     '^S,Total_Disk/1000:7:3,' megs',
  170.        ^M^J'Upload Space:      '^S,Total_Free/1000:7:3,' megs');
  171.   percent ('Pct Space Unused:  '^S,total_free,total_disk);
  172.   percent ('Pct Space Used:    '^S,(total_disk-Total_Free),Total_disk);
  173.   percent ('Pct Storage Online:'^S,file_sizes,total_disk);
  174. end;
  175.