; Chank used in SpHack & Chank & About  overlays

OCH     EQU #C000+6912+6912 ;ScrPage
ChnkDTadr  EQU #C804
CnkPgn

        ; DISP PgnAdr


St_Cnk   ld (bcnk.sp),sp
         call CnkAddSw
BCnk    LD A,%1111
bcnk    LD IX,WCnk
        LD (IX+6),A
      ;  LD SP,(SPP)
        ld sp,0
.sp   EQU $-2
        CALL Win_
      ;  CP #FF
      ;  JP Z,RES_TSK2
         cp #FF
        jr z,.exitS_

        LD BC,TBCnk
        JP TAB_JP

.exitS_     call CLOSE
CnkAddSw    ld a,(ExtMem)
            or a
           ret z
            ld hl,#C000
            ld de,#F600
            ld bc,4
            ld a,ovFNTpg
            call ExOnP_AddP
            ld hl,ChnkDTadr
            ld de,#F600
           push de
            ld bc,#0A00   ; 2560
            ld a,ovCHNKpg
            call ExOnP_AddP
            ld hl,ChnkDTadr+2560
           pop de
            ld bc,3072-2560
            ld a,ovCHNKpg2
            call ExOnP_AddP
           jp RAM_N

bcnk_   LD A,%1101
        JR bcnk

TBCnk   DEFW SCRCHN
        DEFW CHNSCR
        DEFW LkCnk
        DEFW Dldcnk
        DEFW Dsvcnk
        DEFW LIGHT
        DEFW DCN

DCN     CALL Driver
        JR bcnk_


WCnk    ; DEFB 11,2,9,11,3*8+7,7*8,%00001111
        DB 13,3,9,11,3*8+7,7*8,%00001111
; Bit 0 - окно с заголовком/без
; Bit 1 - "перерисовать" окно да/нет
; Bit 2 - тискать окно по экрану да/нет
; Bit 3 - выход из окна-ткнуть только лишь за пределами (CANCEL)
        DEFB 0
        DEFW TCnk         ; объект-текст
        DEFW SCnk         ; объект-подсветка (выборка)
        DEFW #FFFF

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

TCnk
  ;  if rus                        ; поменял метод локализации /DA
  ;      DB #84,#a8,#a7,#a5,#e0,#a8,#ad,#a3,13;"Дизеринг",13
  ;      DB #8a,#ae,#ad,#a2,#a5,#e0,#e2,#a0,#e6,#a8,#ef,13;"Конвертация",13
  ;      DB #8d,#a0,#20,#ed,#aa,#e0,#a0,#ad,13;"На экран",13
  ;      DB #8f,#e0,#ae,#e1,#ac,#ae,#e2,#e0,#a5,#e2,#ec,13;"Просмотреть",13
  ;      DB #8e,#e2,#aa,#e0,#eb,#e2,#ec,#5f,13;"Открыть_",13
  ;      DB #91,#ae,#e5,#e0,#a0,#ad,#a8,#e2,#ec,#5f,13;"Сохранить_",13
  ;      DB #9f,#e0,#aa,#ae,#e1,#e2,#ec,13;"Яркость",13
  ;      DB #84,#a8,#e1,#aa,#ae,#a2,#ae,#a4,0;"Дисковод",0
  ;  else
  ;      DB "Dithering",13
  ;      DB "Convert",13
  ;      DB "To screen",13
  ;      DB "View",13
  ;      DB "Load_",13
  ;      DB "Save_",13
  ;      DB "Brightness",13
  ;      DB "Drive",0
  ;  endif
        MSG_Cnk_Dith : DB 13
        MSG_Cnk_Convert : DB 13
        MSG_Cnk_Toscr : DB 13
        MSG_Cnk_View : DB 13
        MSG_DISK_Load_ : DB 13
        MSG_DISK_Save_ : DB 13
        MSG_Cnk_Bright : DB 13
       ; MSG_DISK_drive :DB 0
        OpDrive : DB 0

Dldcnk  LD HL,SORTcnk
        CALL FilerE
        JP C,bcnk_
        LD B,#0C
      ;  EXLOAD #8000,AddAdr+5,START_SEC,AddPage
          EXLOAD #8000,ChnkDTadr,START_SEC,AddPage
        JP C,bcnk_
        CALL CnkID
        LD DE,FNCnk
        CALL ToName
        JP bcnk_

SORTcnk ; DB 0,#0C,#FF
        DB %0000,#0C,#00
        DB %1010,"bge_ovr.Cod",#00
        DB %1001,"ovb","add","hlp","hst",#FF

FNCnk   DB "noname  dit"

cnkid   DB "CHANK"

nocnk_  POP AF
nocnk   CALL NoData_
        JP bcnk_

;FNSelect  ; in de <- name addres , hl <- sort tab.
          ; out -> filename to name addres, file parameters in FILE_PARAM,
          ; A -> file number or #FF for not filer used
          ; scf for error
  ;        ld de,FNameScr    ; v3.12 /DA
  ;       ld hl,SORTscr
  ;       call FNSelect

Dsvcnk  CALL TstID
        JP NZ,nocnk
        LD HL,FNCnk
        CALL FNEdit
        JP C,bcnk_
         cp #FF
        LD HL,FNCnk
        CALL FromName
        LD B,#0C
       ; EXSAVEF #8000,AddAdr+5,#0C00,AddPage
          EXSAVEF #8000,ChnkDTadr,#0C00,AddPage
        JP C,bcnk_
        JP bcnk_

CH_0    DEFB 1

LIGHT   CALL NOKEY_
        CALL SV_UNDO
        CALL LOADSCR
        LD A,ScrPage
        CALL RAM
        LD A,17
        LD (LEVEL_CNK),A
        LD IX,CT+136;                 ;Там находит-
        LD HL,OCH ;с adres(#d800)
        LD B,L      ;делается подп-
Lp5     LD (HL),#1A ;рограмма,  ко-
        INC HL       ;торая и  будет
        LD (HL),#A1 ;проявлять кар-
        INC HL       ;тинку чанками
        LD (HL),#77
        INC HL
        LD (HL),#2C
        INC HL
        LD (HL),#1C
        INC HL
        DJNZ Lp5
        LD (HL),#24
        INC HL
        LD (HL),#14
        INC HL
        LD (HL),#C9

U1      CALL DIRSCN_
        BIT 2,A
        JR NZ,DNCNK
        BIT 3,A
        JR NZ,UPCNK
        LD A,BUTTON
        CALL GUI
        AND A
        JP NZ,CHNSCR.sv ; END_CNK
        HALT
        JR U1

UPCNK   LD A,0
LEVEL_CNK EQU $-1
        CP 17
        JR Z,U1
        INC A
        LD (LEVEL_CNK),A
        LD BC,#0008
        ADD IX,BC
        CALL OUT_CK
        JR U1

DNCNK   LD A,(LEVEL_CNK)
        OR A
        JR Z,U1
        DEC A
        LD (LEVEL_CNK),A
        LD BC,#0008
        PUSH IX
        POP HL
        SBC HL,BC
        PUSH HL
        POP IX
        CALL OUT_CK
        JR U1

; END_CNK EQU  RES_TSK4

OUT_CK  LD HL,#4000
        LD DE,#C000
        LD B,#03
U2      LD C,(IX+#00)
        CALL OCH
        LD C,(IX+#01)
        CALL OCH
        LD C,(IX+#02)
        CALL OCH
        LD C,(IX+#03)
        CALL OCH
        LD C,(IX+#04)
        CALL OCH
        LD C,(IX+#05)
        CALL OCH
        LD C,(IX+#06)
        CALL OCH
        LD C,(IX+#07)
        CALL OCH
        DJNZ U2
        RET

;CnkID   LD A,AddPage
;        CALL RAM
;        LD HL,cnkid
;        LD DE,AddAdr
;        LD BC,5
;        LDIR
;        RET

;SCREEN TO CHANK
;---------------------------------
SCRCHN  CALL LOADSCR
        CALL CnkID

        LD DE,#4000
       ; LD IX,AddAdr+5
         ld ix,ChnkDTadr
        LD B,#30
BEG_P   PUSH DE
        LD C,#20
U3      PUSH BC
        PUSH DE
        LD A,#04
        LD HL,#0000
U4      EX AF,AF'
        LD A,(DE)
        LD C,A
        LD B,#04
L7      RLCA
        JR NC,n_2
        INC H
n_2     RRC C
        JR NC,n_3
        INC L
n_3     DJNZ L7
        EX AF,AF'
        INC D
        DEC A
        JR NZ,U4
        LD A,H
        CP #10
        JR NZ,n_4
        LD H,#0F
n_4     LD A,L
        CP #10
        JR NZ,n_5
        LD L,#0F
n_5     LD (IX+#00),H
        LD (IX+#01),L
        INC IX
        INC IX
        POP DE
        POP BC
        INC E
        DEC C
        JP NZ,U3
        POP DE
        LD A,D
        ADD A,#04
        LD D,A
        AND #07
        JR NZ,n_1
        LD A,E
        ADD A,#20
        LD E,A
        JR C,n_1
        LD A,D
        SUB #08
        LD D,A
n_1     DJNZ BEG_P
LkCnk   CALL CHN_SCRR
ChnBmain
        CALL ReWin
        JP BCnk
;CHANK TO SCREEN
;---------------------------------
CHNSCR  CALL SV_UNDO
        CALL CHN_SCRR
    ;    JP  RES_TSK4
.sv     call SAVESCR
       jr ChnBmain

;TstID   LD A,AddPage
;        CALL RAM
;        LD HL,AddAdr
;        LD A,(HL)
;        CP "C"
;        RET NZ
;        INC HL
;        LD A,(HL)
;        CP "H"
;        RET NZ
;        INC HL
;        LD A,(HL)
;        CP "A"
;        RET NZ
;        INC HL
;        LD A,(HL)
;        CP "N"
;        RET NZ
;        INC HL
;        LD A,(HL)
;        CP "K"
;        RET

; -------- Описание хранения информации в буфере AddPage -------
; --------       для Fnt и Chnk (Dithering) v3.12        -------
;   Addres #C000 : DB "F*D*" , где * - 'y' или 'n' в зависимости от наличия данных
;          #C004 : Fnt file 2048 bytes
;          #C904 : Dithering file 3072 bytes
; --------------------------------------------------------------

;TstID    call AddRam
;         ld hl,#C000
;         ld a,(hl)
;         cp "F"
;        ret nz
;         inc l
;         ld a,(hl)
;         cp "y"
;        jr z,1F
;         cp "n"
;        ret nz
;1        inc l
;         ld a,(hl)
;         cp "D"
;        ret nz
;         inc l
;         ld a,(hl)
;         cp "y"
;        ret

;CnkID
;        call TstID
;        ld hl,#C000
;        ld a,"n"
;       jr nz,1F
;        ld a,"y"
;1       ld (hl),"F"
;        inc l
;        ld (hl),a
;        inc l
;        ld (hl),"D"
;        inc l
;        ld (hl),"y"
;        inc l
;       ret


Tst_F__  call AddRam
         ld hl,#C000
         ld a,(hl)
         cp "F"
        ret nz
         call .c1
        ret nz
         inc hl
         ld a,(hl)
         cp "D"
        ret nz
.c1
         inc hl
         ld a,(hl)
         cp "y"
        ret z
         cp "n"
        ret

TstID    call Tst_F__
        ret nz
         ld a,"y"
         cp (hl)
        ret

CnkID    call Tst_F__
         ld l,#03   ; HL = #C003
         ld a,(#C001) ;fnt
        jr z,1F
         ld a,"n"
1        ld (hl),"y"
         dec hl
         ld (hl),"D"
         dec hl
         ld (hl),a
         dec hl
         ld (hl),"F"
        ret




CHN_SCRR
        CALL TstID
        JP NZ,nocnk_
        CALL CLS
        LD A,AddPage
        CALL RAM
      ;  LD IX,AddAdr+5
         ld ix,ChnkDTadr
        LD DE,#4000
        LD C,#30
Bg1     PUSH DE
        LD B,#20
Lp1     PUSH BC
        PUSH DE
        LD A,(IX+#00)
        CP #10
        JR C,Nx3
        CP #E1
        LD A,#0F
        JR  C,Nx3
        XOR A
Nx3     INC IX
        ADD A,A
        ADD A,A
        LD HL,CTB
        LD C,A
        LD B,#00
        ADD HL,BC
        LD B,#04
Lp3     LD A,(HL)
        AND #F0
        LD (DE),A
        INC D
        INC HL
        DJNZ Lp3
        DEC D
        LD A,(IX+#00)
        CP #10
        JR C,Nx2
        CP #E1
        LD A,#0F
        JR C,Nx2
        XOR A
Nx2     INC IX
        ADD A,A
        ADD A,A
        ADD A,#03
        LD HL,CTB
        LD C,A
        LD B,#00
        ADD HL,BC
        LD B,#04
        EX DE,HL
Lp2     LD A,(DE)
        AND #0F
        OR (HL)
        LD (HL),A
        DEC H
        DEC DE
        DJNZ Lp2
        EX DE,HL
        POP DE
        POP BC
        INC E
        DJNZ Lp1
        POP DE
        LD  A,D
        ADD A,#04
        LD D,A
        AND #07
        JR NZ,Nx1
        LD A,E
        ADD A,#20
        LD E,A
        JR C,Nx1
        LD A,D
        SUB #08
        LD D,A
Nx1     DEC C
        JP NZ,Bg1
        JP WAITKEY_

; Убрал наложение в отдельный файл /DA

;---------------------------------------------------------------
CT      DEFW #0000     ; таблица яркостей, перенёс из Utils /DA
        DEFW #0000
        DEFW #0010
        DEFW #0000
        DEFW #0010
        DEFW #0000
        DEFW #0010
        DEFW #0000
        DEFW #0011
        DEFW #0000
        DEFW #0011
        DEFW #0000
        DEFW #0011
        DEFW #0044
        DEFW #0011
        DEFW #0044
        DEFW #0055
        DEFW #0044
        DEFW #0055
        DEFW #0044
        DEFW #0055
        DEFW #0055
        DEFW #0055
        DEFW #0055
        DEFW #2255
        DEFW #0055
        DEFW #2255
        DEFW #0055
        DEFW #2255
        DEFW #8855
        DEFW #2255
        DEFW #8855
        DEFW #AA55
        DEFW #8855
        DEFW #AA55
        DEFW #8855
        DEFW #AA55
        DEFW #AA55
        DEFW #AA55
        DEFW #AA55
        DEFW #BB55
        DEFW #AA55
        DEFW #BB55
        DEFW #AA55
        DEFW #BB55
        DEFW #EE55
        DEFW #BB55
        DEFW #EE55
        DEFW #FF55
        DEFW #EE55
        DEFW #FF55
        DEFW #EE55
        DEFW #FF55
        DEFW #FF55
        DEFW #FF55
        DEFW #FF55
        DEFW #FF77
        DEFW #FF55
        DEFW #FF77
        DEFW #FF55
        DEFW #FF77
        DEFW #FFDD
        DEFW #FF77
        DEFW #FFDD
        DEFW #FF77
        DEFW #FFFF
        DEFW #FF77
        DEFW #FFFF
        DEFW #FFFF
        DEFW #FFFF
        DEFW #FFFF
        DEFW #FFFF


LCnk    EQU $-St_Cnk    ; BCnk
     ;   ENT

       DISPLAY "Chnk len   :",/a,LCnk
