"О, сколько нам открытий чудных
готовит мир Z80-ых систем."
Процессор Z80 был поистине гениальным, позволившим огромному количеству производителей электроники войти в мир компьютеров со своими вариантами домашних и не только систем. Не стал исключением и немецкий Robotron, выпустивший линейку (а по сути — две независимых) персональных компьютеров KC 85. В неё входили изначальный KC 85/1, получивший продолжение в виде модели KC 87, а также три модели KC85/2...KC 85/4, которые несмотря на название, не были продолжением KC 85/1, а являлись отдельной веткой в развитии и даже производились на другом предприятии — VEB Mikroelektronik Mühlhausen.
Их интересной конструктивной особенностью была заложенная изначально и поддерживаемая модульность конструкции как на уровне аппаратуры, так и программного обеспечения. По сути это означало то, что начав с базовой конфигурации, состоящей из основного блока, клавиатуры и монитора, можно добавлением других блоков и модулей увеличить возможности системы. Но об этом чуть позже. Стоит отметить, что несмотря на 35-летний возраст, у данной системы присутствует довольно внушительная сохранившаяся документация (но, к сожалению, практически вся на немецком).
Все модели построены на базе восточно-германской нелицензированной копии процессора Z80 под названием U880, работающего на частоте 1,75 МГц (в модели KC85/4 частота была незначительно повышена до 1,7735 МГц). Копия по системе команд практически полностью соответствует оригиналу, за исключением некоторых особенностей в выставлении флагов при операции OUTI.
Разъемы передней панели (указано для модели KC85/3, в последующей модели индикаторы 4 были объединены в один):
1 — выключатель питания (фактически — запуск с адреса F000H)
2 — индикатор наличия питания
3 — кнопка перезапуска с сохранением содержимого ОЗУ (запуск компьютера с адреса E000H)
4 — индикаторы работы ПЗУ, ОЗУ и видео-ОЗУ
5 — разъем подключения клавиатуры
6 — разъем подключения магнитофона
7 — индикация сигнала с магнитофона
Разъемы задней панели:
10 — слот расширения для подключения других блоков
11 — кабель для подключения ТВ по антенному входу
12 — слот для подключения ТВ через RGB и композитный сигнал
13 — кабель питания
В качестве графического решения использовался экран разрешением 320х256 точек с 16 цветами для переднего плана и 8 цветами — для заднего. Цвет задавался на блок размером 8х4 пикселя (в модели KC 85/4 — заменен на режим, в котором блок цвета был размером 8х1 пиксель). Данный блок пикселей также можно было сделать мигающим.
Устройство отображения стандартно — либо телевизор, либо монитор. Вариантов подключения целых три — антенный выход, композитный и RGB. Качество изображения — от умеренно среднего до очень хорошего. Антенный выход доступен сразу из коробки, остальные варианты требуют использования специального кабеля "TV-RGB — композит" либо "TV-RGB — SCART". В основном использовались черно-белые телевизоры "Роботрон" или "Юность".
К слову, для добавления разъема SCART в телевизоры, в которых таковой разъем отсутствовал изначально, выпускался специальный радиолюбительский комплект. Это существенно поднимало качество изображения, и было особенно полезно при работе, например, в MicroDOS (почему — см.ниже).
В отличие от многих популярных решений клавиатура была внешняя, подключаемая разъемом, аналогичным моно-mini-jack (в модели КС 85/4 заменен на DIN 5). Сама по себе клавиатура, увы, довольно низкого качества с мелкими, иногда заедающими клавишами. Название большинства клавиш понятно без объяснений, кроме, пожалуй, некоторых:
Для записи и чтения информации в первоначальном варианте предполагалось использовать (как часто бывало) кассетный магнитофон со скоростью обмена от 600 до 2400 бод. Причём специально для этой серии компьютеров был выпущен компактный кассетный рекордер LCR-C DATA, с в общем-то так себе характеристиками (частота звука от 200 Гц до 8 КГц, моно, не применим для воспроизведения аудио). В современном варианте для загрузки программ вполне можно использовать смартфон и его выход под наушники.
С добавлением дополнительных блоков D004 становится доступным накопитель на гибких дисках.
Из несколько экзотичных форматов хранения можно отметить запись программ на пластинках (в формате BASICODE — стандартизированной версии BASIC) и даже на компакт-дисках, когда первая дорожка содержала данные для IBM PC, а остальные треки — аудио для других компьютерных систем (Commodore, Atari и даже ZX Spectrum).
Для вывода текста на бумагу возможно было использовать электронную печатающую машинку Erika S3004 производства Robotron, подключенную к компьютеру посредством специального интерфейса IF 6000 (V24/RS232), либо IF 3000 (параллельный Centronics). Вывод символов — посредством лепесткового печатающего механизма, при этом все возможные знаки (около 100 штук) нанесены на диск и пропечатываются через чернильную ленту. Смена шрифта осуществляется путём замены диска.
Кроме того, подключались термопринтер Robotron K6304, матричные принтеры Robotron K6311, K6312, K6313 and K6314, Prasident K6320/K6325, Soemtron K6319 и даже плоттер Robotron K6418 (в Советский Союз поставлялся под названием СМ6415).
Два тоновых генератора с выводом на внешний разъем TV-RGB и встроенный динамик. Лучше чем ничего.
Как уже было отмечено, конструкция компьютера подразумевала расширяемость за счет блоков и модулей. Каждый блок представлял собой коробку размером примерно 380х250х77 мм, которые предполагалось соединять коннекторами снизу вверх.
Минимальный комплект состоял из блока D001, включающего всю электронную начинку, а также два разъема для подключения двух модулей. В дополнение к нему можно было подключить:
Блок D002 (т.н. BUSDRIVER), добавляющий к функционалу ещё 4 разъема для подключения модулей. Всего таких блоков можно подключить (в теории) до 14-х штук, но на практике ограничивались двумя.
блок D004 — по сути состоящий как минимум из двух коробок и содержащих свой собственный процессор U880 с частотой 4 МГц, 64 Кбайта ОЗУ и 8 Кбайт ПЗУ (в одном корпусе) и по одному дисководу гибких дисков в каждом из последующих корпусов. Всего же можно было подключить до 4-х дисководов. Также блок содержал два разъема для подключения модулей расширения и при помощи модулей ОЗУ можно было организовать RAM-диск объемом до 4 Мбайт. Объем дискеты формата 5,25" DD составлял 800 Кбайт.
Поскольку изначально идущая в комплекте клавиатура по удобству явно отставала, в качестве замены предлагалась другая — D005. Кнопки на ней были больше, комфортнее, хотя и без ощутимого нажатия. Плюс к этому, некоторые клавиши располагались на других местах, что требовало некоторого привыкания.
Для соединения модулей между собой предлагалось использование вот такого коннектора, объединявшего выход OUT нижнего блока со входом IN верхнего.
Кстати, наблюдательные могли отметить отсутствие в списке блока с номером D003. Как гласила рекламная брошюра, это был блок для прошивки и стирания EPROM-микросхем, но в серию он не пошёл.
Как несложно подсчитать, в полном обычном наборе компьютер представлял собой башню из 8 корпусов указанных размеров (базовый D001 + два D002 + контроллер D004 + 4 дисковода)! Впрочем, поскольку сами блоки с дисководами подключались к базовому D004 при помощи уже гибких кабелей, башни можно было составить две.
Из наиболее полезных модулей можно отметить следующие:
Модуль | Назначение |
---|---|
M001 | Ввод-вывод цифровых сигналов. Два 8-битных порта с управлением через PIO. |
M003 | Ввод-вывод сигналов по протоколу V24. Два независимых канала для подключения принтера, иного оборудования или соединения компьютеров между собой. |
M006 | ПЗУ с Бейсиком для модели KC85/2 |
M008 | Подключение джойстика |
M010 | Аналогово-цифровой конвертер на 4 канала |
M011 | Дополнительное ОЗУ на 64 Кбайта |
M022 | Дополнительное ОЗУ на 16 Кбайт |
M025 | Пользовательское прошиваемое ПЗУ на 8 Кбайт на четырех микросхемах K573РФ2 советского производства. |
M026 | ПЗУ с языком FORTH. По сути представляет собой модуль M025 с уже прошитыми микросхемами. |
M027 | Ещё один вариант дополнительного ПЗУ с зашитым ассемблером-дизассемблером |
M029 | Цифрово-аналоговый конвертер на два канала по 10 бит. |
M036 | Дополнительное ОЗУ на 128 Кбайт |
Кроме того, сообществом энтузиастов разработаны несколько дополнительных модулей, расширяющих возможности системы:
Модуль | Назначение |
---|---|
M035x4 | Дополнительное ОЗУ на 4 Мбайта на базе SIMM-памяти. Может быть использовано, например, как RAM-диск в блоке D004 |
M031 | Подключение сканера для оцифровки изображений (черно-белого) |
M052 | Настоящий монстр среди модулей! Добавляет в систему поддержку USB-носителей (с возможностью чтения/записи файлов с них) и локальной сети (для передачи файлов по протоколу TFTP). |
Поскольку процессор U880D, как и его оригинал Z80 может адресовать максимум 64 Кбайта памяти, для доступа ко всей памяти используется механизм страниц (или ещё называемых "банками"), когда разные куски памяти подключаются к одному и тому же адресу и переключаются по мере необходимости.
В общем виде для KC85/4 схема распределения памяти выглядит следующим образом:
Адрес | Назначение |
---|---|
0000H-7FFFH | 32 Кбайт ОЗУ пользователя, включая стек, системные прерывания (в моделях 85/2 и 85/3 область 4000H-7FFFH отсутствовала) |
8000H-BFFFH | 64 Кбайта видеопамяти (в модели 85/3 — 16 Кбайт), а также 32 Кбайта памяти пользователя, подключаемых странично (в модели 85/3 — отсутствует) |
C000H-DFFFH | 8 Кбайт ПЗУ с Бейсиком (в модели 85/2 — отсутствует) |
E000H-FFFFH | 8 Кбайт ПЗУ с CAOS |
Также стоит отметить интересную особенность организации видеопамяти.
Начиная с самой первой модели в ряду — KC85/2, экран был цветным, с 16 цветами переднего плана и 8 цветами фона (и дополнительной возможностью мигания пикселями). При этом, подобно ZX Spectrum, цвет задавался не для каждого пикселя, а для блока — 8х4 пикселей. Разрешение при этом было больше, чем у ZX Spectrum примерно в 1,6 раза — 320х256 точек.
Это делило память на 2 области — на так называемую пиксельную (pixel) часть размером 10240 байт и цветовую (color) размером 2560 байт. Все вместе эти части укладывались в 16 КБайт видеопамяти, оставляя ещё место под системные ячейки.
В пиксельной части каждый бит данных отвечал за один пиксель на экране, установка его в 1 окрашивала пиксель в цвет переднего плана, сброс в 0 — в цвет фона. Один байт отвечал за 8 последовательных пикселей, при этом за самый левый из этих пикселей на экране отвечал старший бит, за самый правый пиксель — младший бит.
Далее — пиксельная часть (как и цветовая) делилась на 2 части. Сначала в памяти располагалась левая часть экрана размером 256х256 точек, затем — правая часть экрана размером 64х256. Но даже при этом строки занимали непоследовательное место в памяти, а с шагом в 4 строки. Лучше всего это проиллюстрирует следующая таблица:
писельная часть цветовая часть 0.............255|256......319 0.............255|256......319 ------------------------------ ------------------------------ 0|8000.........801F|A000....A007 A800.........A81F|B000....B007 1|8080.........809F|A080....A087 2|8100.........811F|A100....A107 3|8180.........819F|A180....A187 4|8020.........803F|A020....A027 A820.........A83F|B020.....B027 5|80A0.........80BF|A0A0....A0A7 6|8120.........813F|A120....A127 7|81A0.........81BF|A1A0....A1A7 8|8040.........805F|A040....A047 A840.........A85F|B040.....B047 9|80C0.........80DF|A1C0....A1C7 10|8140.........815F|A140....A147 11|81C0.........81DF|A1C0....A1C7 12|8060.........807F|A060....A067 A860.........A87F|B060.....B067 13|80E0.........80FF|A0E0....A0E7 14|8160.........817F|A160....A167 15|81E0.........81FF|A1E0....A1E7 16|8200.........821F|A008....A00F A880.........A89F|B008.....B00F .................................. ............................... 255|9FE0.........9FFF|A7F8....A7FF AFE0.........AFFF|B1F8.....B1FF
Формат байта цветовой части следующий:
Мне сложно сказать, почему было выбрано такое решение, но полагаю, что это как-то упрощало схемотехнику видеовывода. Вместе с тем, конфликт доступа к видеопамяти между процессором и видеоадаптером никуда не делся и при интенсивном доступе процессора на экране возникают помехи.
Однако даже этого разработчикам показалось мало и в модели КС85/4 организация видеопамяти поменялась! Во-первых, цветовые атрибуты стали задаваться не на блок 8х4 пикселя, а на блок 8х1 пиксель. Это увеличило цветовую часть видеопамяти в 4 раза — до 10240 байт и она вместе с пиксельной перестала влезать в отведенный для видеопамяти участок в 16 Кбайт. Во-вторых, разработчики сделали второй буфер экрана для двойного буферирования. В итоге это вылилось в 4-х страничную организацию видеопамяти, когда страницы 0 и 2 по 10 Кбайт отвечали за пиксельную часть первого и второго буферов экрана, а 1 и 3 (также по 10 Кбайт) — за цветовую.
Одновременно с этим поменялась и адресация пикселей — вместо горизонтальной (хоть и чересстрочной) адресации она стала вертикальной сверху вниз и слева направо. Адреса 8000...80FF адресовали полосу в 8 пикселей шириной и 256 пикселей высотой, 8100...81FF — следующую полосу и т.д.
В конечном результате программы, написанные для моделей KC85/2 и 3 и использующие прямой доступ к видеопамяти, стали несовместимы с моделью KC85/4 и зачастую существовало несколько версий одного и того же ПО! Хотя адресация пикселей на экране стала более понятной.
Кроме того, в KC85/4 появился ещё один видеорежим — т.н. HIRES. Несмотря на название, разрешение в нём осталось то же (320х256 точек), но каждый пиксель теперь мог иметь независимый от соседних пикселей цвет из 4-х цветной палитры (черный, белый, голубой и красный). Однако, видимо, разработчики на этот режим забили сразу и он по большому счёту не поддерживался ни в CAOS, ни в Бейсике. Хотя графическое ПО (написанное, правда, уже сторонними разработчиками) в данном режиме работало. Пример такой картинки приведён слева.
Для вывода символов стандартными средствами используется набор символов, включающий цифры, буквы английского алфавита (заглавные и строчные), знаки препинания, умляуты и небольшое количество спецсимволов. Вывод символов с кодами из области 00H-1FH по факту — как это часто бывало на компьютерах той эпохи — осуществляет некоторые действия (перевод курсора, редактирование текста и очистку экрана) и за их визуальное отображение отвечают коды 80H-9FH. Символы с кодами 20Р-7FH дублируются в область A0H-FFH
После включения управление передаётся ПЗУ с базовым набором команд CAOS (Cassette Aided Operating System), позволяющей включить/отключить разные модули, изменить и просмотреть содержимое памяти, сохранить/прочитать фрагмент памяти на диск и передать управление на определенный адрес.
Начиная с CAOS 4.1 добавились также:
Также при подключении блока дисковода D004 и модулей с ПЗУ FORTH и Ассемблера становится доступен ряд команд, рассчитанных на работу с дискетами: FLOAD, FSAVE, DIR, FORTH (запуск Форта), EDAS (запуск ассемблера).
Данные на ленту сохраняются блоками по 128 байт, при этом корректность каждого блока проверяется независимо друг от друга, что позволяет в случае ошибки чтения не перечитывать всю программу, а только дефектные блоки. Кроме того, у программы может быть установлен адрес автозапуска, причём он может не совпадать с адресом загрузки.
Теоретически, в системе может быть установлено до 60 модулей, используя 14 блоков D002, один базовый блок D001 и один блок дисководов D004. На практике такое не использовалось, поскольку возникали проблемы с прохождением сигналов до далеко расположенных модулей, поэтому ограничивались максимум 2 блоками D002 (всего 10-12 модулей). При этом некоторые модули (в частности — оперативная память в виде страниц) могут располагаться в одних и тех же адресах и иметь разный приоритет. Для доступа к модулю (странице памяти) с более низким приоритетом требуется сначала отключить перекрывающий его модуль с более высоким приоритетом, располагающийся в тех же адресах памяти.
Для того, чтобы каждым модулем в каждом блоке можно было управлять независимо, используется адресация, включающая в себя два значения.
С конфигурированием модуля связано понятие байта структуры (Structure Byte) — однобайтного значения, определяющего, как именно интерпретируется управляющий код. Модули, которые по-разному конфигурируются, имеют разный байт структуры, а также верно и обратное. По сути это — тип модуля. Каждый модуль сообщает свой байт структуры при чтении из адреса, отведенного под слот. Например, модули M026 и M027 (дополнительное ПЗУ), по сути одинаковые и управляемые одинаково, имеют один и тот же байт структуры FBH. Программное обеспечение, знающее варианты байта структуры может управлять как существующими, так и ещё неизвестными модулями. Аналогично, разработчики модулей также могут сделать модули уже совместимыми с существующим ПО, установив для них уже известный байт структуры. Кроме того, ПО, требующее, например, определённое количество памяти, может проверять наличие в системе определённых модулей ОЗУ и взаимодействовать с ними.
Для управления модулями на уровне CAOS используется команда SWITCH. При помощи неё можно включать и отключать модули, конфигурировать их (например, задавать параметры расположения в памяти и выбранные страницы).
В качестве аргументов команда принимает полный номер модуля и управляющий код, принимающий в зависимости от модуля (а точнее — от байта структуры) набор значений.
В общем случае структура управляющего байта следующая:
Например, для модуля 02H (встроенное ПЗУ с Бейсиком):
Для модуля 00H (системное ОЗУ):
Например, для модулей M026 и M027, имеющих байт структуры FBH, управляющий байт может принимать значения:
Для вывода списка установленных в слотах модулей используется команда %MODUL (начиная с CAOS 4.1).
Например, пусть в системе присутствуют модуль M027 (Ассемблер-дизассемблер) в слоте 08 и модуль M036 (128 Кбайт ОЗУ) в слоте 0C. Команда %MODUL в этом случае сообщит о наличии в системе двух модулей с байтами структуры FBH и 78H и управляющим кодом 00 (оба модуля отключены).
В системе при этом включено и доступно ПЗУ Бейсика, о чем и сообщает команда %MENU.
Теперь командой %SWITCH 08 C1 можно включить ПЗУ в слоте 08 и разместить его по адресу C000H. Как теперь показывает команда %MENU, у нас появился ряд дополнительных команд (EDAS, REEDAS, DISASM и т.д.), расположенных в данном ПЗУ.
Выполнив команду %SWITCH 08 00 мы снова отключим модуль с ПЗУ и вернём систему в изначальное состояние.
Теперь немного о расширяемости самой CAOS.
Как можно заметить, при подключении дополнительных модулей, а также при загрузке программ, в меню становятся доступны дополнительные команды (причём даже с параметрами). Достигается это за счет следующей особенности системы. После команд, изменяющих содержимое или конфигурацию памяти, система сканирует доступное ОЗУ на поиск "волшебных" заголовков следующего вида:
Данная структура рассматривается как описание команды (или просто загруженной программы), которую можно выполнить ровно так же, как и системные команды.
Например, добавим в систему команду HELLO, которая при запуске будет выводить фразу "HELLO, HABR!":
Для вывода строки используется вызов системной подпрограммы с параметром 23H (ОSTR). Необходимые параметры задаются при этом прямо в коде — в данном случае, строка для вывода.
Для такой маленькой программы достаточно будет встроенных средств CAOS — команды MODIFY 200, после вызова которой последовательно заносятся шестнадцатеричные коды. Завершается ввод точкой.
Если после этого снова ввести команду %MENU, то список стандартных команд пополнится ещё одной — %HELLO, которая при запуске выводит сообщение HELLO, HABR! и возвращает управление в CAOS.
Первой неотъемлемой частью ПО (начиная с модели KC85/3) помимо самой CAOS стал, конечно, встроенный интерпретатор Бейсик (HC-BASIC). Он представлял собой несколько измененный вариант стандартного языка, включающий:
Для системы с диском производителем была разработана адаптированная версия системы Паскаль (Pascal 880/S), однако сделана она, видимо, была как-то второпях (дорабатывалась уже силами других предприятий) и не до конца оформлена (документация присутствовала только в форме файлов).
В более качественном виде язык Паскаль был представлен в KC-PASCAL, работавшем как в дисковой версии, так и в кассетных версиях для систем K85/2..85/4. Эта версия реализовывала компилятор языка Паскаль в среде, похожей на среду Бейсика. Более того, для ввода текста программы использовалась такая же нумерация строк, как в Бейсике!
Поддерживались простые (Integer, Real, Char, Boolean), массивы и указатели. Присутствовал набор встроенных процедур для ввода-вывода и операций с памятью и даже ключи компиляции. Такой вот "Паскаль на минималках".
Помимо этого существовал также компилятор языка C (HITEC-C), производителем выпускался модуль с ПЗУ Форт и компилятор языка ассемблер для операционной системы MicroDOS.
Дополнительный софт включает:
При подключении блока D004 становилась возможным работа с дисковой операционной системой MicroDOS (вроде как CP/M 2.2 — совместимой, но не на 100%), загружаемой с дискеты. При этом возможна также мультипроцессорная работа — основной блок при этом работает под управлением CAOS, а блок D004 — под управлением MicroDOS.
Несколько моментов работы в данной ОС:
А вот тут мы переходим к самой трагичной части нашей статьи. Игр под эту систему мало и они, скажем так — слабенького качества. Подавляющая их часть написана в расчёте на кассетную загрузку а значительная часть — вообще на среду Бейсик. При этом почти все они выглядят, увы, как поделки студентов на досуге. Низкое качество изображений, отсутствие разнообразия в сюжетах (по большей части это либо копии Boulder Dash, либо простенькие лабиринты на один экран) и в 99% случаев — только немецкий язык в интерфейсе.
Несмотря на то, что по графическим возможностям KC85/3 (и уж тем более — KC85/4) превосходит тот же ZX Spectum, ряд фатальных недостатков ограничил разработку игрового ПО:
В целом, об играх для КС85 можно судить по следующим скриншотам (взято с сайта https://www.iee.et.tu-dresden.de/~kc-club/):
Наиболее качественной и более-менее играбельной мне показалась только одна — DIGGER, которая несмотря на название, является адаптацией Boulder Dash (маленький землекоп прогрызает ходы и собирает алмазы, стараясь не попасть под камень и избегая местных жителей). Есть хотя бы на что посмотреть и над чем подумать. В остальном же всё очень и очень грустно. Для сравнения, другому региональныму советскому компьютеру (БК-0010/01) удалось за счёт снижения цены (пусть и в ущерб характеристикам) получить гораздо большую аудиторию, что разительно и в лучшую сторону сказалось на качестве и количестве игр для него.
А вот с этим всё обстоит более-менее хорошо. Есть два основных эмулятора, относительно неплохо работающих в Windows 10:
Конструктивно основной модуль состоит из двух соединенных между собой плат — основной и платы подключения модулей, включающей также генератор видеосигналов (на фото не показана, подключается сверху тремя шлейфами). На основной можно заметить сам микропроцессор U880 (слева вверху), три микросхемы ПЗУ под CAOS и Бейсик (справа вверху) и 8 микросхем U6164 (по 8 Кбайт) основного ОЗУ (справа). Слева в третьей и четвертой строке, рядом с зелеными конденсаторами находятся микросхемы ОЗУ видеопамяти.
Для мелкой логики применяются в том числе и советские 555ЛА3 и 555КП5.
Внутренности D004:
Также две платы (основная и подключения модулей).
Представляя из себя довольно интересный вариант реализации модульной архитектуры, компьютеры серии КС85/2… КС85/4 содержали ряд недостатков — в основном, низкую базовую производительность и одноязычную направленность — что сделало их распространение ограниченным одной страной и не позволило получить широкую известность.
За предоставленные фото и руководства автор выражает благодарность:
Статья опубликована на https://habr.com/ru/post/494524/
"Кибер-музей" работает по следующему графику:
ежедневно с 10 до 17,
с 17 до 24 часов - по предварительной записи
Телефоны
+7 (929) 028-03-80, +7 (920) 622-01-84
Адрес
Муром, пл.Крестьянина 6 "В" (см. карту)
expo@museum.computer