В Unreal неправильно приходит сигнал INT?

Эмуляторы, поддерживающие TS-Conf

Postby EARL » Tue, 04.03.2014 16:21:21

В анрыле в основном цикле при начале нового фрейма первым делом стоит проверка сигнала INT и запуск ISR, т.е. сигнал INT приходит даже раньше чем выполнится какая либо инструкция. Однако в пошаговом выполнении команд из дебагера все в точности и наоборот, сперва выполняется команда, а потом идет проверка на возможность запуска ISR, если пришел сигнал INT и выполнены все прочие условия. Баг это или фича, кто может объяснить?


В дезсофтовском анрыле такая же ерунда.
User avatar
EARL
 
Posts: 71
Joined: Fri, 30.08.2013 09:29:15

Postby TS-Labs » Tue, 04.03.2014 17:50:55

Баг, конечно. В трекер.
User avatar
TS-Labs
 
Posts: 4769
Joined: Thu, 26.07.2012 01:29:56

Postby introspec » Tue, 04.03.2014 18:39:28

Уточню: баг в эмуляторе, а не в дебагере.
User avatar
introspec
 
Posts: 578
Joined: Sun, 14.07.2013 15:36:47

Postby EARL » Tue, 04.03.2014 20:04:44

Я так и понял что баг в эмуляторе. Меня другое интересует. Если я сейчас все поправлю, то чем потом потестить лучше, ибо до этого данный код "подгонялся" под тесты?
User avatar
EARL
 
Posts: 71
Joined: Fri, 30.08.2013 09:29:15

Postby introspec » Tue, 04.03.2014 20:17:09

Любые тесты до такта должны бы пойти. Я если честно не припомню, чтобы я на этом ловился, если честно. Т.е. код до такта писал, но различий с анрилом вроде не было. Кажется.
User avatar
introspec
 
Posts: 578
Joined: Sun, 14.07.2013 15:36:47

Postby EARL » Tue, 04.03.2014 20:22:50

Какие тесты с точностью до такта вообще есть?
User avatar
EARL
 
Posts: 71
Joined: Fri, 30.08.2013 09:29:15

Postby introspec » Tue, 04.03.2014 20:38:47

Бордерные эффекты с вертикальными кромками для пентагона любые. Rage, мои MGDMA и In Memoriam VNN. Есть ещё просмотрщики бордерной графики, один, что приходит с zxstealth (про него я меньше знаю) и другой - мой. Вообще, я видел небольшие различия между эмуляторами, как раз 1-2 такта, но тесты на реалах, насколько я помню, не давали очевидных противоречий. Наверное, нужно пофиксить эмулятор и посмотреть, как это скажется на любых из этих софтин.

Есть ещё тесты эмуляторов, но многие из них заточены под классику и на пентагоне работать нормально не будут. Отечественные тесты такого рода я знаю хуже. Самый лучший человек расспросить по этому поводу - автор ZXMAK2.
User avatar
introspec
 
Posts: 578
Joined: Sun, 14.07.2013 15:36:47

Postby introspec » Tue, 04.03.2014 20:40:55

Вообще же, состояние флага прерываний должно проверяться во время последнего такта команды. Чем это отличается от проверки перед первым тактом команды следущей? Скажем, как это скажется на выполнении команды halt?
User avatar
introspec
 
Posts: 578
Joined: Sun, 14.07.2013 15:36:47

Postby TS-Labs » Tue, 04.03.2014 20:44:59

Вот, удобный.
Attachments
MULFIX.scl
(1.29 KiB) Downloaded 64 times
User avatar
TS-Labs
 
Posts: 4769
Joined: Thu, 26.07.2012 01:29:56

Postby EARL » Tue, 04.03.2014 21:19:39

introspec wrote:Вообще же, состояние флага прерываний должно проверяться во время последнего такта команды. Чем это отличается от проверки перед первым тактом команды следущей? Скажем, как это скажется на выполнении команды halt?

Хм. Ну по идее разницы не должно быть, кроме случая когда эмулятор только включается и происходит проверка возможности входа в прерывание еще не выполнив ни одной команды.

...
Нашел этой "фиче" в анрыле только одно объяснение. При выход в дебагер, мы оказываемся в самом начале ISR. Больше пользы не вижу.

...
Длина INT на 1 меньше задаваемых, т.е. вместо 32 будет 31. Говнокод:
Code: Select all
      // INT loop
      if (cpu.intnew && ((cpu.t - comp.intpos + 1) < conf.intlen))
      {
         // Обработка INT
         ...
      }
User avatar
EARL
 
Posts: 71
Joined: Fri, 30.08.2013 09:29:15


Return to Emulators

Who is online

Users browsing this forum: No registered users and 1 guest

x