152: txt := 'Не готов диск';

153: txt := 'Неопознанная команда';

154: txt := 'Ошибка в исходных данных';

155: txt := 'Неверная длина структуры';

156: txt := 'Ошибка установки головок на диске';

157: txt := 'Неизвестный тип носителя';

158: txt := 'He найден сектор';

159: txt := 'Кончилась бумага на принтере';

160: txt := 'Ошибка при записи на устройство';

161: txt := 'Ошибка при чтении с устройства';

162: txt := 'Сбой аппаратуры';

200: txt := 'Деление на ноль';

201: txt := 'Ошибка при проверке границ';

202: txt := 'Переполнение стека';

203: txt := 'Переполнение кучи';

204: txt := 'Недействительная операция с указателем';

205: txt := 'Переполнение при операции с пл.зпт.';

206: txt := 'Исчезновение порядка при операции '+ 'с плавающей запятой.';

207: txt := 'Недопустимая операция с плавающей запятой';

208: txt := 'He инициирован оверлей';

209: txt := 'Ошибка чтения оверлейного файла'

else txt := 'Ошибка N'+Str(ExitCode);

end; {case}

WriteLn(txt,' по адресу ',

HexW(seg(ErrorAddr^)),':',HexW(ofs(ErrorAddr"))) ;

ExitCode := 0;

ErrorAddr := NIL end; /UserExit} ^——————————————————J

Function HexB(b: Byte): String;

{Перевод байта в 16-ричное представление} const ^

HD: array [O..15] of Char = ('0','1','2','3','4','5','6', '7','8','9','A','B",'C','D','E','F');

begin {HexB}

HexB := HD[b shr 4]+HD[b and $F] end; {HexB} _•—__——_————————————_

Function HexW(n: Word): String;

{Перевод слова в 16-ричное представление} begin {HexW}

HexW := HexB(Hi(n))+HexB(Lo(n)) end; {HexW} end. {Unit UsrExit}

Обратите внимание: процедуру UserExit вовсе не обязательно объявлять дальней (с помощью зарезервированного слова Far), т.к. любая подпро—