flex_nav/rez2_fnsearch.a80
savelij13 499aa7968d - исправлена проверка запускаемого файла по расширению.
- доки переведены на UTF8 кодировку.
- поправлена CorrBigChar.
2025-06-24 21:36:47 +03:00

387 lines
5.8 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)
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.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)
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