Тема: DOS File Manager
Привет!
Сегодня попробовал копнуть самую тёмный и страшный подвал dos3.3: файловый менеджер или, говоря более современным языком, драйвер файловой системы.
Тут есть одна хитрая загогулина: если вызов RWTS - то есть драйвера дисковода - вполне описывался во всей агатовской документации, причем даже без ошибок, то про драйвер файловой системы как-то замалчивали. Вроде есть chr$(4) и нефиг тут сопеть.
Но chr$(4) открывает не все доступные операции. Он, в общем-то, позволяет только читать/писать B и A файлы, причем только целиком, а T-файлы - только побайтово.
А изюминка прямого доступа к драйверу ФС в том, что читать и писать можно любые типы файлов, причем блоками произвольного размера !
Этого нет даже в Школьнице.
В результате прикладные агат-программисты были вынуждены изобретать свой велосипед, основываясь на исходнике ДОС Школьницы или создавая что-то совсем своё.
Пожалуй, единственная прога на семёрке, которая работала с драйвером ФС напрямую - это всем семёрочникам известный FID. Но он тянут с эпла, поэтому не удивительно, что ему весь механизм был известен из эпловской документции. В 90-е я весьма интересовался этой темой (изучением FIDа), но понял только, что там всё страшно и никак не пересекается с агатовской документацией.
Сегодняшние ковыряния привели к любопытной находке: оказывается, в ИКП-ДОС тоже есть API файлового менеджера и, похоже, он почти точно соответствует менеджеру DOS3.3. Но, конечно, не всё так просто: перед обращением ко входным точкам в ИКП нужно сперва перенастроить контроллер памяти. Тут авторы ИКП как-то пропустили всю суть API, как стандарта, не требующего лишних движений и обеспечивающего переносимость программ.
Входных точек всего две: процедура получения вектора на дескриптор запроса и процедура вызова драйвера. Всё точно также как и при вызове RWTS (я думаю, все помнят мировую константу $3D9 ? Это несмещаемая процедура вызова RWTS).
Буду ковырять дальше, .... полагаю, рассчитывать на чью-то параллельную разработку этой темы смысла нет ?