- плагин доделан, описание/history в cdplayer.txt рядом с плагином. FE 1.09 - исправлено: при выходе из редактора с несохраненным файлом и запросе на сохранение клавиша Enter теперь работает как подтверждение сохранения. FN 1.16 - встроенный editor переехал в плагин откуда и запускается по F4, из FN удален. - встроенный viewer переехал в плагин откуда и запускается по F3, из FN удален. - встроенный help переехал в плагин откуда и запускается при нажатии F1, из FN удален. - загрузка плагина отделена от запуска, теперь можно запускать плагины не только из панели FN. - добавлен макрос формирования заголовка для плагинов. - добавлена поддержка работы плагинов в адреса 0x4000-0x7FFF (окно 1) в дополнение к старым 0xC000-0xBFFF (окно 3), пока используется в плагине cdplayer. - в окнах с ошибкой переделан на 2 типа окон вместо многих под каждую ошибку. - исправлена потеря цвета при печати текста по указанному адресу. - текстовым файлам вернул кодировку CP866, readme.md оставлен в кодировке UTF8.
		
			
				
	
	
		
			1093 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			1093 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
 | ||
| ; LAST UPDATE: 25.07.2025 savelij
 | ||
| 
 | ||
| ;[]==========================================================[]
 | ||
| MarkFileR	LD	A,(IY+PANEL.FILES_ALL)
 | ||
| 		OR	(IY+PANEL.FILES_ALL + 1)
 | ||
| 		RET	Z
 | ||
| 		BIT	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		RET	NZ
 | ||
| 	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	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			; *16
 | ||
| 		ADD	HL,DE			; *18
 | ||
| 		SET	6,H
 | ||
| 		SET	7,H			; | 0xC000
 | ||
| 		LD	E,(HL)			; FileHDR.Flag
 | ||
| 		POP	AF
 | ||
| 	SETPORT WINSP.CPU3,,0
 | ||
| 		BIT	FileHDR.B_MARK,E
 | ||
| 		PUSH	AF
 | ||
| 		CALL	Z,SelectFile
 | ||
| 		POP	AF
 | ||
| 		CALL	NZ,UnSelectFile
 | ||
| 		CALL	CursDown
 | ||
| 		CALL	PrnFileInfo
 | ||
| 		LD	B,0x07
 | ||
| .L2		PUSH	BC
 | ||
| 	SPMOUSE MOUSEF.READ_STATE
 | ||
| 		POP	BC
 | ||
| 		BIT	1,A
 | ||
| 		RET	Z
 | ||
| 		HALT 
 | ||
| 		DJNZ	.L2
 | ||
| 		RET 
 | ||
| 
 | ||
| ;[]==========================================================[]
 | ||
| SelectFile:	LD	IXL,0x01
 | ||
| 		JR	UnSelectFile.L1
 | ||
| 
 | ||
| UnSelectFile:	LD	IXL,0x00
 | ||
| .L1
 | ||
| 	GETPORT WINSP.CPU3
 | ||
| 		PUSH	AF
 | ||
| 		BIT	PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
 | ||
| 		LD	A,(RAMPAGES.LEFTPANEL)
 | ||
| 		JR	Z,.L2
 | ||
| 		LD	A,(RAMPAGES.RIGHTPANEL)
 | ||
| .L2
 | ||
| 	SETPORT WINSP.CPU3,,0
 | ||
| 	SETPORT WINSP.Y_PORT,0xC0
 | ||
| 		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			; *16
 | ||
| 		ADD	HL,DE			; *18 - FileHDR.SIZE
 | ||
| 		SET	6,H
 | ||
| 		SET	7,H			; | 0xC000
 | ||
| 		PUSH	HL
 | ||
| 		LD	DE,FileHDR.Attr
 | ||
| 		ADD	HL,DE
 | ||
| 		LD	C,(HL)			; FileHDR.Attr (ä« £¨ ®¯¨á â¥«ï FAT ä ©« )
 | ||
| 		POP	HL
 | ||
| 		BIT	DIR.B_Dir,C		; íâ® ¤¨à ?
 | ||
| 	IF MARK_DIR
 | ||
| 		CALL NZ,COUNTING_DIR		; ¨§¬¥à¥¨¥ à §¬¥à  ¤¨àë
 | ||
| 	ELSE
 | ||
| 		JR	NZ,.MrFile1		; ¤¨à¥ª®à¨¨ ª®¯¨à®¢ âì ¥ 㬥¥¬, ⮫쪮 ä ©«ë
 | ||
| 	ENDIF
 | ||
| ; íâ® ä ©«
 | ||
| 		LD	B,(HL)			; áâ à®¥ á®áâ®ï¨¥ ¯®¬¥âª¨ ä ©« 
 | ||
| 		LD	A,IXL
 | ||
| 		LD	(HL),A			; ®¢®¥ á®áâ®ï¨¥ ¯®¬¥âª¨ ä ©« 
 | ||
| 		LD A,C
 | ||
| 		LD	DE,WorkBuffer
 | ||
| 		PUSH	BC
 | ||
| 		LD	BC,FileHDR.SIZE
 | ||
| 		LDIR
 | ||
| 		BIT DIR.B_Dir,A			; ä ©« ¨«¨ ¤¨à 
 | ||
| 		JR Z,.L8
 | ||
| 	IF MARK_DIR
 | ||
| ; ª®¯¨à㥬 à §¬¥à ¢ ¡ ©â å ¨§ à §¬¥à  ¤¨àë
 | ||
| 		LD HL,COUNTING_DIR.FILES_SIZE
 | ||
| 		LD DE,WorkBuffer + FileHDR.SizeBytes
 | ||
| 		LD BC,DWORD
 | ||
| 		LDIR
 | ||
| 	ENDIF
 | ||
| .L8		POP	BC
 | ||
| .MrFile1	POP	AF
 | ||
| 	SETPORT WINSP.CPU3,,0
 | ||
| 	IF MARK_DIR = 0
 | ||
| 		BIT	DIR.B_Dir,C
 | ||
| 		RET	NZ			; ¢ë室 ¥á«¨ ¤¨à 
 | ||
| 	ENDIF
 | ||
| 		LD	A,B
 | ||
| 		CP	IXL
 | ||
| 		RET	Z			; ¢ë室 ¥á«¨ áâ à®¥ ¨ ®¢®¥ á®áâ®ï¨¥ ¯®¬¥âª¨ ᮢ¯ «¨
 | ||
| 		BIT	VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG)
 | ||
| 		JR	NZ,.MarkFull
 | ||
| ; ¯à¨ ªà âª®¬ ¯®ª §¥ ä ©«®¢
 | ||
| 		LD	L,(IY+PANEL.CURR_FILE)
 | ||
| 		LD	H,(IY+PANEL.CURR_FILE + 1)
 | ||
| 		LD	E,L
 | ||
| 		LD	D,H
 | ||
| 		ADD	HL,HL
 | ||
| 		ADD	HL,DE
 | ||
| 		BIT	PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
 | ||
| 		LD	DE,PositTABLeft
 | ||
| 		JR	Z,.L3
 | ||
| 		LD	DE,PositTABRight
 | ||
| .L3		ADD	HL,DE
 | ||
| 		LD	E,(HL)
 | ||
| 		INC	HL
 | ||
| 		LD	D,(HL)
 | ||
| 		INC	HL
 | ||
| 		LD	C,(HL)
 | ||
| 		LD	B,0x00
 | ||
| 		EX	DE,HL
 | ||
| 		LD	A,IXL
 | ||
| 		OR	A
 | ||
| 		PUSH	AF
 | ||
| 		LD DE,(COLORP.INVERTPAPER + COLORI.INVERTINK) << 8 | (COLORP.INVERTPAPER + COLORI.INVSELFILES)
 | ||
| 		JR	NZ,.L4
 | ||
| 		LD DE,(COLORP.INVERTPAPER + COLORI.INVSELFILES) << 8 | (COLORP.INVERTPAPER + COLORI.INVERTINK)
 | ||
| .L4		LD IX,8 << 8 + 48
 | ||
| 		DEC	HL
 | ||
| 		DEC	HL
 | ||
| 		CALL	InvertRectan
 | ||
| 		POP	AF
 | ||
| 		JR	NZ,.MarkExit1
 | ||
| 		JR	.MarkExit2
 | ||
| 
 | ||
| ; ¯à¨ ¯®«®¬ ¯®ª §¥ ä ©«®¢
 | ||
| .MarkFull	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
 | ||
| 		BIT	PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
 | ||
| 		LD	HL,6
 | ||
| 		JR	Z,.L5
 | ||
| 		LD	HL,326
 | ||
| .L5		LD	A,IXL
 | ||
| 		OR	A
 | ||
| 		PUSH	AF
 | ||
| 		LD DE,(COLORP.INVERTPAPER + COLORI.INVERTINK) << 8 | (COLORP.INVERTPAPER + COLORI.INVSELFILES)
 | ||
| 		JR	NZ,.L6
 | ||
| 		LD DE,(COLORP.INVERTPAPER + COLORI.INVSELFILES) << 8 | (COLORP.INVERTPAPER + COLORI.INVERTINK)
 | ||
| .L6		LD IX,8 << 8 + 146
 | ||
| 		CALL	InvertRectan
 | ||
| 		POP	AF
 | ||
| 		JR	Z,.MarkExit2
 | ||
| ; ãáâ ®¢ª  ¢ë¡®à ä ©« 
 | ||
| .MarkExit1	LD	IX,WorkBuffer
 | ||
| 		LD	L,(IY + PANEL.FILES_MARK)
 | ||
| 		LD	H,(IY + PANEL.FILES_MARK + 1)
 | ||
| 		INC	HL
 | ||
| 		LD	(IY + PANEL.FILES_MARK),L
 | ||
| 		LD	(IY + PANEL.FILES_MARK + 1),H		; ®¡®¢«¥¨¥ ª®«¨ç¥á⢠ ¯®¬¥ç¥ëå ä ©«®¢
 | ||
| 		LD	L,(IX + FileHDR.SizeBytes)
 | ||
| 		LD	H,(IX + FileHDR.SizeBytes + 1)
 | ||
| 		LD	E,(IY + PANEL.BYTES_MARK)
 | ||
| 		LD	D,(IY + PANEL.BYTES_MARK + 1)
 | ||
| 		XOR	A				; [ ] fat32
 | ||
| 		ADD	HL,DE
 | ||
| 		LD	(IY + PANEL.BYTES_MARK),L
 | ||
| 		LD	(IY + PANEL.BYTES_MARK + 1),H		; ®¡®¢«¥¨¥ à §¬¥à  ¯®¬¥ç¥ëå ä ©«®¢ ¡¨âë 15-0
 | ||
| 		LD	L,(IX + FileHDR.SizeBytes + 2)
 | ||
| 		LD	H,(IX + FileHDR.SizeBytes + 3)
 | ||
| 		; [ ] fat32
 | ||
| 		LD	E,(IY + PANEL.BYTES_MARK + 2)
 | ||
| 		LD	D,(IY + PANEL.BYTES_MARK + 3)
 | ||
| 		ADC	HL,DE
 | ||
| 		; [ ] fat32
 | ||
| 		ADC	A,(IY + PANEL.BYTES_MARK_H)
 | ||
| 		LD	(IY + PANEL.BYTES_MARK_H),A		; ®¡®¢«¥¨¥ à §¬¥à  ¯®¬¥ç¥ëå ä ©«®¢ ¡¨âë 32-39
 | ||
| 		LD	(IY + PANEL.BYTES_MARK + 2),L
 | ||
| 		LD	(IY + PANEL.BYTES_MARK + 3),H		; ®¡®¢«¥¨¥ à §¬¥à  ¯®¬¥ç¥ëå ä ©«®¢ ¡¨âë 31-15
 | ||
| 		RET
 | ||
| 
 | ||
| ; áï⨥ ¢ë¡®à  ä ©« 
 | ||
| .MarkExit2	LD	IX,WorkBuffer
 | ||
| 		LD	L,(IY + PANEL.FILES_MARK)
 | ||
| 		LD	H,(IY + PANEL.FILES_MARK + 1)
 | ||
| 		DEC	HL
 | ||
| 		LD	(IY + PANEL.FILES_MARK),L
 | ||
| 		LD	(IY + PANEL.FILES_MARK + 1),H
 | ||
| 		LD	L,(IY + PANEL.BYTES_MARK)
 | ||
| 		LD	H,(IY + PANEL.BYTES_MARK + 1)
 | ||
| 		LD	E,(IX + FileHDR.SizeBytes)
 | ||
| 		LD	D,(IX + FileHDR.SizeBytes + 1)
 | ||
| 		XOR	A
 | ||
| 		SBC	HL,DE
 | ||
| 		LD	(IY + PANEL.BYTES_MARK),L
 | ||
| 		LD	(IY + PANEL.BYTES_MARK + 1),H
 | ||
| 		LD	L,(IY + PANEL.BYTES_MARK + 2)
 | ||
| 		LD	H,(IY + PANEL.BYTES_MARK + 3)
 | ||
| 		LD	E,(IX + FileHDR.SizeBytes + 2)
 | ||
| 		LD	D,(IX + FileHDR.SizeBytes + 3)
 | ||
| 		SBC	HL,DE
 | ||
| 		; [ ] fat32
 | ||
| 		ADC	A,(IY + PANEL.BYTES_MARK_H)
 | ||
| 		LD	(IY + PANEL.BYTES_MARK_H),A
 | ||
| 		LD	(IY + PANEL.BYTES_MARK + 2),L
 | ||
| 		LD	(IY + PANEL.BYTES_MARK + 3),H
 | ||
| 		RET
 | ||
| 
 | ||
| ;[]==========================================================[]
 | ||
| UnMarkGroupR:	CALL	ResInvert
 | ||
| UnMarkGroupRN:	LD	HL,SetInvert
 | ||
| 		PUSH	HL
 | ||
| 		SUB	A
 | ||
| 		JR	SelectGroup
 | ||
| 
 | ||
| MarkGroupR:	CALL	ResInvert
 | ||
| MarkGroupRN:	LD	HL,SetInvert
 | ||
| 		PUSH	HL
 | ||
| 		LD	A,0x01
 | ||
| SelectGroup:	LD	(SelMode),A
 | ||
| 		LD	A,(IY+PANEL.FILES_ALL)
 | ||
| 		OR	(IY+PANEL.FILES_ALL + 1)
 | ||
| 		RET	Z
 | ||
| 		BIT	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		RET	NZ
 | ||
| 	MAKEWINDOW WINSUBOBJ.STORE
 | ||
| 	W_MAIN 208,81,224,62
 | ||
| 	W_FILL 4,2,216,10,COLORI.BLACK
 | ||
| 	W_TEXT 82,3,COLORI.WHITE,"Select mask"
 | ||
| 	W_BUTTON 32,42,72,14
 | ||
| 	W_TEXT 60,45,COLORP.HIGHGRAY,"Ok"
 | ||
| 	W_BUTTON 120,42,72,14
 | ||
| 	W_TEXT 140,45,COLORP.HIGHGRAY,"Cancel"
 | ||
| 	W_TEXT 10,25,COLORP.HIGHGRAY,"Mark mask:"
 | ||
| 	W_BORDER 70,22,134,12
 | ||
| 	W_FILL 72,23,130,10,COLORI.WHITE
 | ||
| 	W_END
 | ||
| 		LD	IX,SMaskStr
 | ||
| 		LD	HL,SMaskTab
 | ||
| 		CALL	InputLine
 | ||
| 	WINDOWCLOSE
 | ||
| 		RET	C
 | ||
| 		LD	A,(MaskLen)
 | ||
| 		OR	A
 | ||
| 		RET	Z
 | ||
| 		LD	B,A
 | ||
| 		LD	HL,CrSMask
 | ||
| CorMask
 | ||
| 	IF CORR_FILENAME
 | ||
| 		LD	A,(HL)
 | ||
| 		CALL	CorrBigChar
 | ||
| 		LD	(HL),A
 | ||
| 	ENDIF
 | ||
| 		INC	HL
 | ||
| 		DJNZ	CorMask
 | ||
| 		LD	HL,CrSMask
 | ||
| 		LD	DE,SelMask
 | ||
| 		CALL	MakeMask
 | ||
| 		JR	C,MarkGNext
 | ||
| 		LD	HL,NORMmask
 | ||
| 		LD	DE,CrSMask
 | ||
| 		LD	BC,MASK_SIZE
 | ||
| 		LDIR 
 | ||
| 		LD	HL,CrSMask
 | ||
| 		LD	DE,SelMask
 | ||
| 		JP	MakeMask
 | ||
| 
 | ||
| MarkGNext
 | ||
| 	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
 | ||
| 		;!FIXIT	¯à®¢¥à¨âì ¤«ï íâ® ®® ¨«¨ ¥â	SAFE_PORTY 
 | ||
| 	SETPORT WINSP.Y_PORT,0xC0
 | ||
| 		LD	IX,CPU3
 | ||
| 		LD	HL,0xC000
 | ||
| 		LD	DE,SelMask
 | ||
| 		EX	AF,AF'			; [ ] fat32
 | ||
| 		EXX 
 | ||
| 		LD	L,(IY+PANEL.BYTES_MARK)
 | ||
| 		LD	H,(IY+PANEL.BYTES_MARK + 1)
 | ||
| 		LD	E,(IY+PANEL.BYTES_MARK + 2)
 | ||
| 		LD	D,(IY+PANEL.BYTES_MARK + 3)
 | ||
| 		LD	A,(IY+PANEL.BYTES_MARK_H)	; [ ] FAT32
 | ||
| 		LD	C,(IY+PANEL.FILES_MARK)
 | ||
| 		LD	B,(IY+PANEL.FILES_MARK + 1)
 | ||
| 		EXX
 | ||
| 		EX	AF,AF'			; [ ] fat32
 | ||
| 		PUSH	IY
 | ||
| 		LD	IYL,0x00
 | ||
| SelMode		EQU $-1
 | ||
| 		LD	IYH,0x00
 | ||
| Select1		PUSH	DE
 | ||
| 		BIT	DIR.B_Dir,(IX + FileHDR.Attr)
 | ||
| 		JR	NZ,Select8
 | ||
| 		LD	A,IYL
 | ||
| 		CP	(HL)
 | ||
| 		JR	Z,Select8
 | ||
| 		PUSH	HL
 | ||
| 		INC	HL
 | ||
| 		LD	B,8
 | ||
| Select2		LD	A,(DE)
 | ||
| 		CP	'?'
 | ||
| 		JR	Z,Select3
 | ||
| 		CP	(HL)
 | ||
| 		JR	NZ,Select6
 | ||
| Select3		INC	HL
 | ||
| 		INC	DE
 | ||
| 		DJNZ	Select2
 | ||
| 		INC	HL
 | ||
| 		LD	B,03
 | ||
| Select4		LD	A,(DE)
 | ||
| 		CP	'?'
 | ||
| 		JR	Z,Select5
 | ||
| 		CP	(HL)
 | ||
| 		JR	NZ,Select6
 | ||
| Select5		INC	HL
 | ||
| 		INC	DE
 | ||
| 		DJNZ	Select4
 | ||
| Select6		POP	HL
 | ||
| 		JR	NZ,Select8
 | ||
| 		LD	IYH,0x01
 | ||
| 		LD	A,IYL
 | ||
| 		LD	(HL),A
 | ||
| 		OR	A
 | ||
| 		CALL	Z,SUB_SIZE
 | ||
| 		CALL	NZ,ADD_SIZE
 | ||
| Select8:	LD	DE,FileHDR.SIZE
 | ||
| 		ADD	HL,DE
 | ||
| 		ADD	IX,DE
 | ||
| 		POP	DE
 | ||
| 		LD	A,(IX + FileHDR.Name)
 | ||
| 		OR	A
 | ||
| 		JR	NZ,Select1
 | ||
| 		LD	A,IYH
 | ||
| 		EX	AF,AF'
 | ||
| 		POP	IY
 | ||
| 		EXX 
 | ||
| 		LD	(IY+PANEL.BYTES_MARK),L
 | ||
| 		LD	(IY+PANEL.BYTES_MARK + 1),H
 | ||
| 		LD	(IY+PANEL.BYTES_MARK + 2),E
 | ||
| 		LD	(IY+PANEL.BYTES_MARK + 3),D
 | ||
| 		LD	(IY+PANEL.BYTES_MARK_H),A	; [ ] FAT32
 | ||
| 		LD	(IY+PANEL.FILES_MARK),C
 | ||
| 		LD	(IY+PANEL.FILES_MARK + 1),B
 | ||
| 		EXX 
 | ||
| 		POP	AF
 | ||
| 	SETPORT WINSP.CPU3,,0
 | ||
| 		EX	AF,AF'
 | ||
| 		OR	A
 | ||
| 		RET	Z
 | ||
| 		CALL	PrintDIR
 | ||
| 		JP	PrnFileInfo
 | ||
| 
 | ||
| SMaskStr:	DEFB	0x0C,0x00,0x00,0x00
 | ||
| MaskLen:	DEFB	0x03
 | ||
| 		DEFW	282,106
 | ||
| 		DEFW	104
 | ||
| 		DEFB	0xF0
 | ||
| CrSMask:	DEFB	"*.*"
 | ||
| 		DB	10 DUP 0
 | ||
| SelMask:	DEFB	"???????????"
 | ||
| 
 | ||
| MakeMask	LD	BC,0x0902
 | ||
| SMaskLp		LD	A,(HL)
 | ||
| 		CP	'!'
 | ||
| 		RET	C
 | ||
| 		CP	'\"'
 | ||
| 		RET	Z
 | ||
| 		CP	'*'
 | ||
| 		JR	Z,SMask1
 | ||
| 		CP	'+'
 | ||
| 		RET	Z
 | ||
| 		CP	','
 | ||
| 		RET	Z
 | ||
| 		CP	'.'
 | ||
| 		JR	Z,SMask2
 | ||
| 		CP	'/'
 | ||
| 		RET	Z
 | ||
| 		CP	':'
 | ||
| 		RET	Z
 | ||
| 		CP	';'
 | ||
| 		RET	Z
 | ||
| 		CP	'<'
 | ||
| 		RET	Z
 | ||
| 		CP	'='
 | ||
| 		RET	Z
 | ||
| 		CP	'>'
 | ||
| 		RET	Z
 | ||
| 		CP	'['
 | ||
| 		RET	Z
 | ||
| 		CP	'\\'
 | ||
| 		RET	Z
 | ||
| 		CP	']'
 | ||
| 		RET	Z
 | ||
| 		CP	'|'
 | ||
| 		RET	Z
 | ||
| 	IF CORR_FILENAME
 | ||
| 		CALL	CorrBigChar
 | ||
| 	ENDIF
 | ||
| 		LD	(DE),A
 | ||
| 		INC	HL
 | ||
| 		INC	DE
 | ||
| 		DJNZ	SMaskLp
 | ||
| 		AND	A
 | ||
| 		RET 
 | ||
| 
 | ||
| SMask1		LD	A,'?'
 | ||
| 		INC	HL
 | ||
| 		DJNZ	SMask11
 | ||
| 		AND	A
 | ||
| 		RET 
 | ||
| 
 | ||
| SMask11		LD	(DE),A
 | ||
| 		INC	DE
 | ||
| 		DJNZ	SMask11
 | ||
| 		INC	B
 | ||
| 		JR	SMaskLp
 | ||
| 
 | ||
| SMask2		LD	A,' '
 | ||
| 		INC	HL
 | ||
| 		DJNZ	SMask21
 | ||
| 		LD	B,0x04
 | ||
| 		DEC	C
 | ||
| 		JR	NZ,SMaskLp
 | ||
| 		AND	A
 | ||
| 		RET 
 | ||
| 
 | ||
| SMask21		LD	(DE),A
 | ||
| 		INC	DE
 | ||
| 		DJNZ	SMask21
 | ||
| 		LD	B,0x04
 | ||
| 		DEC	C
 | ||
| 		JR	NZ,SMaskLp
 | ||
| 		AND	A
 | ||
| 		RET 
 | ||
| 
 | ||
| ;[]==========================================================[]
 | ||
| SelectAllR:	CALL	ResInvert
 | ||
| SelectAllRN:	LD	HL,SetInvert
 | ||
| 		PUSH	HL
 | ||
| 		LD	A,(IY+PANEL.FILES_ALL)
 | ||
| 		OR	(IY+PANEL.FILES_ALL + 1)
 | ||
| 		RET	Z
 | ||
| 		BIT	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		RET	NZ
 | ||
| 	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
 | ||
| 	SETPORT WINSP.Y_PORT,0xC0
 | ||
| 		LD	IX,CPU3
 | ||
| 		LD	BC,FileHDR.SIZE
 | ||
| 		EX	AF,AF'				; [ ] fat32
 | ||
| 		SUB	A
 | ||
| 		LD	L,A
 | ||
| 		LD	H,L
 | ||
| 		LD	E,L
 | ||
| 		LD	D,H
 | ||
| 		EXX 
 | ||
| 		LD	L,A
 | ||
| 		LD	H,L
 | ||
| 		EXX
 | ||
| 		EX	AF,AF'				; [ ] fat32 
 | ||
| .loop:		BIT	DIR.B_Dir,(IX + FileHDR.Attr)	;!HARDCODE DIRECTORY
 | ||
| 		JR	NZ,.SelAll1
 | ||
| 		SET	FileHDR.B_MARK,(IX + FileHDR.Flag)
 | ||
| 		LD	C,(IX + FileHDR.SizeBytes)
 | ||
| 		LD	B,(IX + FileHDR.SizeBytes + 1)
 | ||
| 		EX	AF,AF'				; [ ] fat32
 | ||
| 		ADD	HL,BC
 | ||
| 		LD	C,(IX + FileHDR.SizeBytes + 2)
 | ||
| 		LD	B,(IX + FileHDR.SizeBytes + 3)
 | ||
| 		EX	DE,HL
 | ||
| 		ADC	HL,BC
 | ||
| 		EX	DE,HL
 | ||
| 		ADC	A,0
 | ||
| 		EX	AF,AF'				; [ ] fat32
 | ||
| 		EXX 
 | ||
| 		INC	HL
 | ||
| 		EXX 
 | ||
| 		LD	BC,FileHDR.SIZE
 | ||
| .SelAll1:	ADD	IX,BC
 | ||
| 		LD	A,(IX + FileHDR.Name)
 | ||
| 		OR	A
 | ||
| 		JR	NZ,.loop
 | ||
| 		POP	AF
 | ||
| 	SETPORT WINSP.CPU3,,0
 | ||
| 		EXX 
 | ||
| 		LD	E,(IY+PANEL.FILES_MARK)
 | ||
| 		LD	D,(IY+PANEL.FILES_MARK + 1)
 | ||
| 		OR	A
 | ||
| 		SBC	HL,DE
 | ||
| 		RET	Z
 | ||
| 		ADD	HL,DE
 | ||
| 		LD	(IY+PANEL.FILES_MARK),L
 | ||
| 		LD	(IY+PANEL.FILES_MARK + 1),H
 | ||
| 		EXX
 | ||
| 		LD	(IY+PANEL.BYTES_MARK),L
 | ||
| 		LD	(IY+PANEL.BYTES_MARK + 1),H
 | ||
| 		LD	(IY+PANEL.BYTES_MARK + 2),E
 | ||
| 		LD	(IY+PANEL.BYTES_MARK + 3),D
 | ||
| 		; [ ] FAT32
 | ||
| 		EX	AF,AF'
 | ||
| 		LD	(IY+PANEL.BYTES_MARK_H),A
 | ||
| 		CALL	PrintDIR
 | ||
| 		JP	PrnFileInfo
 | ||
| 
 | ||
| ;[]==========================================================[]
 | ||
| UnSelectAllR:	CALL	ResInvert
 | ||
| UnSelectAllRN:	LD	HL,SetInvert
 | ||
| 		PUSH	HL
 | ||
| 		LD	A,(IY+PANEL.FILES_ALL)
 | ||
| 		OR	(IY+PANEL.FILES_ALL + 1)
 | ||
| 		RET	Z
 | ||
| 		BIT	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		RET	NZ
 | ||
| 		LD	A,(IY+PANEL.FILES_MARK)
 | ||
| 		OR	(IY+PANEL.FILES_MARK + 1)
 | ||
| 		RET	Z
 | ||
| 		PUSH IY
 | ||
| 		POP HL
 | ||
| 		LD BC,PANEL.FILES_MARK
 | ||
| 		ADD HL,BC
 | ||
| 		LD B,PANEL.FILE_MASK - PANEL.FILES_MARK
 | ||
| .L2		LD (HL),0
 | ||
| 		INC HL
 | ||
| 		DJNZ .L2
 | ||
| 	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
 | ||
| 	SETPORT WINSP.Y_PORT,0xC0
 | ||
| 		LD	HL,CPU3
 | ||
| 		LD	BC,FileHDR.SIZE + 1
 | ||
| UnSelA1:	RES	0,(HL)
 | ||
| 		ADD	HL,BC
 | ||
| 		LD	A,(HL)
 | ||
| 		DEC	HL
 | ||
| 		OR	A
 | ||
| 		JR	NZ,UnSelA1
 | ||
| 		POP	AF
 | ||
| 	SETPORT WINSP.CPU3,,0
 | ||
| 		CALL	PrintDIR
 | ||
| 		JP	PrnFileInfo
 | ||
| 
 | ||
| ;[]==========================================================[]
 | ||
| InvertSelectR:	CALL	ResInvert
 | ||
| InvertSelectRN:	LD	HL,SetInvert
 | ||
| 		PUSH	HL
 | ||
| 		LD	A,(IY+PANEL.FILES_ALL)
 | ||
| 		OR	(IY+PANEL.FILES_ALL + 1)
 | ||
| 		RET	Z
 | ||
| 		BIT	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		RET	NZ
 | ||
| 	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
 | ||
| 	SETPORT WINSP.Y_PORT,0xC0
 | ||
| 		LD	IX,0xC000
 | ||
| 		LD	DE,FileHDR.SIZE
 | ||
| 		LD	B,0x00
 | ||
| 		EX	AF,AF'			; [ ] fat32
 | ||
| 		EXX 
 | ||
| 		LD	L,(IY + PANEL.BYTES_MARK)
 | ||
| 		LD	H,(IY + PANEL.BYTES_MARK + 1)
 | ||
| 		LD	E,(IY + PANEL.BYTES_MARK + 2)
 | ||
| 		LD	D,(IY + PANEL.BYTES_MARK + 3)
 | ||
| 		LD	A,(IY + PANEL.BYTES_MARK_H)	; [ ] FAT32
 | ||
| 		LD	C,(IY + PANEL.FILES_MARK)
 | ||
| 		LD	B,(IY + PANEL.FILES_MARK + 1)
 | ||
| 		EXX 
 | ||
| 		EX	AF,AF'			; [ ] fat32
 | ||
| .loop:		BIT	DIR.B_Dir,(IX + FileHDR.Attr)	;!HARDCODE Dir
 | ||
| 		JR	NZ,.InvSel3
 | ||
| 		LD	B,FileHDR.M_MARK
 | ||
| 		LD	A,(IX + FileHDR.Flag)
 | ||
| 		XOR	B
 | ||
| 		LD	(IX + FileHDR.Flag),A
 | ||
| 		CALL	Z,SUB_SIZE
 | ||
| 		CALL	NZ,ADD_SIZE
 | ||
| .InvSel3:	ADD	IX,DE
 | ||
| 		LD	A,(IX + FileHDR.Name)
 | ||
| 		OR	A
 | ||
| 		JR	NZ,.loop
 | ||
| 		POP	AF
 | ||
| 	SETPORT WINSP.CPU3,,0
 | ||
| 		EX	AF,AF'			; [ ] fat32
 | ||
| 		EXX 
 | ||
| 		LD	(IY + PANEL.BYTES_MARK),L
 | ||
| 		LD	(IY + PANEL.BYTES_MARK + 1),H
 | ||
| 		LD	(IY + PANEL.BYTES_MARK + 2),E
 | ||
| 		LD	(IY + PANEL.BYTES_MARK + 3),D
 | ||
| 		LD	(IY + PANEL.BYTES_MARK_H),A	; [ ] FAT32
 | ||
| 		LD	(IY + PANEL.FILES_MARK),C
 | ||
| 		LD	(IY + PANEL.FILES_MARK + 1),B
 | ||
| 		EXX 
 | ||
| 		LD	A,B
 | ||
| 		OR	A
 | ||
| 		RET	Z
 | ||
| 		CALL	PrintDIR
 | ||
| 		JP	PrnFileInfo
 | ||
| 
 | ||
| ADD_SIZE:	EX	AF,AF'			; [ ] fat32
 | ||
| 		EXX 
 | ||
| 		PUSH	BC
 | ||
| 		LD	C,(IX + FileHDR.SizeBytes)
 | ||
| 		LD	B,(IX + FileHDR.SizeBytes + 1)
 | ||
| 		ADD	HL,BC
 | ||
| 		LD	C,(IX + FileHDR.SizeBytes + 2)
 | ||
| 		LD	B,(IX + FileHDR.SizeBytes + 3)
 | ||
| 		EX	DE,HL
 | ||
| 		ADC	HL,BC
 | ||
| 		EX	DE,HL
 | ||
| 		ADC	A,0			; [ ] fat32
 | ||
| 		POP	BC
 | ||
| 		INC	BC
 | ||
| 		EXX
 | ||
| 		EX	AF,AF'			; [ ] fat32
 | ||
| 		RET
 | ||
| 
 | ||
| SUB_SIZE:	EX	AF,AF'			; [ ] fat32
 | ||
| 		EXX 
 | ||
| 		PUSH	BC
 | ||
| 		LD	C,(IX + FileHDR.SizeBytes)
 | ||
| 		LD	B,(IX + FileHDR.SizeBytes + 1)
 | ||
| 		OR	A
 | ||
| 		SBC	HL,BC
 | ||
| 		LD	C,(IX + FileHDR.SizeBytes + 2)
 | ||
| 		LD	B,(IX + FileHDR.SizeBytes + 3)
 | ||
| 		EX	DE,HL
 | ||
| 		SBC	HL,BC
 | ||
| 		EX	DE,HL
 | ||
| 		SBC	A,0			; [ ] fat32
 | ||
| 		POP	BC
 | ||
| 		DEC	BC
 | ||
| 		EXX
 | ||
| 		EX	AF,AF'
 | ||
| 		RET
 | ||
| 
 | ||
| 	IF MARK_DIR
 | ||
| ; ¯®¤áç¥â ¢ ¡ ©â å à §¬¥à  ®â¬¥ç¥®© ¤¨à¥ªâ®à¨¨
 | ||
| ; HL -  ¤à¥á ®¯¨á â¥«ï ¤¨àë ¢ áâà ¨æ¥ ¯ ¥«¨ ª®â®àãî ¬¥àïâì
 | ||
| COUNTING_DIR
 | ||
| 
 | ||
| .OLDPATH	EQU WorkBuffer + 0x300		; á®åà ¥ë© â¥ªã騩 ¯ãâì
 | ||
| .CURRPATH	EQU WorkBuffer + 0x200		; ¢à¥¬¥®© ⥪ã騩 ¯ãâì
 | ||
| 
 | ||
| 		PUSH IX
 | ||
| 		PUSH IY
 | ||
| 		PUSH HL
 | ||
| 		PUSH BC
 | ||
| 	GETPORT WINSP.CPU3
 | ||
| 		PUSH AF
 | ||
| 		PUSH HL
 | ||
| 		BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
 | ||
| 		LD A,(RAMPAGES.LEFTPANEL)
 | ||
| 		JR Z,.L1
 | ||
| 		LD A,(RAMPAGES.RIGHTPANEL)
 | ||
| .L1		; ¢ª«îç ¥¬ ¯ £ã á ¤¨à¥ªâ®à¨¥© ⥪ã饩 ¯ ¥«¨
 | ||
| 	SETPORT WINSP.CPU3,,0
 | ||
| 		XOR A
 | ||
| 		LD H,A
 | ||
| 		LD L,A
 | ||
| 		LD IXH,A			; ®¡ã«¥¨¥ ãà®¢ï ¢å®¦¤¥¨ï ¢ ¤¨àë
 | ||
| 		LD (.FILES_SIZE),HL
 | ||
| 		LD (.FILES_SIZE + 2),HL		; ®¡ã«¥¨¥ à §¬¥à  ¤¨àë
 | ||
| 		LD HL,CPU3
 | ||
| 		LD (.CURR_DIRNAME),HL
 | ||
| ; á®åà ¥¨¥ ⥪ã饣® ¯ã⨠¤«ï ¢®§¢à â 
 | ||
| 	SPDSS DSSF.CURDISK
 | ||
| 		LD HL,.OLDPATH			; á®åà ¥ë© ¯ãâì ¤«ï ¢®§¢à â 
 | ||
| 		ADD A,'A'
 | ||
| 		LD (HL),A
 | ||
| 		INC HL
 | ||
| 		LD (HL),':'
 | ||
| 		INC HL
 | ||
| 	SPDSS DSSF.CURDIR
 | ||
| 		POP DE
 | ||
| 		JP C,.END_COUNT
 | ||
| ; ¢å®¤ ¢ ¤¨à¥ªâ®à¨î
 | ||
| 		LD HL,FileHDR.Name
 | ||
| 		ADD HL,DE
 | ||
| 		LD DE,.DIR_NAME
 | ||
| 		PUSH DE
 | ||
| 		LD BC,FileHDR.Name_Size
 | ||
| 		LDIR				; § ¡à «¨ ¨¬ï ¤¨àë ¤«ï ¨§¬¥à¥¨ï
 | ||
| 		LD A,(RAMPAGES.FLX)
 | ||
| 	SETPORT WINSP.CPU3,,0
 | ||
| 		CALL .ADD_2DOT			; ¢®§¢à â ¢ ¯à¥¤ë¤ãéãî ¤¨àã
 | ||
| 		POP HL
 | ||
| 		LD DE,(.CURR_DIRNAME)
 | ||
| 		LD BC,FileHDR.Name_Size
 | ||
| 		LDIR				; ¨¬ï ¤¨àë ¤«ï ¢å®¤ 
 | ||
| 		LD (.CURR_DIRNAME),DE
 | ||
| 		XOR A
 | ||
| 		LD (DE),A
 | ||
| 		CALL .SET_PATH			; ãáâ ®¢ª  ⥪ã饣® ¯ãâ¨
 | ||
| 		INC IXH				; á«¥¤ãî騩 ã஢¥ì ¤¨àë
 | ||
| .CONTINUE	CALL .ADD_2DOT
 | ||
| 		CALL .COUNT_FILES
 | ||
| 		LD A,IXL
 | ||
| 		AND A				; §¤¥áì ¤¨àë ¥áâì?
 | ||
| 		JR Z,.PREV_DIR			; ¤¨àë ¥  ©¤¥ë
 | ||
| 		CALL .SET_PATH			; ¢å®¤ ¢ ¤¨àã ¨§ ᯨ᪠
 | ||
| 		INC IXH				; á«¥¤ãî騩 ã஢¥ì ¤¨àë
 | ||
| 		JR .CONTINUE
 | ||
| 
 | ||
| ; ¢ë室 ¢ ¯à¥¤ë¤ãéãî ¤¨àã
 | ||
| .PREV_DIR	CALL .OUT_DIR
 | ||
| 		LD A,IXH			; ã஢¥ì ¤¨àë?
 | ||
| 		AND A
 | ||
| 		JR Z,.END_COUNT
 | ||
| 		CALL .GET_NAME
 | ||
| 		CALL .GET_NAME
 | ||
| 		LD HL,(.CURR_DIRNAME)
 | ||
| 		LD DE,-FileHDR.Name_Size
 | ||
| 		ADD HL,DE
 | ||
| 		LD A,(HL)
 | ||
| 		CP '.'
 | ||
| 		JR Z,.PREV_DIR
 | ||
| 		CALL .SET_PATH
 | ||
| 		INC IXH				; á«¥¤ãî騩 ã஢¥ì ¤¨àë
 | ||
| 		JR .CONTINUE
 | ||
| 
 | ||
| ; ¢®§¢à â ⥪ã饣® ¯ãâ¨
 | ||
| .END_COUNT	POP AF
 | ||
| 	SETPORT WINSP.CPU3,,0
 | ||
| 		LD HL,.OLDPATH			; á®åà ¥ë© ¯ãâì ¤«ï ¢®§¢à â 
 | ||
| 	SPDSS DSSF.CHDIR
 | ||
| 		POP BC
 | ||
| 		POP HL
 | ||
| 		POP IY
 | ||
| 		POP IX
 | ||
| 		RET
 | ||
| 
 | ||
| .GET_NAME	LD HL,(.CURR_DIRNAME)
 | ||
| 		LD (HL),0
 | ||
| 		LD DE,-FileHDR.Name_Size
 | ||
| 		ADD HL,DE
 | ||
| 		LD (.CURR_DIRNAME),HL
 | ||
| 		RET
 | ||
| 
 | ||
| .OUT_DIR	DEC IXH				; ¯à¥¤ë¤ã騩 ã஢¥ì ¤¨àë
 | ||
| 		LD HL,.RET_DIR
 | ||
| 		JR .SP1
 | ||
| 
 | ||
| ; ¯¥à¥å®¤ ¢ ¤¨àã ¨§ ᯨ᪠
 | ||
| .SET_PATH	LD HL,(.CURR_DIRNAME)
 | ||
| 		LD DE,-FileHDR.Name_Size
 | ||
| 		ADD HL,DE
 | ||
| 		LD DE,.DIR_NAME
 | ||
| 		PUSH DE
 | ||
| 		LD BC,FFIRST.Name_Size
 | ||
| 		LDIR
 | ||
| 		POP HL
 | ||
| .SP1		PUSH IX
 | ||
| 	SPDSS DSSF.CHDIR
 | ||
| 	SPDSS DSSF.CURDISK
 | ||
| 		LD HL,.CURRPATH
 | ||
| 		ADD A,'A'
 | ||
| 		LD (HL),A
 | ||
| 		INC HL
 | ||
| 		LD (HL),':'
 | ||
| 		INC HL
 | ||
| 	SPDSS DSSF.CURDIR
 | ||
| 		POP IX
 | ||
| 		RET
 | ||
| 
 | ||
| ; ¤®¡ ¢«¥¨¥ ¨¬¥¨ ¤¨àë ¤«ï ¢ë室  ¢ ¯à¥¤ë¤ãéãî ¤¨àã
 | ||
| .ADD_2DOT	PUSH HL
 | ||
| 		LD HL,.RET_DIR
 | ||
| 		LD DE,(.CURR_DIRNAME)
 | ||
| 		LD BC,FFIRST.Name_Size
 | ||
| 		LDIR
 | ||
| 		LD (.CURR_DIRNAME),DE
 | ||
| 		POP HL
 | ||
| 		RET
 | ||
| 
 | ||
| ; ¯¥à¥áç¨â뢠¥¬ à §¬¥àë ä ©«®¢ ¢ ⥪ã饩 ¤¨à¥ªâ®à¨¨
 | ||
| ; ¨ ¢ë£à¥¡ ¥¬ ¨¬¥  ¤¨à ¢ â ¡«¨çªã
 | ||
| .COUNT_FILES	LD IXL,0			; ª®«¨ç¥á⢮ ¤¨à ¢ ⥪ã饩 ¤¨à¥
 | ||
| 		CALL .F_FIRST			; ¨é¥¬ ¯¥à¢ë© ®¯¨á â¥«ì
 | ||
| 		RET C
 | ||
| .L2		LD DE,FFIRST.Attr
 | ||
| 		ADD HL,DE
 | ||
| 		LD A,(HL)
 | ||
| 		SBC HL,DE
 | ||
| 		BIT DIR.B_Dir,A
 | ||
| 		JR Z,.L4
 | ||
| ; ¤«ï ¤¨àë ª®¯¨à㥬 ¨¬ï ¢ â ¡«¨çªã
 | ||
| 		LD DE,FFIRST.Name
 | ||
| 		ADD HL,DE
 | ||
| 		LD A,(HL)
 | ||
| 		CP '.'				; . ¨ .. ¯à®¯ã᪠¥¬
 | ||
| 		JR Z,.L5
 | ||
| 		LD DE,(.CURR_DIRNAME)
 | ||
| 		LD BC,FFIRST.Name_Size
 | ||
| 		LDIR
 | ||
| 		LD (.CURR_DIRNAME),DE
 | ||
| 		INC IXL
 | ||
| 		JR .L5
 | ||
| 
 | ||
| ; ¤«ï ä ©«  ¤®¡ ¢«ï¥¬ ¤«¨ã
 | ||
| .L4		LD DE,FFIRST.FileSize
 | ||
| 		ADD HL,DE
 | ||
| 		CALL GET_DWORD			; ¢§ïâì à §¬¥à ¨§ ®¯¨á â¥«ï
 | ||
| 		LD HL,.FILES_SIZE
 | ||
| 		PUSH HL
 | ||
| 		CALL BCDEHLP			; ¤®¡ ¢¨«¨ ª ⥪ã饬ã à §¬¥àã
 | ||
| 		POP HL
 | ||
| 		CALL SET_DWORD			; ¯®«®¦¨«¨ ®¡à â®
 | ||
| .L5		CALL .F_NEXT
 | ||
| 		JR NC,.L2
 | ||
| 		RET
 | ||
| 
 | ||
| ; ¯®¨áª ¯¥à¢®£® ®¯¨á â¥«ï
 | ||
| .F_FIRST	LD A,	DIR.M_Archive + \
 | ||
| 			DIR.M_System + \
 | ||
| 			DIR.M_Hidden + \
 | ||
| 			DIR.M_ReadOnly + \
 | ||
| 			DIR.M_Dir
 | ||
| .FFF1		LD HL,.FILES_MASK
 | ||
| 		LD DE,.OLDPATH
 | ||
| 		PUSH DE
 | ||
| 		PUSH IX
 | ||
| 	SPDSS DSSF.F_FIRST,0
 | ||
| 		POP IX
 | ||
| 		POP HL
 | ||
| 		RET
 | ||
| 
 | ||
| ; ¯®¨áª á«¥¤ãî饣® ®¯¨á â¥«ï
 | ||
| .F_NEXT		LD DE,.OLDPATH
 | ||
| 		PUSH DE
 | ||
| 		PUSH IX
 | ||
| 	SPDSS DSSF.F_NEXT
 | ||
| 		POP IX
 | ||
| 		POP HL
 | ||
| 		RET
 | ||
| 
 | ||
| .FILES_SIZE	DD 0
 | ||
| .FILES_MASK	DZ "*.*"
 | ||
| .RET_DIR	DZ "..      "
 | ||
| .DIR_NAME	DZ "        "
 | ||
| .CURR_DIRNAME	DW 0
 | ||
| 
 | ||
| ; ¯®¤áç¥â à §¬¥à  ¤¨à¥ªâ®à¨¨
 | ||
| ; <20>  ¢å®¤¥:
 | ||
| ; HL -  ¤à¥á ®¯¨á â¥«ï ¤¨àë ¢ áâà ¨æ¥ ¯ ¥«¨ ª®â®àãî ¬¥àïâì
 | ||
| ; <20>  ¢ë室¥:
 | ||
| ; BCDE' - à §¬¥à ¢ ¡ ©â å
 | ||
| GetDirSizeR	CALL COUNTING_DIR
 | ||
| 		LD HL,COUNTING_DIR.FILES_SIZE
 | ||
| 		CALL GET_DWORD
 | ||
| 		EXX
 | ||
| 		RET
 | ||
| 
 | ||
| ; á®§¤ ¨¥ ¯ ¯®ª   ¯à¨¥¬¨ª¥
 | ||
| ; HL -  ¤à¥á ®¯¨á â¥«ï ¤¨àë ¢ áâà ¨æ¥ ¯ ¥«¨ ª®â®àãî ª®¯¨à®¢ âì
 | ||
| MkdirsDstR
 | ||
| 
 | ||
| .OLDPATH	EQU WorkBuffer + 0x300		; á®åà ¥ë© â¥ªã騩 ¯ãâì
 | ||
| .CURRPATHSRC	EQU WorkBuffer + 0x200		; ¢à¥¬¥®© ⥪ã騩 ¯ãâì ¨áâ®ç¨ª 
 | ||
| .CURRPATHDST	EQU WorkBuffer + 0x100		; ¢à¥¬¥®© ⥪ã騩 ¯ãâì ¯à¨¥¬¨ª 
 | ||
| .FINDBUF	EQU WorkBuffer
 | ||
| 
 | ||
| 		PUSH IX
 | ||
| 		PUSH IY
 | ||
| 	GETPORT WINSP.CPU3
 | ||
| 		PUSH AF
 | ||
| 		LD (.OLDSP),SP
 | ||
| 		PUSH HL
 | ||
| 		BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
 | ||
| 		LD DE,RightPanel		; ¤«ï ¯ã⨠ªã¤  ª®¯¨à®¢ âì
 | ||
| 		LD A,(RAMPAGES.LEFTPANEL)	; ¨§ ª ª®© áâà ¨æë ¯ ¥«¨ ¡à âì ¯ãâì
 | ||
| 		JR Z,.L1
 | ||
| 		LD DE,LeftPanel			; ¤«ï ¯ã⨠ªã¤  ª®¯¨à®¢ âì
 | ||
| 		LD A,(RAMPAGES.RIGHTPANEL)	; ¨§ ª ª®© áâà ¨æë ¯ ¥«¨ ¡à âì ¯ãâì
 | ||
| .L1		; ¢ª«îç ¥¬ ¯ £ã á ¤¨à¥ªâ®à¨¥© ⥪ã饩 ¯ ¥«¨
 | ||
| 	SETPORT WINSP.CPU3,,0
 | ||
| 		LD HL,PANEL.CURR_PATH
 | ||
| 		ADD HL,DE			; ®âªã¤  ¯ãâì ¯à¨¥¬¨ª  ¢§ïâì
 | ||
| 		LD DE,.CURRPATHDST		; ¡ãä¥à ¯ã⨠¯à¨¥¬¨ª 
 | ||
| 		CALL .COPYNAME2PATH
 | ||
| 		LD (.ENDPATHDST),DE		;  ¤à¥á 墮áâ  ¯ã⨠¯à¨¥¬¨ª 
 | ||
| ; á®åà ¥¨¥ ⥪ã饣® ¯ã⨠¤«ï ¢®§¢à â 
 | ||
| 	SPDSS DSSF.CURDISK
 | ||
| 		LD HL,.OLDPATH			; á®åà ¥ë© ¯ãâì ¤«ï ¢®§¢à â 
 | ||
| 		ADD A,'A'
 | ||
| 		LD (HL),A
 | ||
| 		INC HL
 | ||
| 		LD (HL),':'
 | ||
| 		INC HL
 | ||
| 	SPDSS DSSF.CURDIR
 | ||
| 		POP DE				;  ¤à¥á ®¯¨á â¥«ï ¤¨àë ¢ áâà ¨æ¥ ¯ ¥«¨ ª®â®àãî ª®¯¨à®¢ âì
 | ||
| ;		JP C,ERROR	;COUNTING_DIR.END_COUNT
 | ||
| ; ª®¯¨à®¢ ¨¥ ¨¬¥¨ ¤¨à¥ªâ®à¨¨ ¤«ï ª®¯¨à®¢ ¨ï
 | ||
| 		LD HL,FileHDR.Name
 | ||
| 		ADD HL,DE
 | ||
| 		LD DE,COUNTING_DIR.DIR_NAME
 | ||
| 		LD BC,FileHDR.Name_Size
 | ||
| 		LDIR				; § ¡à «¨ ¨¬ï ¤¨àë ¤«ï ª®¯¨à®¢ ¨ï
 | ||
| 		EX DE,HL
 | ||
| 		CALL .CUTOFFSPACES		; ®âá¥ç¥¨¥ ¯à®¡¥«®¢
 | ||
| ; ¯¥à¥®á ⥪ã饣® ¯ã⨠¨áâ®ç¨ª 
 | ||
| 		LD HL,.OLDPATH
 | ||
| 		LD DE,.CURRPATHSRC
 | ||
| 		CALL .COPYNAME2PATH		; ᪮¯¨à®¢ «¨ ¯ãâì ¨áâ®ç¨ª 
 | ||
| 		LD (.ENDPATHSRC),DE		;  ¤à¥á 墮áâ  ¯ã⨠¨áâ®ç¨ª 
 | ||
| ; ¤®¡ ¢«¥¨¥ ¨¬¥¨ ¤¨àë ¤«ï ª®¯¨à®¢ ¨ï ¢ ¯ãâì ¨áâ®ç¨ª 
 | ||
| 		LD HL,(.ENDPATHSRC)
 | ||
| 		LD DE,COUNTING_DIR.DIR_NAME
 | ||
| 		CALL .ADDNAME2PATH
 | ||
| 		LD (.ENDPATHSRC),DE		;  ¤à¥á 墮áâ  ¯ã⨠¨áâ®ç¨ª 
 | ||
| ; ¤®¡ ¢«¥¨¥ ¨¬¥¨ ¤¨àë ¤«ï ª®¯¨à®¢ ¨ï ¢ ¯ãâì ¯à¨¥¬¨ª 
 | ||
| 		LD HL,(.ENDPATHDST)
 | ||
| 		LD DE,COUNTING_DIR.DIR_NAME
 | ||
| 		CALL .ADDNAME2PATH
 | ||
| 		LD (.ENDPATHDST),DE
 | ||
| 
 | ||
| ; á®§¤ ¨¥ ¤¨àë ¢ ¯à¨¥¬¨ª¥
 | ||
| 		LD HL,.CURRPATHDST
 | ||
| 	SPDSS DSSF.MKDIR			; á®§¤ «¨ ¤¨à㠯ਥ¬¨ª 
 | ||
| 		JR NC,.L3
 | ||
| 		CP ERR_DSS.DIR_EXISTS		; ¥á«¨ ¤¨à  㦥 ¥áâì ¨£®à¨¬ ®è¨¡ªã
 | ||
| ;		JP C,ERROR
 | ||
| .L3		
 | ||
| 
 | ||
| ; TODO 横«¨ç¥áª¨© ¯®¨áª ¤¨à¥ªâ®à¨© á á®§¤ ¨¥¬   ¯à¨¥¬¨ª¥
 | ||
| 		LD HL,.CURRPATHSRC
 | ||
| 	SPDSS DSSF.CHDIR			; ¢å®¤ ¢ ¤¨àã ¨áâ®ç¨ª 
 | ||
| 		CALL .FINDFIRSTSRCDIR		; ¯®¨áª ¯¥à¢®£® ®¯¨á â¥«ï
 | ||
| 		JP C,.ENDCOPY			; ¡®«ìè¥ ¤¨à¥ªâ®à¨© ¥â, ¢ë室¨¬
 | ||
| ; ¯®¨áª ¤¨à¥ªâ®à¨©
 | ||
| .L2		CALL .FINDNEXTSRCDIR		; ¯®¨áª á«¥¤ãî饣® ®¯¨á â¥«ï
 | ||
| 		JP C,.ENDFINDNEXT		; ¯®¨áª ®ª®ç¥?
 | ||
| 		LD HL,.FINDBUF + FFIRST.Name
 | ||
| 		LD A,(HL)
 | ||
| 		CP '.'				; ®¯¨á â¥«¨ "." ¨ ".." ¨£®à¨¬
 | ||
| 		JR Z,.L2
 | ||
| 		LD DE,.TMPNAMEDIR
 | ||
| 		PUSH DE
 | ||
| 		CALL .COPYNAME2PATH
 | ||
| 		LD HL,(.ENDPATHDST)
 | ||
| 		POP DE
 | ||
| 		CALL .ADDNAME2PATH
 | ||
| 		LD HL,.CURRPATHDST
 | ||
| 	SPDSS DSSF.MKDIR			; á®§¤ ¥¬ ¤¨àã   ¯à¨¥¬¨ª¥
 | ||
| ;		JP C,ERROR
 | ||
| 		LD HL,.CURRPATHSRC
 | ||
| 	SPDSS DSSF.CHDIR			; ¢®§¢à é ¥¬ ¯ãâì   ¨áâ®ç¨ª
 | ||
| ;		JP C,ERROR
 | ||
| 		JR .L2				; ¨é¥¬ á«¥¤ãî騩
 | ||
| 
 | ||
| ; § ¢¥à襨¥ ¨ ¢ë室
 | ||
| 		JP COUNTING_DIR.END_COUNT;RestoreDIR
 | ||
| 
 | ||
| ;		LD A,(RAMPAGES.FLX)
 | ||
| ;	SETPORT WINSP.CPU3,,0
 | ||
| 
 | ||
| .ENDFINDNEXT
 | ||
| 		JR $
 | ||
| 
 | ||
| ; ¯®¨áª ¯¥à¢®© ¤¨àë ¢ ⥪ã饩 ¯®¤¤¨à¥ªâ®à¨¨
 | ||
| .FINDFIRSTSRCDIR
 | ||
| 		LD HL,COUNTING_DIR.FILES_MASK
 | ||
| 		LD DE,.FINDBUF
 | ||
| 	SPDSS DSSF.F_FIRST,1,DIR.M_Dir
 | ||
| 		RET
 | ||
| 
 | ||
| .FINDNEXTSRCDIR
 | ||
| 		LD DE,.FINDBUF
 | ||
| 	SPDSS DSSF.F_NEXT
 | ||
| 		RET
 | ||
| 
 | ||
| ; ¤®¡ ¢«¥¨¥ ¨¬¥¨ ¢ áâப㠯ãâ¨
 | ||
| ; HL - ªã¤  ¤®¡ ¢«ïâì (墮áâ ⥪ã饣® ¯ãâ¨)
 | ||
| ; DE - ®âªã¤  ¨¬ï ¡à âì
 | ||
| .ADDNAME2PATH	CALL .CHECK_BSLASH
 | ||
| 		LD (HL),'\\'
 | ||
| 		INC HL
 | ||
| 		EX DE,HL
 | ||
| ; ª®¯¨à®¢ ¨¥ ¨¬¥¨ ¨§ ¡ãä¥à 
 | ||
| .COPYNAME2PATH	XOR A
 | ||
| .CNP2		CP (HL)
 | ||
| 		JR Z,.CNP1
 | ||
| 		LDI
 | ||
| 		JR .CNP2
 | ||
| 
 | ||
| .CNP1		LD (DE),A
 | ||
| 		RET
 | ||
| 
 | ||
| .NAME2DIRNAME	
 | ||
| 
 | ||
| ; ¯à®¢¥àª    BACKSLASH
 | ||
| .CHECK_BSLASH	DEC HL
 | ||
| 		LD A,(HL)
 | ||
| 		CP '\\'
 | ||
| 		RET Z
 | ||
| 		INC HL
 | ||
| 		RET
 | ||
| 
 | ||
| ; ®âá¥ç¥¨¥ ¯à®¡¥«®¢ ¢ ¨¬¥¨
 | ||
| .CUTOFFSPACES	LD A,' '
 | ||
| .COS2		DEC HL
 | ||
| 		CP (HL)
 | ||
| 		JR Z,.COS2
 | ||
| 		INC HL
 | ||
| 		LD (HL),0
 | ||
| 		RET
 | ||
| 
 | ||
| ; ®âá¥ç¥¨¥ ¨¬¥¨ ¤¨àë ¢ áâப¥ ¯ãâ¨
 | ||
| .DELNAME2PATH	LD A,'\\'
 | ||
| .COB1		DEC HL
 | ||
| 		CP (HL)
 | ||
| 		JR NZ,.COB1
 | ||
| 		LD (HL),0
 | ||
| 		RET
 | ||
| 
 | ||
| ; ¢ë室 ¨§ ª®¯¨à®¢ ¨ï ¤¨à¥ªâ®à¨©
 | ||
| .ENDCOPY	LD SP,0
 | ||
| .OLDSP		EQU $-2
 | ||
| 		LD HL,.OLDPATH
 | ||
| 	SPDSS DSSF.CHDIR
 | ||
| 		POP AF
 | ||
| 	SETPORT WINSP.CPU3,,0
 | ||
| 		POP IY
 | ||
| 		POP IX
 | ||
| 		RET
 | ||
| 
 | ||
| .ENDPATHSRC	DW 0				;  ¤à¥á 墮áâ  ¯ã⨠¨áâ®ç¨ª 
 | ||
| .ENDPATHDST	DW 0				;  ¤à¥á 墮áâ  ¯ã⨠¯à¨¥¬¨ª 
 | ||
| .TMPNAMEDIR	DB 8 DUP 0
 | ||
| 	ENDIF
 | ||
| 
 | ||
| ; C:/DEV/
 | ||
| ;	/CAMEL401
 | ||
| ;	/DEMON
 | ||
| ;	/MASM80
 | ||
| ;	/OASM028
 | ||
| ;	/SOLID
 | ||
| ;		/DOC
 | ||
| ;		/EXAMPLES
 | ||
| ;		/INCLUDE
 | ||
| ;		/SRC
 | ||
| ;			/CLIB
 | ||
| ;				/BUILD
 | ||
| ;	/SPFORTH
 | ||
| ;		/F83
 | ||
| ;		/F99
 | ||
| ;	/TASM
 |