-
Notifications
You must be signed in to change notification settings - Fork 2
Floppy ru
С УКНЦ могут использоваться дисководы НГМД-6022, МС-5305 или совместимые с ними. Контроллер дисковода УКНЦ построен на микросхеме 1801ВП1-097 либо 1801ВП1-128. Используется метод записи MFM.
В RT-11 соответствующий драйвер имеет название MZ
.
Дискета вращается со скоростью 5 оборотов в секунду, скорость потока данных при чтении/записи — 250000 бит в секунду, поэтому ёмкость дорожки составляет (примерно) 50000 бит = 6250 байт = 3125 слов.
Со стороны УКНЦ контроллер представлен двумя 16-разрядными регистрами — регистр состояния 177130 и регистр данных 177132.
Формат регистра состояния РС (177130) по записи:
Бит | Описание |
---|---|
0-3 | Выбор накопителя |
4 | Включение двигателя |
5 | Выбор стороны |
6 | Направление шага головки |
7 | Шаг |
8 | Начало чтения |
9 | Запись маркера |
Формат регистра состояния РС (177130) по чтению:
Бит | Описание |
---|---|
0 | TRACK0 - признак нулевой дорожки |
1 | RDY - готовность |
2 | WRITEPROTECT - защита от записи |
7 | MOREDATA - готовность" регистра данных |
14 | CHECKSUMOK - контрольная сумма верна / запись контрольной суммы |
15 | INDEXMARK - индексное отверстие |
Структура дорожки основана на формате ISO. Драйвер контроллера УКНЦ умеет форматировать дорожки с размерами секторов 256/512/1024 байт (16/10/5 секторов на дорожку), но читать умеет только сектора по 512/1024 байт.
Дорожка имеет следующий формат. Отсчёт байт идёт от начала индексного отверстия.
Часть | Длина | Содержимое | Описание |
---|---|---|---|
GAP1 | 34 | байты 0x4E | Промежуток в начале дорожки |
Sync | 12 | байты 0x00 | Начало сектора -- синхропоследовательность |
ID AM | 4 | 0xA1 0xA1 0xA1 0xFE | Адресный маркер заголовка сектора |
Sec hdr | 4 | CYL HD SEC NO | Заголовок сектора |
CRC | 2 | ?? ?? | Контрольная сумма, считается включая ID AM |
GAP2 | 24 | байты 0x4E | Промежуток перед данными сектора |
Sync | 12 | 0x00 × 12 | Синхропоследовательность |
DATA AM | 4 | 0xA1 0xA1 0xA1 0xFB | Адресный маркер данных |
Sec data | 256/512/1024 | Данные сектора | |
CRC | 2 | ?? ?? | Контрольная сумма, считается включая DATA AM |
GAP3 | 56/38/118 | байты 0x4E | Промежуток между секторами, размер зависит от размера сектора |
... | Остальные сектора дорожки | ||
GAP4B | Промежуток в конце дорожки |
Поддерживается один формат файла образа диска (обычно имеет расширение .dsk
) — в котором содержатся только чистые данные секторов. Обработка для файлов с расширением .trd
немного отличается — для них предполагается что перед данными секторов располагается 256-байтный заголовок, который просто игнорируется.
При подключении файла образа диска в эмуляторе, файл открывается и держится открытым до его отключения в эмуляторе или до завершения эмулятора. Данные читаются из образа и пишутся в образ только целыми дорожками. При переходе с одной дорожки на другую данные секторов предыдущей дорожки сохраняются (если были операции записи), и читаются данные секторов другой дорожки.
В памяти держатся два массива байт — первый это 6250 байт данных дорожки, второй — массив в котором обозначено где стоят маркеры. Предполагается, что все дорожки диска всегда содержат сектора по 512 байт, 10 секторов на дорожку. При чтении секторов дорожки из файла образа диска, подготавливаются оба массива. При записи дорожки в файл образа диска, данные секторов выбираются из массива данных дорожки и сохраняются только чистые данные секторов.
Такая реализация является достаточной для большинства применений. Исключение составляют программы, работающие с диском нестандартным способом — используя свой код для чтения/записи данных.
- УКНЦ Устройство КМД УК
- Реплика КМД УКНЦ — обсуждение на zx-pk.ru
- https://en.wikipedia.org/wiki/Modified_Frequency_Modulation — метод записи MFM
- https://github.com/1801BM1/k1801/tree/master/128 — реверс микросхемы 1801ВП1-128