ei + jp loop ест 14 тактов (2 команды, r=r+2) и вопрос в том, сколько их влезет в одно прерывание за вычетом тех тактов, которые уйдут на выполнение проги INT (лишний ei там добавляет 4 такта и 1 команду), да и то не везде будет одинаково, если вспомнить о тормозилке на scorpion (напр. push af без нее делается 11.5 тактов, с ней - 12). В итоге:
пусть INTtick - число тактов на прогу INT (непостоянно)
FRAMEtick - тактов в прерывании (зависит от компа)
count=(FRAMEtick-INTtick)/14 - скока раз сделается ei:jp loop
delta=count*2 - команд
total1=delta+5 - команд между ld a,r и ld a,r в следующем прерывании
total2=delta+6 - то же с лишней ei
если (total1 and 7)=0, то в натуре ничего мигать не будет
Тут еще оговорка - я без понятия, сколько тактов ест и меняет ли R сам приход прерывания (переход на прогу INT)




Ответить с цитированием