        MAIN "",134

ERGB    CALL PRGB
        JP main

STANDART
        LD A,7
        LD (REALRGB),A
        CALL ReMixRgb
        XOR A
        LD (BORDER),A
        JP ReFr

CURRENT LD A,8
        LD (PAPER),A
        LD (INK),A
        LD A,2
        LD (FLASH),A
        LD (BRIGHT),A
        JP ReFr

CHANGE  LD A,(PAPER)
        LD B,A
        LD A,(INK)
        LD (PAPER),A
        LD A,B
        LD (INK),A
        JP ReFr

CONTR   LD A,(INK)
        CP 8
        JP Z,ergb_
        XOR 7
        LD (PAPER),A
        JP ReFr

TAKERGB CALL CLOSE
takergb CALL LOADSCR
        CALL NOKEY_
        LD HL,Ret
        LD A,ARW_SCN
        CALL GUI
        JR C,prgb_
        LD DE,(ARW_XC)
        CALL RASCHA
        LD A,(HL)
        LD (REALRGB),A
        CALL ReMixRgb
        CALL ReDrawC
        JR prgb_

CH16128 LD A,(f16128)
        CPL 
        LD (f16128),A
        CALL CLOSE
        JR prgb_

PRGB2   LD HL,Ret
        JR prgb

PRGB    LD HL,LOADSCR
prgb    LD (takergb+1),HL
prgb_   LD A,#00
f16128  EQU $-1
        AND A
        JP NZ,PRGB128
PRGB16  LD A,%1110
ergb    LD IX,WRgb
        LD (IX+6),A
        CALL Win_
        SUB 6
        JP Z,STANDART
        DEC A
        JP Z,CURRENT
        DEC A
        JR Z,CHANGE
        DEC A
        JR Z,CONTR
        DEC A
        JR Z,TAKERGB
        DEC A
        JR Z,CH16128
        LD A,(But)
        CP 9
        JP C,SetInk
        SUB 9
        CP 9
        JP C,SetPap
        SUB 9
        CP 8
        JP C,SetBord
        CALL CLOSE
        RET 

ergb_   LD A,%1100
        JR ergb

ReDrawC LD HL,rgbink+6
        LD A,(INK)
        CALL offall
        LD HL,rgbpap+6
        LD A,(PAPER)
        CALL offall
        LD HL,rgbbord+6
        LD A,(BORDER)
        EX AF,AF'
        LD A,8
        CALL ofa
        RET 

ReFr    CALL MixRgb
        CALL ReDrawC
        JR ergb_

MixRgb  CALL SPAPER
        LD B,A
        CALL SINK
        LD C,A
        CALL SBRIGHT
        LD D,A
        CALL SFLASH
        LD E,A
        XOR A
        OR B
        OR C
        OR D
        OR E
        LD (REALRGB),A
        LD A,(BORDER)
        OUT (#FE),A
        RET 

ReMixRgb
AA      LD A,(REALRGB)
ReMixC  PUSH AF
        AND #07
        LD (INK),A
        POP AF
        SRL A
        SRL A
        SRL A
        PUSH AF
        AND #07
        LD (PAPER),A
        POP AF
        SRL A
        SRL A
        SRL A
        PUSH AF
        AND 1
        LD (BRIGHT),A
        POP AF
        SRL A
        AND 1
        LD (FLASH),A
        RET 

SBRIGHT LD A,(BRIGHT)
        RRCA 
        RRCA 
        JR NC,rbr
        LD A,(REALRGB)
rbr     AND #40
        RET 

SFLASH  LD A,(FLASH)
        RRCA 
        CP 1
        JR NZ,bfl
        LD A,(REALRGB)
bfl     AND #80
        RET 

SPAPER  LD A,(PAPER)
        Amul8
        CP #40
        RET NZ
        LD A,(REALRGB)
        AND #38
        RET 

SINK    LD A,(INK)
        CP 8
        RET NZ
        LD A,(REALRGB)
        AND #07
        RET 

INK     DB 7
PAPER   DB 0

SetInk  LD (INK),A
        JP ReFr

SetPap  LD (PAPER),A
        JP ReFr

SetBord LD (BORDER),A
        JP ReFr

offall  EX AF,AF'
        LD A,9
ofa     PUSH HL
        LD DE,6
        LD BC,OFFS
offall_ LD (HL),C
        INC HL
        LD (HL),B
        INC HL
        ADD HL,DE
        DEC A
        JR NZ,offall_
        LD H,A
        POP BC
        EX AF,AF'
        Amul8
        LD L,A
        ADD HL,BC
        LD BC,ONS
        LD (HL),C
        INC HL
        LD (HL),B
        RET 

WRgb    DEFB 3,2,25,14,5*8,5,%00000110
; Bit 0 - окно с заголовком/без
; Bit 1 - "перерисовать" окно да/нет
; Bit 2 - тискать окно по экрану да/нет
; Bit 3 - выход из окна-ткнуть только лишь за пределами (CANCEL)
        DEFB 0
        DEFW TRGB         ; объект-текст
        DEFW SRGB         ; объект-подсветка (выборка)
        DEFW Nil          ; горячие клавиши
        DEFW BRGB         ; объект-кнопки (выборка)
        DEFW Nil          ; объект-флажки
        DEFW RRGB         ; объект-радио кнопки
        DEFW Nil          ; ползунок
        DEFW Nil          ; вызов при создании
        DEFW Nil          ; вызов на "прерываниях"

TRGB    DB "Чернила",13,13
        DB "Бумага",13,13
        DB "Бордюр",13,13,15,13
        DB "Яркость Мигание >>>",13,13
        DB "Выкл",13
        DB "Вкл",13
        DB "Нет",13
        DB 22,6,10
        DB "Выкл",13
        DB "Вкл",13
        DB "Нет",13
        DB 22,14,8
        DB "Стандартные",13
        DB "Прозрачные",13
        DB "Обмен",13
        DB "Контраст",13
        DB "Взять",13
        DB 0

; bit 0 - подсвечивать (да/нет)
; bit 1 - клавиша "заморожена"
SRGB    DEFB 1,10,4,1,%10
        DEFB 1,11,4,1,%10
        DEFB 1,12,4,1,%10
        DEFB 6,10,4,1,%10
        DEFB 6,11,4,1,%10
        DEFB 6,12,4,1,%10

        DEFB 14,8,7,1,%11
        DEFB 14,9,7,1,%11
        DEFB 14,10,7,1,%11
        DEFB 14,11,7,1,%11
        DEFB 14,12,7,1,%11

        DEFB 11,8,2,1,%11
        DEFB #FF

; x, y, номер опции, кол-во, текущий
; адрес обработчика OnClick
RRGB    DEFB 4,10,0,3,0
BRIGHT  EQU $-1
        DEFW MixRgb
        DEFB 9,10,3,3,0
FLASH   EQU $-1
        DEFW MixRgb
        DEFB #FF

; x, y, длина, высота, цвет, флаг
; адрес спрайта кнопки
; флаги:
; Bit 0 - клавиша нажимается (yes/no)
; Bit 1 - клавиша "заморожена"

BRGB
rgbink  DEFB 6,1,2,2,7*8,%10
        DEFW OFFS
        DEFB 8,1,2,2,1,%10
        DEFW OFFS
        DEFB 10,1,2,2,2,%10
        DEFW OFFS
        DEFB 12,1,2,2,3,%10
        DEFW OFFS
        DEFB 14,1,2,2,4,%10
        DEFW OFFS
        DEFB 16,1,2,2,5,%10
        DEFW OFFS
        DEFB 18,1,2,2,6,%10
        DEFW OFFS
        DEFB 20,1,2,2,7,%10
        DEFW ONS
        DEFB 22,1,2,2,7,%10
        DEFW OFFS

rgbpap  DEFB 6,3,2,2,7*8,%10
        DEFW ONS
        DEFB 8,3,2,2,1,%10
        DEFW OFFS
        DEFB 10,3,2,2,2,%10
        DEFW OFFS
        DEFB 12,3,2,2,3,%10
        DEFW OFFS
        DEFB 14,3,2,2,4,%10
        DEFW OFFS
        DEFB 16,3,2,2,5,%10
        DEFW OFFS
        DEFB 18,3,2,2,6,%10
        DEFW OFFS
        DEFB 20,3,2,2,7,%10
        DEFW OFFS
        DEFB 22,3,2,2,7,%10
        DEFW OFFS

rgbbord DEFB 6,5,2,2,7*8,%10
        DEFW ONS
        DEFB 8,5,2,2,1,%10
        DEFW OFFS
        DEFB 10,5,2,2,2,%10
        DEFW OFFS
        DEFB 12,5,2,2,3,%10
        DEFW OFFS
        DEFB 14,5,2,2,4,%10
        DEFW OFFS
        DEFB 16,5,2,2,5,%10
        DEFW OFFS
        DEFB 18,5,2,2,6,%10
        DEFW OFFS
        DEFB 20,5,2,2,7,%10
        DEFW OFFS
        DEFB 22,5,2,2,7,%00
REALRGB EQU $-2
        DEFW DTRS
        DB #FF

; 128 colors

PRGB128 LD IX,WRgb128
        CALL Win_
        AND A
        JP Z,CH16128
        LD A,(ARW_XC)
        LD (ax),A
        LD D,A
        LD A,(IX+0)
        CP D
        JP NC,z2
        ADD A,(IX+2)
        CP D
        JP C,z2
        LD A,(ARW_YC)
        LD (ay),A
        LD D,A
AZ      LD A,(IX+1)
        CP D
        JP NC,z2
        ADD A,(IX+3)
        DEC A
        DEC A
        CP D
        JP C,z2
        LD DE,(ax)
        CALL RASCHA
cl      LD A,0
        LD (REALRGB),A
        CALL ReMixRgb
        CALL ReDrawC
z2      CALL CLOSE
        RET 

ax      DB 0
ay      DB 0

M128    LD DE,(ARW_XC)
        CALL RASCHA
        LD A,(HL)
        LD (cl+1),A
        RET 

Acr     LD D,(IX+0)
        INC D
        LD E,(IX+1)
        INC E
        PUSH DE
        CALL RASCH
        LD B,8*8
Acr4    PUSH BC
        PUSH HL
        LD B,16
        LD A,#FF
Acr3    LD (HL),A
        INC HL
        DJNZ Acr3
        POP HL
        CALL INC_Y
        POP BC
        DJNZ Acr4
        POP DE
        LD A,D
        LD D,E
        LD E,A
        CALL RASCHA
        LD C,0
Acr2    LD B,0
        LD D,#80
Acr1    LD A,B
        SLA A
        SLA A
        SLA A
        OR C
        OR D
        LD (HL),A
        INC L
        LD A,D
        XOR #40
        LD D,A
        CP #80+#40
        JR Z,MPS
        INC B
MPS     LD A,B
        CP 8
        JR C,Acr1
        INC C
        LD DE,32-16
        ADD HL,DE
        LD A,C
        CP 8
        JR C,Acr2
        RET 

WRgb128 DEFB 7,3,18,12,7,7,%00000110
; Bit 0 - окно с заголовком/без
; Bit 1 - "перерисовать" окно да/нет
; Bit 2 - тискать окно по экрану да/нет
; Bit 3 - выход из окна-ткнуть только лишь за пределами (CANCEL)
        DEFB 0
        DEFW TRGB128      ; объект-текст
        DEFW SRGB128      ; объект-подсветка (выборка)
        DEFW Nil          ; горячие клавиши
        DEFW Nil          ; объект-кнопки (выборка)
        DEFW Nil          ; объект-флажки
        DEFW Nil          ; объект-радио кнопки
        DEFW Nil          ; ползунок
        DEFW Acr          ; вызов при создании
        DEFW M128         ; вызов на "прерываниях"

TRGB128 DB 22,8,10,"Типа круто >>>",13
        DB 0

; bit 0 - подсвечивать (да/нет)
; bit 1 - клавиша "заморожена"
SRGB128 DEFB 8,10,9,1,%11
        DEFB #FF
;-----------------------------------------------------------
; -- Мини-RGB меню (по клавише K) -----------------------
;-----------------------------------------------------------
SETc    CALL ReMixRgb
        JP ReDrawC

Col     PUSH IX
        LD IX,TCol
        CALL POPUP
        CALL GETBLK
        LD DE,DTRS
        CALL LoadWS

co      LD A,(REALRGB)
        CALL SETc
co_     LD A,(REALRGB)
        CALL setv

col     LD BC,#BFFE
        IN A,(C)
        BIT 2,A
        JP NZ,ec

        LD BC,#F7FE
        IN A,(C)
        BIT 0,A
        JP Z,mi
        BIT 1,A
        JP Z,pi
        BIT 2,A
        JP Z,Mp
        BIT 3,A
        JP Z,Pp
        BIT 4,A
        JP Z,sb

        LD BC,#EFFE
        IN A,(C)
        BIT 4,A
        JP Z,sF
        BIT 0,A
        JP Z,tof
        BIT 1,A
        JP Z,ton
        JR col

tof     XOR A
        LD (INK),A
        LD (PAPER),A
        LD (FLASH),A
        LD (BRIGHT),A
t_      IN A,(C)
        LD BC,#EFFE
        BIT 0,A
        JR Z,t_
        LD A,7
        LD (REALRGB),A
        JP co

ton     LD A,8
        LD (INK),A
        LD (PAPER),A
        LD A,2
        LD (BRIGHT),A
        LD (FLASH),A
T_      LD BC,#EFFE
        IN A,(C)
        BIT 1,A
        JR Z,T_
        CALL MixRgb
        CALL ReDrawC
        JP co_

sb      LD A,(REALRGB)
        AND #40
        ADD A,#40
        AND #40
        LD C,A
        LD A,(REALRGB)
        AND #FF-#40
        OR C
        LD (REALRGB),A
s_      LD BC,#F7FE
        IN A,(C)
        BIT 4,A
        JR Z,s_
        JP co

sF      LD A,(REALRGB)
        AND #80
        ADD A,#80
        AND #80
        LD C,A
        LD A,(REALRGB)
        AND #FF-#80
        OR C
        LD (REALRGB),A
f_      LD BC,#EFFE
        IN A,(C)
        BIT 4,A
        JR Z,f_
        JP co

pi      LD A,(REALRGB)
        AND 7
        INC A
        AND 7
        LD C,A
        LD A,(REALRGB)
        AND #FF-7
        OR C
        LD (REALRGB),A

p_      LD BC,#F7FE
        IN A,(C)
        BIT 1,A
        JR Z,p_
        JP co

Pp      LD A,(REALRGB)
        AND #38
        RRCA 
        RRCA 
        RRCA 
        INC A
        RLCA 
        RLCA 
        RLCA 
        AND #38

        LD C,A
        LD A,(REALRGB)
        AND #FF-#38
        OR C
        LD (REALRGB),A

P_      LD BC,#F7FE
        IN A,(C)
        BIT 3,A
        JR Z,P_
        JP co

Mp      LD A,(REALRGB)
        AND #38
        RRCA 
        RRCA 
        RRCA 
        DEC A
        RLCA 
        RLCA 
        RLCA 
        AND #38

        LD C,A
        LD A,(REALRGB)
        AND #FF-#38
        OR C
        LD (REALRGB),A

M_      LD BC,#F7FE
        IN A,(C)
        BIT 2,A
        JR Z,M_
        JP co

mi      LD A,(REALRGB)
        AND 7
        DEC A
        AND 7

        LD C,A
        LD A,(REALRGB)
        AND #FF-7
        OR C
        LD (REALRGB),A

m_      LD BC,#F7FE
        IN A,(C)
        BIT 0,A
        JR Z,m_
        JP co

ec      CALL CLOSE
        POP IX
        RET 

TCol    DB 0,0,2,2

GetATR  LD A,(REALRGB)
        RET 

