home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1990 / 04 / algorith / emsinfo.pas < prev    next >
Pascal/Delphi Source File  |  1989-12-28  |  3KB  |  85 lines

  1. (* ------------------------------------------------------ *)
  2. (*                      EMSINFO.PAS                       *)
  3. (*  Ermittelt die aktuelle Belegung des Expanded Memory   *)
  4. (*           Turbo Pascal Versionen 4.0 und 5.x           *)
  5. (*    Copyright (c) 1989  Karsten Gieselmann & TOOLBOX    *)
  6. (* ------------------------------------------------------ *)
  7.  
  8. PROGRAM EmsInfo;
  9.  
  10. {B-,I-,R-,S-,V-}              (* keine Laufzeitprüfungen! *)
  11.  
  12. USES
  13.   DOS, EMS, Utility;
  14.  
  15. CONST
  16.   PageSize = 16;           (* Größe einer Seite in KBytes *)
  17.  
  18. VAR
  19.   HandlePage : EMS.HandlePages;
  20.   HandleName : EMS.HandleNames;
  21.   Index, Entries, TotalEMS, AvailEMS : WORD;
  22.   Version, Count, Tab : BYTE;
  23.   Ems4 : BOOLEAN;
  24.  
  25. BEGIN
  26.   StartUp('EMSINFO - Expanded Memory Information');
  27.   IF EMS.Installed THEN BEGIN
  28.     Write('Expanded Memory Manager (EMM) Version ');
  29.     Version := EMS.GetVersion;
  30.     Ems4 := (Version >= $40);
  31.     Write(Version shr $04, '.', Version and $0F);
  32.     WriteLn(' installiert.'); WriteLn;
  33.     EMS.QueryMemory(TotalEms, AvailEms);
  34.     Tab := 1;
  35.     IF TotalEms >=   10 THEN Inc(Tab);
  36.     IF TotalEms >=  100 THEN Inc(Tab);
  37.     IF TotalEms >= 1000 THEN Inc(Tab);
  38.     Write(TotalEms*PageSize:5, ' KBytes in ');
  39.     WriteLn(TotalEms:Tab, ' Seiten vorhanden,');
  40.     Write((TotalEms-AvailEms)*PageSize:5, ' KBytes in ');
  41.     Write(TotalEms-AvailEms:Tab, ' Seiten durch ');
  42.     WriteLn(EMS.ActiveHandles, ' Prozesse belegt,');
  43.     Write(AvailEms*PageSize:5, ' KBytes in ');
  44.     WriteLn(AvailEms:Tab, ' Seiten noch frei.'); WriteLn;
  45.     Write('   64 KByte EMS Page Frame bei Adresse ');
  46.     WriteLn(HexW(PageFrameSegment), ':', HexW(0), '.');
  47.     WriteLn;
  48.     IF Ems4 THEN BEGIN
  49.       Write(GetTotalHandles:5, ' Prozesse ');
  50.       WriteLn('(Handles) werden maximal unterstützt.');
  51.       WriteLn;
  52.     END;
  53.     Write('':5);
  54.     WriteLn(' Handle    gehört zu    Seiten    KBytes');
  55.     Write('':5);
  56.     WriteLn('────────  ───────────  ────────  ────────');
  57.     EMS.GetHandlePages(HandlePage, Entries);
  58.     IF Ems4 THEN BEGIN
  59.       EMS.GetHandleDirectory(HandleName, Entries);
  60.     END;
  61.     FOR Index:=0 TO Pred(Entries) DO BEGIN
  62.       WITH HandleName[Index], HandlePage[Index] DO BEGIN
  63.         Write('':5, Handle:6, '':5);
  64.         IF Handle=0 THEN
  65.           Write('SYSTEM         ')
  66.         ELSE IF NOT Ems4 OR (Name[1] = #0) THEN
  67.           Write('Unbekannt      ')
  68.         ELSE BEGIN
  69.           Count :=1;
  70.           WHILE (Count<=8) AND (Name[Count]<>#0) DO BEGIN
  71.             Write(Name[Count]);
  72.             Inc(Count);
  73.           END;
  74.           Write('':10-Count+6);
  75.         END;
  76.         WriteLn(Pages:3, '':7, Pages*PageSize:3);
  77.       END;
  78.     END;
  79.   END ELSE BEGIN
  80.     WriteLn('Kein EMS installiert!');
  81.   END;
  82. END.
  83. (* ------------------------------------------------------ *)
  84. (*                 Ende von EMSINFO.PAS                   *)
  85.