_y=0
_sa=0x5800
_a=attr
       ;28 знакомест без патча:
        dup MCHGT
        dup 4
;4YYYyy -> 4yy YYY00000
_a=((_y&3)*0x100)+(((_y&0x1c)/4)*32)+(((_y&0x20)/0x20)*0x400)+attr
        ;display _a
;-109 (выдерживает -14 от этого)
        ld sp,_a+8
        pop bc:pop de:pop hl:exx:pop af:pop bc:pop de:pop ix:pop iy ;68+34
        ld sp,_sa+24 ;куда выводить через push ;10
;+3
        ld hl,(_a+2)
;(выведены 6-7,8-9)
        ld (_sa+2),hl ;+32,40 (2,3)
        ld hl,(_a+4)
;(выведены 16-17,18-19)
        ld (_sa+4),hl ;+72,80 (4,5)
        ld hl,(_a+6)
;(выведены 26-27,28-29)
        ld (_sa+6),hl ;+112,120 (6,7)
        push iy ;+135 (23,22) <--- при смещении -14(даже -17) эта команда выравнивается на 120(106+12),128
        push ix ;+150 (21,20)
        push de ;+161 (19,18)
        push bc ;+172 (17,16)
        push af ;+183 (15,14)
        exx ;+187
        push hl ;+198 (13,12)
        push de ;+209 (11,10)
        push bc ;+220 (9,8)
        ld sp,_a+24 ;откуда делать pop ;+230=+8 ;-4 t на 128/+3
        pop hl ;+18 ;-4 t на 128/+3
;(выведены 6-7,8-9)
        ld (_sa+24),hl ;+32,40 (24,25)
        pop hl
;(выведены 14-15,16-17)
        ld (_sa+26),hl ;+64,72 (26,27)
        pop hl
;(выведены 22-23,24-25)
        ld (_sa+28),hl ;+96,104-1 (28,29)
;=212 t - надо паузу 5..12 (на 128K/+3 будет 212 t - надо паузу 9..16)
;т.е. надо паузу 11 t (add hl,hl) для всех машин
;терпит смещение на -14 (INT пришёл ровно между командами), даже -17
;терпит смещение на +8 (INT пришёл на команде длительностью 22t)
;теперь синхронизатор не нужен при командах до 22t включительно - нельзя использовать команды типа rl (ix), set 0,(ix) и ex (sp),ix, остальные можно, в том числе можно rld и bit n,(ix)
;начинать мультиколор на 14237+0..22
;или начинать на 1 такт раньше, тогда можно все команды (в том числе 23t)
        add hl,hl ;в последней строке не ставить
_y=_y+1
;_a=_a+32
        edup
_sa=_sa+32
        edup
        org $-1
