PDA

Просмотр полной версии : Просмотр образов CP/M дисков



Страницы : 1 [2]

Error404
26.09.2015, 15:00
Ага вижу внутри CP/M, глазьями:)

А вот отсюда по-подробнее, я про жесткие диски не знаю совсем ничего. Как оно там все устроено, где посмотреть тип, как посчитать смещение...
Можно сюда, можно в личку, можно ссылки.

Вот тут можно почитать:
https://ru.wikipedia.org/wiki/%D0%93%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D0%B7% D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BE%D1%87%D0%BD%D0 %B0%D1%8F_%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D1%8C

Классическая структура главной загрузочной записи MBR (начального 512-байтного сектора образа):


Смещение Длина, байт Описание
0000h 446 Код загрузчика
01BEh 16 Раздел 1 Таблица разделов
01CEh 16 Раздел 2
01DEh 16 Раздел 3
01EEh 16 Раздел 4
01FEh 2 Сигнатура (55h AAh) - опознаватель MBR


В описателях разделов нас интересуют только 3 переменные (далее смещение от начала 16-байтной записи раздела)
04h Код типа раздела (uint8) - 0=удаленный/свободный, 052h=CP/M, <>052h - прочие типы
08h Смещение первого 512байтного сектора от начала образа (uint32)
0Ch Количество секторов раздела (uint32)

Black Cat / Era CG
26.09.2015, 15:43
Вот тут можно почитать:
https://ru.wikipedia.org/wiki/%D0%93...B8%D1%81%D1%8C
А я читал... не дочитал до описания внутренностей:)

Black Cat / Era CG
26.09.2015, 18:45
08h Смещение первого 512байтного сектора от начала образа (uint32)
Смещение, я так понимаю, тоже в секторах?

Error404
26.09.2015, 19:41
Смещение, я так понимаю, тоже в секторах?

Да, обе переменные (+08h uint32, +0Ch uint32) исчисляются в 512-байтных юнитах (секторах) сплошной нумерацией (0..MAXINT), где 0=MBR. Это так называемая LBA-адресация (секторов).

Black Cat / Era CG
26.09.2015, 20:36
Дааа... В память такой не запихаешь... Че ж делать-то?...
Хотя, конечно, можно... смотря какого размера раздел...

Error404
26.09.2015, 22:18
Дааа... В память такой не запихаешь... Че ж делать-то?...
Хотя, конечно, можно... смотря какого размера раздел...

Раздел может быть до сотни мегабайт в реализации на Орионе (а максимальное теоретическое ограничение CP/M на файловую систему - 65356*16384=1073741824 байт, т.е. 1Гбайт).

Решение - не помещать в память, а работать с файлом. Или сделать "проекцию" - функцию, которая вместо обращения к элементу массива в памяти обращается к нужному сектору на диске.

Мне в плагине было это просто сделать, т.к. изначально в памяти храню только структуры каталога, а сами файлы читаются непосредственно из образа. Т.е. достаточно было просто добавить +offset (нулевой в случае дискет и ненулевой для образов HDD) в процедуру чтения с "диска" (и записи)

Black Cat / Era CG
27.09.2015, 01:28
Решение - не помещать в память, а работать с файлом. Или сделать "проекцию" - функцию, которая вместо обращения к элементу массива в памяти обращается к нужному сектору на диске.
Блин. Это мне всю логику софтины перепахивать:)))

Black Cat / Era CG
27.09.2015, 21:56
Error404, есть вопрос по поводу байтов 12 и 15 в директории.
В этой доке http://www.classiccmp.org/cpmarchives/cpm/mirrors/www.seasip.info/Cpm/format22.html написано:

RC - Number of records (1 record=128 bytes) used in this extent, low byte.
The total number of records used in this extent is

(EX & exm) * 128 + RC
То есть по логике, я считываю байт 12. вычленяю у него соответствующие (включенные в exm) биты, в итоге узнаю размер соответствующих данной записи дериктории и номер части (экстента файла, если я не путаюсь в терминах).
Вопрос, как происходит (должен происходить) обратный процесс?
При добавлении файла в образ например.

Nuts_
17.10.2015, 21:48
я просто оставлю здесь эжто
http://disktrouble.narod.ru/troublr.html
лучьше позно чем никогда :)

Black Cat / Era CG
20.10.2015, 22:19
я просто оставлю здесь эжто
http://disktrouble.narod.ru/troublr.html
лучьше позно чем никогда :)
Видел. Хорошая, наверное, штука.

Serebriakov
23.12.2015, 01:05
Прошу прощения за оффтоп, но крайняя версия Касперского стала определять
ATM CP/M Explorer (версия 0.3.2.1356, от 05.03.2014), как троян:
https://www.virustotal.com/ru/file/73777cec7c3356c460fa6ccde9e524af22a35e56042f3382d4 5a7ee3a66c149b/analysis/1450822619/

C чего бы это?

Более новая версия 0.5.1.1362, от 07.09.2015 уже не детектится:
https://www.virustotal.com/ru/file/ffd5202336fce8c1d63bf29959ac281cd43211e58ad3c730b8 1d479a7e48a91c/analysis/1450822202/

Black Cat / Era CG
24.12.2015, 03:46
Прошу прощения за оффтоп, но крайняя версия Касперского стала определять
ATM CP/M Explorer (версия 0.3.2.1356, от 05.03.2014), как троян:
https://www.virustotal.com/ru/file/7...is/1450822619/

C чего бы это?
О как! Не знаю. Буду посмотреть!

Black Cat / Era CG
05.01.2016, 03:21
Ну я обещал переезд. Он будет. Вместе с релизом, который и так есть у Джони и Анасана. Ну хз. мб он еще кому пригодится. Подробнее, как станет легче.
Сим даю право (на всяк случай) распространять нерелижженное, если в этом есть необъодимость

KTSerg
05.03.2016, 17:14
По поводу просмотра образа дискет Вектора06Ц.
В принципе при изменении расширения на odi или kdi файлы отображает, но какой-то глюк с файлами записанными не для юзера 00. Видно удалённые файлы при выборе отображения "all". Метка юзера 02 (для него есть файлы) вроде как не активна, но его файлы отображает. Для юзеров 01 и 03 нет файлов но их мерки "активны". Или выделение некоторых имён чёрным и серым я не правильно понял...
И при открытии образа постоянно предупреждает "Превышен максимально допустимый номер блока. Номер блока = 380. Макс. номер блока = 379. Смещение = 0000AB14". Знать-бы, что это означает...

KTSerg
06.03.2016, 13:23
Ещё что-то с файлами, длина которых превышает 16КБ (более одной записи в директории), он их (записи в директории) в списке файлов показывает как разные файлы (с одинаковыми именами), один длиной 16КБ, второй 2КБ (в оригинале файл 18КБ). А если сохранить этот образ, то записей для этого файла в директории будет уже 3 (две по 16КБ и одна 2КБ).

Black Cat / Era CG
08.03.2016, 14:19
KTSerg, извиняюсь как-то пропустил сообщения. В ближайшее время отвечу подробнее и разберусь со всеми приведенными багами.
Про номер блока, причина довольно проста: в dph на диске прописывается число трэков (два байтам по смещению 000E-000F) равное 0050, утилита и вычисляет число максимально число блоков на диске исходя из этой информации. При этом почему-то диски, с которых сняты образа, обычно отформатированы на большее число дорожек, нежели указанно в dph. Тем не менее утилита должна корректно обрабатывать эти "лишние" дорожке, выдавая на всякий случай соответствующее сообщение.
И да. В любом случае, желательно бы мне образа, которые вызывают перечисленные ошибки.

- - - Добавлено - - -

Просто эта версия (та что выложена на всеобщее обозрение) немного устарела, поэтому вполне возможно многие проблемы уже решены.

KTSerg
08.03.2016, 21:25
После проведения значительного количества экспериментов над содержимым "глючного" образа дискеты Вектора, переименованной в .odi, выяснил следующее...
Сообщение о превышении номера макс.блока видимо прекращает дальнейшую обработку директория и выводит его в текущем (не обработанном) виде, т.е. с двойными именами длинных файлов, не корректным распределением файлов по "юзерам", не подсчитанными CRC (может ещё чего)...
Дальнейшее сохранение такого образа естественно приводит к искажению информации в образе дискеты, и делает его не пригодным для дальнейшего использования по назначению.
Указание на "смещение" в сообщении точно указывает на адрес (в файле образа) в котором обнаружено "нарушение структуры" (типа номер блока за пределами 80ой дорожки). В моём случае это номер блока (сектора) файла, причём сам файл помечен как удалённый (юзер Е5). После удаления этого файла из директория (заполнение записи кодом Е5, в сторонней программе), образ дискеты стал открываться абсолютно корректно и все перечисленные мной "глюки" пропали.

Black Cat / Era CG
08.03.2016, 21:44
KTSerg, ага. Все именно так. И да. В данной версии обработка на это прерывается. Причем прерывается и сборка всех экстентов в файлы. Для этого смещения я и указываю (ну то есть это больше для себя, чтобы посмотреть где и что не так:)).
А можно сюда (или даже в личку) такой образ, кое-что хочется проверить:)

KTSerg
09.03.2016, 18:40
Вот такой образ дискеты для Вектора 06Ц.
Не зная правда, можно ли на форуме такие большие файлы (500Кило) к сообщениям цеплять...

Black Cat / Era CG
10.03.2016, 15:37
Вот такой образ.Ага. Спасибо.

Black Cat / Era CG
11.04.2016, 23:37
Итак, наконец-то настало время давно обещанного переезда (и естественно обновления). В данный момент как раз оформляю тему. Потом размещу ссылку здесь. Отныне все, что касается моей утилиты, будет обсуждаться именно в той теме.
Обещанная ссылка: http://zx-pk.ru/showthread.php?t=26454