; LAST UPDATE: 24.07.2025 savelij ;[]==========================================================[] QSearchR LD A,(IY+PANEL.FILES_ALL) OR (IY+PANEL.FILES_ALL + 1) RET Z SETPORT WINSP.Y_PORT,0xC0 LD HL,SearchN LD B,0x0C SUB A .L1 LD (HL),A INC HL DJNZ .L1 LD (SrchLen),A LD L,(IY+PANEL.X) LD H,(IY+PANEL.X + 1) LD DE,0x000A ADD HL,DE LD (.SrchX1),HL LD DE,0x0034 ADD HL,DE LD (SrchX2),HL LD HL,0x00E0 BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) JR Z,.L2 LD HL,0x00D0 .L2 LD (.SrchY1),HL LD DE,0x0007 ADD HL,DE LD (SrchY2),HL MAKEWINDOW WINSUBOBJ.STORE W_MAIN 0,0,166,20 .SrchX1 EQU $ - 8 .SrchY1 EQU $ -6 W_TEXT 8,7,COLORP.HIGHGRAY,"Search:" W_BORDER 48,4,108,12 W_FILL 50,5,104,10,COLORI.WHITE W_END LD IX,SearchStr LD (InpLnData),IX SUB A LD (IX+0x02),A LD (IX+0x03),A LD (IX+0x04),A CALL InsInpLnCol CALL PrintInpLn+3 .SearchInpLp HALT CALL ChCursor CALL TestCMOS SPMOUSE MOUSEF.READ_STATE OR A JP NZ,SearchExit SPDSS DSSF.SCANKEY JR Z,.SearchInpLp RES 7,D BIT KEYBSTAT.B_CTRL,B ;Ctrl JR NZ,.SearchInpLp LD IX,SearchTab BIT KEYBSTAT.B_ALT,B ;Alt JR Z,.Search1 LD A,D OR A JR Z,.SearchInpLp CP SC.LCTRL JR NC,.SearchInpLp LD HL,AltTable DEC A ADD A,L LD L,A JR NC,.L3 INC H .L3 LD A,(HL) IF CORR_FILENAME BIT 0,C CALL NZ,CorrSmallChar ENDIF LD E,A .Search1 LD A,(IX+0x00) INC IX CP 0xFF JR Z,.SearchInpLp1 LD L,A LD H,(IX+0x00) INC IX LD C,(IX+0x00) INC IX LD B,(IX+0x00) INC IX OR A SBC HL,DE JR NZ,.Search1 LD IX,(InpLnData) LD HL,.SearchInpLp PUSH HL PUSH BC RET .SearchInpLp1 LD IX,(InpLnData) LD HL,.SearchInpLp PUSH HL LD A,E JR InsSymbolSrch SearchTab DW SC.ESC << 8 | 0x1B, SrchExit DW SC.ENTER << 8 | 0x0D, SrchExit DW SC.BKSP << 8 | 0x08, QSdelet DB 0xFF InsSymbolSrch CP 0x20 RET C EX AF,AF' LD A,(IX+0x04) ;InpytSymb SUB (IX+0x00) ;Max len RET NC LD A,(IX+0x04) SUB (IX+0x02) JR Z,NotInsSrch LD C,A LD B,0x00 PUSH IX POP HL LD DE,LenInpData ADD HL,DE LD E,(IX+0x04) ADD HL,DE LD E,L LD D,H DEC HL LDDR NotInsSrch PUSH IX POP HL LD DE,LenInpData ADD HL,DE LD E,(IX+0x02) ADD HL,DE EX AF,AF' LD (HL),A INC (IX+0x04) INC (IX+0x02) CALL SearchFile JP C,ILdelet FoundSFile PUSH HL CALL PrintInpLn POP HL EX DE,HL LD L,(IY+PANEL.CURR_FILE) LD H,(IY+PANEL.CURR_FILE + 1) LD C,(IY+PANEL.FIRST_FILE) LD B,(IY+PANEL.FIRST_FILE + 1) ADD HL,BC SBC HL,DE EX DE,HL RET Z PUSH HL CALL ResInvert POP HL LD C,(IY+PANEL.FILES_PAGE) LD B,(IY+PANEL.FILES_PAGE + 1) LD DE,0x0000 EX DE,HL OR A SBC HL,BC EX DE,HL .L1 EX DE,HL ADD HL,BC EX DE,HL OR A SBC HL,BC JR NC,.L1 ADD HL,BC LD (IY+PANEL.CURR_FILE),L LD (IY+PANEL.CURR_FILE + 1),H LD C,(IY+PANEL.FIRST_FILE) LD B,(IY+PANEL.FIRST_FILE + 1) LD (IY+PANEL.FIRST_FILE),E LD (IY+PANEL.FIRST_FILE + 1),D EX DE,HL OR A SBC HL,BC CALL NZ,PrintDIR CALL SetInvert CALL PrnFileInfo PUSH IY POP IX LD DE,PANEL.BAR_X ADD IX,DE LD A,(IY+PANEL.VIEWFLAG) AND VIEWFLAG.MASK PUSH AF CALL Z,PrnHScrBar POP AF JP NZ,PrnVScrBar RET QSdelet LD A,(IX+0x02) OR A RET Z PUSH IX POP HL LD DE,LenInpData ADD HL,DE LD E,(IX+0x02) ADD HL,DE LD E,L LD D,H DEC DE LD A,(IX+0x04) SUB (IX+0x02) JR Z,QSDel1 LD C,A LD B,0x00 LDIR SUB A QSDel1 LD (DE),A DEC (IX+0x02) DEC (IX+0x04) CALL SearchFile JP NC,FoundSFile JP PrintInpLn SearchStr DEFB 0x0C,0x00,0x00,0x00 SrchLen DEFB 0x03 SrchX2 DEFW 0x0000 SrchY2 DEFW 0x0000 DEFW 0x0064 DEFB 0xF0 SearchN DUPL 13,0 AltTable DEFB 0x1B,"1234567890-=",0x08,0x09,"qwertyuiop[]" DEFB 0x00,"asdfghjkl;'",0x0D,0x00,"zxcvbnm,./",0x00,0x5C SearchFile BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) JP NZ,SearchFileT ;Tree PUSH IX GETPORT WINSP.CPU3 PUSH AF BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) LD A,(RAMPAGES.LEFTPANEL) JR Z,.L1 LD A,(RAMPAGES.RIGHTPANEL) .L1 SETPORT WINSP.CPU3,,0 LD IX,0x0000 LD HL,0xC001 LD BC,0x0018 .SearchFlp LD DE,SearchN LD A,(DE) IF CORR_FILENAME CALL CorrBigChar ENDIF CP (HL) JR Z,.SrchF1 IF CORR_FILENAME CALL CorrSmallChar ENDIF CP (HL) JR NZ,.SearchFnxt .SrchF1 PUSH HL PUSH DE LD DE,WorkBuffer PUSH DE CALL MakeDOSname POP HL POP DE .SrchF2 INC DE LD A,(DE) OR A JR Z,.SearchFexit INC HL LD A,(HL) OR A JR Z,.SearchFnx0 LD A,(DE) IF CORR_FILENAME CALL CorrBigChar ENDIF CP (HL) JR Z,.SrchF2 IF CORR_FILENAME CALL CorrSmallChar ENDIF CP (HL) JR Z,.SrchF2 .SearchFnx0 POP HL LD BC,0x0018 .SearchFnxt ADD HL,BC INC IX LD A,(HL) OR A JR NZ,.SearchFlp POP AF SETPORT WINSP.CPU3,,0 POP IX SCF RET .SearchFexit INC SP INC SP POP AF SETPORT WINSP.CPU3,,0 PUSH IX POP HL POP IX OR A RET SearchFileT PUSH IX GETPORT WINSP.CPU3 PUSH AF BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) LD A,(RAMPAGES.LEFTPANEL) JR Z,.L1 LD A,(RAMPAGES.RIGHTPANEL) .L1 SETPORT WINSP.CPU3,,0 LD IX,0x0000 LD HL,0xC002 LD BC,0x000D .SearchTlp LD DE,SearchN LD A,(DE) IF CORR_FILENAME CALL CorrBigChar ENDIF CP (HL) JR Z,.SrchT1 IF CORR_FILENAME CALL CorrSmallChar ENDIF CP (HL) JR NZ,.SearchTnxt .SrchT1 PUSH HL .SrchT2 INC DE LD A,(DE) OR A JR Z,.SearchTexit INC HL LD A,(HL) OR A JR Z,.SearchTnx0 LD A,(DE) IF CORR_FILENAME CALL CorrBigChar ENDIF CP (HL) JR Z,.SrchT2 IF CORR_FILENAME CALL CorrSmallChar ENDIF CP (HL) JR Z,.SrchT2 .SearchTnx0 POP HL .SearchTnxt ADD HL,BC INC IX LD A,(HL) INC HL INC HL INC HL INC A JR NZ,.SearchTlp POP AF SETPORT WINSP.CPU3,,0 POP IX SCF RET .SearchTexit INC SP INC SP POP AF SETPORT WINSP.CPU3,,0 PUSH IX POP HL POP IX OR A RET SrchExit POP HL SearchExit WINDOWCLOSE BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) IF TREE_REZID CALL NZ,TestTreeR.TestTreeBeg ELSE CALL NZ,TestTreeR.TestTreeBeg ENDIF RET