program VIDEO_ADAPTER; const PortMono = $03BA; PortColor = $03DA; var Mask : byte; I : integer; Mono, Color : boolean; begin TextColor (LightGray); TextBackGround (Black); (* маскируем все аппаратные прерывания *) Mask := Port [$21]; (* маска аппаратных прерываний *) Port [$21] := $FF; (* запрет всех прерываний *) (* полагая присутствие монохромного адаптера, ждем рабочего хода разверток *) I := -1; while (I <> 0) and (Port [PortMono] and $81 = $81) do I := Pred (I); Mono := Port [PortMono] and $81 <> $81; (* полагая присутствие цветного адаптера, ждем рабочего хода разверток *) I := -1; while (I <> 0) and (Port [PortColor] and $09 = $09) do I := Pred (I); Color := Port [PortColor] and $09 <> $09; (* размаскируем аппаратные прерывания *) Port [$21] := Mask; (* восстановление прерываний *) (* выводим результаты исследований *) WriteLn ('Анализ типа установленных адаптеров дисплея'); WriteLn ('-------------------------------------------'); if Mono then WriteLn ('Монохромный (MDA, HGC) адаптер присутствунт') else WriteLn ('Монохромный (MDA, HGC) адаптер не обнаружен'); if Color then WriteLn ('Цветной (CGA, EGA,...) адаптер присутствует') else WriteLn ('Цветной (CGA, EGA,...) адаптер не обнаружен'); Halt (0) end. (* VIDEO_ADAPTER *)
Вернуться к статье