;-------------- Наложения по ... / перемещено из 'Chnk1.asm'


MixingPgn
          DISP PgnAdr

BMask     call CnkAddSw
.s       ld a,%1111
bmask   LD IX,WMask
        LD (IX+6),A
        CALL Win_
        CP #FF
      ;  JP Z,RES_TSK2
        jp z,bcnk.exitS_
        LD BC,TBMask
        JP TAB_JP


bmask_  LD A,%1101
        JR bmask

WMask   DB 13,2,12,11,2*8+6,6*8,%1111      ; DEFB 13,2,8,9,2*8+6,6*8,%00001111
; Bit 0 - окно с заголовком/без
; Bit 1 - "перерисовать" окно да/нет
; Bit 2 - тискать окно по экрану да/нет
; Bit 3 - выход из окна-ткнуть только лишь за пределами (CANCEL)
        DEFB 0
        DEFW TMask        ; объект-текст
        DEFW SMask        ; объект-подсветка (выборка)
        DEFW Nil          ; горячие клавиши
        DEFW Nil          ; объект-кнопки (выборка)
        DEFW SwMask       ; объект-флажки
        DEFW #FFFF

; +14
; x, y, номер опции, состояние (#00/#FF)
SwMask
  ;  if rus
  ;      DEFB 4,7,3,0
  ;  else
  ;      DEFB 6,7,3,0
  ;  endif
         DB 10,8,4,0         ; для 2-го экрана-маски /DA
swmask2 EQU $-1
         DW Nil             ; DEFW Nil
         DB 10,9,5,0         ; DEFB #FF
swmask  EQU $-1
         DW Nil
         DB #FF

SMask     ; DB 1,3,7,1,%11  ; DEFB 1,3,6,1,%11
          ; DB 1,4,7,1,%11  ; DEFB 1,4,6,1,%11
          ; DB 1,5,7,1,%11  ; DEFB 1,5,6,1,%11
          ; DB 1,6,7,1,%11
          DB 1,3,10,128+4,%11
          ; DB 1,8,7,1,%11
          ; DB 1,9,7,1,%11  ; DEFB 1,7,6,1,%10
          DB 1,8,10,128+2,%11
          DB #FF          ; DEFB #FF

TMask
;    if rus                           ; замена метода локализации + изменение меню /DA
;        DB #8d,#a0,#ab,#ae,#a6,#a5,#ad,#a8,#a5,13;"Наложение",13
;        DB "2-",#a9,#20,#ed,#aa,#e0,#a0,#ad,13;й экран",13
;        DB #84,#a8,#a7,#a5,#e0,#a8,#ad,#a3,13;"Дизеринг",13
;        DB #94,#a0,#a9,#ab,#5f,13;"Файл_",13
;        DB 15,13
;        DB #8e,#aa,#ad,#ae,#20,0;"Окно ",0
;    else
;        DB "Mixing",13
;        DB "2 screen",13
;        DB "Chunk",13
;        DB "File_",13
;        DB 15,13
;        DB "Window",0
;    endif
;
          MSG_Mix_Mixing : DB 13
          MSG_Mix_2screen : DB 13
          MSG_Mix_Chunk : DB 13
          MSG_Mix_Txtr : DB 13
          MSG_Mix_File : DB 13
          DB 15,13
          MSG_Mix_Scr2msk : DB 13
          MSG_Mix_Window : DB 0


WMMeth  DEFB 14,4,4,5,5*8,5,%00001110
; Bit 0 - окно с заголовком/без
; Bit 1 - "перерисовать" окно да/нет
; Bit 2 - тискать окно по экрану да/нет
; Bit 3 - выход из окна-ткнуть только лишь за пределами (CANCEL)
        DEFB 0
        DEFW TMMeth       ; объект-текст
        DEFW SMMeth       ; объект-подсветка (выборка)
        DEFW #FFFF

SMMeth  ; DEFB 1,1,2,1,%11
        ; DEFB 1,2,2,1,%11
        ; DEFB 1,3,2,1,%11
        DB 1,1,2,128+3,%11
        DEFB #FF

TMMeth  DB "Or",13
        DB "Xor",13
        DB "And",0

TBMask  DW MRA
        DW MCN
        DW MixTxtr   ; c текстурой /DA
        DW MSKLD
;       DW CHM

MMeth   LD IX,WMMeth
        CALL Win_
        PUSH AF
        CALL NOKEY_
        CALL CLOSE
        POP AF
        CP #FF
        JP Z,scf
        LD BC,MA
        CALL TAB_HL
        CALL JP_HL
        XOR A
        RET

MA      DEFW Or
        DEFW Xo
        DEFW An

An      LD A,#A6
        LD (MDE),A
        RET
Xo      LD A,#AE
        JR An+2
Or      LD A,#B6
        JR An+2

MSKLD   CALL MMeth
        JP C,bmask_
        AND A
        RET NZ
        LD HL,SORTscr
        CALL FilerE
        JP C,bmask
       ; CALL CLS   ; /DA
        LD HL,#4000
        LD DE,(START_SEC)
        LD C,14
        LD A,(SEC_LEN)
        LD B,A
        CALL DOS_FUNC_
        JP C,Main
      ;  LD A,ScrPage
      ;  CALL RAM
      ;  JP RET2
        jr MRA.rscr
;.....................................
MCN     CALL TstID
        JP NZ,bmask_
        CALL MMeth
        JP C,bmask_
       ; CALL CLS
        CALL CHN_SCRR
      ;  LD A,ScrPage
      ;  CALL RAM
      ;  JR RET2
        jr MRA.rscr

; MRA     CALL MMeth           ; /DA
MRA      xor a                ; запрет использования второго экрана как маски
         ld (swmask2),a
         call MMeth
        JP C,bmask_
       ; CALL CLS
        LD A,RamPage
        CALL RAM
        LD HL,#C000
        LD DE,#4000
        LD BC,6912
        LDIR
.rscr  ; LD A,ScrPage
       ; CALL RAM
        call ScrRam
RET2    CALL SV_UNDO
        LD HL,SCREEN+6144
        LD DE,#5800
        LD BC,768
        LDIR
           call ERASE_ALLW   ; /DA
        LD HL,SCREEN
        LD DE,#4000
        LD BC,6144
;c6      LD A,(DE)           ; в подпрограмму /DA
;MDE     AND (HL)
;        LD (DE),A
;        INC HL
;        INC DE
;        DEC BC
;        LD A,C
;        OR B
;        JR NZ,c6
           call c6
            ld a,(swmask2)           ; использование 2-го экрана как маски ?  /DA
            or a
           jr z,.n2ms
            ld a,RamPage
            call RAM
            ld a,#A6       ; and (hl)
            ld (MDE),a
            call c6        ; отрезаем маску
            ld a,#B6       ; or (hl)
            ld a,SuxPage   ; записываем экран в оконную страницу
            call SAVESCR.save
            call LOADSCR2
            ld hl,#4000
            ld bc,6144
1           ld a,(hl)
            cpl
            ld (hl),a
            inc hl
            dec bc
            ld a,b
            or c
           jr nz,1B
            call ScrRam
            call c6
            ld a,#B6       ; or (hl)
            ld (MDE),a
            call SuxRam
            call c6
            ld bc,768
            ldir
.n2ms
        LD A,(swmask)
        AND A
        CALL NZ,SwM
         call SAVESCR
.reW       call ReWin
       ;  JP RES_TSK4
        jp BMask.s

MixTxtr    call MMeth    ; /DA  - функция взамен размывок
          jp c,bmask_
           call Texture
          jp c,bmask_

           ld b,12         ; вывод текстуры на экран
           ld hl,#4000
1          push bc
           ld de,TxBUFF    ; TBUFF
            ld b,16
2          push hl
           push bc
            ld b,16
3          ld a,(de)
           ld (hl),a
           inc de
           inc l
           ld a,(de)
           ld (hl),a
           dec de
           inc l
          djnz 3B
           pop bc
           pop hl
           call INC_Y
           inc de
           inc de
          djnz 2B
           pop bc
          djnz 1B
         jp MRA.rscr

c6      LD HL,SCREEN
        LD DE,#4000
        LD BC,6144
1       LD A,(DE)
MDE     AND (HL)
        LD (DE),A
        INC HL
        INC DE
        DEC BC
        LD A,C
        OR B
        JR NZ,1B
        ret

SwM     LD IX,MRmk
        CALL R8Sel
       ; JP C,RES_TSK
         jr c,RET2.reW
        CALL SuxRam
        LD IX,MRmk
        LD DE,#C000
        CALL SaveWS
        CALL LOADSCR
        CALL SuxRam
        LD DE,#C000
        JP LoadWS

;---------------------------------------------
          ENT
LMixing   EQU  $-MixingPgn


   DISPLAY "Mixing len   :",/a, LMixing