Статья:

КРОССПЛАТФОРМЕННАЯ ГРАФИЧЕСКАЯ ПАНЕЛЬ УПРАВЛЕНИЯ ДЛЯ ЭМУЛЯТОРОВ ИСТОРИЧЕСКИХ КОМПЬЮТЕРОВ SIMH

Журнал: Научный журнал «Студенческий форум» выпуск №27(378)

Рубрика: Технические науки

Выходные данные
Воробьёв В.А. КРОССПЛАТФОРМЕННАЯ ГРАФИЧЕСКАЯ ПАНЕЛЬ УПРАВЛЕНИЯ ДЛЯ ЭМУЛЯТОРОВ ИСТОРИЧЕСКИХ КОМПЬЮТЕРОВ SIMH // Студенческий форум: электрон. научн. журн. 2026. № 27(378). URL: https://nauchforum.ru/journal/stud/378/189370 (дата обращения: 20.08.2026).
Журнал опубликован
Мне нравится
на печатьскачать .pdfподелиться

КРОССПЛАТФОРМЕННАЯ ГРАФИЧЕСКАЯ ПАНЕЛЬ УПРАВЛЕНИЯ ДЛЯ ЭМУЛЯТОРОВ ИСТОРИЧЕСКИХ КОМПЬЮТЕРОВ SIMH

Воробьёв Василий Антонович
студент, Владивостокский государственный университет, РФ, г. Владивосток
Васильев Борис Константинович
научный руководитель, канд. экон. наук, доц., Владивостокский государственный университет, РФ, г. Владивосток

 

Аннотация. В статье рассматривается разработка кроссплатформенного графического приложения, воспроизводящего передние панели исторических компьютеров при работе с произвольным эмулятором SIMH через стандартный поток ввода-вывода. Предложены трёхуровневая архитектура с однонаправленным потоком данных и полностью декларативная подсистема конфигурации на основе JSON, позволяющая добавлять новые машины без изменения кода. Универсальность решения подтверждена поддержкой десяти машин разных архитектур; приведены результаты тестирования и технико-экономического обоснования.

Abstract. The paper deals with the development of a cross-platform graphical application that reproduces the front panels of historical computers while working with any SIMH emulator via the standard I/O stream. A three-tier architecture with a unidirectional data flow and a fully declarative JSON-based configuration subsystem are proposed, allowing new machines to be added without changing the code. The universality of the solution is confirmed by supporting ten machines of different architectures; the results of testing and a feasibility study are presented.

 

Ключевые слова: SIMH, эмулятор, передняя панель, PyQt5, кроссплатформенное приложение, декларативная конфигурация, исторические компьютеры, архитектура ПО.

Keywords: SIMH, emulator, front panel, PyQt5, cross-platform application, declarative configuration, historical computers, software architecture.

 

Введение

Классические вычислительные системы — DEC PDP-11, VAX, PDP-8, Altair 8800 — стали фундаментом для операционных систем семейства Unix, языка C и целого поколения программных решений. Сегодня единственным практическим способом работы с ними остаётся программная эмуляция. Наиболее известный инструмент в этой области — проект SIMH, воспроизводящий десятки исторических машин. Однако его консольный интерфейс с приглашением sim> лаконичен и не передаёт выразительности аппаратных передних панелей, которые в реальном времени отображали состояние процессора, регистров и шин, делая архитектуру машины наглядной и осязаемой для обучающегося.

Анализ существующих решений выявил незанятую нишу: отсутствует кроссплатформенный инструмент, одновременно объединяющий визуальную панель управления, поддержку нескольких машин, единый конфигурационный файл и встроенный терминал SIMH. Имеющиеся аналоги либо требуют специализированного оборудования, либо привязаны к одной конкретной машине, либо вовсе не визуализируют панель. Целью работы является разработка кроссплатформенного графического приложения с интерфейсом, визуально и функционально приближённым к физическим передним панелям исторических компьютеров, работающего с произвольным эмулятором SIMH через стандартный поток ввода-вывода.

Архитектура и технологии разработки

В основу приложения положена трёхуровневая архитектура со строгим разделением ответственности. Уровень интерфейса, реализованный на PyQt5, отвечает только за отображение и обработку событий: виджеты взаимодействуют через механизм сигналов и слотов, а главное окно координирует их работу, не содержа бизнес-логики. Уровень ядра сосредотачивает всю логику — класс SIMHController управляет жизненным циклом дочернего процесса, а ConfigLoader изолирует работу с файлами и JSON. Внешним уровнем выступает сам эмулятор SIMH — исполняемый файл на языке C, запускаемый как дочерний процесс операционной системы. Связь с ним организована исключительно через каналы subprocess.PIPE, благодаря чему сбой эмулятора не приводит к аварийному завершению графической оболочки.

Поток данных однонаправлен: команды идут «вниз» (интерфейс → ядро → стандартный ввод эмулятора), а вывод поднимается «вверх» (стандартный вывод → фоновый поток → очередь → сигнал Qt → интерфейс). В качестве языка разработки выбран Python 3 — за высокую скорость разработки, кроссплатформенность и удобное управление процессами через модуль subprocess; вычислительной производительности достаточно, поскольку основную нагрузку несёт сам эмулятор. Фреймворк PyQt5 обеспечивает низкоуровневую отрисовку виджетов средствами QPainter, слабую связанность компонентов через сигналы и слоты и нативный внешний вид на целевых операционных системах. Стек дополняют модули threading и queue (асинхронное чтение вывода без блокировки интерфейса), json (декларативные конфигурации), PyInstaller (сборка в единый исполняемый файл) и система контроля версий Git.

Подсистема конфигурации

Ключевым решением, обеспечивающим универсальность панели, является полностью декларативная подсистема конфигурации, отделённая от программного кода. Добавление новой машины сводится к редактированию JSON-файлов и не требует написания ни одной строки кода. Файл simh_config.json описывает список доступных эмуляторов: имя машины, путь к исполняемому файлу и параметры командной строки. Файл panel_config.json задаёт состав панели для каждой машины в виде иерархии «машина → секции → виджеты», где для каждого виджета указываются тип, идентификатор, подпись, цвет и привязанная команда SIMH.

Реализованы шесть типов виджетов — светодиодный индикатор, тумблер, семисегментный дисплей, кнопка, регистр индикаторов и регистр переключателей, — которых достаточно для воспроизведения панелей машин разных архитектур. Построение интерфейса выполнено по паттерну «Стратегия»: метод-диспетчер _create_widget() в классе UniversalPanel применяет единую логику сборки к различным наборам виджетов в зависимости от выбранной машины. Наряду со «Стратегией» в приложении задействованы паттерны «Наблюдатель» (сигналы и слоты), «Фасад» (класс SIMHController скрывает работу с процессами, потоками и очередью за простым интерфейсом) и «Объект-значение» (неизменяемые словари конфигурации).

Результаты и тестирование

Итоговое приложение воспроизводит переднюю панель DEC PDP-11/70 со встроенным терминалом sim> в тёмной теме. Панель разделена на секции состояния процессора, регистров адреса и данных, регистра переключателей и управления; кнопки HALT, CONT, START, BOOT, EXAM и DEP привязаны к соответствующим командам эмулятора, а адрес из переключательного регистра подставляется в восьмеричной форме. Практическим подтверждением универсальности стало расширение числа поддерживаемых машин с четырёх до десяти исключительно правкой конфигурации, без изменения кода: помимо PDP-11/70 добавлены PDP-8/I, Altair 8800, VAX-11/780, PDP-1, PDP-10 (KA10), Data General Nova, IBM 1401, HP 2100 и Honeywell H316. Все шесть новых профилей собраны имеющейся библиотекой виджетов — суммарно около 280 графических элементов.

Функциональное тестирование по 16 сценариям, включая негативные (неверный путь, повреждённая конфигурация, внешнее завершение процесса), пройдено полностью и покрыло все восемь требований технического задания. Достигнутые значения ключевых метрик продукта приведены в таблице 1.

Таблица 1.

Итоговые метрики продукта

Показатель

Цель

Факт

Время запуска приложения

≤ 3 с

≈ 1,5 с

Поддерживаемых машин

≥ 10

10

Добавление машины без кода

да

только JSON

Внешние зависимости

≤ 1

1 (PyQt5)

Кроссплатформенность

3 ОС

Windows / macOS / Linux

Доля пройденных тестов

100 %

100 % (16 из 16)

 

Технико-экономическое обоснование подтвердило целесообразность разработки. Совокупные затраты составили около 308 тыс. рублей. Экономический эффект складывается из единовременной экономии порядка 300 тыс. рублей за счёт отказа от аппаратных реплик панелей (аналогичных PiDP-11) для учебного класса на 12 мест и ежегодной экономии около 29 тыс. рублей рабочего времени преподавателя. Поскольку программное решение свободно распространяется и запускается на имеющихся компьютерах, стоимость дополнительных рабочих мест сводится к нулю, а проект окупается уже при первом развёртывании в учебном классе.

Заключение

Цель работы достигнута: разработано кроссплатформенное графическое приложение, приближающее работу с эмуляторами SIMH к взаимодействию с физическими передними панелями исторических компьютеров. Строгое трёхуровневое разделение ответственности и однонаправленный поток данных обеспечили устойчивость оболочки к сбоям эмулятора, а декларативная конфигурация — расширяемость без изменения кода, подтверждённую поддержкой десяти машин разных архитектур. Полное прохождение тестов и положительная технико-экономическая оценка свидетельствуют о практической применимости решения в учебном процессе. Направлениями дальнейшего развития являются добавление новых профилей машин, расширение библиотеки виджетов и интеграция средств интерактивной визуализации внутреннего состояния процессора.

 

Список литературы:
1. Прохоренок, Н. А. Python 3 и PyQt 5. Разработка приложений / Н. А. Прохоренок, В. А. Дронов. — СПб.: БХВ-Петербург, 2021. — 832 с.
2. Саммерфилд, М. Программирование на Python 3. Подробное руководство. — СПб.: Символ-Плюс, 2021. — 608 с.
3. Гамма, Э. Приёмы объектно-ориентированного проектирования. Паттерны проектирования / Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес. — СПб.: Питер, 2020. — 448 с.
4. Мартин, Р. Чистая архитектура. Искусство разработки программного обеспечения. — СПб.: Питер, 2021. — 352 с.
5. Таненбаум, Э. Архитектура компьютера / Э. Таненбаум, Т. Остин. — 6-е изд. — СПб.: Питер, 2022. — 816 с.
6. Bell, C. G. Computer Engineering: A DEC View of Hardware Systems Design / C. G. Bell, J. C. Mudge, J. E. McNamara. — Bedford: Digital Press, 1978. — 585 p.
7. SIMH: The Computer History Simulation Project [Электронный ресурс]. — URL: http://simh.trailing-edge.com (дата обращения: 09.07.2026).
8. Qt Documentation. QPainter Class [Электронный ресурс]. — URL: https://doc.qt.io (дата обращения: 09.07.2026).