387 lines
5.8 KiB
Plaintext
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
|