Найти тему
Дюк Юсупов

Использование реальных дискет ZX Spectrum. Часть 2

Оглавление

Ещё в конце 90-х, когда у меня появился первый ПК на процессоре Пентиум, я использовал его в качестве ZX Spectrum с помощью эмуляторов (потому что у моего Спектрума стала "отваливаться" клавиатура). И эти эмуляторы в MS-DOS могли работать с реальными дисководами и дискетами TR-DOS (Beta Disk). Тогда-то я и превратил в образы дискет большую часть своей коллекции, кроме тех, которые были с защитой от копирования (с ними эмуляторы отказывались работать напрочь, даже есть снять полный образ специальными утилитами).

То есть необходимо было только подключить дисководы к ПК, установить MS-DOS, засовывать дискеты в щель дисковода и наслаждаться трелями перемещения его головки во время чтения/записи. Но на самом деле задача оказалась (как и всегда) немного сложнее и со множеством всяких проблем. Поэтому - по очереди. Дисководы я уже подобрал, теперь надо установить операционку на подходящее железо (тем кому про устаревшие операционные системы неинтересно - пропускайте эту часть). В качестве подходящего, как я уже упоминал, пошёл мини-ПК, собранный в 2020 году из всяких остатков. Там оказался нужный для дисководов разъём FDD, который уже давно "выпилили" с современных материнских плат.

Microsoft DOS

Установить MS-DOS оказалось не сложно, сложно оказалось заставить его нормально работать. Всё-таки прошедшие годы изрядно сказались на его совместимости с разным "железом". Начал я с канонической уже версии 6.22, поскольку интерес для меня представлял не только Спектрум, но и классические DOS-овские версии игр, в которые играл в детстве, а эта версия MS-DOS наиболее заточена под их запуск. Про саму установку и MS-DOS я предлагаю вам почитать вот тут, оттуда же я скачал и образы дискет установочного набора MS-DOS 6.22, развернул их на реальные дискеты 3,5" и приступил к установке на жёсткий диск.

Скриншоты я снимал на виртуальной машине и тут всё было нормально: система выделила себе основной раздел в 2 Гб и даже разметить дополнительный раздел тремя разделами по 5 Гб (хоть и не отформатировала). Зато на реальном железе начались первые трудности. Я в курсе, что есть определённые требования к разделу, на который устанавливается MS-DOS 6-й версии - это, во-первых, FAT, во-вторых, раздел должен быть первичным (основным) и не может быть больше 2 Гб. Но FDISK в MS-DOS 6.22 отказался работать с моими "большими" винчестерами (SATA 160 Гб и IDE 20 Гб). А когда я в Linux создал этот раздел размером в 2 Гб, то MS-DOS его либо полностью игнорил, либо писал про какие-то ошибки, из-за которых установку продолжать нельзя. Тут я уж перебрал все варианты - отключал расширенную поддержку SATA в BIOS, полностью отключал SATA и пробовал IDE-винчестер (ну нет у меня винчестера размером в пару гигабайт!), создавал разделы с разными размерами (от 100 Мб до 2 Гб) - ничего не помогало. А если дать волю самому MS-DOS и оставить винчестер пустым - то он нормально всё размечал и устанавливался... но почему-то на раздел размером в 48 Мб. И вроде бы и ничего, если бы он видел другие разделы, но он даже раздел в 500 Мб видел только с какими-то "крякозябрами"... Ну и ясно, что на 48 Мб никак не разгуляешься - ни одна нормальная игра не влезет. Почему на виртуалке MS-DOS нормально работал с 20 Гб диском, а на реальном железе по всякому отказывался - тайна сия осталась скрытой. То ли чипсет неподходящий, толи гранаты диски не той системы...

Тут я просто плюнул и сделал сразу две вещи: MS-DOS я установил по этому рецепту на USB-флешку (при этом эта ОС на ПК видела все 2 Гб на флешке!), а на SATA-винчестер установил FreeDOS.

Но MS-DOS на флешке ещё раз показал свою противную натуру, когда эмулятор Real Spectrum напрочь отказался в нём работать даже с рекомендованным для него "расширителем" памяти cwsdpmi (см. DPMI). Как я не пытался подобрать его параметры - бестолку, видимо большое количество оперативной памяти сводило его с ума. Пришлось искать альтернативу, и я её нашёл в виде HX DOS Extender. Загруженный в виде резидента в autoexec.bat, она позволила запустить нужный эмулятор.

FreeDOS

FreeDOS, в отличие от MS-DOS, гораздо лучше заточен под современное железо и ставится без особых проблем. Но это если знать, что при его запуске надо прерывать загрузочный скрипт кнопкой F5, потом снова запускать autoexec.bat и только после этого setup.exe, иначе происходит какая-то ерунда и остановить её уже нельзя:

Сама установка же проходит штатно:

Правда, хотя я и выбрал полную инсталляцию, но отнюдь не все пакеты с установочного носителя были установлены. Те же игры, например. Можно их, безусловно, просто распаковать в любое удобное место, но хорошо, что в состав FreeDOS входит своеобразный менеджер пакетов, позволяющий устанавливать, обновлять и удалять приложения, входящие в его дистрибутив. Для этого надо использовать программу fdnpkg: например, с ключом install для установки конкретного файла с расширением zip из установочного пакета:

Прям как в Linux'е
Прям как в Linux'е

Второй нюанс, который сразу бросился в глаза, как только я запустил DOS Navigator - это отсутствие русского языка, хотя при установке я его выбирал. Оказалось, что в конфигурационные файлы никаких изменений внесено не было и система стартует с параметрами по умолчанию. Но тут можно взять любой из русификаторов (тот же rk.com) или придётся править fdconfig.sys и autoexec.bat, чтобы заставить работать встроенный.

В fdconfig.sys надо изменить строку:

!COUNTRY=007,866,C:\FDOS\BIN\COUNTRY.SYS

А в autoexec.bat поправить строки:

SET LANG=RU
NLSFUNC %dosdir%\BIN\COUNTRY.SYS
DISPLAY CON=(EGA,,1)
MODE CON CP PREP=((866) %dosdir%\CPI\EGA3.CPX)
KEYB RU,866,%dosdir%\bin\keybrd2.sys
CHCP 866

После этого русские буквы отображаются, а переключение раскладок осуществляется с помощью сочетаний Left Alt / Left Shift (EN) и Left Alt / Right Shift (RU).

Работает FreeDOS на первый взгляд более-менее нормально, но у меня случилось несколько зависаний на ровном месте, а один раз, при копировании данных, что-то случилось с каталогом на USB-флешке и пришлось восстанавливать целостность файлов. Так что, товарищи, аккуратнее, система до сих пор сыровата.

Хорош же FreeDOS тем, что включает в себя поддержку USB-флешек (не работает с "горячей" заменой, надо перезагружать ПК), есть современные менеджеры памяти, которые позволяют нормально работать с большими её объёмами и тем, что, в принципе, большинство DOS'овских игр на нём всё-таки запускаются и работают. Но были и проблемы с запуском игр и их работоспособностью, к сожалению.

Изображение и видеокарты

Видеокарта ASUS GeForce 210 в слоте PCI Express работала, что в MS-DOS, что во FreeDOS, но с ней я наблюдал местами странные артефакты. Сначала я заметил их на своей игре, разработанной ещё в далёком 98-м году на Pascal'е (пришлось её перекомпилировать патченным Turbo Pascal'ем, поскольку она не работала на слишком быстром ПК). Вся EGA-графика и шрифты в ней была "покорёжены":

А вот на виртуалке всё выглядело нормально:

И точно такие же проблемы были и с другими программами, например, с Windows 3.11, из-за чего было не всегда понятно, что написано на экране:

-7

При этом, если перейти на встроенное в материнку видеоядро, то подобные артефакты пропадали. Так что не всё то хорошо для DOS, что от Nvidia... Современное железо таки сказывается и мне уже начало казаться, что и DOSBox не так уж и плох. Но вот на той же виртуальной машине VirtualBox я в своей игре ловил конкретные подтормаживания (и это на 6-ти ядерном процессоре!), которые сводили на нет весь смысл виртуализации MS-DOS.

Зато эмулятор Real Spectrum (пожалуй, лучший эмулятор ZX Spectrum для DOS) сразу запустился и отлично работал. А меня вообще-то интересовала как раз эмуляция ZX Spectrum, поэтому всем остальным решено было пренебречь.

Звук и аудиокарты

С изображением дело обстояло не так уж плохо, а вот со звуком ситуация была плачевной. Звука в DOS с аудиокартой ASUS Xonar DS, установленной в моём мини-ПК, конечно же не было. И начать тут, пожалуй, можно с того, что "как всем известно" с поддержкой разных карт расширений в DOS всё очень неоднозначно. Точнее даже так - хорошо поддерживаются устройства с прямым доступом к ним, а это увы - только карты с разъёмом (и шиной) ISA. Но в 21 веке материнские платы с таким разъёмом если и выпускаются, то в качестве каких-то промышленных, да и сами карты расширения довольно трудно раздобыть.

На смену ему пришла шина PCI (которая на текущий момент тоже уже почти вытеснена PCI Express), более прогрессивная с точки зрения архитектуры, зато возникла проблема с поддержкой подобных устройств в чистом DOS, потому что в отличии от карт формата ISA, которым не нужен был никакой драйвер-посредник, для PCI-карт такая программа была нужна. И если под Windows написана уже куча драйверов, то под DOS ситуация гораздо печальнее - остаётся надеяться только на давным-давно написанные программы-резиденты для самых популярных тогдашних аудиокарт.

Ну и соответственно, нужна такая звуковая карта. Начал я с поиска подходящих вариантов и вот, например, статья про пошаговую настройку Sound Blaster Live 5.1. У меня даже была где-то раньше такая же, но тут-то мне нужна была низкопрофильная карта в мой узкий корпус и я стал рыть дальше и наткнулся на статью про аудиокарты всё на том же ms-dos.biz, в которой для нормальной работы в MS-DOS опять же рекомендовались PCI-карты от компании Creative и даже был приведён перечень, на который стоило опираться. В итоге я рискнул заказать с Aliexpress одну из карт (б/у) приведённых в этом списке: Sound Blaster Live! 24-bit (SB0410). Карта удачно и быстро приехала и оказалась даже рабочей, но под DOS не заработала ни с одним из имеющихся драйверов. Поэтому мой вывод такой: если надо Sound Blaster - берите только на DPS EMU10K1. Всё остальные чипы толком не поддерживаются.

Пришлось копать ещё глубже и я докопал до таблички совместимости PCI-аудиокарт и чипсетов, из которой в итоге выяснил, что нормальных низкопрофильных аудиокарт особо и не выпускалось. Но тут я зацепился взглядом за знакомое название C-Media CMI8738... и вспомнил, что подобное не так давно я где-то видел. И действительно, память меня не подвела - оказывается на этих чипах до сих пор выпускают PCI-аудиокарты и есть даже с интерфейсом PCI Express. Это, если честно, лютый трэш - на платах, складывается такое впечатление, распаян только чип, да ещё и левой ногой с бодуна. Про качество звука тут даже нечего рассуждать, а первая купленная карта вообще толком не работала (дикие шумы и наводки). Но зато этот чип имеет аппаратную эмуляцию Sound Blaster и есть драйвера, которые эту эмуляцию включают. Для этого в autoexec.bat прописываются параметры Sound Blaster и запускается программа-резидент setaudio:

Есть даже программа-микшер для управления громкостью и входами/выходами (C3DMIX.COM). И сама карта реально работает и в MS-DOS и FreeDOS! Хотя, как и обещали, не во всех играх: в Settlers 2, например, звук есть, но при работе возникают бегающие горизонтальные полосы по экрану, а бывает что игра и падает:

Но всё равно, удивителен сам факт - в 2021 году можно купить в магазине аудиокарту, которая работает в DOS'е! Удивительное долголетие чипсета от C-Media.

Некоторые эмуляторы Спектрума тоже нормально запускаются со звуком (тот же UKV), но как только я начал радовался - оказалось, что именно тот эмулятор, на который я уже положил глаз (Real Spectrum) - вылетает: какой-то конфликт резидента аудиокарты и библиотеки Allegro, используемой эмулятором. Победить не удалось и пришлось перейти к следующему Хитрому Плану - установке Windows XP.

Microsoft Windows XP

Не хотел я устанавливать тяжелые операционные системы и особенно Windows, но выхода не было: мои девайсы, как оказалось, под DOS не совсем корректно работают. А под Windows есть шанс это всё заставить функционировать как надо, по крайней мере, с драйверами проблем особо не должно быть. И хотя стандартный драйвер дисководов в Windows XP не обеспечивается прямой доступ к ним, но зато есть замечательный драйвер от Симона Оуэна: fdrawcmd.sys, который обеспечивает доступ к дисководу не хуже чем под DOS. Сам драйвер работает на любой Windows старше 2000, но лучше выбрать XP, чтобы не столкнуться с проблемами из-за драйверов, а более старшие версии не поддерживаются нужным мне эмулятором Спектрума.

Описывать установку я не буду, поскольку Windows XP ставится нормально практически на любое работоспособное железо и сюрпризы маловероятны (и ожидания оправдались). Всё железо подцепилось, драйвера были установлены, заработал и свисток Wi-Fi, и даже современная плата USB 3.0 от Orico (правда драйвер пришлось поискать, на официальном сайте версия старая и не ставилась под XP).

Стали доступны разные утилиты для работы со Спектрумовскими дискетами, которые были написаны для Microsoft Windows: тот же SAMdisk (от разработчика драйвера дисковода), WinTRD, WinISD, ZX Disk Studio, AMD Copier, mktrd, TRRead, ZX-Spectrum Floppy Disk Image Manager и даже плагины для Far.

Ну и эмулятор Real Spectrum тоже прекрасно заработал. Правда не версия под DOS, а его перекомпилированный вариант под Windows (с названием RS32). Только для работы с дискетами надо установить последнюю версию (0.97.36), которая лежит отдельно, в разделе альфа-версий.

На первый взгляд ничем не отличается от большинства эмуляторов Спектрума...
На первый взгляд ничем не отличается от большинства эмуляторов Спектрума...

Но про эмуляторы и утилиты, пожалуй, в следующей части...