876 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			876 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
 | |
| ; LAST UPDATE: 02.06.2025 savelij
 | |
| 
 | |
| ;[]==========================================================[]
 | |
| MarkFileR	LD	A,(IY+PANEL.EFL)
 | |
| 		OR	(IY+PANEL.EFH)
 | |
| 		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.FFL)
 | |
| 		LD	H,(IY+PANEL.FFH)
 | |
| 		LD	E,(IY+PANEL.CFL)
 | |
| 		LD	D,(IY+PANEL.CFH)
 | |
| 		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.FFL)
 | |
| 		LD	H,(IY+PANEL.FFH)
 | |
| 		LD	E,(IY+PANEL.CFL)
 | |
| 		LD	D,(IY+PANEL.CFH)
 | |
| 		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	DE,WorkBuffer
 | |
| 		PUSH	BC
 | |
| 		LD	BC,FileHDR.SIZE
 | |
| 		LDIR
 | |
| 	IF MARK_DIR
 | |
| 		LD HL,COUNTING_DIR.FILES_SIZE
 | |
| 		LD DE,WorkBuffer + FileHDR.SizeBytes
 | |
| 		LD BC,DWORD
 | |
| 		LDIR
 | |
| 	ENDIF
 | |
| 		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.CFL)
 | |
| 		LD	H,(IY+PANEL.CFH)
 | |
| 		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.CFL)
 | |
| 		LD	H,(IY+PANEL.CFH)
 | |
| 		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.MFL)
 | |
| 		LD	H,(IY + PANEL.MFH)
 | |
| 		INC	HL
 | |
| 		LD	(IY + PANEL.MFL),L
 | |
| 		LD	(IY + PANEL.MFH),H		; ®¡®¢«¥¨¥ ª®«¨ç¥á⢠ ¯®¬¥ç¥ëå ä ©«®¢
 | |
| 		LD	L,(IX + FileHDR.SizeBytes)
 | |
| 		LD	H,(IX + FileHDR.SizeBytes + 1)
 | |
| 		LD	E,(IY + PANEL.MBL1)
 | |
| 		LD	D,(IY + PANEL.MBH1)
 | |
| 		XOR	A				; [ ] fat32
 | |
| 		ADD	HL,DE
 | |
| 		LD	(IY + PANEL.MBL1),L
 | |
| 		LD	(IY + PANEL.MBH1),H		; ®¡®¢«¥¨¥ à §¬¥à  ¯®¬¥ç¥ëå ä ©«®¢ ¡¨âë 15-0
 | |
| 		LD	L,(IX + FileHDR.SizeBytes + 2)
 | |
| 		LD	H,(IX + FileHDR.SizeBytes + 3)
 | |
| 		; [ ] fat32
 | |
| 		LD	E,(IY + PANEL.MBL2)
 | |
| 		LD	D,(IY + PANEL.MBH2)
 | |
| 		ADC	HL,DE
 | |
| 		; [ ] fat32
 | |
| 		ADC	A,(IY + PANEL.MBL3)
 | |
| 		LD	(IY + PANEL.MBL3),A		; ®¡®¢«¥¨¥ à §¬¥à  ¯®¬¥ç¥ëå ä ©«®¢ ¡¨âë 32-39
 | |
| 		LD	(IY + PANEL.MBL2),L
 | |
| 		LD	(IY + PANEL.MBH2),H		; ®¡®¢«¥¨¥ à §¬¥à  ¯®¬¥ç¥ëå ä ©«®¢ ¡¨âë 31-15
 | |
| 		RET
 | |
| 
 | |
| ; áï⨥ ¢ë¡®à  ä ©« 
 | |
| .MarkExit2	LD	IX,WorkBuffer
 | |
| 		LD	L,(IY + PANEL.MFL)
 | |
| 		LD	H,(IY + PANEL.MFH)
 | |
| 		DEC	HL
 | |
| 		LD	(IY + PANEL.MFL),L
 | |
| 		LD	(IY + PANEL.MFH),H
 | |
| 		LD	L,(IY + PANEL.MBL1)
 | |
| 		LD	H,(IY + PANEL.MBH1)
 | |
| 		LD	E,(IX + FileHDR.SizeBytes)
 | |
| 		LD	D,(IX + FileHDR.SizeBytes + 1)
 | |
| 		XOR	A
 | |
| 		SBC	HL,DE
 | |
| 		LD	(IY + PANEL.MBL1),L
 | |
| 		LD	(IY + PANEL.MBH1),H
 | |
| 		LD	L,(IY + PANEL.MBL2)
 | |
| 		LD	H,(IY + PANEL.MBH2)
 | |
| 		LD	E,(IX + FileHDR.SizeBytes + 2)
 | |
| 		LD	D,(IX + FileHDR.SizeBytes + 3)
 | |
| 		SBC	HL,DE
 | |
| 		; [ ] fat32
 | |
| 		ADC	A,(IY + PANEL.MBL3)
 | |
| 		LD	(IY + PANEL.MBL3),A
 | |
| 		LD	(IY + PANEL.MBL2),L
 | |
| 		LD	(IY + PANEL.MBH2),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.EFL)
 | |
| 		OR	(IY+PANEL.EFH)
 | |
| 		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.MBL1)
 | |
| 		LD	H,(IY+PANEL.MBH1)
 | |
| 		LD	E,(IY+PANEL.MBL2)
 | |
| 		LD	D,(IY+PANEL.MBH2)
 | |
| 		LD	A,(IY+PANEL.MBL3)	; [ ] FAT32
 | |
| 		LD	C,(IY+PANEL.MFL)
 | |
| 		LD	B,(IY+PANEL.MFH)
 | |
| 		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.MBL1),L
 | |
| 		LD	(IY+PANEL.MBH1),H
 | |
| 		LD	(IY+PANEL.MBL2),E
 | |
| 		LD	(IY+PANEL.MBH2),D
 | |
| 		LD	(IY+PANEL.MBL3),A	; [ ] FAT32
 | |
| 		LD	(IY+PANEL.MFL),C
 | |
| 		LD	(IY+PANEL.MFH),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.EFL)
 | |
| 		OR	(IY+PANEL.EFH)
 | |
| 		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.MFL)
 | |
| 		LD	D,(IY+PANEL.MFH)
 | |
| 		OR	A
 | |
| 		SBC	HL,DE
 | |
| 		RET	Z
 | |
| 		ADD	HL,DE
 | |
| 		LD	(IY+PANEL.MFL),L
 | |
| 		LD	(IY+PANEL.MFH),H
 | |
| 		EXX
 | |
| 		LD	(IY+PANEL.MBL1),L
 | |
| 		LD	(IY+PANEL.MBH1),H
 | |
| 		LD	(IY+PANEL.MBL2),E
 | |
| 		LD	(IY+PANEL.MBH2),D
 | |
| 		; [ ] FAT32
 | |
| 		EX	AF,AF'
 | |
| 		LD	(IY+PANEL.MBL3),A
 | |
| 		CALL	PrintDIR
 | |
| 		JP	PrnFileInfo
 | |
| 
 | |
| ;[]==========================================================[]
 | |
| UnSelectAllR:	CALL	ResInvert
 | |
| UnSelectAllRN:	LD	HL,SetInvert
 | |
| 		PUSH	HL
 | |
| 		LD	A,(IY+PANEL.EFL)
 | |
| 		OR	(IY+PANEL.EFH)
 | |
| 		RET	Z
 | |
| 		BIT	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
 | |
| 		RET	NZ
 | |
| 		LD	A,(IY+PANEL.MFL)
 | |
| 		OR	(IY+PANEL.MFH)
 | |
| 		RET	Z
 | |
| 		PUSH IY
 | |
| 		POP HL
 | |
| 		LD BC,PANEL.MFL
 | |
| 		ADD HL,BC
 | |
| 		LD B,PANEL.FILEMASK - PANEL.MFL
 | |
| .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.EFL)
 | |
| 		OR	(IY+PANEL.EFH)
 | |
| 		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.MBL1)
 | |
| 		LD	H,(IY + PANEL.MBH1)
 | |
| 		LD	E,(IY + PANEL.MBL2)
 | |
| 		LD	D,(IY + PANEL.MBH2)
 | |
| 		LD	A,(IY + PANEL.MBL3)	; [ ] FAT32
 | |
| 		LD	C,(IY + PANEL.MFL)
 | |
| 		LD	B,(IY + PANEL.MFH)
 | |
| 		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.MBL1),L
 | |
| 		LD	(IY + PANEL.MBH1),H
 | |
| 		LD	(IY + PANEL.MBL2),E
 | |
| 		LD	(IY + PANEL.MBH2),D
 | |
| 		LD	(IY + PANEL.MBL3),A	; [ ] FAT32
 | |
| 		LD	(IY + PANEL.MFL),C
 | |
| 		LD	(IY + PANEL.MFH),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
 | |
| ; ¯®¤áç¥â ¢ ¡ ©â å à §¬¥à  ®â¬¥ç¥®© ¤¨à¥ªâ®à¨¨
 | |
| COUNTING_DIR	PUSH IX
 | |
| 		PUSH IY
 | |
| 		PUSH HL
 | |
| 		PUSH BC
 | |
| 	GETPORT WINSP.CPU3
 | |
| 		PUSH AF
 | |
| 		PUSH HL
 | |
| 		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,WorkBuffer + 0x300	; á®åà ¥ë© ¯ãâì ¤«ï ¢®§¢à â 
 | |
| 		ADD A,'A'
 | |
| 		LD (HL),A
 | |
| 		INC HL
 | |
| 		LD (HL),':'
 | |
| 		INC HL
 | |
| 	SPDSS DSSF.CURDIR
 | |
| 		POP DE
 | |
| 		JR 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,WorkBuffer + 0x300	; á®åà ¥ë© ¯ãâì ¤«ï ¢®§¢à â 
 | |
| 	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,WorkBuffer + 0x200
 | |
| 		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,WorkBuffer + 0x300
 | |
| 		PUSH DE
 | |
| 		PUSH IX
 | |
| 	SPDSS DSSF.F_FIRST,0
 | |
| 		POP IX
 | |
| 		POP HL
 | |
| 		RET
 | |
| 
 | |
| ; ¯®¨áª á«¥¤ãî饣® ®¯¨á â¥«ï
 | |
| .F_NEXT		LD DE,WorkBuffer + 0x300
 | |
| 		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
 | |
| 
 | |
| GetDirSizeR	CALL COUNTING_DIR
 | |
| 		LD HL,COUNTING_DIR.FILES_SIZE
 | |
| 		JP GET_DWORD
 | |
| 	ENDIF
 | 
