; LAST UPDATE: 27.03.2025 savelij ;[]==========================================================[] QSearchR LD A,(IY+PANEL.EFL) OR (IY+PANEL.EFH) 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.XL) LD H,(IY+PANEL.XH) 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) BIT 0,C CALL NZ,CorrSmallChar 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.CFL) LD H,(IY+PANEL.CFH) LD C,(IY+PANEL.FFL) LD B,(IY+PANEL.FFH) ADD HL,BC SBC HL,DE EX DE,HL RET Z PUSH HL CALL ResInvert POP HL LD C,(IY+PANEL.FPL) LD B,(IY+PANEL.FPH) 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.CFL),L LD (IY+PANEL.CFH),H LD C,(IY+PANEL.FFL) LD B,(IY+PANEL.FFH) LD (IY+PANEL.FFL),E LD (IY+PANEL.FFH),D EX DE,HL OR A SBC HL,BC CALL NZ,PrintDIR CALL SetInvert CALL PrnFileInfo PUSH IY POP IX LD DE,PANEL.BARXL 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) CALL CorrBigChar CP (HL) JR Z,.SrchF1 CALL CorrSmallChar 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) CALL CorrBigChar CP (HL) JR Z,.SrchF2 CALL CorrSmallChar 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) CALL CorrBigChar CP (HL) JR Z,.SrchT1 CALL CorrSmallChar 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) CALL CorrBigChar CP (HL) JR Z,.SrchT2 CALL CorrSmallChar 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