-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathcli.html
More file actions
149 lines (141 loc) · 10.4 KB
/
cli.html
File metadata and controls
149 lines (141 loc) · 10.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Эмулятор БЭВМ для командной строки</title>
<!-- $Id$ -->
</head>
<body>
<h1 id="a1">Эмулятор <a href="index.html">БЭВМ</a> для командной строки</h1>
<h3 id="a1">Содержание</h3>
<ol>
<li><a href="#a2">Способы запуска</a></li>
<li><a href="#a3">Список команд</a></li>
<li><a href="#a4">Возможности эмулятора</a></li>
<li><a href="#a5">Микропрограммы</a></li>
<li><a href="#a6">Ограничения и известные проблемы</a></li>
<li><a href="#a7">Примеры использования</a></li>
</ol>
<h3 id="a2">Способы запуска</h3>
<ol>
<li>Скачать <a href="bcomp.jar">JAR-архив</a> и запустить эмулятор командой:</li>
<pre>java -jar -Dmode=cli bcomp.jar</pre>
<li>Для unix-подобных систем дополнительно скачать <a href="bcomp">shell скрипт</a> и запустить его командой:</li>
<pre>bcomp -c</pre>
<li>Для ОС семейства Windows дополнительно скачать <a href="cli.bat">bat скрипт</a> и запустить его командой:</li>
<pre>cli</pre>
<li>Зайти на сервер кафедры ВТ helios и выполнить команду:</li>
<pre>bcomp -c</pre>
</ol>
<h3 id="a3">Список команд</h3>
<table border="1">
<tr>
<td align="center"><b>Команда</b></td>
<td align="center"><b>Короткая форма</b></td>
<td align="center"><b>Описание</b></td>
</tr>
<tr><td><code>help</code></td><td><code>h</code></td><td>Вывести подсказку по командам</td></tr>
<tr><td><code>address</code></td><td><code>a</code></td><td>Пультовая операция <code>Ввод адреса</code></td></tr>
<tr><td><code>write</code></td><td><code>w</code></td><td>Пультовая операция <code>Запись</code></td></tr>
<tr><td><code>read</code></td><td><code>r</code></td><td>Пультовая операция <code>Чтение</code></td></tr>
<tr><td><code>start</code></td><td><code>s</code></td><td>Пультовая операция <code>Пуск</code>. Будет выполнена в фоновом режиме если указана последней в строке</td></tr>
<tr><td><code>continue</code></td><td><code>c</code></td><td>Пультовая операция <code>Продолжить</code>. Будет выполнена в фоновом режиме если указана последней в строке</td></tr>
<tr><td><code>run</code></td><td><code>ru</code></td><td>Переключение режима Работа/Останов</td></tr>
<tr><td><code>clock</code></td><td><code>cl</code></td><td>Переключение режима потактового выполнения</td></tr>
<tr><td><code>maddress</code></td><td><code>ma</code></td><td>Переход на микрокоманду</td></tr>
<tr><td><code>mwrite</code></td><td><code>mw</code></td><td>Запись микрокоманды</td></tr>
<tr><td><code>mread</code></td><td><code>mr</code></td><td>Чтение микрокоманды</td></tr>
<tr><td><code>io <code>[</code>addr <code>[</code>value<code>]</code><code>]</code></code></td><td><code>i</code></td><td>Вывод состояния всех ВУ/указанного ВУ/запись <code>value</code> в ВУ</td></tr>
<tr><td><code>flag addr</code></td><td><code>f</code></td><td>Установка флага готовности указанного ВУ</td></tr>
<tr><td><code>asm</code></td><td><code>as</code></td><td>Ввод программы на <a href="asm.html">ассемблере</a></td></tr>
<tr><td><code>sleep value</code></td><td><code>sl</code></td><td>Задержка между тактами при фоновом выполнении</td></tr>
<tr><td><code>{exit|quit}</code></td><td><code>{e|q}</code></td><td>Выход из эмулятора</td></tr>
<tr><td><code>value</code></td><td></td><td>Ввод шестнадцатеричного значения в клавишный регистр</td></tr>
<tr><td><code>label</code></td><td></td><td>Ввод адреса метки в клавишный регистр</td></tr>
</table>
<h3 id="a4">Возможности эмулятора</h3>
<ol>
<li>Автоматическая генерация таблиц трассировки для программ и микропрограмм в точном соответствии с требованиями методички.</li>
<li>Возможность работы с перенаправлением ввода для автоматического выполнения заготовленного сценария работы.</li>
<li>Возможность запуска программы в фоновом режиме для, например, выполнения лабораторных работ, связанных с вводом-выводом.</li>
<li>В одной строке может быть несколько команд, которые будут обработаны в порядке их указания.</li>
<li>Если очередная команда начинается с символа <code>#</code>, то весь остаток строки игнорируется.</li>
</ol>
<h3 id="a5">Микропрограммы</h3>
<ol>
<li><a href="BaseMicroProgram.html">Исходная микропрограмма</a> используется по умолчанию.</li>
<li><a href="OptimizedMicroProgram.html">Оптимизированная микропрограмма</a> используется при указании ключа <code>-Dmp=optimized</code>.</li>
<li><a href="ExtendedMicroProgram.html">Расширенная микропрограмма</a> используется при указании ключа <code>-Dmp=extended</code>.</li>
</ol>
<h3 id="a6">Ограничения и известные проблемы</h3>
<ol>
<li>Последовательность интерпретации эмулятором значений:<ol>
<li>команда, если значение является началом команды, например <code>A</code>, <code>AD</code> и <code>ADD</code> будут восприняты как пультовая операция <code>Ввод адреса</code>;</li>
<li>шестнадцатеричное значение, если значение имеет корректный формат и состоит из шестнадцатеричных цифр, например <code>ADDE</code>;</li>
<li>имя метки, например <code>ADDZ</code>.</li>
</ol></li>
<li>Так как пультовые операции <code>Ввод адреса</code>/<code>Запись</code>/<code>Чтение</code> представляют собой микропрограммы, при работе в потактовом режиме они останавливают своё выполнение после первой микрокоманды. Для полного выполнения пультовой операции необходимо выключать потактовый режим или выполнять все такты микропрограммы командой <code>continue</code>.</li>
<li>При отключенном потактовом режиме состояние регистров выводится только после достижения микрокоманды, останавливающей БЭВМ. Для получения таблицы трассировки программу необходимо выполнять в режиме останов.</li>
<li>Для всех пультовых операций выводится состояние регистров после выполнения этих операций.</li>
<li>Обработка ошибок ввода находится в зачаточном состоянии и весьма ограничена.</li>
<li>В случае зацикливания программы, запущенной не в фоновом режиме, нет возможности штатно остановить её выполнение.</li>
<li>Запрещено выполнять пультовые операции при запущенной в фоновом режиме программе.</li>
<li>При запуске программы в фоновом режиме устанавливается неотключаемая задержка между тактами 1мс.</li>
<li>Ведение истории выполненных команд не предусмотрено, отсутствует возможность вызова предыдущих команд.</li>
</ol>
<h3 id="a7">Примеры использования</h3>
<h4>Сгенерировать таблицу трассировки для первой ЛР</h4>
<pre>
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
</pre>
<h4>Сгенерировать таблицу трассировки для команды 7XXX: ОП(XXX) -> А, 1 -> C</h4>
<pre>
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
</pre>
<h4>Выполнить трассировку пультовой операции <code>Ввод адреса</code></h4>
<pre>
010 clock a c c c
</pre>
<h4>Используя <a href="asm.html">ассемблер</a> ввести и выполнить программу, складывающую два числа</h4>
<pre>
asm
ORG 010
BEGIN: CLA
ADD X
ADD Y
MOV R
HLT
<p>
X: WORD ?
Y: WORD ?
R: WORD ?
END
X a DEAD w Y a BEEF w BEGIN a run
s
</pre>
<h4>Используя <a href="asm.html">ассемблер</a> ввести и выполнить программу, которая раз в секунду увеличивает содержимое аккумулятора, а по запросу от ВУ1 выводит накопленное значение</h4>
<pre>
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
</pre>
</body></html>