Ну и наконец-то мы дошли до того самого, ради чего это устройство и создавалось - для использования его в качестве полноценного ZX Spectrum да ещё и с наворотами. Как уже упоминалось в первой части, у данного устройства есть всё необходимое, чтобы нормально функционировать как полноценный Спектрум, только у него вместо оригинальной схемы есть FPGA, в которую можно заливать нужную прошивку (и ядро оригинального Спектрума там уже есть и причём загружается по умолчанию), и есть отдельные входы для PS/2-клавиатуры и PS/2-мыши (причём можно использовать и переходники с USB, лишь бы сам протокол был реализован в этих устройствах ввода), есть VGA-выход, корректно выдающий картинку на устройства, которые поддерживают вертикальную частоту развёртки 50-60 Hz, есть два гнезда для джойстика (причём их тип можно выбрать в BIOS), есть стандартный отдельный аудиовыход, есть даже аудиовход для загрузки программ с магнитофона и спектрумовский слот расширения. Полный фарш. Но есть и ещё одна приятная особенность - это наличие слота для MicroSD-карты и возможностью загружать программы с карты туда вставленной.
Т.е. то, для чего в случае с оригинальным ZX Spectrum необходимо было покупать отдельное устройство (например, divMMC от Byte Delight), которое втыкалось в оригинальный разъём расширения Спектрума, тут доступно, как говорится, из коробки.
Но просто воткнуть карточку в слот будет недостаточно. На этой карте должно быть установлено соответствующее ПО, которое сможет задействовать данный потенциал устройства. А конкретно - esxDOS. С их официального сайта надо скачать последнюю версию (на момент написания статьи это 0.8.8) и распаковать содержимое в корень карточки. Однако, поскольку устройство идёт по умолчанию с esxDOS 0.8.6, то сначала надо будет обновить esxDOS в BIOS ZXDOS+. Как это делается, я писал в предыдущей части.
esxDOS
Ну и в итоге, если вы всё сделали правильно, а в BIOS выбрано ядро ZX Spectrum и ROM Rooted ZX Spectrum 48, то при старте устройства не сразу откроется голый экран 48-килобайтного Спекки, а сначала промелькнёт экран загрузки esxDOS:
На этом экране определяются устройства (у нас только sda для MicroSD), монтируются разделы на вставленной карте (hd0) и загружаются необходимые библиотеки. Кстати, библиотека RTC.SYS не входит в поставку esxDOS, но она есть в пакете установки ZX Spectrum Next, так что можно позаимствовать оттуда и положить в папку SYS на карте памяти (ну или просто совместить оба проекта на одном разделе - с этим всё нормально). После этого у нас всё-таки появляется экран Спектрума, но это уже не просто голый 48-килобайтный компьютер времён 80-х годов прошлого века, на котором можно разве что писать на бейсике и загружать/сохранять данные на магнитофонную ленту, это уже прокаченное устройство.
Во-первых, появляется возможность нажав кнопку F5 на клавиатуре оказаться в меню NMI ("немаскируемое прерывание"), что позволяет запустить файловую оболочку esxDOS и "бегать" по содержимому SD-карты, просматривать и запускать находящиеся на нём файлы.
Благодаря реализованной эмуляции ленты - поддерживается чтение/запись TAP-файлов (а вот файлы TZX не поддерживаются), а благодаря эмуляции TR-DOS - можно монтировать до 4 дисководов образами дисков в формате TRD (SCL, FDI и прочая экзотика типа UDI и Teledisk тоже не поддерживается) с помощью клавиш A, B, C и D. Ну и можно напрямую запускать снэпшоты в форматах Z80 и SNA, а также просматривать снэпшоты экранов в формате SCR (клавиша V). Кроме этого, можно самому создавать снэпшоты памяти в формате SNA (клавиша S).
В итоге, благодаря esxDOS мы получаем расширенные возможности по хранению и использованию файлов разных форматов для ZX Spectrum, до этого присущих эмуляторам. И сначала эмуляторы "заэмулировали" использование реальных дисководов (у меня был первый PC с 5-ти и 3-дюймовыми дисководами, которые вполне сносно работали в эмуляторах Спектрума типа UKV и Z80 с добавленной поддержкой TR-DOS) и полностью перешли на свои специальные форматы файлов. А теперь эти форматы (изначально созданные для разных эмуляторов Спектрума) пришли и в реальные и даже оригинальные ZX Spectrum. И, хотя "лента" ещё более-менее востребована, но и она сейчас скорее уже в виде звуковых файлов, проигрывающихся на смартфонах.
А, во-вторых, кроме файлового менеджера (которого обычным пользователям будет достаточно в 99% случаев), есть в esxDOS ещё одна специфическая возможность, а именно дополнительные команды, которые можно вводить в режиме BASIC48 и расширенные команды самого языка BASIC. Первые необходимо вводить с точкой в начале, поэтому они так и называются ("DOT" commands) и по сути они вызывают специальные бинарные программы в папке BIN на SD-карте. Т.е. если там файла соответствующего команде не будет - то и команда не сработает. Перечислять я все команды не буду, с ними можно ознакомится либо в мануале самого esxDOS, либо в мануале к ZXDOS+ (тут описания короткие и простые). А вторые - расширенные команды BASIC: GOTO, CAT, LOAD, SAVE, ERASE (тоже описаны в мануале), которые позволяют использовать как параметр конкретное дисковое устройство.
Вот пример применения dot-команды перехода по каталогу (.cd) и показа его содержимого (.ls):
Основные возможности dot-команд связаны с файловыми операциями (и это логично), запуском файлов в поддерживаемых форматах (указано выше) и просмотром/проигрыванием поддерживаемых файлов: музыкальных (PT3, SQT, STC, TFC, WAV). При этом, в поставке esxDOS этих команд немного - 38, хотя их на самом деле может быть больше, т.е. тут всё зависит ещё и от тех кто разрабатывает "железо" с поддержкой этого самого esxDOS. Перечень всех-всех команд со ссылками на них я смог найти тут (ссылка с форума worldofspectrum.org), но записи обрываются год назад, так что, возможно, есть что-то ещё. Конкретно для ZXDOS+ есть следующие возможности:
- Операции связанные с сохранением (получением дампа) энергонезависимой памяти устройства (.back16m, .back32m, .romsback), а также с прошивкой устройства (.upgr16m, .upgr32m, .romsupgr, .corebios). Например, список ROM в памяти устройства нельзя обновить через BIOS, но можно обновить с помощью dot-команды (описано в предыдущей части).
- Настройка самого устройства (.zxuc, .zxunocfg).
- Мультимедиа: более качественное проигрывание (8 бит, 15625 Hz) WAV-файлов (.dmaplayw), проигрывание MIDI-файлов (.playmid) и даже проигрывание видео в специальном формате RaDastan Movie - RDM (.playrmov). Тут как раз имеет значение мощность самого устройства ZXDOS+, которая физически это позволяет.
- Сеть: программы для настройки (.iwconfig) и сброса Wi-Fi модуля (.esprst). Это необходимо, потому что в ZXDOS+ с чипом LX25 добавлен и Wi-Fi модуль для подключения к сети.
Т.е. фактически esxDOS - это на самом деле полноценная дисковая операционная система для ZX Spectrum и она хорошо работает на ZXDOS+. Но у неё есть и определённые минусы. Один из самых заметных - это отображение и работа только с короткими именами файлов (8 символов имя, 3 - расширение). Это не сильно напрягает, если у вас небольшое количество игр, собственноручно названных, которые вы с лёгкостью можете искать. Совсем другое, это использование целой библиотеки игр (например, с сайта World Of Spectrum) - тут иногда приходится действовать перебором и проще сначала найти нужную программу в более удобной ОС и отдельно её разместить с понятным названием. Далее - отсутствует поддержка формата дисков SCL, а именно в этом формате выложены образы программ на сайте Virtual TR-DOS. Да, от программиста Nihirashi есть проект специально для конвертации из SCL в TRD (scl2trd), с dot-командой .scl2trd и GUI в формате TAP-файла:
Но это опять же "костыли" и конвертировать по одному файлу очень неудобно, не говоря уже о том, что и скорость конвертации невелика. Поэтому готовить коллекцию игр придётся заранее. Мне, например, пришлось написать скрипт, который сконвертировал все файлы в скачанном архиве Virtual TR-DOS из формата SCL в TRD.
Та же самая засада нас ждёт и при наличии файлов TZX, только тут я не нашёл ни dot-команды для esxDOS (есть для ZX Next), ни какой-либо другой программы, работающей на Спектруме. Я нашёл только один вариант с GUI для Windows (ссылка), а ещё один (консольный) для скачивания требует логин и пароля на FTP World of Spectrum, которого у меня нет. И опять же - либо обходимся версиями в формате TAP, либо конвертируем по одному файлу.
Ещё мне не понравилось, что при выбранном ускорении ZX Spectrum в BIOS ZXDOS+ ускоренно двигается курсор в браузере файлов esxDOS. И если при удвоенной частоте ещё как-то можно попадать по нужным каталогам и файлам, то при дальнейшем увеличении это уже просто издевательство. Мне кажется, такие вещи надо всё-таки продумывать.
Что же касается эмуляции ленты и дисков, то, с одной стороны, вроде всё хорошо. То есть программы загружаются, выполняется сохранение на диск (на ленту не проверял). С другой стороны, у меня возникли проблемы с загрузкой дисков журналов Spectrofon и ZX Format: начинается загрузка, иногда даже до заставки доходит, но потом идёт сброс. Возможно, это связано с защитой этих дисков, но в эмуляторах они загружаются нормально. Зависит ли это от эмуляции образов TRD в esxDOS или на это влияет само ядро ZX Spectrum в ZXDOS+ - я не понял. Ещё один баг словил при сохранении на диск TRD после загрузки снэпшота снятого самим esxDOS - игра просто вылетела. То есть и тут могут быть нюансы.
Ядро ZX Spectrum
А теперь немного про само ядро ZX Spectrum в ZXDOS+ и мои впечатления по его использованию. Начну с того, что поддержка esxDOS - это очень хорошо. Про её минусы я уже написал выше, но без этого устройство теряет 90% смысла.
Ядро точно воспроизводит работу ZX Spectrum (и "мультиколор" тоже работает), хотя не совсем удобно, что иногда надо лезть в BIOS и устанавливать те же тайминги для Pentagon. Можно увеличивать частоту процессора вплоть до 27 МГц, но это, опять же, только через BIOS, и не всеми играми нормально поддерживается. Зато при длительных операциях можно временно зажимать кнопку F12 и на это время устройство максимально ускоряется.
Вполне комфортно работать на стандартной PC-клавиатуре, хотя если вы программируете на BASIC48 вам отчаянно будет не хватать наклеек на клавиши (их, наверное, можно где-то купить или сделать самому). Т.е. для меня наличие настоящей спектрумовской клавиатуры не особо важно, особенно если это помогает уменьшить устройство и не остаться без него в случае поломки клавиатуры. Как раз мой Pentagon 128 мне пришлось забросить, потому что начала глючить клавиатура, а поменять её плёнку в то время было не так-то легко. Но для ZXDOS+ нужна PS/2-клавиатура, либо у USB-клавиатуры должна быть поддержка протокола PS/2. И ещё нюанс: в устройстве есть порт USB для клавиатуры с поддержкой протокола PS/2 (чтобы не использовать переходник), но у меня в таком случае не работала мышь.
Есть поддержка Kempston-мыши и есть отдельный порт для неё. Но сначала надо найти либо PS/2-мышь, либо пробовать с переходником USB-2-PS/2 (но не все мыши поддерживают сам протокол PS/2, а без этого переходник бесполезен). Минус - нет возможности поменять клавиши для мыши местами, а это иногда полезно (я не могу играть в UFO2 в режиме боя - постоянно путаю, что "идти" правой кнопкой и "стрелять" левой). Ну и нельзя использовать беспроводные мыши и клавиатуры - вот это реально печалит... А вот если бы была полноценная поддержка USB-протокола (я уж молчу про Bluetooth), то тут могли бы быть варианты.
С джойстиками всё отлично. В BIOS можно выбрать как будут представляться джойстики Спектруму и, соответственно, вполне можно играть сразу на двух джойстиках. Кстати, джойстиком-то обычно называется палка торчащая вверх с кнопкой (например, вот такой вариант). Я в своё время переломал в порыве страсти во время игр кучу дешевых джойстиков следующего вида (а потому что они были сделаны из говна из плохого пластика):
Но гораздо удобнее использовать обычный геймпад, тем более что сюда подходят те же джойстики для Sega Mega Drive 2, которые стоят достаточно дешево. Правда, покупать совсем дешевые варианты я бы вам не советовал, поскольку качество у них ниже плинтуса - хватит на месяц, а потом кнопки перестанут нажиматься. Я себе заказал беспроводной(!) геймпад, поскольку видел на видео, что он работает в ZX Spectrum Next, но жду пока он до меня доедет (доехал - работает отлично!). Геймпада-то мне в 90-х не хватало, а мысль перепаять какой-нибудь от Денди или Сеги мне тогда и в голову не приходила.
Хорошо, что в качестве питания используется USB-кабель, можно запитаться хоть от монитора с USB-хабом, хоть от телевизора. И подключиться VGA-кабелем тоже пока возможно почти ко всем мониторам и телевизорам (подключить к телевизору через RCA можно с помощью копеечного переходника). К сожалению, используется низкое разрешение и низкая вертикальная частота развертки - могут быть проблемы с некоторыми телевизорами и мониторами. У меня один телевизор включался только при выставленной частоте в 60 Hz, а один из мониторов работал только с частотами выше 50 Hz. Ну и разрешение - не фонтан, чисто для мониторов 15-летней давности. Почему нельзя самому выбрать нормальное разрешение лично мне непонятно.
Итого
Ну а в целом ZXDOS+ с ядром ZX Spectrum полностью удовлетворил мои потребности в качестве современного Спектрума. Всё работает, как и обещано, а на SD-карте можно держать хоть весь архив программ для ZX Spectrum, созданных за всё время его существования. Есть незначительные нарекания к esxDOS, но они, возможно, будут устранятся по мере выхода новых версий. Например, одно из замечаний, которое у меня было: использование в файловом браузере коротких имён файлов - устраняется с помощью сторонних доработок, например File Browser с поддержкой длинных имён файлов и плюс к этому ещё и дополнительных расширений файлов и функций.
К самому же устройству можно только придраться за использование устаревших портов типа PS/2 (похоже, не так-то просто реализовать полноценную поддержку USB), да за низкое разрешение картинки на современных дисплеях. Всё остальное - на твёрдую пятёрку.
В следующей части разберём использование ядра ZX Spectrum Next и имеет ли оно преимущества перед ядром чистого ZX Spectrum.
P.S. Я, конечно, сомневаюсь, что в Дзене много поклонников ZX Spectrum, но всё-таки если понравилось - ставьте палец вверх, ну а не понравилось - ставьте палец вниз и пишите в комментарии, что именно. Если возникнут вопросы - тоже пишите в комментарии, обязательно постараюсь ответить. Ну и подписывайтесь, если эта тема вам интересна.