Pull to refresh

PERQ: оживляем чудо из 1970-х

Level of difficultyMedium
Reading time5 min
Views3.2K

Рассказ про процесс оживления и запуска в эмуляторе еще одной легендарной системы, существовавшей еще до моего рождения и никогда официально не поставлявшейся в СССР. В качестве бонуса будет компилятор Pascal из далеких 70х.

Знакомьтесь:  PERQ, первая коммерческая рабочая станция с графическим интерфейсом. Была создана, продавалась и работала когда меня еще на свете не было.
Знакомьтесь: PERQ, первая коммерческая рабочая станция с графическим интерфейсом. Была создана, продавалась и работала когда меня еще на свете не было.

История

Начнем с небольшого экскурса в историю:

PERQ (также известный как Three Rivers PERQ или ICL PERQ) — компьютерная рабочая станция, выпускавшаяся в начале 1980-х годов.

Рабочая станция была задумана пятью выпускниками и работниками Университета Карнеги-Мэлона, организовавшими в 1974 году компанию Three Rivers Computer Corporation (3RCC). Один из основателей, Брайан Розен, также работал в Xerox PARC над рабочей станцией Dolphin. Проект PERQ был вдохновлен оригинальной рабочей станцией Xerox Alto, и был первой коммерчески выпускаемой персональной рабочей станцией. Прототип был показан на конференции SIGGRAPH в 1979 году. Название «PERQ» происходит от слова «perquisite» (рус. приработок, дополнительный доход).[1]

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

Центральный процессор PERQ был реализован в виде микропрограммируемой дискретной логики, а не микропроцессора. В его основе были раздельные АЛУ 74181 и контроллер адреса Am2910. Процессор PERQ был необычен тем, что имел 20-битные регистры и перезаписываемое хранилище управляющей программы (WCS), что позволяло изменять микропрограмму.[3] Центральный процессор имел цикл выполнения микрокоманд в 170 нс (5,88 МГц).[4]

В СССР такие системы не поставлялись, поэтому увидеть вживую всю эту красоту ни вы ни ваши родители скорее всего не имели возможности.

Небольшое видео тех лет с демонстрацией рабочей станции и ее интерфейса:

А вот так выглядит эмулятор Perq в современном окружении:

Да это снова FreeBSD и C#.
Да это снова FreeBSD и C#.

Для сравнения редкое цветное фото этой рабочей станции в жизни:

И в рекламе тех лет:

Эмулятор

Все началось с того, что я случайно наткнулся на статью об этой удивительной системе, в которой обнаружилось совсем уж невероятное:

Just when I was thinking there was no hope of me ever seeing the Perq software in action, Josh Dersch has created a Perq emulator! Give this guy a medal!

Один из бывших пользователей смог реализовать полноценный эмулятор для столь уникальной системы из 70х!

Правда с битой ссылкой на скачивание и уже немного заброшенный, но это было хоть что-то, от чего можно отталкиваться. Дальнейший поиск вывел на github автора, откуда и был выгружен оригинальный исходный код.

Эмулятор написан на C# под старую 3.5 версию .NET Framework, но еще собирается под современными версиями Windows.

В случае с Linux все не так просто:

хоть у эмулятора и была поддержка сборки с помощью Mono, но активная разработка самого Mono прекращена а его сборки постепенно пропадают из дистрибутивов.

Вместо Mono ныне продвигается .NET Core, разрабатываемый уже самой Microsoft с официальной поддержкой ключевых дистрибутивов Linux и MacOS (помимо Windows).

К большому сожалению .NET Core сильно отличается от предыдущих верcий и имеет проблемы с совместимостью — говоря официально словами самой Microsoft:

ваш проект необходимо портировать с «.NET Framework» на «.NET Core» для нормальной работы и дальнейшего развития.

Так что я взял на себя смелость портировать проект эмулятора на «.NET Core 7», который ныне вполне неплохо собирается и работает даже под FreeBSD — вот до чего прогресс дошел!

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

Все шаги хоть и производились на FreeBSD, но повторимы под любым линуксом, MacOS и даже Windows.

Сборка

Забираем исходный код из репозитория на Github:

git clone https://github.com/alex0x08/PERQemu.git

Затем устанавливаем пакеты с помощью nuget:

cd /opt/src/PERQemu
/opt/app/dotnet/dotnet restore

.NET Core развернут в каталоге /opt/app/dotnet, второй dotnet в пути — непосредственно исполняемый файл, которым запускается как сам эмулятор так и его сборка.

Если все прошло успешно, в самом конце появится сообщение «All projects are up-to-date for restore»:

Теперь запускаем сборку эмулятора:

/opt/app/dotnet/dotnet build

Если сборка прошла удачно, в конце должно быть сообщение «0 Error (s)»:

В каталоге «bin/Debug/net7.0/PERQemu» будет собранный и готовый к использованию эмулятор.

Запуск

Запуск осуществляется следующим образом:

alex@albuquerque:/opt/src/PERQemu/PERQemu % /opt/app/dotnet/dotnet run bin/Debug/net7.0/PERQemu

Запускать необходимо из каталога с проектом эмулятора, указав относительный путь до собранного выше бинарника.

Результат запуска вас немного удивит:

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

Первым делом необходимо загрузить образ диска, вводим:

load harddisk Disks/f1.phd

Затем необходимо запустить эмуляцию:

go

Начнется загрузка и вместо спецэффектов появится первый в мире коммерческий графический интерфейс.

С мышкой.

Вот так выглядит весь процесс запуска эмулятора PERQ записанный на видео:

Разумеется не мог не поделиться с читателями как выглядит самый стильный процесс компиляции из всех что я видел:

Вот весь процесс, записанный на видео и сохраненный для потомков:

Причем в качестве основного языка разработки в Perq выступает Pascal:

Изначальная система команд PERQ похожая на p-Code (называемая Q-Code) была оптимизирована под Паскаль (особенно, расширенный PERQ Pascal). Команды Q-Code могли выполняться со скоростью до 1 млн команд в секунду.[12] Это породило альтернативную расшифровку названия PERQ: Pascal Evaluation Real Quick (по-настоящему быстрое выполнение Паскаля).

Мне удалось найти руководство по разработке от 1984го года для этой редкой системы, в которой в том числе были примеры исходного кода, удивительно похожие на мой школьный Turbo Pascal начала 90х:

А как вам например такое:

RS232 (тот самый «COM‑порт» для пользователей) оказывается имеет очень долгую историю применения — документ выше был напечатан за 20 лет до моих школьных лет, когда мы использовали RS232 и соединение по «нуль модему» для игры в Doom на школьных компьютерах.

Словом, в очередной раз убеждаюсь что у всех известных, очевидных и популярных вещей в ИТ есть долгая и непростая история, про которую мало кто из простых пользователей догадывается.

Если вдруг кто‑то из читателей сталкивался с такими машинами — отзовитесь, очень интересует ваш опыт, без которого с эмулируемой системой можно сделать не очень много.

Это немного отцезурированная и доработанная версия статьи, оригинал которой публиковался на ЛОРе и доступен в нашем блоге.

0x08 Software

Мы небольшая команда ветеранов ИТ‑индустрии, создаем и дорабатываем самое разнообразное программное обеспечение, наш софт автоматизирует бизнес‑процессы на трех континентах, в самых разных отраслях и условиях.

Оживляем давно умершеечиним никогда не работавшее и создаем невозможное — затем рассказываем об этом в своих статьях.

Tags:
Hubs:
+25
Comments16

Articles