Цитата Сообщение от Doctor Max
Ну почему же, в те же старые добрые я использовал вот такую процедуру:
Код:
LD H,#80   ;7
LD A,(HL)  ;7
INC H       ;4
LD B,(HL)  ;7
INC H       ;4
LD L,C      ;4
OR (HL)    ;7
LD C,A     ;4
INC H      ;4
LD A,(BC) ;7
OR (HL)    ;7
LD (BC),A ;7
Итого 69 тактов.
Если адрес таблицы держать в регистре E, то первая строка заменяется на: LD H,E и получаем ускорение на 3 такта
ZX-Guide#1:
<Точка Старых>: по координатам,заданным
в регистрах L=y, E=x, в произвольном месте
экрана(и даже за экран)за 58(!)тактов ста-
вится точка.Регистр C равен старшему байту
адреса таблиц('TABLE), регистр D=C+2.
LD H,C
LD A,(DE);x/8┐
INC D ├даёт младший байт
OR (HL);L(y) ┘
INC H
LD H,(HL);H(y)
LD L,A
LD A,(DE);byte(x)
(X)OR (HL);метод постановки точки
LD (HL),A
Если вместо последних 2 команд вставить
AND (HL),то это будет функция POINT. Чтобы
процедура работала многократно, в конце её
поставьте DEC D. Таблицы генерируются сле-
дующей программой:
LD HL,TABLE+256
LD DE,#4000
GEN0 LD (HL),D ┐
DEC H │
LD (HL),E │
INC H │
DOWN DE │1-я
LD A,D ├ и
SUB 88 │2-я
JR NZ,$+3 │
LD D,A │
INC L │
JR NZ,GEN0 ┘
INC H
LD A,128
GEN1 LD (HL),E ┐
INC H │
LD (HL),A │
DEC H │3-я
RRCA ├ и
JR NC,$+3 │4-я
INC E │
INC L │
JR NZ,GEN1 ┘