Сравнил прошивки. Различий немного.
1) В "Ташкентcкой" есть строка "Slim3.06", в "Московской" "Slim3.05". Похоже на номер версии, так что "Ташкентская", видимо, новее.
2) Есть какой-то блок параметров по адресу C9F8, в нем отличается один байт.
Версия 3.05: "$00, $40, $00, $00, $B5, $03, $00, $00".
Версия 3.06: "$00, $40, $00, $00, $B6, $03, $00, $00".
Что это - непонятно, данные куда-то копируются, а потом следы теряются.
3) По адресам CADE, CAEF, CB1C, CDB8, CDD9 находятся команды, отправляемые ВГ93. Изменения версии 3.06 состоят в увеличении времени позиционирования головки и добавлении флага "выдержать 15 мс" в команду записи дорожки. Короче, скорость перемещения головки в новой версии снижена.
4) Есть изменения в процедуре чтения/записи сектора (она тут совмещена).
Версия 3.05
CODE_CC94
LDX DATA_07F8
LDA DATA_0638, X
STA DATA_C082, Y
TYA
TAX
LDY #$00
LDA ZP_68
CMP #$02
LDA #$A4
BCS CODE_CCAB
LDA #$84
CODE_CCAB
STA DATA_C080, X
BCS CODE_CCB5
JSR SUB_CCF2
BCC CODE_CCB8
CODE_CCB5
JSR SUB_CD52
CODE_CCB8
BCC CODE_CCBF
ROL A
BMI CODE_CCE4
ROR A
CLC
CODE_CCBF
AND #$1C
Версия 3.06
CODE_CC94
LDX DATA_07F8
LDA DATA_0638, X
STA DATA_C082, Y
TYA
TAX
LDA ZP_68
CMP #$02
LDY #$80
CODE_CCA5
DEY
BNE CODE_CCA5
LDA #$A4
BCS CODE_CCAE
LDA #$84
CODE_CCAE
STA DATA_C080, X
BCS CODE_CCB8
JSR SUB_CCF2
BCC CODE_CCBB
CODE_CCB8
JSR SUB_CD52
CODE_CCBB
ASL A
BMI CODE_CCE4
ROR A
AND #$1C
Отличия небольшие. Добавлен пустой цикл по адресу CCA5, дающий задержку примерно в 0,6 мс перед выдачей команд чтения или записи сектора. По адресу CCBB оптимизирован код обработки флага C (возможно, чтобы общий размер кода не поменялся).
Короче, никаких изменений, касающихся формата записи, тут нет. Просто немножко замедлена работа с дисководом, возможно для поддержки большего количества моделей.
Так что вопрос со скоростью записи остается открытым. На ВГ93 можно подать 2 МГц, но процессор не будет успевать ни записывать данные с нужной скоростью, ни читать их.
Правда, я тут выкурил даташит на WD177x, аналогом которого является ВГ93. В нем расписаны блок-схемы чтения/записи. И вот чего выяснилось: ВГ93 допускает "потерю данных".
То есть, если при записи сектора процессор вовремя не загрузил очередной байт данных, то будет выполнена запись нулевого байта. Если при чтении сектора процессор не забрал вовремя очередной байт данных, то просто будет установлен флаг "потеря данных", а чтение продолжится.
Короче, есть такая безумная идея: тактовая там может и 2 МГц, но разработчики заложились на эту фичу. В результате, при записи сектора на диск процессор отгружает первый байт данных, он записывается, проходит 16 мкс, контроллер видит, что новых данных нет и пишет 0. Процессор дожидается окончания записи этого 0 и отгружает следующий байт. Потом снова пишется 0 и т.д. То есть, сектор на 1024 байта содержит 512 байт реальных данных чередующихся с 512 байтами нулей.
При чтении все работает в обратную сторону: процессор читает первый байт вовремя, второй "не успевает", а там 0. Третий успевает, четвертый не успевает. В результате он вычитывает 512 байт данных из 1024 байтного сектора и все довольны :)
До первого сбоя, когда процессор пропустит свою очередь и начнет читать нули, а данные пропускать :)