Я тоже сторонник хранения всех дорожек целиком.
Я тоже сторонник хранения всех дорожек целиком.
Ориентированный на скорость вращения диска формат, это хорошо для эмулятора, но плохо для хранения.
Оно вынуждает пользоваться такими понятиями как "достаточный" и "приблизительный". Но при этом, вся схема контроллера НГМД жестко засинхронизирована по байтам, и тайминги в ней реальные и постоянные.
Если брать за основу формат хранения вместе со служебной разметкой, я бы взяла тот, который выводится на диск при форматировании.
Это ведь логично, если в сравнении с tape файлами. Мы читаем именно то, что мы выводим, не учитывая при этом физику ленты, лентопротягивающего механизма и настройку магнитной головки.
Или нужно не приблизительное, а точное описание удобного всем формата. У которого все структуры имеют одинаковые размеры внутри сектора.
- - - Добавлено - - -
А ведь эмулятор может выполнить команду format и записать при этом пустой образ в файлик? Вот бы такой файл получить.
wtf
Схема контроллера-то засинхронизирована, только вот большая доля работы приходится и на процессор. Я сильно подозреваю, что эти нулевые промежутки между секторами, а также между заголовком и сектором получаются просто за счет вращения диска, пока ДОС занимается другими делами. То есть они могут быть чуть больше, могут быть чуть меньше. Более того, даже если просто 2 раза отформатировать дискету, полного совпадения не будет за счет случайных флуктуаций, вносимых, например, ПДП.
Если эмулятор достаточно полно эмулирует архитектуру компьютера и учитывает скорость вращения диска, то аналогичный разброс появится и в образе диска, полученном при форматировании из эмулятора. Надо бы проверить на эмуляторе uart.
Если же эмулятор будет игнорировать вращение диска (ввиду особенностей реализации или с целью повышения скорости работы с образом), то в образе появятся только байты, записанные под явным контролем ДОС. Но в таком случае их может оказаться недостаточно для нормального считывания диска на эмуляторе, учитывающем вращение диска либо на реальном РК, если этот образ записать обратно на дискету.
Может быть тогда для формирования образа "для хранения" просто зафиксировать эти промежутки? Взять, например, ровно 5 байт, как описано в журнале (убедиться только, что этого реально хватает)? Иначе придется делать 2 формата - "для хранения" и "для реала и продвинутых эмуляторов"...
Тут надо определиться, если поддерживается только структура РК-ДОС, тогда достаточно (512+2)*5*2*80, все остальное излишне.
Если произвольный формат для этого контролера, то нужны все байты. Это если гипотетическую защиту от копирования не рассматривать.
Длина трека зависит от скорости вращения диска, насколько я помню, там и по стандарту допускаются отклонения.
Формат РК-ДОС, как и любой другой формат не забивает трек под завязку, иначе бы различные нестандартные форматы не появились бы. У кого есть реальный контролёр вполне может набросать тестовую программку, которая будет писать байтики от индексной метки до индексной метки. А потом сравнить с результатами с другого дисковода.
А вот контроллер на ВГ93, который вроде тоже имел место быть для РК86, наверняка имел другое количество секторов в треке. Его, если вдруг случится, в образе диска тоже хорошо было бы поддержать.
Последний раз редактировалось tnt23; 10.07.2016 в 20:51.
С Вг93 проще - там размер сектора фиксированный (по крайней мере в обычных дискетах, а не экзотических форматах). А контроллер на вг93 реально был на РК? Я только про Партнер слышал...
- - - Добавлено - - -
В общем, я думаю, что для этого контроллера стоит хранить дорожки целиком. Начал уже реализовывать в эмуляторе...
Сделал пока в эмуляторе работу с форматом образа, содержащим дорожки целиком (как и в эмуляторе uart). Мне этот вариант кажется наиболее логичным для этого не совсем обычного контроллера. Если будут другие предложения для формата конкретно под РК ДОС, можно будет добавить либо написать конвертеры.
наконец-то собрал и я этот контроллер. всё работает, грузится, запускается. но есть одно "но".
при первом запуске компьютера и выполнении команд R,100 [BK] G [BK] всё нормально.
но если перезапустить компьютер, нажав сброс, и выполнить то же самое, то при входе в shell эмулируется нажатие ВК. и получается, что если перед этим указатель стоял на каталоге, то происходит вход в каталог, если на файле, то происходит его запуск. и так по кругу.
кто что может сказать по этому поводу?
P.S.
спасает ситуацию удаление на PC с карты файла shell.in. в его содержимом указано последнее имя, с чем работал пользователь. но это как-то неправильно, имхо.
У меня нет такого. (Апогей версия)
Истинно так, причем сам vinxru подтвердил сей глюк на классическом 86РК.
Обещал заняться вопросом как-нибудь. Год назад
Поэтому я запускаю файлы в каталоге не наведением курсора, а набрав название.
Иначе надо каждый раз файл шелла удалять.
- - - Добавлено - - -
Сейчас проверил на Апогее, на нем действительно такого глюка нет.
ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
Speccy-2007 128/AY/TR-DOS
Сайт с документацией к "Scorpion ZS 256"
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)