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)

Alex_K 18th February 2012 01:18

Quote:

Originally Posted by form (Post 468706)
Кстати я @SP имел в виду :)
Но и 2(SP) можно на всякий случай :)

Да, точно. В 2(SP) PSW прерванного процесса.

Patron 18th February 2012 12:24

Quote:

Originally Posted by form (Post 468694)
две идеи для теста:
- сделать тест гарантированно на уровне кернела, чтобы я не перегружался каждый раз

На уровне кернела - это как? Надо какой-то бит где-то установить?

Quote:

Originally Posted by Alex_K (Post 468702)
проверить возврат по RTT с установленным и сброшенным T. А при выкладывании программы, также выложить и листинг трансляции MACRO, будет видно где прерывалось.

Здравые мысли.

Подумав над результататми теста у formа, я склоняюсь к мысли, что на его процессоре Т-трап имеет больший приоритет, чем IRQ (как и у ВМ2), а установка бита Т блокирует младшие линии BR (типа, как команда вроде MTPS #200), поэтому прерывание таймера не блокируется, а команда WAIT не пропускает ни одного прерывания.

Для того, чтобы точно в этом убедиться, я хотел сделать так, чтобы при выполнении команд NOP - их мнемоника выводилась на экран. Поэтому если использовать последовательность команд типа NOP | WAIT | NOP | WAIT | NOP | NOP - то всегда будет примерно ясно, "где мы находимся".

Quote:

Originally Posted by form (Post 468706)
Кстати я @SP имел в виду

Да - это гениально, как всё простое. Чем мудрстововать, подсчитывая на экране NOPы - гораздо проще сравнить адрес в стеке с листингом трансляции.

form 18th February 2012 12:43

Quote:

Originally Posted by Patron (Post 468768)
На уровне кернела - это как? Надо какой-то бит где-то установить?

MOV #340,@#16
MOV #10$,@#14
BPT

10$: ;;;KERNEL
[/QUOTE]

Patron 18th February 2012 13:19

Quote:

Originally Posted by form (Post 468773)
MOV #340,@#16
MOV #10$,@#14
BPT

10$: ;;;KERNEL

А устанавливая бит Т командами RTI/RTT мы из KERNEL-моды не вывалимся?

form 18th February 2012 13:20

Quote:

Originally Posted by Patron (Post 468778)
А устанавливая бит Т командами RTI/RTT мы из KERNEL-моды не вывалимся?

Нет. Если бы было возможно уйти с user mode через RTI/RTT в защите бы не было смысла :)

Patron 18th February 2012 14:17

Т.е. вот такая вставка в начале программы переключит нас в KERNEL-моду:
Code:

        MOV        #340, @#16
        MOV        #10$, @#14
        BPT
10$:
        MTPS        #0
        Cmp        (SP)+,(SP)+

Так?

form 18th February 2012 14:22

Quote:

Originally Posted by Patron (Post 468796)
Т.е. вот такая вставка в начале программы переключит нас в KERNEL-моду:
Code:

        MOV        #340, @#16
        MOV        #10$, @#14
        BPT
10$:
        MTPS        #0
        Cmp        (SP)+,(SP)+

Так?

SP на усмотрение - два слова не особо мешают. Или можно записать #340 в 2(SP) и потом по RTI/RTT вернуться после BPT (два старших бита PSW очищены - kernel mode, поскольку RTI из кернела делается - получится). MTPS лучше не использовать вообще по возможности - команда не портабельная (хотя у меня и есть). Ну и в любом случае если в этом именно мест есть потребности в приоритете 0, то можно сразу было 0 в 16 записать :)

Patron 18th February 2012 14:26

Т.е. в подпрограмме сохранения векторов пишем
Code:

        MOV        #0, @#16
        MOV        #10$, @#14
        BPT
10$:
        Cmp        (SP)+,(SP)+
        Return

И никакие последующие команды RTI/RTT нас уже из KERNEL-моды не выбъют..

form 18th February 2012 14:28

Quote:

Originally Posted by Patron (Post 468802)
Т.е. в подпрограмме сохранения векторов пишем
Code:

        MOV        #0, @#16
        MOV        #10$, @#14
        BPT
10$:
        Cmp        (SP)+,(SP)+
        Return

И никакие последующие команды RTI/RTT нас уже из KERNEL-моды не выбъют..

Тогда уж MOV (SP)+,@SP, а не CMP (SP)+,(SP)+ ;)

Titus 18th February 2012 14:28

Думаю, что модератор последние несколько страничек вполне мог бы перенести в тему 'ДВК и все, что с ними связано')


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

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