314 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			314 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
 | |
| ; LAST UPDATE: 27.04.2025 savelij
 | |
| 
 | |
| ;[]----------------------------------------------------------[]
 | |
| BegDIRECTORY	LD	HL,BegDIR
 | |
| NewDIRECTORY	PUSH	HL
 | |
| 		CALL	ResInvert
 | |
| 		POP	HL
 | |
| 		CALL	SetClock
 | |
| 		PUSH	IY
 | |
| 	SPDSS DSSF.CHDIR
 | |
| 		POP	IY
 | |
| 		CALL	C,DOSError
 | |
| 		PUSH	IY
 | |
| 	SPDSS DSSF.CURDISK
 | |
| 		POP	IY
 | |
| 		PUSH	IY
 | |
| 		POP	HL
 | |
| 		LD	DE,PANEL.CURRPATH
 | |
| 		ADD	HL,DE
 | |
| 		ADD	A,'A'
 | |
| 		CP	(HL)
 | |
| 		PUSH	AF
 | |
| 		LD	(HL),A
 | |
| 		INC	HL
 | |
| 		LD	(HL),':'
 | |
| 		INC	HL
 | |
| 		PUSH	IY
 | |
| 	SPDSS DSSF.CURDIR
 | |
| 		POP	IY
 | |
| 		POP	AF
 | |
| 		JR	Z,NewDIRECT1
 | |
| 		LD	A,(TreeFlag)
 | |
| 		OR	A
 | |
| 		JP	Z,InitPanel
 | |
| 		BIT	VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
 | |
| 		JP	NZ,InitPanel
 | |
| 		BIT	PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
 | |
| 		LD	HL,LeftPanel + PANEL.CURRPATH
 | |
| 		LD	DE,RightPanel + PANEL.CURRPATH
 | |
| 		JR	Z,NewDIR0
 | |
| 		LD	HL,RightPanel + PANEL.CURRPATH
 | |
| 		LD	DE,LeftPanel + PANEL.CURRPATH
 | |
| NewDIR0		SUB	A
 | |
| .L1		LDI 
 | |
| 		CP	(HL)
 | |
| 		JR	NZ,.L1
 | |
| 		LD	(DE),A
 | |
| 		JP	InitPanels
 | |
| 
 | |
| NewDIRECT1	BIT	VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
 | |
| 		PUSH	AF
 | |
| 		CALL	NZ,NewDIRTree
 | |
| 		POP	AF
 | |
| 		CALL	Z,ReadDIR
 | |
| 		CALL	PrintPath
 | |
| 		BIT	PANELFLAG.B_PRNDOSPATH,(IY + PANEL.PANELFLAG)
 | |
| 		CALL	NZ,PrintDOSPath
 | |
| 		CALL	PrintDIR
 | |
| 		CALL	SetInvert
 | |
| 		CALL	PrnFileInfo
 | |
| 		PUSH	IY
 | |
| 		POP	IX
 | |
| 		LD	DE,PANEL.BARXL
 | |
| 		ADD	IX,DE
 | |
| 		CALL	InitScrollBar
 | |
| 		LD	A,(IY + PANEL.VIEWFLAG)
 | |
| 		AND	VIEWFLAG.MASK
 | |
| 		PUSH	AF
 | |
| 		CALL	Z,PrnHScrBar
 | |
| 		POP	AF
 | |
| 		CALL	NZ,PrnVScrBar
 | |
| 		JP	SetMouse
 | |
| 
 | |
| NewDIRTree	PUSH	IY
 | |
| 		POP	HL
 | |
| 		LD	DE,PANEL.CURRPATH
 | |
| 		ADD	HL,DE
 | |
| 		INC	HL
 | |
| 		INC	HL
 | |
| 	IF TREE_REZID
 | |
| 		CALL	RESIDENT.FindTreeDIR
 | |
| 		CALL	RESIDENT.MakeTreePath
 | |
| 	ELSE
 | |
| 		CALL	FindTreeDIRR
 | |
| 		CALL	MakeTreePathR
 | |
| 	ENDIF
 | |
| 		PUSH	IY
 | |
| 		BIT	PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
 | |
| 		LD	IY,RightPanel
 | |
| 		JR	Z,.L1
 | |
| 		LD	IY,LeftPanel
 | |
| .L1		CALL	NewDIRECTORY
 | |
| 		POP	IY
 | |
| 		RET 
 | |
| 
 | |
| ;[]----------------------------------------------------------[]
 | |
| RefreshDIR	BIT	VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
 | |
| 		JR	NZ,RfDIRn1
 | |
| 		CALL	ReadDIR
 | |
| 		CALL	PrintDIR
 | |
| 		CALL	PrnFileInfo
 | |
| 		PUSH	IY
 | |
| 		POP	IX
 | |
| 		LD	DE,PANEL.BARXL
 | |
| 		ADD	IX,DE
 | |
| 		CALL	InitScrollBar
 | |
| 		LD	A,(IY + PANEL.VIEWFLAG)
 | |
| 		AND	VIEWFLAG.MASK
 | |
| 		PUSH	AF
 | |
| 		CALL	Z,PrnHScrBar
 | |
| 		POP	AF
 | |
| 		CALL	NZ,PrnVScrBar
 | |
| RfDIRn1		LD	HL,LeftPanel + PANEL.CURRPATH
 | |
| 		LD	DE,RightPanel + PANEL.CURRPATH
 | |
| RefrDIR		LD	A,(DE)
 | |
| 		CP	(HL)
 | |
| 		RET	NZ
 | |
| 		INC	HL
 | |
| 		INC	DE
 | |
| 		LD	A,(HL)
 | |
| 		OR	A
 | |
| 		JR	NZ,RefrDIR
 | |
| 		LD	A,(DE)
 | |
| 		OR	A
 | |
| 		RET	NZ
 | |
| 		PUSH	IY
 | |
| 		BIT	PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
 | |
| 		LD	IY,RightPanel
 | |
| 		JR	Z,.L1
 | |
| 		LD	IY,LeftPanel
 | |
| .L1		BIT	VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
 | |
| 		JR	NZ,RefrDex
 | |
| 		CALL	ReadDIR
 | |
| 		CALL	PrintDIR
 | |
| 		CALL	PrnFileInfo
 | |
| 		PUSH	IY
 | |
| 		POP	IX
 | |
| 		LD	DE,PANEL.BARXL
 | |
| 		ADD	IX,DE
 | |
| 		CALL	InitScrollBar
 | |
| 		LD	A,(IY + PANEL.VIEWFLAG)
 | |
| 		AND	VIEWFLAG.MASK
 | |
| 		PUSH	AF
 | |
| 		CALL	Z,PrnHScrBar
 | |
| 		POP	AF
 | |
| 		CALL	NZ,PrnVScrBar
 | |
| RefrDex		POP	IY
 | |
| 		RET
 | |
| 
 | |
| ;[]----------------------------------------------------------[]
 | |
| FindPrevFile	LD	A,(IY + PANEL.EFL)
 | |
| 		OR	(IY + PANEL.EFH)
 | |
| 		RET	Z
 | |
| 		BIT	PANELFLAG.B_PRNDOSPATH,(IY + PANEL.PANELFLAG)
 | |
| 		RET	Z
 | |
| 	GETPORT WINSP.CPU1
 | |
| 		PUSH	AF
 | |
| 		BIT	PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
 | |
| 		LD	A,(RAMPAGES.LEFTPANEL)
 | |
| 		JR	Z,.L1
 | |
| 		LD	A,(RAMPAGES.RIGHTPANEL)
 | |
| .L1
 | |
| 	SETPORT WINSP.CPU1,,0
 | |
| 		LD	IX,0x4000
 | |
| 		LD	HL,0x4001
 | |
| 		LD	BC,0x0000
 | |
| FndPrFile0	PUSH	HL
 | |
| 		BIT	DIR.B_Dir,(IX + FileHDR.Attr)
 | |
| 		JR	NZ,FndPrFileNxt
 | |
| 		LD	DE,WorkBuffer
 | |
| 		PUSH	DE
 | |
| 		PUSH	BC
 | |
| 		CALL	MakeDOSname
 | |
| 		POP	BC
 | |
| 		POP	HL
 | |
| 		LD	DE,PrevFile
 | |
| FndPrFile1	LD	A,(DE)
 | |
| 		OR	A
 | |
| 		JR	Z,FndPrFileE
 | |
| 		CP	(HL)
 | |
| 		JR	NZ,FndPrFileNxt
 | |
| 		INC	HL
 | |
| 		INC	DE
 | |
| 		JR	FndPrFile1
 | |
| 
 | |
| FndPrFileNxt	POP	HL
 | |
| 		LD	DE,FileHDR.SIZE
 | |
| 		ADD	HL,DE
 | |
| 		ADD	IX,DE
 | |
| 		INC	BC
 | |
| 		LD	A,(HL)
 | |
| 		OR	A
 | |
| 		JR	NZ,FndPrFile0
 | |
| 		JP	FndTreeExt
 | |
| 
 | |
| FndPrFileE	LD	A,(HL)
 | |
| 		OR	A
 | |
| 		JR	NZ,FndPrFileNxt
 | |
| 		JR	FndTree
 | |
| 
 | |
| PrevFile	DB	13 DUP 0
 | |
| 
 | |
| ;[]----------------------------------------------------------[]
 | |
| FindPrevDIR	LD	A,(IY + PANEL.EFL)
 | |
| 		OR	(IY + PANEL.EFH)
 | |
| 		RET	Z
 | |
| 		BIT	PANELFLAG.B_PRNDOSPATH,(IY + PANEL.PANELFLAG)
 | |
| 		RET	Z
 | |
| 	GETPORT WINSP.CPU1
 | |
| 		PUSH	AF
 | |
| 		BIT	PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
 | |
| 		LD	A,(RAMPAGES.LEFTPANEL)
 | |
| 		JR	Z,.L1
 | |
| 		LD	A,(RAMPAGES.RIGHTPANEL)
 | |
| .L1
 | |
| 	SETPORT WINSP.CPU1,,0
 | |
| 		LD	IX,0x4000
 | |
| 		LD	HL,0x4001
 | |
| 		LD	BC,0x0000
 | |
| FndPrDIR0	PUSH	HL
 | |
| 		BIT	DIR.B_Dir,(IX + FileHDR.Attr)
 | |
| 		JR	Z,FndPrDIRnxt
 | |
| 		LD	DE,WorkBuffer
 | |
| 		PUSH	DE
 | |
| 		PUSH	BC
 | |
| 		CALL	MakeDOSname
 | |
| 		POP	BC
 | |
| 		POP	HL
 | |
| 		LD	DE,PrevDIR
 | |
| FndPrDIR1	LD	A,(DE)
 | |
| 		OR	A
 | |
| 		JR	Z,FndPrDIRe
 | |
| 		CP	(HL)
 | |
| 		JR	NZ,FndPrDIRnxt
 | |
| 		INC	HL
 | |
| 		INC	DE
 | |
| 		JR	FndPrDIR1
 | |
| 
 | |
| FndPrDIRnxt	POP	HL
 | |
| 		LD	DE,FileHDR.SIZE
 | |
| 		ADD	HL,DE
 | |
| 		ADD	IX,DE
 | |
| 		INC	BC
 | |
| 		LD	A,(HL)
 | |
| 		OR	A
 | |
| 		JR	NZ,FndPrDIR0
 | |
| 		JR	FndTreeExt
 | |
| 
 | |
| FndPrDIRe	LD	A,(HL)
 | |
| 		OR	A
 | |
| 		JR	NZ,FndPrDIRnxt
 | |
| FndTree		INC	SP
 | |
| 		INC	SP
 | |
| 		LD	L,C
 | |
| 		LD	H,B
 | |
| 		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	(IY + PANEL.FFL),E
 | |
| 		LD	(IY + PANEL.FFH),D
 | |
| FndTreeExt	POP	AF
 | |
| 	SETPORT WINSP.CPU1,,0
 | |
| 		RET 
 | |
| 
 | |
| PrevDIR		DB	13 DUP 0
 | |
| 
 | |
| ;[]----------------------------------------------------------[]
 | |
| MakeDOSname	LD	BC,0x0820
 | |
| .L1		LD	A,(HL)
 | |
| 		CP	C
 | |
| 		JR	Z,.L2
 | |
| 		INC	HL
 | |
| 		LD	(DE),A
 | |
| 		INC	DE
 | |
| 		DJNZ	.L1
 | |
| 		JR .L5
 | |
| 
 | |
| .L2		
 | |
| ;		LD	A,B
 | |
| ;		OR	A
 | |
| ;		JR	Z,.L5
 | |
| 		INC	HL
 | |
| 		DJNZ	.L2
 | |
| .L5		LD	B,0x03
 | |
| 		INC	HL
 | |
| 		LD	A,(HL)
 | |
| 		CP	C
 | |
| 		JR	Z,.L4
 | |
| 		LD	A,'.'
 | |
| 		LD	(DE),A
 | |
| 		INC	DE
 | |
| .L3		LD	A,(HL)
 | |
| 		INC	HL
 | |
| 		LD	(DE),A
 | |
| 		INC	DE
 | |
| 		DJNZ	.L3
 | |
| .L4		SUB	A
 | |
| 		LD	(DE),A
 | |
| 		RET 
 |