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