1233 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			1233 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
 | ||
| ; LAST UPDATE: 27.05.2025 savelij
 | ||
| 
 | ||
| ;[]==========================================================[]
 | ||
| PullDown:	CALL	ResInvert
 | ||
| 		CALL	SetPullInvert
 | ||
| PullLoop:	LD	IX,PullTab
 | ||
| 		CALL	TestCoords
 | ||
| 	SPDSS DSSF.SCANKEY
 | ||
| 		JR	Z,PullLoop
 | ||
| 		LD	A,B
 | ||
| 		OR	A
 | ||
| 		JR	NZ,PullLoop
 | ||
| 		LD	HL,PullLoop
 | ||
| 		PUSH	HL
 | ||
| 		LD	A,E
 | ||
| 		CP	0x1B
 | ||
| 		JR	Z,PullExit
 | ||
| 		CP	0x0D
 | ||
| 		JR	Z,PullEnter
 | ||
| 		OR	A
 | ||
| 		RET	NZ
 | ||
| 		LD	A,D
 | ||
| 		CP SC.X2
 | ||
| 		JR	Z,PullEnter
 | ||
| 		CP SC.X8
 | ||
| 		JR	Z,PullEnter
 | ||
| 		CP SC.X4
 | ||
| 		JR	Z,PullLeft
 | ||
| 		CP SC.X6
 | ||
| 		JR	Z,PullRight
 | ||
| 		RET 
 | ||
| 
 | ||
| PullExit:	POP	DE
 | ||
| .L1		CALL	ResPullInvert
 | ||
| 		JP	SetInvert
 | ||
| 
 | ||
| PullLeft:	LD	A,(CurrMenu)
 | ||
| 		DEC	A
 | ||
| 		JP	P,.L1
 | ||
| 		LD	A,MainPullMenu-1
 | ||
| .L1		LD	(CurrMenu),A
 | ||
| 		CALL	ResPullInvert
 | ||
| 		JP	SetPullInvert
 | ||
| 
 | ||
| PullRight:	LD	A,(CurrMenu)
 | ||
| 		INC	A
 | ||
| 		CP	MainPullMenu
 | ||
| 		JR	NZ,.L1
 | ||
| 		SUB	A
 | ||
| .L1		LD	(CurrMenu),A
 | ||
| 		CALL	ResPullInvert
 | ||
| 		JP	SetPullInvert
 | ||
| 
 | ||
| PullEnter:	LD	A,0x01
 | ||
| 		LD	(MKeyFlg),A
 | ||
| 		LD	HL,MFile
 | ||
| 		LD	A,(CurrMenu)
 | ||
| 		OR	A
 | ||
| 		JR	Z,.L1
 | ||
| 		LD	HL,MSelect
 | ||
| 		DEC	A
 | ||
| 		JR	Z,.L1
 | ||
| 		LD	HL,MOption
 | ||
| 		DEC	A
 | ||
| 		JR	Z,.L1
 | ||
| 		LD	HL,MView
 | ||
| 		DEC	A
 | ||
| 		JR	Z,.L1
 | ||
| 		LD	HL,MConfig
 | ||
| 		DEC	A
 | ||
| 		JR	Z,.L1
 | ||
| 		LD	HL,MAbout
 | ||
| .L1		EX	(SP),HL
 | ||
| 		RET 
 | ||
| 
 | ||
| ResPullInvert:	LD	DE,(COLORP.BLUE + COLORI.WHITE) << 8 | (COLORP.HIGHGRAY + COLORI.BLACK);0x4F80
 | ||
| 		LD	A,0
 | ||
| PrevMenu	EQU $-1
 | ||
| 		JR	PullInvert
 | ||
| 
 | ||
| SetPullInvert:	LD	DE,(COLORP.HIGHGRAY + COLORI.BLACK) << 8 | (COLORP.BLUE + COLORI.WHITE);0x804F
 | ||
| 		LD	A,0
 | ||
| CurrMenu	EQU $-1
 | ||
| 		LD	(PrevMenu),A
 | ||
| PullInvert:	LD	L,A
 | ||
| 		LD	H,0
 | ||
| 		ADD	HL,HL		; *2
 | ||
| 		ADD	HL,HL		; *4
 | ||
| 		ADD	HL,HL		; *8
 | ||
| 		ADD	HL,HL		; *16
 | ||
| 		LD	BC,PullTab
 | ||
| 		ADD	HL,BC
 | ||
| 		PUSH	HL
 | ||
| 		POP	IX
 | ||
| 		LD	L,(IX + FORMTABL.XMINL)
 | ||
| 		LD	H,(IX + FORMTABL.XMINH)
 | ||
| 		LD	C,(IX + FORMTABL.YMINL)
 | ||
| 		LD	B,(IX + FORMTABL.YMINH)
 | ||
| 		LD	A,(IX + FORMTABL.XMAXL)
 | ||
| 		SUB	(IX + FORMTABL.XMINL)
 | ||
| 		EX	AF,AF'
 | ||
| 		LD	A,(IX + FORMTABL.YMAXL)
 | ||
| 		SUB	(IX + FORMTABL.YMINL)
 | ||
| 		LD	IXH,A
 | ||
| 		EX	AF,AF'
 | ||
| 		SRL	A
 | ||
| 		LD	IXL,A
 | ||
| 		JP	InvertRectan
 | ||
| 
 | ||
| MFile:		CALL	ResPullInvert
 | ||
| 		JP	MenuFile.L1
 | ||
| 
 | ||
| MSelect:	CALL	ResPullInvert
 | ||
| 		JP	MenuSelect.L1
 | ||
| 
 | ||
| MOption:	CALL	ResPullInvert
 | ||
| 		JP	MenuOption.L1
 | ||
| 
 | ||
| MView:		CALL	ResPullInvert
 | ||
| 		JP	MenuView.L7
 | ||
| 
 | ||
| MConfig:	CALL	ResPullInvert
 | ||
| 		JP	MenuConfig.L1
 | ||
| 
 | ||
| MAbout:		CALL	ResPullInvert
 | ||
| 		JP	MenuAbout.L1
 | ||
| 
 | ||
| ;[]==========================================================[]
 | ||
| MenuFile:	CALL	ResInvert
 | ||
| .L2		SUB	A
 | ||
| 		LD	(MKeyFlg),A
 | ||
| .L1		CALL STORE_PANELFLAG
 | ||
| 	MAKEWINDOW WINSUBOBJ.STORE
 | ||
| 	W_MAIN 4,26,160,54
 | ||
| 	W_TEXT 16,6,COLORP.HIGHGRAY,"File info..."
 | ||
| 	W_TEXT 100,6,COLORP.HIGHGRAY,"ALT+ENT"
 | ||
| 	W_TEXT 16,20,COLORP.HIGHGRAY,"Print"
 | ||
| 	W_TEXT 100,20,COLORP.HIGHGRAY,"CTRL+F9"
 | ||
| 	W_HORIZLINE 4,33,152
 | ||
| 	W_TEXT 16,40,COLORP.HIGHGRAY,"Exit"
 | ||
| 	W_TEXT 100,40,COLORP.HIGHGRAY,"F10"
 | ||
| 	W_END
 | ||
| 		LD	HL,FileTab
 | ||
| 		LD BC,3
 | ||
| 		JP	MenuWork
 | ||
| 
 | ||
| MenuSelect:	CALL	ResInvert
 | ||
| .L2		SUB	A
 | ||
| 		LD	(MKeyFlg),A
 | ||
| .L1		CALL STORE_PANELFLAG
 | ||
| 	MAKEWINDOW WINSUBOBJ.STORE
 | ||
| 	W_MAIN 40,26,160,76
 | ||
| 	W_TEXT 16,6,COLORP.HIGHGRAY,"Mark group..."
 | ||
| 	W_TEXT 112,6,COLORP.HIGHGRAY,"+"
 | ||
| 	W_TEXT 16,20,COLORP.HIGHGRAY,"Unmark group..."
 | ||
| 	W_TEXT 112,20,COLORP.HIGHGRAY,"-"
 | ||
| 	W_TEXT 16,34,COLORP.HIGHGRAY,"Mark all"
 | ||
| 	W_TEXT 112,34,COLORP.HIGHGRAY,"CTRL+"
 | ||
| 	W_TEXT 16,48,COLORP.HIGHGRAY,"Unmark all"
 | ||
| 	W_TEXT 112,48,COLORP.HIGHGRAY,"CTRL-"
 | ||
| 	W_TEXT 16,62,COLORP.HIGHGRAY,"Invert selection"
 | ||
| 	W_TEXT 112,62,COLORP.HIGHGRAY,"*"
 | ||
| 	W_END
 | ||
| 		LD	HL,SelectTab
 | ||
| 		LD BC,1 << 8 | 5
 | ||
| 		JP	MenuWork
 | ||
| 
 | ||
| MenuOption:	CALL	ResInvert
 | ||
| .L2		SUB	A
 | ||
| 		LD	(MKeyFlg),A
 | ||
| .L1		CALL STORE_PANELFLAG
 | ||
| 	MAKEWINDOW WINSUBOBJ.STORE
 | ||
| 	IF PLUGS_ENABLE
 | ||
| 	W_MAIN 84,26,208,54+14
 | ||
| 	ELSE
 | ||
| 	W_MAIN 84,26,208,54
 | ||
| 	ENDIF
 | ||
| 	W_TEXT 16,6,COLORP.HIGHGRAY,"Refresh tree"		; 00
 | ||
| 	W_TEXT 152,6,COLORP.HIGHGRAY,"ALT+F10"
 | ||
| 	W_TEXT 16,20,COLORP.HIGHGRAY,"Disk info..."		; 01
 | ||
| 	W_TEXT 152,20,COLORP.HIGHGRAY,"CTRL+L"
 | ||
|  	W_HORIZLINE 4,33,200
 | ||
| 	W_TEXT 16,40,COLORP.HIGHGRAY,"System information..."	; 02
 | ||
| 	IF PLUGS_ENABLE
 | ||
| 	W_TEXT 16,54,COLORP.HIGHGRAY,"Plugins..."		; 03
 | ||
| 	ENDIF
 | ||
| 	W_END
 | ||
| 		LD	HL,OptionTab
 | ||
| 	IF PLUGS_ENABLE
 | ||
| 		LD BC,2 << 8 | 4
 | ||
| 	ELSE
 | ||
| 		LD BC,2 << 8 | 3
 | ||
| 	ENDIF
 | ||
| 		JP	MenuWork
 | ||
| 
 | ||
| MenuView:	CALL	ResInvert
 | ||
| .L8		SUB	A
 | ||
| 		LD	(MKeyFlg),A
 | ||
| .L7		CALL STORE_PANELFLAG
 | ||
| 		LD	A,(IY + PANEL.VIEWFLAG)
 | ||
| 		OR	A
 | ||
| 		LD	BC,0xFFFE
 | ||
| 		LD	E,0xFE
 | ||
| 		JR	Z,.L1
 | ||
| 		LD	BC,0xFEFF
 | ||
| 		LD	E,0xFE
 | ||
| 		BIT	VIEWFLAG.B_FULL,A
 | ||
| 		JR	NZ,.L1
 | ||
| 		LD	BC,0xFEFE
 | ||
| 		LD	E,0xFF
 | ||
| .L1		LD	A,B
 | ||
| 		LD	(MenuView.view1),A
 | ||
| 		LD	A,C
 | ||
| 		LD	(MenuView.view2),A
 | ||
| 		LD	A,E
 | ||
| 		LD	(MenuView.view3),A
 | ||
| 		LD	A,(IY + PANEL.SORTFLAG)
 | ||
| 		AND	SORTFLAG.MASKH
 | ||
| 		LD	BC,0xFFFE
 | ||
| 		LD	E,0xFE
 | ||
| 		JR	Z,.L2
 | ||
| 		BIT	SORTFLAG.B_EXEC,A
 | ||
| 		LD	BC,0xFEFF
 | ||
| 		LD	E,0xFE
 | ||
| 		JR	NZ,.L2
 | ||
| 		LD	BC,0xFEFE
 | ||
| 		LD	E,0xFF
 | ||
| .L2		LD	A,B
 | ||
| 		LD	(MenuView.filt1),A
 | ||
| 		LD	A,C
 | ||
| 		LD	(MenuView.filt2),A
 | ||
| 		LD	A,E
 | ||
| 		LD	(MenuView.filt3),A
 | ||
| 		LD	A,(IY + PANEL.SORTFLAG)
 | ||
| 		AND	SORTFLAG.MASK
 | ||
| 		LD	BC,0xFEFE
 | ||
| 		LD	DE,0xFEFE
 | ||
| 		LD	L,0xFF
 | ||
| 		JR	Z,.L3
 | ||
| 		BIT	SORTFLAG.B_NAME,A
 | ||
| 		LD	BC,0xFFFE
 | ||
| 		LD	DE,0xFEFE
 | ||
| 		LD	L,0xFE
 | ||
| 		JR	NZ,.L3
 | ||
| 		BIT	SORTFLAG.B_EXT,A
 | ||
| 		LD	BC,0xFEFF
 | ||
| 		LD	DE,0xFEFE
 | ||
| 		LD	L,0xFE
 | ||
| 		JR	NZ,.L3
 | ||
| 		BIT	SORTFLAG.B_DATE,A
 | ||
| 		LD	BC,0xFEFE
 | ||
| 		LD	DE,0xFFFE
 | ||
| 		LD	L,0xFE
 | ||
| 		JR	NZ,.L3
 | ||
| 		LD	BC,0xFEFE
 | ||
| 		LD	DE,0xFEFF
 | ||
| 		LD	L,0xFE
 | ||
| .L3		LD	A,B
 | ||
| 		LD	(MenuView.sort1),A
 | ||
| 		LD	A,C
 | ||
| 		LD	(MenuView.sort2),A
 | ||
| 		LD	A,D
 | ||
| 		LD	(MenuView.sort3),A
 | ||
| 		LD	A,E
 | ||
| 		LD	(MenuView.sort4),A
 | ||
| 		LD	A,L
 | ||
| 		LD	(MenuView.sort5),A
 | ||
| 		PUSH	IY
 | ||
| 		POP	HL
 | ||
| 		LD	BC,PANEL.FILEMASK
 | ||
| 		ADD	HL,BC
 | ||
| 		LD	DE,MenuView.Tfilter
 | ||
| 		LD	C,STRLEN("*.*         ");0x0C
 | ||
| 		SUB	A
 | ||
| .L4		LDI 
 | ||
| 		CP	(HL)
 | ||
| 		JR	NZ,.L4
 | ||
| 		LD	A,C
 | ||
| 		OR	A
 | ||
| 		JR	Z,.L6
 | ||
| 		LD	B,A
 | ||
| 		LD	A,' '
 | ||
| .L5		LD	(DE),A
 | ||
| 		INC	DE
 | ||
| 		DJNZ	.L5
 | ||
| .L6
 | ||
| 	MAKEWINDOW WINSUBOBJ.STORE
 | ||
| 	W_MAIN 138,26,190,186
 | ||
| 	W_TEXT 16,6,COLORP.HIGHGRAY,"Brief"
 | ||
| 	W_TEXT 110,6,COLORP.HIGHGRAY,"\xFE  CTRL+F1"
 | ||
| .view1		EQU $ - STRLEN ("v  CTRL+F1v")
 | ||
| 	W_TEXT 16,20,COLORP.HIGHGRAY,"Full"
 | ||
| 	W_TEXT 110,20,COLORP.HIGHGRAY,"\xFE  CTRL+F2"
 | ||
| .view2		EQU $ - STRLEN ("v  CTRL+F2 ")
 | ||
| 	W_TEXT 16,34,COLORP.HIGHGRAY,"Tree"
 | ||
| 	W_TEXT 110,34,COLORP.HIGHGRAY,"\xFE  CTRL+F8"
 | ||
| .view3		EQU $ - STRLEN("v  CTRL+F8v")
 | ||
| 	W_HORIZLINE 4,47,182
 | ||
| 	W_TEXT 16,54,COLORP.HIGHGRAY,"All files"
 | ||
| 	W_TEXT 110,54,COLORP.HIGHGRAY,"\xFE  CTRL+F10"
 | ||
| .filt1		EQU $ - STRLEN("v  CTRL+F10v")
 | ||
| 	W_TEXT 16,68,COLORP.HIGHGRAY,"Execute files"
 | ||
| 	W_TEXT 110,68,COLORP.HIGHGRAY,"\xFE  CTRL+F11"
 | ||
| .filt2		EQU $ - STRLEN("v  CTRL+F11v")
 | ||
| 	W_TEXT 16,82,COLORP.HIGHGRAY,"*.*         "
 | ||
| .Tfilter	EQU $ - STRLEN("*.*          ")
 | ||
| 	W_TEXT 110,82,COLORP.HIGHGRAY,"\xFE"
 | ||
| .filt3		EQU $ - 2
 | ||
| 	W_TEXT 16,96,COLORP.HIGHGRAY,"Filter..."
 | ||
| 	W_TEXT 110,96,COLORP.HIGHGRAY,"\xFE  CTRL+F12"
 | ||
| 	W_HORIZLINE 4,109,182
 | ||
| 	W_TEXT 16,116,COLORP.HIGHGRAY,"Name"
 | ||
| 	W_TEXT 110,116,COLORP.HIGHGRAY,"\xFE  CTRL+F3"
 | ||
| .sort1		EQU $ - STRLEN("v  CTRL+F3v")
 | ||
| 	W_TEXT 16,130,COLORP.HIGHGRAY,"Extension"
 | ||
| 	W_TEXT 110,130,COLORP.HIGHGRAY,"\xFE  CTRL+F4"
 | ||
| .sort2		EQU $ - STRLEN("v  CTRL+F4v")
 | ||
| 	W_TEXT 16,144,COLORP.HIGHGRAY,"Date"
 | ||
| 	W_TEXT 110,144,COLORP.HIGHGRAY,"\xFE  CTRL+F5"
 | ||
| .sort3		EQU $ - STRLEN("v  CTRL+F5v")
 | ||
| 	W_TEXT 16,158,COLORP.HIGHGRAY,"Size"
 | ||
| 	W_TEXT 110,158,COLORP.HIGHGRAY,"\xFE  CTRL+F6"
 | ||
| .sort4		EQU $ - STRLEN("v  CTRL+F6v")
 | ||
| 	W_TEXT 16,172,COLORP.HIGHGRAY,"Unsorted"
 | ||
| 	W_TEXT 110,172,COLORP.HIGHGRAY,"\xFE  CTRL+F7"
 | ||
| .sort5		EQU $ - STRLEN("v  CTRL+F7v")
 | ||
| 	W_END
 | ||
| 		LD	HL,ViewTab
 | ||
| 		LD BC,3 << 8 | 12
 | ||
| 		JP	MenuWork
 | ||
| 
 | ||
| MenuConfig:	CALL	ResInvert
 | ||
| .L2		SUB	A
 | ||
| 		LD	(MKeyFlg),A
 | ||
| .L1		CALL STORE_PANELFLAG
 | ||
| 	MAKEWINDOW WINSUBOBJ.STORE
 | ||
| 	W_MAIN 174,26,96,20
 | ||
| 	W_TEXT 16,6,COLORP.HIGHGRAY,"Setup..."
 | ||
| 	W_END
 | ||
| 		LD	HL,ConfigTab
 | ||
| 		LD BC,4 << 8 | 1
 | ||
| 		JP	MenuWork
 | ||
| 
 | ||
| MenuAbout:	CALL	ResInvert
 | ||
| .L2		SUB	A
 | ||
| 		LD	(MKeyFlg),A
 | ||
| .L1		CALL STORE_PANELFLAG
 | ||
| 	MAKEWINDOW WINSUBOBJ.STORE
 | ||
| 	W_MAIN 222,26,112,20
 | ||
| 	W_TEXT 16,6,COLORP.HIGHGRAY,"Version..."
 | ||
| 	W_END
 | ||
| 		LD	HL,AboutTab
 | ||
| 		LD BC,5 << 8 | 1
 | ||
| ; HL - <20><><EFBFBD><EFBFBD><EFBFBD> ⠡<><E2A0A1><EFBFBD><EFBFBD> <20><>⨢<EFBFBD><E2A8A2><EFBFBD> <20><><EFBFBD>
 | ||
| ;  B - ⥪<>騩 <20>㭪<EFBFBD> <20><><EFBFBD><EFBFBD>
 | ||
| ;  C - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢮ <20>㭪⮢ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | ||
| MenuWork:	LD	(CurWTab),HL
 | ||
| 		LD A,C
 | ||
| 		LD	(MaxLines),A
 | ||
| 		LD A,B
 | ||
| 		LD (CurrMenu),A
 | ||
| 		LD (PrevMenu),A
 | ||
| 		SUB	A
 | ||
| 		LD	(CurMLine),A
 | ||
| 		LD	IX,(CurWTab)
 | ||
| 		CALL	TestCoords
 | ||
| 		CALL	TestInvert
 | ||
| 		JR	NZ,MenuLoop
 | ||
| 		LD	A,0
 | ||
| MKeyFlg		EQU $-1
 | ||
| 		OR	A
 | ||
| 		CALL	NZ,SetMSelect
 | ||
| MenuLoop:	LD	IX,0x0000
 | ||
| CurWTab		EQU $-2
 | ||
| 		CALL	TestCoords
 | ||
| 	SPDSS DSSF.SCANKEY
 | ||
| 		JR	Z,MenuLoop
 | ||
| 		LD	A,B
 | ||
| 		OR	A
 | ||
| 		JR	NZ,MenuLoop
 | ||
| 		LD	HL,MenuLoop
 | ||
| 		PUSH	HL
 | ||
| 		LD	A,E
 | ||
| 		CP	0x1B
 | ||
| 		JR	Z,MenuKExt
 | ||
| 		CP	0x0D
 | ||
| 		JP	Z,ChangeSet
 | ||
| 		CP	' '
 | ||
| 		JP	Z,ChangeSet
 | ||
| 		OR	A
 | ||
| 		RET	NZ
 | ||
| 		LD	A,D
 | ||
| 		CP SC.X4
 | ||
| 		JR	Z,MenuLeft
 | ||
| 		CP SC.X6
 | ||
| 		JP	Z,MenuRight
 | ||
| 		CP SC.X8
 | ||
| 		JP	Z,MenuUp
 | ||
| 		CP SC.X2
 | ||
| 		JP	Z,MenuDown
 | ||
| 		CP SC.X7
 | ||
| 		JP	Z,MenuHome
 | ||
| 		CP SC.X1
 | ||
| 		JP	Z,MenuEnd
 | ||
| 		RET 
 | ||
| 
 | ||
| TestInvert:	LD	HL,(CurWTab)
 | ||
| 		LD	DE,FORMTABL.FLAGH
 | ||
| 		ADD	HL,DE
 | ||
| 		LD	A,0
 | ||
| MaxLines	EQU $-1
 | ||
| 		LD	B,A
 | ||
| 		LD	C,0
 | ||
| 		LD	DE,FORMTABL.SIZE
 | ||
| .L2		BIT	FORMTABL.B_FIRENOINV,(HL)
 | ||
| 		JR	Z,.L1
 | ||
| 		LD	A,C
 | ||
| 		SET	7,A
 | ||
| 		LD	(CurMLine),A
 | ||
| .L1		INC	C
 | ||
| 		ADD	HL,DE
 | ||
| 		DJNZ	.L2
 | ||
| 		LD	A,0
 | ||
| CurMLine	EQU $-1
 | ||
| 		BIT	7,A
 | ||
| 		RES	7,A
 | ||
| 		LD	(CurMLine),A
 | ||
| 		RET 
 | ||
| 
 | ||
| ; <20><>室 <20><> Esc
 | ||
| MenuKExt:	POP	DE
 | ||
| 	WINDOWCLOSE
 | ||
| 		JP	PullLoop
 | ||
| 
 | ||
| ; <20>६<EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD><EFBFBD> 䫠<><E4ABA0><EFBFBD> <20>뢮<EFBFBD><EBA2AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | ||
| STORE_PANELFLAG	LD A,(IY + PANEL.SORTFLAG)
 | ||
| 		LD (PANEL_SORTFLAG),A
 | ||
| 		LD A,(IY + PANEL.VIEWFLAG)
 | ||
| 		LD (PANEL_VIEWFLAG),A
 | ||
| 		RET
 | ||
| 
 | ||
| MenuExit:	LD	A,0
 | ||
| PANEL_VIEWFLAG	EQU $-1
 | ||
| 		CP	(IY+PANEL.VIEWFLAG)
 | ||
| 		JP	NZ,InitPanel
 | ||
| 		LD	A,0
 | ||
| PANEL_SORTFLAG	EQU $-1
 | ||
| 		CP	(IY+PANEL.SORTFLAG)
 | ||
| 		JP	NZ,InitPanel
 | ||
| 		JP	SetInvert
 | ||
| 
 | ||
| MenuLeft:
 | ||
| 	WINDOWCLOSE
 | ||
| 		LD	A,(CurrMenu)
 | ||
| 		DEC	A
 | ||
| 		JP	P,.L1
 | ||
| 		LD	A,MainPullMenu-1
 | ||
| .L1		LD	(CurrMenu),A
 | ||
| 		JP	PullEnter
 | ||
| 
 | ||
| MenuRight:
 | ||
| 	WINDOWCLOSE
 | ||
| 		LD	A,(CurrMenu)
 | ||
| 		INC	A
 | ||
| 		CP	MainPullMenu
 | ||
| 		JR	NZ,.L1
 | ||
| 		SUB	A
 | ||
| .L1		LD	(CurrMenu),A
 | ||
| 		JP	PullEnter
 | ||
| 
 | ||
| MenuUp:		CALL	TestInvert
 | ||
| 		JR	Z,.L1
 | ||
| 		LD	A,(MaxLines)
 | ||
| 		DEC	A
 | ||
| 		RET	Z
 | ||
| 		CALL	ResMSelect
 | ||
| 		LD	A,(CurMLine)
 | ||
| 		OR	A
 | ||
| 		JR	NZ,.L2
 | ||
| .L1		LD	A,(MaxLines)
 | ||
| .L2		DEC	A
 | ||
| 		LD	(CurMLine),A
 | ||
| 		JP	SetMSelect
 | ||
| 
 | ||
| MenuDown:	CALL	TestInvert
 | ||
| 		JR	Z,.L1
 | ||
| 		LD	A,(MaxLines)
 | ||
| 		DEC	A
 | ||
| 		RET	Z
 | ||
| 		CALL	ResMSelect
 | ||
| 		LD	A,(MaxLines)
 | ||
| 		LD	B,A
 | ||
| 		LD	A,(CurMLine)
 | ||
| 		INC	A
 | ||
| 		CP	B
 | ||
| 		JR	NZ,.L2
 | ||
| .L1		SUB	A
 | ||
| .L2		LD	(CurMLine),A
 | ||
| 		JP	SetMSelect
 | ||
| 
 | ||
| MenuHome:	CALL	TestInvert
 | ||
| 		JR	Z,.L1
 | ||
| 		LD	A,(CurMLine)
 | ||
| 		OR	A
 | ||
| 		RET	Z
 | ||
| 		CALL	ResMSelect
 | ||
| .L1		SUB	A
 | ||
| 		LD	(CurMLine),A
 | ||
| 		JP	SetMSelect
 | ||
| 
 | ||
| MenuEnd:	CALL	TestInvert
 | ||
| 		JR	Z,.L1
 | ||
| 		LD	A,(MaxLines)
 | ||
| 		LD	B,A
 | ||
| 		LD	A,(CurMLine)
 | ||
| 		INC	A
 | ||
| 		CP	B
 | ||
| 		RET	Z
 | ||
| 		CALL	ResMSelect
 | ||
| .L1		LD	A,(MaxLines)
 | ||
| 		DEC	A
 | ||
| 		LD	(CurMLine),A
 | ||
| 		JP	SetMSelect
 | ||
| 
 | ||
| ResMSelect:	LD	HL,ResSelect1
 | ||
| 		JR	SetMSelect.L1
 | ||
| 
 | ||
| SetMSelect:	LD	HL,SetSelect1
 | ||
| .L1		PUSH	HL
 | ||
| 		LD	A,(CurMLine)
 | ||
| 		LD	L,A
 | ||
| 		LD	H,0x00
 | ||
| 		ADD	HL,HL
 | ||
| 		ADD	HL,HL
 | ||
| 		ADD	HL,HL
 | ||
| 		ADD	HL,HL
 | ||
| 		LD	BC,(CurWTab)
 | ||
| 		ADD	HL,BC
 | ||
| 		PUSH	HL
 | ||
| 		POP	IX
 | ||
| 		RET 
 | ||
| 
 | ||
| ChangeSet:	CALL	TestInvert
 | ||
| 		JP	Z,MenuKExt
 | ||
| 		LD	A,(CurMLine)
 | ||
| 		LD	L,A
 | ||
| 		LD	H,0x00
 | ||
| 		ADD	HL,HL
 | ||
| 		ADD	HL,HL
 | ||
| 		ADD	HL,HL
 | ||
| 		ADD	HL,HL
 | ||
| 		LD	BC,(CurWTab)
 | ||
| 		ADD	HL,BC
 | ||
| 		PUSH	HL
 | ||
| 		POP	IX
 | ||
| 		LD	C,(IX + FORMTABL.FIRELEFTL)	; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | ||
| 		LD	B,(IX + FORMTABL.FIRELEFTH)
 | ||
| 		LD	A,B
 | ||
| 		OR	C
 | ||
| 		RET	Z
 | ||
| 		BIT	FORMTABL.B_EXECNORETLMB,(IX + FORMTABL.FLAGL)	; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | ||
| 		JR	Z,.L1
 | ||
| 		POP	AF
 | ||
| .L1		PUSH	BC
 | ||
| 		BIT	FORMTABL.B_INV1,(IX + FORMTABL.FLAGL)
 | ||
| 		CALL	NZ,ResSelect1
 | ||
| 		CALL	ResSelect2
 | ||
| 		BIT	FORMTABL.B_CLOSEWIN,(IX + FORMTABL.FLAGH)
 | ||
| 		RET	Z
 | ||
| 	WINDOWCLOSE
 | ||
| 		RET 
 | ||
| 
 | ||
| ; brief
 | ||
| ChView1:	RES	VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG)
 | ||
| 		RES	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		JP	MenuExit
 | ||
| 
 | ||
| ; full
 | ||
| ChView2:	SET	VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG)
 | ||
| 		RES	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		JP	MenuExit
 | ||
| 
 | ||
| ; tree
 | ||
| ChView3:	LD	A,(TreeFlag)
 | ||
| 		OR	A
 | ||
| 		JP	NZ,MenuExit
 | ||
| 		RES	VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG)
 | ||
| 		SET	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		JP	MenuExit
 | ||
| 
 | ||
| ; all files
 | ||
| ChFilt1:	BIT	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		JP	NZ,MenuExit
 | ||
| 		RES	SORTFLAG.B_EXEC,(IY+PANEL.SORTFLAG)
 | ||
| 		RES	SORTFLAG.B_FILTER,(IY+PANEL.SORTFLAG)
 | ||
| 		JP	MenuExit
 | ||
| 
 | ||
| ; execute files
 | ||
| ChFilt2:	BIT	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		JP	NZ,MenuExit
 | ||
| 		SET	SORTFLAG.B_EXEC,(IY+PANEL.SORTFLAG)
 | ||
| 		RES	SORTFLAG.B_FILTER,(IY+PANEL.SORTFLAG)
 | ||
| 		JP	MenuExit
 | ||
| 
 | ||
| ; filter
 | ||
| ChFilt3:	BIT	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		JP	NZ,MenuExit
 | ||
| 		RES	SORTFLAG.B_EXEC,(IY+PANEL.SORTFLAG)
 | ||
| 		SET	SORTFLAG.B_FILTER,(IY+PANEL.SORTFLAG)
 | ||
| 		JP	MenuExit
 | ||
| 
 | ||
| ; name
 | ||
| ChSort1:	BIT	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		JP	NZ,MenuExit
 | ||
| 		SET	SORTFLAG.B_NAME,(IY+PANEL.SORTFLAG)
 | ||
| 		RES	SORTFLAG.B_EXT,(IY+PANEL.SORTFLAG)
 | ||
| 		RES	SORTFLAG.B_DATE,(IY+PANEL.SORTFLAG)
 | ||
| 		RES	SORTFLAG.B_SIZE,(IY+PANEL.SORTFLAG)
 | ||
| 		JP	MenuExit
 | ||
| 
 | ||
| ; extension
 | ||
| ChSort2:	BIT	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		JP	NZ,MenuExit
 | ||
| 		RES	SORTFLAG.B_NAME,(IY+PANEL.SORTFLAG)
 | ||
| 		SET	SORTFLAG.B_EXT,(IY+PANEL.SORTFLAG)
 | ||
| 		RES	SORTFLAG.B_DATE,(IY+PANEL.SORTFLAG)
 | ||
| 		RES	SORTFLAG.B_SIZE,(IY+PANEL.SORTFLAG)
 | ||
| 		JP	MenuExit
 | ||
| 
 | ||
| ; date
 | ||
| ChSort3:	BIT	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		JP	NZ,MenuExit
 | ||
| 		RES	SORTFLAG.B_NAME,(IY+PANEL.SORTFLAG)
 | ||
| 		RES	SORTFLAG.B_EXT,(IY+PANEL.SORTFLAG)
 | ||
| 		SET	SORTFLAG.B_DATE,(IY+PANEL.SORTFLAG)
 | ||
| 		RES	SORTFLAG.B_SIZE,(IY+PANEL.SORTFLAG)
 | ||
| 		JP	MenuExit
 | ||
| 
 | ||
| ; size
 | ||
| ChSort4:	BIT	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		JP	NZ,MenuExit
 | ||
| 		RES	SORTFLAG.B_NAME,(IY+PANEL.SORTFLAG)
 | ||
| 		RES	SORTFLAG.B_EXT,(IY+PANEL.SORTFLAG)
 | ||
| 		RES	SORTFLAG.B_DATE,(IY+PANEL.SORTFLAG)
 | ||
| 		SET	SORTFLAG.B_SIZE,(IY+PANEL.SORTFLAG)
 | ||
| 		JP	MenuExit
 | ||
| 
 | ||
| ; unsorted
 | ||
| ChSort5:	BIT	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		JP	NZ,MenuExit
 | ||
| 		LD	A,(IY+PANEL.SORTFLAG)
 | ||
| 		AND	SORTFLAG.MASKH
 | ||
| 		LD	(IY+PANEL.SORTFLAG),A
 | ||
| 		JP	MenuExit
 | ||
| 
 | ||
| ;[]==========================================================[]
 | ||
| Brief:		LD	A,(IY+PANEL.VIEWFLAG)
 | ||
| 		AND	VIEWFLAG.MASK
 | ||
| 		RET	Z
 | ||
| 		RES	VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG)
 | ||
| 		RES	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		JP	InitPanel
 | ||
| 
 | ||
| Full:		BIT	VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG)
 | ||
| 		RET	NZ
 | ||
| 		SET	VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG)
 | ||
| 		RES	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		JP	InitPanel
 | ||
| 
 | ||
| Tree:		LD	A,(TreeFlag)
 | ||
| 		OR	A
 | ||
| 		RET	NZ
 | ||
| 		BIT	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		RET	NZ
 | ||
| 		RES	VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG)
 | ||
| 		SET	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		JP	InitPanel
 | ||
| 
 | ||
| AllFiles:	BIT	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		RET	NZ
 | ||
| 		LD	A,(IY+PANEL.SORTFLAG)
 | ||
| 		AND	SORTFLAG.MASKEXECFILTER
 | ||
| 		RET	Z
 | ||
| 		RES	SORTFLAG.B_EXEC,(IY+PANEL.SORTFLAG)
 | ||
| 		RES	SORTFLAG.B_FILTER,(IY+PANEL.SORTFLAG)
 | ||
| 		JP	InitPanel
 | ||
| 
 | ||
| ExeFiles:	BIT	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		RET	NZ
 | ||
| 		BIT	SORTFLAG.B_EXEC,(IY+PANEL.SORTFLAG)
 | ||
| 		RET	NZ
 | ||
| 		SET	SORTFLAG.B_EXEC,(IY+PANEL.SORTFLAG)
 | ||
| 		RES	SORTFLAG.B_FILTER,(IY+PANEL.SORTFLAG)
 | ||
| 		JP	InitPanel
 | ||
| 
 | ||
| NameS:		BIT	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		RET	NZ
 | ||
| 		BIT	SORTFLAG.B_NAME,(IY+PANEL.SORTFLAG)
 | ||
| 		RET	NZ
 | ||
| 		SET	SORTFLAG.B_NAME,(IY+PANEL.SORTFLAG)
 | ||
| 		RES	SORTFLAG.B_EXT,(IY+PANEL.SORTFLAG)
 | ||
| 		RES	SORTFLAG.B_DATE,(IY+PANEL.SORTFLAG)
 | ||
| 		RES	SORTFLAG.B_SIZE,(IY+PANEL.SORTFLAG)
 | ||
| 		JP	InitPanel
 | ||
| 
 | ||
| Extention:	BIT	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		RET	NZ
 | ||
| 		BIT	SORTFLAG.B_EXT,(IY+PANEL.SORTFLAG)
 | ||
| 		RET	NZ
 | ||
| 		RES	SORTFLAG.B_NAME,(IY+PANEL.SORTFLAG)
 | ||
| 		SET	SORTFLAG.B_EXT,(IY+PANEL.SORTFLAG)
 | ||
| 		RES	SORTFLAG.B_DATE,(IY+PANEL.SORTFLAG)
 | ||
| 		RES	SORTFLAG.B_SIZE,(IY+PANEL.SORTFLAG)
 | ||
| 		JP	InitPanel
 | ||
| 
 | ||
| Data:		BIT	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		RET	NZ
 | ||
| 		BIT	SORTFLAG.B_DATE,(IY+PANEL.SORTFLAG)
 | ||
| 		RET	NZ
 | ||
| 		RES	SORTFLAG.B_NAME,(IY+PANEL.SORTFLAG)
 | ||
| 		RES	SORTFLAG.B_EXT,(IY+PANEL.SORTFLAG)
 | ||
| 		SET	SORTFLAG.B_DATE,(IY+PANEL.SORTFLAG)
 | ||
| 		RES	SORTFLAG.B_SIZE,(IY+PANEL.SORTFLAG)
 | ||
| 		JP	InitPanel
 | ||
| 
 | ||
| Size:		BIT	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		RET	NZ
 | ||
| 		BIT	SORTFLAG.B_SIZE,(IY+PANEL.SORTFLAG)
 | ||
| 		RET	NZ
 | ||
| 		RES	SORTFLAG.B_NAME,(IY+PANEL.SORTFLAG)
 | ||
| 		RES	SORTFLAG.B_EXT,(IY+PANEL.SORTFLAG)
 | ||
| 		RES	SORTFLAG.B_DATE,(IY+PANEL.SORTFLAG)
 | ||
| 		SET	SORTFLAG.B_SIZE,(IY+PANEL.SORTFLAG)
 | ||
| 		JP	InitPanel
 | ||
| 
 | ||
| UnSort:		BIT	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		RET	NZ
 | ||
| 		LD	A,(IY+PANEL.SORTFLAG)
 | ||
| 		AND	SORTFLAG.MASK
 | ||
| 		RET	Z
 | ||
| 		LD	A,(IY+PANEL.SORTFLAG)
 | ||
| 		AND	SORTFLAG.MASKH
 | ||
| 		LD	(IY+PANEL.SORTFLAG),A
 | ||
| 		JP	InitPanel
 | ||
| 
 | ||
| ;[]==========================================================[]
 | ||
| RefreshTree:	LD	A,(TreeFlag)
 | ||
| 		OR	A
 | ||
| 		JR	Z,RfTree1
 | ||
| 		BIT	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		JR	NZ,RfTree1
 | ||
| 		PUSH	IY
 | ||
| 		BIT	PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
 | ||
| 		LD	IY,RightPanel
 | ||
| 		JR	Z,.L1
 | ||
| 		LD	IY,LeftPanel
 | ||
| .L1		CALL	RfTree1
 | ||
| 		POP	IY
 | ||
| 		RET 
 | ||
| 
 | ||
| RfTree1:	LD	HL,BegDIR
 | ||
| 		PUSH	IY
 | ||
| 	SPDSS DSSF.CHDIR
 | ||
| 		POP	IY
 | ||
| 		RET	C
 | ||
| 		LD	HL,TreeName
 | ||
| 		PUSH	IY
 | ||
| 	SPDSS DSSF.DELETE,,0
 | ||
| 		POP	IY
 | ||
| 		RES	VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG)
 | ||
| 		SET	VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
 | ||
| 		JP	InitPanel
 | ||
| 
 | ||
| ;[]==========================================================[]
 | ||
| NewFilter:	CALL	ResInvert
 | ||
| .L1		LD	HL,SetInvert
 | ||
| 		PUSH	HL
 | ||
| 		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 98,3,COLORI.WHITE,"Filter"
 | ||
| 	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 16,25,COLORP.HIGHGRAY,"New filter:"
 | ||
| 	W_BORDER 70,22,134,12
 | ||
| 	W_FILL 72,23,130,10,COLORI.WHITE
 | ||
| 	W_END
 | ||
| 		PUSH	IY
 | ||
| 		POP	HL
 | ||
| 		LD	BC,PANEL.FILEMASK
 | ||
| 		ADD	HL,BC
 | ||
| 		LD	DE,CurFilt
 | ||
| 		SUB	A
 | ||
| 		LD	C,A
 | ||
| .L3		LDI 
 | ||
| 		CP	(HL)
 | ||
| 		JR	NZ,.L3
 | ||
| 		LD	A,C
 | ||
| 		NEG 
 | ||
| 		LD	(FiltLen),A
 | ||
| 		LD	IX,FilterStr
 | ||
| 		LD	HL,FilterTab
 | ||
| 		CALL	InputLine
 | ||
| 	WINDOWCLOSE
 | ||
| 		RET	C
 | ||
| 		LD	A,(FiltLen)
 | ||
| 		OR	A
 | ||
| 		RET	Z
 | ||
| 		LD	HL,CurFilt
 | ||
| 		LD	DE,SelMask
 | ||
| 		CALL	MakeMask
 | ||
| 		RET	NC
 | ||
| 		PUSH	IY
 | ||
| 		POP	HL
 | ||
| 		LD	DE,PANEL.FILEMASK
 | ||
| 		ADD	HL,DE
 | ||
| 		EX	DE,HL
 | ||
| 		LD	HL,CurFilt
 | ||
| 		LD	A,(FiltLen)
 | ||
| 		LD	B,A
 | ||
| .L2		LD	A,(HL)
 | ||
| 		CALL	CorrBigChar
 | ||
| 		LD	(DE),A
 | ||
| 		INC	HL
 | ||
| 		INC	DE
 | ||
| 		DJNZ	.L2
 | ||
| 		SUB	A
 | ||
| 		LD	(DE),A
 | ||
| 		LD	A,(IY+PANEL.SORTFLAG)
 | ||
| 		AND	SORTFLAG.MASK
 | ||
| 		SET	SORTFLAG.B_FILTER,A
 | ||
| 		LD	(IY+PANEL.SORTFLAG),A
 | ||
| 		POP	HL
 | ||
| 		JP	InitPanel
 | ||
| 
 | ||
| FilterStr:	DEFB	0x0C,0x00,0x00,0x00
 | ||
| FiltLen:	DEFB	0x00
 | ||
| 		DEFW	0x011A,0x006A
 | ||
| 		DEFW	0x0068
 | ||
| 		DEFB	0xF0
 | ||
| CurFilt:	DUPL	0x0D,0x00
 | ||
| 
 | ||
| ;[]==========================================================[]
 | ||
| LeftDrive:	CALL	ResInvert
 | ||
| 	MAKEWINDOW WINSUBOBJ.STORE
 | ||
| 	W_MAIN 32,92,224,36
 | ||
| 	W_FILL 4,2,216,10,COLORI.BLACK
 | ||
| 	W_TEXT 86,3,COLORI.WHITE,"Left drive"
 | ||
| 	W_END
 | ||
| 		LD	HL,LeftTab
 | ||
| 		LD	DE,DriveTab
 | ||
| 		LD	BC,0x0020
 | ||
| 		LDIR 
 | ||
| 		LD	IX,LeftPanel
 | ||
| 		LD	HL,0x0032
 | ||
| 		JP	ChangeDrv
 | ||
| 
 | ||
| LeftTab:	DEFW 0x0000,0x0020,0x0000,0x0100,0x20,0x0000,DriveExit,0x0000
 | ||
| 		DEFW 0x0100,0x0280,0x0000,0x0100,0x20,0x0000,DriveExit,0x0000
 | ||
| 
 | ||
| RightDrive:	CALL	ResInvert
 | ||
| 	MAKEWINDOW WINSUBOBJ.STORE
 | ||
| 	W_MAIN 352,92,224,36
 | ||
| 	W_FILL 4,2,216,10,COLORI.BLACK
 | ||
| 	W_TEXT 86,3,COLORI.WHITE,"Right drive"
 | ||
| 	W_END
 | ||
| 		LD	HL,RightTab
 | ||
| 		LD	DE,DriveTab
 | ||
| 		LD	BC,0x0020
 | ||
| 		LDIR 
 | ||
| 		LD	IX,RightPanel
 | ||
| 		LD	HL,0x0172
 | ||
| 		JR	ChangeDrv
 | ||
| 
 | ||
| RightTab:	DEFW 0x0000,0x0160,0x0000,0x0100,0x20,0x0000,DriveExit,0x0000
 | ||
| 		DEFW 0x0240,0x0280,0x0000,0x0100,0x20,0x0000,DriveExit,0x0000
 | ||
| 
 | ||
| ChangeDrv:	PUSH	IY
 | ||
| 		PUSH	IX
 | ||
| 		POP	IY
 | ||
| 		LD	IX,BegDrive
 | ||
| 		LD	A,(NUM_DEVICES)
 | ||
| 		ADD	A,A
 | ||
| 		LD	C,A
 | ||
| 		ADD	A,A
 | ||
| 		ADD	A,A
 | ||
| 		ADD	A,A
 | ||
| 		ADD	A,C
 | ||
| 		SUB	11*0x12
 | ||
| 		NEG 
 | ||
| 		SRL	A
 | ||
| 		ADD	A,L
 | ||
| 		LD	E,A
 | ||
| 		LD	A,H
 | ||
| 		ADC	A,0x00
 | ||
| 		LD	D,A
 | ||
| 		LD	HL,Drive
 | ||
| 		LD	(HL),'A'
 | ||
| 		LD	BC,0x0070
 | ||
| 		LD	A,(NUM_DEVICES)
 | ||
| .Drive1		PUSH	AF
 | ||
| 		PUSH	IX
 | ||
| 		PUSH	HL
 | ||
| 		PUSH	DE
 | ||
| 		PUSH	BC
 | ||
| 		LD	A,0x80
 | ||
| 		CALL	PrnTxtLnIFF
 | ||
| 		POP	BC
 | ||
| 		POP	DE
 | ||
| 		POP	HL
 | ||
| 		POP	IX
 | ||
| 		LD	A,E
 | ||
| 		SUB	0x06
 | ||
| 		LD	(IX+0x00),A
 | ||
| 		LD	A,D
 | ||
| 		SBC	A,0x00
 | ||
| 		LD	(IX+0x01),A
 | ||
| 		LD	A,E
 | ||
| 		ADD	A,0x12
 | ||
| 		LD	E,A
 | ||
| 		JR	NC,.L1
 | ||
| 		INC	D
 | ||
| .L1		LD	A,E
 | ||
| 		SUB	0x06
 | ||
| 		LD	(IX+0x02),A
 | ||
| 		LD	A,D
 | ||
| 		SBC	A,0x00
 | ||
| 		LD	(IX+0x03),D
 | ||
| 		LD	A,IXL
 | ||
| 		ADD	A,0x10
 | ||
| 		LD	IXL,A
 | ||
| 		JR	NC,.L2
 | ||
| 		INC	IXH
 | ||
| .L2		INC	(HL)
 | ||
| 		POP	AF
 | ||
| 		DEC	A
 | ||
| 		JR	NZ,.Drive1
 | ||
| 		LD	(IX+0x00),0x00
 | ||
| 		LD	(IX+0x01),0x80
 | ||
| 		LD	A,(IY + PANEL.CURRPATH)
 | ||
| 		SUB	'A'
 | ||
| 		LD	(CurDrive),A
 | ||
| 		CALL	SetDriveInv
 | ||
| DriveLoop:	LD	IX,DriveTab
 | ||
| 		CALL	TestCoords
 | ||
| 	SPDSS DSSF.SCANKEY
 | ||
| 		JR	Z,DriveLoop
 | ||
| 		LD	A,B
 | ||
| 		OR	A
 | ||
| 		JR	NZ,DriveLoop
 | ||
| 		LD	A,E
 | ||
| 		CP	0x1B
 | ||
| 		JR	Z,DriveExit
 | ||
| 		CP	0x0D
 | ||
| 		JR	Z,DriveEnter
 | ||
| 		OR	A
 | ||
| 		JR	Z,DriveLoop1
 | ||
| 		LD	A,(NUM_DEVICES)
 | ||
| 		LD	C,A
 | ||
| 		LD	A,E
 | ||
| 		RES	5,A
 | ||
| 		SUB	'A'
 | ||
| 		JR	C,DriveLoop
 | ||
| 		CP	C
 | ||
| 		JR	NC,DriveLoop
 | ||
| 		LD	(CurDrive),A
 | ||
| 		JR	DriveEnter
 | ||
| 
 | ||
| DriveLoop1:	LD	HL,DriveLoop
 | ||
| 		PUSH	HL
 | ||
| 		LD	A,D
 | ||
| 		CP	0x54
 | ||
| 		JR	Z,DriveLeft
 | ||
| 		CP	0x56
 | ||
| 		JR	Z,DriveRight
 | ||
| 		RET 
 | ||
| 
 | ||
| DriveExit:
 | ||
| 	WINDOWCLOSE
 | ||
| 		POP	IY
 | ||
| 		JP	SetInvert
 | ||
| 
 | ||
| DriveLeft:	LD	A,(NUM_DEVICES)
 | ||
| 		DEC	A
 | ||
| 		RET	Z
 | ||
| 		LD	A,(CurDrive)
 | ||
| 		OR	A
 | ||
| 		JR	NZ,.L1
 | ||
| 		LD	A,(NUM_DEVICES)
 | ||
| .L1		DEC	A
 | ||
| 		PUSH	AF
 | ||
| 		CALL	ResDriveInv
 | ||
| 		POP	AF
 | ||
| 		LD	(CurDrive),A
 | ||
| 		JP	SetDriveInv
 | ||
| 
 | ||
| DriveRight:	LD	A,(NUM_DEVICES)
 | ||
| 		CP	0x01
 | ||
| 		RET	Z
 | ||
| 		LD	B,A
 | ||
| 		LD	A,(CurDrive)
 | ||
| 		INC	A
 | ||
| 		CP	B
 | ||
| 		JR	NZ,.L1
 | ||
| 		SUB	A
 | ||
| .L1		PUSH	AF
 | ||
| 		CALL	ResDriveInv
 | ||
| 		POP	AF
 | ||
| 		LD	(CurDrive),A
 | ||
| 		JP	SetDriveInv
 | ||
| 
 | ||
| DriveMouse:	LD	IX,BegDrive
 | ||
| 		LD	C,(IX+0x00)
 | ||
| 		LD	B,(IX+0x01)
 | ||
| 		OR	A
 | ||
| 		SBC	HL,BC
 | ||
| 		LD	BC,0x0012
 | ||
| 		LD	A,0xFF
 | ||
| .L1		INC	A
 | ||
| 		SBC	HL,BC
 | ||
| 		JR	NC,.L1
 | ||
| 		JR	SetDrive
 | ||
| 
 | ||
| DriveEnter:	LD	A,(CurDrive)
 | ||
| SetDrive:	LD	HL,NewDrive
 | ||
| 		ADD	A,'A'
 | ||
| 		LD	(HL),A
 | ||
| 		LD	(IY+PANEL.CURRPATH),0x00
 | ||
| 	WINDOWCLOSE
 | ||
| 		EX	(SP),IY
 | ||
| 		CALL	SetInvert
 | ||
| 		EX	(SP),IY
 | ||
| 		LD	HL,NewDrive
 | ||
| 		CALL	NewDIRECTORY
 | ||
| 		ld	a,0
 | ||
| AutoActivatePanel	EQU $-1
 | ||
| 		and	a
 | ||
| 		jr	nz,.old
 | ||
| 		bit 	7,(IY+0x00)
 | ||
| 		jp	z,.chPanel
 | ||
| 		push	ix
 | ||
| 		pop	hl
 | ||
| 		jr	.readDir
 | ||
| 
 | ||
| .chPanel:	pop	iy
 | ||
| 		jp	ChPanel
 | ||
| 
 | ||
| .old:		LD	HL,LeftPanel
 | ||
| 		BIT	7,(HL)
 | ||
| 		JR	NZ,.readDir
 | ||
| 		LD	HL,RightPanel
 | ||
| .readDir:	LD	DE,PANEL.CURRPATH
 | ||
| 		ADD	HL,DE
 | ||
| 	SPDSS DSSF.CHDIR
 | ||
| 		POP	IY
 | ||
| 		RET 
 | ||
| 
 | ||
| ResDriveInv:	LD	DE,0x4F80		; TODO
 | ||
| 		LD	A,(CurDrive)
 | ||
| 		JR	DriveInvert
 | ||
| 
 | ||
| SetDriveInv:	LD	DE,0x804F		; TODO
 | ||
| 		LD	A,(CurDrive)
 | ||
| DriveInvert:	LD	L,A
 | ||
| 		LD	H,0x00
 | ||
| 		ADD	HL,HL
 | ||
| 		ADD	HL,HL
 | ||
| 		ADD	HL,HL
 | ||
| 		ADD	HL,HL
 | ||
| 		LD	BC,BegDrive
 | ||
| 		ADD	HL,BC
 | ||
| 		PUSH	HL
 | ||
| 		POP	IX
 | ||
| 		LD	L,(IX + FORMTABL.XMINL)
 | ||
| 		LD	H,(IX + FORMTABL.XMINH)
 | ||
| 		LD	C,(IX + FORMTABL.YMINL)
 | ||
| 		LD	B,(IX + FORMTABL.YMINH)
 | ||
| 		LD	A,(IX + FORMTABL.XMAXL)
 | ||
| 		SUB	(IX + FORMTABL.XMINL)
 | ||
| 		EX	AF,AF'
 | ||
| 		LD	A,(IX + FORMTABL.YMAXL)
 | ||
| 		SUB	(IX + FORMTABL.YMINL)
 | ||
| 		LD	IXH,A
 | ||
| 		EX	AF,AF'
 | ||
| 		SRL	A
 | ||
| 		LD	IXL,A
 | ||
| 		JP	InvertRectan
 | ||
| 
 | ||
| CurDrive:	DEFB	0x00
 | ||
| Drive:		DEFB	" ",0
 | ||
| 
 | ||
| 	IF PLUGS_ENABLE
 | ||
| GetPlugins:	LD HL,WorkBuffer + 0x300	; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD><EFBFBD> ⥪<>饣<EFBFBD> <20><><EFBFBD><EFBFBD>
 | ||
| 	SPDSS DSSF.CURDIR
 | ||
| 		LD HL,StackTree
 | ||
| 		LD (.CURRNAME),HL
 | ||
| 		LD HL,FLXDir			; <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | ||
| 	SPDSS DSSF.CHDIR
 | ||
| 		LD HL,FLXExt
 | ||
| 		LD DE,WorkBuffer + 0x200
 | ||
| 		PUSH DE
 | ||
| 	SPDSS DSSF.F_FIRST,0,	DIR.M_Archive + \
 | ||
| 				DIR.M_System + \
 | ||
| 				DIR.M_Hidden + \
 | ||
| 				DIR.M_ReadOnly
 | ||
| 		POP HL
 | ||
| 		RET C
 | ||
| .L1		CALL .ADDFILENAME
 | ||
| 		LD DE,WorkBuffer + 0x200
 | ||
| 		PUSH DE
 | ||
| 	SPDSS DSSF.F_NEXT
 | ||
| 		POP HL
 | ||
| 		JR NC,.L1
 | ||
| 		LD HL,(.CURRNAME)
 | ||
| 		LD DE,StackTree
 | ||
| 		AND A
 | ||
| 		SBC HL,DE
 | ||
| 		LD A,L
 | ||
| 		SRL H
 | ||
| 		RRA
 | ||
| 		SRL H
 | ||
| 		RRA
 | ||
| 		SRL H
 | ||
| 		RRA				; A-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢮ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | ||
| 		LD HL,StackTree
 | ||
| 		LD DE,WorkBuffer + 0x200
 | ||
| 		EXX
 | ||
| 		LD HL,.ADR00
 | ||
| 		LD BC,7
 | ||
| 		EXX
 | ||
| ; 㫮<><E3ABAE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> ⥪<><E2A5AA><EFBFBD>
 | ||
| .L2		PUSH DE
 | ||
| 		EXX
 | ||
| 		POP DE
 | ||
| 		LD (HL),E
 | ||
| 		INC HL
 | ||
| 		LD (HL),D
 | ||
| 		ADD HL,BC
 | ||
| 		EXX
 | ||
| 		LD BC,8
 | ||
| 		LDIR
 | ||
| 		EX DE,HL
 | ||
| 		LD (HL),B
 | ||
| 		INC HL
 | ||
| 		EX DE,HL
 | ||
| 		DEC A
 | ||
| 		JR NZ,.L2
 | ||
| ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>᪠ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | ||
| 	MAKEWINDOW WINSUBOBJ.STORE
 | ||
| 	W_MAIN 300,20,108,166
 | ||
| 	W_FILL 4,2,100,10,COLORI.BLUE
 | ||
| 	W_TEXT 40,3,COLORI.WHITE,"Plugins"
 | ||
| 	W_ADRTEXT 16,14,COLORP.HIGHGRAY,0
 | ||
| .ADR00		EQU $-2
 | ||
| 	W_ADRTEXT 16,28,COLORP.HIGHGRAY,0
 | ||
| .ADR01		EQU $-2
 | ||
| 	W_ADRTEXT 16,42,COLORP.HIGHGRAY,0
 | ||
| .ADR02		EQU $-2
 | ||
| 	W_ADRTEXT 16,56,COLORP.HIGHGRAY,0
 | ||
| .ADR03		EQU $-2
 | ||
| 	W_ADRTEXT 16,70,COLORP.HIGHGRAY,0
 | ||
| .ADR04		EQU $-2
 | ||
| 	W_ADRTEXT 16,84,COLORP.HIGHGRAY,0
 | ||
| .ADR05		EQU $-2
 | ||
| 	W_ADRTEXT 16,98,COLORP.HIGHGRAY,0
 | ||
| .ADR06		EQU $-2
 | ||
| 	W_ADRTEXT 16,112,COLORP.HIGHGRAY,0
 | ||
| .ADR07		EQU $-2
 | ||
| 	W_ADRTEXT 16,126,COLORP.HIGHGRAY,0
 | ||
| .ADR08		EQU $-2
 | ||
| 	W_ADRTEXT 16,140,COLORP.HIGHGRAY,0
 | ||
| .ADR09		EQU $-2
 | ||
| 	W_ADRTEXT 16,154,COLORP.HIGHGRAY,0
 | ||
| .ADR10		EQU $-2
 | ||
| 	W_BUTTON 30,176,72,14
 | ||
| 	W_TEXT 50,179,COLORP.HIGHGRAY,"Cancel"
 | ||
| 	W_END
 | ||
| .Loop		LD	IX,PluginsTab
 | ||
| 		CALL	TestCoords
 | ||
| 	SPDSS DSSF.SCANKEY
 | ||
| 		JR	Z,.Loop
 | ||
| 		LD	A,B
 | ||
| ;		AND	0x3F
 | ||
| ;		JR	Z,SetupLoop0
 | ||
| 		BIT	4,B
 | ||
| 		JR	NZ,.Loop
 | ||
| ;		BIT	5,B
 | ||
| ;		JR	Z,SetupLoop
 | ||
| ;		LD	HL,SetupLoop
 | ||
| ;		PUSH	HL
 | ||
| ;		LD	A,D
 | ||
| ;		AND	0x7F
 | ||
| ;		CP SC.R
 | ||
| ;		JP	Z,InputRED
 | ||
| ;		CP SC.G
 | ||
| ;		JP	Z,InputGREEN
 | ||
| ;		CP SC.B
 | ||
| ;		JP	Z,InputBLUE
 | ||
| 		RET
 | ||
| 
 | ||
| .ADDFILENAME	LD DE,FFIRST.Name
 | ||
| 		ADD HL,DE
 | ||
| 		LD DE,0
 | ||
| .CURRNAME	EQU $-2
 | ||
| 		LD BC,8
 | ||
| 		LDIR
 | ||
| 		LD (.CURRNAME),DE
 | ||
| 		RET
 | ||
| 
 | ||
| SelectPlugin
 | ||
| .NUM00
 | ||
| .NUM01
 | ||
| .NUM02
 | ||
| .NUM03
 | ||
| .NUM04
 | ||
| .NUM05
 | ||
| .NUM06
 | ||
| .NUM07
 | ||
| .NUM08
 | ||
| .NUM09
 | ||
| .NUM10
 | ||
| .CANCEL
 | ||
| 		JR $
 | ||
| 
 | ||
| FLXDir:		DZ "C:\\FN\\FLX"
 | ||
| FLXExt:		DZ "*.FLX"
 | ||
| 	ENDIF
 |