Эмулятор БЭВМ для командной строки

Содержание

  1. Способы запуска
  2. Список команд
  3. Возможности эмулятора
  4. Микропрограммы
  5. Ограничения и известные проблемы
  6. Примеры использования

Способы запуска

  1. Скачать JAR-архив и запустить эмулятор командой:
  2. java -jar -Dmode=cli bcomp.jar
  3. Для unix-подобных систем дополнительно скачать shell скрипт и запустить его командой:
  4. bcomp -c
  5. Для ОС семейства Windows дополнительно скачать bat скрипт и запустить его командой:
  6. cli
  7. Зайти на сервер кафедры ВТ helios и выполнить команду:
  8. bcomp -c

Список команд

Команда Короткая форма Описание
helphВывести подсказку по командам
addressaПультовая операция Ввод адреса
writewПультовая операция Запись
readrПультовая операция Чтение
startsПультовая операция Пуск. Будет выполнена в фоновом режиме если указана последней в строке
continuecПультовая операция Продолжить. Будет выполнена в фоновом режиме если указана последней в строке
runruПереключение режима Работа/Останов
clockclПереключение режима потактового выполнения
maddressmaПереход на микрокоманду
mwritemwЗапись микрокоманды
mreadmrЧтение микрокоманды
io [addr [value]]iВывод состояния всех ВУ/указанного ВУ/запись value в ВУ
flag addrfУстановка флага готовности указанного ВУ
asmasВвод программы на ассемблере
sleep valueslЗадержка между тактами при фоновом выполнении
{exit|quit}{e|q}Выход из эмулятора
valueВвод шестнадцатеричного значения в клавишный регистр
labelВвод адреса метки в клавишный регистр

Возможности эмулятора

  1. Автоматическая генерация таблиц трассировки для программ и микропрограмм в точном соответствии с требованиями методички.
  2. Возможность работы с перенаправлением ввода для автоматического выполнения заготовленного сценария работы.
  3. Возможность запуска программы в фоновом режиме для, например, выполнения лабораторных работ, связанных с вводом-выводом.
  4. В одной строке может быть несколько команд, которые будут обработаны в порядке их указания.
  5. Если очередная команда начинается с символа #, то весь остаток строки игнорируется.

Микропрограммы

  1. Исходная микропрограмма используется по умолчанию.
  2. Оптимизированная микропрограмма используется при указании ключа -Dmp=optimized.
  3. Расширенная микропрограмма используется при указании ключа -Dmp=extended.

Ограничения и известные проблемы

  1. Последовательность интерпретации эмулятором значений:
    1. команда, если значение является началом команды, например A, AD и ADD будут восприняты как пультовая операция Ввод адреса;
    2. шестнадцатеричное значение, если значение имеет корректный формат и состоит из шестнадцатеричных цифр, например ADDE;
    3. имя метки, например ADDZ.
  2. Так как пультовые операции Ввод адреса/Запись/Чтение представляют собой микропрограммы, при работе в потактовом режиме они останавливают своё выполнение после первой микрокоманды. Для полного выполнения пультовой операции необходимо выключать потактовый режим или выполнять все такты микропрограммы командой continue.
  3. При отключенном потактовом режиме состояние регистров выводится только после достижения микрокоманды, останавливающей БЭВМ. Для получения таблицы трассировки программу необходимо выполнять в режиме останов.
  4. Для всех пультовых операций выводится состояние регистров после выполнения этих операций.
  5. Обработка ошибок ввода находится в зачаточном состоянии и весьма ограничена.
  6. В случае зацикливания программы, запущенной не в фоновом режиме, нет возможности штатно остановить её выполнение.
  7. Запрещено выполнять пультовые операции при запущенной в фоновом режиме программе.
  8. При запуске программы в фоновом режиме устанавливается неотключаемая задержка между тактами 1мс.
  9. Ведение истории выполненных команд не предусмотрено, отсутствует возможность вызова предыдущих команд.

Примеры использования

Сгенерировать таблицу трассировки для первой ЛР

018 a F200 w 4021 w 1022 w 3024 w F200 w 4023 w 4024 w 3024 w F000 w
DEAD w BEEF w ACDC w 018 a s
c c c c c c c c c

Сгенерировать таблицу трассировки для команды 7XXX: ОП(XXX) -> А, 1 -> C

B0 ma 0100 mw 40F5 mw 8390 mw 010 a 7010 w 010 a s clock
c c c c c c c c c c c c c c c c c c c c c c

Выполнить трассировку пультовой операции Ввод адреса

010 clock a c c c

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

asm
ORG	010
BEGIN:	CLA
	ADD X
	ADD Y
	MOV R
	HLT

X: WORD ? Y: WORD ? R: WORD ? END X a DEAD w Y a BEEF w BEGIN a run s

Используя ассемблер ввести и выполнить программу, которая раз в секунду увеличивает содержимое аккумулятора, а по запросу от ВУ1 выводит накопленное значение

asm run start
ORG	010
BEGIN:	CLA
	ADD	CONST
	OUT	0
	CLA
LOOP:	TSF	0
	BR	TSF1
	INC
	CLF	0
TSF1:	TSF	1
	BR	LOOP
	OUT	1
	CLF	1
	BR	LOOP
CONST:	WORD	A
END
flag 1
io 1