Valerij Kozhevnikoff (2:5020/4040)
Гость
[3/3] немного инфы по теневику
FromNet: NET_Moscow_Russia_(245_02/09/2005) (commserv.rpb.ru)
Здравствуй, All!
Hовые подпрограммы Теневого Сервис Монитора для работы с
контроллером периферии SMUC.
Ряд новых вызовов для п/п #81 R8DOS (вызов встроенного в
монитор дискового интерпретатора, код подфункции задается в
регистре C.
Изменена подфункция 9 setwrk дисковой системы. Hачиная с
версии 3.0a (код 68 от 29.04.95) в регистрах DE и BC возвраща-
ются код версии и дата компиляции монитора: D- код версии; C,
B, E - соответственно число, мецяц, год.
C=#22 (34) ($hddid) - идентификация жесткого диска.
in: 512 байтный буфер, указатель на который задается в workfl
(подфункция 9).
out: CY - error (нет hdd).
Эта подфункция определяет есть ли диск вообще и пытается
возвратить в буфер сектор-идентификатор (паспорт) считанный из
hdd.
С=#23 (35) ($hddmount) - подключение раздела к драйверу hdd.
Подключает указанный подраздел к драйверу жесткого дис-
ка, после этого становятся возможными операции чтения/записи
из раздела;
Если подключается образ диска (т.е. задано имя подраздела
trdos и имя диска в нем), то становится возможным обращение из
trdos.
in: A - тип операции, задается битами (в скобках [] указаны
приоритеты, 0 - наивысший).
7 [2] автоподключение, т.е. подключить то, что задано в сек-
торе автонастроек, при этом биты 0,1 - номер диска
(0-A...3-D), диск А - только при аппаратной поддержке, в
противном случае выдает ошибку;
6 [0] отключить подраздел от драйвера (запрещение чтения/за-
писи), в этом случае биты 0-1 - номер диска,
(0-A...3-D);
5 [1] подключить подраздел к драйверу, указав в DE адрес
дескриптора длиной 25 байт, возвращаемого при предыдущих
подключениях (см. бит 4);
4 [4] вернуть в память (по HL) дескриптор ткеущего подключен-
ного к драйверу раздела; только эта команда может указы-
ваться совместно с остальными;
3 [3] подключение по имени, адрес имени в памяти по DE:
текстовая строка вида [dr:][\]part\dos, где part- имя
раздела, dos- имя диска в раздeле trdos, если не задано
dr:, то подключение происходит к задаваемому битами 0 и
1 аккумулятора диску;
2 - должен быть 0;
0, 1 - номер дисковода 0-"A", 1-"B", 2-"C", 3-"D".
out: CY=1 - error (любые ошибки, в т.ч. раздел не найден).
C=36 ($hddrd) - прямое чтение секторов из подраздела жесткого
#24 диска.
Чтение осуществляется из "текущего" подраздела - последнего
подраздела подключенного подфункцией $hddmount.
in: HL - адрес в памяти, куда читать,
DE - начальный номер сектора (считая с 1!),
B - число секторов (размер сектора 512 байт!).
out: CY=1 - ошибки.
C=#25 (37) ($hddwr) - прямая запись секторов в подраздел.
Запись осуществляется в "текущий" подраздел - последний
подраздел подключенный функцией $hddmount.
in: HL - адрес в памяти откуда записывать,
DE - начальный номер сектора (считая с 1!),
B - число секторов (размер сектора 512 байт!).
out: CY=1 - ошибки.
C=#26 (38) ($hddpart) - вернуть таблицу (каталог) подраздела.
Каждый вход в таблице описывается 16 байтами, где:
+0 - тип подраздела (значимые только младшие 5 бит),
0 - нет
1 - trdos
2 - microdos
3 - isdos
+6 - объем подраздела в секторах
+10 - имя подраздела (6 байт).
Замечание: получить имя подраздела trdos можно, подключив под-
раздел trdos (см. функцию 35 не задавая имени диска!) и далее
Формат каталога аналогичен формату таблицы подразделов.
in: A - должен быть 0
HL - адрес буфера для таблицы (1024 байта)
out: DE - число задействованных входов в таблице
CY=1 - ошибки
WBR, Jason.
_/(ZX)/_ /*e-mail: jason2000(не кошка)yandex.ru ICQ: 62235830*/
/np:/ *silence*