cy6, uart имеет в виду, что 3125 байт - это общая длина трека. При скорости записи 125000 бит/с (промежуток времени между битами 8 мкс) и скорости вращения диска 300 об/мин как раз получится максимум 3125 байт на трек. Умножаем на количество треков и получаем 500000 байт - именно столько и резервируется для файла. Естественно, между секторами могут быть промежутки.
Подозреваю, что 5 нулевых байт - это примерное значение. Может быть больше, а может и меньше - в зависимости от того, как долго РК ДОС готовится к следующей операции, но в любом случае с запасом, чтобы успеть сделать необходимые действия при чтении. Видимо, ДОС, после того, как будет готова к чтению, ждет адресную метку и игнорирует все другие значения после синхробайта, ей не критичны именно 5 нулевых байтов. Не совсем также понимаю, почему иногда 5 синхробайтов дополняются в конце байтом 0D. Надо изучать код ДОС.
В эмуляторе uart, очевидно, существует привязка к скорости вращения диска, поэтому все тайминги примерно соответствуют реальной работе с дискетой. Существующий формат образа также позволяет зафиксировать реальное положение секторов на треке и промежутки между ними. Так что, как ДОС читает записанную ей же реальную дискету, то будет читаться в эмуляторе и записанный в нем же образ. Способ универсальный, хотя и медленный. Если остановиться на нем, то при необходимости искусственного формирования образа диска важно просто обеспечить достаточные нулевые промежутки, конец же секторов до 3125 байт можно просто занулить.
А еще можно в эмуляторе попробовать обмануть ДОС и постоянно подсовывать ей сигнал готовности, чтобы ввод/вывод осуществлялся на максимальной скорости. В таком случае точность формата дискеты уже не важна, и можно попробовать сжать образ за счет служебной информации и/или межсекторных нулевых промежутков. Но первый вариант мне кажется более универсальным.
Ну так что, переименуем .rkdisk в .rdi и оставим формат как есть?




Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 

wtf