Opus Discovery (1)

Раз уж мы в дисковом журнале, можно было бы взглянуть на какую‑нибудь дисковую систему. Ну и спокойно — сразу на одну из первых, которые к ZX Spectrum можно было купить. Потому что даже несмотря на возраст она предлагает довольно интересные возможности использования.

Кто, когда, что и за сколько?

Фирма Opus Suplies Ltd. начала продавать Opus Discovery где‑то в начале 1985 года по цене 199,95 GBP за однодисковую и 329,95 GBP за двухдисковую систему. Дисководы были 3,5", односторонние с низкой плотностью записи, 40 дорожек, 180 кБ доступной ёмкости после форматирования. Вся система поставлялась в увесистой жестяной коробке, которая снизу прикручивалась к Spectrum.

Помимо самих дискет система включает Kempston joystick, параллельный порт, системную шину (тут, правда, отсутствует сигнал NMI), чёрно‑белый видеовыход (на самом деле это сигнал luma (Y)), блок питания (через шину питался и сам Spectrum) и сетевой выключатель. Никакой кнопки NMI или SNAP система не содержит. Opus Discovery был на рынке примерно два года, и по оценкам продано около 15 000 штук. Opus Suplies Ltd. затем переориентировалась на IBM PC‑совместимые компьютеры, и свободных мощностей на дальнейший выпуск дисковой системы для Spectrum у них не осталось.

Хотя два года коммерческой жизни — немного, Opus Discovery прошёл своё развитие. Операционная система сначала появилась в версии 1.31A как часть Opus Spectra disk interface, который продавался примерно с августа 1984 по февраль 1985. Первая версия системы уже в Opus Discovery была 2.1; её сменила версия 2.2 после появления ZX Spectrum 128k и принесла совместимость со 128 BASIC. Интересна ROM 2.28 1990 года, которая добавляет новые команды вроде расширенного CAT, двухбайтового POKE и тому подобного. Последняя версия — 2.31, также обозначаемая QuickDOS. Она переработала некоторые рутины и изменила организацию секторов и дорожек (skew), заметно ускорив работу с дискетой (при этом оставаясь на 100% совместимой с исходным форматом дискет).

Аппаратура

Дисковая часть построена на контроллере WD 1770 и умеет обслуживать механики с одинарной и двойной плотностью записи. Операционная система лежит в ROM (2764) и занимает 8 кБ. Дисковый блок изначально содержал пустую панельку под 2 кБ RAM (6116), в которую (если установлена) система копирует таблицы из ROM и конфигурацию дисков, так что переписыванием её можно подстраивать. RAM нужна, если хочется использовать механики иные, чем исходные (SS SD).

Интересен параллельный порт, реализованный через PIA (MC)6821. Он от Motorola и изначально проектировался как один из периферийных чипов для процессора 6800. Содержит 20 линий, которые можно организовать либо как два 8‑битных порта ввода‑вывода, либо как 16 независимых универсальных линий ввода‑вывода и четыре управляющих сигнала.

Стандартная система позволяет подключить две дисковые механики в любой комбинации 3,5"/5,25", SS/DS, SD/DD. Позже появились модификации на подключение до четырёх механик, и более поздние версии ROM это прямо поддерживали. Появилась и модификация на дополнительные 2 кБ RAM — система её, впрочем, не видит, так что польза сомнительна.

Система изначально была совместима с 48k‑моделями Spectrum, а в случае Spectrum 128k — только в режиме USR0. Апгрейд ROM, однако, позволил работать и в 128 BASIC и даже переключаться в 48k BASIC и обратно. Совместимость на этом заканчивается у моделей +2A/B/+3.

Софт

Как я уже упоминал, система лежит в ROM и занимает 8 кБ. Помимо собственно работы с диском она содержит рутины для работы с RAM‑диском, каналами и расширяет синтаксис некоторых других команд. Собственных команд не использует — всегда только те, что уже есть в стандартной ROM ZX Spectrum.

Хотя система содержит максимум 2 физические механики, нумеровать их умеет до 5. На практике это значит, что номер 3 — снова первая механика, а номер 4 — вторая. Эти «виртуальные» механики используются при копировании: перенос файлов, например, с механики номер 1 на механику номер 3 заставляет систему просить смену дискет, и для переноса/копирования используется лишь 1 физическая механика. Номер 5 — RAM‑диск; перед использованием его нужно отформатировать, после чего он ведёт себя как обычная дискета.

Основная черта системы — совместимость с Microdrive (но только) на уровне BASIC:

FORMAT "m";1;"имя дискеты"

CAT 1

LOAD "m";1;"название файла"

И так далее. Синтаксис «словоохотливый», но элегантное решение, если устройств несколько (не забываем: у Interface 1 кроме Microdrive были ещё сеть и последовательный порт).

Разумеется, работает и обязательное:

RUN

при пустой памяти — загружает файл с именем run с дискеты. Команда SAVE не делает VERIFY автоматически — это нужно делать отдельно.

Opus Discovery, однако, предлагает и сокращённый синтаксис, который в свою очередь отдалённо напоминает работу с D40/D80. Загружать можно и так:

LOAD *1;"название файла"

При LOAD и SAVE можно использовать и параллельный порт — и, например, передавать файлы между двумя Spectrum:

LOAD *"b"

Если хотим использовать Kempston joystick, включаем его командой:

FORMAT "j";1

Работают и стримы: управляются командами OPEN # и CLOSE #, их можно перенаправлять на диск или на параллельный порт/принтер. Поддерживается и ZX Printer. Интересная особенность системы — «Random access files». Прямо на диске можно создать двумерный массив заранее заданного размера. После открытия такого файла можно адресовать отдельные элементы напрямую — и не нужно читать или писать всё сразу, как при последовательных файлах. Классические последовательные файлы, впрочем, тоже поддерживаются.

Если скопировать текущую дискету саму на себя, система выполнит дефрагментацию (Compacting):

MOVE "d";1 TO "d";1

Приятно и расширение классического CLS — команда:

CLS # выставляет цвета в исходные, как после включения компьютера.

Не буду описывать всё — мануал свободно доступен; мне скорее хотелось набросать, что у системы действительно богатые возможности использования.

Найдутся, впрочем, и минусы с недостатками. Первый, наверное, — скорость: система рекордов по скорости передачи данных на дискету и с неё не бьёт. Следующий минус — память: как и Microdrive, Opus Discovery использует RAM Spectrum как буфер. Насколько сдвигается BASIC, всегда зависит от формата дискеты — это чуть больше длины одного сектора. Ну и при любой работе с файлами нужно использовать их полное имя: подстановка символов вопросительными знаками или звёздочками не работает.

Формат дискеты

Стандартный формат дискеты, стало быть, 180 кБ. Одна сторона, 40 дорожек, 18 секторов на дорожку, сектор — 256 байт.

Каталог — первый файл на дискете, лежит в четырёх секторах и может содержать максимум 62 записи о файлах. Это, впрочем, можно менять прямо из BASIC: разные форматтеры дискет позволяют задать число секторов, отведённых под каталог.

Если в дисковом блоке есть RAM, система использует её для копирования таблиц переходов (например, на сообщения об ошибках — так можно создать свои) и формата дискеты. Так можно определить формат какой угодно: разное число дорожек, длину сектора от 128 байт до 1 килобайта, одну или две стороны. Максимальная ёмкость дискеты — 800 кБ.

При чтении дискеты система сама определяет её формат, и пользователю ни о чём заботиться не нужно.

Доступные программы

Слишком много софта специально под Opus Discovery не выходило, но какая‑то поддержка всё же была. Среди программ, продававшихся прямо на дискетах:

  • Astrum+ (ассемблер, умеет собрать несколько файлов с дискеты в одну бинарку)
  • HISOFT DEVPAC (дисковая версия умеет include)
  • HISOFT PASCAL 4
  • Masterfile
  • Omnicalc 2
  • Tasword Plus Two
  • The Writer (дисковая версия умеет mailmerge)

Некоторый софт умел работать с Opus Discovery — либо прямой поддержкой, либо совместимостью с Microdrive. Среди таких программ:

  • The Artist II
  • Animator 1
  • Wordmaster
  • The Last Word

Из‑за сдвига BASIC софт не всегда было просто подогнать: например, VU‑CALC от Psion может загрузить приложенный демо‑файл только если дискета отформатирована на 128‑байтовые секторы.

С 1987 по 1995 годы выходил (на дискете) Opus Discovery Club Newsletter — в нём много технической информации, софт и даже инструкции, как переделать разные игры и программы под работу с дискетой.

Эмуляция

Opus Discovery хорошо эмулируется в эмуляторе FUSE. Там работают создание образов дискет, load и save — и это мой главный инструмент для конверсии софта. Из других эмуляторов поддержка есть, например, в старом Real Spectrum.

Прямо на ZX Spectrum я использую современную реплику Opus Discovery вместе с эмулятором Gotek — и всё работает как надо. Благодаря Gotek не нужно возиться с записью образов дискет на PC: вещи можно копировать прямо на Spectrum с/на USB‑флешку или дискету.

Заключение

Opus Discovery в своё время был наверняка интересным начинанием, которое чуть затерялось в пропасти времени. Он, однако, умел заменить несколько устройств, работать с разными механиками, а для обычного пользователя работа с дискетами была прямолинейной и простой. Хотя в эпоху divIDE дискеты уже теряют смысл, в следующем номере я к Opus Discovery вернусь — и посмотрим, как им управлять из ассемблера.

ellvis/zeroteam

Поделитесь вашим мнением о статье