Учебный компьютер «Немига ПК 588»

в 0:54, , рубрики: Белоруссия, История ИТ, история компьютеров, СССР, старое железо, метки: , ,

Об этой необычной машине я сам узнал совсем недавно — в ноябре 2012 года обратил внимание на активность в старой теме «Учебный комплекс НЕМИГА» на форуме zx.pk.ru. После этого на протяжении месяца я собирал информацию и изучал эту машинку.

Учебный компьютер «Немига ПК 588»
(Одно из немногих фото Немиги, автор — Вячеслав Савчик, источник.)

НЕМИГА ПК 588 — это персональный компьютер, разработанный в Минском радиотехническом институте (МРТИ, сейчас это БГУИР), на кафедре электронных вычислительных средств, научный руководитель — Александр Александрович Петровский (заведует этой кафедрой и сейчас).

Предполагаю, что первоначально компьютер разрабатывался преподавателями и студентами в качестве научной работы, а затем с тем что получилось вышли на более высокий уровень и было принято решение использовать его в качестве базы для компьютеризации образовательных учреждений Белорусской ССР. Массовое производство учебных вычислительных комплексов «Немига» было налажено на производственном объединении «Калибр», выпускались машины с 1989 года.

Вообще, информации о Немиге очень и очень мало. Само название «Немига» — географическое, это название реки, протекающей через Минск. Поэтому, поиск по слову «Немига» даёт в основном нерелевантные результаты.

В то время (конец 1980-х) остро стояла задача компьютеризации школ, ПТУ и вузов, выпускаемых машин не хватало. Среди учебной компьютерной техники был большой разнобой, при этом 8-разрядные машины (в основном, на 580-м процессоре) были явно слабоваты, а 16-разрядные архитектуры PC — слишком дороги, да и никто ещё не предполагал тогда, что всего через несколько лет «писишки» вытеснят всё остальное и станут фактически стандартом.

Между этими двумя группами машин были ещё 16-разрядные компьютеры архитектуры DEC PDP-11 — ДВК, БК-0010/0011М, УКНЦ. Именно к этой группе и относится Немига. Ряд машин этой архитектуры в СССР выпускался уже давно — начиная с некоторых машин серии СМ ЭВМ (наиболее известная — СМ-4), Электроника-60 и др. На всех PDP-11 использовалась операционная система RT-11, для которой в СССР был сделан ряд адаптаций — ФОДОС, РАФОС, РУДОС. Адаптации в основном создавались для поддержки кириллицы (в кодировке КОИ-8Р) и русификации программ. Множество адаптаций объяснялось тем, что сделаны они были в различных НИИ, относящихся к разным министерствам. Все советские PDP-11-like машины были частично совместимы друг с другом, как на программном уровне (текстовые программы, использующие вызовы RT-11), так и на аппаратном (шина МПИ — аналог Q-Bus). Для RT-11 был неплохой набор программного обеспечения, как с запада (этот поток ограничивался «железным занавесом», но кое-что просачивалось), так и разработанного у нас.

Отдельно стоит сказать о системе команд PDP-11. В отличие от большинства других архитектур (например, по сравнению с тем же Intel 8086), эта система команд — просто сказка. Команда занимает одно слово (16 бит), плюс возможно ещё до двух слов на операнды. Если команда использует операнд (источник или приёмник — не важно), его тип задаётся 6-ю битами: 3 бита на метод доступа и ещё 3 бита на используемый регистр (R0-R7). Любой регистр можно использовать с любой командой. Любой способ адресации можно использовать с любой командой. Поэтому, можно отдельно изучать способы адресации, и отдельно — сами команды. Исключения (недопустимые способы адресации, недопустимые регистры для данной команды) тоже есть, но их очень мало и они вполне логичны.

Ещё одна особенность PDP-11 — это совмещение ввода/вывода с обращением к памяти. В системе команд нет отдельных инструкций для обращения к внешним устройствам. Вместо этого, происходит обращение по определённым адресам памяти; устройство декодирует адрес, и если это «его» адрес, то устройство отвечает на запрос. Такие адреса внешних устройств обычно называются регистрами и размещаются в верхних адресах (170000 и выше — здесь и далее адреса восьмеричные, так принято и так удобно для PDP-11).

Основным носителем в то время были 5-дюймовые дискеты, ёмкостью от 160 до 800 КБ. Напомню, что в то время никаких компьютерных сетей у нас не было, поэтому основной канал распространения программ — доехать/прийти к добрым людям и скопировать дискетку.

Но вернёмся к самой Немиге.

Компьютер состоит из ряда блоков, упакованных в металлические корпуса: корпус процессора (процессорный блок, модуль ОЗУ, контроллер локальной сети, таймер и звукогенератор), корпус накопителей (контроллер НГМД и сами дисководы), клавиатура, монитор.

Число 588 в названии означает комплект микросхем, используемый для центрального процессора. Мы давно привыкли, что процессор — это отдельный чип, исполняющий команды. Но в данном случае вместо цельного чипа мы имеем набор микросхем на плате процессорного блока.

Управляющая память (несколько микросхем ВУ2) содержит микрокоманды. Арифметико-логическое устройство (АЛУ, микросхема ВС2) выполняет вычисления, выполняя микрокоманды из памяти микрокоманд (ВУ2-0001,-0002,-0004). Оркестрацией работы процессора занимается системный контроллер (ВГ1), управляемый микрокомандами из микросхемы ВУ2-0005. Команды расширенной арифметики реализует отдельный арифметический умножитель (ВР2), управляемый микрокодом из ВУ2-0006. Также присутствует контроллер запоминающего устройства (ВГ2) и магистральный приёмо-передатчик (ВА1). Всего в схеме процессора задействовано около десятка микросхем. Процессор реализует систему команд PDP-11, включая команды EIS (MUL, DIV, ASH, ASHC), но исключая команды FIS (операции с плавающей запятой).

До Немиги на основе этого комплекта микросхем выпускался компьютер «Дипломат» (описан в журнале МПСС). Есть ещё микрокалькулятор «Электроника МК-90», также на 588-м комплекте.

Немига располагает 128 КБ оперативной памяти. Но процессор с его 16-разрядной шиной может непосредственно адресовать только 64 КБ. Для обращения ко всему объёму ОЗУ имеется возможность «косвенного» доступа, через регистры косвенной адресации 177570 (адрес) и 177572 (данные). Адрес косвенной адресации получается сдвигом на один разряд вниз обычного адреса «прямой» адресации. После помещения косвенного адреса в регистр 177570, регистр 177572 можно использовать для чтения/записи слова (2 байт) по данному адресу.

Карта памяти выглядит таким образом:
Учебный компьютер «Немига ПК 588»

Экран занимает последние 32 КБ ОЗУ, доступные начиная с косвенного адреса 140000. Видеоконтроллер формирует растр размером 512x312 точек, в котором «полезной» площадью является блок 512x256 точек. Каждые 8 точек растра занимают два соседних байта — каждый байт это отдельный битплан, то есть каждая точка это два бита, лежащие в соседних байтах, что даёт 4 градации яркости на точку.

Знакогенератор содержит символы размером 8x8 точек, при выводе текста между строками оставляют место высотой в два пиксела. Таким образом, экран используется как текстовый в 25 строк.
Учебный компьютер «Немига ПК 588»

Клавиатура Немиги — это блок в отдельном корпусе. Текущие режимы ввода (ЛАТ/РУС, ВЕРХ, ЦИФ/ДОП) хранятся в блоке клавиатуры и не могут быть установлены извне. Код нажатой клавиши, в виде символа в кодировке КОИ-8Р, передаётся в процессорный блок по последовательному каналу.
Раскладка клавиатуры:
Учебный компьютер «Немига ПК 588»

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

Учебный компьютер «Немига ПК 588»

В этот режим всегда можно выйти нажатием УПР+ФСД/СТОП. При этом содержимое всех регистров сохраняется, их даже можно просмотреть командой 'S'. Команда '/' позволяет просмотреть/изменить отдельные ячейки памяти. А команда 'G' восстанавливает регистры и продолжает выполнение прерванной программы с того же места. Остальные команды: 'D' — загрузка с диска, 'N' — загрузка с локальной сети. Нажатие УПР+L очищает экран.

Контроллер дисковода работает с дискетами одинарной плотности — т.е. используется кодирование FM. Ёмкость диска — 459 КБ — 2 стороны по 80 дорожек, сектора по 128 байт, 23 сектора (или меньше) на дорожку. В операционной системе дисководы обслуживает драйвер MD — устройства называются MD0:, MD1: итд., причём двухсторонняя дискета рассматривается как два разных логических диска: MD0 и MD1 это первый физический диск, MD2 и MD3 — второй итд., максимальная ёмкость такого диска — чуть меньше 230 КБ.

Одна из наиболее интересных особенностей Немиги — это эмуляция терминала. На таких машинах как Электроника-60, текстовый терминал — отдельное и довольно сложное внешнее устройство, подключенное к основной машине через последовательный интерфейс ИРПС или шину МПИ. Обмен с терминалом происходит через стандартные регистры 177560/177562 (адрес/данные клавиатуры) и 177564/177566 (адрес/данные терминала). С тем чтобы упростить схему машины, сохранив при этом совместимость, разработчики эмулировали работу терминала. В Немиге по этим адресам находятся не регистры, а ячейки оперативной памяти. Но обращение к ним приводит к вызову прерывания и переходу процессора из обычного режима USER в режим HALT. Обработчик прерывания анализирует причину возникновения прерывания, выполняет действия, требующиеся от терминала (ввод символа с клавиатуры или вывод символа на экран), модифицирует нужным образом эти ячейки памяти, возвращается в режим USER и завершает прерывание. В результате, работа терминала реализуется на том же самом процессоре, но для программы, обращающейся к регистрам терминала, это незаметно, «прозрачно».

Подводя некоторый итог, на мой взгляд, НЕМИГА ПК 588 — весьма интересная машина, со своими особенностями. Жаль что информации о ней очень мало, эта статья могла бы быть ярче и красочнее.

Данное описание конечно во многом неполно, собранную мной информацию можно изучить здесь.
Все полученные мной сведения о Немиге я почерпнул (1) из Технического описания (ТО) к Немиге, (2) дизассемблированием ПЗУ, (3) гуглением и общением с людьми на форуме. Реальной машины у меня нет и пока не предвидится. Свои догадки и предположения я проверял написанием эмулятора Немиги (work in progress).

Автор: nzeemin

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js