В этом посте:

  • скачать эмулятор СМ-1800
  • список команд для программы-монитора
  • как пользоваться пультом ПКУ
  • экранная клавиатура (там много кнопок, но они используются не часто)

Эмулятор СМ-1800

Для того, чтобы работать с миникомпьютером, нужно либо иметь к нему физический доступ, либо использовать программу, которая реализует его поведение на обычном компьютере – эмулятор.

Поскольку настоящие СМ-1800 сегодня не производятся, а выжившие экземпляры очень редки, вместо этого лучше использовать эмулятор.

Используемый в этой серии статей эмулятор можно скачать по этой ссылке. Эта программа © 2002-2005 Смирнов Сергей Андреевич, © 2002-2005 Кафедра САПРиУ, СПбГТИ(ТУ). К сожалению для пользователей Linux и Mac OS, она доступна только для ОС Windows.

Описание программы-эмулятора (из файлов помощи)

Немного истории...

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

В связи с тем, что вычислительные машины, выпущенные ранее 1980 года, морально и физически устарели, возникла необходимость перехода на современные ПК. При этом нельзя недооценивать важность учебных курсов по изучению архитектуры и принципов функционирования вычислительной техники. Используя только современную технику, невозможно охватить все аспекты функционирования вычислительных машин, или посмотреть работу компьютера «изнутри». Эмуляторы призваны решить эту задачу.

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

Фактически, создание программы-эмулятора представляет собой построение абстрактной машины (или устройства) на базе ресурсов более мощных вычислительных машин, по сравнению с эмулируемой.

Вашему вниманию предлагается программный продукт «Эмулятор СМ-1800», написанный специально для проведения лабораторных работ по курсам «Организация вычислительных систем» и «Технические средства ЭВМ» на кафедре САПРиУ.

"Эмулятор СМ-1800" полностью эмулирует работу микроЭВМ СМ-1800 на персональном компьютере класса IBM PC. Внешний вид программы эмулятора выполнен в стиле оригинальной микроЭВМ СМ-1800; панели эмулятора на экране схожи по внешнему виду с передними панелями соответствующих устройств СМ-1800. Это позволяет перейти от работы на оригинальной СМ-1800 к работе с эмулятором без дополнительного обучения.

Эмулятор предназначен для работы студентов 2-го курса (и старше) специальности 220300 "Системы автоматизированного проектирования".

Эмулятор позволяет выполнять лабораторные работы и решать практические задачи по курсам "Технические средства ЭВМ" и "Организация вычислительных систем".

Цикл работ, необходимых для выполнения на эмуляторе, включает как знакомство с характеристиками и назначением основных аппаратных технических средств вычислительной техники, так и получение навыков использования основных программных средств, а именно:

  • Изучение характеристик модуля центрального процессора (МЦП), принципов организации и выполнения процессором машинных команд,
  • Назначение и правила работы с пультом контроля и управления (ПКУ),
  • Изучение характеристик и режимов работы алфавитно-цифрового видеотерминала (ВТА),
  • Изучение принципов организации первого (машинного) уровня интерфейса, обеспечивающего сопряжение ядра вычислительной системы с адаптерами и контроллерами периферийных устройств,
  • Изучение принципов построения ассемблерных программ на примере центрального элемента инструментальной операционной системы СМ-1800 - программы "Монитор" ("MONID 1.3"),
  • Изучение принципов функционирования многоуровневой системы прерываний, внутреннего таймера, и др.

Так как эмулятор - это всё-таки программная имитация процессов, происходящих в реальной машине СМ-1800, то наибольшую практическую пользу можно извлечь при работе с эмулятором, если иметь возможность также дополнительно работать и на реальной СМ-1800.

Немного об СМ-1800...

Партия микроЭВМ СМ-1800 была приобретена кафедрой САПРиУ в 1970-х годах для выполнения лабораторных работ и проведения инженерных расчётов. Для СМ-1800 было выпущено множество программных пакетов. Туда входили и математические программы, расчётные алгоритмы, различные трансляторы, компиляторы, языки программирования, и др.

На сегодняшний день на кафедре остался один (почти) рабочий экземпляр машины. Именно поэтому возникла необходимость написания Эмулятора СМ-1800 в рамках курсового проекта.

На сегодняшний день на Эмуляторе уже проводятся лабораторные работы для студентов 2-го курса. Также возможно получение задания на курсовой проект, связанный с архитектурой ЭВМ, который будет выполняться с помощью Эмулятора СМ-1800.

Немного о реализации...

Программа написана на языке C++ в среде разработки программ Borland C++Builder 6. Исходный текст программы состоит из 17 модулей (файлы .cpp, .h и .dfm). Каждый модуль выполняет определённую системную функцию или эмулирует одно из внутренних устройств СМ-1800.

Эмулируются все устройства СМ-1800:

  • Модуль центрального процессора (МЦП),
  • Микропроцессор КР580ИК80А,
  • Модуль системного контроля,
  • Пульт контроля и управления (ПКУ),
  • Модуль связи с пультом контроля и управления,
  • Выносной пульт с элементами коммутации и индикации,
  • Видеотерминал алфавитно-цифровой (ВТА 2000-30)
  • Клавиатура,
  • Модуль оперативной памяти 64Кб (МОЗ),
  • Модуль теневой памяти 3Кб + системное ПЗУ 2Кб,
  • Порты ввода 00h, 01h, и другие,
  • Порты вывода 00h, 01h, 03h, и другие,
  • Внутрисистемный интерфейс И41,
  • Модуль таймера,
  • Система обработки приоритетных прерываний,

Все устройства эмулируются на аппаратном уровне. Точность эмуляции центрального процессора КР580ИК80А - 1/2 машинного цикла.

Немного об архитектуре СМ-1800...

Центральный процессор и шины СМ-1800 работают на частоте 2 МГц. ЦП имеет 8 внутренних 8-битных регистров, понимает около 250 различных команд, может адресовать 65536 байт оперативной памяти и 256 портов ввода-вывода, имеет 8-уровневую систему приоритетных прерываний.

К внешней шине подключены устройства: дисковод (8 дюймов, ёмкость дискеты 160 Кб :), печатающее устройство (на бесконечной бумаге), и другие.

Вся информация выводится на видеотерминал ВТА в текстовом виде (чёрно-зелёный шрифт, 127 знаков, размер зкрана 80х24 символа). Терминал "общается" с системой через интерфейс И41 (7-битный).

Основной орган управления - стандартная клавиатура СМ-1800 - имеет несколько режимов работы, поддерживает 2 кодировки (JCUKEN/ЙЦУКЕН).

Еще один орган управления - это выносной пульт ПКУ с элементами коммутации и индикации. Он позволяет выполнять ЛЮБЫЕ операции с памятью, портами ввода-вывода, позволяет управлять работой центрального процессора (останавливать, трассировать шины адреса и данных, выполнять машинные инструкции с остановами между циклами ЦП, и т.д.).

Все остальные модули скрыты внутри системного блока СМ-1800 и доступны программно, а именно:

  • Модуль программируемого таймера (минимальный фиксируемый интервал - 1 МГц)
  • Модуль системного контроля,
  • Модуль оперативной памяти 64Кб (МОЗ),
  • Модуль теневой оперативной памяти 3Кб + системное ПЗУ 2Кб,
  • Порты ввода 00h, 01h, и другие,
  • Порты вывода 00h, 01h, 03h, и другие,
  • Система обработки приоритетных прерываний,

В ПЗУ СМ-1800 зашита операционная система СПО МОНИТОР 1.3 (MONID 1.3). Именно она получает управление после запуска СМ-1800.

Интерфейс программы

Чтобы запустить программу, нужно распаковать архив на диск и запустить CM1800.exe. При запуске открывается вот такое окно:

Стартовое окно

Самое большое окно с текстом MONID 1.3 – это текстовый вывод компьютера, который соответствует ЭЛТ-монитору на реальной машине. Под этим окном есть экранная клавиатура, которая позволяет вводить текст в компьютер. Использовать ее не обязательно, потому что ввод с настоящей клавиатуры также передается в эмулятор.

Справа от монитора находится окно пульта контроля и управления, или ПКУ. Он позволяет просмотреть состояние процессора, останавливать и продолжать работу, читать и записывать значения в память и ставить одну точку останова.

Сверху окна находится меню. В нем есть пункты:

  • Файл: позволяет сохранить всю оперативную память эмулятора в файл, или загрузить такой файл в эмулятор.
  • Эмулятор: позволяет перезапустить эмулятор, сбросить состояние отдельных компонентов, а также останавливать и продолжать работу и регулировать скорость выполнения.
  • Показать: открывает или закрывает отдельные окна в эмуляторе (дисплей, ПКУ и клавиатуру), дополнительные окна информации (состояние микропроцессора и дамп памяти), строку состояния (“Режим работы”).
  • Конфигурация: изменяет настройки отображения эмулятора

Программа-монитор

Когда эмулятор запускается или перезапускается, он выполняет программу-монитор. Эта программа принимает команды, которые имеют очень простую форму: выбранная команда обозначается одной буквой, а параметры пишутся сразу после этой буквы в определенном порядке. Если в любой момент вводится буква, которая не ожиданна, то программа-монитор выдает ошибку и начинает заново – после этого нужно писать команду заново.

Если команда принимает адрес, то он должен быть записан в виде 4 шестнадцатиричных цифр, например, DF50. Если команда принимает значение, то это один байт в виде 2 шестнадцатиричных цифр, например, FF.

Доступные команды:

  • G (от goto) – принимает адрес и начинает выполнять код по этому адресу.
  • D (от dump) – принимает два адреса и выводит значения памяти между ними. Пример употребления команды `D`

  • S (от set) – принимает адрес. После этого выводит значение по этому адресу и ожидает ввода значения. Если введено значение, оно заменяет старое значение, и продолжает с следующего адреса. Если нажат пробел, значение не меняется и переходит к следующему адресу. Если нажата любая другая клавиша, запись останавливается и на новой строке выводится финальный адрес и значение по нему.

Пример употребления команды `S`

  • F (от fill) – принимает два адреса и значение. Записывает в каждый адрес между первым и вторым включительно указанное значение.

Пример употребления команды `F`

  • M (от move) – принимает адрес начала, адрес конца и адрес назначения. Копирует отрезок памяти от первого адреса до второго включительно в память по указанному адресу.

Пример употребления команды `M`

  • C (от compare) – принимает адрес начала, адрес конца и адрес назначения. Сравнивает отрезок памяти от первого адреса до второго включительно с памятью по указанному адресу, и для каждого найденного расхождения выводит строчку, описывающую разницу.

Пример употребления команды `C`

  • X – принимает одну букву из ABCDEFHLX. Если принята буква X, выводит текущее состояние регистров процессора. Если принята одна из остальных букв, принимает значение и присваивает его соответствующему регистру (TODO: точно не уверен, что происходит именно это)

Для всех букв, которые не являются командами, программа-монитор выводит ошибку. Для следующих букв этого не происходит, поэтому это также команды, но я не знаю что они делают: T, I, L.

Пульт ПКУ

Справа от основного окна находится пульт ПКУ. Он содержит ряд индикаторов, которые показывают текущее состояние микропроцессора – например, в данный момент происходит чтение или запись в память, ввод или вывод с внешних устройств и т.д. Здесь же есть индикаторы того, какой адрес памяти сейчас затрагивается, и какое значение находится в этом адресе.

Пульт ПКУ можно использовать для того, чтобы вручную изменять состояние компьютера. Это может быть полезно для отладки программ. Однако лично для моего понимания это довольно сложно, и мне часто проще изменять программу, добавляя команды диагностического вывода.

На пульте есть три типа кнопок: кнопки-переключатели для битов, кнопки-переключатели для режимов и кнопки для однократного нажатия. Чтобы различать между ними, можно щелкнуть правой кнопкой мыши на пустом пространстве в окне и выбрать “Циферные переключатели”. Тогда это окно выглядит так:

Пульт ПКУ

Переключатели под областью “данные” вместе представляют собой один байт, который я буду здесь называть d. Переключатели под областью “адрес” вместе представляют собой два байта, которые я назову h и l.

Кнопки делают следующее:

  • “сброс” – сбрасывает состояние процессора в начальное; перезапускает компьютер, не меняя память.
  • “тест” – заставляет процессор перестать выполнять текущий код и вместо этого запускает код по адресу 0x1000 – там располагается программа для проверки чексуммы ПЗУ.
  • “стоп” – переключает процессор в режим ожидания (отправляет сигнал WAIT). Процессор сообщает об успешном входе в этот режим индикатором “ож”. В этом режиме пульт может использоваться для чтения и записи в память вручную.
  • “пуск” – если процессор остановлен (например, сигналом “стоп” или точкой останова), продолжает его выполнение. Если при этом включен сигнал “стоп”, то процессор выполнит один шаг и опять остановится.
  • “ком с пульта” – воспринимает байты d, l и h, в этом порядке, как инструкцию для процессора. На следующем цикле процессор выполнит эту инструкцию.
  • “прер” – переключатель, не знаю что делает.
  • “ост по адр” – переключатель. Если он нажат, то, прежде чем процессор выполнит инструкцию по адресу hl, он остановится (иными словами, включает точку останова по адресу). Когда он остановится, он перейдет в режим ожидания, и выполнение можно продолжить, нажав кнопку “пуск”.

Область “Прямой доступ” позволяет менять состояние памяти. В ней есть следующие кнопки:

  • “вп” – выполнить действие, заданное остальными кнопками.
  • “зх” – переключатель, не знаю что делает. Должен быть нажат или в состоянии 1, чтобы работать с памятью.
  • “зу/увв” – переключатель, не знаю что делает. Должен быть нажат или в состоянии “увв”, чтобы работать с памятью.
  • “чт/зап” – переключатель, указывающий, какое действие следует выполнить. Если он в состоянии “чт”, то при выполнении команды пульта лампочки в области “данные” покажут значение в hl. Если он в состоянии “зап”, то при выполнении команды пульта в адрес по hl запишется d, и затем лампочки над областью “данные” покажут значение d.
  • “авт/одн” – если переключатель в состоянии “авт”, то, когда происходит чтение или запись, сначала процессору посылается сигнал BUSRQ, который просит процессор временно отпустить шину данных и адреса. Когда процессор делает это, включается сигнал BUSAK, который отображается на лампочке “зан”. Если переключатель в состоянии “одн”, то этого не происходит.

Клавиатура

У эмулятора есть экранная клавиатура. На ней есть обычные клавиши (но они отличаются от стандартной QWERTY-раскладки, и английские символы вместо этого используют необычную JCUKEN-раскладку). Помимо них, есть набор управляющих клавиш, значение большинства которых мне неизвестно.

Клавиатура

Пользоваться экранной клавиатурой не обязательно – если на вашем компьютере есть русская и английская раскладка, то можно использовать настоящую клавиатуру для ввода в эмулятор.

В этом посте мы рассмотрели основные элементы эмулятора СМ-1800. В следующем посте мы начнем писать программы, которые можно будет запускать на эмуляторе.