Скорей всего ПЗУ уже находится на устройстве.
http://s017.radikal.ru/i430/1412/5d/b12dd9a67127.jpg
Скорей всего ПЗУ уже находится на устройстве.
http://s017.radikal.ru/i430/1412/5d/b12dd9a67127.jpg
у МС1201.02 есть ПЗУ-055 и там есть загрузчик (не в юзере) ... Но я не понял - почему эту ПЗУ -055 никто не знает?
Как выяснилось - прошивка -055 поддерживает загрузку со следующих устройств:
Код:Команда CSR
------- ------
L 177550
B MT0 172520
B MX0 177130
B DX0 177170
B RK0 177400
B RM0 167740
Есть ещё команды.
Код:B
$ L (BK) -Ввод программы абсолютного загрузчика с устройства считывания с перфоленты.
$ LA (BK) -Загрузка программы абсолютного загрузчика в память.
$ DY (BK) -Загрузка с накопителя на гибких магнитных дисках с двойной плотностью.
Тест VM2JR.SAV для платы МС1201.02 проверяет, какой вариант Trap_to_04 вызывает команда типа JMP R0 в режиме HALT - по вектору 04 или по вектору 140004.
В первом случае результат запуска выглядит так:
Во втором случае результат запуска выглядит так:Код:.RU VM2JR
1801VM2 HALT mode test VM2JR v1.0
JMP R0
Trap to 04
.
Код:.RU VM2JR
1801VM2 HALT mode test VM2JR v1.0
JMP R0
HALT Trap to 04
.
Да, всё верно.
---------- Post added at 02:25 ---------- Previous post was at 02:21 ----------
Ещё добавлю, что хоть TRAP4 и недопустимая команда прерываются по одному вектору в режиме USER, но для процессора это совершенно разные ситуации. Для TRAP4 ещё запоминается признак прерывания, чтобы прерваться по DOUBLE BUS ERROR, если произойдёт ещё TRAP4. Кстати, в 1801ВМ2 этот признак очищается только при успешном прочтении команды из памяти, а не просто прочтении памяти.
Не получится. Команда MFPT будет прочитана, и соответственно флаг сброшен. Далее он установится при попытке прочтения первой команды подпрограммы исполнения TRAP10, произойдет TRAP4, но команда MFPT будет успешно прочитана из памяти. Ну и так до бесконечности, точнее до переполнения стека.
Тесты я не писал, т.к. пультовый отладчик в УКНЦ очень удобный и позволяет запускать код как в режиме USER, так и в HALT. Поэтому все исследования я делал в нём.
А программа довольно простая. Устанавливаем вектор 4 на адрес 0170000, ячейку 6 на 0340, R6 на 01000, RS на 0340. С адреса 01000 заносим команду TST @#170000 и исполняем её.
Происходит TRAP4, в стек успешно заносятся значения 01002 и 0340. А вот далее при чтении команды по адресу 0170000 снова происходит прерывание по зависанию и соответственно DOUBLE BUS ERROR. После всего этого значение R6 станет 0774, т.е. в стек занесено только два слова при первом прерывании TRAP4.
Тест можно усложнить, если сделать так, что ячейку 6 установить в 0, и чтобы было прерывание по таймеру или по терминалу. Их вектор также должен указывать на "пустоту". Соответственно стек заполнится ещё больше, но в итоге опять будет DOUBLE BUS ERROR.
Кстати, не помешало бы проверить это на МС1201.02, т.к. там нет "мегаглюка". Поэтому программу надо написать, а Mix её исполнит.