Настройка ретрокомпьютера или 386 страданий

В августе исполняется ровно год моему проекту по строительству 386-го ретрокомпьютера из разнообразных запчастей. Честно говоря, не ожидал, что стройка настолько затянется, но с другой стороны — нет особых причин торопиться. Речь не идет о современном процессоре, который устареет через пару лет. За это время я почистил материнскую плату от коррозии, сравнил производительность процессора AMD Am386 c Pentium III и умеренно старым десктопом на чипсете X58, много времени потратил на выбор звуковой карты, прикрутил MIDI-синтезатор Roland MT-32, проапгрейдил процессор с 386 до «почти 486-го», добавил CD-ROM.

jutlxmgpti__nodkfjmdzx7yjgs.jpeg

С тех пор существенных изменений в конструкции моего компьютера не произошло: началась эксплуатация без завершения сборки. Но мелких улучшений было много. В этот раз я хочу рассказать именно о мелочах: про выбор блока питания, прикручивание модема, настройку дисковода для пятидюймовых дискет. Во всех случаях я сталкивался с какими-то трудностями в настройке, которые успешно преодолевал. Об этом и пойдет речь. Это важный этап ретрохобби: именно небольшие твики config.sys и autoexec.bat, изучение AT-команд модема превращают набор железа в компьютер. Они же отдаляют тот светлый момент, когда я смогу сказать: всё, готово! Ну и ладно, в этом деле процесс важнее, чем результат.
Все статьи по теме:

0. 1992 год в компьютерной прессе
1. Рассматриваем материнскую плату 386-го компьютера
2. Бенчмарк 386-го процессора и лихие девяностые
3. Трудный выбор звуковой карты для DOS-игр
4. Особенности Sound Blaster Pro 2
5. Roland MT-32, альтернативный звук для DOS-игр
6. Беспощадный апгрейд 386-го ПК
7. Мультимедийные технологии начала девяностых
8. Настройка ретрокомпьютера или 386 страданий ← вы находитесь здесь

Дневник коллекционера старых железок я веду в Телеграмме.

Выбор блока питания


Первые опыты с 386-м железом я ставил при помощи блока питания, позаимствованного из десктопа на базе Pentium III. Уже тогда я принял решение использовать новый БП, по одной простой причине: старому я не доверяю. Его поломка может привести к выводу из строя уже довольно редкого и местами дорогостоящего оборудования. Какие недостатки могут быть у такого подхода? Первое: современные БП сделаны по стандарту ATX, старые (до первого Pentium включительно) — по стандарту AT. Потребуется переходник, что не проблема. Второе: во всех современных блоках нет линии питания -5v. Тоже небольшая проблема: материнская плата и карты расширения у меня достаточно «свежие», и в этой линии не нуждаются. Для более древнего железа на eBay можно найти модифицированные БП или сделать модификацию самостоятельно. Третье: максимальную мощность новые БП отдают по линии питания 12v. Старые блоки питания имели мощность 100–300 Ватт, но она была поровну распределена между линиями 12v и 5/3.3v. Как видно из таблицы ниже, на эти два напряжения приходится только 100 ватт мощности из общих 500–1000. Какая-то очень мощная ретросистема (много процессоров, много жестких дисков) может от такой особенности пострадать, но точно не моя.

v4mnsnroxanpcqdzllqwplbv50g.png


Достоинств у современных БП много. Они модульные: можно подключать только те кабели, которые необходимы (например, разъемы питания для SATA-устройств мне совсем не нужны). Со временем можно укоротить кабели питания для материнской платы и приводов, чтобы они не создавали беспорядок. Они тихие: установлены большие вентиляторы с «умным» режимом работы. Наконец, у них высокий КПД, что уменьшает потребление электроэнергии.

crmn2cvqmg1xjcqiw-jfgzzushw.jpeg


В результате был приобретен блок питания Seasonic GX-550, младшая модель в серии Focus. Бюджетное решение для современного десктопа, роскошное для ретрокомпьютера. 12-сантиметровый вентилятор этого БП включается только в том случае, когда это действительно необходимо для охлаждения. В 386-м десктопе он еще не включился ни разу. В комбинации с картой Compact Flash вместо жесткого диска, и при отсутствии активного охлаждения процессора я получил полностью бесшумный ретроПК! А что насчет «исторически корректного железа»? Я уже получал комментарии, что моя сборка — это не «настоящее ретро». Это мой выбор: я собираю ретрокомпьютер, потому что у меня нечто похожее было тогда, но делаю это сейчас.

3jttaquzsbkck7jb1mfzwa54d8i.jpeg


В середине девяностых все компьютеры у меня и моих знакомых покупались готовыми. Сборка если где-то и практиковалась, то не в моем окружении. Если бы сейчас я хотел «аутентичный» десктоп, я бы купил готовую ретросистему (кстати, это было бы дешевле). Но хотелось именно заняться сборкой, подбирать комплектующие, и я не вижу проблемы применять современное железо там, где это удобно. Примеры: блок питания (надежно), адаптер Compact Flash вместо жесткого диска (удобно переносить данные с современного ПК), современный интерфейс MIDI (старые стоят безумных денег и очень редкие).

Пятидюймовый дисковод


Самый, пожалуй, непрактичный элемент ретрокомпьютера.

z-nhfaxsa29qsrsgmrrki7uf16c.jpeg


Мне удалось найти дисковод 1986 года выпуска в состоянии New Old Stock — железку чуть младше меня, которой никогда не пользовались. Модель NEC FD1155C — представитель «старой школы» приводостроения, тяжелая, практически без деталей из пластмассы. При первом подключении дисковод подавал признаки жизни, но работать отказывался, как в паре с обычным 3,5-дюймовым дисководом, так и отдельно. Пришлось уточнить очевидную (тогда, но не сейчас) особенность подключения двух дисководов одним кабелем: они должны быть с разных сторон вот этой части шлейфа, где часть проводников перевернута.

hywp9gcww6ukvtgtlzvhj8pmtni.jpeg


Параметры взаимодействия дисковода с контроллером задаются джамперами, описание работы которых пришлось довольно долго искать. Для некоторых дисководов NEC они описаны тут, но самое подробное описание нашлось на сайте спектрумистов. Увы, рекомендованные там настройки перемычек подходят для ZX Spectrum, но не для IBM PC. Последовал подбор параметров методом проб и ошибок, в результате получилось вот что:

cvhhrbzr_k-pblj5b5y0k66-xmu.jpeg


Из глубины времен вылезло разнообразие способов взаимодействия между устройствами, интерфейс у которых вроде бы один и тот же. Проблем добавляли купленные недорого бэу дискеты.

pfexdf4fmuer3lacdozj49sl_nc.jpeg


Они читались и форматировались с постоянными сбоями. Так как я не был уверен в работоспособности самого дисковода, было непонятно — в чем проблема. Для калибровки пришлось купить пачку запечатанных дискет.

f7eynmts74qnkn97hmwqq3heg4s.jpeg


И вот они заработали без проблем. Скорее всего мне больше 10 штук и не понадобится. Пятидюймовые дисководы в моей реальности начала девяностых были распространены, а для многих компьютеров (ZX Spectrum, Robotron) были тогда единственным вариантом. Болгарские дискеты ИЗОТ имелись в нашем хозяйстве в количествах, но в какой-то момент были выведены из эксплуатации с окончательным переходом на IBM PC и нормальные три с половиной дюйма. В моем ретроПК пятидюймовый дисковод — это такой обязательный символ «тех времен». Он потребуется мне по делу буквально пару раз. Все остальное время он будет издавать правильные звуки при включении компьютера.

Модем


Модем мне нужен по двум причинам. Первая: на ретрокомпьютере будет восстановлена моя BBS, подключенная по VoIP. Вторая: модем — это красиво. Чтобы было максимально красиво, я приобрел один из легендарных модемов тех времен — USR Courier. Устройства с таким названием выпускались два десятилетия, и нюансов при выборе «правильной» модели много. В большинстве случаев подойдет практически любая модификация, выпущенная после 1996 года, когда появилась возможность программного обновления прошивки для добавления новых функций. В моем случае это устройство 1999 года выпуска, с официальной поддержкой протокола X2 на 56 килобит в секунду, но без более распространенного стандарта V. 90/92. Это не большая проблема: практика показывает, что через VoIP стоит расчитывать на стабильные 19200 бит в секунду, в самых идеальных условиях — на 28800, но не больше.

cyvwerbvt4rdxein8m7ig7dwhjy.jpeg


Большая проблема заключалась в том, что модем стабильно подключался на скорости 2400, а это как-то совсем небыстро. Пришлось изучать набор AT-команд и разбираться с параметрами работы подробнее.

-pfyf78cmd0ll8yglygapuwf0nw.jpeg


То, что мне было необходимо поправить в настройках, было очевидно по выводу информации о модеме (команда ATI7), но просветления я достиг не сразу. Проблема была в несогласованности режимов передачи данных между модемом и последовательным портом компьютера. В MS-DOS (и других системах) используется так называемый FOSSIL-драйвер, его требует большинство программ — например, BBS-софт Maximus или клиент для Фидо T-Mail. Взаимодействие FOSSIL и модема фиксировало скорость на 2400. Попытка задать другую скорость в настройках драйвера приводила к мусору вместо полезных данных после соединения.

Пара дней страданий, и все свелось к одной «лечебной» команде для модема: AT&B1. Это значение по умолчанию, определяющее, что скорость обмена данными между модемом и компьютером фиксированная, она задается в настройках программы, которая с модемом общается (в моем случае — 57600 бит в секунду). По какой-то причине в модеме был выставлен параметр AT&B0, предполагающий изменение скорости передачи данных в зависимости от скорости внешнего соединения.

zkdjd_ppej9qttyocrjc6muy78o.jpeg


После изменения настроек нужно применить еще одну команду AT&W, чтобы параметры сохранились в EEPROM модема и применялись при последующей инициализации. Здесь мне пришлось изучить аппаратные переключатели на корпусе модема, которые были выставлены так, что модем всегда инициализировался с заводскими настройками, а не с пользовательскими.

-oaetb0a4ozuxh_ukqa98ox9gny.jpeg


В процессе страданий мне помог древний FAQ по модемам Courier из Фидонета (1998 год). В попытке решить проблему радикальными методами я также пробовал установить альтернативную прошивку для модема, известную как ID_SDL Игоря Дягилева. В моем случае это было не обязательно: насколько мне известно, альтернативная прошивка прежде всего адаптировала заграничные модемы к непростым отечественным телефонным сетям. Помогала решить проблему типа «не ловится BUSY» (если вы понимаете, о чем я), и получить рабочий определитель номера. Тем не менее, в ID_SDL более гибко настраиваются два параметра, которые мне будут полезны: мощность исходящего сигнала и чувствительность приемника входящего сигнала. Пока что соединение с внешними абонентами у меня не идеальное, и кажется модификация этих двух параметров помогает подружить модем и плохо предназначенные для передачи данных протоколы VoIP.

COM-порты и камлание


Во всех примерах выше хорошо показано, что каждый элемент компьютера представляет собой сложную схему, и при выборе или настройке требуется знать ее особенности. В ретросистемах, с одной стороны, технологии чуть проще, чем современные. С другой, они часто требуют вмешательства пользователя, если вы собираете компьютер с нуля. Чаще, чем современные десктопы. При подключении дисковода я скорее угадывал, чем делал осознанный выбор параметров, но все же ориентировался на объективные факты, собранные предыдущими страдальцами. Модем пришлось изучить в деталях, хотя и тут процесс только начался. Последняя история про ретрострадания — про откровенное шаманство и интуицию.

k47kiut1benshhm_fnc8r8cudny.jpeg


Мультикарта — важный элемент компьютера, обеспечивающий работу с жестким диском, дисководами, внешними устройствами через параллельный и последовательный порты. Моя карта имеет два COM-порта, один из которых работает, а второй нет. Все это вскрылось, когда я попытался подключить одновременно и модем, и «последовательную» мышь. Устройство, подключенное к COM1, работало нормально. Мышь, подключенная на COM2, определяется, но не работает. Модем сыпет мусором в консоль. Проблема с мультикартами заключается в том, что они как правило не брендированные. Идентифицировать их сложно, и в базе старых устройств на stason.org мне пришлось пролистать сотни устройств, сравнивая показанное там расположение разъемов с моей картой. Безуспешно.

z1b0elvjv7xy14nwvbqvcvmjqgi.jpeg


Можно предположить, что мультикарта неисправна, либо джамперы на ней установлены неправильно. Но проверить правильность установки без инструкции невозможно, если только она не нанесена прямо на плату (не мой случай). Это был такой момент, когда ты смотришь на старую периферию и вообще не понимаешь, что делать. Отчаявшись, я взял первый попавшийся джампер и переставил его на соседнюю пару контактов.

И помогло! Базовую диагностику COM-портов можно провести с помощью утилиты, входящей в современный драйвер мыши CuteMouse. Она выводит основные параметры портов, и по этим данным стало понятно, в чем была проблема, и что я сделал, переставив перемычку. Оба COM-порта висели на одном прерывании (IRQ4). Теперь каждый работает на своем (IRQ 3, IRQ 4). И все заработало! Маленький шаг для человека, большой шаг… хотя нет, это во всех смыслах маленькое событие. Но как приятно!

Эпилог. Линия А20


Давным-давно, во времена первых IBM PC и процессоров Intel 8086 и 8088, шина для работы с памятью была 20-разрядной и таким образом поддерживала максимум 1 мегабайт оперативной памяти. Процессоры были 16-разрядными, и для правильной адресации использовалась комбинация «адрес + смещение». Компьютеры на базе 286-го процессора могли работать с оперативной памятью объемом до 16 мегабайт, а для совместимости со старым софтом был применен грязный хак в виде логического переключателя на 21-й адресной линии, известный как A20 Gate. Без этого костыля древний софт, использующий старый вариант адресации, в некоторых случаях мог записывать или читать данные не там, где надо.

Вот это знание мне казалось бы совсем не требуется: у меня «современный» 386-й процессор с 32-битной шиной памяти, в котором были добавлены новые технологии работы с ней. Но нет: после смены материнской платы драйвер для работы с «верхним» сегментом RAM himem.sys выдавал ошибку. Проблема именно в совместимости с костылем: методы взаимодействия с логическим переключателем на линии A20 разные, зависят от производителя материнской платы и временной эпохи. На предыдущей матплате все работало с настройками по умолчанию, здесь же мне пришлось искать старую инструкцию к драйверу.

device=c:\dos\himem.sys /m:3

Там я узнал, что драйверу можно указать ключ /M: , который указывает, что работать с A20 Gate нужно определенным образом, в зависимости от machine type. Какой именно у меня type, я был совершенно не в курсе, помог перебор параметров, остановившийся на /M:3. Интересно, сколько мне еще предстоит таких удивительных открытий? Базовая конструкция ретрокомпьютера готова, но хочется нарастить функциональность за счет совсем уж экзотической периферии. А там меня наверняка ждет «конфликт прерываний», поиск старых драйверов, часто без описания, и возможно даже работа с паяльником. Строительство все еще продолжается!

© Habrahabr.ru