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

ZXDOS+ в качестве ZX Spectrum Next

Оглавление

Продолжаем обзор интересного устройства родом из Испании: ZXDOS+

ZXDOS+: вид слева
ZXDOS+: вид слева

Первое впечатление у нас уже было, BIOS и его прошивку разобрали, использование его в качестве полноценного ZX Spectrum вместе с esxDOS тоже оценивали. И теперь надо двигаться дальше - проверять остальные возможности, т.е. "ядра", которые могут быть залиты в прошивку FPGA-платы, находящейся в основе этой коробчонки.

И начнём с того, что меня сразу зацепило при первом просмотре информации об этом устройстве - поддержке работы в режиме ZX Spectrum Next. Заинтересовало потому что изначально я его и хотел прикупить, но каждый раз жаба брала за горло и уговаривала, что эмуляторы, мол, нынче хороши... Да, но хоть эмуляторы очень хороши, но запускать каждый раз комп ради загрузки эмулятора - это излишнее расточительство и времени и денег. С другой стороны, ZX Spectrum Next занимает всё-таки прилично места, а если его каждый раз вытаскивать и подключать к монитору, то это будет напрягать. И вот пока я сам с собой боролся - вот тут и наткнулся на этот интересный девайс, который как раз почти ничего не занимал, да и стоил заметно дешевле Next'а. При этом, судя по обзору, ничем от него при работе не отличался.

Начало работы

Само ядро ZX Spectrum Next уже было загружено в устройство, так что всё работало "из коробки", но, во-первых, лучше всё-таки установить версию поновее (с исправленными багами), а, во-вторых, без софта (операционной системы NextZXOS) на SD-карте ядро не заработает. Так что сначала идём на GitHub за новым ядром (скачиваем последнее, где в названии zxnext), прошиваем его в ZXDOS+, потом идём на сайт ZX Spectrum Next и скачиваем последний дистрибутив (на момент написания статьи это была версия 1.3.2) и распаковываем его в корень SD-карты. Причём, не обязательно это должна быть отдельная SD-карта, данный дистрибутив прекрасно работает совместно с esxDOS и ему подходит как FAT16, так и FAT32 в качестве файловой системы.

И вот у нас полноценный ZX Spectrum Next:

Видеорежимы

После всего этого в BIOS надо выбрать новое ядро по умолчанию для запуска и всё должно нормально стартануть. Но это если у вас монитор нормальный и, если вы читали мануал :) Потому что в инструкции где-то на 30 странице описаны "горячие клавиши", которые переключают видеорежимы: F2 - переключает удвоение разрешения (необходимо только для SCART), F3 - переключает между 50 и 60 Hz вертикальной частоты обновления. Если этого не знать, то можно долго пялится в монитор с надписью о том что видеорежим не поддерживается. Ну и не всякий монитор или телевизор через VGA заведётся без проблем. Один из моих телевизоров ни в одном из режимов так и не заработал. Зато оба монитора (и совсем старый и новый) прекрасно работали и в 50 и в 60 герцах. Но ещё при работе чистого ядра ZX Spectrum меня напрягало низкое разрешение на новом широком мониторе, и тут было примерно тоже самое. А всё-таки 800x600 вместо родного 1920x1200 выглядит очень "не очень":

Кривые "лесенки", потерянные вертикали у букв - неряшливо всё это выглядит
Кривые "лесенки", потерянные вертикали у букв - неряшливо всё это выглядит

Но тут я решил перебрать все доступные видеорежимы в ZX Spectrum Next аналогично тому, как я это сделал для ядра Spectrum (только там переключать можно было только частоту вертикального обновления в BIOS). А тут при старте ядра Next'а можно было выбрать какие выходы перебирать (нас VGA интересует):

-4

И в цикле будут переключаться видеорежимы, пока пользователь не остановится на одном. И тут мне повезло: один из режимов на моем мониторе выставил очень приличное разрешение - 1920 на 540 пикселей:

-5

В результате можно было наслаждаться чёткими лесенками и ровными буквами:

А вот так уже лучше!
А вот так уже лучше!

Это, пожалуй, стало самой весомой причиной, почему я по умолчанию теперь загружаю именно ядро от Next'а, а не использую чистый Spectrum.

Загрузка игр и приложений

Менеджер файлов в ZX Spectrum Next очень приличный:

Наконец-то поддерживаются длинные имена файлов (в отличие от того же esxDOS), пусть и некоторые буквы сливаются вместе (шрифт не очень удачный). Посмотрите сами на скриншот выше - без длинных имён было бы совсем не разобраться что есть что. И это я ещё привёл в порядок скачанный срез коллекции игр с сайта https://worldofspectrum.org/: собрал все повторы и разные выпуски игр для каждой игры в свои каталоги с помощью самописного bat-скрипта (запускается в каждом каталоге по первым буквам: A, B, С и т.д.):

Setlocal EnableDelayedExpansion
@echo off
set name_dir=_
for /d %%i in (*.*) do (
if "!name_dir!" neq "%%~ndpi" (
set cnt_dir=0
for /d %%j in (%%~ndpi.*) do set /a cnt_dir=!cnt_dir!+1
for /d %%j in (%%~ndpi48*.*) do set /a cnt_dir=!cnt_dir!+1
for /d %%j in (%%~ndpi128*.*) do set /a cnt_dir=!cnt_dir!+1
for /d %%j in (%%~ndpiPart*.*) do set /a cnt_dir=!cnt_dir!+1
for /d %%j in (%%~ndpiDemo*.*) do set /a cnt_dir=!cnt_dir!+1
for /d %%j in (%%~ndpi_*.*) do set /a cnt_dir=!cnt_dir!+1
for /d %%j in (%%~ndpi(*.*) do set /a cnt_dir=!cnt_dir!+1
for /d %%j in (%%~ndpi1*.*) do set /a cnt_dir=!cnt_dir!+1
for /d %%j in (%%~ndpi2*.*) do set /a cnt_dir=!cnt_dir!+1
for /d %%j in (%%~ndpi3*.*) do set /a cnt_dir=!cnt_dir!+1
for /d %%j in (%%~ndpi4*.*) do set /a cnt_dir=!cnt_dir!+1
for /d %%j in (%%~ndpi5*.*) do set /a cnt_dir=!cnt_dir!+1
for /d %%j in (%%~ndpi6*.*) do set /a cnt_dir=!cnt_dir!+1
for /d %%j in (%%~ndpi7*.*) do set /a cnt_dir=!cnt_dir!+1
for /d %%j in (%%~ndpi8*.*) do set /a cnt_dir=!cnt_dir!+1
for /d %%j in (%%~ndpi9*.*) do set /a cnt_dir=!cnt_dir!+1
if !cnt_dir! gtr 1 (
mkdir %%~ndpi
for /d %%j in (%%~ndpi*) do (
move %%j %%~ndpi
)
for %%k in (scr\%%~ni*.scr) do (
move %%k %%~ndpi
)
)
set name_dir=%%~ndpi
)
)

И ещё можно было копировать, удалять файлы, переименовывать их. Даже каталоги создавать. Почти полноценная ОС.

Вот тут меня ожидала одна подстава, точнее даже две. Во-первых, это то что не поддерживается загрузка файлов в формате TZX. Проблема не особо важная, поскольку практически всегда можно найти вариант в формате TAP, но это же ещё искать надо... Есть, конечно, конвертеры, но я смог найти только один: TZX2TAP v0.21 by LCD'10 - под Windows с GUI, но без возможности его массового применения в скрипте.

И есть ещё один интересный вариант, с конвертацией непосредственно в менеджере файлов ZX Spectrum Next: tzx2tap by Chris Young. Для того, чтобы это работало надо:

  • Скопировать файл TZX2TAP в папку DOT в корне SD-карты;
  • Скопировать файл tzxconv.bas в папку NEXTZXOS в корне SD-карты;
  • Настроить расширения файлового менеджера - в файл browser.cfg (в каталоге NEXTZXOS) добавить новую строчку выше имеющейся там и начинающейся с TZX: TZX<.tzx2tap -b "|":load "c:/nextzxos/tzxconv.bas":let f$="|":goto 9000

По итогу, при открытии TZX-файла будет запущена его конвертация в TAP-файл, который будет сохранён в том же каталоге и будет предложено его запустить.

А вот вторая проблема более насущная: Next вообще не поддерживает никакие образы дискет ZX Spectrum, т.е. огромная часть игр просто недоступна (включая огромный вклад российских разработчиков), а часть лишена удобных подгрузок или сохранений. И походу это официальная позиция разработчиков Next'а, хотя я до конца и не понял, что в ней больше: беспокойства по поводу нелегальности TRD-образов или им было просто неохота реализовывать эту поддержку, тем более что на Западе TR-DOS вообще практически не был распространён.

В итоге, рекомендация для загрузки TRD-файлов была одна - использование esxDOS. Поэтому я сначала и использовал ядро чистого Спектрума, но потом догадался, что тот же esxDOS можно использовать и совместно с NextZXOS. Для этого надо всего лишь положить файл esxmmc.bin в каталог /machines/next/ на SD-карту. Всё остальное, что касается esxDOS остаётся в силе - он точно так же должен быть развернут на SD-карте.

А далее надо остановить загрузку NextZXOS клавишей SPACE и перейти к настройкам NextZXOS клавишей E и там включить Divmmc:

Экран настроек NextZXOS
Экран настроек NextZXOS

Ну и запускать конфигурацию не ZX Spectrum Next, а другой вариант, например, ZX Spectrum 128k:

Экран выбора ROM в NextZXOS
Экран выбора ROM в NextZXOS

И если всё будет сделано правильно, то после старта NextZXOS произойдёт старт esxDOS:

-10

И откроется экран обычного спектрума.

Памятная надпись!
Памятная надпись!

После этого можно уже будет с помощью клавиши F10 вызывать прерывание divMMC и попасть в экран файлового менеджера esxDOS:

-12

И вот только так нам станут доступны образы дискет в формате TRD (SCL, как я уже писал ранее, придётся конвертировать). К сожалению, FDI не поддерживается, а ведь только в этом формате можно хранить диски с защитой от копирования (и хорошо, что всё уже взломано до нас!).

Настройки и отличия

Самое главное отличие ZX Spectrum Next - это поддержка приложений разработанных специально для этой платформы. Т.е. это не просто очередной "железный эмулятор" ZX Spectrum, а полноценный 8-битный компьютер (без клешинга!). И под него выходят новые игры, например, на днях вышел релиз Delta's Shadow. Она, конечно, работает и под чистым Спектрумом, но гораздо круче выглядит именно в версии для ZX Spectrum Next. А вот и релиз игры на youtube-канале sinc LAIR:

Ну и понятно, что настройки BIOS ZXDOS+ особого значения не имеют при выборе ZX Spectrum Next - у него есть своя страница настроек и свои параметры разных конфигураций (скриншот приведён выше). Перечислю часть того, что удалось заметить отличающегося от ядра ZX Spectrum:

  • В тех случаях, когда для ядра ZX Spectrum приходилось "колдовать" в BIOS с настройками таймингов и памяти, тут всё работало без всякого вмешательства (и даже без выбора конфигурации Soviet Timings).
  • Есть возможность переназначить кнопки мыши (мне удобнее в UFO2 играть с перевёрнутыми - левой кнопкой ходить, а правой - стрелять).
  • TurboSound - поддержка двух чипов AY для воспроизведения одновременно 6-каналов.
  • Поддержка Kempstone-мыши тоже есть, но тут есть возможность настроить чувствительность (DPI), иногда без этого никак не обойтись.
  • И минус по джойстикам: если в BIOS ZXDOS+ я мог использовать одновременно два джойстика подключенных к нему (один как Kempstone, второй как Sinclair), то в NextZXOS у меня это никак не получалось. Оно скорее заточено под эмуляцию джойстиков на клавиатуре.

Итого

В конце-концов ядро ZX Spectrum Next стало для меня основным на ZXDOS+. В основном из-за видеорежима, позволяющего нормально задействовать мой монитор (даже для загрузки "дискет" в TRD-формате я опять же выберу esxDOS внутри Next'а). Но и нормальный файловый менеджер тоже вносит свой вклад, так что если мне надо загрузить что-нибудь с "ленты", то я предпочту опять же Next. Аналогично для программ с поддержкой кемпстон-мыши.

Единственное, когда мне сейчас приходится переключаться на стандартное ядро Спектрума - это одновременная поддержка двух джойстиков. Ну и Next проигрывает в скорости загрузки ядру чистого Spectrum с esxDOS, хотя это и несущественно (несколько секунд).

P.S. Я, конечно, сомневаюсь, что в Дзене много поклонников ZX Spectrum, но всё-таки если понравилось - ставьте палец вверх, ну а не понравилось - ставьте палец вниз и пишите в комментарии, что именно. Если возникнут вопросы - тоже пишите в комментарии, обязательно постараюсь ответить. Ну и подписывайтесь, если эта тема вам интересна.