Справочник программиста на персональном компьютере фирмы 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 и т.д.