Скачиваний:
201
Добавлен:
17.06.2016
Размер:
2.69 Mб
Скачать

Глава 16. Программирование на системном уровне

Турбо Пролог имеет несколько предикатов непосредственного доступа к

операционной системе и аппаратным средствам. Для начала мы рассмотрим

предикаты, которые позволяют обращаться к операционной системе, а затем

уделим внимание предикатам побитовой обработки - логическим и сдвига.

После этого мы рассмотрим группу предикатов поддержки низкоуровневого ре-

жима работы с базовой системой ввода-вывода (BIOS), памятью, элементами

аппаратуры. В конце главы приведены два примера, демонстрирующие приемы

использования этих предикатов в применениях Турбо Пролога.

Доступ к операционной системе

Пользуясь предикатами, можно выходить в среду ДОС, из среды Турбо

Пролога, или включать возможность доступа к ДОС непосредственно из прик-

ладной программы на Турбо Прологе. Обращение к ДОС можно выполнять вызо-

вом предиката system, обращение к утилитам формирования даты и времени -

использованием предикатов date и time. С помощью предиката envsymbol воз-

можно исследование таблицы переменных среды ДОС, а с помощью comline -

чтение аргументов командной строки ДОС.

Настоящий параграф описывает подробно каждый из этих предикатов. В

нем приведены несколько практических примеров их использования.

System/1

Программа на Турбо Прологе получает доступ к ДОС через предикат

system, имеющий вид:

system ("Любая команда ДОС") /* (i) */

Если аргумент является пустой строкой (""), то предикат обеспечивает

доступ к ДОС. При этом, необходимо, чтобы была доступна программа интерп-

ретатора команд - файл command.com. После обработки предиката появляется

возможность обращения к ДОС, например, с клавиатуры. Для возвращения в

среду Турбо Пролога необходимо ввести слово exit и нажать клавишу Ввод.

Примеры.

1) Для копирования файла B:ORIGINAL.FIL в файл A:NEWCOPY.FIL

из системы Турбо Пролог задайте цель:

system("").

После этого скопируйте файл, используя обычную команду ДОС:

>copy b:original.fil newcopy.fil

Возврат к системе Турбо Пролога выполняется набором команды:

exit.

После этого Турбо Пролог отвечает сообщением

Goal:

2) Для переименования файла (без работы непосредственно в

ДОС) необходимо подать команду:

system("ren newcopy.fil newcopy.txt").

System/3

Эта расширенная версия предиката system обладает двумя дополнитель-

ными возможностями: с помощью нее можно узнать уровень ошибки ДОС, а так-

же переопределить режим вывода на экран системы во время работы с ней.

Вид предиката:

system(DosCommandString, ResetVideo, DOSErrorLevel)

/* (i,i,o)*/,

где переменная DOSErrorLevel связывается со значением уровня ошибки ДОС.

Подробнее об этом прочтите в техническом описании ДОС.

Переменная ResetVideo сообщает о необходимости возвращения видеоап-

паратуры в состояние, в котором она находилась перед обработкой предика-

та. Значение ResetVideo=1 возвращает ее в первоначальное положение,

ResetVideo=0 не возвращает. Если ResetVideo=0, то выполнение программы

будет поддерживаться в экранном режиме заданном вами, даже если он не

поддерживается Турбо Прологом. (Для информации об установке режима экрана

см. справочное руководство по видеоаппаратуре).

Другими словами, если внешняя программа MYSETMD задает видеоаппара-

туре режим, который не поддерживается Турбо Прологом, обращение к ДОС че-

рез предикат system в программе на Турбо Прологе может заставить програм-

му работать в неподдерживаемом режиме:

system("mysetmd",O, DOSErrorLebel).

Заметьте, что внешняя программа должна быть совместимой с аппарату-

рой хотя бы на уровне BIOS.

Соседние файлы в папке Документация