Ну может ты и прав, в принципе dir всё время один и тот же
(๑•̀ㅂ•́)و✧ Doors UI → https://t.me/doorsui | https://t.me/atari_xl_xe ← Atari XL/XE (●´ω`●)ゞ
hullo
у мя просьба: напишите плз псевдокодом алгоритм расчета дирсисовской crc
boo_boo, я брал эту процедуру в готовм виде из ZX-Ревю. Так что предложить что-то другое не могу. Но точно знаю, что elf/2 разобрлася с процедурой и перевёл её на ПЦ для поддержки в своём плагине для FAR. Может быть он поделится своим наработками?
С уважением, Станислав.
вот как-то такКод:WORD crc(BYTE* ptr, WORD len) { WORD crc = 0; for(; len; len--) { BYTE tmp = crc ^ *ptr++; WORD bCRC = 0; for(int i = 0; i < 8; ++i) { WORD lBit = bCRC & 1; bCRC >>= 1; bCRC |= lBit<<15; // RRA crc if((tmp & 1) ^ lBit) bCRC ^= 0xA001; tmp >>= 1; } crc = bCRC ^ (crc<<8 | crc>>8); } return (crc<<8 | crc>>8); } WORD Manager::calcDScrc(void) { return crc(zeroTrk+9*sectorSize+2, 256+9+11*noFolders); }
Сообщение от CityAceE
Диапазон дат лучше сделать 1979-2043: я Спектруму и всем нам желаю долгой жизни!Сообщение от CityAceE
Должна быть предусмотрена ситуация, когда дата объекта отсутствует (на это могут указывать нули в битах года).
Наверное секунды секунды действительно лишние. И еще: так ли нужна дата создания каталога? может лучше ограничится только датами изменения файлов?Сообщение от CityAceE
Кто как думает?
У меня результат другой: 1666 байтов, или чуть больше 6,5 секторов.Сообщение от CityAceE
Нужно, чтобы общая структура новой версии DirSys не сильно отличалась от старой, чтобы переделка программ, поддерживающих старую версию, была минимальной. Кроме того, и поддержка старой версии в новых программах тоже должна сохраниться.Сообщение от CityAceE
Если в каком-либо моем посте перестала работать гиперссылка или показываться картинка, напишите мне об этом в личном сообщении,чтобы я смог это исправить.
Grand's - сайт об электронно-вычислительной технике (зеркало)
Чем дальше, тем больше мне нравится идея с датами. И я убеждён, что её просто необходимо реализовать!
Я бы предпочёл начать отсчёт с 1980-го года. Вроде бы на PC именно с этой даты отсчёт шёл. А можно и с 1982 - года рождения Спектрума.
В этом случае скорее всего в области дат будут нули. И если это будет так, то можно принудительно назначать дату 01.01.1980, ну или, например, 18.04.1982 - ДР Спектрума.
А я всё же думаю, что не лишние. Эти биты безусловно раздвинут диапазон лет, но, на мой взгляд и предложенного диапазана более, чем достаточно. А секунды - это всё же информация, пусть и не всегда очень полезная. Во всяком случае именно по секундам можно будет судить какой каталог был создан раньше.
Обязательно нужна! Ведь именно по дате каталога чаще всего придётся судить о его содержимом, так как в большинстве случаев даты у файлов будут отсутствовать.
А структура почти и не будет отличаться! Всё, что потребуется - это изменить номер системы с 1.00, на, скажем, 1.10. Это будет говорить софту, что можно работать не более чем с 64-мя каталогами и о необходимости искать даты в последних трёх секторах.
В последних трёх секторах поселить информацию о датах:
00-02 - контрольная сумма трёх последних секторов без первых двух байт, высчитывается по тому же алгоритму, что в DirSys. Позволит судить о целостности системы.
03-04 - свободные байты, можно поселить в них какой-то дескриптор или зарезервировать под будущие нужны. Под дескриптор можно задействовать только один байт, чтобы КС не была равна нулю. Эта информация будет сигнализировать софту, что информация о датах присутствует, а мы не имеет дело просто с пустыми секторами.
128*4 - данные о датах для 128 файлов.
63*4 - данные о датах для 63-х каталогах, 0-й каталог - корневой и не имеет даты. В крайнем случае дату корневого каталога можно хранить где-то в 9-м секторе - там много свободного места!
При таком раскладе весь существующий софт, который обучен DirSys будет работать и с новой системой. Я не думаю, что кто-то на сегодняшний день ухитрился сохранить на дискете более 64-х каталогов не в качесвте эксперемента, а для реальной работы! А других ограничений нет!
Так что надо делать! Чтобы система стала максимально полезной нужно как минимум включить её поддержку в TRDN и в плагин для FAR'а.
С уважением, Станислав.
CityAceE, просто хотел спросить - почему народ спрашивает про отдельные библиотеки? ведь исходник DirSys , надеюсь, имеется? а в нем разве отдельные функции не реализованы отдельными процедурами, о которых и стоит вопрос?
ведь небольшой же труд их просто оттуда изъять, или все настолько запутано??
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)