Я что хочу сказать. Во-первых по частоте. Частота ВГ с частой Z80 никак не соотносится... Смысл только в том, что при высокой частоте z80 транзисторы в ВГ не успевают переключаться и её хилый выход не осиливает нагрузку в виде шины спектрума.
Во-вторых по турбо-режиму. Турбо-режим со сказанным выше опять же никаким боком не соотносится. Для этого wait есть, что у Немо в Кае и сделано.
В-третьих по таймаутам. Их оттуда давно необходимо выкорчевать с корнем. Они просто не нужны. Весь привод может управляться простым автоматом который работает только на основе анализа регистра состояния ВГ. Больше НИЧЕГО не надо. То, что там зачем-то IRQ используется не по незначению в прошивке -- это дурость. Единственное что -- битики в регистрах ВГ могут изменяться не сразу после записи команды, это как раз из-за низкой частоты тактовой ВГ -- вот тут нужна пауза между записью и чтением состояния в буквально три десятка тактов z80.
В-четвёртых по "No Disk". Миллион раз писалось, сил нет писать ещё. Посмотрите CODE.ZX,
посмотрите как работает STORM. Есть все возможности определить и наличие дисковода (по сигналу 0-дорожки) и наличие дискеты (по вращению индекса). И даже смену дискеты, это все знают как... И это шевеление головами вначале оно если надо, то только для определения 40-дорожечности и скорости их (голов) перемещения, в неоригинальной прошивке эти функции не работают. Его давно пора выкинуть.
В-пятых форматировование. Со сдвигом 0-сектора на каждой дорожке на 2-3 сектора. Скорей на 3
для следующей дорожки и на 1 для противоположной стороны.
Чтоб читалась дорожка за оборот с небольшим, а не как в ПЦ. Это для старого софта. Новый софт должен читать любые диски путём чтения заголовка сектора (пропускается один сектор) для выявления номера текущего сектора (сектора считается идут по порядку) и чтения следующего сектора ПО СООТВЕТСТВУЮЩЕМУ АДРЕСУ и далее, исходя из того, что чтение может быть не в порядке возрастания номера сектора, а в том порядке записи на диск. Чтоб опять же за один оборот.