(c) Д.Анисимов, г.Киров, 1996.
Хочу предложить в раздел "ЭТЮДЫ" несколько разработанных мною процедур.
Первая - процедура расчета адреса в файле атрибутов из координат:
Первый вариант:
X-координата в D
Y-координата в E
LD A,E
ADD A,A
ADD A,A
ADD A,A
LD L,A
LD H,#16
ADD HL,HL
ADD HL,HL
LD A,L
OR A
LD L,A
Второй вариант:
X-координата в H
Y-координата в L
LD A,H
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD H,#16
ADD HL,HL
ADD HL,HL
ADD A,L
LD L,A
На выходе обеих процедур в HL - адрес файла атрибутов.
Решить противоположную задачу можно так:
В HL - адрес.
Первый вариант:
LD A,L
AND #1F
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD L,A
LD A,H
AND #1F
LD H,A
на выходе:
в H-y координата
в L-x координата
Второй вариант:
LD A,L
AND #1F
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD L,H
LD H,A
LD A,L
AND #1F
LD L,A
на выходе:
в H-x координата
в L-y координата.
И еще одна простенькая процедура для расчета адреса в экранном файле из
адреса в файле атрибутов:
В HL-адрес в файле атрибутов
LD A,H
ADD A,A
ADD A,A
ADD A,A
AND #7F
LD H,A
В HL-адрес экранного файла