Связь адреса аттрибутов с адресом экрана — различия между версиями
Материал из SpeccyWiki
Goblinish (обсуждение | вклад) (Новая страница: «Для пересчета адреса аттрибутов по адресу экрана необходимо знать соответствие двух об...») |
Kotompazb (обсуждение | вклад) м (Исправлен адрес начала Третьей трети атрибутов.) |
||
(не показаны 3 промежуточные версии 2 участников) | |||
Строка 1: | Строка 1: | ||
Для пересчета адреса аттрибутов по адресу экрана необходимо знать соответствие двух областей памяти экранной области: | Для пересчета адреса аттрибутов по адресу экрана необходимо знать соответствие двух областей памяти экранной области: | ||
− | часть 1: #4000-#47FF - экран, #5800-#58ff - аттрибуты | + | часть 1: #4000-#47FF - экран, #5800-#58ff - аттрибуты<br /> |
− | часть 2: #4800-#4FFF - экран, #5900-#59ff - аттрибуты | + | часть 2: #4800-#4FFF - экран, #5900-#59ff - аттрибуты<br /> |
− | часть 3: #5000-#57FF - экран, # | + | часть 3: #5000-#57FF - экран, #5A00-#5Aff - аттрибуты |
таким образом, бинарное представление выглядит как: | таким образом, бинарное представление выглядит как: | ||
Строка 22: | Строка 22: | ||
pop hl | pop hl | ||
ret | ret | ||
− | <pre> | + | </pre> |
+ | приведенный пример имеет один недостаток: при использовании адреса #C000-#D7FF в странице 5 и 7 бит7 не учитывается. | ||
+ | |||
+ | Если известно, что указатель на графику указывает на верхнюю строку знакоместа, то вычисления проще: ld a,d:rrca:rrca:rrca:add a,80. | ||
[[Категория:Программирование графики]] | [[Категория:Программирование графики]] |
Текущая версия на 21:15, 16 июля 2017
Для пересчета адреса аттрибутов по адресу экрана необходимо знать соответствие двух областей памяти экранной области:
часть 1: #4000-#47FF - экран, #5800-#58ff - аттрибуты
часть 2: #4800-#4FFF - экран, #5900-#59ff - аттрибуты
часть 3: #5000-#57FF - экран, #5A00-#5Aff - аттрибуты
таким образом, бинарное представление выглядит как:
- 40=01.00 0.000 58=0101 1.000
- 48=01.00 1.000 59=0101 1.001
- 50=01.01 0.000 5A=0101 1.010
это старший байт адреса, младший байт адреса не играет роль для аттрибута и знакоместа. Код:
;DE-адрес экранной области,A-цвет аттрибута ;!использует регистр С! push hl ld l,e,c,a;a=attribute ld a,d:and %00111000 rra:rra:rra or %01011000 ld h,a ld (hl),c pop hl ret
приведенный пример имеет один недостаток: при использовании адреса #C000-#D7FF в странице 5 и 7 бит7 не учитывается.
Если известно, что указатель на графику указывает на верхнюю строку знакоместа, то вычисления проще: ld a,d:rrca:rrca:rrca:add a,80.