Interface 1bis: быстрый старт Печать
Добавил(а) microsin   

Когда я получил долгожданный Interface 1bis [4], сразу захотелось подключить его к ZX Spectrum и попробовать в работе. Однако оказалось, что без изучения документации это выполнить не так просто. В этой статье приведен перевод руководства по быстрому запуску "Getting started with the Interface 1bis" (IF1bisGetStart.pdf [1]). Также приведен краткий обзор личного опыта использования интерфейса.

"Interface 1bis" поставляется посылкой качественно упакованным, в антистатическом пакете, и для надежности обернутым "пузырьковым" полиэтиленом. При получении следует сначала проверить, что на упаковке отсутствуют большие механические повреждения из-за транспортировки. Если повреждения есть, или был вскрыт антистатический пакет, то лучше отказаться на почте от получения посылки.

IF1bis parcel

[Подключение к ZX Spectrum]

Перемычки "Spectrum model selector". Interface 1bis имеет две установленные в ряд перемычки для выбора модели ZX Spectrum.

IF1bis jumpers

Перед подключением к ZX Spectrum они должны быть установлены в правильное положение:

'48' (1-2, 3-4), для машин с одним ПЗУ ("one ROM"), которым относятся варианты 48k, 128, +2

'+3' (2-3, 4-5), для машин с двумя ПЗУ ("two ROMs"), т. е. +2A, +2B, +3.

По умолчанию перемычки стоят в положении '48'. У меня был Harlequin rev. G [2], который является клоном ZX Spectrum 48k, так что перемычки переустанавливать не потребовалось.

Первое включение. Перед подключением Interface 1bis к стандартному коннектору расширения ZX Spectrum следует обязательно отключить источник питания. Обычно у моделей ZX Spectrum 48k, как и у Harlequin, для этого нужно выдернуть на задней стенке справа джек питания 9V. Подключать питание следует только после того, как Interface 1bis надежно установлен в слоте расширение ZX Spectrum. Это предотвратит возможные повреждения компьютера и интерфейса.

IF1bis inserted

Когда питание подключено, крайний левый светодиод U загорится на 2 секунды, сигнализируя тем самым, что микроконтроллер интерфейса (PIC18F47J53) прошел инициализацию.

После этого ZX Spectrum должен загрузиться, как обычно, т. е. на экране должна появиться знакомая надпись "© 1982 Sinclair Research Ltd". Если это не произошло, то питание нужно сразу отключить, и перед последующими повторными попытками подключения питания нужно тщательно очистить коннекторы ZX Spectrum и Interface 1bis от возможных попаданий туда металлических стружек или других загрязнений. Очистку лучше всего сделать зубной щеткой, смоченной в спирте.

После включения Interface 1bis входит в состояние OFF, когда он никак не взаимодействует с ZX Spectrum, и только лишь потребляет 30 мА от шины питания 5V.

[Управление интерфейсом и его режимы]

Кнопка управления. Сверху, рядом со светодиодами находится единственная кнопка для управления, которая выполняет 4 разные функции - в зависимости от длительности нажатия:

Переключение между режимами ON и OFF. Когда кнопка нажата на время больше 1.2 секунды (длительное нажатие), интерфейс поочередно переходит из состояния "выключено" (OFF) в состояние "включено, не активно (ON Inactive).

Сброс ZX Spectrum (RESET). Если кнопка нажата на время от 0.5 до 1.2 секунд, то интерфейс генерирует 5-миллисекундный импульс лог. 0 на сигнале ZX Spectrum /RESET, сбрасывая тем самым процессор компьютера (переход к экрану "© 1982 Sinclair Research Ltd").

NMI. Если выполнить на кнопке короткое нажатие (меньшее по длительности 0.5 секунды), то интерфейс генерирует 5-миллисекундный импульс лог. 0 на сигнале ZX Spectrum /NMI.

SYSLD. Если кнопка нажата на время, большее 2.5 секунды (длительное нажатие), то интерфейс перезагружает свою операционную систему либо с компьютера-сервера, либо с карты microSD.

Индикационные светодиоды. У интерфейса имеется 3 основных режима - OFF, ON Inactive, Active. 6 красных светодиодов показывают режимы интерфейса и его состояния.

IF1bis LEDs

Назначение светодиодов:

 U  выбрана микросхема последовательного ОЗУ (serial SRAM chip), если она установлена, или установлено соединение с компьютером-сервером (через USB).

 C  была идентифицирована карта microSD.

 M  если светодиод горит, то мышь активна как мышь Kempston; если мерцает, то мышь активна как джойстик Kempston.

 S  если светодиод горит, то активна страница Shadow ROM интерфейса (теневое ПЗУ, режим Active).

 B  если светодиод горит, то активна страница BASIC ROM (ПЗУ Бейсик, режим Active).

 O  показывает режимы интерфейса ON/OFF: если светодиод горит, то ON (включено), если погашен то OFF (выключено).

Основные режимы интерфейса. Ниже приведено описание основных состояний интерфейса.

OFF. Интерфейс находится в состоянии OFF (выключено), когда светодиод 'O' не горит. В это состояние интерфейс входит каждый раз при включении питания. Также в это состояние интерфейс можно перевести кнопкой (см. секцию "Кнопка управления"). В состоянии OFF интерфейс не отвечает ни на какие запросы ввода/вывода по шине (I/O), и не влияет на адресное пространство ZX Spectrum. Никакие функции интерфейса не работают, он только обрабатывает нажатия на кнопку управления.

ON Inactive. Состояние ON Inactive показывает свечение светодиода 'O', когда оба светодиода 'B' и 'S' не горят (состояние ON Inactive, т. е. интерфейс включен, но не активен). Как уже упоминалось, интерфейс может переключаться между режимами OFF и ON (туда и обратно) нажатием на кнопку управления на время, большее 1.2 секунды. В состоянии ON интерфейс обрабатывает запросы I/O по шине, но не подключает свое ОЗУ. ZX Spectrum работает в режиме "48k BASIC" из своего внутреннего ПЗУ, хотя порты джойстика и мыши функционируют.

Active. Это "активное" состояние интерфейса, когда горят светодиоды 'B' или 'S'. Интерфейс переходит из состояния ON Inactive в состояние Active, когда сработал сигнал /NMI, при коротком нажатии на кнопку управления (длительность меньше 0.5 секунды).

Перейти из режима Active можно только в состояние OFF, если нажать на кнопку на время больше 1.2 секунды.

В состоянии Active интерфейс полностью реализует свои функции, и при этом ZX Spectrum работает в расширенном Бейсике (Extended BASIC) из энергонезависимого ОЗУ интерфейса, когда светодиоды 'B' и 'S' показывают текущее подключение страниц BASIC ROM или Shadow ROM соответственно.

[Установка программного обеспечения]

Отличительная особенность Interface 1bis - наличие полноскоростного порта USB, предназначенного для сетевой работы по принципу клиент-сервер через стандартный кабель microUSB. Сервером может служить любой компьютер PC с портом USB, на котором запущен соответствующая программа сервера (это работает на операционной системе Microsoft Windows® XP, или на более поздних версиях Windows).

Внимание! Интерфейс и карта памяти поставляются в исходном, "чистом" состоянии, так что для работы нужно выполнить процедуру установки.

IF1bis Server и драйверы USB. Чтобы установить требуемые программные компоненты, скачайте и запустите ZXS_setup на компьютере сервера. Эта программа установит необходимые драйверы порта USB. Убедитесь, что программа сервера запущена, и установите в слот интерфейса карту microSD, и подключите интерфейс кабелем к компьютеру. Ниже на скриншоте приведен экран утилиты сервера в рабочем состоянии.

IF1bis Server running connected

Как только соединение USB с интерфейсом установлено, и интерфейс переведен в состояние Active, запустите на ZX Spectrum команду CONTINUE Бейсика, что завершит процесс настройки и подготовит к работе карту SD. В этом процессе на карту SD будут скопированы необходимые утилиты, и произойдет обновление firmware и операционной системы интерфейса. Также эта процедура создаст автоматически запускаемую по умолчанию программу, которая загружает GBL.zzp 'Game browser' [5], если запустить на ZX Spectrum команду RUN из начального загрузочного экрана ZX Spectrum со строкой копирайта.

1. Создает каталог %ProgramFiles%\IF1bis, создает в нем подкаталоги LDC, UTL, ZXC, и копирует в них необходимые утилиты и программы.

LDC: в этом подкаталоге находится программа Logical Disk Copier (LDC32.exe). Эта утилита позволяет копировать файлы между папками Windows и картой microSD, подключенной в картридер (не в слот Interface 1bis). Кроме того, она позволяет восстановить (подготовить) карту microSD для использования её совместно с Interface 1bis.

UTL: в этом подкаталоге находится MDV2TAP.COM (Microdrive to Tape header converter).

ZXS: в этом подкаталоге находится сервер Interface 1bis.

2. Создает на диске C: каталог WOS (имя каталога это аббревиатура от World Of Spectrum, название всемирно известного сайта), и копирует туда файлы Drind, Flist, Pgind. Файл Flist это список игр и программ на сайте worldofspectrum.org, для чего нужны два других файлы файла, мне неизвестно.

3. Создает на диске C: каталог TMP (если он еще не создан), и копирует туда файлы:

Файл Описание
GBL.ZZE Справка по командам GAME BROWSER/LAUNCHER
GBL.ZZP GAME BROWSER/LAUNCHER
IF1BISBA.BIN BASIC  ROM build 231
IF1BISCD ???
IF1BISFW.HEX Прошивка для Interface 1bis
IF1BISSH.BIN Shadow ROM build 153
JOY.ZZP ???
LD5.ZZP ???
MOU.ZZP ???
PLY.ZZP ???
RUN.ZZP Загрузчик для Game Browser/Launcher
SV5.ZZP ???
SYS.ZZP ???
UPD.ZZP Подготовка карты и обновление прошивки Interface 1bis
VER.ZZP Вывод версий прошивки, Basic ROM и Shadow ROM
VR5.ZZP ???

4. Запускает программу сервера IF1bis Server, которая пытается через виртуальный USB COM-порт установить соединение с Interface 1bis.

Logical Disk Copier. Эта дополнительная программная утилита (устанавливается закачкой и запуском LDC_setup), позволяющая преобразовать содержимое папок на компьютере PC в образы логических дисков на карте microSD. Внимание: никаким другим способом содержимое карты microSD недоступно ни для чтения, ни для записи. Не пытайтесь работать с картой обычным способом - через Проводник или другие менеджеры файлов.

[Подготовка карты microSD]

В этом примере подразумевается, что в папке c:\tmp лежат файлы, необходимые для подготовки карты microSD, и сама карта установлена в картридер, и доступна по букве диска U:. 

c:\Program Files\IF1bis\LDC>LDC32.exe c:\tmp 1 8 u
 
Logical disk copier for the 'Interface 1bis'
build 9 / 20.08.2016
LDC32 h  for help
 
The ZXS_setup.exe installer must be run
before a new SD card can be prepared.
 
[Esc] to quit, any other key to continue
 
BASIC  ROM build 231
Shadow ROM build 153
 
The operating system has been copied
 
Press any key to quit

[Устранение проблем]

Когда Вы используете Interface 1bis впервые, то возможна ситуация, когда ZX Spectrum перестает работать или зависает после перехода в состояние Active интерфейса. Помимо плохого контакта в разъеме расширения ZX Spectrum, причина может быть в том, что была повреждена находящаяся на плате интерфейса энергонезависимая память. При наличии такой проблемы нажмите кнопку управления на время больше 2.5 секунды, что должно исправить ситуацию. Если же этого не произошло, то значит операционная система интерфейса была полностью уничтожена (например, из-за облучения рентгеном на таможне). Операционную систему нужно перезагрузить путем выполнения команды LOAD "" и проигрыванием файла загрузчика LD5.WAV на любом проигрывателе, подключенном к коннектору EAR компьютера ZX Spectrum. При этом интерфейс должен быть в состоянии ON Inactive, и подключен через USB к компьютеру-серверу (на сервере должна работать утилита сервера ZXS).

Интерфейс Interface 1bis сам может работать как источник звука, если к нему подключен подходящий кабель [7]. Запустите команды: OUT 159,243: LOAD "", когда интерфейс находится в режиме ON inactive - это восстановит операционную систему проигрыванием программы LD5.ZZP, которая сохранена на карте SD, как звуковой сигнал, на вход EAR ZX Spectrum.

После восстановления операционной системы интерфейса нужно выполнить команды extended BASIC (расширенный Бейсик): FORMAT 0 и FORMAT !0. Всякий раз при замене карты microSD требуется её идентификация путем запуска команды extended BASIC: FORMAT 0.

[Extended BASIC]

В этом разделе приведена ограниченная информация по расширенному Бейсику (Extended BASIC), которая поможет запустить в работу Interface 1bis. Подразумевается, что пользователь имеет некоторое знакомство с оригинальным Extended BASIC фирменного интерфейса "ZX Interface 1". Полное руководство доступно на сайте "Interface 1bis" [3].

Устройства (device). Interface 1bis может получить доступ к трем разным устройствам хранения:

Microdrive device: "m", при этом как носитель данных используется карта microSD.
Server device: "v", в качестве носителя данных используется дисковое пространство сервера.
RAM drive device: "r", если установлена опциональная микросхема ОЗУ (serial SRAM).

Каналы (channel). Каналом называется логический источник или место назначения данных, наподобие какого-нибудь файла на устройстве хранения. Например, команда:

LOAD *"m";4;"screen" SCREEN$

задает файл "screen" на логическом приводе (logical drive) 4 устройства Microdrive. "m" работает как входной канал для загрузки дампа экрана. Другая команда:

OPEN#5;"v";1;"list"

связывает поток номер 5 с каналом M-типа, определенным как файл "list" из текущей директории устройства сервера (Server device обозначается как "v").

M-каналы предоставляют буферизованный последовательный доступ к файлу, что можно использовать для любых устройств хранения Microdrive: "m", Server: "v" или RAM drive: "r".

Потоки (stream) могут быть открыты для канала 'B', когда к коннекторам джойстика или мыши подключен подходящий кабель []. Реализованы только операторы FORMAT и OPEN#, за которыми следуют операторы PRINT#, INKEY$# и INPUT#, в то время как операторы LOAD, SAVE, VERIFY и MERGE не реализованы.

Синтаксис аббревиатур. Поскольку "номер диска" (drive number) не имеет значения для устройств "v" и "r", к ним можно осуществлять доступ с использованием символов:

! вместо *"r";< drive > (что совместимо с синтаксисом 128k BASIC) и

$ вместо *"v";< drive >, как в: CAT $; "*.t", чтобы получить список всех файлов tape текущей директории сервера.

Когда "устройство" (device) или "номер диска" (drive number) указаны в команде, то они становятся "текущими", и могут быть опущены в последующих командах. Таким образом, после:

CAT "m";7

файл screen1 дампа экрана может быть загружен с диска 7 устройства "m" следующим сокращенным синтаксисом команды:

LOAD ;"screen1.s"

Указание "drive number" или использование начальной звездочки *, за которым не идет буква типа устройства, меняет текущее устройство на "m". Так что после CAT $ команда

LOAD ;"Test"

загрузит программу Test с сервера, но команда

LOAD *;"Test"

загрузит программу с тем же именем с текущего устройства карты SD, или

LOAD 3;"Test"

загрузит её с диска 3 карты SD.

Типы файлов. Реализованы следующие типы файлов:

Буква Описание Расширение файла
P Программа на языке BASIC (сокращение от Program). .ZZP
N Числовой массив (сокращение от Number array). .ZZN
A Массив строк (сокращение от ASCII). .ZZA
C Блок CODE (двоичные данные исполняемого кода). .ZZC
F Файл PRINT. .ZZF
E Текстовый файл. .ZZE
K Файл бэкапа. .ZZK
B Двоичный файл (сокращение от Binary). .ZZB
S Дамп экрана (сокращение от Screen dump). .SCR
X Файл ZX Tape. .TZX
T Файл Tape. .TAP
Z Снапшот, образ памяти (snapshot). .Z80

Имена файлов. Имена файлов чувствительны к регистру символов, и им может предшествовать путь. Для устройств "m" и "r" имеют значение только первые 10 символов имени. Следующие примеры укажут файл Program1, находящийся в:

"Program1" текущей директории
"../Program1" родительской директории по отношению к текущей директории
"/Program1" корневой директории
"subdir/program1" в подкаталоге subdir текущей директории
"../dir/Program1" в подкаталоге dir родительской директории
"/folder/program1" в подкаталоге folder корневой директории.

Имена файлов могут содержать групповые символы (так называемые wildcards): ? и *, что означает "любой символ" и "любое количество любых символов" соответственно.

Имена файлов могут также содержать один символ в конце, означающий тип файла (type literal), с точкой в позиции 5.3, что добавляется к имени файла как расширение:

"Game1.t" обозначает файл tape
"list.f" обозначает файл PRINT

Указание расширения файла имеет значение только в некоторых специальных ситуациях, в основном для файлов эмулятора, или когда целевая директория содержит файлы с одинаковыми именами, но разных типов.

Директории. Имя, оканчивающееся на символ слеша / обозначает директорию (или каталог, папку). С директориями можно выполнять следующие операции:

• Создание директории с помощью команды SAVE. Например, команда

SAVE 2;"newdir/"

создает новую поддиректорию newdir в текущей директории диска 2.

• Смена текущей директории с помощью команды LOAD. Например, команда

LOAD $;"f:/games/"

сделает текущей директорией папку games на диске f: сервера.

• Удаление директории с использованием команды ERASE:

ERASE 1;"/temp/empty/"

Этот пример удалит подкаталог empty из директории temp диска 1. Могут быть удалена только пустая директория, которая при этом не является текущей.

Повторяющиеся команды. Команды ERASE и MOVE действуют для всех файлов, которые будут соответствовать указанному в команде имени, что отличает их от других команд, которые работают только с первым совпавшим файлом.

Если текущая директория содержит как файл программы BASIC с именем test, так и файл типа tape с таким же именем, то команда:

ERASE 1;"test"

удалит оба этих файла. Если же нужно удалить только BASIC-программу, то нужно указать тип файла с помощью расширения имени:

ERASE 1;"test.p"

Подобным образом команда:

MOVE;"t*" AT;"s*"

поменяет на t начальную букву в именах всех файлов, которые находятся в директории.

Файлы эмулятора. Ввод с ленты (input tape) или вывод на ленту (output tape) назначен использованием операторов LOAD или SAVE соответственно, при этом явно указывается тип файла с расширением .t. Команда:

LOAD 12;"/games/manicmin.t"

назначит файл manicmin в директории games диска 12 в качестве "input tape" (т. е. файла, для которого будет эмулирована загрузка с ленты). После этого игру можно загрузить выдачей команды:

LOAD ""

Альтернативно расширение .T (в расширении использована заглавная буква T) может быть применено для назначения "input tape" и выполнения эквивалента оператора NEW, за которым следует LOAD "", в одной команде:

LOAD 12;"/games/manicmin.T"

Назначения для "input tape" и "output tape" останутся действительными, пока "input tape" не будет прочитан до конца, размер "output tape" превысит 16 мегабайт или tape-файлы будут явно переназначены через LOAD или соответственно командой SAVE с опцией STOP. Т. е. команда:

SAVE STOP

"закроет" output tape.

Помимо файлов tape (.TAP, файлы, эмулирующую обычную ленту), можно в качестве input tape также назначить файлы ZX Tape (.TZX), когда используется расширение файлов .x.

Чтобы создать снапшот версии 1.45 48k, должен быть назначен новый файл оператором SAVE с явным указанием типа файла с помощью расширения .z. Команда:

SAVE 1;"/temp/snap.z"

создаст snap-файл в директории temp, куда будет сохранен файл, когда сработает сигнал NMI после нажатия кнопки на время меньше 0.5 секунд, после чего назначение соответствующего файла будет отменено для снапшота, за исключением случая, когда клавиша Caps Shift ужеоэтвается, пока не перестанет мигать бордюр.

Снапшот версии 3.05 128k может быть создан указанием имени файла с расширением .Z (заглавная буква).

Снапшоты можно загрузить оператором LOAD с явным указанием типа файла через расширение:

LOAD 12;"/games/monty.z"

Эта команда загрузит снапшот monty из директории games диска 12. При использовании типа Z (заглавная) произойдет переключение Interface 1bis в состояние ON Inactive после загрузки снапшота.

Загрузка (Load), сохранение (save) или проверка (verify) дампов экрана (screen dump) также требует явного указания типа файла через расширение .s:

LOAD 1;"scrn.s"

[Использование мыши]

Мышь должна быть подключена только когда на интерфейс еще не подано питание. Причина этому - особенность мыши PS/2, а не интерфейса. При включении питания, и только тогда, микроконтроллер интерфейса проверит наличие подключения мыши и включит светодиод M, если мышь найдена.

Состояния мыши. Состояние мыши показывается светодиодом M:

- ВЫКЛючен: мышь не подключена или запрещена
- ВКЛючен: мышь разрешена как мышь Kempston
- Мерцание: мышь разрешена как джойстик Kempston. Светодиод мерцает на половине частоты опроса мыши.

Когда мышь разрешена, порт джойстика запрещен, и наоборот, когда мышь запрещена, то джойстик разрешен.

Мышь может быть запрещена нажатием двух её кнопок одновременно. Когда мышь запрещена, она может быть разрешена как:

- мышь Kempston, путем нажатия правой кнопки, или как
- джойстик Kempston, путем нажатия левой кнопки.

Режимы мыши. Мышь по умолчанию разрешена в оконном режиме (windowed mode), в котором сообщаемые координаты остаются в пределах она конфигурируемого размера. Но мышь также может работать как мышь Kempston в стандартном режиме (legacy mode), когда координаты перескакивают в 0 при пересечении границы 255, и наоборот.

Можно использовать команду CAT 0, чтобы поменять режим мыши для:

- legacy mode: CAT 0; "ml"
- windowed mode: CAT 0; "mw"

[Личные замечания]

Почему я остановил свой выбор на Interface 1bis, несмотря на наличие альтернатив? ИМХО, вот список явных преимуществ этого интерфейса:

1. Все в одном - Interface 1bis предоставляет самый полный набор функций по сравнению с конкурентами, так что к разъему расширения скорее всего ничего больше подключать не понадобится.
2. Открытая архитектура - опубликована как аппаратура, так и исходный код программного обеспечения.
3. Вместе с интерфейсом прилагается карта microSD с большим набором игр и программ [6].

Замеченные недостатки Interface 1bis. Их немного:

1. Светодиоды все одного цвета - красные. Лучше, если бы их сделали разных цветов, было бы проще ориентироваться.
2. Данные, записанные на карту, имеют отличающийся от FAT формат, т. е. карту нельзя читать и записывать традиционными методами (Проводником или другими менеджерами файлов Windows). Нет удобного файлового менеджера для карты.
3. Сервисное программное обеспечение работает только под Windows. Не очень удобно написана утилита для работы с картой памяти Logical Disk Copier (установщик для неё LDC_setup), потому что она имеет консольный интерфейс.

[Ссылки]

1. Documents IF1bisGetStart.pdf site:sites.google.com.
2. Сборка Harlequin rev. G.
3. IF1bisOpSys.pdf site:sites.google.com.
4. Interface 1bis для ZX Spectrum.
5. IF1bis: Game Browser / Loader.
6. 160922IF1bis-microSD.imgc - образ карты microSD (сделанный утилитой HDD Raw Copy Tool site:hddguru.com) с утилитой GBL и логическими дисками, заполненными различными играми ZX Spectrum.
7. Звуковой порт вывода tape-файлов Interface 1bis.