home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* EMSINFO.PAS *)
- (* Ermittelt die aktuelle Belegung des Expanded Memory *)
- (* Turbo Pascal Versionen 4.0 und 5.x *)
- (* Copyright (c) 1989 Karsten Gieselmann & TOOLBOX *)
- (* ------------------------------------------------------ *)
-
- PROGRAM EmsInfo;
-
- {B-,I-,R-,S-,V-} (* keine Laufzeitprüfungen! *)
-
- USES
- DOS, EMS, Utility;
-
- CONST
- PageSize = 16; (* Größe einer Seite in KBytes *)
-
- VAR
- HandlePage : EMS.HandlePages;
- HandleName : EMS.HandleNames;
- Index, Entries, TotalEMS, AvailEMS : WORD;
- Version, Count, Tab : BYTE;
- Ems4 : BOOLEAN;
-
- BEGIN
- StartUp('EMSINFO - Expanded Memory Information');
- IF EMS.Installed THEN BEGIN
- Write('Expanded Memory Manager (EMM) Version ');
- Version := EMS.GetVersion;
- Ems4 := (Version >= $40);
- Write(Version shr $04, '.', Version and $0F);
- WriteLn(' installiert.'); WriteLn;
- EMS.QueryMemory(TotalEms, AvailEms);
- Tab := 1;
- IF TotalEms >= 10 THEN Inc(Tab);
- IF TotalEms >= 100 THEN Inc(Tab);
- IF TotalEms >= 1000 THEN Inc(Tab);
- Write(TotalEms*PageSize:5, ' KBytes in ');
- WriteLn(TotalEms:Tab, ' Seiten vorhanden,');
- Write((TotalEms-AvailEms)*PageSize:5, ' KBytes in ');
- Write(TotalEms-AvailEms:Tab, ' Seiten durch ');
- WriteLn(EMS.ActiveHandles, ' Prozesse belegt,');
- Write(AvailEms*PageSize:5, ' KBytes in ');
- WriteLn(AvailEms:Tab, ' Seiten noch frei.'); WriteLn;
- Write(' 64 KByte EMS Page Frame bei Adresse ');
- WriteLn(HexW(PageFrameSegment), ':', HexW(0), '.');
- WriteLn;
- IF Ems4 THEN BEGIN
- Write(GetTotalHandles:5, ' Prozesse ');
- WriteLn('(Handles) werden maximal unterstützt.');
- WriteLn;
- END;
- Write('':5);
- WriteLn(' Handle gehört zu Seiten KBytes');
- Write('':5);
- WriteLn('──────── ─────────── ──────── ────────');
- EMS.GetHandlePages(HandlePage, Entries);
- IF Ems4 THEN BEGIN
- EMS.GetHandleDirectory(HandleName, Entries);
- END;
- FOR Index:=0 TO Pred(Entries) DO BEGIN
- WITH HandleName[Index], HandlePage[Index] DO BEGIN
- Write('':5, Handle:6, '':5);
- IF Handle=0 THEN
- Write('SYSTEM ')
- ELSE IF NOT Ems4 OR (Name[1] = #0) THEN
- Write('Unbekannt ')
- ELSE BEGIN
- Count :=1;
- WHILE (Count<=8) AND (Name[Count]<>#0) DO BEGIN
- Write(Name[Count]);
- Inc(Count);
- END;
- Write('':10-Count+6);
- END;
- WriteLn(Pages:3, '':7, Pages*PageSize:3);
- END;
- END;
- END ELSE BEGIN
- WriteLn('Kein EMS installiert!');
- END;
- END.
- (* ------------------------------------------------------ *)
- (* Ende von EMSINFO.PAS *)