Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Эмуляторы отечественных компьютеров (http://zx-pk.ru/forumdisplay.php?f=61)
-   -   Эмулятор УКНЦ - EmuStudio (http://zx-pk.ru/showthread.php?t=18027)

form 17th February 2012 23:53

Quote:

Originally Posted by Patron (Post 468631)
Но в первом случае, когда запрет прерываний в PSW очищается командой RTI - первым происходит Т-трап, а не какое-нибудь из внешних прерываний.

Что полностью подтверждает сказанное мной: T-бит - синхронное прерывание и воткнуться перед ним не получится. Причем команда WAIT еще не достигнута.

Quote:

Originally Posted by Patron (Post 468631)
А уже обработчик Т-трапа завершается во всех трёх случаях командой RTT.

И соответственно дает шанс другим прерываниям. Из которых два сидят в очереди и возникают (по прежнему до WAIT), а третье попадает уже на WAIT, после чего у тебя есть NOPы которые честно т-битятся.

То есть видим 1:1 сказанное мной.

---------- Post added at 01:53 ---------- Previous post was at 01:50 ----------

Кстати тест не чистый - у тебя прерываний по 100 отдаются на оригинальный хандлер.

Patron 17th February 2012 23:57

Quote:

Originally Posted by Alex_K (Post 468634)
Да, тест немного кривой. А кривизна его в том, что при прерывании по вектору 100 (таймер), после обработки в программе не осуществляется выход по RTI, а передается управление операционной системе командой JMP @V100. Если уж ОС разрешит прерывания, то там и 60 и 64 вектора проскочат. У меня RT-11 с поддержкой таймера, т.е. поддержка запросов .CMKT и .MRKT. А вот если тест запустить в системе без поддержки (где две команды ADC на обработке прерывания таймера), то и результат может быть другой.

Дык вставить там RTI и снова запустить тест - дело недолгое. Тут моя помощь вряд ли нужна :)

Quote:

Originally Posted by form (Post 468635)
Что полностью подтверждает сказанное мной: T-бит - синхронное прерывание и воткнуться перед ним не получится.

Но тогда при установке бита T командой RTI в любом из обработчиков - должен сразу произойти Т-трап, а он зачем-то и чего-то ждёт, пропуская вперёд обработчики всех внешних прерываний :)

---------- Post added at 21:57 ---------- Previous post was at 21:54 ----------

Quote:

Originally Posted by form (Post 468635)
Кстати тест не чистый - у тебя прерываний по 100 отдаются на оригинальный хандлер.

Посыпаю голову пеплом - там надо написать RTI и снова запустить тест.

form 17th February 2012 23:57

Quote:

Originally Posted by Patron (Post 468639)
Но тогда при установке бита T командой RTI в любом из обработчиков - должен сразу произойти Т-трап, а он зачем-то и чего-то ждёт, пропуская вперёд обработчики всех внешних прерываний :)

Предлагаю все-таки сначала написать правильный тест без неизвестных.
У тебя и код тяжелый плохочитаемый да еще и выполняет левый код :)

Patron 17th February 2012 23:58

Quote:

Originally Posted by form (Post 468643)
Предлагаю все-таки сначала написать правильный тест без неизвестных.
У тебя и код тяжелый плохочитаемый да еще и выполняет левый код :)

Предлагаю сначала написать "где надо" RTI и снова запустить тест.

form 17th February 2012 23:59

Quote:

Originally Posted by Patron (Post 468644)
Предлагаю сначала написать "где надо" RTI и снова запустить тест.

А может все-таки сначала упростить тест? :)

Patron 18th February 2012 00:00

Quote:

Originally Posted by form (Post 468645)
А может все-таки сначала упростить тест? :)

Он и так проще некуда - всего несколько строк.

Alex_K 18th February 2012 00:00

3 Attachment(s)
Вот тест в системе без поддержки запросов к таймеру. Правда не на реальной машине, а в эмуляторе, но разница налицо.

form 18th February 2012 00:07

Без таймера.
Первый тест просто навечно застрял пока не спнул его клавиатурой :)

Code:

.E 40
001000

.D 20000=5037,177546,137,1000

.ST 20000

PDP-11 Interrupts Test #1

MTPS #340
...Press Key...
BIS #100,@#TTPS
Set T x3
RTI | WAIT
>>> Trap to 014 <<<
>>> Interrupt <<< 060
>>> Trap to 014 <<<
>>> Interrupt <<< 064
>>> Trap to 014 <<<

MTPS #340
...Press Key...
BIS #100,@#TTPS
Set T x3
RTT
WAIT
>>> Interrupt <<< 060
>>> Trap to 014 <<<
>>> Interrupt <<< 064
>>> Trap to 014 <<<
>>> Trap to 014 <<<

MTPS #340
BIS #100,@#TTPS
...Press Key...
Set T x3
RTT
>>> Interrupt <<< 060
>>> Trap to 014 <<<
>>> Interrupt <<< 064
>>> Trap to 014 <<<
>>> Trap to 014 <<<

Program completed.

.



---------- Post added at 02:07 ---------- Previous post was at 02:03 ----------

Итого - получили логичный результат. В соответствии с ранее сказанным :)

Patron 18th February 2012 00:10

1 Attachment(s)
Quote:

Originally Posted by Alex_K (Post 468650)
Вот тест в системе без поддержки запросов к таймеру. Правда не на реальной машине, а в эмуляторе, но разница налицо.

Если отсутствие RTI в обработчике V100 могло исказить результаты - это печально.

В приложении - вариант теста с RTI в обработчике V100.

Интересно, какие результаты он показывает..

form 18th February 2012 00:15

Тест 1: RTI -> возникает 14, из него RTT - возникает 60, после возникает 14, из него RTT -> позникает 64, после 14, WAIT, висим

Тест 2: RTT -> возникает 60, возникает 14, RTT, WAIT, возникает 64, 14, 14

Тест 3: RTT -> возникает 60, возникает 14, RTT, WAIT, 64, 14, 14

Ничего необычного.

---------- Post added at 02:15 ---------- Previous post was at 02:12 ----------

Новый тест:

Code:

.RU PDPT1A

PDP-11 Interrupts Test #1a

MTPS #340
...Press Key...
BIS #100,@#TTPS
Set T x3
RTI | WAIT
>>> Trap to 014 <<<
>>> Interrupt <<< 100
>>> Trap to 014 <<<
>>> Trap to 014 <<<
>>> Interrupt <<< 060
>>> Interrupt <<< 064

MTPS #340
...Press Key...
BIS #100,@#TTPS
Set T x3
RTT
WAIT
>>> Interrupt <<< 100
>>> Trap to 014 <<<
>>> Trap to 014 <<<
>>> Trap to 014 <<<
>>> Interrupt <<< 060
>>> Interrupt <<< 064

MTPS #340
BIS #100,@#TTPS
...Press Key...
Set T x3
RTT
>>> Interrupt <<< 100
>>> Trap to 014 <<<
>>> Trap to 014 <<<
>>> Trap to 014 <<<
>>> Interrupt <<< 060
>>> Interrupt <<< 064

Program completed.

.



All times are GMT +4. The time now is 02:46.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.