Цитата Сообщение от KTSerg Посмотреть сообщение
Не выдержала душа поэта... с утреца всё перелопатил.

Первоначальный вариант теста давал не совсем корректный результат, т.к. во время тестирования быстродействия алгоритма вывода было ещё много накладных вычислений перед выводом каждого спрайта. в основном это вычисление адреса спрайта, который нужно вывести на экран, т.к. фактически сразу выводились показания счётчика.
Переписал само тестирование. Сейчас кроме вывода спрайта в цикле минимум, вот пример:

Скрытый текст

Код:
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

Во вложении сам тест и его исходник.
Пытаяс понять как работает твоя реализация прерываний нашел один избыточный кусочек кода как мне кажется:

Код:
StInt:
	xthl		; обмен hl <-> ((sp))
	shld	im_ret+1	; сохраним адрес возврата из прерывания
	pop	h
	shld	im_hl+1		; сохраним значение HL при выхове прерывания
	push	psw
	lxi	h,2	;\ вычисляем указатель стека
	dad	sp	;/
	shld	im_sp+1	; сохраним указатель стека
	pop	psw
	push	b	;восстановим данные испорченные стеком
	
	lxi	sp,im_stek	; временный указатель стека для прерываний
	push	PSW
	push	b
	push	d
кажется что тут избыточно порталкивание PSW в стек и обратно. Как мне кажется его можно убрать, и заодним убрать смешение SP на 2 в команде DAD

Код:
StInt:
	xthl		; обмен hl <-> ((sp))
	shld	im_ret+1	; сохраним адрес возврата из прерывания
	pop	h
	shld	im_hl+1		; сохраним значение HL при выхове прерывания
	lxi	h,0	;\ вычисляем указатель стека
	dad	sp	;/
	shld	im_sp+1	; сохраним указатель стека
	pop	psw
	push	b	;восстановим данные испорченные стеком
	
	lxi	sp,im_stek	; временный указатель стека для прерываний
	push	b
	push	d
Поправь меня пожалуйста если ошибаюсь

- - - Добавлено - - -

Цитата Сообщение от KTSerg Посмотреть сообщение
Они содержатся не в моём коде.
Судя по переписке
https://zx-pk.ru/threads/31954-pishu...=1#post1075237
Я сам не знал что это такое, чтобы заменить чем-то соответствующим для Вектора.
Мнемоника команд кода в котором они были, очень похожа на мнемонику для Z80.

Поисковик дал такую ссылки:
https://zx-pk.ru/threads/447-sjasmpl...l=1#post903843
https://zx-pk.ru/threads/447-sjasmpl...l=1#post904360
http://zxpress.ru/article.php?id=14690
Действительно ошибся. Спасибо за ссылки.