-
Notifications
You must be signed in to change notification settings - Fork 6
/
Mini-Supervisor.txt
118 lines (95 loc) · 8.42 KB
/
Mini-Supervisor.txt
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
Мини-супервизор эмулятора ОС ДИСПАК
Краткое описание
1. Мотивы
При разработке Эмулятора ОС ДИСПАК имелось в виду, что экстракоды, выдаваемые
задачей пользователя будут эмулироваться самим эмулятором ровно так же, как и
собственные команды процессора. Реализация экстракодов будет добавляться по мере
необходимости, а попытка выполнить не реализованный пока экстракод будет приводить
к аварийному завершению.
Эта схема работала до тех пор, пока не добрались мы до Э64 - экстракода печати.
Документирован он не полностью, а восстановить всю его логику, глядя в исходный
текст на БЕМШе оказалось задачей, прямо говоря, непосильной.
Возникла идея неким образом заставить работать оригинальный код, реализующий Э64.
Очевидно, что этот код обращается к ряду объектов среды выполнения ОС ДИСПАК
таких, как
- константы
- переменные
- таблицы
- подпрограммы
- буфера в памяти
- буфера на внешних устройствах.
Соответственно, всем этим объектам необходимо было обеспечить функциональные
эквиваленты.
Таким образом родилась идея организовать в недрах эмулятора некую среду,
выполняющую некий минимальный набор функций внутреннего API ОС ДИСПАК, необходимый
для функционирования Э64. Будем называть эту среду мини-супервизором, или
просто супервизором.
Добавим, что в дальнейшем набор экстракодов, выполняемых супервизором расширился.
В настоящее время в их число входят:
- Э64 - экстракод печати,
- Э66 - экстракод вызова СП (стандартных программ) с барабана,
- Э62 41 - экстракод запроса выходного потока задачи (реализован только для АЦПУ),
- Э50 104 - экстракод запроса ФИО по шифру.
2. Реализация
2.1. Железо
Реализовано некоторое подобие режима супервизора БЭСМ-6. В этом режиме имеется
доступ к некоторым дополнительным регистрам и командам машины. Выбор команд
для исполнения производится из памяти супервизора, а выбор операндов - в
соответствии с признаком БлП (Блокировка Приписки).
Объем эмулируемой памяти машины был увеличен вдвое. Младшая половина принадлежит
задаче пользователя, старшая - супервизору. Соответственно адрес памяти расширился
на 1 бит.
Реализовано необходимое подмножество команд режима супервизора:
- УИА (0),
- УИ, СЧИ, УИИ для регистров > 15,
- ВЫПР.
Реалиованы соответствующие регистры режима супервизора (М20, М21, М27).
Дополнительно введена команда ВЫПР (М16) для обращения супервизора к эмулятору.
При запуске эмулятора управление передается по адресу 00010 в памяти
супервизора.
Экстракоды передают управление по адресу супервизора 00011, причем номер
экстракода заносится в индекс-регистр с номером 022.
Такое переопределение функции экстракода было сделано из прагматических
соображений - супервизору необходимо дешифровывать лишь очень узкое подмножество
экстракодов. Первичная дешифрация выполняется эмулятором и лишь те запросы,
которые эмулятор выполнить не может, переадресуются супервизору.
2.1.1. Команда 16 32 ХХХХХ (ВЫПР (М16))
Вид работы задается значением в М16. Исполнительный адрес не используется.
Значение М16 Вид работы
40000 Обращение к внешним устройствам КУС на сумматоре
Формат КУС примерно соответствует тому, что используется
процедурой ФИЗОБМ ОС ДИСПАК.
Прочие Включение/выключение режимов эмулятора. Параметр Вкл/выкл
задается первым разрядом сумматора
40142 Отладочной останов на следующей команде.
40160 Выдача на АЦПУ.
40163 Сбор статистических данных эмулятора.
40166 Выдача состояния регистров в отладчике (ОКНО).
40164 Трассировка: отладочный останов на каждой команде
40170 Выполнение экстракодов супервизором.
Остальные значения зарезервированы и приводят к завершению эмулятора с кодом
ошибки "Внутренний сбой эмулятора" (E_INT).
2.2. Программные средства
За основу программной реализации было взято подмножество исходных текстов
ОС ДИСПАК для Э1К2, реализующих минимальный набор механизмов супервизора:
- минимальная инициализация,
- вход в обработчик экстракодов,
- полное и частичное сохранение и восстановление контекста,
- управление процессами ОС,
- управление буферной памятью (ТБУФ),
- инициируемый супервизором обмен с внешними устройствами (ФИЗОБМ),
- вызов одним процессом ОС другого процесса.
В настоящее время поддерживается единственный процесс пользователя с номером
канала 41. При необходимости это ограничение нетрудно будет устранить.
2.3. Движущиеся части
Диск 2099 содержит образы выполняемых программ супервизора. Перечисленные
ниже файлы содержат исходные тексты супервизора:
disp99.b6 - механизмы, константы, переменные и таблицы супервизора
e64.b6 - Э64
ekdisp.b6 - разные экстракоды
macros.b6 - макроопределения
make2099.b6 - загрузка диска 2099
sostav.b6 - определение различных констант (ЭКВ)
spe66.b6 - Э66
Трансляция и сборка супервизора происходят автоматически в процессе сборки
эмулятора.