1

Тема: Диски 140 Кб и чередование секторов

Продолжаю копать диски. До этого момента считал, что в файлах DSK 140 Кб сектора всегда расположены с чередованием, как на физическом диске, и порядок идет от Эпплов ещё. Но сейчас наткнулся на BasicRigaAos.dsk, в котором сектора расположены по порядку. Узнать об этом можно только экспериментально, увидев, что файлы не читаются нормально и  попробовав переставить сектора по порядку...

Вопрос: насколько это распространено? Это единичный случай и забить на него, или переделывать программу, чтобы она и такие диски понимала?

(Игорь говорит, что диск от другой ОС. Можно тогда какой-то ликбез, что там с ДОСами на 140кб и чередованием секторов у них?)

Post's attachments

Attachment icon DISKCommander_7a4bPRvkxZ.png 131.82 kb, 6 downloads since 2025-02-24 

2 Отредактировано Voldemar0 (25-02-2025 17:07)

Re: Диски 140 Кб и чередование секторов

Очень мало информации и она как бы не соответствует одна другой.

Вот эту фразу совсем не понял:
"сектора всегда расположены с чередованием, как на физическом "

Формат физического диска зависит от форматтера. Форматтер может писать сектора в любом порядке и иногда этим пользовались. Но у каждого сектора на физическом диске есть свой номер, записанный в адресном поле. Следовательно, в любом случае, найти нужный сектор не сложно.

DSK - это формат, в котором, как правило (и агатовские диски на нашем сайте - не исключение) сектора идут строго от меньшего номера к большему. Например, в 140ке это номера от 0 до 15. Они всегда идут одинакого потому что в DSK номера сектора не сохраняются, номер сектора следует только из его положения.

Какая связь между хранением (порядком) секторов на физическом диске и в DSK ?
Например, на 140ке, физической, часто встречается такой порядок секторов: 0 7 E 6 D 5....
А на 840ке, физический же, порядок чаще такой: 0 1 2 3 4 5 6 7....

В DSK же, в любом случае, порядок будет: 0 1 2 3 4 5 .. .

Здесь есть одна вещь, которую, возможно, вы не знаете (в доступной литературе она тоже мне не встречалась, я знаю о ней из изучения драйверов дисководов): на 140ке, в адресных полях, хранится не номер сектора, а хитрая цифра, которую можно назвать индексом сектора. Её знает и использует только драйвер дисковода и использует он её "под капотом", операционки и прочий софт никогда эту цифру не видят.

Индекс сектора связан с номером сектора примерно так:

  idx2sct: Array[0..15] of Byte = ($0,$7,$E,$6,$D,$5,$C,$4, $B,$3,$A,$2,$9,$1,$8,$F);                                                                 
  sct2idx: Array[0..15] of Byte = ($0,$D,$B,$9,$7,$5,$3,$1, $E,$C,$A,$8,$6,$4,$2,$F);                                                                 

Если вы парсите NIB-формат 140ки, для правильного парсинга без этих таблиц не обойтись.


PS Если есть вопросы по конкретному образу, выкладывайте его аттачем на форуме.
Иначе слишком абстрактное обсуждение получается.

3 Отредактировано ptr314 (25-02-2025 17:37)

Re: Диски 140 Кб и чередование секторов

Да, разобрался, я считал, что в DSK сектора тоже идут непоследовательно, как в NIB и т.д.