Возможно что в тот раз была версия теста 0.2, но вроде др. Титус в 0.3 добавил только MARK тест.
Возможно что в тот раз была версия теста 0.2, но вроде др. Титус в 0.3 добавил только MARK тест.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Ну и как тогда у двух тестов могут различаться ВСЕ контрольные суммы - и измеренные, и эталонные ..
---------- Post added at 16:02 ---------- Previous post was at 15:56 ----------
Получается, что на тестируемом процессоре подпрограмма печати 16-ричного значения выводит на экран неизвестно что.
Значит тот тест был версии 0.1.
Прогнал тест 0.3а на Эл.85
результат не отличается от теста 0.3а на плате М6.
Лучше ответить в этой теме, более соответствует. На УКНЦ с процессором 1801ВМ2 результаты аналогичные, потому скриншот и не выкладываю.
---------- Post added at 18:44 ---------- Previous post was at 18:37 ----------
Из описания исполнения RTI на 1801ВМ2:
"...Если при загрузке нового PSW устанавливается бит T в PSW, то отладочное прерывание будет вызвано до исполнения первой команды нового процесса. Если перед исполнением RTI был установлен T-бит, а при загрузке нового PSW он очищается, то в этом случае всё равно будет вызвано отладочное прерывание, но в стеке сохранится уже новое PSW без установленного бита T. ..."
Особенности RTT:
"... Единственным отличием является то, что если при загрузке нового PSW устанавливается бит T, то после исполнения RTT не запускается блок обработки прерываний, и соответственно выполняется команда нового процесса. ..."
Из этой особенности следует, что если при возврате по RTT бит T не был установлен, то блок обработки прерываний не пропускается.
На 11/83:Код:.BO RT11SB Foreground loaded; Are you sure? Y RT-11SB (S) V05.07 .SET TT QUIET ?ETM-I-Date & time - 11-FEB-2015 19:22:55 ?ETM-I-Time server - 70-71-BC-50-EB-D0, OpenBSD 5.5 amd64 .R DATE .AS D10 DK .RU TTST6 LSI-11 Traps Test #6 Mov #00,-(SP) Mov #L2,-(SP) Mov #20,-(SP) Mov #L1,-(SP) RTT L1: RTI L2: NOP Mov #00,-(SP) Mov #L4,-(SP) Mov #20,-(SP) Mov #L3,-(SP) RTT L3: RTT L4: NOP .
---------- Post added at 20:43 ---------- Previous post was at 19:24 ----------
А вот интересно, как ВМx ведут себя если в @#16 записать 20 и сделать BPT?
На *J11 процессорах это один из 4 случаев когда придется останавливать проц сигналом BHALT.
PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
PMI: KDJ11-BF, MSV11-JE
VT220, CM7209
Ну вобщем-то так и предполагал.
На 11/83 все зависает, если остановить вручную - SP будет равен 0 и тот факт, что SP в кернел моде не может безнаказанно пересечь зловещие 400 не спасает
---------- Post added at 23:24 ---------- Previous post was at 21:24 ----------
Попутно для общего развития тест прерывания по небольшому переполнению стека.
Выполняет последовательно команды (при SP=400):Первая из них ждет пока таймер вызовет прерывание и тем самым опустит SP ниже 400, остальные команды сами действуют на SP.Код:BR . EMT 350 TST -(SP) CALL @#EXSUB
Программа теста
Код:.TITLE YELL -- ТЕСТ YELLOW STACK TRAP .MCALL .EXIT,.PRINT ;+ ;ТЕСТ ПОСЛЕДОВАТЕЛЬНО ВЫПОЛНЯЕТ ПРИ SP=400 КОМАНДЫ: ; BR . ; EMT 350 ; TST -(SP) ; CALL @#EXSUB ;- START:: MOV #CODES,R3 ;R3=ТАБЛИЦА КОМАНД MOV @#4,SAVE ;СОХРАНЯЕМ ВЕКТОР MOV @#6,SAVE+2 ; 4 MOV #ODINT,@#4 ;УСТАНАВЛИВАЕМ ОБРАБОТЧИК MOV #340,@#6 ; ПРЕРЫВАНИЯ DOTST:: MOV #ARGS,R2 ;R2=БЛОК АРГУМЕНТОВ $EDMSG MOV #INSTR,(R2)+ ;АДРЕС ТЕСТИРУЕМОЙ КОМАНДЫ ASR SP ;SP=400 INSTR:: BR . ;ТЕСТИРУЕМАЯ КОМАНДА .WORD EXSUB ;ВТОРАЯ ЧАСТЬ ОТ КОМАНДЫ CALL PRINT:: MOV #BUFF,R0 ;R0=БУФЕР MOV #DUMP,R1 ;R1=ФОРМАТНАЯ СТРОКА MOV #ARGS,R2 ;R2=БЛОК АРГУМЕНТОВ CALL $EDMSG ;ФОРМАТИРУЕМ СООБЩЕНИЕ .PRINT #BUFF ;ПЕЧАТАЕМ MOV (R3)+,INSTR ;СЛЕДУЮЩАЯ ИНСТРУКЦИЯ BNE DOTST ;ЕСЛИ 0 - ВСЕ MOV SAVE,@#4 ;ВОССТАНАВЛИВАЕМ ВЕКТОР MOV SAVE+2,@#6 ; EXSUB:: .EXIT ;ВЫХОД ODINT:: MOV SP,R0 ;СОХРАНЯЕМ SP MOV #START,SP ;ВОССТАНАВЛИВАЕМ MOV R0,(R2)+ ;SP MOV (R0)+,(R2)+ ;@SP MOV @R0,(R2)+ ;2(SP) CLR -(SP) ;ВОЗВРАТ MOV #PRINT,-(SP) ; НА RTI ; ПП ПЕЧАТИ CODES:: .EXIT ;EMT 350 TST -(SP) ;TST -(SP) CALL @#0 ;CALL @#EXSUB SAVE: .BLKW 2 ARGS: .BLKW 4 BUFF: .BLKB 64. DUMP: .ASCIZ /%P: SP=%P, @SP=%P, 2(SP)=%P/ .END START[свернуть]
Результаты показывают, что в случае возникновения прерывания или вызова подпрограммы, сначала проходит сохранение в стек, потом устанавливается PC/PS, а потом происходит прерывание по 4, что позволяет обработчику прерываний просто вернуться назад по RTI (предварительно проверив в регистре CPUERR, что это yellow stack trap) и тем самым продолжить выполнение в надежде что остатков стека хватит
Код:.EX YELL/LINK:SY:RSXLIB 001046: SP=000370, @SP=133014, 2(SP)=000341 001046: SP=000370, @SP=120760, 2(SP)=000000 001046: SP=000372, @SP=001050, 2(SP)=000004 001046: SP=000372, @SP=001122, 2(SP)=000000 .E 30 120760 .E 100 133014 .
Последний раз редактировалось form; 11.02.2015 в 20:28.
PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
PMI: KDJ11-BF, MSV11-JE
VT220, CM7209
Что скрыто за этими вызовами?
Можно ли (имеет ли смысл) например этот тест запустить на УК-НЦ под RT-11?
Каким образом и можно ли RSXLIB использовать? - я наверное пропустил если
есть эта OBJ для RT-11? Есть ли в этой библиотеке (если её можно использовать
под RT-11), что нибудь супер крутое и полезное, описание аналогичное SYSMAC.HLP существует?
PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
PMI: KDJ11-BF, MSV11-JE
VT220, CM7209
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)