Раз уж мы в дисковом журнале, можно было бы взглянуть на какую‑нибудь дисковую систему. Ну и спокойно — сразу на одну из первых, которые к 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
Поделитесь вашим мнением о статье