CDX-2 — Контроллер FDD для MSX
CDX-2 в корпусе
Контроллеры дисковых накопителей MSX
Классические домашние компьютеры из восьмидесятых годов прошлого века далеко не сразу начали снабжаться дисковыми интерфейсами, а работали преимущественно с бытовыми магнитофонами. Из-за этого, для разных платформ могло существовать несколько различных дисковых интерфейсов разной степени проприетарности. Для платформы MSX известно более 19 разных контроллеров, которые можно разбить на группы по двум категориям:
По типу интерфейса передачи данным — через ОЗУ или порты ввода-вывода
По типу применяемой микросхемы контроллера дисководов
Сложно сказать какой способ подключения микросхемы контроллера дисковода лучший. Порты контроллера могут конфликтовать с портами других устройств и не работать при нестандартной тактовой частоте, но не теряют время на манипуляцию страницами памяти, а использование страниц ОЗУ может портить программы, которые используют эту память или конфликтовать с мапперами на картридже.
В MSX использовались практически все доступные в актуальное время микросхемы контроллеров дисковода: WD37C65B, WD2793A и WD1773. Были поддержаны дисководы 5.25 и 3.5, одинарной и двойной плотности, но поддержка HD форматов отсутствовала.
Благодаря сотрудничеству с Microsoft в качестве формата хранения данных был выбран FAT12 аналогичный формату хранения на IBM PC. Поддержки папок в MSX-DOS 1 нет, но и в MS-DOS они появились лишь в версии 2.0. Существует сторонняя реализация команды cd -, но так как понятия путей у MSX-DOS 1 нет то ее копию нужно хранить в каждом из каталогов, что крайне неудобно. Альтернативой может стать одна из версий MSX-DOS в которых работа с каталогами поддерживается — SOLX-DOS или MiSiX-DOS.
Программная поддержка контроллера дисковода состоит из двух частей, BDOS (DISK BIOS) реализующий API и драйвер обеспечивающий работу с конкретной микросхемой контроллера дисковода. Так как MSX в большой мере сделан вокруг языка BASIC то дополнительно реализуется расширение DISK-BASIC, делающий доступным привод для дискет из MSX-BASIC. Обе части хранятся в ПЗУ объемом 16 килобайт, которое находится на картридже контроллера дисковода.
Как и при работе с другой старой техникой у энтузиастов сложилось два основных подхода:
Оригинальные решения актуальной эпохи, здесь в ходу БИС, логические микросхемы и PAL/GAL
Современный подход, использование Raspberry PI для вывода на HDMI и STM32 для эмуляции мышки, FPGA тоже в ходу
Сборка оригинального контроллера дисковода работающего с реальным приводом или его эмулятором находится где-то в первой зоне, хотя микроконтроллер установленный на Gotek способен эмулировать весь контроллер целиком.
Дальнейшая часть этой статьи посвящена опыту сборки клона контроллера CDX-2 от бразильской компании Microsol.
Фотография оригинального контроллера CDX-2
Оригинальный контроллер CDX-2 от компании Microsol
Сборка и наладка
Автором данной клона является пользователь konkotgit в репозитории которого есть готовый проект и gerbers для производства печатных плат. Контроллер управляется через порты ввода вывода и базируется на микросхеме контроллера дисковода WD2793. Для сборки можно использовать удобный список элементов в формате IBOM. Если он не открывается в браузере, то нужно его скачать и открыть локально.
Основной частью контроллера является микросхема WD2793 или её аналог TMS2793, обе из которых доступны на AliExpress. Визуальное состояние моих экземпляров пугающее, но все присланные из Китая микросхемы оказались рабочими
Микросхемы с AliExpress
WD2393A-PL и TMS2793NL
Остальная часть контроллера собрана на микросхемах ТТЛ логики, понадобятся две 74LS06 и по одной 74LS00, 74LS74, 74LS138, 74LS174. Отечественные аналоги 155, 555 и 1533 серий также будут работать.
В наладке контроллер не нуждается. Тем не менее на плате доступны три контрольных точки TP1, TP2, TP3 и перемычка J3 переводящая микросхему контроллера дисковода в режим калибровки. Понадобиться это может владельцам дисководов на 8 дюймов или другой железной экзотики. Установленных значений R5 и R6 достаточно для стабильной работы как с 5.25, так и 3.5 дюймовыми накопителями.
Контроллер CDX-2 в сборе
Прошивка
Прошивка контроллера хранится в микросхеме ПЗУ 27256, доступно два окна по 16 килобайт. Можно использовать как УФ стираемые ПЗУ, так и электрические. Переключать прошивки можно перемычкой JP1. Если ее не устанавливать, то будет загружен код, который находится по адресу 0×0000h.
Контроллер CDX-2 совместим с несколькими прошивками, оригинал от Microsol, и несколько модификаций. Оптимально прошивать FAST! DiskROM от разработчика системы Uzix — Adriano Camargo Rodrigues da Cunha, доступной по ссылке fastdrom11.zip. Для этой версии контроллера из архива используется файл fastdrom_cdx2.eprom. Можно просто зашить его в начало 32 килобайтного ПЗУ, а можно дополнить оригинальной прошивкой cdx2.zip, чтобы убедиться что FAST! DiskROM работает действительно быстрее оригинала. Из-за особенности платформы MSX нет никакого смысла прошивать в свободное окно игру или программу. Размер окна ПЗУ без модификаций всего 16 килобайт, а игры такого размера отлично грузятся с дискеты.
Загрузка MSX-DOS
Для первого запуска контроллера рекомендую использовать эмулятор контроллера дисковода Gotek с прошивкой FlashFloppy — так как состояние реальных дисководов и дискет далеко от идеального, а искать виновника проблемы будет сложнее. Кроме того в современном мире легче записать образ дискеты чем саму дискету формата 720 кБ. Подключать Gotek можно с помощью обычного шлейфа от PC как с переворотом так и без — благодаря тому что что сигнал MOTOR ON контроллера эмулятору привода не особо важен.
После установки контроллера с подключенным Gotek вы увидите приветствие, с указанием версии прошивки и количества доступных физических и логических дисков:
Приветствие Fast DiskROM
Дальнейшее поведение интерфейса зависит от того есть ли на дискете MSX-DOS. В загрузочном секторе MSX не нуждается, поэтому достаточно записать на дискету всего два файла COMMAND.COM и MSXDOS.SYS. Самый простой способ их получения это скачать файлы с MSXHub и скопировать в образ или на реальную дискету. Для MSX-DOS второй версии дополнительно должен быть файл COMMAND2.COM. В качестве альтернативы можно воспользоваться операционной системой Nextor, полностью совместимой с MSX-DOS и MSX-DOS2, при этом обладающей поддержкой FAT16, скачать ее можно с того же MSXHub или собрать самостоятельно из исходного кода.
Для Gotek понадобится утилита для работы с образами дискет, я рекомендую Disc Image Manager доступный как для Windows, так и на MacOS и Linux. Кроме того для платформы MSX необходимо создать на флеш накопителе файл конфигурации FF.CFG и добавить в него строку host = msx
.
При наличии загрузочных файлов на носителе компьютер загрузится в MSX-DOS, запросит у вас текущую дату и покажет приглашение командной строки. Можно посмотреть содержимое дискеты командой DIR или перейти к интерпретатору языка Бейсик по команде BASIC.
Командный интерпретатор MSX-DOS
Подключение дисководов
Пользователям реальных дисководов приходится гораздо сложнее. Если посмотреть на схему контроллера, то видно, что он поддерживает 4 реальных дисковода, при этом сигнал который раскручивает двигатель вращающий дискету всего один.
Схема подключения дисководов
Стандартный дисковый контроллер IBM-PC поддерживает всего два привода, каждому из которых нужен сигнал раскрутки двигателя. Отличия между CDX-2 и IBM-PC проще всего свести в таблицу
№ | CDX-2 | IBM-PC | Описание сигналов IBM-PC |
6 | DS3 | RSVD | Зарезервировано |
8 | INDEX | INDEX | Индексное отверстие |
10 | DS0 | MOTEA# | Мотор А |
12 | DS1 | DRVSB | Выбран Диск B |
14 | DS2 | DRVSA | Выбран Диск А |
16 | MOTORON | MOTEB# | Мотор B |
Из таблицы видно почему привод Gotek работает на обычном шлейфе с перекруткой — так как Gotek по умолчанию эмулирует оба диска то сигнал включения мотора B активирует сигнал выбора накопителя 1 который в системе представлен как диск А. Для корректной работы сигналы нужно поменять. Сделать это можно на самом шлейфе или соорудив переходник. При модификации шлейфа необходимо продублировать сигнал MOTORON для двух приводов MOTEA# и MOTEB# и соединить сигнал DS0 с DRVSA. Благодаря тому что обычный 3.5 дисковод от IBM-PC сконфигурирован как диск Б то подключив его к шлейфу после переворота мы получим Диск А на MSX.
Модификация шлейфа для CDX-2
Модификация дисководов для MSX
На этом проблемы с реальными дисководами не заканчиваются. MSX не умеет работать с дискетами HD формата, поэтому необходимы дискеты двойной плотности. Широко распространенные дискеты формата 3.5 совместимы как с HD, так и с DD. Дисковод распознает плотность дискеты с помощью датчика по аналогии со статусом защиты от записи — только отверстие находится на противоположной стороне дискеты. Заклеив его непрозрачной наклейкой вы заставите привод работать с дискетой в режиме двойной плотности. Если это не помогает, проверьте что в вашем накопителе есть сенсор DD/HD. Чем новее накопитель тем шансов на это меньше.
Дисковод без датчика DD/HD
Дисковод без датчика можно заставить работать в режиме двойной плотности. По умолчанию перемычка J0 запаяна на землю. Для перевода дисковода в DD достаточно выпаять эту перемычку. Можно также впаять переключатель DD/HD между контактными площадками датчика, при этом необходимо не забыть запаять перемычку J13.
Плата дисковода в режиме HD
Корпус и полиграфия
Теперь, когда контроллер и дисковод работают, можно заняться изготовлением корпусов. Плата картриджа подходит к модели корпуса Reworked MSX cartridge case for non-Konami boards, но на нем нет прорези под гнездо шлейфа. Доработанную мной модель можно скачать с thingiverse. Так как точность FDM печати не идеальна, рекомендую печатать вариант корпуса без защелок и собирать его на винтах. Для придания контроллеру законченного вида, на лицевую часть картриджа печатаем наклейку.
Вариант наклейки на картридж
Наклейка на картридж
Внешний дисковод или дисководы также желательно спрятать в корпус, для этого я смоделировал простой корпус для двух накопителей. Из-за того что положение шлейфа и питания на различных дисководах отличаются задняя крышка доступна как с прорезями, так и без них.
Корпус для двух дисководов
На этом у меня все, всем успехов в сборке и наладке. Задавайте ваши вопросы в комментариях.