Profi+ BDOS. Руководство программиста. 1993 г.

Мультиселекторный обмен с диском - счетчик байтов файла, обработка ошибок, инициализация базовой страницы памяти.


2.3.4. Мультиселекторный обмен с диском

МикроДОС может обеспечить обмен несколькими записями с диском
за одну операцию БДОС. Этот процесс называемый
мультиселекторным обменом, удобно использовать при операциях
обмена, когда размер физической записи больше 128 байт.

Количество записей, которое может участвовать в
мультиселекторном обмене, изменяется в пределах от 1 до 128. Это
значение устанавливается операцией БДОС 44 (установка
мультиселекторного счетчика). Значение мультиселекторного счетчика
определяет количество секторов, участвующих в обмене, для операций
последовательного и произвольного обмена (операции 20, 21, 33, 34 и
40). Если значение мультиселекторного счетчика равно N, то вызов
одной из указанных выше операций эквивалентен N последовательным
вызовам при обмене по одному сектору. Если операция прерывается по
ошибке (например, при достижении конца файла), файловая система
возвращает в регистре Н количество записей, с которыми успешно
осуществился обмен. См. также операции 50/129 50/130.

2.3.5. Счетчик байтов файла

Несмотря на то, что логический размер записи в МикроДОС равен
128 байт, МикроДОС имеет механизм определения числа байтов в
файле. Размер файла может быть вычислен, если известен последний
байт последней записи файла. Операция 35: получение размеров файла
возвращает виртуальный размер файла, который является номером
последней записи файла плюс 1. Операция 30: установка атрибутов
файла может установить счетчик байтов файла. Операция 15:
открытие файла может в свою очередь вернуть счетчик байтов файла
в поле ТЗ БУФ. Операции 17: поиск первого и операция 18: поиск
следующего также возвращает счетчик байтов файла в поле С1 БУФ в
текущем буфере прямого доступа к памяти (ПДП) (см.также операцию
26: Установка адреса буфера прямого доступа). Операция 22: создание
файла устанавливает счетчик байтов в 0 при создании файла в
оглавлении диска.

Следует принять во внимание, что файловая система не имеет
доступа к счетчику байтов во время операций записи или ч^ния
файла.

2.4 Обработка ошибок.

При работе с файлами БДОС обнаруживает физические и логические
ошибки и выдает на консоль сообщения об этих ошибках. Общий вид
сообщения приведен ниже:

Ошибка БДОС на X: [имя файла] тип ошибки
ОР = NN PC = АААА
1ST = SS Т = ТТ S = YY]

(Игнорировать (Y/N<BK>)]

,где X - диск, при обмене с которым произошла ошибка

имя файла - указывает файл, в котором произошла ошибка
тип ошибки - указывает тип ошибки.

Микро ДОС определяет следующие типы ошибок:

сбой диска - физическая ошибка при работе с диском

выбор - выбор для операции диска, не поддерживаемого

БСВВ

только для - попытка удаления или записи в файл, у которого
чтения установлен атрибут только для чтения (R)

системный - попытка удаления или записи в файл, у которого

установлеен,. системный атрибут (S)
неявное имя - БУФ указывает неявное имя для операции, которая

не допускает неявного имени
файл есть - попытка создания или переименования файла с

именем, которое уже присвоено какому-то файлу.
NN - указывает десятичный номер операции БДОС, при

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

управление после исполнения операции БДОС
SS - байт состояния диска

ТТ - номер дорожки диска

ВНИМАНИЕ: конкретный текст сообщений определен в БСВВ. он
может быть изменен при простановке МикроДОС. В зависимости от
вида ошибки текст, указанный в квадратных скобках, может не
выводиться.

БДОС использует два режима обработки ошибок, которые могут
выбираться с помощью операции 45. В режиме обработки по
умолчанию (режим,устанавливающийся после начальной загрузки и
"горячего старта") управление возвращается вызывающей программе
только при отсутствии ошибок, иначе вызывающая программа
прерывается, выводится сообщение об шибке и производится "горячий
старт". В режиме возврата обработки ошибок при обнаружении ошибок
управление возвращается вызывающей программе с признаком
ошибочного исполнения.

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

В зависимости от типа ошибки режима обработки ошибок ОС
производит различные действия. При обнаружении ошибки выбора
диска, попытки удаления или записи в системный файл,
использовании неявного имени в операциях (не допускающих его
использование), а также при попытке создания файла или
переименования файла с существующим именем выводится сообщение
об ошибке (в режиме обработки ошибок по умолчанию), вызывающая
программа прерывается и произволдится "горячий старт" системы. В
режиме возврата управление возвращается вызывающей программе с
указанием ошибки. Аналогичные действия производятся при
обнаружении физической ошибки при записи в оглавление. Во всех
остальных случаях после вывода сообщения об ошибке выводится
вопрос "игнорировать ?" и ожидается ответ оператора. Если оператор
вводит один символ Д или Y (в нижнем или верхнем регистре), ошибка
игнорируется и управленние возвращается вызывающей программе с
признаком успешного окончания. При любом другом ответе или
перывается выполнение вызывающей программы и производится
"горячий старт" (в режиме обработки ошибок по умолчанию), или
управление возвращается вызывающей программе с кодом ошибки (в
режиме возврата).

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

В МикроДОС приняты следующие необязательные значения байта
состояния для ошибок:

2.5 Инициализация базовой страници памяти

Базовая страница памяти содержит сегменты кодов и данных,
которые используются прикладными программами, работающими под
управлением МикроДОС.

Ниже приведены размещение этих сегментов в базовой странице, а
также их назначение.

АДРЕСА

СОДЕРЖАНИЕ

оооон -

0002Н

содержит команды перехода в точку БДОС,
обеспечиващую "горячий" старт системы.

0003Н -

0004Н

не используется (резерв)

0005Н -

0007Н

содержит команду перехода в БДОС и может
использоваться с двумя целями - для вызова
операций БДОС и для определения последней ячейки
памяти, доступной пользователю. Для вызова
операций БДОС нужно использовать команду CALL
0005Н, а для определения верхушки памяти-команду
LIILD 0006. Впоследнем случае в регистры H&L
загружается адрес начала БДОС, который на 1
больше адреса последней доступной ячейки памяти

0008Н -

0038Н

этот сегмент резервируется для обработки
прерывания 1-7 уровней

003ВН -

005ВН

не используется (резерв)

005СН -

006ВН

БУФ (область 1): Интерпретатор команд
подготавливает в этом сегменте БУФ из первого
имени в параметрах команды

006СН -

007ВН

БУФ (область 2): Интерпретатор команд
подготавливает в этом сегменте БУФ- из второго

007СН

имени в параметрах команды

позиция текущей записи БУФ (область 1)

007DH -

■ 007FH

позиция номера произвольной записи БУФ(область1)

0080Н -

00FFH

буфер прямого доступа по умолчанию

Интерпретатор команд перед передачей управления транзитной
программе инициализирует базовую страницу, начиная с адреса 005С.
Если параметры команды определены, то в области 1 БУФ
подготавливается БУФ из первого имени файла в параметрах команды,
а в области 2 из второго имени. Если в параметрах команды имена
файлов не указаны, то соответствующие поля заполняются пробелами.

Буфер ПДП по умолчанию с адреса 80Н заполняется остатком
командного предложения (параметрами команды), при этом в первый
байт заносится количество символов остатка, а в последующие сам
остаток. В буфере прямого доступа остаток ограничивается нулевым
байтом. Так как файловая система использует вторую часть БУФ и
буфер ПДП для дисковых операций, прикладные программы перед
вызовом операций БДОС должны сохранить информацию, занесенную
в них интерпретатором команд.

Ниже приведен пример инициализации базовой страницы для
следующего командного предложения:




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Games of Millennium - Игры по мотивам фильма Renegade (Отступник).
Учебник - Программирование в машинных кодах и на языке АССЕМБЛЕРА (часть первая).
Всем нам - О вежливости: критерии воспитанного человека.
BBS - список станций BBS ZXNet.
Программирование - работа с банками памяти в IAR'е.

В этот день...   24 ноября