Выяснилось что CP/M в ATM Turbo это диски в формате TR-DOS, просто структура каталогов своя.
- - - Добавлено - - -
Было бы здорово научить SAR детектить и отображать каталог таких дисков.
HoneyCommander умеет их смотреть.
ну и "ATM – «Ассоциация Творческой Молодёжи"
https://microart.ru/dopolnitelno/nov...tmturbo-30-let
Да, Максагор подсказал. И я оцифровал коллекцию своих 20 дисков.
Вот его описание структура диска:
Ну, на самом деле, CP/M может настраиваться на разные физические форматы, варьировать количество файлов в каталоге (и размер каталога), размер кластеров, размер системных дорожек перед каталогом и проч. Так можно настроить на АТМ работу системы, например, с роботроновскими дисками или дисками от Профи. Если делать универсальную читалку, то да, надо вникать - инфа тут: http://atmturbo.nedopc.com/inf/bios_cpm.htm
Если просто знать, как прочитать каталог исключительно на АТМовской дискете, то тогда так:
из 160 дорожек (80х2) первые две (2х16 секторов - 2х4=8Кб) зарезервированы "под систему" - как правило забиты кодом #E5 и не используются. Затем следующая одна дорожка используется под каталог - 128 файловых описателей по 32 байта каждый (т.е. до 128 файлов в каталоге).
Из 32 байтов, если просто читать каталог (с размером файла) байты такие -
Смещение -
+0 - байты #00-#0F - номер "USER-области" (что-то типа примитивных "цифровых" подкаталогов). Если #E5 - файл удален
+1 - +8 - имя файла (большие латинские буквы, маленькие не используются, коды старше 127 тоже)
+9 - +11 - расширение. Если бит 7 в +9 поднят в единицу - файл защищен от записи.
+12 - отдельно ниже
+13 - +14 - нам не надо.
+15 - размер файла (от #01 до #80) в 128-байтных записях. Т.е. в CP/M файл ВСЕГДА кратен 128 байтам. #80 = 128dec - соответственно 128х128=16384. Итого при такой системе максимальный размер файла будет равен 16Кб.
Если файл БОЛЬШЕ 16Кб, то рядом с одним описателем файлов создаётся СЛЕДУЮЩИЙ описатель с таким же именем с указанием остатка от размере в байте +15. Если остаток будет также больше 16Кб, то рядом создается третий такой же описатель и так далее, до исчерпания файла.
Таким образом каждый файл, в зависимости от размера, может иметь несколько 32-байтных описателей. Сами эти описатели, как правило, создаются подряд, но, вообще, ничего не случится, если будут и в произвольном порядке. Определять, кто из них в каком порядке должен идти (т.е.. где начало файла, где середина) можно как раз по байту по смещению +12
В ервом описателей он =#00, во втором =#01, в последующих описателях и до конца увеличивается на единицу.
Таким образом, чтобы вычислить размер файла, надо суммировать байты +15 из всех одноименных описателей (отличающихся по байту +12) и умножить на 128.
Байты +15 - +31 - расположение файла по кластерам.
Эту тему просматривают: 2 (пользователей: 1 , гостей: 1)