flex_nav/rez2_fnsearch.a80

369 lines
5.6 KiB
Plaintext

; 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