Модуль Dos реализует ряд очень полезных программ операционной системы и обработки файлов. Ни одна из программ модуля Dos не определена стандартом Паскаля и поэтому они размещены в собственном модуле
DiskFree(d:word):longint; - свободных байт на диске d (0-тек, 1-a:, ...)
DiskSize(d:word):longint; - полный объем.
Переменная DosError:integer;
0
нет ошибки
2
файл не найден
3
путь не найден
5
доступ запрещен
6
неверный обработчик
8
нет памяти
10
неправильная среда
11
неправильный формат
18
больше нет файлов
FindFirst(path:string; attrib:byte; var s:SearchRec);
FindNext(var s:SearchRec);
type SearchRec=record
Fill:array[1..21]of byte;
Attr:byte;
Time:longint;
Size:longint;
Name:string[12]
end;
const
ReadOnly=$01;
Hidden=$02;
SysFile=$04;
VolumeId=$08;
Directory=$10;
Arhive=$20;
AnyFile=$3F;
GetAttr(var F; var Attr:byte) - Возвращает атрибут файла
SetAttr (var F; var Attr:byte) - Устанавливает атрибут файла
Примитивы ввода-вывода и других системных операций BIOS и DOS.
Схема:регистры - прерывание - регистры.
Registers=record
case integer of
0:(AX,BX,CX,DX,BP,SI,DI,DS,ES,Flag:word);
1:(AL,AH,BL,BH,CL,CH,DL,DH:byte);
end;
Intr(nom:byte; var R:Registers);
MsDos(var R:Registers); - прерывание номер $21 DOS.
Пример: прерывание $10(BIOS) - обмен данными с дисплеем
Помещает в текущую позицию курсора
(СХ) штук символов (AL)
с текущим атрибутом
$11
чтение конфигурации системы
$13
обмен данными с диском
$20 - $3F
прерывания DOS.
$21
функции DOS.
$25
абсолютное чтение с диска.
$26
абсолютная запись на диск.
$27
завершение программы с сохранением ее в памяти (резидентная программа).
{Ex_07_10}
uses Crt,Dos;
var R:registers; i,j,k :integer;
begin
ClrScr;
GotoXY(20,10);
R.AH:=10; R.BH:=0;
R.CL:=255; R.CH:=0;
R.AL:=ord('A');
Intr(16,R);
readln
end.
procedure PutTxtImege(x1,y1,x2,y2:integer; var p:pointer);
var R:registers; i,j,k :integer; pr:^byte;
begin
GetMem(p,(x2-x1+1)*(y2-y1+1)*2);
k := 0;
for i:=x1 to x2 do
for j:=y1 to y2 do
begin
GotoXY(i,j);
R.AH:=8; R.BH:=0;
Intr(16,R);
pr:=ptr(seg(p^),ofs(p^) + k);
pr^:=R.AL;
pr:=ptr(seg(p^),ofs(pr^)+1);
pr^:=R.AH;
k := k + 2;
end;
end;
procedure GetTxtImege(x1,y1,x2,y2:integer;
var p:pointer);
var R:registers; i,j,k :integer; pr:^byte;
begin
k := 0;
for i:=x1 to x2 do
for j:=y1 to y2 do
begin
GotoXY(i,j);
R.AH:=9; R.BH:=0;
R.CL:=1; R.CH:=0;
pr:=ptr(seg(p^),ofs(p^) + k);
R.AL:=pr^;
pr:=ptr(seg(p^),ofs(pr^)+1);
R.BL:=pr^;
Intr(16,R);
k := k + 2;
end;
FreeMem(p,(x2-x1+1)*(y2-y1+1)*2);
end;
Процедуры даты и времени
GetDate - Возвращает текущую дату, установленную в DOS
GetFTime - Возвращает дату и время последней записи в файл
GetTime - Возвращает текущее время, установленное в DOS
PackTime - Преобразует запись в 4 байтовое упакованное значение даты и времени типа longint, используемое процедурой SetFTime. Поля записи DateTime не проверяются на диапазон
SetData - Устанавливает текущую дату в DOS
SetFTime - Устанавливает время и дату последней записи в файл
SetTime - Устанавливает текущее время в DOS
UnpackTime - Преобразует 4-х байтовое упакованное значение даты и времени, возвращаемое GetFTime, FindFirst или FindNext в распакованную запись типа DateTime
Процедуры обслуживания прерываний
GetIntVeс - Возвращает адрес, хранящийся в указанном векторе прерывания
Intr - Выполняет указанное программное прерывание
MSDos - Выполняет функцию операционной системы
SetIntVec - Устанавливает адрес для указанного вектора прерывания
Функция статуса диска
DiskFree - Возвращает число свободных байт на указанном диске
DiskSize - Возвращает полный объем указанного диска в байтах
Процедуры обработки файлов
FindFirst - Ищет в указанном или текущем справочнике первый файл, соответствующий заданному имени файла и набору атрибутов
FindNext - Возвращает следующий файл,соответствующий имени и атрибутам, указанным в предыдущем вызове FindFrst
GetFAttr - Возвращает атрибуты файла
SetFAttr Устанавливает атрибуты файла
FSplit - Разбивает имя файла на 3 составные части (справочник, имя файла, расширение)
Функции обработки файла
FExpand - Берет имя файла и возвращает полное имя файла (устройство, справочник, имя и расширение)
FSearch - Ищет файл в списке справочников
Процедуры обработки процессов
Exec - Выполняет заданную программу с указанной командной строкой
Keep - Завершает программу и оставляет ее в памяти (реализует прерывание "завершить и оставить резидентным"- TSR)
SwapVectors - Меняет сохраненные вектора прерываний с текущими векторами
Функции обработки процессов
DosExitCode - Возвращает код завершения подпроцесса
Функции управления средой
EnvCount - Возвращает число строк, содержащихся в среде DOS
EnvStr - Возвращает указанную строку среды
GetEnv - Возвращает значение указанной переменной среды
Дополнительные процедуры
GetCBreak - Возвращает состояние проверки Ctrl-Break в DOS
SetCBreak - Устанавливает состояние проверки Ctrl-Break в DOS
GetVerify - Возвращает состояние флага верификации в DOS
SetVerify - Устанавливает состояние флага верификации в DOS