Справочник программиста на персональном компьютере фирмы IBM. Дисковые накопители - Установка/проверка накопителя по умолчанию
ОГЛАВЛЕНИЕ
5.3.1 Установка/проверка накопителя по умолчанию.
Программы могут экономить часть работы, назначая накопитель по
умолчанию, на котором содержатся файлы данных. Если в начале
программы запросить у пользователя какой накопитель он будет
использовать, то впоследствии не будет сомнений к какому накопи-
телю следует обращаться.
Высокий уровень.
В приведенной программе на Бейсике текущий накопитель по умол-
чанию переключается с помощью процедуры на машинном языке. Проце-
дура имеет длину всего 7 байтов. Она помещается в строку X$, а
переменная Z служит указателем на первый байт процедуры. В прило-
жении Г объясняется как вставлять ассемблерные процедуры в прог-
раммы на Бейсике. Номер накопителя устанавливается в строке 110,
причем 0 = A, 1 = B и т.д. Если назначить накопителем по умолча-
нию несуществующий накопитель, то ошибки не будет, поэтому будьте
внимательны. Не пытайтесь объединить строки 120 и 130 этой проце-
дуры, поскольку в этом случае интерпретатор Бейсика будет обраба-
тывать их неправильно.
100 DEF SEG 'сегмент на начало области Бейсика
110 NUM = 0 'выбираем накопитель A
120 X$ = CHR$(180)+CHR$(14)+CHR$(178)+CHR$(NUM)+CHR$(205)+
CHR(33)+CHR$(223)
130 Y = VARPTR(X$) 'получаем дескриптор строки (адрес в Y+1)
140 Z = PEEK(Y+1)+PEEK(Y+2)*256 'вычисляем адрес строки
150 CALL Z 'выполняем машинную процедуру
Средний уровень.
Функция EH прерывания 21H устанавливает накопитель по умолча-
нию. Надо просто поместить номер накопителя (0 = A, 1 = B и т.д.)
в DL и выполнить прерывание. Эта функция возвращает в AL число
накопителей на машине. Отметим, что когда у машины имеется только
один накопитель, то возвращается число 2. Лучший способ определе-
ния числа накопителей у машины описан в [1.1.5].
MOV AH,0EH ;номер функции
MOV DL,1 ;код для накопителя B
INT 21H ;устанавливаем накопитель по умолчанию
Функция 19H прерывания 21H сообщает какой из накопителей яв-
ляется накопителем по умолчанию. Для этой функции нет входных
регистров. При возврате в AL содержится кодовый номер, где 0 = A,
1 = B и т.д.