А я быстрее, причём намного быстрееСообщение от Arigato
1) Вариант без всяких изворотов - это твой
2) вариант с изворотами - в D заполняем #40, после чего если добавить после in a,(254) add a,d то во флаге переноса будет значение нужного бита (кто не верит пусть проверит)
Тогда
DI
IN A, (254)
ADD A,D
OUT (254), A
JR $ - 7
3) И это не предел
Переход всегда осуществляется по одному и тому же адресу... а значит можно его запрограммировать и ускориться
Даже если просто вголую заменить JR на JP то уже каждый цикл будет на 2 такта быстрее (10 тактов для JP и 12 тактов для JR)
DI
LD HL,METKA
METKA:IN A, (254)
ADD A,D
OUT (254), A
JP (HL)
4) И это не предел, можно ещё уменьшить затраты (как?).
Просто! Развернём
DI
LD HL,METKA
METKA:IN A, (254)
ADD A,D
OUT (254), A
IN A, (254)
ADD A,D
OUT (254), A
.... ; много-много раз
IN A, (254)
ADD A,D
OUT (254), A
JP (HL)
В этом случае накладные расходы связанные с переходом JP (HL) будут минимальные, и быстрее проигрывать состояние УХА ничего не будет (по крайней мере напрямую).
А вот если работать через память (вначале оцифровывать а затем проигрывать)там можно уж совсем быстро (за 21 такт), но это уже будет совсем некороткая процедурка (((-;
А если просто (заранее оцифрованный звук) выводить там и до 12 тактов можно дорасти (((-; Если заинтересовались читайте мою статью, в 3-Bit была первая часть, а вторая часть пока неопубликована.




Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 
