Скорее просто цифрой промахнулись - нужно 4 вместо 0 поставить просто.
Вид для печати
Стоп! А ведь SPL есть далеко не во всех машинках. Или как? Я вот только сейчас о ней узнал - заодно нашел книгу Сингера в .doc, а в ней написано, что, цитирую: "В машинах PDP-11/45 и 11/55 для привилегированных пользователей существует команда установки уровня приоритета SPL (Set Priority Level)" А на LSI-11 получим Trap to 10? Странно...
Кстати, возвращаясь к нашему спору о команде WAIT, вот то, что было нужно: SPL 0, за ней - WAIT, прерывания между этими двумя командами не произойдет, ибо SPL, как раз, запрещает прерывания до выполнения следующей за ней команды. А парочка SPL 7 - WAIT, по идее, должна завесить машинку до сброса.
Да. Также как и SOB (или к примеру MTPS). В текстах RT-11 это макросы.
---------- Post added at 16:02 ---------- Previous post was at 15:58 ----------
В описании KDJ11 про это ничего не сказано.
Что логично ибо эти две команды по сути именно это и просят сделать :)
---------- Post added at 16:03 ---------- Previous post was at 16:02 ----------
Есть еще много вариантов послать проц в бесконечный зависон из которого можно выбраться только физическим остановом...
Угу, опять цитирую Сигера: "В машине PDP-11/45, которой мы пользуемся, эта команда независимо от устанавливаемого приоритета запрещает любые прерывания до тех пор, пока не будет выполнена следующая за SPL команда. В руководствах этот факт не нашел отражения, и поэтому не ясно, так же ли будут вести себя другие модели."
Сингер писал книгу давно, а команда SPL есть между тем на многих процах (на большинстве пожалуй) и реализована ли она также как у него написано - не факт. В описании DCJ11 лучше почитать - там есть огромная таблица примерно из 60 пунктов (с подвариантами) об отличиях процессоров. Ну и тесты можно попробовать сделать...
Такое бывает равно как руководство может вообще неточно описывать что-то. Не так давно натыкались на то, что нельзя сбросить второй набор регистров из user mode, можно только выбрать его. В документации же такое поведение написано только для supervisor mode :)
---------- Post added at 16:10 ---------- Previous post was at 16:08 ----------
Кстати у Сингера там и ошибки явные встречались. Впрочем это могут быть последствия перевода - оригинала не читал.
Проверяется, кстати, элементарно, под простой RT-11 без ДП. Запрещаем прерывания (MTPS #340), забираем себе вектор прерывания от клавиатуры на программку, инкрементирующую исходный ноль, ставим в ее РС бит 0100, ждем в цикле появления бита 0200, делаем SPL 0 SPL 7 и смотрим, произошло ли прерывание, т.е. инкрементировался тот ноль, или нет? Можно, по-простому, сделать останов и посмотреть ту ячейку в пульте.
---------- Post added at 16:17 ---------- Previous post was at 16:15 ----------
А на наших есть?
Команды может и не быть на проце ;)
У меня можно проще - взвести PIRQ и далее SPL 0/SPL 7. До дому доберусь (сегодня утром забыл включить :() - попробую и другие варианты тоже...
---------- Post added at 16:19 ---------- Previous post was at 16:18 ----------
Как минимум на CM1420/1425/2420. Показывали еще аналог 11/53 - там должно быть. Остальные наши надо смотреть чего они аналоги. Э100/25 к примеру точно нету (как нету и команд MFPS/MTPS там). До сих пор кстати не знаю чего он аналог и насколько точный :)
---------- Post added at 16:24 ---------- Previous post was at 16:19 ----------
Да, ну и на Э85 конечно есть!
Строго говоря надо в тему особенностей процессора... Тест выставляет приритет 7, запрашивает прерывание уровня 6, делает SPL 0 и выводит результат. PS (в результате вывода) при этом должен содержать количество команд выполненных после SPL 0, ну а PC для проверки...
Как видим, после SPL 0 прерывание происходит мгновенно.Код:.TY SPL.MAC
.TITLE SPL
.MCALL .EXIT,.PRINT
.ASECT
.=240
.WORD PIISR,4340
.PSECT
START:: CLR @#177546
MOV #340,@#177776
BIS #40000,@#177772
SPL 0
<SEC> +0
<SEC> +1
<SEC> +2
BIS #100,@#177546
.PRINT #BUFF
.EXIT
PIISR:: CLR @#177772
MOV SP,R2
MOV #FMTS,R1
MOV #BUFF,R0
CALL $EDMSG
RTI
BUFF: .BLKB 80.
FMTS: .ASCIZ /PC=%P, PS=%P/
.END START
.EX/LINK:SY:RSXLIB SPL
PC=001022, PS=000000
.
---------- Post added at 18:26 ---------- Previous post was at 18:24 ----------
И не должно быть. Он определен в явном виде. Кстати читая исходники RT-11 очень часто "не верь глазам своим". К примеру написано MOV #340,@#PS и оно будет работать независимо от процессора :)
BSTRAP.MAC патчит код при загрузке...
---------- Post added at 18:28 ---------- Previous post was at 18:26 ----------
Я не силен в том что выпуска{л,ет} зеленоград а равно вообще в советском не особо силен. Если речь о всяких 1801ВМ[123] то там нет. Насчет ВМ3 впрочем не уверен, но проверить легко - есть у многих.