SMUC. Универсальный контроллер HDD, CMOS, NVRAM, IBM периферии. 1995 г.

Глава 4 - новые подпрограммы Теневого Сервис-Монитора.


4. Новые подпрограммы Теневого Сервис-Монитора
(RST 8) для работы с контроллером периферии
SMUC

(С) 1996-97 МОА

Рад новых вызовов для п/п 81 h R8DOS (вызов встроенного в монитор дискового интерпретатора, код подфункции задается в
регистре С):

Изменена подфункция 9 (SETWRK) дисковой системы (R8DOS) Начиная с версии 3.0а (код 66 от 29.04.95) в регистрах

DE и ВС возвращаются код версии и дата компиляции монитора {в предыдущих версиях эти регистры не изменялись). D — код версии;
С, В, Е—соответственно число, месяц и год.

С=34 (Shddld) — идентификация жесткого диска

in: 512 байтный буфер, указатель на который задается в workfl (подфункция 9)
out: CY —error (нет HDD)

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

С*ЗБ (thddmount) — подключение раздела к драйверу HD. Подключает указанный подраздел к драйверу жесткого диска, после
этого становятся возможными операции чтения/записи из раздела; если подключается образ диска (т. е. задано имя подраздела
TRDOS и имя диска а нем), то становится возможным обращение из TR-DOS

in: Akk — тип операции, задается битами (в скобках Q указаны приоритеты — 0 наивысший)

7 [2] автоподключение, т. е. подключить то, что задано в секторе автонастроек, при этом биты 0.1 — номер диска (О "А", 1 "В". 2
"С", 3 "D") диск А—только при аппаратной поддержке, в противном случае выдает ошибку;

6 [0] отключить подраздел от драйвера (запрещение операций чтения/записи), в «том случае биты 0, 1 — номер диска ГО "А", 1
"В", 2 "С" или 3 "D")

5 [1] подключить подраздел к драйверу, указав (в DE) адрес дескриптора (длинной 25 байт), возвращаемого при предыдущих
подключениях (см. бит 4)

4 (4] вернуть в память (no HL) дескриптор текущего подключенного к драйверу раздела; только эта команда может указываться
совместно с остальными

3 [3] подключение по имени, адрес имени в памяти a DE: текстовая строка вида [dr:l[}partVJos, где part — имя раздела, dos —
имя диска-в разделе TR-DOS, если не задано dr, то подключение происходит к задаваемому битами 0 и 1 диску
2—должен быть О

0,1 — номер дисковода: О —"А", 1— "В", 2 —"С",3— "D"

out: CY—error (любые ошибки, в том числе раздел не найден)

С=36 ($hddrd) — прямое чтение секторов из подраздела жесткого диска

Чтение осуществляется из 'текущего" подраздела — последнего подраздела, подключенного подфункцией $hddmount.
in: hi—адрес в памяти, куда считывать de — начальный номер сектора (считая с II) Ь — число секторов (размер сектора 512
байт!)

out: CY — ошибки

С=37 ($hddwr) — прямая запись секторов в подраздел жесткого диска

Запись осуществляется в "текущий" подраздел — последний подраздел, подключенный подфункцией $hddmount.

in: hi — адрес в памяти, откуда записывать, de — начальный номер сектора (считая с 1!) Ь — число секторов (размер сектора 512

байт!)

out- CY — ошибки

С«38 (Shddpart) — вернуть таблицу (каталог) подразделе. Каждый вход в таблице описывается 16 битами, где +0 тип
подраздела, только младшие 5 бит (0 нет; 1 TR-DOS, 2 MicroDOS...), +6 объем подраздела в секторах, +10 имя подраздела (6 байт)

Замечание: получить имя подраздела TR-DOS можно, подключив подраздел TR-DOS (см. функцию 35, не задавая имени диска!)
и далее — прямым считыванием секторов 0 и 1 — каталога дисков. Формат каталога аналогичен формату таблицы подразделов
in: Akk—должен быть 0 hi — адрес буфера для таблицы (1024 байта)
out: CY — ошибки

de — число задейсгвованых входов в твблице Функция

89h (Retime), вызова RST 8, позволяет установить или прочитать время из микросхемы энергонезависимой памяти (CMOS), код
операции задется в регистре D (отдельными битами):

7 — (1) записать значение времени и/или даты, (0) считать значения времени и/или даты

6 — (1) считывание в буфер (только, если бит 7 == 0) (см. бит 5)

5 — (1) прямое считывание (6 байт данных из CMOS), (0) считывание в формате ASCII
О — (1) работа с датой, (0) работа со временем

Кроме этого при вызове функции регистр HL может указывать адрес буфера, (расположенный в 5 и 2 банках CPU), если бит 6 ==
1. Регистр Е содержит формат считывания: младшие 5 бит символ разделителя (для выводе а формате ASCII); биты 7, 6 и 5
разрешают вывод соответственно часов, минут и секунд, либо для вывода даты: 7 выводить день недели, 6 ставить "О" перед числом,
5 выводить месяц словом и перед годом добавлять 19. Функция возвращает данные либо в буфер (а виде строки ASCIi или б-ю
байтами: секунды, минуты, часы, число, месяц, год), либо в регистрах С — секунды/число, В — минуты/месяц, Е — часы/год, L — день
недели. В этих же регистрах задаются значения для изменения времени или даты. Бит CY указывает на ошибку (микросхемы CMOS
нет).




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Про автомобили - мало кто nрeдставляeт сeбe, что автомобиль мог бы быть совсeм другим, eсли бы нe...
Авторы журнала - ZX-Format No.4
IRYSOU-201 - Научно-фантастический рассказ (часть 1-4).
Партийная зона - FOREVER 2E3, первое крупное событие в мире demoparty для Speccy в этом году: результаты и рассуждения от UnBEL!EVER'a.
Водолей - повесть: Великий Эксперимент.

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