ZXNet эхоконференция «code.zx»
тема: Требуются ещё...
от: Alexander Bondarenko
кому: All
дата: 03 Jun 2003
*Здравствуй, All!*
Hадо пpоцедypы:
1. Вычисление адpеса экpана исходя из пиксельных кооpдинат.
2. Вычисление адpеса в атpибyтах исходя из экpанного адpеса.
/Вот и всё, All, можешь листать дальше.../
от: Evgeny Goljakov
кому: Alexander Bondarenko
дата: 05 Jun 2003
Привет, Alexander.
Вт 3 Июн 02 Alexander Bondarenko -> All:
Увааах!
AB> 1. Вычисление адpеса экpана исходя из пиксельных кооpдинат.
AB> 2. Вычисление адpеса в атpибyтах исходя из экpанного
AB> адpеса.
Если никаких огранечений нет то ты так и напиши ;)))
Могу посоветовать табличку адресов всех точек экрана расписать
и поискать в ней.
11 ADD HL,SP //нач. таблички + (номер пиксела*2)
10 POP rr
--
21 такт
Спасибо за внимание.
от: Kirill Frolov
кому: Alexander Bondarenko
дата: 10 Jun 2003
On Tue, 03 Jun 2003 22:39:00 +0400, Alexander Bondarenko wrote:
AB> 1. Вычисление адpеса экpана исходя из пиксельных кооpдинат.
AB> 2. Вычисление адpеса в атpибyтах исходя из экpанного адpеса.
Адрес битмапа в экране, 16 бит слово, биты (слева старший):
B1 B0 e0 L4 L3 y2 y1 y0 L2 L1 L0 C4 C3 C2 C1 C0
Адрес цвета в экране:
B1 B0 0 1 1 0 L4 L3 L2 L1 L0 C4 C3 C2 C1 C0
B0,1 = банка 5 или 7 (два младших бита)
e0 = нечётное знакоместо в режиме 512x192, иначе 0.
L4,3,2,1,0 = знакоместо по Y координате (0..23)
y2,1,0 = пиксель по Y координате (0..7)
C4,3,2,1,0 = знакоместо по X координате (0..31)
точка начала координат находится в верхнем левом углу экрана,
Y координата -- вертикальная, X -- горизонтальная оси.
Теперь по твоим вопросам:
П.1
(y>>3)&0x18|bank|(y&7)|((y<<5)&0xe0)|((x>>3)&0x1f)
в зависимости от номера банка
и используемых регистров возможна
оптимизация программы на ассемблере...
П.2
(address>>3)&7|0x18|bank
в зависимости от номера банка
и используемых регистров возможна
оптимизация программы на ассемблере...
--
[ZX]
|