БК: Флоппи-диски 800 килобайт: различия между версиями
Panther (обсуждение | вклад) (http://vak.ru/doku.php/proj/bk/bk-floppy) |
Xolod (обсуждение | вклад) Нет описания правки |
||
Строка 22: | Строка 22: | ||
<h2>Флопик 3.5" 800к под Windows</h2> | <h2>Флопик 3.5" 800к под Windows</h2> | ||
Установите драйвер [http://simonowen.com/fdrawcmd/ fdrawcmd.sys]. Для форматирования, записи и чтения образов диска используйте утилиту [ | Установите драйвер [http://simonowen.com/fdrawcmd/ fdrawcmd.sys]. Для форматирования, записи и чтения образов диска используйте утилиту [https://emuverse.ru/downloads/computers/BK/utils/bkdisk.zip bkdisk.exe]. | ||
<h2>Флопик 3.5" 800к в Линуксе</h2> | <h2>Флопик 3.5" 800к в Линуксе</h2> | ||
Строка 156: | Строка 156: | ||
Описание флоповода и интерфейса стандарта slim можно посмотреть в спецификации | Описание флоповода и интерфейса стандарта slim можно посмотреть в спецификации | ||
<s>TEAC FD-05HF-8630 Micro Floppy Disk Drive</s> или [ | <s>TEAC FD-05HF-8630 Micro Floppy Disk Drive</s> или [https://emuverse.ru/downloads/datasheets/peripherals/FDD/FDZ-529022_A4.pdf Y-E DATA YD-702J-6637J Super Slim 3.5 Floppy Disk Drive] ({{pdf}} {{ref-en}}). | ||
Шлейфы контроллера Альтек бывают 27- и 26-проводные. В 26-проводном пропущен сигнал, соответствующий контакту 33 флоповода. Мне достался вариант контроллера, где 27-проводный шлейф распаян как 26-проводный. | Шлейфы контроллера Альтек бывают 27- и 26-проводные. В 26-проводном пропущен сигнал, соответствующий контакту 33 флоповода. Мне достался вариант контроллера, где 27-проводный шлейф распаян как 26-проводный. |
Текущая версия от 23:00, 18 сентября 2023
Данный материал защищён авторскими правами!
Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей. Автор: Сергей Вакуленко Источник: http://vak.ru/doku.php/proj/bk/bk-floppy |
Для компьютеров БК-0010 используются флоппи-диски объемом 800 килобайт. Их формат отличается от стандартных IBM-PC-AT совместимых флопиков:
800k (БК) | 360k (PC-AT) | 720k (PC-AT) | 1200k (PC-AT) | |
---|---|---|---|---|
Кол-во дорожек | 80 | 40 | 80 | 80 |
Кол-во головок | 2 | 2 | 2 | 2 |
Кол-во секторов | 10 | 9 | 9 | 15 |
Флопик 3.5" 800к под Windows
Установите драйвер fdrawcmd.sys. Для форматирования, записи и чтения образов диска используйте утилиту bkdisk.exe.
Флопик 3.5" 800к в Линуксе
Такой формат поддерживается стандартным драйвером. Используйте устройство /dev/fd0u800.
Флопик 5" 800к в Линуксе
В обычном Линуксе такой формат флоппи дисков не поддерживается. На самом деле драйвер это позволяет, но надо установить ему нужные параметры. Это делается утилитой setfdprm, которая содержится в пакете fdutils.
Для создания файла устройства и установки формата 800k выполните следующие команды:
mknod /dev/fd0h800 b 2 80 setfdprm /dev/fd0h800 1600 10 2 80 0 0x25 0x01 0xDF 0x2E
Для сравнения приведена таблица параметров стандартных форматов флоппи-диска 5.25”:
Формат | Файл устройства | Параметры |
---|---|---|
360k (PC-XT) | /dev/fd0d360 | 720 9 2 40 0 0x2A 0×02 0xDF 0×50 |
360k (PC-AT) | /dev/fd0h360 | 720 9 2 40 1 0×23 0×01 0xDF 0×50 |
410k | /dev/fd0h410 | 820 10 2 41 1 0×25 0×01 0xDF 0x2E |
420k | /dev/fd0h420 | 840 10 2 42 1 0×25 0×01 0xDF 0x2E |
720k | /dev/fd0h720 | 1440 9 2 80 0 0×23 0×01 0xDF 0×50 |
800k (БК) | /dev/fd0h800 | 1600 10 2 80 0 0×25 0×01 0xDF 0x2E |
880k | /dev/fd0h880 | 1760 11 2 80 0 0x1C 0×09 0xCF 0×00 |
1200k | /dev/fd0h1200 | 2400 15 2 80 0 0x1B 0×00 0xDF 0×54 |
1440k | /dev/fd0h1440 | 2880 18 2 80 0 0×25 0×00 0xDF 0×02 |
1480k | /dev/fd0h1476 | 2952 18 2 82 0 0×25 0×00 0xDF 0×02 |
1490k | /dev/fd0h1494 | 2988 18 2 83 0 0×25 0×00 0xDF 0×02 |
1600k | /dev/fd0h1600 | 3200 20 2 80 0 0x1C 0×20 0xCF 0x2C |
Шлейф для БК-0010
На флоповоде | Шлейф Альтек | Шлейф FFC (slim) |
---|---|---|
2: /REDWC — Density Select | ||
4: | ||
6: | ||
8: /Index — 0=Index | 1: ИНД — Индексный маркер | 2: INDEX |
10: | 3: ВН0 — Выбор накопителя 0 | |
12: /DRVS — Drive Select | 5: ВН1 — Выбор накопителя 1 | 4: DRV |
14: | 7: ВН2 — Выбор накопителя 2 | |
16: /MOTE — 0=Motor Enable | 9: МВК — Включение двигателя | 10: MTR |
18: /DIR — 0=Direction Select | 11: НПШ — Направление шага | 12: DIR |
20: /STEP — 0=Head Step | 13: ШАГ — Шаг | 14: STEP |
22: /WDATA — Write Data | 15: ЗПД — Данные записи | 16: WRITE DATA |
24: /WGATE — Floppy Write Enable | 17: РЗП — Разрешение записи | 18: WRITE GATE |
26: /TRK00 — 0=Track 00 | 19: Д00 — Нулевая дорожка | 20: TRACK 00 |
28: /WPT — 0=Write Protect | 21: ЗЗП — Запрет записи | 22: WRPTR |
30: /RDATA — Read Data | 23: ДЧТ — Данные чтения | 24: RDATA |
32: /SIDE1 — 0=Head Select | 25: ВП0 — Выбор поверхности | 26: SEL |
34: /DSKCHG — 1=Disk Change/0=Ready | 26 или 27: ГОТ — Готовность | 6: DSKCH |
8: READY | ||
1, 3… 33 — общий | 2, 4… 24 — общий | 15,17,19,23,25 — общий |
1,3,5 — +5V |
Описание интейфейса стандартного флоппи-диска можно посмотреть здесь.
Описание флоповода и интерфейса стандарта slim можно посмотреть в спецификации
TEAC FD-05HF-8630 Micro Floppy Disk Drive или Y-E DATA YD-702J-6637J Super Slim 3.5 Floppy Disk Drive ( (англ.)).
Шлейфы контроллера Альтек бывают 27- и 26-проводные. В 26-проводном пропущен сигнал, соответствующий контакту 33 флоповода. Мне достался вариант контроллера, где 27-проводный шлейф распаян как 26-проводный.
Контакт флоповода | 27-проводный | 26-проводный | Мой шлейф |
---|---|---|---|
8, 10… 32 | 1, 3… 25 | 1, 3… 25 | 2, 4… 26 |
34 | 27 | 26 | 27 |
9, 11… 31 — общий | 2, 4… 24 — общий | 2, 4… 24 — общий | 1, 3, 5… 25 — общий |
33 — общий | 26 — общий | отсутствует | отсутствует |
Подпрограммы ПЗУ контроллера дисковода
В ПЗУ контроллера дисковода имеется ряд подпрограмм, служащих для работы с диском на уровне секторов. Все прочие программы, обеспечивающие чтение/запись файлов или форматирование дискет, обращаются к этим подпрограммам, и знания о них понадобятся вам, особенно если начать писать свои "спасающие” программы.
а) 160000 --- загрузка
@#160000 — подпрограмма-автозагрузчик операционной системы с загрузочной дискеты. Автоматически ищет загрузочный диск на всех имеющихся дисководах и найдя, загружает. Не требует параметров. Может быть вызвана командой БК-0010 ЕМТ52.
б) 160004 --- чтение/запись
@#160004 — подпрограмма чтения/записи секторов (ЕМТ54). Подпрограмме передаются параметры:
- R0 — номер первого сектора из группы читаемых или записываемых.
- R1 — длина массива информации (файла). Задается в двухбайтных машинных словах. Если длина больше нуля, это означает чтение, если меньше нуля (NEG R1), — запись.
- R2 — начальный адрес массива информации в ОЗУ.
- R3 — адрес размещения в ОЗУ рабочей области контроллера.
Подпрограмма читает или записывает указанное количество двухбайтных слов, начиная с заданных адреса в ОЗУ и сектора на диске. Количество читаемых или записываемых секторов зависит от длины файла (каждый сектор занимает 0.5 кб или в БКшечном восьмеричном представлении 1000). По результатам чтения устанавливается состояние бита С слова состояния процессора. Если чтение произведено без ошибок, С=0. Если возникла ошибка чтения/записи, С=1 и в ячейке ОЗУ по адресу @#52 находится байт — номер ошибки (коды ошибок восьмеричные):
Код | Причина ошибки |
---|---|
1 | Запись: диск заклеен; чтение: ошибка контрольной суммы в зоне данных |
2 | Ошибка в заголовке сектора |
3 | Нет выхода на 0 дорожку |
4 | Ошибка позиционирования |
5 | Не найден сектор |
6 | Нет диска или он не вращается |
7 | Прерывание по клавише СТОП |
010 | Не найден адресный маркер |
011 | Не найден маркер данных |
012 | Недопустимые параметры команды или формат диска |
в) 160010 --- инициализация
@#160010 — подпрограмма создания в ОЗУ и заполнения служебной области для функционирования контроллера и дисковода (рабочей области). Подпрограмма может быть вызвана по ЕМТ56. Параметр: R3 — адрес начала рабочей области в ОЗУ.
В рабочей области записаны данные (указано смещение в байтах от начала, восьм.):
- 2 — адрес текущей дорожки диска (2 байта);
- 4 — таблица текущих дорожек (4 байта);
- 010 — задержка на опускание головки (количество циклов SOB; 2 байта);
- 012 — задержка перехода с дорожки на дорожку (2 байта);
- 014 — номер дорожки, начиная с которой включается пред-компенсация (1 байт);
- 015 — число повторных обращений при ошибке чтения/записи (1 байт);
- 017 — код, которым заполняются сектора при форматировании (1 байт);
- 020 — указатель на байт признаков (2 байта);
- 022 — таблица признаков (4 байта);
- 026 — адрес начала рабочей области (2 байта);
- 030 — длина массива данных в двухбайтных машинных словах (2 байта);
- 032 — номер стороны диска (0 — верхняя, 1 — нижняя; 1 байт);
- 033 — номер дорожки, считая от 0 (1 байт);
- 034 — номер дисковода (0 — А:, 1 — В: и т. д.; 1 байт);
- 035 — номер сектора диска (1 байт);
- 060 — число секторов на дорожке (2 байта).
Остальные участки рабочей области являются служебными.
Таблица признаков (смещение 022 от начала рабочей области) содержит четыре байта, соответствующие четырем дисководам. Для каждого из них биты байта таблицы имеют значения:
- 0 — "пропуск дорожек” (0-нет, 1 — пропуск нечетных дорожек). Это позволяет обрабатывать 40-дорожечные дискеты на 80-дорожечном дисководе;
- 1 — "односторонний/двухсторонний диск” (0 — двухсторонний, 1 — обращение только к нижней стороне);
- 2 — "длина сектора” (0 — 512 байт, 1 — 1024 байт).
Остальные биты не используются.
г) 160012 --- форматирование
@#160012 — подпрограмма форматирования отдельной дорожки диска. В качестве параметра подпрограмме передается в R3 адрес размещения в ОЗУ рабочей области контроллера, в которой, в соответствии с вышеприведенным списком, должны быть указаны номер диска, номер стороны и номер форматируемой дорожки, а также записываемый при форматировании "нулевой код”.
Кроме того, имеются две дополнительные подпрограммы, используемые реже названных выше:
- @#160002 — загрузка ОС с указанного дисковода (без поиска ее на остальных дисках);
- @#160006 — чтение/запись секторов аналогично подпрограмме @#160004, но параметры передаются не через регистры, а непосредственно в ячейках рабочей области.
(Сведения о подпрограммах приведены для "326” прошивки ПЗУ контроллера.)
Кроме того, чтобы после выполнения операций чтения/записи остановить дисковод, нужно обнулить содержимое служебного регистра контроллера @#177130 (CLR @#177130).