вывод цветных точек в экран и линейные атрибуты:
выводить атрибут только тогда, когда знакоместо пустое - это нормально, точка будет просто мерцать, зато фон не испортится


   <Точка Старых>: по координатам,заданным
в регистрах 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

        ex de,hl
        ld a,(hl) ;x
        ld c,a
        add a,?xspeed ;/ld c,(hl):inc/dec (hl)
        ld (hl),a
        inc l
        ld a,(hl) ;yspeed
        inc (hl) ;yspeed++ ;можно inc a:ld (rp),a
        inc l
        add a,(hl) ;y ;обязательно hl, иначе тормоз
        ld (hl),a
        inc l
        ex de,hl
     ld l,a ;y
     LD H,ty/256
     LD b,(HL) ;H(y)
     inc h
     ld a,(HL) ;L(y)
     inc h
     ld l,c ;x
     or (hl) ;x/8 ;обязательно hl, иначе тормоз    
     LD c,A
     inc h
     LD A,(bc)
     XOR (HL) ;byte(x) ;либо таблица, либо экран должны быть в hl
     LD (bc),A
;48+52+10 = 110 t рисование/стирание без атрибутов и call, итого 220 t/dot
очень много кода и таблиц! нужен цикл (по E!=0?)

     
dot
;c=color
;a=x
;l=y
srl a ;rra не получается при вычислениях
jr c,...
rra/srl a
jr c,...
ld h,ty/256
add a,(hl)
inc h
ld h,(hl)
ld l,a
;стирание будет res ..,(hl):ret - а как быть, если пролетело через препятствие или хотя бы лестницу???
;ld a,(hl)
;set ..,(hl)
;inc h
;or (hl)
;ret nz ;no attr
;ld a,h
;rra
;add a,attr/256 - 0x40
;ld (hl),c ;color
;ret
;или по xor (с возможностью пролетания через препятствия):
ld a,(hl)
xor ..
ld (hl),a
;стирание будет ret
xor .. ;иначе можно попортить цвет фона, если в нём только один пиксель
inc h
or (hl)
ret nz ;no attr
ld a,h
rra
add a,attr/256 - 0x40
ld h,a
ld (hl),c ;color
ret
;~144 t рисование, 96 t стирание

как двигать эти точки с учётом гравитации (TODO учёт препятствия внизу? вверх можно пролетать?):
у каждой точки есть x,y,xspeed (можно не хранить xspeed, а просто группировать точки), yspeed, color (можно тоже не хранить, а группировать точки)
можно двигать сразу при отрисовке, а при стирании читать эти же данные заново (надо гарантию, что не произойдёт прерывание)

ex de,hl
ld a,(hl) ;yspeed
inc (hl) ;yspeed++
inc l
add a,(hl) ;y
ld (hl),a
ld e,a ;y
inc l
ld a,(hl) ;x
add a,b ;xspeed
ld (hl),a
inc l
ex de,hl
;l=y
;a=x
call dot ;рисование
;90+144 t

...

inc e
ld a,(de) ;y
ld l,a
inc e
ld a,(de)
inc e
;l=y
;a=x
call redot ;стирание
;47+96 t

;итого 377 t/dot
;если потратить на них 32 строки экрана, то 19 dots
