- Формат образа винта БК СМК
-
? S_V_B - 07.08.2018 13:31
Разбирался с МБР по ходу возникло несколько вопросов:
¤
1. Для СМК 1 блок = 1 сектор =512 байт?
В найденных описаниях эти понятия несколько перемешаны, оперируют то блоками то секторами..
¤
2. Головки при чтении логического диска переходят последовательно?
т.е. в МБР указана начальная головка и дорожка логического диска, при чтении мы по порядку (начиная с указанной) перебираем головки, потом дорожку++.. так?
¤
3. Есть у кого-нибудь описание Ф.С. ANDOS? киньте ссылкой плз. (С МК досом более менее разобрался).
¤
Не сразу допер что МБР задом наперед инверсный лежит :))
В имеющемся у меня образе логические диски = 1638 блоков (819к), что не есть гуд. Хочу создать лог. диски макс. допустимого Ф.С. размера.
Это мой очередной велосипед :)
-
? BD - 07.08.2018 14:28
1. Да
2. Да
3. см. гуглом FAT12
---------------------
В загрузочном секторе для команды перехода на загрузчик используются не 3, а 4 байта, далее идёт стринг "ANDOS". Затем всё как обычно, включая метку диска и признак "FAT12". Всегда по две FAT, размером по 1200 байт (424 кластера по 4 сектора), размер каталога - 7 секторов. Используется только корневой каталог. У каждого каталога и подкаталога БК есть свой индивидуальный номер. А у каждого подкаталога и файла есть ссылка на номер их каталога-прародителя.
11 │Атрибуты файла. Бит 3 - признак подкаталога ANDOS.
12-19 │Резервируются
20 │Признак подкаталога и одновременно его номер. │
21 │Номер родительского подкаталога.
22-23 │Адрес файла или имя дисковода для ссылки - перехода на него. У ссылки тоже установлен третий бит, но у подкаталога байты 12-31 занулены.
---------------------
¤
1638 блоков Voland сделал для тупых "дисковых утилит" которые сохраняют каталог на 81-й дорожке, чтоб ошибку не выдавали. Разметить можно только новый HDD/CF, загрузившись с дискеты и сохранив SERVICE2 параметры. Дальнейшая разметка C:-z: может быть по 32 Мб, 65520. 177760(8) блоков. Никаких тулзов типа Acronis для переразметки с переносом на БК нет.
-
? S_V_B - 07.08.2018 15:11
Сасибо за инфу..
Я как раз Voland`а образ ковыряю..1986х16х243, загрузка с С 35 лог дисков.. все сходится
Образ можно формировать по ходу дела без всяких переразметок, главное потом МБР подправить.
-
? S_V_B - 07.08.2018 19:02
Разобрался с образом.. и уже вытащил оттуда диск.
¤
Единственное что немного не понял когда вытаскиваешь инфу о лог. дисках.. 4 бита и 12 - их не нужно инвертировать.
А дальше дело техники:
Смещение от начала файла до i-го диска:
¤
offset=512*MBR.Sectors*MBR.Disk[i].Head*(MBR.Disk[i].Track+1);
-
? S_V_B - 07.08.2018 19:17
Таким образом можно без танцев с бубном (Инициализации флэшки, FDD, 2HDD...) редактировать существующий образ, а
еще лучше создавать новые.
-
? S_V_B - 08.08.2018 12:27
Исправил распаковщик МК Дос дисков (теперь правильно по каталогам раскладывает.. )
¤
https://yadi.sk/d/SPI_qAAD3a2GST
¤
Для полного счастья еще бы Ф.С. CSI DOS найти.
¤
В принципе уже сейчас можно вытащить из образа любой логический диск, изменить загрузочный диск, добавить лог. диск.
-
? BD - 08.08.2018 23:43
Описание формата каталога CSIDOS см. здесь в файле csitech.lst http://vak.ru/pub/bk/CSIDOS%203.32MIR.bkd.gz
там все просто, на диске мкдос http://forum.pk-fpga.ru/download/file.php?id=467 пример csidos-drv.mac как конвертировать.
-
? S_V_B - 09.08.2018 06:13
Спасибо.
В файле csitech.lst - описывают как писать проги под csi dos.
¤
csidos-drv.mac думаю то что нужно.
пригодился распаковщик :) файл csidos-drv.mac в win кодировке:
https://yadi.sk/d/lgqRWhWW3a3yef
-
? BD@ - 09.08.2018 09:31
gid, все забыл. .hdi -> .img для CFки, просто рубить 1(0) сектор и всё?
¤
S_V_B, на образе csidos в documents точно есть описание каталога.
-
? BD@ - 09.08.2018 09:37
http://gid.pdp-11.ru/f/csi-doc.rar
-
? S_V_B - 09.08.2018 13:50
Нашел!!! в файле csidos-320-u.txt
Спасибо BD
-
? BD@ - 09.08.2018 15:22
А тут в ANTECH.VXT.txt даже про андос/фат12 есть. Только надо читать до конца ))
http://gid.pdp-11.ru/f/and-doc.rar
-
? BD@ - 09.08.2018 15:49
Если уж разобрался с альтпроншым MBR, сверхзадача - написать на РС тулзу для перемещения/увеличения разделов БКных на CF. BKDE by gid уже сколько лет есть, и что? На БК это очень долго и не надо. А так тебе человек 100 будут благодарны ))
-
? S_V_B - 09.08.2018 16:05
Можно, хотя я изначально хотел только создавать новый образ.. ну да ладно чем дальше в лес тем больше дров.
Перемещение дисков можно сразу в МБР сделать это не сложно, надеюсь физически их не нужно переносить?
А увеличение разделов- сложнее интерфейс правильный сделать, наверное как в Акронисе.. типа собрать стек действий, потом на выходе новый образ получить.
-
? BD@ - 09.08.2018 16:20
Ну естественно с перемещением. Чего там, ну 1Гб )) Главное считать головки/сектора ))
-
? gid - 09.08.2018 16:28
[.hdi -> .img для CFки, просто рубить 1(0) сектор и всё?]
Да. Для не умеющих это делать вручную, в утилите HDDImgMaker даже добавлена специальная кнопка.
¤
[написать на РС тулзу для перемещения/увеличения разделов]
Я кстати такую очень давно написать хотел. Но упёрся в интерфейс. Я не умею такие штуки делать, чтобы мышкой туда-сюда границы перемещать и раздел как надо менялся, а исходников, чтобы в них подсмотреть, как это делается, в интернете не нашёл.
¤
Если кто-нибудь мне подкинет исходники интерфейса на Си, такие в которых можно разобраться, я такую тулзу смогу написать. даже интегрирую туда BKDE, чтобы можно было на конкретный лог.диск файлы закинуть, удалить, заменить.
-
? BD@ - 09.08.2018 16:33
Для начала просто печатать конфигурацию HDD/CF дорожки/головки/сектора и распределение как SERVICE2. Дальше дело пойдёт ))
-
? BD@ - 09.08.2018 16:51
>> чтобы мышкой туда-сюда
не надо. народ готов чиселки печатать, лишь бы корректность проверялась ))
библиотек много, но их вкуривать надо. на С++ я не нивжопуногой уже.
-
? S_V_B - 09.08.2018 16:53
Все уже печатает.
Кстати переместить, удалить и увеличить раздел довольно просто.
Сложнее уменьшить, нужно вычислять занятое пространство, учитывая количество досов.. и везде по разному.
В фате12 вообще по всем цепочкам кластеров нужно пробежать чтобы максимальный найти.. а есть еще самопальные загрузчики..
¤
может остановимся на вышесказанном, когда возникает необходимость уменьшить лог. диск?
я бы вообще все по 32 мега сделал...
-
? S_V_B - 09.08.2018 17:08
/* Ну естественно с перемещением. */
Просто если не нравится порядок дисков его проще перетусовать в МБРчем передвигать все диски в месте с занятым пространством..
¤
Хотя мне уже видится другой интерфейс:
В TreeView удалять, вставлять, увеличивать а потом по кнопке "исполнить" создавать новый образ с нужными параметрами.. и ничего тогда "тусовать" не нужно будет. (т.е. через контекстное меню - тыкаешь на диск правой кнопкой->увеличить или удалить, параллельно создаешь структуру нового диска для записи)
¤
как-то так
-
? BD@ - 09.08.2018 17:26
>> когда возникает необходимость уменьшить лог. диск?
Все просто - уменьшать до 1600-1638 блоков не давать. В мкдос по смещению 466(8) размер диска в блоках, в RT-11 для C: и D: только, где BY.SYS вычислять смещение уже много об здесь писал.
-
? S_V_B - 09.08.2018 17:35
Просто если делать качественно то обрастешь кучей нюансов.. типа: Перед удалением диска хочется посмотреть что на нем лежит или
удалил файл в МК ДОС ты должен как "честный джентельмен" переместить оставшиеся файла на освободившееся место и так для каждого известного доса.
А консольную утилиту (как бэ "на свой страх и риск" - нажмите Y чтобы удалить какие то данные с раздела 5) можно хоть сейчас накропать.
-
? S_V_B - 09.08.2018 17:49
/* Все просто - уменьшать до 1600-1638 блоков не давать. В мкдос по смещению 466(8) размер диска в блоках, */
¤
Да нифига не просто, зачем нам размер диска - мы его и так знаем. Важно не отрезать записанные на него данные. т.е. покопаться в фате и найти самый дальний занятый блок. и так для каждого доса. (например был утебя диск 10 мб и фиг знает сколько ты туда записал, а ты говоришь отрезай не глядя до 1600)
У меня пока в планах только ANDOS, МК Дос и CSI dos.
-
? BD@ - 09.08.2018 17:59
Дык в андос, ксидос не более 1600, в мкдос м.б. 32Мб. см. COPDEV.MAC "определение размера источника".
-
? S_V_B - 09.08.2018 18:16
проще не давать увеличивать ANDOS и др. после создания больше 1600.. создаются же они из дисков 800к
-
? S_V_B - 09.08.2018 18:22
Пока буду только увеличивать. На текущий момент у меня готова структура логических дисков с указанием типов Ф.С. и смещений в образе.
Для дисков МК ДОС вьювер, ну и сохранение образов. Можно сделать для каждого типа ф.с. увеличение до макс. размера.
-
? BD@ - 09.08.2018 18:24
ну всплывающую подсказку делать. м.б. я хочу потом этот раздел инитнуть или записать демку 16Мб.
-
? S_V_B - 09.08.2018 18:27
Кстати поясните плз. про файлы ссылки и в каких дос они имеются и как опознаются.. просто не сталкивался.. в МК Дос таких же нет?
Раскапывал методом научного тыка.. может не попались.
-
? S_V_B - 09.08.2018 19:04
Я так понимаю, что при перемещении дисков эти ссылки будут смотреть в никуда.. так?
-
? BD@ - 09.08.2018 19:08
Ты ссылки на разделы hdd/cf имеешь ввиду?
У андос:
22-23 Адрес файла или имя дисковода для ссылки - перехода на него. У ссылки тоже установлен третий бит, но у подкаталога байты 12-31 занулены.
У мкдос:
- в имени файла первый символ 177(8) признак подкаталога, в адресе - номер раздела. Длина - 000000. Создаются MAKEDEV.USR, уже не помню как там чего.
-
? BD@ - 09.08.2018 19:13
>> при перемещении дисков эти ссылки будут смотреть в никуда
Нет. Они указатели на раздел/девайс (A:,B:,C:,D:...), не более того.
-
? BD@ - 09.08.2018 19:30
Предлагаю, разделить понятия РАЗДЕЛ (hdd/cf) и ЛОГИЧЕСКИЙ ДИСК (мкдос/рт-11). В 1995 этого не было, все до сих пор путаются..))
-
? BD@ - 09.08.2018 20:58
>> [.hdi -> .img для CFки, просто рубить 1(0) сектор и всё?]
>> Да. Для не умеющих это делать вручную, в утилите HDDImgMaker даже добавлена специальная кнопка.
Попробуй http://events.retroscene.org/files/mf2018/wild/bad_apple_bk.zip
Может у них еще и .hdi какой-то неправильный. Дурь, конечно, хочу проверить как оно на 4МГц работает...
-
? BD@ - 09.08.2018 21:50
Сорри, все получилось! Сейчас ковокс найду..
-
? BD@ - 09.08.2018 22:48
Аццкий ад, конечно, на 4МГц, но действительно работает.. ))
https://youtu.be/Qd14ZAep7ZI
-
? S_V_B - 10.08.2018 18:45
Кто-нибудь в курсе как считается CRC МБР.
¤
Обычная побайтная сумма как в пзу БК чего-то не сходится.
-
? S_V_B - 10.08.2018 19:33
нашел во такой исходник:
¤
;подсчет CRC таблицы разделов
CRC: MOV @PC,R2 ;с избытком 12701,против всех 0
MOV #HD$TRK+2,R1 ;<если все нули, совпадет>
MOVB @#HD$LOG,R5 ;до 128 !
BMI RTS1
TST (R5)+ ;=ADD #2
1$: ADD -(R1),R2
ADD -(R1),R2
SOB R5,1$
RTS1: RTS PC
¤
¤
Комменты конечно исчерпывающие .... что значит с избытком 12701,против всех 0
-
? gid - 10.08.2018 20:52
Значит, что подсчёт CRC начинается с числа 012701, а не с нуля.
Посмотрите у меня в исходниках эмулятора исходники утилиты BKHDDTool, там комментариев больше, и она как раз для разборки-сборки образа hdd. Там самое ценное - манипуляции с МБР и разметка диска.
-
? S_V_B - 10.08.2018 20:55
ok
-
? S_V_B - 10.08.2018 21:27
Вот я тормоз.. целый час мозги кипятил.., а контрольную сумму на диске не инвертировал... :)))
¤
Не сходится нифига блин :)
¤
Спасибо gid, все работает!
-
? Manwe@ - 10.08.2018 22:53
Чем бы образ БК-шного винчестера переписать с PC (DOS, Windows) на старый добрый IDE HDD?
-
? BD - 11.08.2018 07:12
А HDD работает в конфигурации 16 головок / 63 сектора? Просто .hdi образы такие. Если через переходник IDE-USB, тем же USB Image Tool.
-
? gid - 11.08.2018 08:47
если геометрия реального hdd не совпадает с той, что в образе, придётся пересобрать образ под новую геометрию утилитой BKHDDTool. При этом есть недостаток - теряются резидентные модули, записанные в МБР.
А ещё USB-IDE переходники могут не поддерживать режимы работы очень старых добрых IDE HDD. Там что-то с буферизацией не то и вместо данных иногда записываются нули.
-
? BD - 11.08.2018 09:37
А чего гадать-то. СМК задает конфигурацию HDD принудительно, берет с 0 стороны 0 дороги (MBR). Ноутбучные 2.5"/1.8" точно будут работать на 16/63. Просто записать и попробовать.
-
? Manwe@ - 11.08.2018 13:06
BD, пробовал - USB Image Tool не видит HDD, подключенный через переходник IDE-USB.
gid: мы тут экспериментируем с записью образов hdi на флешки и винчестеры неподходящей конфигурации. SMK и прошивка АльтПро справляется с этим несоответствием, всё работает. Главное у hdi не задавать больше 16 головок и 63 секторов. А меньше - работает.
¤
P.S. мне тут советуют копировать утилитой DD под DOS. Disk Director, наверное. Или Norton Disk Doktor. Пока не понял :)
-
? BD - 11.08.2018 13:13
Здрасти, приехали. См. спецификацию ATA-IDE. 16/63 - это максимум.
-
? BD - 11.08.2018 13:16
Гугли HDD Raw Copy Tool.
-
? Manwe - 11.08.2018 16:50
BD, да гуглил я всё :) Виртуальные же головки есть у более поздних IDE-винчестеров. PC BIOS понимает.
-
? gid - 11.08.2018 17:31
[SMK и прошивка АльтПро справляется с этим несоответствием]
Вообще-то не должно. Т.к. если в паспорте HDD прописано 4 головки, а в МБР винта - 8 головок, то HDD должен выдавать ошибку при попытке прочитать что-то с 5-й головки, т.к. её нет физически.
И наоборот, если в паспорте HDD прописано 8 головок, а в МБР винта - 4 головки, то при работе с контроллером АльтПро будут использоваться только первые 4 головки и не будет доступа к остальным 4-м. И тут возможно два варианта:
1) если на винт был записан образ с использованием геометрии винта, то половина данных будет недоступна (те которые попали на головки 5..8)
2) если винт просто проинициализирован (записан МБР), а потом в разделы записывать данные уже на БК, то будет просто использоваться половина головок из доступных.
¤
Прошивка АльтПро очень примитивная, она осуществляет доступ к HDD в режиме PIO-1 (или даже более примитивному, если такой существует). Не использует данные паспорта HDD, верит на слово тому, что прописано в МБР. Осуществляет обмен данными размером строго в 1 сектор.
И перебирает сектора по одному в точности как драйвер дисковода, только с учётом того, что сторон может быть больше и секторов на дорожке - больше.
-
? BD - 11.08.2018 20:10
Самарский КНЖМД видел (хотя в эмуляторе уже есть)? ))
Там вообще "таблица разделов" считывается побайтно, до нужного.. раздела.. и ничего, на скорость доступа для БК это вообще не влияет ))
-
? Manwe@ - 11.08.2018 22:59
gid: видимо, использует не все головки и сектора. Сейчас уже вряд ли найдёшь HDD с числом голрвок меньше 16 и секторов меньше 63. Поэтому у меня всё получается :) Кажется, и CF-карты с такой конфигурацией (16/63). Различается только число цилиндров.
- << Форум