Что такое модуль dos паскаль. Прочие процедуры и функции. Функции, проверяющие состояние диска

Тот самый Turbo Pascal, с которого многие начинали.

Язык программирования Pascal был создан Никлаусом Виртом. Назван в честь французского философа и математика XVII века Блеза Паскаля. В то время Вирт был профессором информатики в Федеральном техническом университете в Швейцарии и нуждался в языке, с помощью которого можно было обучать студентов навыкам программирования. Концепция Паскаля была разработана Н. Виртом примерно в 1970 году и Паскаль быстро получил широкое распространение благодаря легкости его изучения, наглядности составленных на нем текстов программ. Поскольку Паскаль послужил основой для разработки других языков программирования, таких как Ада и Модула-2, и поскольку многие языки содержат аналогичные Паскалю структуры, знание Паскаля является солидной базой для изучения других языков программирования. В середине 70-х годов была создана попытка разработать международный стандарт на Паскаль. В результате в 1982 году появился стандарт ISO 7185. Язык Паскаль стараниями Андерса Хейлсберга превратился в мощную профессиональную систему программирования Turbo Pascal. Появление инструментальных средств Borlаnd Pascal with Objects и Delphi для разработки программ в среде Windows лишний раз показала, какие неисчерпаемые возможности таит в себе Паскаль. Borland Pascal и используемый в Delphi язык Object Pascal основываются на Turbo Pascal и развивают его идеи. Delphi - компилятор языка Pascal. Delphi 1 был первым инструментарием разработки Windows приложений, объединившим в себе оптимизирующий компилятор, визуальную среду программирования и мощные возможности работы с базами данных. Годом позже Delphi 2 предложил все то же, но на новом уровне современной 32-битной операционной системы Windows 95 и Windows NT. Кроме того, Delphi 2 предоставил программисту 32-битовый компилятор, создававший более быстрые и эффективные приложения, мощные библиотеки объектов. Продолжительная работа команды разработчиков Delphi привела к появлению в третьей версии продукта расширенного набора инструментов для создания приложений, возможности использования технологий COM для разработки приложений WWW и многих других современных технологий программирования. Delphi 4 является очередным шагом в эволюции компиляторов Паскаля с тех времен, когда более 16 лет назад Андерс Хейлсберг создал первый компилятор Turbo Pascal.

Добавлено--

про "Error 200".

RTL выпуска до 1994-го года ещё не содержала в модуле CRT этой ошибки.
Она появилась после обновления RTL 1994-го года и позднее.

Если использовать даже непропатченную оригинальную RTL 1994-го года с этим багом, но в программе не подключать юнит CRT, то никакой "Error 200" в программе не будет.

И наоборот, стоит только написать в программе "uses crt;", как файл окажется неработоспособен на быстрых машинах, потому что ошибка в том модуле CRT проявлялась уже во время автоматической инициализации библиотеки CRT при старте программы.

Модуль (unit) представляет собой набор констант, типов данных, переменных, процедур и функций. Каждый модуль аналогичен отдельной программе на Паскале: он может иметь основное тело, которое вызывается перед запуском Вашей программы и осуществляет необходимую инициализацию. Короче говоря, модуль представляет собой библиотеку описаний, которую можно вставить в свою программу и которая позволит разбить программу на части, компилируемые отдельно.

Турбо-Паскаль обеспечивает Вам доступ к большому числу встроенных констант, типов данных, переменных, процедур и функций. Некоторые из них специфичны для Турбо-Паскаля; другие специфичны для персонального компьютера РС фирмы IBM (и совместимых с ним компьютеров) или для операционной системы MS-DOS. Их количество велико, однако, в своей программе Вы редко используете их все сразу. Поэтому они разделены на связанные группы, называемые модулями. В этом случае Вы можете использовать только те модули, которые необходимы в программе.

Структура модуля

Модуль обеспечивает набор средств благодаря процедурам и функциям при поддержке констант, типов данных и переменных, однако действительная реализация этих средств скрыта в силу того, что модуль разделен на две секции: интерфейса и реализации. Если программа использует модуль, то все описания модуля становятся доступными этой программе, как если бы они были определены в ней самой.

Структура модуля аналогична структуре программы, однако есть несколько существенных различий. Например, рассмотрим модуль:

unit <идентификатор>; interface uses <список модулей>; {Необязательный} {открытые описания} implementation {закрытые описания процедуры и функции } begin {код инициализации } end .

Заголовок модуля начинается зарезервированным словом unit, за которым следует имя модуля (идентификатор) точно так же, как и в случае имени программы. Следующим элементом в модуле является ключевое слово interface. Оно обозначает начало секции интерфейса модуля - секции, видимой всем другим модулям или программам, в которых он используется.

Модуль может использовать другие модули, для этого они определяются в предложении uses. Предложение uses, если имеет место, то следует сразу после ключевого слова interface. Отметим, что здесь выполняется общее правило использования предложения uses: если модуль, имя которого указано в предложении uses, использует другие модули, то имена этих модулей также должны быть указаны в предложении uses, причем до того, как они будут использованы.

Стандартные модули

Файл TURBO.TPL содержит все стандартные пакеты, кроме Graph и пакетов совместимости (Graph3 и Turbo3): System, Overlay, Crt, Dos и Printer. Эти пакеты загружаются в память вместе с Турбо-Паскалем и всегда вам доступны. Обычно файл TURBO.TPL хранят в одном каталоге с TURBO.EXE (или TPC.EXE). Вы можете хранить его и в другом каталоге, если он описан как каталог Турбо-Паскаля. Для этого необходимо с помощью TINST.EXE установить этот каталог в файле TURBO.EXE.

Используемые пакеты: нет

System содержит все стандартные и встроенные процедуры и функции Турбо-Паскаля. Любая подпрограмма Турбо-Паскаля, не являющаяся частью стандартного Паскаля и не находящаяся ни в каком другом модуле, содержится в System. Этот модуль присоединяется ко всем программам.

Используемые пакеты: нет

DOS определяет многочисленные паскалевские процедуры и функции, которые эквивалентны наиболее часто используемым вызовам DOS, как например, GetТime, SetТime, DiskSize и так далее. Кроме того, он определяет две программы низкого уровня МsDos и Intr, которые позволяют активизировать любой вызов MS-DOS или системное прерывание. Registers представляет собой тип данных для параметра в МsDos и Intr. Кроме того, определяются некоторые другие константы и типы данных.

Используемые пакеты: нет

Overlay - содержит инструменты для создания оверлейных программ. Программа OVERKAY - программа, которая загружается не вся, а по частям.

Используемые пакеты: нет

Crt обеспечивает набор специфичных для РС описаний констант, переменных и программ для операций ввода/вывода. Последние можно использовать для работы с экраном (задание окон, непосредственное управление курсором, цвет текста и фона). Кроме того, Вы можете осуществлять "необработанный" ввод с клавиатуры и управлять платой генерации звукового сигнала персонального компьютера. Этот модуль обеспечивает множество подпрограмм, которые были стандартными в версии 3.0.

Используемые пакеты: Crt

В модуле Printer дано описание переменной текстового файла Lst, которая связывается с драйвером устройства, позволяющим направлять стандартный для Паскаля вывод на печатающее устройство с помощью Write и Writeln. Например, включив Printer в свою программу, Вы можете сделать следующее:

Write (Lst,"Сумма " ,A:4 ," и " ,B:4 ," равна " ) ; C:=A + B; Writeln (Lst,C:8 ) ;

Используемые пакеты: Crt

Graph3 поддерживает полный набор графических подпрограмм для версии 3.0 - для обычной, расширенной графики и графики, использующей относительные команды. Они идентичны по имени, параметрами функции подпрограммам версии 3.0.

Используемые пакеты: Crt

Этот модуль содержит две переменные и несколько процедур, которые больше не поддерживаются Турбо-Паскалем. Они включают встроенную файловую переменную Кbd, булеву переменную CBreak и первоначальные целочисленные версии MemAvail и MaxAvail (которые возвращают размер свободной памяти в параграфах, а не в байтах, как это делают настоящие версии).

Используемые пакеты: Crt

Graph обеспечивает набор быстродействующих, эффективных графических подпрограмм, которые позволяют использовать в полной мере графические возможности Вашего персонального компьютера.

Этот модуль реализует независимый от устройства графический драйвер фирмы "Борланд", позволяющий поддерживать графические адаптеры типа СGА, ЕGА, Hercules, АТТ 400, МСGА, 3270 РС и VGА.

Написание собственных модулей

Допустим, Вы написали модуль IntLib, записали его в файл INTLIВ.PAS и оттранслировали на диск; получившийся в результате код находится в файле INTLIВ.ТРU. Для использования этого модуля в программе необходимо включить в нее оператор uses, указывающий компилятору, какой модуль используется. Ваша программа может выглядеть следующим образом:

program MyProg; uses IntLib;

Отметим, что Турбо-Паскаль предполагает, что файл, в котором находится модуль, имеет такое же имя, что и сам модуль. Если имя Вашего модуля МyUtilities, то Турбо-Паскаль будет искать файл с именем МYUTILIТ.PAS.

Компиляция модуля

Модуль компилируется точно так же, как компилируется программа: он создается с помощью редактора, а затем вызывается команда Соmpile/Соmpile (Компилировать/ Компилировать) (или нажимаются клавиши Аlt-С). Однако, вместо файла с расширением.ЕХЕ Турбо-Паскаль создает файл с расширением.ТРU (Turbо Раscal Unit - модуль Турбо-Паскаля). После этого Вы можете оставить этот файл как есть или же вставить его в ТURВО.TPL с помощью TPUMOVER.ЕХЕ.

В любом случае имеет смысл переслать файлы с расширением *.ТРU (вместе с исходными файлами) в каталог модулей, который определен с помощью команды О/D/Unit directories (Каталоги модулей). В одном исходном файле может находиться только один модуль, поскольку компиляция прекращается, как только обнаружен завершающий оператор end.

Пример :

Напишем небольшой модуль. Назовем его IntLib и вставим в него две простые подпрограммы для целых чисел - процедуру и функцию:

unit IntLib; interface procedure ISwap(var I,J: integer ) ; function IMax(I,J: integer ) : integer ; implementation procedure ISwap; var Temp: integer ; begin Temp:=I; I:=J; J:=Temp end ; {конец процедуры ISwap } function IMax; begin if I > J then IMax:=I else IMax:=J end ; {конец функции IMax } end . {конец модуля IntLib }

Введем эту подпрограмму, запишем ее в файл INTLIВ.PAS, а затем оттранслируем на диск. В результате получим код модуля в файле INTLIВ.ТРU. Перешлем его в каталог модулей. Следующая программа использует модуль IntLib:

program IntTest; uses IntLib; var A,B: integer ; begin Write ("Введите два целочисленных значения: " ) ; Readln (A,B) ; ISwap(A,B) ; Writeln ("A=" ,A," B=" ,B) ; Writeln ("Максимальное значение равно " ,IMax(A,B) ) ; end . {конец программы IntTest }

Все описания внутри модуля связаны друг с другом. Например, модуль Crt содержит все описания, необходимые для подпрограмм работы с экраном на Вашем персональном компьютере.

Чтобы использовать в программе величины, описанные в интерфейсной части модуля, имя модуля следует указать в разделе uses . Можно записать несколько имен модулей через запятую, например:

program example; uses Average, Graph, Crt;

После этого все описания, расположенные в интерфейсных секциях модулей, становятся известными в программе, и ими можно пользоваться точно так же, как и величинами, определенными в ней непосредственно. Поиск модулей выполняется сначала в библиотеке исполняющей системы, затем в текущем каталоге, а после этого - в каталогах, заданных в диалоговом окне Options (Directories .

Если в программе описана величина с тем же именем, что и в модуле, для обращения к величине из модуля требуется перед ее именем указать через точку имя модуля.

ПРИМЕЧАНИЕ К любой программе автоматически подключается стандартный модуль System , который содержит библиотеку исполняющей системы Паскаля.

Пример использования модуля из пример 4.6 приведен в пример 4.7 . Программа находит разность средних арифметических значений двух вещественных массивов.

Program dif_average; uses Average; var a, b: mas; i: integer; dif, av_a, av_b: real; begin for i:= 1 to n do read(a[i]); for i:= 1 to n do read(b[i]); average(a, av_a); average(b, av_b); dif:= av_a – av_b; writeln("Разность значений ", dif:6:2); end. Листинг 4.7. Разность средних арифметических значений массивов (модуль)

Стандартные модули Паскаля

В Паскале имеется ряд стандартных модулей, в которых описано большое количество встроенных констант, типов, переменных и подпрограмм. Каждый модуль содержит связанные между собой ресурсы. Ниже приводится краткая характеристика модулей Паскаля.

Модуль System

Модуль System содержит базовые средства языка, которые поддерживают ввод-вывод, работу со строками, операции с плавающей точкой и динамическое распределение памяти. Этот модуль автоматически используется во всех программах, его не требуется указывать в операторе uses . Он содержит все стандартные и встроенные процедуры, функции, константы и переменные Паскаля.

Модуль Crt

Program luck; uses crt; const max = 10; var i, k, n: integer; begin clrscr; { очистить экран } randomize; i:= random(max); { загадать число } window(20, 5, 60, 20); { определить окно } TextBackGround(Blue); { цвет фона – синий } clrscr; { залить окно фоном } TextColor(LightGray); { цвет символов – серый } k:= –1; { счетчик попыток } GotoXY(12, 5); writeln(" Введите число: "); repeat { цикл ввода ответа } GotoXY(20, 9); { установить курсор } readln(n); { ввести число } inc(k); until i = n; window(20, 22, 60, 24); { определить окно результата } TextAttr:= 2 shl 4 + 14; { желтые символы за зеленом фоне } clrscr; { залить окно фоном } GotoXY(6, 2); { установить курсор } writeln(" Коэффициент невезучести: ", k / max:5:1); readkey; { ждать нажатия любой клавиши } TextAttr:= 15; { белые символы на черном фоне } clrscr; { очистить после себя экран } end. Листинг 4.8. Пример использования модуля Crt

Генератор случайных чисел формирует число, находящееся в диапазоне от нуля до max – 1 . Пользователь вводит числа в одну и ту же позицию на экране до тех пор, пока не угадает это число. При угадывании с первого раза коэффициент невезучести равен нулю.

Модули Dos и WinDos

Модули Dos и WinDos содержат подпрограммы, реализующие возможности операционной системы MS-DOS, такие как переименование, поиск и удаление файлов, получение и установка системного времени, выполнение программных прерываний и т. д. Эти подпрограммы в стандартном Паскале не определены. Для поддержки подпрограмм в модулях определены константы и типы данных.

Модуль Dos использует строки Паскаля, а WinDos - строки с завершающим нулем.

Модуль Graph

Модуль обеспечивает работу с экраном в графическом режиме.

Экран в графическом режиме представляется в виде совокупности точек - пикселов (pixel, сокращение от picture element ). Цвет каждого пиксела можно задавать отдельно. Начало координат находится в левом верхнем углу экрана и имеет координаты (0, 0). Количество точек по горизонтали и вертикали (разрешение экрана ) и количество доступных цветов зависят от графического режима. Графический режим устанавливается с помощью служебной программы - графического драйвера .

В состав оболочки входят несколько драйверов, каждый из которых может работать в нескольких режимах. Режим устанавливается при инициализации графики либо автоматически, либо программистом. Самый "мощный" режим, поддерживаемый модулем Graph , - 640 480 точек, 16 цветов. Модуль Graph обеспечивает:

Модуль Strings

Модуль Strings предназначен для работы со строками, заканчивающимися нуль-символом, то есть символом с кодом 0 (их часто называют ASCIIZ-строки). Этот вид строк введен в Паскаль специально для работы с длинными строками и программирования под Windows. Модуль Strings содержит функции копирования, сравнения, слияния строк, преобразования их в строки типа string , поиска подстрок и символов.

3.1 Процедуры для работы с датой и временем.

Процедура

Описание

Возвращает текущую дату, установленную в операционной

Возвращает дату и время последней записи файла.

Возвращает текущее время, установленное в операционной

Преобразует запись DateTiме в четырехбайтовое упакован-

ное символьное представление даты и времени длинного цело-

го типа, которое используется в процедуре SetTiме . Поля за-

писи DateTiме не проверяются на допустимость границ.

Устанавливает для операционной системы текущую дату.

Устанавливает время и дату последней записи файла.

Устанавливает в операционной системе текущее время.

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

ставление даты и времени длинного целого типа, возвращаемо-

го процедурами GetFTiме ,FindFirst ,FindNext в распа-

кованную запись DateTiме .

Функции, проверяющие состояние диска.

Фуннкция

Описание

Возвращает число свободных байт на диске в заданном диско-

Возвращает полный объем в байтах заданного диска.

Процедуры обработки файлов.

Процедура

Описание

Воспринимает имя файла и возвращает полное уточненное имя

(диск, каталог, расширение).

Ищет файл в списке каталогов.

Производит поиск в заданном (или текущем) каталоге записи,

содержимое которой совпадает с заданным именем файла и ат-

рибутами.

Возвращает следующую запись, имя файла и атрибуты в кото-

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

обращении к процедуре FindFirst .

Возвращает атрибуты файла.

Устанавливает атрибуты файла.

3.4 Функции управления операционной средой.

Описание

Возвращает число строк, содержащихся в операционной среде

Возвращает заданную строку операционной среды.

Возвращает значение заданной переменной операционной сре-

3.5 Прочие процедуры и функции.

3.6 Переменные и константы модуля.

Многими подпрограммами модуля Dos для сообщения об ошибке используется переменная

Константы возвращаемые DosError.

Значение

Описание

Файл не найден

Путь к файлу не найден

В доступе отказано

Ошибочный заголовок

Not enough memory

Недостаточно памяти

Invalid environment

Ошибочное окружение

Ошибочный формат

Нет файлов

Константы атрибутов файла . Используется для построения атрибутов файлов при работе с процедурамиGetFAttr ,SetFAttr ,FindFirst иFindNext .

Константа

Значение

Описание

Только для чтения

Системный

Метка тома

Архивный

Любой файл

Константы являются аддитивными, так что оператор:

FindFirst("*.*", ReadOnly + Directory, S);

будет находить все обычные файлы, а также файлы, доступные только для чтению и подкаталоги текущего каталога. Константа AnyFile представляет собой просто сумму атрибутов.

3.7 Предопределенные типы.

В модуле Dos определяются следующие типы:

Тип DateTime . Используется подпрограммамиUnpackTime иPackTime для проверки и построения 4-байтовых упакованных значений даты и времени, которые используются вGetTime ,SetFTime ,FindFirst иFindNext .

Описание: type

DateTime = record

Year, Month, Day, Hour, Min, Sec: Word; end ;

Примечания: Допустимыми значениями являются для Year − 1980..2099 , для

Month − 1..12, для Day− 1..31, для Hour− 0..23, для Min− 0..59, для Sec− 0..59.

Тип FileRec . Определение записи, предназначенное для внутреннего использо-

вания в Borland Pascal.

Описание: type

FileRec = record Handle: Word; Mode: Word; RecSize: Word;

Private: array of Byte; UserData: array of Byte; Name: array of Char;

end;

Тип SearchRec . ПроцедурыFindFirst иFindNext используют переменные типаSearchRec для просмотра каталогов.

Описание: type

SearchRec = record

Fill: array of Byte; Attr: Byte;

Size: Longint; Name: string;

end;

Информация о каждом файле, найденном в одной из этих процедур, записывается в SearchRec . ПолеAttr содержит атрибуты файла (построенные из констант− атрибутов),Time содержит упакованную дату и время (для распаковки этого значения используетсяUnpackTime ),Size содержит размер в байтах, аName содержит его имя. ПолеFill резервируется DOS и не должно модифицироваться.

Типы работы со строками . Строковые типы используются различными проце-

· Модуль DOS . Модуль DOS позволяет использовать возможности операционной системы MS-DOS, не предусмотренные в стандарте языка Паскаль, и содержит типы, константы, переменные и для реализации этих дополнительных возможностей.

Кроме вышеперечисленных стандартных модулей был разработан модуль SetConf , в котором находится функция привязки программы к BIOS компьютера, т. е. защита от копирования.

При запуске программы в первую очередь проверяется целостность системы; т. е. наличие всех файлов системы, соответствуют ли их имена и размеры таблице. Далее происходит инициализация: проверяются параметры BIOS. Если какой либо файл системы был изменен или параметры BIOS не соответствуют установленным в программе, система работать не будет. Для входа в систему необходимо ввести пароль. Эти проверки осуществляются в конструкторе Init объекта TMyApp . Этот же объект инициализирует меню (TMyApp.InitMenu), строку состояния (TMyApp.InitStatusLine), рабочее поле (TMyApp.InitDeskTop), устанавливает специальную цветовую палитру (TMyApp.GetPalette). Обработка событий (нажатие клавиш клавиатуры, работа с “мышью”) осуществляется в методе HandleEvent объекта TMyApp . При выборе какого-либо пункта меню управление передается соответствующему объекту или вызывается нужная подпрограмма.

В программе используются следующие процедуры, функции и объекты:

1. Shifr (процедура). Зашифрование файлов любого типа. Сначала получаем пароль от пользователя, затем создаем файл зашифрованных данных (*.M&A). Исходный файл считывается блоками по 64 word, кодируется с помощью генератора ПСЧ, затем переставляется в соответствии с таблицей, изображенной на рис. 2 . Полученную последовательность записываем в файл с расширением *.M&A и т. д.

2. DeShifr (процедура). Расшифрование файлов, зашифрованных процедурой Shifr .

3. Plus (процедура). Установка защиты паролем или по ключевой дискете на программы.

4. Block (процедура). Защита винчестера от записи.

5. Passwords (процедура). Изменение пароля входа в программу. Сначала запрашивает старый пароль, затем два раза новый.

6. TOptions (объект, потомок объекта TDialog). Выводит диалоговое окно изменения

настроек шифрования файлов: удалять или не удалять исходный файл, высвечивать или не высвечивать индикатор процесса шифрования.

7. CheckExec (процедура). Обрабатывает ошибки DOS.

5. Описание применения программы

Программа предназначена для защиты данных от несанкционированного доступа; в ней реализованы следующие функции:

· шифрование файлов;

· защита паролем исполняемых файлов;

· защита исполняемых файлов с помощью ключевой дискеты;

· отслеживание и реакция на ошибки;

· изменение паролей;

· привязка к BIOS.

Установка системы происходит с ключевой дискеты программой INSTALL. EXE , которая проверяет не была ли установлена система ранее; если нет, то создает на винчестере каталог C:\ SUB ROSA и копирует в него файлы системы (Sub Rosa. exe, Block, KeyDisk, Plus, Passw, Setup. res, System. res ).

При запуске программыSub Rosa. exe сначала проверяется наличие всех файлов системы. Если хотя бы один файл изменен или удален, то система работать не будет. Для работы с программой необходимо ввести пароль.

В верхней части экрана находится полоска меню, состоящая из следующих пунктов:

1. “Файлы”:

- “Выбрать” (выбор файла для работы);

- “Сменить каталог” (смена текущего каталога);

- “Выход в DOS” (временный выход в DOS);

- “Завершение” (завершение работы с программой);

2. “Защита”:

- “Установить пароль” (защита EXE- и COM-файлов паролем);

- “Блокировать винчестер” (запрет записи любых данных на винчестер);

3. “Ключевая дискета”:

- “Добавить проверку по ключу” (защита EXE- и COM-файлов с помощью

ключевой дискеты);

4. “Криптография”:

- “Зашифровать файл данных” (зашифрование выбранного файла);

- “Расшифровать файл данных” (расшифрование выбранного файла);

5. “Настройки”:

- “Криптография” (изменение настроек криптографии);

- “Пароли” (изменение пароля входа в систему);

6. “О Программе” (информация о программе).

Во всех случаях, кроме блокировки винчестера, сначала необходимо выбрать файл для работы. Для установки защиты паролем или по ключевой дискете выбирается EXE- или COM-файл, для шифрования - файл любого типа.

6. Заключение

В заключении проведем анализ некоторых систем защиты от копирования. Следует отметить, что этот анализ не является исчерпывающим, так как эти системы постоянно развиваются, а также не всегда можно получить исчерпывающее описание алгоритмов - разработчики не стремятся раскрывать принципы их построения.

RANK - пакет защиты от НСД. Этот пакет реализует функцию контроля доступа к EXE- и COM-файлам. Следует отметить, что анализ разграничения доступа к программам ставит под серьезное сомнение возможность реализации такой функции без дополнительных мероприятий.

LATCH - комплекс программ защиты ПЭВМ от НСД. Этот комплекс обеспечивает безопасность данных, хранящихся на винчестере. При несанкционированном доступе происходит “зависание” ПЭВМ или не обнаруживается НЖМД.

Тезис о невозможности обнаружения НЖМД вызывает серьезные сомнения: например, для контроллеров SCSI не требуется определение типа НЖМД в памяти CMOS, так как параметры винчестера могут быть считаны с помощью команды контроллера.

Приложение 1

Листинг программы

{****************************************************************************}

{** КП "ЗАЩИТА ДАННЫХ ОТ НСД" **}

{** Выполнили учащиеся гр.46491 ЕГАНОВ МАКСИМ и ЮЗЕФОВИЧ АРТЕМ **}

{****************************************************************************}

{****************************************************************************}

{$M 10240, 0,20480} {Распределение памяти}

Program Sub_Rosa;

App, Dialogs, Drivers, Menus, MsgBox, Objects,

Validate, Views, Memory, StdDlg, Editors, {Модули Turbo Vision, далее - TV}

CRT, DOS, {Стандартные модули}

SetConf; {Модуль функции привязки к BIOS}

MyRes: TResourceFile; {Переменная файла ресурсов, TV}

FName, MainDir, DName: string; {Переменные работы с файлами и каталогами}

MainPass, Pass: string; {Переменные паролей}

FilePass: file of char; {Переменная файла паролей}

OptFile, OptInd: word; {Переменные опций}