Вот довольно точный тест длительности INT:ints_tests.zip (minfo.tap).
Вот довольно точный тест длительности INT:ints_tests.zip (minfo.tap).
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
МГТФ - любимый провод!
KAY-1024(4096)/SL-4/TURBO v2010 + Nemo-FDC + Nemo-IDE (CF 4GB) + SMUC2 Rev.B RTC (HDD 1.6GB + DVD-ROM) + PROF-ROM + ZXMC2 + GENERAL SOUND 2MB + ZX-BUS_TEE + FDD 3.5' + FDD 5.25' + VGA&PAL
Кому интересно, благодаря daniel, запустившему новый тест на своих реалах, выяснилось, что на реальных компах тест виснет, как и ожидалось, то есть Spectaculator и ZXMAK2 не вполне правильно эмулируют работу команды LD A,R. Это может влиять, ну например, на эмуляцию программ, использующих регистр R как генератор случайных чисел. В частности, неправильно пишутся/читаются RZX, например вот этот RZX воспроизводится без ошибок только на Спектакуляторе, на котором он был записан.
У меня вопрос на ту же тему. Как между делом, пока у меня выполняется много кода с запрещёнными прерываниями, понять что прерывание таки случилось? Я ведь правильно понимаю, оно не случается "вдогонку"? Дело в том, что код использует стек в качестве переносчика данных, а прерывание может туда нагадить. Вот я и думаю, как бы в промежутках кода проверять не случилось-ли оно, и вызывать обработчик.
скорей всего никак
на многих клонах можно вообще словить 2+ обработчика прерываний подряд
если обработчики короткие
...по моему на msx-ах прерывание будет висить до тех пор пока не произойдет его подтверждение
на некоторых спетрумах по моему максимум что есть
это прекращение сигнала инта при его подтверждении
чтоб не ловить 2 подряд
(не уверен уже есть ли точно(и расчитывать на это в любом случае нельзя))
при наличии порта FF можно поймать факт начала\конца экрана
и вызвать обработчик
но это должны быть чем то оправданно
так как на большим количестве спектрумов это поделие работать не будет
да и сама проверка будет длительной
тк в строке 96 тактов бордюра
да и над самим экраном, по моему, все не так просто читается
можно попытаться поймать 50Гц-ный фон с матафонного входа
(тоесть вообще можно попробовать получить опорные 100Гц дополнительно)
но это особое извращение для знающих толк
(которого вполне может ни у кого больше не быть)
и врятли оно эмулируется
ну и 50Гц сети явно не будут совпадать с 50Гц экрана...
ДЕТКИ НЕ ПЫТАЙТЕСЬ ПОВТОРИТЬ ЭТО ДОМА!![]()
ну разве что это будет wild demo
где такое можно и нужно
Последний раз редактировалось NEO SPECTRUMAN; 08.10.2019 в 01:48.
регистром R можно мерять время условно
основная проблема что у регистра R всего 7 бит (128 значений)
им много не намеряешь (интервалы 512-1200+ тактов всего)
да и инкриментится он с разной скоростью
его можно пускать по одноподобному коду
тогда он дает более менее вменяемые результаты пригодные к использованию
можно использовать вместо счетчика когда нет свободных регистров
в атаче поделие в котором я как то юзал регистр R для измерения расстояния на которое пролетает луч
после там несколько низкоточных коррекций результата
и в итоге много артефактов
так же обработчик прерываний должен восстанавливать значение регистра
на некоторых эмулях у меня оно иногда восстанавливает с ошибкой
что как бы намекает на кривость эмуляции местами или какие еще то подводные камни
Последний раз редактировалось NEO SPECTRUMAN; 08.10.2019 в 22:49.
я тут недавно долго ловил баг. прога работала при IM1, но через какое-то время (в турбе быстрее) сбрасывалась.
вот кусок кода висящий на прерываниях в ROM. увеличение системной переменной (frames)
в моём случае это был муз.плейер который использовал IY для работы с данными.Код:LD HL,(#5C78) INC HL LD (#5C78),HL LD A,H OR L JR NZ,L0048 INC (IY+#40) !!!!! L0048: PUSH BC
оказалось такое встречается и в играх, например JoeBlade2 48k
Последний раз редактировалось goodboy; 08.10.2019 в 13:10.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)