DPMI, BIOS i ostale funkcije ne razlikuju se od ostalih sistemskih funkcija. Pogledajte u GPC priručnik kako pristupiti C biblioteci svog sustava. Ovaj mali primjer pokazuje kako koristiti DPMI, kopirajući neke strukture i prototipove iz <dpmi.h>:
program DPMIDemo;
{ Samo za DJGPP }
{$X+}
{ `Byte' je `unsigned char' u C-u,
`ShortCard' je `unsigned short' u C-u,
`MedCard' je `unsigned long' u C-u,
`Word' je `unsigned' u C-u,
itd. (svi ovi tipovi su ``built-in''). }
type
TDpmiVersionRet = record
Major : Byte;
Minor : Byte;
Flags : ShortCard;
CPU : Byte;
Master_PIC: Byte;
Slave_PIC : Byte;
end;
type
TDpmiFreeMemInfo = record
LargestAvailableFreeBlockInBytes,
MaximumUnlockedPageAllocationInPages,
MaximumLockedPageAllocationInPages,
LinearAddressSpaceSizeInPages,
TotalNumberOfUnlockedPages,
TotalNumberOfFreePages,
TotalNumberOfPhysicalPages,
FreeLinearAddressSpaceInPages,
SizeOfPagingFilePartitionInPages,
Reserved1,
Reserved2,
Reserved3: MedCard;
end;
function DpmiGetVersion (var Version: TDpmiVersionRet): Integer;
external name '__dpmi_get_version';
function DpmiGetFreeMemoryInformation
(var MemInfo: TDpmiFreeMemInfo): Integer;
external name '__dpmi_get_free_memory_information';
var
Version: TDpmiVersionRet;
MemInfo: TDpmiFreeMemInfo;
begin
if DpmiGetVersion (Version) = 0 then
begin
WriteLn ('CPU type: ', Version.CPU, '86');
WriteLn ('DPMI major: ', Version.Major);
WriteLn ('DPMI minor: ', Version.Minor);
end
else
WriteLn ('Error in DpmiGetVersion');
if DpmiGetFreeMemoryInformation (MemInfo) = 0 then
WriteLn ('Free DPMI memory: ',
MemInfo.TotalNumberOfFreePages, ' pages.')
else
WriteLn ('Error in DpmiGetMemoryInformation');
end.