у МС1201.02 есть ПЗУ-055 и там есть загрузчик (не в юзере) ... Но я не понял - почему эту ПЗУ -055 никто не знает?
Последний раз редактировалось Ал-р; 01.01.2015 в 11:59.
Как выяснилось - прошивка -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 .
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Да, всё верно.
---------- 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 её исполнит.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)