home *** CD-ROM | disk | FTP | other *** search
- Program EquipmentCheck;
- {
- ______________________________________________________________________________
- Checking for various peripheral devices attatched to the PC.
- ______________________________________________________________________________
- }
- type
- RegSet = record
- Case integer of
- 1: (AX, BX, CX, DX, BP, SI, DI, DS, ES, Flags : integer);
- 2: (AL,AH, BL,BH, CL,CH, DL,DH : byte);
- end;
-
- var
- Devices, Memory,
- Printers, DiskDrives,
- RS232, GameIO, M8087 : integer;
- Monitor : string[20];
-
- Function AvailMem : integer;
- {returns available memory in Kbytes}
- var
- Regs : RegSet;
- begin
- Intr($12, Regs); {calling interupt service 12H}
- AvailMem := Regs.AX; {equipment status returned in AX}
- end;
-
- Function EquipStat : integer;
- {returns the equipment status byte}
- var
- Regs : RegSet;
- begin
- Intr($11, Regs); {calling interupt service 11H}
- EquipStat := Regs.AX; {returning equipment status in AX}
- end;
-
- Function DispType : integer;
- {returns type of display monitor attatched}
- var
- Regs : RegSet;
- begin
- Regs.Ah := $0f;
- Intr($10, Regs); {calling interupt service 10H}
- DispType := Regs.AL; {display type in the AL register}
- end;
-
- Procedure GetEquipStat;
- {evaluates the equipment status bytes for specific attatchments}
- begin
- Memory := AvailMem;
- Devices := EquipStat;
- Printers := (Devices AND $C000) SHR 14;
- DiskDrives := ((Devices AND $00C0) SHR 6) + 1;
- RS232 := (Devices AND $0E00) SHR 9;
- GameIO := (Devices AND $0002) SHR 1;
- Case DispType of
- 2 : Monitor := 'Composite Color';
- 3 : Monitor := 'RGB Color';
- 7 : Monitor := 'Monochrome';
- end;
- end;
-
- Procedure DispEquipStat;
- {Displays result of Equipment checks}
- begin
- WriteLn('Equipment Check reveals the following devices:');
- WriteLn;
- WriteLn('System Memory: ',Memory,'k');
- WriteLn('5 1/4" Disk Drives: ',DiskDrives);
- WriteLn('Parallel Printer Adapters: ',printers);
- WriteLn('RS-232 Serial Adapters: ',RS232);
- WriteLn(Monitor,'Display Monitor');
- If GameIO = 1 then
- WriteLn('Game Adapter Port: ',GameIO)
- else
- WriteLn('No Game Adapter Port');
- If M8087 = 1 then
- WriteLn('8087 Math CoProcessor')
- else
- WriteLn('No Math Coprocessor');
- end;
-
-
- { ** main program begins here **}
-
- begin
- GetEquipStat;
- DispEquipStat;
- end.