369 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			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
 |