Умножение сожрёт всю выгоду на коротких прямых.
Странное число — максимальный размер буфера. Рациональное использование любого свободного кусочка.
Посчитал, первый inc hl можно заменить, он не попадает в границу.
Вид для печати
drbars, я к тому что у тебя максимальный размер линии 149 точек по вертикали
Игровое пространство 144 точки по вертикали.. буфер позволяет 149.
---------- Post added at 22:43 ---------- Previous post was at 22:29 ----------
Не получится наметить, я уже максимально оптимизировал. Старший адрес как раз и проверяет, закончился ли буфер.
85*3=255. Это значит что 2-ой INC HL попадает на границу. Если мы буфер на байт сдвинем, как из него выходить? L у нас может быть одинаковым 2 раза. Тут уже ничего не сделаешь.
Не забывай ещё, что буфер строится от конца к началу, а востанавливается от начала к концу.
ld sp,#7fff
выйдет только по этому адресу
#7eff на проверку не попадает, только #00 будет сравниваться с A (предыдущий же был #FD)
sp=#7fffЦитата:
ok, при размере буфера менее 2 секторов, граница переходится 1 раз, ежели наметить переход на команду ldi, тогда и оба inc hl получится заменить на inc l?
... видимо, с заменой cp h на cp l ...
...
заполнили буфер
...
a=#ff
...
ldi
cp l
jp nz,RES_LN
L при сравнении с A будет #ff только в конце.