Перекодирование информации
Одной из наиболее распространенных задач в составе общего программного обеспечения любой ЭВМ являются программы преобразования данных из числовых форматов в символьные для вывода на устройства отображения и обратно при вводе числовой информации. При этом активно используются команды логических операций и сдвига. Рассмотрим задачу преобразования байта (целого без знака числа) в пару байтов кодов символического кодирования КОИ-7, отражающих содержимое двух тетрад исходного числа в виде символов соответствующих шестнадцатеричных цифр. Пусть исходное число записано в регистре D, а коды К0И-7 для старшей и младшей тетрады нужно получить в регистрах В и С соответственно.
Подпрограмма:
PR: CPI 0АН; сравнение содержимого А с числом: (А)-0АН
JNC M1 ; переход в случае отсутствия заёма на M1 (буквы)
ORI 30H ; формирование кода КОИ-7 арабской цифры
RET ; возврат
М1: ADI 37Н ; формирование кода КОИ-7 букв от А до F
RET ; возврат
Основная программа:
MOV A,D ; в регистр А исходное число
ANI 0F0H ; обнуление младшей тетрады
RAR ;
RAR ; перемещение старший тетрады
RAR ; вправо на место младшей (на 4 разряда)
RAR ;
CALL PR ; вызов подпрограммы преобразования тетрады
MOV B,A ; запись кода символа старшей тетрады
MOV A,D ; в регистр А снова исходное число
ANI 0FH ; очистка старшей тетрады
CALL PR ; вызов подпрограммы преобразования тетрады
MOV C,A ; запись кода символа младшей тетрады
HLT ; останов
Идея алгоритма приведенной выше программы состоит в выделении в подпрограмму задачи преобразования байта, где левая тетрада содержит нули, а число в правой тетраде может быть заменено символом арабской цифры от 0 до 9 или символом латинской буквы от А до F. Из основной программы обращение к подпрограмме осуществляется в первый раз для преобразования левой тетрады исходного числа, а второй раз – для преобразования правой тетрады.
3 Эмулятор микроЭВМ СМ-1800
Постановка задачи эмуляции
Эмуляция включает в себя следующие технические задачи:
1. Разработку иерархической модели эмулируемого устройства,
2. Полную программную реализацию всех модулей и внутренних узлов эмулируемого устройства, включая связи между отдельными модулями,
3. Программную реализацию логических и магистральных потоков данных, проходящих по линиям связи,
4. Реализацию схемы функционирования всего устройства в целом,
5. Реализацию системы мониторинга отдельных физических модулей или всего устройства,
6. Реализацию системы контроля и управления эмулятором.
Эмуляция включает в себя следующие оптимизационные задачи:
1. Соответствие точности и качества эмуляции заданным требованиям,
2. Выбор скорости и качества работы эмулятора, в зависимости от производительности ЭВМ, на которой будет эксплуатироваться эмулятор,
3. Соответствие уровня эмуляции работе, которая будет производиться на эмуляторе. Уровень может быть: функциональный, программный, аппаратный и физический. Естественно, самая качественная эмуляция будет обеспечена, если устройство эмулируется на физическом уровне.
Технические данные
1. Минимальный эмулируемый интервал: 1/2 машинного цикла,
2. Эмулируемые модули:
2.1 Модуль центрального процессора (МЦП),
2.2 Микропроцессор КР580ИК80А[1],
2.3 Модуль системного контроля,
2.4 Пульт контроля и управления (ПКУ),
2.5 Модуль связи с пультом контроля и управления,
2.6 Выносной пульт с элементами коммутации и индикации,
2.7 Видеотерминал алфавитно-цифровой (ВТА 2000-30)
2.8 Клавиатура,
2.9 Модуль оперативной памяти 64Кб (МОЗ),
2.10 Модуль теневой памяти 3Кб, включая системное ПЗУ 2Кб,
2.11 Порты ввода 00h, 01h, и др.
2.12 Порты вывода 00h, 01h, 03h, и др.
2.13 Внутрисистемный интерфейс И41.
2.14 Таймер.
2.15 Система обработки приоритетных прерываний.
3. Скорость работы: ~500000 циклов в секунду,
4. Возможность настройки: есть
4.1 Регулировка яркости экрана ВТА,
4.2 Доступны переключатели, расположенные на задней панели ВТА – фиксированный формат (ФФ) и частичный сдвиг (ЧСВ),
4.3 Реакция эмулятора при обработке несуществующих команд микропроцессора,
4.4 Частота обновления экрана: через 1…9999 циклов,
5. Возможность мониторинга отдельных модулей: есть
5.1 Мониторинг состояния микропроцессора и системных шин,
5.2 Мониторинг дампа памяти с возможностью переключения между основной памятью и теневой памятью, расположенной в модуле центрального процессора.
6. Возможность управления работой эмулятора: есть
6.1 Возможные состояния эмулятора:
Работа с максимальной скоростью (~500000 циклов/сек.),
Работа с фиксированной медленной скоростью (20 циклов/сек.),
Трассировка в пошаговом режиме,
7. Возможность расширения и доработки: есть
Описание программы
Внешний вид программы эмулятора выполнен в стиле оригинальной микроЭВМ СМ-1800; панели эмулятора на экране схожи по внешнему виду с передними панелями соответствующих устройств СМ-1800. Это позволяет перейти от работы на оригинальной СМ-1800 к работе с эмулятором без дополнительного обучения.
Сразу после запуска программы на экране проявляются четыре основных окна: видеотерминал алфавитно-цифровой (ВТА 2000-30), пульт контроля и управления (ПКУ), клавиатура и главное меню. По умолчанию все окна привязаны друг к другу; перемещение по экрану всех трёх окон происходит одновременно при перетаскивании окна главного меню. Назначение пунктов меню приведено ниже:
Главное меню
После названия каждого из пунктов в скобках указана комбинация “горячих» клавиш для быстрого доступа к пункту меню.
Подменю “Файл”.
Пункты “Открыть/сохранить состояние” (Ctrl+Alt+L Ctrl+Alt+S) позволяют сохранить на диске состояние всего эмулятора целиком и, затем, восстановить его в том же виде, для продолжения работы (файл *.cms).
Пункты “Открыть/сохранить дамп памяти” (Alt+L Alt+S) позволяют сохранить слепок оперативной памяти на диске и загрузить сохранённый файл в оперативную память эмулятора (файл *.cmd). Работа производится только с содержимым оперативной памяти модуля МОЗ, сохранение и загрузка содержимого памяти модуля центрального процессора МЦП происходит при запуске эмулятора.
Пункт “Выход” (Alt+F4) завершает работу эмулятора.
Подменю “Эмулятор”.
Позволяет управлять работой эмулятора.
Пункт “Перезапуск эмулятора” (Ctrl+Alt+F12) вызывает полный рестарт и последующую инициализацию приложения.
Пункты “Сброс…” и “Инициализация…” (Ctrl+F8…F12) позволяют повторно проинициализировать отдельные модули СМ-1800 без перезапуска всего эмулятора.
Пункты “Приостановить работу” (F10), “Трассировать шаг” (F11) и “Продолжить работу” (F12) изменяют состояние работы эмулятора. Очень удобно использовать в отладочных целях “горячие” клавиши.
Пункт “Скорость эмуляции” позволяет произвести переключение между максимальной (F8) и медленной (F7) скоростью эмуляции.
Подменю “Показать”.
Позволяет показать/скрыть любую из форм эмулятора (F1…F6).
Пункт “Расположить окна компактно” (Alt+Enter) размещает все окна на экране по умолчанию: одну под другой от левого верхнего угла экрана, для удобства восприятия информации.
Подменю “Лабораторные работы”.
Позволяет перевести эмулятор в один из следующих режимов: выполнение лабораторных работ (Shift+F1…F4), решение задач на языке ассемблера (Shift+F5), или обычный режим работы (Shift+F6).
Подменю “Конфигурация”.
Позволяет включить/отключить привязку отдельных окон на экране (Ctrl+Alt+F1…F4).
Пункт “Настройки” (Alt+F2) позволяет произвести дополнительную настройку эмулятора: реакцию на недокументированные команды микропроцессора, режимы работы ВТА, вид переключателей ПКУ, частоту обновления форм эмулятора, и др. Есть возможность установки значений по умолчанию.
Подменю “О программе”.
Пункт “Помощь” (Ctrl+F1) позволяет получить справку по работе с эмулятором.
Пункт “Эмулятор СМ-1800” (Alt+F1) выводит на экран информацию о программе.
Основные окна
“Видеотерминал алфавитно-цифровой (ВТА)”
Окно представляет собой полную визуальную копию оригинального видеотерминала ВТА 2000-30. Обмен информацией с модулем ВТА производится в стандартной кодировке КОИ-7 (коды 00h…7Fh) через порт ввода 00h и порты вывода 00h и 01h.
“Пульт контроля и управления (ПКУ)”
Окно представляет собой полную визуальную копию оригинального пульта с элементами коммутации и индикации. Используется для просмотра управляющих сигналов микропроцессора и управления аппаратными ресурсами СМ-1800.
“Клавиатура”.
Окно представляет собой полную визуальную копию клавиатуры СМ-1800. Нажатия на клавиши производятся с использованием манипулятора “мышь”. Отдельные клавиши (СПС, УС и ПВТ) обладают триггерным эффектом для эмуляции их удержания. Нажатия почти всех клавиш могут также эмулироваться и с помощью стандартной клавиатуры компьютера (см. приложение 1).
Дополнительные окна
“Состояние микропроцессора”.
В этом окне можно увидеть состояния всех регистров и управляющих сигналов микропроцессора, а также информацию, проходящую по шинам адреса и данных. Состояние окна обновляется в конце каждого цикла микропроцессора.
“Дамп памяти”.
В этом окне отображается содержимое модуля оперативной памяти. Кнопки «Hex» и «Dec» позволяют переключать систему счисления (шестнадцатеричная/десятичная), а кнопка «Теневая память» - просматривать модуль теневой памяти (3Кб). Её содержимое будет отображаться в окне вместо первых трёх килобайт основной оперативной памяти.
“Дизассемблер”.
В этом окне производится расшифровка (дизассемблирование) команд, выполняемых микропроцессором. Обновление окна производится по сигналу M1 выбора кода следующей команды.
Окно настроек эмулятора.
В этом окне отображаются дополнительные настройки эмулятора. Возможно изменение следующих параметров:
1. Действие эмулятора при обработке недокументированных команд микропроцессора - пропустить команду, выполнить команду так, как её выполняет реальный микропроцессор или выдать сообщение об ошибке,
2. Вид переключателей ПКУ – обычный или в виде кнопок с битовой маркировкой,
3. Режимы работы видеотерминала (ВТА): ФФ – включение режима фиксированного формата, ЧСВ – включение режима частичного сдвига строк,
4. Яркость экрана ВТА – изменяется в пределах 0…150%,
5. Количество циклов микропроцессора, после которых эмулятор обновляет экран, – может варьироваться от 1 (скорость работы эмулятора – минимальная) до 9999 (скорость – максимальная). Необходимо подобрать такую частоту обновления, чтобы скорость эмуляции составляла ~500000 циклов/сек.
Есть возможность установки стандартных настроек – кнопка «Стандартные настройки».
Сообщения эмулятора
В нижней части окна видеотерминала находится строка состояния эмулятора. Слева – текущее состояние работы, справа – число циклов, выполняемое эмулятором за секунду (должно быть ~500000).
В нижней части окна ПКУ находится информационная строка эмулятора. В эту строку отправляются сообщения, генерируемые эмулятором при наступлении различных событий, например, «Останов по адресу», «Выполнение команды с пульта», «Чтение из несуществующего порта» и т.п.
При сохранении копии экрана ВТА в файл на экран выводится информационное сообщение об имени созданного текстового файла.