logo search
TurboProlog / Документация / TOM_1

Criticalerror/4

В Турбо Прологе эта процедура служит для обработки критических оши-

бок (прерывание 24Н DOS). Если вы хотите создать ваш собственный вариант

criticalerror, то вы должны объявить следующий глобальный предикат:

global predicates

criticalerror(ErrNo, ErrType, DiskNo, Action) -

(i,i,i,o) language c

Предикат criticalerror всегда выполняется успешно и работает только

в .EXE файлах. Предикат criticalerror замещает обработчик прерываний DOS

и на него накладываются такие же ограничения. Вы можете применять только

обращения к функциям DOS от 01h до 0Ch и 59h - что позволяет работать с

консольным вводом/выводом и больше ничего. Если в вашей программе есть

обращения к другим функциям DOS, то операционная система реагирует на них

непредсказуемым образом.

Таблица 19.1: Значения аргументов для предиката criticalerror

-----------------------------------------------------------------

Аргумент Значение

-----------------------------------------------------------------

ErrNo =0 Попытка записи на защищенный диск

=1 Неизвестное устройство

=2 Устройство не готово

=3 Неизвестная команда

=4 CRC ошибка данных

=5 Неверная длина записи при обращении к устройству

=6 Ошибка при поиске

=7 Среда неизвестного типа

=8 Сектор не найден

=9 Отсутствует бумага в принтере

=10 Ошибка записи

=11 Ошибка чтения

=12 Общая ошибка

ErrType =0 Ошибка символьного устройства

=1 Ошибка при чтении с диска

=2 Ошибка при записи на диск

DiskNo =0-25 Означает устройство от А до Z

Action =0 Прервать текущую операцию

=1 Повторить текущую операцию

=2 Игнорировать текущую операцию (это может иметь

тяжелые последствия и потому лучше этим не

пользоваться)

-----------------------------------------------------------------