- плагин доделан, описание/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.
		
			
				
	
	
		
			315 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			315 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
 | ||
| ; LAST UPDATE: 16.07.2025 savelij
 | ||
| 
 | ||
| FECSign:	DB "FEC"
 | ||
| HomeKeyFlag:	DB	0
 | ||
| IndentFlag:	DB	0
 | ||
| BracketsFlag:	DB	0
 | ||
| ExitDlgFlag:	DB	0
 | ||
| 
 | ||
| ;[]==========================================================[]
 | ||
| ReadEditorIni:	ld	a,0
 | ||
| .iniReaded	EQU $-1
 | ||
| 		and	a
 | ||
| 		ret	nz
 | ||
| 		inc	a
 | ||
| 		ld	(.iniReaded),a
 | ||
| 		PUSH	IY
 | ||
| 	SPDSS DSSF.CURDISK
 | ||
| 		POP	IY
 | ||
| 		LD	HL,WorkBuffer
 | ||
| 		ADD	A,'A'
 | ||
| 		LD	(HL),A
 | ||
| 		INC	HL
 | ||
| 		LD	(HL),':'
 | ||
| 		INC	HL
 | ||
| 		PUSH	IY
 | ||
| 	SPDSS DSSF.CURDIR
 | ||
| 		POP	IY
 | ||
| 	GETPORT WINSP.CPU1
 | ||
| 		PUSH	AF
 | ||
| 		LD	A,(JUMPS.FNREZ2)
 | ||
| 	SETPORT WINSP.CPU1,,0
 | ||
| 		LD	HL,ADDR.FlexDIRECTORY
 | ||
| 		PUSH	IY
 | ||
| 	SPDSS DSSF.CHDIR
 | ||
| 		POP	IY
 | ||
| 		EX	AF,AF'
 | ||
| 		POP	AF
 | ||
| 	SETPORT WINSP.CPU1,,0
 | ||
| 		EX	AF,AF'
 | ||
| 		JP	C,.exit
 | ||
| 		LD	HL,SettingsFileName
 | ||
| 		PUSH	IY
 | ||
| 	SPDSS DSSF.OPEN,,1
 | ||
| 		pop	iy
 | ||
|     		jr	c,.exit
 | ||
|     		ld	(.file),a	
 | ||
|     		ld	hl,LineBuffer
 | ||
| 		push	hl
 | ||
| 		ld	de,LineBuffer+1
 | ||
| 		ld	(hl),0
 | ||
| 		ld	bc,7
 | ||
| 		ldir
 | ||
| 		pop	hl
 | ||
|     		ld	de,7
 | ||
| 		PUSH	IY
 | ||
| 	SPDSS DSSF.READ
 | ||
| 		pop	iy
 | ||
| 		jr	c,.close
 | ||
| 		ld	hl,(LineBuffer)
 | ||
| 		ld	de,'EF'
 | ||
| 		and	a
 | ||
| 		sbc	hl,de
 | ||
| 		jr	nz,.close
 | ||
| 		ld	hl,LineBuffer+2
 | ||
| 		ld	a,(hl)
 | ||
| 		cp	'C'
 | ||
| 		jr	nz,.close
 | ||
| 		inc	hl
 | ||
| 		ld	a,(hl)
 | ||
| 		ld	(THomeString.param),a
 | ||
| 		inc	hl
 | ||
| 		ld	a,(hl)
 | ||
| 		ld	(CalcStartTabs.param),a
 | ||
| 		inc	hl
 | ||
| 		ld	a,(hl)
 | ||
| 		ld	(AutoBrackets),a
 | ||
| 		inc	hl
 | ||
| 		ld	a,(hl)
 | ||
| 		ld	(QuitAsk.param),a
 | ||
| .close:		ld	a,0
 | ||
| .file		EQU $-1
 | ||
| 		PUSH	IY
 | ||
| 	SPDSS DSSF.CLOSE
 | ||
| 		pop	IY
 | ||
| .exit:		LD	HL,WorkBuffer
 | ||
| 		PUSH	IY
 | ||
| 	SPDSS DSSF.CHDIR
 | ||
| 		POP	IY
 | ||
| 		ret
 | ||
| 
 | ||
| ;[]==========================================================[]
 | ||
| EditorSetup:	CALL	PutString
 | ||
| 		CALL	FEResCursor
 | ||
| 		LD	A,(QuitAsk.param)
 | ||
| 		ld	(ExitDlgFlag),a
 | ||
| 		CALL	ParamToSymbol
 | ||
| 		LD	(ExitDlgFlg),A
 | ||
| 		LD	A,(THomeString.param)
 | ||
| 		ld	(HomeKeyFlag),a
 | ||
| 		CALL	ParamToSymbol
 | ||
| 		LD	(HomeKeyFlg),A
 | ||
| 		LD	A,(CalcStartTabs.param)
 | ||
| 		ld	(IndentFlag),a
 | ||
| 		CALL	ParamToSymbol
 | ||
| 		LD	(IndentFlg),A
 | ||
| 		LD	A,(AutoBrackets)
 | ||
| 		ld	(BracketsFlag),a
 | ||
| 		CALL	ParamToSymbol
 | ||
| 		LD	(BracketsFlg),A
 | ||
| 	MAKEWINDOW WINSUBOBJ.STORE
 | ||
| 	W_MAIN 200,80,240,110
 | ||
| 	W_FILL 4,2,232,10,COLORI.BLACK
 | ||
| 	W_TEXT 84,3,COLORI.WHITE,"Editor settings"
 | ||
| 	W_BORDER 16,19,20,11
 | ||
| 	W_FILL 18,20,16,9,COLORI.WHITE
 | ||
| 	W_TEXT 20,21,COLORP.WHITE,"\xFF"
 | ||
| ExitDlgFlg:	EQU $ - 2
 | ||
| 	W_TEXT 40,22,COLORP.HIGHGRAY,"Confirmation of closing the editor"
 | ||
| 	W_BORDER 16,35,20,11
 | ||
| 	W_FILL 18,36,16,9,COLORI.WHITE
 | ||
| 	W_TEXT 20,37,COLORP.WHITE,"\xFF"
 | ||
| HomeKeyFlg:	EQU $-2
 | ||
| 	W_TEXT 40,38,COLORP.HIGHGRAY,"find first symbol on Home key"
 | ||
| 	W_BORDER 16,51,20,11
 | ||
| 	W_FILL 18,52,16,9,COLORI.WHITE
 | ||
| 	W_TEXT 20,53,COLORP.WHITE,"\xFF"
 | ||
| IndentFlg:	EQU $-2
 | ||
| 	W_TEXT 40,54,COLORP.HIGHGRAY,"auto Indent"
 | ||
| 	W_BORDER 16,67,20,11
 | ||
| 	W_FILL 18,68,16,9,COLORI.WHITE
 | ||
| 	W_TEXT 20,69,COLORP.WHITE,"\xFF"
 | ||
| BracketsFlg:	EQU $-2
 | ||
| 	W_TEXT 40,70,COLORP.HIGHGRAY,"auto Brackets"
 | ||
| 	W_HORIZLINE 4,84,232
 | ||
| 	W_BUTTON 77,90,72,14
 | ||
| 	W_TEXT 96,93,COLORP.HIGHGRAY,"Cancel"
 | ||
| 	W_BUTTON 160,90,64,14
 | ||
| 	W_TEXT 188,93,COLORP.HIGHGRAY,"Ok"
 | ||
| 	W_END
 | ||
| 
 | ||
| FESetupLoop:	LD	IX,FESetupTab
 | ||
| 		CALL	JUMPS.TestCoords
 | ||
| 	SPDSS DSSF.SCANKEY
 | ||
| 		JR	Z,FESetupLoop
 | ||
| 		LD	A,E
 | ||
| 		RES	5,A
 | ||
| 		CP	0x1B
 | ||
| 		JP	Z,FESetupCancel
 | ||
| 		CP	0x0D
 | ||
| 		JP	Z,FESetupOkey
 | ||
| 		CP	'O'
 | ||
| 		JP	Z,FESetupOkey
 | ||
| 		ld	hl,FESetupLoop
 | ||
| 		push	hl
 | ||
| 		CP	'B'
 | ||
| 		JP	Z,SetupAutoBracketsInvert
 | ||
| 		CP	'C'
 | ||
| 		JP	Z,SetupConfirmDlgInvert
 | ||
| 		CP	'H'
 | ||
| 		JP	Z,SetupHomeKeyInvert
 | ||
| 		CP	'I'
 | ||
| 		JP	Z,SetupAutoIndentInvert
 | ||
|         	ret
 | ||
| 
 | ||
| ;A - parameter
 | ||
| ;Out - A = A == 0 ? " " : "v"
 | ||
| ParamToSymbol:	OR	A
 | ||
| 		LD	A,0xFE
 | ||
| 		RET	Z
 | ||
| 		INC	A
 | ||
| 		RET
 | ||
| 
 | ||
| CheckTxt:	DEFB	0x00,0x00
 | ||
| 
 | ||
| SetupConfirmDlgInvert:
 | ||
| 		LD	HL,CheckTxt
 | ||
| 		LD	A,(ExitDlgFlag)
 | ||
| 		XOR	0x01
 | ||
| 		LD	(ExitDlgFlag),A
 | ||
| 		call	ParamToSymbol
 | ||
| 		LD	(HL),A
 | ||
| 		LD	DE,0x00DC
 | ||
| 		LD	BC,0x0065
 | ||
| 		LD	A,0xF0
 | ||
| 		CALL	JUMPS.PrnTxtLnIFF
 | ||
| 		JP	JUMPS.ResFire
 | ||
| 
 | ||
| SetupHomeKeyInvert:
 | ||
| 		LD	HL,CheckTxt
 | ||
| 		LD	A,(HomeKeyFlag)
 | ||
| 		XOR	0x01
 | ||
| 		LD	(HomeKeyFlag),A
 | ||
| 		call	ParamToSymbol
 | ||
| 		LD	(HL),A
 | ||
| 		LD	DE,0x00DC
 | ||
| 		LD	BC,0x0075
 | ||
| 		LD	A,0xF0
 | ||
| 		CALL	JUMPS.PrnTxtLnIFF
 | ||
| 		JP	JUMPS.ResFire
 | ||
| 
 | ||
| SetupAutoIndentInvert:
 | ||
| 		LD	HL,CheckTxt
 | ||
| 		LD	A,(IndentFlag)
 | ||
| 		XOR	0x01
 | ||
| 		LD	(IndentFlag),A
 | ||
| 		call	ParamToSymbol
 | ||
| 		LD	(HL),A
 | ||
| 		LD	DE,0x00DC
 | ||
| 		LD	BC,0x0085
 | ||
| 		LD	A,0xF0
 | ||
| 		CALL	JUMPS.PrnTxtLnIFF
 | ||
| 		JP	JUMPS.ResFire
 | ||
| 
 | ||
| SetupAutoBracketsInvert:
 | ||
| 		LD	HL,CheckTxt
 | ||
| 		LD	A,(BracketsFlag)
 | ||
| 		XOR	0x01
 | ||
| 		LD	(BracketsFlag),A
 | ||
| 		call	ParamToSymbol
 | ||
| 		LD	(HL),A
 | ||
| 		LD	DE,0x00DC
 | ||
| 		LD	BC,0x0095
 | ||
| 		LD	A,0xF0
 | ||
| 		CALL	JUMPS.PrnTxtLnIFF
 | ||
| 		JP	JUMPS.ResFire
 | ||
| 
 | ||
| FESetupOkey:	ld	a,(ExitDlgFlag)
 | ||
| 		LD	(QuitAsk.param),a
 | ||
| 		LD	A,(HomeKeyFlag)
 | ||
| 		LD	(THomeString.param),A
 | ||
| 		ld	A,(IndentFlag)
 | ||
| 		LD	(CalcStartTabs.param),A
 | ||
| 		ld	a,(BracketsFlag)
 | ||
| 		LD	(AutoBrackets),a
 | ||
| 		PUSH	IY
 | ||
| 	SPDSS DSSF.CURDISK			;Write ini-file
 | ||
| 		LD	HL,WorkBuffer
 | ||
| 		ADD	A,'A'
 | ||
| 		LD	(HL),A
 | ||
| 		INC	HL
 | ||
| 		LD	(HL),':'
 | ||
| 		INC	HL
 | ||
| 	SPDSS DSSF.CURDIR
 | ||
| 	GETPORT WINSP.CPU1
 | ||
| 		PUSH	AF
 | ||
| 		LD	A,(JUMPS.FNREZ2)
 | ||
| 	SETPORT WINSP.CPU1,,0
 | ||
| 		LD	HL,ADDR.FlexDIRECTORY
 | ||
| 	SPDSS DSSF.CHDIR
 | ||
| 		EX	AF,AF'
 | ||
| 		POP	AF
 | ||
| 	SETPORT WINSP.CPU1,,0
 | ||
| 		EX	AF,AF'
 | ||
| 		JP	C,.exit
 | ||
| 		LD	HL,SettingsFileName
 | ||
| 	SPDSS DSSF.CREATE,,0x20
 | ||
| 		jr	c,.exit
 | ||
| 		ld	(.file),a	
 | ||
| 		jr	c,.close
 | ||
| 		ld	hl,FECSign
 | ||
| 		ld	de,7
 | ||
| 	SPDSS DSSF.WRITE
 | ||
| .close:		ld	a,0
 | ||
| .file		EQU $-1
 | ||
| 	SPDSS DSSF.CLOSE
 | ||
| .exit:		LD	HL,WorkBuffer
 | ||
| 	SPDSS DSSF.CHDIR
 | ||
| 		POP	IY
 | ||
| FESetupCancel:
 | ||
| 	WINDOWCLOSE
 | ||
| 		RET
 | ||
| 
 | ||
| ;[]==========================================================[]
 | ||
| ;<3B><>ଠ<EFBFBD>	⠡<><E2A0A1><EFBFBD><EFBFBD>
 | ||
| ;	+00  2	Xmin
 | ||
| ;	+02  2	Xmax
 | ||
| ;	+04  2	Ymin
 | ||
| ;	+06  2	Ymax
 | ||
| ;	+08  2	0 - <20><><EFBFBD><EFBFBD>⮩ <20><>'<27><><EFBFBD>
 | ||
| ;		<09><><EFBFBD> 0 -	<09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | ||
| ;		<09><><EFBFBD> 1 -	ࠡ<><E0A0A1><EFBFBD><EFBFBD>	<09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | ||
| ;		<09><><EFBFBD> 2 -	<09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1
 | ||
| ;		<09><><EFBFBD> 3 -	<09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | ||
| ;		<09><><EFBFBD> 4 -	<09>ணࠬ<E0AEA3><E0A0AC> <20><><EFBFBD><EFBFBD>᪠<EFBFBD><E1AAA0><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
 | ||
| ;			<09> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
 | ||
| ;		<09><><EFBFBD> 5 -	<09>ணࠬ<E0AEA3><E0A0AC> <20><><EFBFBD><EFBFBD>᪠<EFBFBD><E1AAA0><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
 | ||
| ;			<09><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>	<09><><EFBFBD><EFBFBD>
 | ||
| ;		<09><><EFBFBD> 6 -	<09>ணࠬ<E0AEA3><E0A0AC> <20><><EFBFBD><EFBFBD>᪠<EFBFBD><E1AAA0><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
 | ||
| ;			<09><> <20>ࠢ<EFBFBD><E0A0A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
 | ||
| ;		<09><><EFBFBD> 7 -	<09>맢<EFBFBD><EBA7A2><EFBFBD>	<09>㭪<EFBFBD><E3ADAA><EFBFBD>	<09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>।
 | ||
| ;			<09><><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
 | ||
| ;		<09><><EFBFBD> 8 -	<09>맢<EFBFBD><EBA7A2><EFBFBD>	<09>㭪<EFBFBD><E3ADAA><EFBFBD>	<09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>।
 | ||
| ;			<09><><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | ||
| ;		<09><><EFBFBD> 9 -	<09>맢<EFBFBD><EBA7A2><EFBFBD>	<09>㭪<EFBFBD><E3ADAA><EFBFBD>	<09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>।
 | ||
| ;			<09><><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20><> <20>ࠢ<EFBFBD><E0A0A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | ||
| ;		<09><><EFBFBD>15 -	<09><><EFBFBD> <20><>४<EFBFBD><E0A5AA><EFBFBD><EFBFBD>⥫<EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>
 | ||
| ;			㡨<><E3A1A8><EFBFBD><EFBFBD>)
 | ||
| ;	+0A  2	<09><><EFBFBD><EFBFBD><EFBFBD> <20><>ࠡ<EFBFBD><E0A0A1>稪<EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>⮬ <20><><EFBFBD><EFBFBD>
 | ||
| ;	+0C  2	<09><><EFBFBD><EFBFBD><EFBFBD> <20><>ࠡ<EFBFBD><E0A0A1>稪<EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>⮬ <20><><EFBFBD><EFBFBD> (<28><><EFBFBD>)
 | ||
| ;	+0E  2	<09><><EFBFBD><EFBFBD><EFBFBD> <20><>ࠡ<EFBFBD><E0A0A1>稪<EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>⮬ <20><><EFBFBD><EFBFBD> (<28>ࠢ)
 | ||
| 
 | ||
| ;[]==========================================================[]
 | ||
| FESetupTab:	DEFW 0x0114,0x015C,0x00AA,0x00B8,0x0021,0x0000,FESetupCancel,0x0000
 | ||
| 		DEFW 0x0168,0x01A8,0x00AA,0x00B8,0x0021,0x0000,FESetupOkey,0x0000
 | ||
| 		DEFW 0x00D8,0x0192,0x0063,0x006D,0x0000,0x0000,SetupConfirmDlgInvert,0x0000
 | ||
| 		DEFW 0x00D8,0x0186,0x0073,0x007D,0x0000,0x0000,SetupHomeKeyInvert,0x0000
 | ||
| 		DEFW 0x00D8,0x0129,0x0083,0x008D,0x0000,0x0000,SetupAutoIndentInvert,0x0000
 | ||
| 		DEFW 0x00D8,0x0132,0x0093,0x009D,0x0000,0x0000,SetupAutoBracketsInvert,0x0000
 | ||
| 		DEFW 0x0000,0x00C8,0x0000,0x0100,0x0020,0x0000,FESetupCancel,0x0000
 | ||
| 		DEFW 0x01B8,0x0280,0x0000,0x0100,0x0020,0x0000,FESetupCancel,0x0000
 | ||
| 		DEFW 0x0000,0x0280,0x0000,0x0050,0x0020,0x0000,FESetupCancel,0x0000
 | ||
| 		DEFW 0x0000,0x0280,0x00BC,0x0100,0x0020,0x0000,FESetupCancel,0x0000
 | ||
| 		DEFW 0x8000
 |