Не выдержала душа поэта... с утреца всё перелопатил.
Первоначальный вариант теста давал не совсем корректный результат, т.к. во время тестирования быстродействия алгоритма вывода было ещё много накладных вычислений перед выводом каждого спрайта. в основном это вычисление адреса спрайта, который нужно вывести на экран, т.к. фактически сразу выводились показания счётчика.
Переписал само тестирование. Сейчас кроме вывода спрайта в цикле минимум, вот пример:
Скрытый текст
Код:
Jerri_c:
lxi d,a_test_spr ; адрес спрайта на экране
lxi b,tab_spr0 ; адрес спрайта
push h ; сохранить счетчик
;
call drop24 ; вывод спрайта
;
pop h восстановить счетчик
inx h ; увеличение счетчика выводов спрайта на экран
;
lda StopFlag ; читаем флаг остановки
ora a ; проверка флага
jnz Jerri_c
[свернуть]
И результат немного поменялся:
Оригинальный вариант алгоритма Jerri - 1380h
Вариант Jerri, с заранее вычисленными адресами битпланов, и полностью развёрнутый (без циклов) - 1603h
Мой оригинальный алгоритм - 151Eh
Мой с заранее вычисленными адресами битпланов - 15B2h
Алгоритм metamorpho, совсем не использующий стек - 0С0Сh
Алгоритм metamorpho, совсем не использующий стек и с обычным прерыванием в которои нет защиты стека - 0С0Eh
Во вложении сам тест и его исходник.