; LAST UPDATE: 24.07.2025 savelij
;[]----------------------------------------------------------[]
PrintDisks	LD	L,(IY + PANEL.X)
		LD	H,(IY + PANEL.X + 1)
		INC	HL
		INC	HL
		LD	(.DiskX1),HL
		LD	DE,0x0004
		ADD	HL,DE
		LD	(.DiskX2),HL
		LD	DE,0x0006
		ADD	HL,DE
		LD	(.NameX),HL
		LD	A,'A'
		LD	(.DISK),A
		PUSH	IY
		POP	HL
		LD	DE,PANEL.CURR_PATH
		ADD	HL,DE
		LD	A,(HL)
		SUB	'A'
		LD	C,A
		LD	A,(NUM_DEVICES)
		LD	B,A
.L1		LD	A,C
		OR	A
		LD DE,(COLORP.BLACK + COLORI.BLACKGRAY)  << 8 | (COLORP.BLACKGRAY + COLORI.YELLOW)
		JR	Z,.L2
		LD DE,(COLORP.BLACK + COLORI.HIGHGRAY) << 8 | (COLORP.HIGHGRAY + COLORI.BLACK)
.L2		LD	A,D
		LD	(.ColRect),A
		LD	A,E
		LD	(.ColName),A
	MAKEWINDOW WINSUBOBJ.WOBIND
	W_BUTTON 0,30,28,12
.DiskX1		EQU $ - 8
.LnDiskX	EQU $ - 4
	W_FILL 0,32,20,8,COLORI.BLACK
.DiskX2		EQU $ - 9
.ColRect	EQU $ - 1
	W_TEXT 0,32,COLORI.BLACK," "
.NameX		EQU $ - 7
.ColName	EQU $ - 3
.DISK		EQU $ - 2
	W_END
		LD	HL,(.DiskX1)
		LD	DE,(.LnDiskX)
		ADD	HL,DE
		LD	(.DiskX1),HL
		LD	HL,(.DiskX2)
		ADD	HL,DE
		LD	(.DiskX2),HL
		LD	HL,(.NameX)
		ADD	HL,DE
		LD	(.NameX),HL
		LD	HL,.DISK
		INC	(HL)
		DEC	C
		DJNZ	.L1
		RET 
;[]----------------------------------------------------------[]
PrintPath	BIT	PANELFLAG.B_PRNDOSPATH,(IY + PANEL.PANELFLAG)
		LD	A,COLORP.BLACK + COLORI.BLACK
		LD	C,COLORP.BLACK + COLORI.WHITE
		JR	NZ,.L1
		LD	A,COLORP.BLACK + COLORI.BLACKGRAY
		LD	C,COLORP.BLACKGRAY + COLORI.WHITE
.L1		LD	(.HeadCol),A
		LD	A,C
		LD	(.PathCol),A
		LD	L,(IY + PANEL.X)
		LD	H,(IY + PANEL.X + 1)
		LD	(.PanelHX),HL
	MAKEWINDOW WINSUBOBJ.WOBIND
	W_FILL 0,46,310,12,COLORI.BLACK
.PanelHX	EQU $ - 9
.HeadCol	EQU $ - 1
	W_END
		PUSH	IY
		POP	HL
		LD	BC,PANEL.CURR_PATH
		ADD	HL,BC
		PUSH	HL
		LD	DE,WorkBuffer
		SUB	A
.L2		LDI 
		CP	(HL)
		JR	NZ,.L2
		DEC	HL
		LD	A,'\\'
		CP	(HL)
		JR	Z,.L3
		LD	(DE),A
		INC	DE
.L3		POP	HL
		SUB	A
		LD	(DE),A
		BIT	VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
		JR	NZ,.PrPath1
		LD	BC,0x000D
		SBC	HL,BC
		BIT	SORTFLAG.B_FILTER,(IY + PANEL.SORTFLAG)
		JR	NZ,.L4
		LD	HL,NORMmask
.L4		LDIR 
.PrPath1	LD	IX,300
		LD	HL,(.PanelHX)
		LD	DE,WorkBuffer
		LD	BC,0x0006
		ADD	HL,BC
		EX	DE,HL
		LD	C,0x30
		LD	A,0x00
.PathCol	EQU $-1
		JP	PrnRangPathL
;[]----------------------------------------------------------[]
PrintDOSPath	PUSH	IY
		POP	HL
		LD	BC,PANEL.CURR_PATH
		ADD	HL,BC
		LD	DE,WorkBuffer
		SUB	A
.L1		LDI 
		CP	(HL)
		JR	NZ,.L1
		DEC	HL
		LD	A,'\\'
		CP	(HL)
		JR	Z,.L2
		LD	(DE),A
		INC	DE
.L2		LD	A,'>'
		LD	(DE),A
		INC	DE
		SUB	A
		LD	(DE),A
	MAKEWINDOW WINSUBOBJ.WOBIND
	W_FILL 4,231,246,8,COLORI.HIGHGRAY
	W_END
		LD	IX,246
		LD	HL,WorkBuffer
		LD	DE,250
		LD	BC,231
		LD	A,COLORP.HIGHGRAY + COLORI.BLACK
		JP	PrnRangPathR
;[]----------------------------------------------------------[]
PrnFileInfo	BIT	VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
		JP	NZ,PrnTreeInfo		;Tree
		LD	A,(IY + PANEL.FILES_MARK)
		OR	(IY + PANEL.FILES_MARK + 1)
		JP	NZ,PrnSelInfo
	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	L,(IY + PANEL.FIRST_FILE)
		LD	H,(IY + PANEL.FIRST_FILE + 1)
		LD	E,(IY + PANEL.CURR_FILE)
		LD	D,(IY + PANEL.CURR_FILE + 1)
		ADD	HL,DE
		ADD	HL,HL			; *2
		ADD	HL,HL			; *4
		ADD	HL,HL			; *8
		LD	E,L
		LD	D,H
		ADD	HL,HL			; *10
		ADD	HL,DE			; *18
		SET	6,H			; | 0x4000
		LD	DE,WorkBuffer
		LD	BC,FileHDR.SIZE
		CALL	MoveBytes
		POP	AF
	SETPORT WINSP.CPU1,,0
		LD	HL,WorkBuffer + FileHDR.SIZE;0x18
		LD	B,38
		LD	A,' '
.L2		LD	(HL),A
		INC	HL
		DJNZ	.L2
		LD	(HL),0x00
		LD	IX,WorkBuffer
		LD	HL,WorkBuffer+1
		LD	A,(HL)
		OR	A
		JR	Z,PrntFI
		LD	DE,WorkBuffer + FileHDR.SIZE;0x18
		LD	B,0x08
.EFI0		LD	A,(HL)
		CP	' '
		JR	Z,.EFI1
		INC	HL
		LD	(DE),A
		INC	DE
		DJNZ	.EFI0
.EFI1		LD	A,B
		OR	A
		JR	Z,.L3
.L4		INC	HL
		DJNZ	.L4
.L3		LD	B,0x03
		INC	HL
		LD	A,(HL)
		CP	' '
		JR	NZ,.EFI3
.EFI2		LD	A,(HL)
		INC	HL
		LD	(DE),A
		INC	DE
		DJNZ	.EFI2
.EFI3		LD	A,B
		OR	A
		JR	Z,.EndFI
		LD	A,'.'
		LD	(DE),A
		INC	DE
.EFI4		LD	A,(HL)
		INC	HL
		LD	(DE),A
		INC	DE
		DJNZ	.EFI4
.EndFI		LD	DE,WorkBuffer + FileHDR.SIZE + FileHDR.Zero;0x18 + 0x0D
		CALL	GetFileLen
		LD	DE,WorkBuffer + FileHDR.SIZE + FileHDR.SIZE;0x18+0x18
		CALL	GetData
		INC	DE
		CALL	GetTime
PrntFI		LD	HL,WorkBuffer + FileHDR.SIZE;0x18
		LD	E,(IY+PANEL.X)
		LD	D,(IY+PANEL.X + 1)
		INC	DE
		INC	DE
		INC	DE
		INC	DE
		LD	BC,215
		LD	A,COLORP.HIGHGRAY + COLORI.BLACK
		JP	PrnTxtLnNorm
GetFileLen	BIT	DIR.B_Dir,(IX + FileHDR.Attr)
		JP	NZ,PDirectory
		RES	DIR.B_Device,(IX + FileHDR.Attr)
		LD	HL,GetLenExit
		LD	(ChooseStringFormat.address),HL
		LD	L,(IX + FileHDR.SizeBytes)
		LD	H,(IX + FileHDR.SizeBytes + 1)
		EXX 
		LD	L,(IX + FileHDR.SizeBytes + 2)
		LD	H,(IX + FileHDR.SizeBytes + 3)
		EXX
		JP	ConvNumTxt32_Shared
GetLenExit	CP	0x30
		JR	Z,.L1
		SET	DIR.B_Device,(IX + FileHDR.Attr)
.L1		BIT	DIR.B_Device,(IX + FileHDR.Attr)
		JR	NZ,.L2
		LD	A,0x20
.L2		LD	(DE),A
		INC	DE
		RET 
PDirectory	LD	HL,DirText
		LD	BC,0x000A
		LDIR 
		RET 
DirText		DEFB	"   
  "
; Дата
GetData		EX	DE,HL
		LD	A,(IX + FileHDR.Date)
		CALL	Get8Bit
		LD	(HL),'.'
		INC	HL
		LD	A,(IX + FileHDR.Month)
		CALL	Get8Bit
		LD	(HL),'.'
		INC	HL
		LD	A,(IX + FileHDR.Year)	;Год
		CALL	Get8Bit
		EX	DE,HL
		RET 
; Время
GetTime		EX	DE,HL
		LD	A,(IX + FileHDR.Hours)	;Часы
		CALL	Get8Bit
		LD	(HL),':'
		INC	HL
		LD	A,(IX + FileHDR.Minutes)
		CALL	Get8Bit
		EX	DE,HL
		RET 
Get8Bit		LD	B,'0' - 1
.L1		INC	B
		SUB	10
		JR	NC,.L1
		ADD	A,10
		LD	(HL),B
		INC	HL
		ADD	A,'0'
		LD	(HL),A
		INC	HL
		RET 
PrnTreeInfo
	IF TREE_REZID
		CALL	RESIDENT.MakeTreePath
	ELSE
		CALL	MakeTreePathR
	ENDIF
		EX	DE,HL
		PUSH	IY
		POP	HL
		LD	BC,PANEL.CURR_PATH
		ADD	HL,BC
		INC	HL
		INC	HL
		EX	DE,HL
		SUB	A
.L1		LDI 
		CP	(HL)
		JR	NZ,.L1
		LD	(DE),A
		CALL	PrintPath
		BIT	PANELFLAG.B_PRNDOSPATH,(IY+PANEL.PANELFLAG)
		JP	NZ,PrintDOSPath
		RET 
PrnSelInfo	LD	L,(IY+PANEL.BYTES_MARK)
		LD	H,(IY+PANEL.BYTES_MARK + 1)
		LD	C,(IY+PANEL.BYTES_MARK + 2)
		LD	B,(IY+PANEL.BYTES_MARK + 3)
		LD	A,(IY+PANEL.BYTES_MARK_H)	; [ ] FAT32
		LD	DE,WorkBuffer
		CALL	ConvNumTxt40			; [ ] fat32
		LD	HL,CrSizeT
		LD	BC,0x000A
		LDIR 
		LD	L,(IY+PANEL.FILES_MARK)
		LD	H,(IY+PANEL.FILES_MARK + 1)
		CALL	ConvNumTxt16
		LD	HL,CrSelT
		LD	BC,0x000F
		LDIR 
		LD	A,E
		LD	DE,WorkBuffer+0x100
		LD	C,A
		SUB	38
		NEG 
		SRL	A
		LD	B,A
		JR	Z,.PrSelI1
		LD	A,0x20
.L1		LD	(DE),A
		INC	E
		DJNZ	.L1
.PrSelI1	LD	HL,WorkBuffer
		LDIR 
		LD	A,38
		SUB	E
		JR	Z,.PrSelI2
		LD	B,A
		LD	A,0x20
.L2		LD	(DE),A
		INC	E
		DJNZ	.L2
.PrSelI2	SUB	A
		LD	(DE),A
		LD	HL,WorkBuffer+0x100
		LD	E,(IY+PANEL.X)
		LD	D,(IY+PANEL.X + 1)
		INC	DE
		INC	DE
		INC	DE
		INC	DE
		LD	BC,215
		LD	A,COLORP.HIGHGRAY + COLORI.BLACK
		JP	PrnTxtLnNorm
CrSizeT		DEFB	" bytes in "
CrSelT		DEFB	" selected files"
;[]----------------------------------------------------------[]
PrintDIR	LD	A,(IY+PANEL.FILES_ALL)
		OR	(IY+PANEL.FILES_ALL + 1)
		JR	NZ,PrnDIRECT
		LD	L,(IY+PANEL.X)
		LD	H,(IY+PANEL.X + 1)
		INC	HL
		INC	HL
		LD	(.ClrDIR1),HL
		LD	HL,308
		LD	DE,141
		LD	A,(IY+PANEL.VIEWFLAG)
		AND	VIEWFLAG.MASK
		JR	Z,.L1
		LD	HL,292
		LD	DE,149
.L1		LD	(.H),HL
		LD	(.V),DE
	MAKEWINDOW WINSUBOBJ.WOBIND
	W_FILL 0,60,0,0,COLORI.PANEL
.ClrDIR1	EQU $ - 9
.H		EQU $ - 5
.V		EQU $ - 3
	W_END
		RET
PrnDIRECT	BIT	VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG)
		JP	NZ,PrintFULL
		BIT	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
		JP	NZ,PrintTREE
; Краткий список
		PUSH	IY
	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	L,(IY+PANEL.FIRST_FILE)
		LD	H,(IY+PANEL.FIRST_FILE + 1)
		ADD	HL,HL			; *2
		ADD	HL,HL			; *4
		ADD	HL,HL			; *8
		LD	E,L
		LD	D,H
		ADD	HL,HL			; *10
		ADD	HL,DE			; *18
		SET	6,H			; | 0x4000
		LD	DE,WorkBuffer
		LD	BC,0x33 * FileHDR.SIZE;0x18
		CALL	MoveBytes
		POP	AF
	SETPORT WINSP.CPU1,,0
		LD	B,COLORP.PANEL + COLORI.FILES
		LD	C,COLORP.PANEL + COLORI.SELECTFILES
		CALL	InsPrnColor
	GETPORT WINSP.Y_PORT		; Сохраняем Y порт
		LD	C,A
	GETPORT WINSP.CPU1
		LD	B,A
		PUSH	BC
	SETPORT WINSP.CPU1,0x50
		LD	HL,WorkBuffer
		PUSH	HL
		BIT	PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
		LD	HL,PositTABLeft
		JR	Z,.L2
		LD	HL,PositTABRight
.L2		LD	B,0x33
.PrnDIR1	LD	E,(HL)
		INC	HL
		LD	D,(HL)
		INC	HL
		LD	C,(HL)
		INC	HL
		EX	(SP),HL
		PUSH	HL
		PUSH	BC
		LD	B,0x0C
		CALL	PrintName
		POP	BC
		POP	HL
		LD	DE,0x0019
		ADD	HL,DE
		LD	A,(HL)
		DEC	HL
		OR	A
		JR	Z,PrnDIR2
		EX	(SP),HL
		DJNZ	.PrnDIR1
		JR	PrnDIRe
PrnDIR2		DEC	B
		JR	Z,PrnDIRe
		LD	HL,EmptyFile
		EX	(SP),HL
PrnDIR3		LD	E,(HL)
		INC	HL
		LD	D,(HL)
		INC	HL
		LD	C,(HL)
		INC	HL
		EX	(SP),HL
		PUSH	HL
		PUSH	BC
		LD	B,0x0C
		CALL	PrintName
		POP	BC
		POP	HL
		EX	(SP),HL
		DJNZ	PrnDIR3
PrnDIRe		POP	HL
		POP	BC
		LD	A,B
	SETPORT WINSP.CPU1,,0
		LD	A,C
	SETPORT WINSP.Y_PORT,,0
		POP	IY
		RET 
EmptyFile	DB	0x00,"        ",0x01,"   ",0x00
; Подробный список
PrintFULL	PUSH	IY
	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	L,(IY+PANEL.FIRST_FILE)
		LD	H,(IY+PANEL.FIRST_FILE + 1)
		ADD	HL,HL			; *2
		ADD	HL,HL			; *4
		ADD	HL,HL			; *8
		LD	E,L
		LD	D,H
		ADD	HL,HL			; *10
		ADD	HL,DE			; *18
		SET	6,H			; | 0x4000
		LD	DE,WorkBuffer
		LD	BC,0x12 * FileHDR.SIZE;0x18
		CALL	MoveBytes
		POP	AF
	SETPORT WINSP.CPU1,,0
		LD	B,COLORP.PANEL + COLORI.FILES
		LD	C,COLORP.PANEL + COLORI.SELECTFILES
		CALL	InsPrnColor
	GETPORT WINSP.Y_PORT		; Сохраняем Y порт
		LD	C,A
	GETPORT WINSP.CPU1
		LD	B,A
		PUSH	BC
	SETPORT WINSP.CPU1,0x50
		LD	HL,WorkBuffer
		BIT	PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
		LD	DE,8
		JR	Z,.L2
		LD	DE,328
.L2		LD	BC,0x123F
.PrnDIRp	PUSH	HL
		PUSH	DE
		PUSH	BC
		PUSH	HL
		LD	DE,WorkBuffer+0x200
		LD	BC,0x000D
		LDIR 
		LD	A,0x01
		LD	(DE),A
		INC	DE
		POP	IX
		BIT	DIR.B_Dir,(IX + FileHDR.Attr)
		CALL	NZ,PutDIRTxt
		CALL	Z,GetFileLen
		LD	A,0x01
		LD	(DE),A
		INC	DE
		CALL	GetData
		LD	A,0x01
		LD	(DE),A
		INC	DE
		CALL	GetTime
		POP	BC
		POP	DE
		POP	HL
		PUSH	DE
		PUSH	BC
		PUSH	HL
		LD	HL,WorkBuffer+0x200
		LD	B,0x26
		CALL	PrintName
		POP	HL
		LD	BC,0x0019
		ADD	HL,BC
		POP	BC
		LD	A,C
		ADD	A,0x08
		LD	C,A
		POP	DE
		LD	A,(HL)
		DEC	HL
		OR	A
		JR	Z,.PrnDIRp2
		DJNZ	.PrnDIRp
		JR	.PrnDIRpE
.PrnDIRp2	DEC	B
		JR	Z,.PrnDIRpE
		LD	HL,EmptyFile1
.PrnDIRp3	PUSH	HL
		PUSH	DE
		PUSH	BC
		LD	B,0x26
		CALL	PrintName
		POP	BC
		LD	A,C
		ADD	A,0x08
		LD	C,A
		POP	DE
		POP	HL
		DJNZ	.PrnDIRp3
.PrnDIRpE	POP	BC
		LD	A,B
	SETPORT WINSP.CPU1,,0
		LD	A,C
	SETPORT WINSP.Y_PORT,,0
		POP	IY
		RET 
PutDIRTxt	EX	AF,AF'
		LD	HL,DIRt1
		LD	A,(IX + FileHDR.Name)
		CP	'.'
		JR	Z,.L1
		LD	HL,DIRt2
.L1		LD	BC,0x000A
		LDIR 
		EX	AF,AF'
		RET 
DIRt1		DEFB	0x20,0x10,"UP--DIR",0x11
DIRt2		DEFB	0x20,0x10,"SUB-DIR",0x11
EmptyFile1	DEFB	0x00,"        "
		DEFB	0x01,"   "
		DEFB	0x01,"          "
		DEFB	0x01,"        "
		DEFB	0x01,"     "
; Дерево каталогов
PrintTREE
	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	HL,WorkBuffer
		LD	B,0x18
		LD	A,0x80
		PUSH	HL
.L2		LD	(HL),A
		INC	L
		DJNZ	.L2
		POP	DE
		LD	HL,0x4000
		LD	C,(IY+PANEL.FIRST_FILE)
		LD	B,(IY+PANEL.FIRST_FILE + 1)
		LD	A,B
		OR	C
		JR	Z,.PrDIRb2
.PrDIRb1	PUSH	BC
		LD	A,(HL)
		AND	0x7F
		LD	E,A
		LD	A,(HL)
		LD	(DE),A
		LD	BC,0x0010
		ADD	HL,BC
		POP	BC
		DEC	BC
		LD	A,B
		OR	C
		JR	NZ,.PrDIRb1
.PrDIRb2	LD	DE,WorkBuffer+0x100
		LD	BC,0x12*0x10
		CALL	MoveBytes
		POP	AF
	SETPORT WINSP.CPU1,,0
		LD	B,COLORP.PANEL + COLORI.FILES
		LD	C,COLORP.PANEL + COLORI.SELECTFILES
		CALL	InsPrnColor
	GETPORT WINSP.Y_PORT		; Сохраняем Y порт
		LD	C,A
	GETPORT WINSP.CPU1
		LD	B,A
		PUSH	BC
	SETPORT WINSP.CPU1,0x50
		BIT	PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
		LD	HL,WorkBuffer+0x100
		LD	DE,10
		JR	Z,.L3
		LD	DE,330
.L3		LD	BC,0x123F
.PrnDIRt	PUSH	HL
		PUSH	DE
		PUSH	BC
		LD	DE,WorkBuffer+0x300
		CALL	MakeTreeLine
		POP	BC
		POP	DE
		POP	HL
		PUSH	DE
		PUSH	BC
		PUSH	HL
		LD	HL,WorkBuffer+0x300
		LD	B,0x24
		PUSH	IY
		CALL	PrintName
		POP	IY
		POP	HL
		LD	BC,0x000F
		ADD	HL,BC
		POP	BC
		LD	A,C
		ADD	A,0x08
		LD	C,A
		POP	DE
		LD	A,(HL)
		INC	HL
		INC	A
		JR	Z,.PrnDIRt2
		DEC	B
		JP	NZ,.PrnDIRt
		JR	.PrnDIRtE
.PrnDIRt2	DEC	B
		JR	Z,.PrnDIRtE
		LD	HL,EmptyFile2
		PUSH	IY
.PrnDIRt3	PUSH	HL
		PUSH	DE
		PUSH	BC
		LD	B,0x24
		CALL	PrintName
		POP	BC
		LD	A,C
		ADD	A,0x08
		LD	C,A
		POP	DE
		POP	HL
		DJNZ	.PrnDIRt3
		POP	IY
.PrnDIRtE	POP	BC
		LD	A,B
	SETPORT WINSP.CPU1,,0
		LD	A,C
	SETPORT WINSP.Y_PORT,,0
		RET 
MakeTreeLine	SUB	A
		LD	(DE),A
		INC	E
		LD	C,(HL)
		INC	HL
		LD	A,(HL)
		INC	HL
		LD	IXL,A
		LD	A,' '
		LD	(DE),A
		INC	E
		INC	C
		DEC	C		; r.C=0 "\"
		JR	Z,.MTreeL2
		PUSH	HL
		LD	A,C
		AND	0x7F
		LD	B,A
		LD	HL,WorkBuffer
		PUSH	HL
		LD	L,A
		LD	(HL),C
		POP	HL
		DEC	B
		JR	Z,.MTreeL1
.MTreeL0	INC	HL
		BIT	7,(HL)
		LD	A,0xB3
		JR	Z,.L1
		LD	A,' '
.L1		LD	(DE),A
		INC	E
		BIT	VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG)
		JR	NZ,.L2
		LD	A,' '
		LD	(DE),A
		INC	E
.L2		DJNZ	.MTreeL0
.MTreeL1	BIT	7,C
		LD	A,0xC3
		JR	Z,.L3
		LD	A,0xC0
.L3		LD	(DE),A
		INC	E
		BIT	VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG)
		JR	NZ,.L4
		LD	A,0xC4
		LD	(DE),A
		INC	E
.L4		POP	HL
.MTreeL2	LD	A,IXL
		BIT	1,A
		JR	Z,.MTreeL3
		BIT	VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG)
		JR	NZ,.L5
		DEC	E
.L5		LD	A,0xDD
		LD	(DE),A
		INC	E
		LD	A,IXL
.MTreeL3	BIT	0,A
		LD	A,0x02
		JR	NZ,.L6
		INC	A
.L6		LD	(DE),A
		INC	E
		SUB	A
.L7		LDI 
		CP	(HL)
		JR	NZ,.L7
		LD	A,0x03
		LD	(DE),A
		INC	E
		LD	A,IXL
		BIT	1,A
		JR	Z,.MTreeL5
		LD	A,0xDE
		LD	(DE),A
		INC	E
.MTreeL5	LD	A,0x28
		SUB	E
		JR	Z,.MTreeL6
		JR	C,.MTreeL6
		LD	B,A
		LD	A,0x20
.L8		LD	(DE),A
		INC	E
		DJNZ	.L8
.MTreeL6	LD	A,IXL
		BIT	0,A
		RET	Z
		LD	E,0x26
		LD	A,0x02
		LD	(DE),A
		INC	E
		LD	A,0x11
		LD	(DE),A
		RET 
EmptyFile2	DEFB	0x00
		DB	0x24 DUP ' '
InsPrnColor	LD	HL,PrnINKd1	; INK буфер
		LD	DE,PrnPAPd1	; PAPER буфер
		PUSH	BC
		LD	A,B
		PUSH	AF
		AND	0x0F		; INK
		LD	C,A
		RLCA 
		RLCA 
		RLCA 
		RLCA 
		OR	C
		CPL 
		LD	B,0x08
.L1		LD	(HL),A
		INC	HL
		DJNZ	.L1
		LD	B,A
		POP	AF
		AND	0xF0		; PAPER
		LD	C,A
		RRCA 
		RRCA 
		RRCA 
		RRCA 
		OR	C
		XOR	B		; XOR с INK
		LD	B,0x08
.L2		LD	(DE),A
		INC	DE
		DJNZ	.L2
		POP	BC
		LD	HL,PrnINKd2	; INK буфер
		LD	DE,PrnPAPd2	; PAPER буфер
		LD	A,C
		PUSH	AF
		AND	0x0F		; INK
		LD	C,A
		RLCA 
		RLCA 
		RLCA 
		RLCA 
		OR	C
		CPL 
		LD	B,0x08
.L3		LD	(HL),A
		INC	HL
		DJNZ	.L3
		LD	B,A
		POP	AF
		AND	0xF0		; PAPER
		LD	C,A
		RRCA 
		RRCA 
		RRCA 
		RRCA 
		OR	C
		XOR	B		; XOR с INK
		LD	B,0x08
.L4		LD	(DE),A
		INC	DE
		DJNZ	.L4
		RET 
PrnINKd1	DB	 8 DUP 0
PrnPAPd1	DB	 8 DUP 0
PrnINKd2	DB	 8 DUP 0
PrnPAPd2	DB	 8 DUP 0
PrintName	LD	IYL,C		; Y координата
		LD	A,(HL)
		INC	HL
		PUSH	DE
		EXX 
		LD	HL,PrnPAPd1	; INK буфер
		LD	DE,PrnINKd1	; PAPER буфер
		OR	A
		JR	Z,.L1
		LD	HL,PrnPAPd2	; INK буфер
		LD	DE,PrnINKd2	; PAPER буфер
.L1		POP	BC
		SRL	B
		RR	C
		SET	6,B
		EXX 
		DI 
	GETPORT WINSP.CPU0
		PUSH	AF
		LD	A,(RAMPAGES.FNFONT)
	SETPORT WINSP.CPU0,,0
		LD	A,B
		LD	C,L		; Адрес строки
		LD	B,H
	ACCEL ACCELCMD.SET_BUFFER
		LD	H,0x08
	ACCEL ACCELCMD.OFF
.L2		EX	AF,AF'
		LD	A,(BC)
		INC	BC
		CP	0x03
		JR	NZ,.L3
		EXX 
		LD	HL,PrnPAPd1	; INK буфер
		LD	DE,PrnINKd1	; PAPER буфер
		EXX 
		JR	.L5
.L3		CP	0x02
		JR	NZ,.L4
		EXX 
		LD	HL,PrnPAPd2	; INK буфер
		LD	DE,PrnINKd2	; PAPER буфер
		EXX 
.L5		LD	A,(BC)
		INC	BC
.L4		PUSH	BC
		CP	0x01
		LD	B,0x04
		JR	NZ,.L6
		LD	B,0x02
		LD	A,0x20
.L6		LD	L,A
		LD	H,HIGH (IFFFONT_RAW)-0xC0
		LD	E,(HL)
		INC	H
		LD	A,(HL)
		ADD	A,HIGH (IFFFONT_RAW)-0xC0
		LD	D,A
		LD	HL,0x0008
		EX	DE,HL
.L7
	ACCEL ACCELCMD.COPY
		LD	A,(HL)
	ACCEL ACCELCMD.OFF
		EXX 
		LD	A,IYL
	SETPORT WINSP.Y_PORT,,0
	ACCEL ACCELCMD.COPY
		OR	(HL)
		EX	DE,HL
		XOR	(HL)
	ACCEL ACCELCMD.COPY_VERT
		LD	(BC),A
	ACCEL ACCELCMD.OFF
		EX	DE,HL
		INC	BC
		EXX 
		ADD	HL,DE
		DJNZ	.L7
		POP	BC
		EX	AF,AF'
		DEC	A
		JR	NZ,.L2
		POP	AF
	SETPORT WINSP.CPU0,,0
		EI 
		RET 
PositTABLeft
.COUNT := 63
	REPT 17
		DW 10
		DB .COUNT
.COUNT := .COUNT + 8
	ENDM 
.COUNT := 63
	REPT 17
		DW 114
		DB .COUNT
.COUNT := .COUNT + 8
	ENDM 
.COUNT := 63
	REPT 17
		DW 218
		DB .COUNT
.COUNT := .COUNT + 8
	ENDM
PositTABRight
.COUNT := 63
	REPT 17
		DW 330
		DB .COUNT
.COUNT := .COUNT + 8
	ENDM
.COUNT := 63
	REPT 17
		DW 434
		DB .COUNT
.COUNT := .COUNT + 8
	ENDM
.COUNT := 63
	REPT 17
		DW 538
		DB .COUNT
.COUNT := .COUNT + 8
	ENDM
;[]----------------------------------------------------------[]
SetInvert	BIT	PANELFLAG.B_PRNDOSPATH,(IY+PANEL.PANELFLAG)
		RET	Z
		LD	HL,(COLORP.PANEL + COLORI.FILES) << 8 | (COLORP.PANEL + COLORI.SELECTFILES)
		LD	BC,(COLORP.INVERTPAPER + COLORI.INVERTINK) << 8 | (COLORP.INVERTPAPER + COLORI.INVSELFILES)
		JR	PrnInvert
ResInvert	BIT	PANELFLAG.B_PRNDOSPATH,(IY + PANEL.PANELFLAG)
		RET	Z
		LD	HL,(COLORP.INVERTPAPER + COLORI.INVERTINK) << 8 | (COLORP.INVERTPAPER + COLORI.INVSELFILES)
		LD	BC,(COLORP.PANEL + COLORI.FILES) << 8 | (COLORP.PANEL + COLORI.SELECTFILES)
PrnInvert	LD	A,(IY + PANEL.FILES_ALL)
		OR	(IY + PANEL.FILES_ALL + 1)
		RET	Z
		BIT	VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
		JP	NZ,PrnTreeInv
		PUSH	HL
	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	L,(IY + PANEL.FIRST_FILE)
		LD	H,(IY + PANEL.FIRST_FILE + 1)
		LD	E,(IY + PANEL.CURR_FILE)
		LD	D,(IY + PANEL.CURR_FILE + 1)
		ADD	HL,DE
		ADD	HL,HL			; *2
		ADD	HL,HL			; *4
		ADD	HL,HL			; *8
		LD	E,L
		LD	D,H
		ADD	HL,HL			; *10
		ADD	HL,DE			; *18
		SET	6,H			; | 0xC000
		LD	E,(HL)
		POP	AF
	SETPORT WINSP.CPU1,,0
		POP	HL
		LD	A,E
		OR	A
		LD	E,B
		LD	D,H
		JR	Z,.L2
		LD	E,C
		LD	D,L
.L2		BIT	VIEWFLAG.B_FULL,(IY + PANEL.VIEWFLAG)
		JR	NZ,PrnInvertP
		LD	L,(IY + PANEL.CURR_FILE)
		LD	H,(IY + PANEL.CURR_FILE + 1)
		LD	C,L
		LD	B,H
		ADD	HL,HL
		ADD	HL,BC
		BIT	PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
		LD	BC,PositTABLeft
		JR	Z,.L3
		LD	BC,PositTABRight
.L3		ADD	HL,BC
		PUSH	DE
		LD	E,(HL)
		INC	HL
		LD	D,(HL)
		INC	HL
		LD	C,(HL)
		LD	B,0x00
		EX	DE,HL
		POP	DE
		LD	IX,8 << 8 + 48
		DEC	HL
		DEC	HL
		JP	InvertRectan
PrnInvertP	LD	L,(IY + PANEL.CURR_FILE)
		LD	H,(IY + PANEL.CURR_FILE + 1)
		ADD	HL,HL
		ADD	HL,HL
		ADD	HL,HL
		LD	BC,0x003F
		ADD	HL,BC
		LD	C,L
		LD	B,0x00
		BIT	PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
		LD	HL,6
		JR	Z,.L1
		LD	HL,326
.L1		LD IX,8 << 8 + 146
		JP	InvertRectan
PrnTreeInv	PUSH	HL
	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	L,(IY + PANEL.FIRST_FILE)
		LD	H,(IY + PANEL.FIRST_FILE + 1)
		LD	E,(IY + PANEL.CURR_FILE)
		LD	D,(IY + PANEL.CURR_FILE + 1)
		ADD	HL,DE
		ADD	HL,HL			; *2
		ADD	HL,HL			; *4
		ADD	HL,HL			; *8
		ADD	HL,HL			; *10
		SET	6,H			; | 0x4000
		LD	A,(HL)
		EX	AF,AF'
		INC	HL
		LD	A,(HL)
		LD	IXH,A
		LD	IXL,0xFF
.L2		INC	IXL
		INC	HL
		LD	A,(HL)
		OR	A
		JR	NZ,.L2
		LD	A,IXL
		ADD	A,A
		ADD	A,A
		LD	IXL,A
		POP	AF
	SETPORT WINSP.CPU1,,0
		POP	HL
		LD	A,IXH
		OR	A
		LD	E,B
		LD	D,H
		JR	Z,.L3
		LD	E,C
		LD	D,L
.L3		LD	L,(IY+PANEL.CURR_FILE)
		LD	H,(IY+PANEL.CURR_FILE + 1)
		ADD	HL,HL
		ADD	HL,HL
		ADD	HL,HL
		LD	BC,0x003F
		ADD	HL,BC
		LD	C,L
		LD	B,0x00
		BIT	PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
		LD	HL,0x0012
		JR	Z,.L4
		LD	HL,0x0152
.L4		BIT	VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG)
		JR	Z,.PrTreeI
		EX	AF,AF'
		OR	A
		JR	Z,.PrTreeI1
		EX	AF,AF'
		LD	A,IXH
		OR	A
		JR	Z,.PrTreeI
		PUSH	BC
		LD	C,0x08
		ADD	HL,BC
		POP	BC
.PrTreeI	EX	AF,AF'
.PrTreeI1	PUSH	BC
		AND	0x7F
		LD	C,A
		SLA	C
		RL	B
		SLA	C
		RL	B
		SLA	C
		RL	B
		ADD	HL,BC
		BIT	VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG)
		JR	NZ,.L5
		ADD	HL,BC
.L5		POP	BC
		LD	IXH,0x08
		JP InvertRectan