последовательными обращениями к портам полезно сделать небольшую паузу.
Объем установленной оперативной памяти можно определить с помощью приведенной ниже несложной программы, осуществляющей анализ КМОП—памяти для ПК типа AT или непосредственное тестирование микросхем ОЗУ (для PS/XT). При тестировании учитывается то обстоятельство, что память ПК наращивается так называемыми банками памяти по 64 Кбайт, причем чтение из любого байта несуществующего банка возвращает код 233. Таким образом, достаточно убедиться в наличии одного байта из каждых 64 Кбайт:
{+_-_--_---------------------—-----,»-----+
¦ Эта программа определяет количество ¦ ¦ оперативной памяти, установленной в ПК ¦ +——————————————————————————+/
var
b : Byte;
k,j,m,e: Word;
begin {Проверяем тип ПК}
if Mem[$FOOO:$FFFE]='$FC then {Компьютер типа IBM AT - читаем КМОП-память/ begin
Port[$70] := $15;
m := Port[$71]; {Основная память} Port[$70] := $16;
m := m+Port[$71] shi 8;
Port[$70] := $17;
e := Port[$71j; {Дополнительная память} Port[$70] := $18;
e := e+Port[$71] shi 8 end else
begin {Компьютер типа IBM PC/XT} e :=• 0; {Нет дополнительной памяти} m := 1; {Всегда есть 64 Кбайт стандартной памяти} for k := 1 to 9 do begin
j := k shi 12; {Номер очередного сегмента) if Mem[j:0]<>233 then
inc (ra) else
begin {Проверяем код 233} Mem [j:0] : = 0 ;
if Mem[j:0]=0 then begin inc (m) ;
Mem[j:0] := 233