; LAST UPDATE: 24.07.2025 savelij PALITRA.RESERV EQU PALETTE + 0x34 ;[]==========================================================[] SetupR SETPORT WINSP.Y_PORT,0xC0 LD HL,SetInvert PUSH HL LD HL,PALETTE LD DE,TempPALETTE LD BC,0x0040 LDIR LD A,(SavePanels) LD (SaveSav+1),A OR A LD A,0xFE JR Z,.L1 INC A .L1 LD (SaveFlg),A SUB A LD (SaveFlag),A LD A,(AutoActivatePanel) LD (AutoActivatePanelFlag),A OR A LD A,0xFF JR Z,.L2 DEC A .L2: LD (ActivateFlg),A MAKEWINDOW WINSUBOBJ.STORE W_MAIN 96,64,448,142 ; W_MAIN 32,32,448,142 W_FILL 4,2,440,10,COLORI.BLACK W_TEXT 208,3,COLORI.WHITE,"Setup" W_BORDER 8,18,144,53 W_FILL 10,19,140,51,COLORI.WHITE W_TEXT 14,21,COLORP.WHITE,"Panel" W_TEXT 14,29,COLORP.WHITE,"Files" W_TEXT 14,37,COLORP.WHITE,"Selected files" W_TEXT 14,45,COLORP.WHITE,"Invert background" W_TEXT 14,53,COLORP.WHITE,"Invert foreground" W_TEXT 14,61,COLORP.WHITE,"Invert foreground (select)" W_TEXT 164,24,COLORP.HIGHGRAY,"R:" W_BORDER 176,22,164,10 W_ICONLEFTARROW 178,23 W_ICONRIGHTARROW 322,23 W_TEXT 164,40,COLORP.HIGHGRAY,"G:" W_BORDER 176,38,164,10 W_ICONLEFTARROW 178,39 W_ICONRIGHTARROW 322,39 W_TEXT 164,56,COLORP.HIGHGRAY,"B:" W_BORDER 176,54,164,10 W_ICONLEFTARROW 178,55 W_ICONRIGHTARROW 322,55 W_BORDER 372,23,64,40 W_HORIZLINE 4,75,440 W_BORDER 16,81,20,11 W_FILL 18,82,16,9,COLORI.WHITE W_TEXT 20,83,COLORP.WHITE,"\0" ActivateFlg EQU $-2 W_TEXT 40,84,COLORP.HIGHGRAY,"activate panel in which changed drive" W_BORDER 16,99,20,11 W_FILL 18,100,16,9,COLORI.WHITE W_TEXT 20,101,COLORP.WHITE,"\0" SaveFlg EQU $-2 W_TEXT 40,102,COLORP.HIGHGRAY,"save Information about panels" W_BUTTON 360,98,72,14 W_TEXT 384,101,COLORP.HIGHGRAY,"Save" W_HORIZLINE 4,115,440 W_BUTTON 272,120,72,14 W_TEXT 292,123,COLORP.HIGHGRAY,"Cancel" W_BUTTON 360,120,72,14 W_TEXT 390,123,COLORP.HIGHGRAY,"Ok" W_END SUB A LD (CurElement),A CALL SetSetupInv LD IX,BarRed CALL InitScrollBar LD IX,BarGreen CALL InitScrollBar LD IX,BarBlue CALL InitScrollBar CALL InitElement SetupLoop LD IX,SetupTab CALL TestCoords SPDSS DSSF.SCANKEY JR Z,SetupLoop LD A,B AND 0x3F JR Z,SetupLoop0 BIT 4,B JR NZ,SetupLoop BIT 5,B JR Z,SetupLoop LD HL,SetupLoop PUSH HL LD A,D AND 0x7F CP SC.R JP Z,InputRED CP SC.G JP Z,InputGREEN CP SC.B JP Z,InputBLUE RET SetupLoop0 LD A,B AND 0xC0 JR Z,SetupLoop1 LD HL,SetupLoop PUSH HL LD A,E AND 0x5F CP 'R' JP Z,DecRED CP 'G' JP Z,DecGREEN CP 'B' JP Z,DecBLUE RET SetupLoop1 LD A,E RES 5,A CP 0x1B JP Z,SetupCancel CP 0x0D JP Z,SetupOkey CP 'C' JP Z,SetupCancel CP 'O' JP Z,SetupOkey LD HL,SetupLoop PUSH HL CP 'S' JP Z,SaveSetup CP 'R' JP Z,IncRED CP 'G' JP Z,IncGREEN CP 'B' JP Z,IncBLUE CP 'I' JP Z,ChSavePan CP 'A' JP Z,ChActivatePan OR A RET NZ LD A,D CP SC.X8 JP Z,BoxUp CP SC.X2 JP Z,BoxDown CP SC.X7 JP Z,BoxHome CP SC.X1 JP Z,BoxEnd CP SC.X9 JP Z,BoxHome CP SC.X3 JP Z,BoxEnd RET ;[]----------------------------------------------------------[] SaveSetup CALL SetClock PUSH IY SPDSS DSSF.CURDISK POP IY LD HL,WorkBuffer ADD A,'A' LD (HL),A INC HL LD (HL),':' INC HL PUSH IY SPDSS DSSF.CURDIR POP IY LD HL,BUF_REZ2.FlexDIRECTORY PUSH IY SPDSS DSSF.CHDIR POP IY PUSH AF CALL C,DOSError POP AF JP C,SetupSaveEx LD HL,SetupName PUSH IY SPDSS DSSF.CREATE,,0 POP IY PUSH AF CALL C,DOSError POP AF JR C,SetupSaveEx EX AF,AF' LD HL,SetupHead LD DE,WorkBuffer+0x100 LD BC,11 LDIR LD HL,TempPALETTE LD BC,0x0040 LDIR LD A,(SavePanels) LD (DE),A INC DE OR A JR Z,SvSetup LD A,(MouseFlag) LD (DE),A INC DE LD HL,LeftPanel PUSH HL LDI LDI LDI POP HL LD BC,PANEL.FILE_MASK ADD HL,BC SUB A .L1 LDI CP (HL) JR NZ,.L1 LD (DE),A INC DE LD HL,RightPanel PUSH HL LDI LDI LDI POP HL LD BC,PANEL.FILE_MASK ADD HL,BC SUB A .L2 LDI CP (HL) JR NZ,.L2 LD (DE),A INC DE SvSetup ld a,(AutoActivatePanelFlag) ld (de),a inc de LD HL,WorkBuffer+0x100 OR A EX DE,HL SBC HL,DE EX DE,HL EX AF,AF' PUSH IY PUSH AF SPDSS DSSF.WRITE POP AF SPDSS DSSF.CLOSE POP IY LD A,0x01 LD (SaveFlag),A SetupSaveEx LD HL,WorkBuffer PUSH IY SPDSS DSSF.CHDIR POP IY JP SetMouse SetupHead DEFB 0xAE,"FlexSetup",0 SetupName DZ FILENAME.FN_INI ;-------------------------------------------------------------- SetupCancel WINDOWCLOSE SaveSav LD A,0x00 LD (SavePanels),A JR SetupExit SetupOkey WINDOWCLOSE LD HL,TempPALETTE LD DE,PALETTE LD BC,0x0040 PUSH DE LDIR POP HL LD DE,0x1000 SPBIOS BIOSF.PIC_GET_PAL,0xFF,0 LD A,(AutoActivatePanelFlag) LD (AutoActivatePanel),A SetupExit LD A,(SaveFlag) OR A RET Z LD IX,LeftPanel LD HL,LeftPanel + PANEL.CURR_PATH LD DE,BUF_REZ2.FlexDIRECTORY LD A,(DE) SetRef1 CP (HL) JR NZ,SetRef2 INC HL INC DE LD A,(DE) OR A JR NZ,SetRef1 CP (HL) CALL Z,RefreshSetup SetRef2 LD IX,RightPanel LD HL,RightPanel + PANEL.CURR_PATH LD DE,BUF_REZ2.FlexDIRECTORY LD A,(DE) SetRef3 CP (HL) JR NZ,SetRef4 INC HL INC DE LD A,(DE) OR A JR NZ,SetRef3 CP (HL) CALL Z,RefreshSetup SetRef4 PUSH IY POP HL LD DE,PANEL.CURR_PATH ADD HL,DE PUSH IY SPDSS DSSF.CHDIR POP IY RET RefreshSetup BIT VIEWFLAG.B_TREE,(IX+PANEL.VIEWFLAG) RET NZ PUSH IY PUSH IX POP IY PUSH IY POP HL LD DE,PANEL.CURR_PATH ADD HL,DE PUSH IY SPDSS DSSF.CHDIR POP IY JR C,RefrErr CALL ReadDIR CALL PrintDIR CALL PrnFileInfo PUSH IY POP IX LD DE,PANEL.BAR_X ADD IX,DE CALL InitScrollBar LD A,(IY+PANEL.VIEWFLAG) AND VIEWFLAG.MASK PUSH AF CALL Z,PrnHScrBar POP AF CALL NZ,PrnVScrBar RefrErr POP IY RET SaveFlag DEFB 0x00 ;-------------------------------------------------------------- BoxUp LD A,(CurElement) DEC A RET M JR BoxKeyExt BoxDown LD A,(CurElement) INC A CP 0x06 RET Z JR BoxKeyExt BoxHome LD A,(CurElement) OR A RET Z SUB A JR BoxKeyExt BoxEnd LD A,(CurElement) CP 0x05 RET Z LD A,0x05 JR BoxKeyExt NewElement LD A,(CurElement) LD C,A LD A,E SUB 0x55 SRL A SRL A SRL A CP C RET Z BoxKeyExt PUSH AF CALL ResSetupInv POP AF LD (CurElement),A CALL SetSetupInv JP InitElement ;-------------------------------------------------------------- ChSavePan LD HL,SavePanTxt LD A,(SavePanels) XOR 0x01 LD (SavePanels),A XOR 0x01 INC A NEG LD (HL),A LD DE,0x0074 LD BC,0x00A5 LD A,0xF0 CALL PrnTxtLnIFF JP ResFire SavePanTxt DEFB 0x00,0x00 ;-------------------------------------------------------------- ChActivatePan: LD HL,SavePanTxt LD A,0 AutoActivatePanelFlag EQU $-1 XOR 0x01 LD (AutoActivatePanelFlag),A INC A NEG LD (HL),A LD DE,0x0074 LD BC,0x0093 LD A,0xF0 CALL PrnTxtLnIFF JP ResFire ;-------------------------------------------------------------- DecRED LD HL,PALITRA.RESERV + 2 LD DE,PrintRED JR DecCOLOR IncRED LD HL,PALITRA.RESERV + 2 LD DE,PrintRED JR IncCOLOR DecGREEN LD HL,PALITRA.RESERV + 1 LD DE,PrintGREEN JR DecCOLOR IncGREEN LD HL,PALITRA.RESERV + 1 LD DE,PrintGREEN JR IncCOLOR DecBLUE LD HL,PALITRA.RESERV LD DE,PrintBLUE JR DecCOLOR IncBLUE LD HL,PALITRA.RESERV LD DE,PrintBLUE JR IncCOLOR DecCOLOR LD A,(HL) OR A RET Z DEC A LD (HL),A JR DecIncCOLOR IncCOLOR LD A,(HL) INC A RET Z LD (HL),A DecIncCOLOR LD HL,PrnPALETTE PUSH HL PUSH DE LD HL,ElementColor LD A,(CurElement) ADD A,L LD L,A JR NC,.L1 INC H .L1 LD A,(HL) ADD A,A ADD A,A LD DE,TempPALETTE ADD A,E LD E,A JR NC,.L2 INC D .L2 LD HL,PALITRA.RESERV LDI LDI LDI RET ;-------------------------------------------------------------- InputRED LD HL,PALITRA.RESERV + 2 LD DE,PrintRED LD BC,0x0058 JR InputColor InputGREEN LD HL,PALITRA.RESERV + 1 LD DE,PrintGREEN LD BC,0x0068 JR InputColor InputBLUE LD HL,PALITRA.RESERV LD DE,PrintBLUE LD BC,0x0078 InputColor LD (ColorY),BC LD BC,DecIncCOLOR PUSH BC PUSH HL PUSH DE LD DE,ColText LD A,(HL) CALL ConvNumTxt8 SUB A LD (DE),A LD A,E SUB LOW (ColText) LD (ColLen),A InpAg LD IX,ColorStr LD HL,EmptyTab CALL InputLine POP DE POP HL RET C PUSH HL PUSH DE LD DE,ColText CALL ConvTxtNum16 JR C,InpAg LD A,H OR A JR NZ,InpAg LD A,L POP DE POP HL LD (HL),A RET ColorStr DEFB 0x03,0x00,0x00,0x00 ColLen DEFB 0x00 DEFW 0x01B8 ColorY DEFW 0x0000 DEFW 0x001A DEFB 0x80 ColText DUPL 0x04,0x00 ;-------------------------------------------------------------- CurElement DEFB 0x00 SavePanels DEFB 0x01 ElementColor DB COLORI.PANEL,COLORI.FILES,COLORI.SELECTFILES DB COLORI.INVERTPAPER,COLORI.INVERTINK,COLORI.INVSELFILES BarRed DEFW 0x0122 ; X позиция скролбара DEFW 0x0057 ; Y позиция скролбара DEFW 0x0080 ; Max длина скролбара DEFW 0x0000 ; тек.длина скролбара DEFW 0x0000 ; Адрес ячейки BarLeft DEFW 0x0000 ; Адрес ячейки BarRight DEFW 0x0198 ; Кол-во файлов на странице DEFW 0x0FF0 ; Общее кол-во файлов CRed DEFW 0x0000 ; Первый файл на странице BarGreen DEFW 0x0122 ; X позиция скролбара DEFW 0x0067 ; Y позиция скролбара DEFW 0x0080 ; Max длина скролбара DEFW 0x0000 ; тек.длина скролбара DEFW 0x0000 ; Адрес ячейки BarLeft DEFW 0x0000 ; Адрес ячейки BarRight DEFW 0x0198 ; Кол-во файлов на странице DEFW 0x0FF0 ; Общее кол-во файлов CGreen DEFW 0x0000 ; Первый файл на странице BarBlue DEFW 0x0122 ; X позиция скролбара DEFW 0x0077 ; Y позиция скролбара DEFW 0x0080 ; Max длина скролбара DEFW 0x0000 ; тек.длина скролбара DEFW 0x0000 ; Адрес ячейки BarLeft DEFW 0x0000 ; Адрес ячейки BarRight DEFW 0x0198 ; Кол-во файлов на странице DEFW 0x0FF0 ; Общее кол-во файлов CBlue DEFW 0x0000 ; Первый файл на странице TempPALETTE DUPL 0x40,0 ;-------------------------------------------------------------- ResSetupInv LD DE,(COLORP.BLUE + COLORI.WHITE) << 8 | (COLORP.WHITE + COLORI.BLACK) ;0x4FF0 JR SetupInvert SetSetupInv LD DE,(COLORP.WHITE + COLORI.BLACK) << 8 | (COLORP.BLUE + COLORI.WHITE) ;0xF04F SetupInvert LD HL,85 ; Y исходный ; TODO не учитывается позиция окна, сделать привязку LD A,(CurElement) OR A JR Z,SetupI1 LD B,A PUSH DE LD DE,8 .L1 ADD HL,DE DJNZ .L1 POP DE SetupI1 LD IX,8 << 8 | 70 ; HIGH -> высота, LOW -> ширина LD C,L LD B,H ; Y LD HL,106 ; X ; TODO не учитывается позиция окна, сделать привязку JP InvertRectan InitElement LD HL,ElementColor LD A,(CurElement) ADD A,L LD L,A JR NC,.L1 INC H .L1 LD A,(HL) ADD A,A ADD A,A LD HL,PALETTE ADD A,L LD L,A JR NC,.L2 INC H .L2 LD DE,PALITRA.RESERV LDI LDI LDI CALL PrintRED CALL PrintGREEN CALL PrintBLUE JP PrnPALETTE PrintRED LD DE,WorkBuffer LD A,(PALITRA.RESERV + 2) LD L,A LD H,0x00 ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL LD (CRed),HL CALL ConvNumTxt8 LD A,0x04 SUB E LD B,A LD A,0x20 .L1 LD (DE),A INC E DJNZ .L1 SUB A InitEl1 LD (DE),A LD HL,WorkBuffer LD DE,0x01B8 LD BC,0x0058 LD A,0x80 CALL PrnTxtLnIFF LD IX,BarRed JP PrnHScrBar PrintGREEN LD DE,WorkBuffer LD A,(PALITRA.RESERV + 1) LD L,A LD H,0x00 ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL LD (CGreen),HL CALL ConvNumTxt8 LD A,0x04 SUB E LD B,A LD A,0x20 .L1 LD (DE),A INC E DJNZ .L1 SUB A InitEl2 LD (DE),A LD HL,WorkBuffer LD DE,0x01B8 LD BC,0x0068 LD A,0x80 CALL PrnTxtLnIFF LD IX,BarGreen JP PrnHScrBar PrintBLUE LD DE,WorkBuffer LD A,(PALITRA.RESERV) LD L,A LD H,0x00 ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL LD (CBlue),HL CALL ConvNumTxt8 LD A,0x04 SUB E LD B,A LD A,0x20 .L1 LD (DE),A INC E DJNZ .L1 SUB A InitEl3 LD (DE),A LD HL,WorkBuffer LD DE,0x01B8 LD BC,0x0078 LD A,0x80 CALL PrnTxtLnIFF LD IX,BarBlue JP PrnHScrBar PrnPALETTE LD HL,PALETTE LD DE,0x1000 SPBIOS BIOSF.PIC_GET_PAL,0xFF,0 MAKEWINDOW WINSUBOBJ.WOBIND W_FILL 470,88,60,38,COLORI.RESERVED W_END RET