Немного непонятен вопрос. Для ПК8000 объяснение пойдет? Вообще у точки нет адреса. Адрес есть у группы из 8 точек. И с этим связано куча проблем. В листинге вариант похожий на Басиковский. Конечно, он далеко не оптимален. До конца не удалось разобраться, в каких случаях какая маска должна накладывается, но общий принцип думаю ясен.
Код:
push h
mvi h, <координата Y>
mvi l, <координата X>
mov a, h
cpi 0C0h ; Сравниваем координату с 192
jnc loc_1876 ; Если Y больше 192, то сразу выходим
ani 0F8h
rrc
rrc
rrc
mov d, a ; в D - номер большой строки (высота большой строки = 8 пикселей).
; По сути это старший байт адреса, т. к. большая строка занимает 256 байт
mov a, h
ani 7
mov e, a ; в E - номер пикселя по вертикали в большой строке
mov a, l
ani 0F8h
ora e
mov e, a ; Тут почти готовый адрес байта, в который точку впечатать надо
mov a, l ; Вычислим, какой бит надо установить, чтобы получилась точка (остальные 7 битов не трогаем!)
call PSETBIT ; Обработка отдельного бита в команде PSET (в B )
lda PSETC ; Цвет точки у команды PSET
mov c, a
lhld GTBL1 ; Адрес таблицы точек изображения в режиме 2
dad d
mov d, h
mov e, l ; В DE и HL искомый адрес
cpi 10h ; Цветов всего 15
push d
call VRAMBTRD ; HL=адрес (A=байт: чтение байта из видео-ОЗУ VRAM).
mov d, a
mov a, b
jc loc_1867 ; Нужно сложить биты по маске OR
jz loc_1878 ; Складываем биты по маске XOR
cma
ana d ; Маска AND
mov m, a
jmp loc_1874
loc_1867:
ora d ; Маска OR
mov m, a
mov a, h
xri 20h
mov h, a
call VRAMBTRD ; HL=адрес (A=байт: чтение байта из видео-ОЗУ VRAM).
ani 0F0h
ora c
mov m, a
loc_1874:
mov a, d
pop d
loc_1876:
pop h
ret
loc_1878:
mov a, h
xri 20h ; Маска XOR
mov h, a
call VRAMBTRD ; HL=адрес (A=байт: чтение байта из видео-ОЗУ VRAM).
mov c, a
jmp loc_1874
BITS80: .db 10000000b
BITS40: .db 1000000b
BITS20: .db 100000b
BITS10: .db 10000b
BITS08: .db 1000b
BITS04: .db 100b
BITS02: .db 10b
BITS01: .db 1
---------- Post added at 11:03 ---------- Previous post was at 10:55 ----------
Если у Вас вариант упрощённый, адрес видеобуфера с 0x0000 и т .д., то Вам нужно только до слов "Тут почти готовый адрес байта".