735 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			735 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
 | ||
| ; LAST UPDATE: 28.05.2025 savelij
 | ||
| 
 | ||
| MAX_LEVEL_DIR	EQU 21
 | ||
| 
 | ||
| ;[]----------------------------------------------------------[]
 | ||
| ReadTreeR	PUSH IY
 | ||
| 		POP HL
 | ||
| 		LD BC,PANEL.EFL
 | ||
| 		ADD HL,BC
 | ||
| 		LD B,PANEL.FILEMASK - PANEL.EFL
 | ||
| .LL1		LD (HL),0
 | ||
| 		INC HL
 | ||
| 		DJNZ .LL1
 | ||
| 		LD	HL,BegDIR
 | ||
| 		PUSH	IY
 | ||
| 	SPDSS DSSF.CHDIR
 | ||
| 		POP	IY
 | ||
| 		LD	HL,TreeName
 | ||
| 		PUSH	IY
 | ||
| 	SPDSS DSSF.OPEN,,0
 | ||
| 		POP	IY
 | ||
| 		JP	NC,LoadTreeR
 | ||
| ; ä ©« á ¤¥à¥¢®¬ ª â «®£®¢ ¥  ©¤¥, ᪠¨à㥬 ¨ á®§¤ ¥¬
 | ||
| .ScanTree
 | ||
| 	GETPORT WINSP.CPU1
 | ||
| 		LD	C,A
 | ||
| 	GETPORT WINSP.CPU3
 | ||
| 		LD	B,A
 | ||
| 		PUSH	BC
 | ||
| 		LD	A,(RAMPAGES.BuffPg3)
 | ||
| 	SETPORT WINSP.CPU1,,0
 | ||
| 		BIT	PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
 | ||
| 		LD	A,(RAMPAGES.LEFTPANEL)
 | ||
| 		JR	Z,.L1
 | ||
| 		LD	A,(RAMPAGES.RIGHTPANEL)
 | ||
| .L1
 | ||
| 	SETPORT WINSP.CPU3,,0
 | ||
| 		PUSH	IY
 | ||
| 	MAKEWINDOW WINSUBOBJ.STORE
 | ||
| 	W_MAIN 240,96,160,40
 | ||
| 	W_FILL 4,2,152,10,COLORI.BLACK
 | ||
| 	W_TEXT 44,3,COLORI.WHITE,"Scanning tree"
 | ||
| 	W_TEXT 32,20,COLORP.HIGHGRAY,"Directories:"
 | ||
| 	W_END
 | ||
| 		LD	(.TreeSP1),SP
 | ||
| 		SUB	A
 | ||
| 		LD	(CurTree),A
 | ||
| 		LD	SP,STACKTREE
 | ||
| 		LD	HL,0
 | ||
| 		PUSH	HL
 | ||
| 		LD	(LoadItemDIRR.CurTAdr),HL
 | ||
| 		LD	HL,CPU3 + TreeHead_Size
 | ||
| 		LD	(EndTree),HL
 | ||
| 		LD	B,0x10
 | ||
| 		SUB	A
 | ||
| .L2		LD	(HL),A
 | ||
| 		INC	HL
 | ||
| 		DJNZ	.L2
 | ||
| 		LD	HL,1
 | ||
| 		LD	(TreeDIRS),HL
 | ||
| 		CALL	LoadItemDIRR
 | ||
| 		JR	NC,.TreeExit	; NC - ¥â ¤¨à¥ªâ®à¨©
 | ||
| .TreeLoop	PUSH	HL
 | ||
| 	SPDSS DSSF.SCANKEY
 | ||
| 		LD	A,E
 | ||
| 		SUB	0x1B
 | ||
| 		POP	HL
 | ||
| 		JP	Z,AbortTree
 | ||
| 		LD	A,(CurTree)
 | ||
| 		INC	A
 | ||
| 		CP	MAX_LEVEL_DIR
 | ||
| 		JR	Z,.DIRSend
 | ||
| 		LD	(CurTree),A
 | ||
| 		LD	DE,(TreeDIRS)
 | ||
| 		BIT	2,D		; DE >= 1024
 | ||
| 		JR	NZ,.TreeExit
 | ||
| 		PUSH	HL
 | ||
| 		LD	A,(HL)
 | ||
| 		OR	A
 | ||
| 		JR	Z,.DIRSend
 | ||
| 		LD	(LoadItemDIRR.CurTAdr),HL
 | ||
| 	SPDSS DSSF.CHDIR
 | ||
| 		CALL	LoadItemDIRR
 | ||
| 		JR	C,.TreeLoop	; C - ¥áâì ¤¨à¥ªâ®à¨¨
 | ||
| .DIRSend
 | ||
| 	SPDSS DSSF.SCANKEY
 | ||
| 		LD	A,E
 | ||
| 		SUB	0x1B
 | ||
| 		JP	Z,AbortTree
 | ||
| 		POP	HL
 | ||
| 		LD	A,H
 | ||
| 		OR	L
 | ||
| 		JR	Z,.TreeExit
 | ||
| 		PUSH	HL
 | ||
| 		LD	HL,CurTree
 | ||
| 		DEC	(HL)
 | ||
| 		LD	HL,UpDIR
 | ||
| 	SPDSS DSSF.CHDIR
 | ||
| 		POP	HL
 | ||
| 		LD	DE,0x000F
 | ||
| 		ADD	HL,DE
 | ||
| 		LD	A,(HL)
 | ||
| 		INC	HL
 | ||
| 		INC	A
 | ||
| 		JR	NZ,.TreeLoop
 | ||
| 		JR	.DIRSend
 | ||
| 
 | ||
| .TreeExit
 | ||
| 	SETPORT WINSP.Y_PORT,0xC0
 | ||
| 		LD	SP,STACKTREE
 | ||
| 		LD	IX,0
 | ||
| 		PUSH	IX
 | ||
| 		LD	HL,CPU1
 | ||
| 		LD	DE,TreeHead
 | ||
| 		LD	BC,TreeHead_Size
 | ||
| 		EX	DE,HL
 | ||
| 		LDIR				; § ¥á«¨ § £®«®¢®ª ¤¥à¥¢  ª â «®£®¢ FN
 | ||
| 		LD	HL,(TreeDIRS)
 | ||
| 		DEC	HL
 | ||
| 		LD	A,H
 | ||
| 		OR	L
 | ||
| 		JR	Z,.TreeExit1
 | ||
| 		LD	HL,CPU3 + TreeHead_Size
 | ||
| .TreeEndLp	INC	IXL
 | ||
| 		PUSH	HL
 | ||
| 		PUSH	DE
 | ||
| 		LD	A,IXL
 | ||
| 		CP	IXH
 | ||
| 		JR	C,.L3
 | ||
| 		LD	IXH,A
 | ||
| .L3		LD	(DE),A
 | ||
| 		INC	DE
 | ||
| 		SUB	A
 | ||
| 		LD	(DE),A
 | ||
| 		INC	DE
 | ||
| 		LD	BC,0x000C
 | ||
| 		LDIR 
 | ||
| 		LD	(DE),A
 | ||
| 		INC	DE
 | ||
| 		LD	(DE),A
 | ||
| 		INC	DE
 | ||
| 		INC	HL
 | ||
| 		LD	C,(HL)
 | ||
| 		INC	HL
 | ||
| 		LD	B,(HL)
 | ||
| 		INC	HL
 | ||
| 		LD	A,(HL)
 | ||
| 		AND	0x80
 | ||
| 		POP	HL
 | ||
| 		OR	(HL)
 | ||
| 		LD	(HL),A
 | ||
| 		LD	L,C
 | ||
| 		LD	H,B
 | ||
| 		LD	A,H
 | ||
| 		OR	L
 | ||
| 		JR	NZ,.TreeEndLp
 | ||
| .TreeEndLp1	DEC	IXL
 | ||
| 		POP	HL
 | ||
| 		LD	A,H
 | ||
| 		OR	L
 | ||
| 		JR	Z,.TreeExit1
 | ||
| 		LD	BC,0x000F
 | ||
| 		ADD	HL,BC
 | ||
| 		LD	A,(HL)
 | ||
| 		INC	HL
 | ||
| 		INC	A
 | ||
| 		JR	NZ,.TreeEndLp
 | ||
| 		JR	.TreeEndLp1
 | ||
| 
 | ||
| .TreeExit1	LD	(EndTree),DE
 | ||
| 		DEC	DE
 | ||
| 		LD	A,0xFF
 | ||
| 		LD	(DE),A
 | ||
| 		LD	SP,0
 | ||
| .TreeSP1	EQU $-2
 | ||
| 		POP	IY
 | ||
| 		RES	VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		LD	A,IXH
 | ||
| 		CP	0x0B
 | ||
| 		JR	C,.L4
 | ||
| 		SET	VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG)
 | ||
| .L4
 | ||
| 	GETPORT WINSP.CPU3
 | ||
| 		LD	(RAMPAGES.BuffPg3),A
 | ||
| 	GETPORT WINSP.CPU1
 | ||
| 		BIT	PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
 | ||
| 		LD	HL,RAMPAGES.LEFTPANEL
 | ||
| 		JR	Z,.L5
 | ||
| 		LD	HL,RAMPAGES.RIGHTPANEL
 | ||
| .L5		LD	(HL),A
 | ||
| 	WINDOWCLOSE
 | ||
| 		POP	BC
 | ||
| 		LD	A,B
 | ||
| 	SETPORT WINSP.CPU3,,0
 | ||
| 		LD	A,C
 | ||
| 	SETPORT WINSP.CPU1,,0
 | ||
| 		LD	HL,(TreeDIRS)
 | ||
| 		LD	(IY+PANEL.EFL),L	     ; EQUIP FIL
 | ||
| 		LD	(IY+PANEL.EFH),H
 | ||
| 		PUSH	IY
 | ||
| 	GETPORT WINSP.CPU3
 | ||
| 		PUSH	AF
 | ||
| 		BIT	PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
 | ||
| 		LD	A,(RAMPAGES.LEFTPANEL)
 | ||
| 		JR	Z,.L6
 | ||
| 		LD	A,(RAMPAGES.RIGHTPANEL)
 | ||
| .L6
 | ||
| 	SETPORT WINSP.CPU3,,0
 | ||
| 		LD	HL,BegDIR
 | ||
| 	SPDSS DSSF.CHDIR
 | ||
| 		LD	HL,TreeName
 | ||
| 	SPDSS DSSF.CREATE,,0
 | ||
| 		JR	C,.TreeErr
 | ||
| 		PUSH	AF
 | ||
| 		LD	HL,CPU3
 | ||
| 		LD	DE,(EndTree)
 | ||
| 		RES	6,D
 | ||
| 	SPDSS DSSF.WRITE
 | ||
| 		POP	AF
 | ||
| 	SPDSS DSSF.CLOSE
 | ||
| .TreeErr	LD	A,1
 | ||
| 		LD	(CPU3 + 1),A
 | ||
| 		POP	AF
 | ||
| 	SETPORT WINSP.CPU3,,0
 | ||
| 		POP	IY
 | ||
| 		JP	LoadTreeR.TreeOkey
 | ||
| 
 | ||
| ; § £à㧪  ¤¥à¥¢  ª â «®£®¢ ¨§ ä ©« 
 | ||
| LoadTreeR	EX	AF,AF'
 | ||
| 		PUSH	IY
 | ||
| 	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
 | ||
| 		EX	AF,AF'
 | ||
| 		PUSH	AF
 | ||
| 		LD	HL,CPU3
 | ||
| 		LD	DE,0x4000
 | ||
| 	SPDSS DSSF.READ
 | ||
| 		EX	AF,AF'
 | ||
| 		LD	HL,CPU3
 | ||
| 		LD	DE,WorkBuffer
 | ||
| 		LD	BC,0x0010
 | ||
| 		LDIR 
 | ||
| 		POP	AF
 | ||
| 	SPDSS DSSF.CLOSE
 | ||
| 		POP	AF
 | ||
| 	SETPORT WINSP.CPU3,,0
 | ||
| 		POP	IY
 | ||
| 		EX	AF,AF'
 | ||
| 		JP	C,ReadTreeR.ScanTree		; Error
 | ||
| 		LD	HL,WorkBuffer + 2
 | ||
| 		LD	DE,TreeHead + 2
 | ||
| 		LD	B,TreeHead_Size - 3
 | ||
| .L2		LD	A,(DE)
 | ||
| 		CP	(HL)
 | ||
| 		JP	NZ,ReadTreeR.ScanTree		; Error
 | ||
| 		INC	HL
 | ||
| 		INC	DE
 | ||
| 		DJNZ	.L2
 | ||
| 	GETPORT WINSP.CPU3
 | ||
| 		PUSH	AF
 | ||
| 		BIT	PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
 | ||
| 		LD	A,(RAMPAGES.LEFTPANEL)
 | ||
| 		JR	Z,.L3
 | ||
| 		LD	A,(RAMPAGES.RIGHTPANEL)
 | ||
| .L3
 | ||
| 	SETPORT WINSP.CPU3,,0
 | ||
| 		LD	HL,CPU3
 | ||
| 		LD	DE,0x000E
 | ||
| 		LD	BC,0
 | ||
| 		LD	IXH,0
 | ||
| .LoadTr1	LD	A,(HL)
 | ||
| 		AND	0x7F
 | ||
| 		CP	IXH
 | ||
| 		JR	C,.L4
 | ||
| 		LD	IXH,A
 | ||
| .L4		INC	HL
 | ||
| 		LD	(HL),0
 | ||
| 		INC	BC
 | ||
| 		ADD	HL,DE
 | ||
| 		LD	A,(HL)
 | ||
| 		INC	HL
 | ||
| 		INC	A
 | ||
| 		JR	NZ,.LoadTr1
 | ||
| 		RES	VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		LD	A,IXH
 | ||
| 		CP	0x0B
 | ||
| 		JR	C,.L5
 | ||
| 		SET	VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG)
 | ||
| .L5		LD	(IY+PANEL.EFL),C	     ; EQUIP FILES
 | ||
| 		LD	(IY+PANEL.EFH),B
 | ||
| 		BIT	PANELFLAG.B_PRNDOSPATH,(IY+PANEL.PANELFLAG)
 | ||
| 		LD	A,1
 | ||
| 		JR	NZ,.L6
 | ||
| 		LD	A,3
 | ||
| .L6		LD	(CPU3 + 1),A
 | ||
| 		POP	AF
 | ||
| 	SETPORT WINSP.CPU3,,0
 | ||
| .TreeOkey	PUSH	IY
 | ||
| 		POP	HL
 | ||
| 		LD	DE,PANEL.CURRPATH
 | ||
| 		ADD	HL,DE
 | ||
| 		INC	HL
 | ||
| 		INC	HL
 | ||
| 		JP	FindTreeDIRR
 | ||
| 
 | ||
| AbortTree	LD	SP,(ReadTreeR.TreeSP1)
 | ||
| 		POP	IY
 | ||
| 		POP	BC
 | ||
| 		LD	A,B
 | ||
| 	SETPORT WINSP.CPU3,,0
 | ||
| 		LD	A,C
 | ||
| 	SETPORT WINSP.CPU1,,0
 | ||
| 		RES	VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		RES	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
 | ||
| 	WINDOWCLOSE
 | ||
| 		LD	HL,InitPanels
 | ||
| 		EX	(SP),HL
 | ||
| 		SUB	A
 | ||
| 		RET 
 | ||
| 
 | ||
| TreeName	DZ FILENAME.FNTREE_FLN
 | ||
| TreeHead	DB 0,0,0x5C,0,0,0,0xAE,"FlexTree",0
 | ||
| TreeHead_Size	EQU $ - TreeHead
 | ||
| BegDIR		DB 0x5C,0
 | ||
| UpDIR		DB "..",0
 | ||
| CurTree		DB 0
 | ||
| TreeDIRS	DW 0				; ª®«¨ç¥á⢮  ©¤¥ëå ¤¨à
 | ||
| EndTree		DW 0				; ⥪ã騩  ¤à¥á ¢ â ¡«¨æ¥ ¤¨à¥ªâ®à¨©
 | ||
| 
 | ||
| ; ç⥨¥ ®¯¨á â¥«¥© ¤¨à¥ªâ®à¨©
 | ||
| LoadItemDIRR:	LD	DE,(EndTree)
 | ||
| 		PUSH	DE
 | ||
| 		LD	IX,0
 | ||
| 		LD	HL,NORMmask
 | ||
| 		LD	DE,WorkBuffer
 | ||
| 		LD	A,(FileAtribut)
 | ||
| 		AND	DIR.M_Archive + \
 | ||
| 			DIR.M_Dir + \
 | ||
| 			DIR.M_System + \
 | ||
| 			DIR.M_Hidden + \
 | ||
| 			DIR.M_ReadOnly
 | ||
| 		PUSH	IX
 | ||
| 		PUSH	DE
 | ||
| 	SPDSS DSSF.F_FIRST,1
 | ||
| 		POP	HL
 | ||
| 		POP	IX
 | ||
| 		JR	C,.FndFLtrE		; ¨ç¥£® ¥  ©¤¥®?   ¢ë室
 | ||
| .FndFLtr	LD	A,(WorkBuffer + 0x20)
 | ||
| 		AND DIR.M_Dir			; íâ® ¤¨à ?
 | ||
| 		CALL	NZ,.ADD_DIR		; ¥á«¨ ¤  â® ¤®¡ ¢«ï¥¬
 | ||
| 		JR	C,.FndFLtrE		; ®è¨¡ª  ¤®¡ ¢«¥¨ï? ¢ë室¨¬
 | ||
| ; ç¨â ¥¬ á«¥¤ãî騩 ®¯¨á â¥«ì
 | ||
| 		LD	DE,WorkBuffer
 | ||
| 		PUSH	IX
 | ||
| 		PUSH	DE
 | ||
| 	SPDSS DSSF.F_NEXT
 | ||
| 		POP	HL
 | ||
| 		POP	IX
 | ||
| 		JR	NC,.FndFLtr
 | ||
| ; § ¢¥à襨¥ á®§¤ ¨ï ¤¥à¥¢ 
 | ||
| .FndFLtrE	LD	HL,(EndTree)
 | ||
| 		DEC	HL
 | ||
| 		LD	(HL),0xFF
 | ||
| 		LD	C,IXL
 | ||
| 		LD	B,IXH
 | ||
| 		LD	HL,(TreeDIRS)
 | ||
| 		ADD	HL,BC
 | ||
| 		LD	(TreeDIRS),HL
 | ||
| 		POP	HL
 | ||
| 		LD	A,B
 | ||
| 		OR	C
 | ||
| 		RET	Z
 | ||
| 		PUSH	HL
 | ||
| 		CALL	.PRT_NUM_DIR		; ®¡®¢«ï¥¬ ª®«¨ç¥á⢮  ©¤¥ëå ¤¨à
 | ||
| 		POP	HL
 | ||
| 		LD	DE,0
 | ||
| .CurTAdr	EQU $-2
 | ||
| 		LD	A,D
 | ||
| 		OR	E
 | ||
| 		SCF 
 | ||
| 		RET	Z
 | ||
| 		EX	DE,HL
 | ||
| 		LD	BC,0x000D
 | ||
| 		ADD	HL,BC
 | ||
| 		LD	(HL),E
 | ||
| 		INC	HL
 | ||
| 		LD	(HL),D
 | ||
| 		EX	DE,HL
 | ||
| 		SCF 
 | ||
| 		RET 
 | ||
| 
 | ||
| ; § ¥á¥¨¥ ¢ â ¡«¨æã í«¥¬¥â  ¤¨à¥ªâ®à¨¨
 | ||
| .ADD_DIR	EX	DE,HL
 | ||
| 		LD	HL,(EndTree)
 | ||
| 		LD	BC,0x0010
 | ||
| 		ADD	HL,BC
 | ||
| 		SBC	HL,BC
 | ||
| 		EX	DE,HL
 | ||
| 		RET	C
 | ||
| 		LD	BC,FFIRST.Name
 | ||
| 		ADD	HL,BC
 | ||
| 		LD	A,(HL)
 | ||
| 		CP	'.'			; ¯¥à¢ë© ᨬ¢®« ¨¬¥¨ â®çª ?
 | ||
| 		RET	Z
 | ||
| 		LD	C,0x10			; ¤«¨  í«¥¬¥â  ¢ â ¡«¨æ¥
 | ||
| 		SUB	A
 | ||
| ; ¯¥à¥®á ¨¬¥¨ ¤® 0
 | ||
| .L1		LDI 
 | ||
| 		CP	(HL)
 | ||
| 		JR	NZ,.L1
 | ||
| 		LD	B,C
 | ||
| ; ®áâ â®ª § ¯®«ï¥¬ ã«¥¬
 | ||
| .L2		LD	(DE),A
 | ||
| 		INC	DE
 | ||
| 		DJNZ	.L2
 | ||
| 		LD	(EndTree),DE
 | ||
| 		INC	IX
 | ||
| 		RET 
 | ||
| 
 | ||
| ; ª®¢¥àá¨ï ¨ ¯¥ç âì ç¨á«  ª®«¨ç¥á⢠ ¤¨à¥ªâ®à¨© ¢ ¤¥à¥¢¥
 | ||
| .PRT_NUM_DIR	LD	HL,(TreeDIRS)
 | ||
| 		DEC	HL
 | ||
| 		LD	DE,.CurDNumb
 | ||
| 		PUSH	DE
 | ||
| 		LD	B,4
 | ||
| 		LD	A,' '
 | ||
| .L3		LD	(DE),A
 | ||
| 		INC	DE
 | ||
| 		DJNZ	.L3
 | ||
| 		POP	DE
 | ||
| 		EXX 
 | ||
| 		LD	C,0
 | ||
| 		EXX 
 | ||
| 		LD	BC,1000		; 1'000
 | ||
| 		CALL	.GetN16
 | ||
| 		LD	BC,100		; 100
 | ||
| 		CALL	.GetN16
 | ||
| 		LD	BC,10		; 10
 | ||
| 		CALL	.GetN16
 | ||
| 		LD	A,L
 | ||
| 		ADD	A,'0'
 | ||
| 		LD	(DE),A
 | ||
| 		LD	HL,.CurDNumb
 | ||
| 		LD	DE,336		; X pos
 | ||
| 		LD	BC,116		; Y pos
 | ||
| 		LD	A,COLORP.HIGHGRAY
 | ||
| 		JP	PrnTxtLnIFF
 | ||
| 
 | ||
| .GetN16		LD	A,'0' - 1
 | ||
| 		OR	A
 | ||
| .L4		INC	A
 | ||
| 		SBC	HL,BC
 | ||
| 		JR	NC,.L4
 | ||
| 		ADD	HL,BC
 | ||
| 		CP	'0'
 | ||
| 		JR	Z,.L5
 | ||
| 		EXX 
 | ||
| 		SET	0,C
 | ||
| 		EXX 
 | ||
| .L5		EXX 
 | ||
| 		BIT	0,C
 | ||
| 		EXX 
 | ||
| 		RET	Z
 | ||
| 		LD	(DE),A
 | ||
| 		INC	DE
 | ||
| 		RET 
 | ||
| 
 | ||
| .CurDNumb	DEFB	"    ",0
 | ||
| 
 | ||
| ;[]=========================================================[]
 | ||
| TestTreeR	BIT	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		RET	Z
 | ||
| 		LD	B,0x28
 | ||
| .TstTree	PUSH	BC
 | ||
| 	SPMOUSE MOUSEF.READ_STATE
 | ||
| 		POP	BC
 | ||
| 		OR	A
 | ||
| 		RET	NZ
 | ||
| 		PUSH	BC
 | ||
| 	SPDSS DSSF.TESTKEY
 | ||
| 		POP	BC
 | ||
| 		RET	NZ
 | ||
| 		HALT 
 | ||
| 		DJNZ	.TstTree
 | ||
| 	IFNDEF TREE_DIR_ENTER
 | ||
| 		LD A,E
 | ||
| 		CP 0x0D				; ᬥ  ¤¨à¥ªâ®à¨¨ ¨§ ¤¥à¥¢  ⮫쪮 ¯® ENTER
 | ||
| 		RET NZ
 | ||
| 	ENDIF
 | ||
| .TestTreeBeg
 | ||
| 	GETPORT WINSP.CPU1
 | ||
| 		PUSH	AF
 | ||
| 		BIT	PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
 | ||
| 		LD	A,(RAMPAGES.LEFTPANEL)
 | ||
| 		JR	Z,.L14
 | ||
| 		LD	A,(RAMPAGES.RIGHTPANEL)
 | ||
| .L14
 | ||
| 	SETPORT WINSP.CPU1,,0
 | ||
| 	SETPORT WINSP.Y_PORT,0xC0
 | ||
| 		LD	L,(IY+PANEL.FFL)
 | ||
| 		LD	H,(IY+PANEL.FFH)
 | ||
| 		LD	E,(IY+PANEL.CFL)
 | ||
| 		LD	D,(IY+PANEL.CFH)
 | ||
| 		ADD	HL,DE
 | ||
| 		ADD	HL,HL
 | ||
| 		ADD	HL,HL
 | ||
| 		ADD	HL,HL
 | ||
| 		ADD	HL,HL
 | ||
| 		SET	6,H
 | ||
| 		INC	HL
 | ||
| 		BIT	0,(HL)
 | ||
| 		JR	NZ,.L2
 | ||
| 		EX	DE,HL
 | ||
| 		LD	HL,CPU1
 | ||
| 		LD	BC,0x000E
 | ||
| .L1		INC	HL
 | ||
| 		RES	0,(HL)
 | ||
| 		ADD	HL,BC
 | ||
| 		LD	A,(HL)
 | ||
| 		INC	HL
 | ||
| 		INC	A
 | ||
| 		JR	NZ,.L1
 | ||
| 		EX	DE,HL
 | ||
| 		SET	0,(HL)
 | ||
| 		CALL	PrintDIR
 | ||
| 		CALL	SetInvert
 | ||
| 		CALL	MakeTreePathR
 | ||
| 		PUSH	IY
 | ||
| 		BIT	PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
 | ||
| 		LD	IY,RightPanel
 | ||
| 		JR	Z,.L3
 | ||
| 		LD	IY,LeftPanel
 | ||
| .L3		CALL	NewDIRECTORY
 | ||
| 		POP	IY
 | ||
| .L2		POP	AF
 | ||
| 	SETPORT WINSP.CPU1,,0
 | ||
| 		RET 
 | ||
| 
 | ||
| ;[]==========================================================[]
 | ||
| MakeTreePathR
 | ||
| 	GETPORT WINSP.CPU1
 | ||
| 		PUSH	AF
 | ||
| 		BIT	PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
 | ||
| 		LD	A,(RAMPAGES.LEFTPANEL)
 | ||
| 		JR	Z,.L5
 | ||
| 		LD	A,(RAMPAGES.RIGHTPANEL)
 | ||
| .L5
 | ||
| 	SETPORT WINSP.CPU1,,0
 | ||
| 		LD	L,(IY+PANEL.FFL)
 | ||
| 		LD	H,(IY+PANEL.FFH)
 | ||
| 		LD	E,(IY+PANEL.CFL)
 | ||
| 		LD	D,(IY+PANEL.CFH)
 | ||
| 		ADD	HL,DE
 | ||
| 		ADD	HL,HL
 | ||
| 		ADD	HL,HL
 | ||
| 		ADD	HL,HL
 | ||
| 		ADD	HL,HL
 | ||
| 		SET	6,H
 | ||
| 		LD	DE,WorkBuffer+0xFF
 | ||
| 		LD	BC,0x0010
 | ||
| 		SUB	A
 | ||
| 		LD	(DE),A
 | ||
| 		DEC	DE
 | ||
| 		LD	A,(HL)
 | ||
| 		OR	A
 | ||
| 		JR	Z,.L4
 | ||
| 		AND	0x7F
 | ||
| 		INC	A
 | ||
| 		LD	IXL,A
 | ||
| 		ADD	HL,BC
 | ||
| 		INC	DE
 | ||
| .L3		SBC	HL,BC
 | ||
| 		PUSH	HL
 | ||
| 		LD	A,(HL)
 | ||
| 		INC	HL
 | ||
| 		AND	0x7F
 | ||
| 		CP	IXL
 | ||
| 		JR	NC,.L2
 | ||
| 		LD	IXL,A
 | ||
| 		LD	B,0xFF
 | ||
| 		SUB	A
 | ||
| .L6		INC	B
 | ||
| 		INC	HL
 | ||
| 		CP	(HL)
 | ||
| 		JR	NZ,.L6
 | ||
| .L1		DEC	HL
 | ||
| 		DEC	DE
 | ||
| 		LD	A,(HL)
 | ||
| 		LD	(DE),A
 | ||
| 		DJNZ	.L1
 | ||
| 		DEC	DE
 | ||
| 		LD	A,'\\'
 | ||
| 		LD	(DE),A
 | ||
| .L2		POP	HL
 | ||
| 		LD	A,(HL)
 | ||
| 		AND	0x7F
 | ||
| 		CP	2
 | ||
| 		JR	NC,.L3
 | ||
| .L4		EX	DE,HL
 | ||
| 		LD	(HL),'\\'
 | ||
| 		POP	AF
 | ||
| 	SETPORT WINSP.CPU1,,0
 | ||
| 		RET 
 | ||
| 
 | ||
| ;[]==========================================================[]
 | ||
| FindTreeDIRR
 | ||
| 	GETPORT WINSP.CPU1
 | ||
| 		PUSH	AF
 | ||
| 	SETPORT WINSP.Y_PORT,0xC0
 | ||
| 		LD	IX,LeftPanel
 | ||
| 		BIT	VIEWFLAG.B_TREE,(IX+PANEL.VIEWFLAG)
 | ||
| 		LD	A,(RAMPAGES.LEFTPANEL)
 | ||
| 		JR	NZ,.L14
 | ||
| 		LD	A,(RAMPAGES.RIGHTPANEL)
 | ||
| .L14
 | ||
| 	SETPORT WINSP.CPU1,,0
 | ||
| 		LD	DE,CPU1
 | ||
| 		LD	BC,0
 | ||
| .L1		LD	A,(DE)
 | ||
| 		AND	0x7F
 | ||
| 		LD	IXL,A
 | ||
| .L2		PUSH	HL
 | ||
| 		PUSH	DE
 | ||
| 		LD	A,(DE)
 | ||
| 		AND	0x7F
 | ||
| 		CP	IXL
 | ||
| 		JR	NZ,.L4
 | ||
| 		INC	DE
 | ||
| 		INC	DE
 | ||
| .L3		LD	A,(DE)
 | ||
| 		CP	(HL)
 | ||
| 		JR	NZ,.L4
 | ||
| 		INC	HL
 | ||
| 		INC	DE
 | ||
| 		LD	A,(DE)
 | ||
| 		OR	A
 | ||
| 		JR	Z,.L6
 | ||
| 		LD	A,(HL)
 | ||
| 		CP	'\\'
 | ||
| 		JR	NZ,.L3
 | ||
| .L4		POP	HL
 | ||
| 		LD	DE,0x000F
 | ||
| 		ADD	HL,DE
 | ||
| 		EX	DE,HL
 | ||
| 		POP	HL
 | ||
| 		INC	BC
 | ||
| 		LD	A,(DE)
 | ||
| 		INC	DE
 | ||
| 		INC	A
 | ||
| 		JR	NZ,.L2
 | ||
| .L5		POP	AF
 | ||
| 	SETPORT WINSP.CPU1,,0
 | ||
| 		SCF 
 | ||
| 		RET 
 | ||
| 
 | ||
| .L6		LD	A,IXL
 | ||
| 		OR	A
 | ||
| 		JR	Z,.L7
 | ||
| 		LD	A,(HL)
 | ||
| 		INC	HL
 | ||
| 		CP	'\\'
 | ||
| 		JR	Z,.L7
 | ||
| 		DEC	HL
 | ||
| 		OR	A
 | ||
| 		JR	NZ,.L4
 | ||
| .L7		POP	DE
 | ||
| 		INC	SP
 | ||
| 		INC	SP
 | ||
| 		LD	A,E
 | ||
| 		ADD	A,0x0F
 | ||
| 		LD	E,A
 | ||
| 		JR	NC,.L15
 | ||
| 		INC	D
 | ||
| .L15		INC	BC
 | ||
| 		LD	A,(HL)
 | ||
| 		OR	A
 | ||
| 		JR	Z,.L8
 | ||
| 		LD	A,(DE)
 | ||
| 		INC	DE
 | ||
| 		INC	A
 | ||
| 		JR	Z,.L5
 | ||
| 		JR	.L1
 | ||
| 
 | ||
| .L8		DEC	BC
 | ||
| 		PUSH	BC
 | ||
| 		LD	HL,CPU1
 | ||
| 		LD	BC,0x000E
 | ||
| .L9		INC	HL
 | ||
| 		LD	(HL),B
 | ||
| 		ADD	HL,BC
 | ||
| 		LD	A,(HL)
 | ||
| 		INC	HL
 | ||
| 		INC	A
 | ||
| 		JR	NZ,.L9
 | ||
| 		POP	HL
 | ||
| 		LD	A,E
 | ||
| 		SUB	0x0E
 | ||
| 		LD	E,A
 | ||
| 		JR	NC,.L10
 | ||
| 		DEC	D
 | ||
| .L10		LD	IX,LeftPanel
 | ||
| 		BIT	VIEWFLAG.B_TREE,(IX+PANEL.VIEWFLAG)
 | ||
| 		JR	NZ,.L11
 | ||
| 		LD	IX,RightPanel
 | ||
| .L11		BIT	PANELFLAG.B_PRNDOSPATH,(IX+PANEL.PANELFLAG)
 | ||
| 		LD	A,1
 | ||
| 		JR	NZ,.L12
 | ||
| 		LD	A,3
 | ||
| .L12		LD	(DE),A
 | ||
| 		POP	AF
 | ||
| 	SETPORT WINSP.CPU1,,0
 | ||
| 		LD	E,L
 | ||
| 		LD	D,H
 | ||
| 		LD	BC,4
 | ||
| 		OR	A
 | ||
| 		SBC	HL,BC
 | ||
| 		JR	NC,.L13
 | ||
| 		LD	HL,0
 | ||
| .L13		LD	(IX+PANEL.FFL),L
 | ||
| 		LD	(IX+PANEL.FFH),H
 | ||
| 		EX	DE,HL
 | ||
| 		OR	A
 | ||
| 		SBC	HL,DE
 | ||
| 		LD	(IX+PANEL.CFL),L
 | ||
| 		LD	(IX+PANEL.CFH),H
 | ||
| 		OR	A
 | ||
| 		RET 
 |