Хочу кратко описать работу TRDN c HDD. Этой информации пока нет в файле COMMENTS.TXT в архиве исходников.
При выборе устройства E: происходит чтение каталога разделов функцией 38 R8DOS (#81). На файловой панели (ФП) формируется список имен, состоящий только из TR-DOS-подразделов.
При выборе подраздела происходит его временное монтирование на D: и на ФП формируется список имен псевдодисков. Имена берутся из 8-го логического 256-и байтного блока каждого псевдодиска, т.е. фактические имена, заданные при их инициалицации. Чтение осуществляется функцией 36.
При входе в псевдодиск его монтирования не происходит. Вместо этого нужные сектора из него читаются функцией 36. На ФП формируется список файлов и подкаталогов DirSys.
При монтировании псевдодиска как устройство A:...D:, читается 2-й (или 3-й для LBA) логический сектор HDD собственной процедурой. В нем создается новая запись о примонтированном псевдодиске. Расцитывается и заносится CRC сектора вызовом соответствующей прцедуры по абсолютному адресу из ROM7. Cектор записывается нв прежнее место собственной процедурой. Функцией 35 прозводится "автомонтирование". Дальнейшая работа осуществляется TR-DOS-вызовами 15635, первым из которых: LD A,drive / LD C,1 / CALL 15635. Оказалось что он является обязательным - без него операции с псевдодиском невозможны, и его не заменишь вызовом LD A,drive / LD C,1 / RST 8 / DB #81.
При размонтировании устройства A:...D:, собственной процедурой с HDD читается сектор с записями о примонтированных псевдодисках. Если к устройству действительно примонтирован псевдодиск он отключается Функцией 35, вносятся соответствующие изменения в считанный сектор, включая подсчет CRC и сектор записывается на прежнее место собственной процедурой.




Ответить с цитированием