- плагин доделан, описание/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.
		
			
				
	
	
		
			246 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			246 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
 | |
| ; LAST UPDATE: 18.07.2025 savelij
 | |
| 
 | |
| ; !FIXIT ¯¥à¥¤¥« âì ®¤¨ ª®¢ë¥ ®ª  á à §ë¬ â¥ªá⮬ ¤«ï ®è¨¡®ª ¯®¤  ¢â®¬ â¨ç¥áªãî ¯à®æ¥¤ãàã
 | |
| ;[]===========================================================[]
 | |
| DOSErrorR	;[x]	30/07/23 -bug ¢ë«¥â §  ¯à¥¤¥«ë â ¡«¨æë ®è¨¡®ª
 | |
| 		CP (.UNKerror - .ErrorWins) / 4
 | |
| 		JR C,.calc_addr
 | |
| 		CP 0xF0
 | |
| 		JR NC,.FNerror
 | |
| 		LD HL,.UNKerror
 | |
| 		JR .goto_addr
 | |
| 
 | |
| ; ¤«ï ¢ãâà¥¨å ®è¨¡®ª FN
 | |
| .FNerror	SUB FNinternal.PlugNotFound
 | |
| 		LD HL,.PlugNotFound
 | |
| 		JR .INT_ERR
 | |
| 
 | |
| .calc_addr:	LD HL,.ErrorWins
 | |
| .INT_ERR	ADD A,A		; *2
 | |
| 		ADD A,A		; *4
 | |
| 		ADD A,L
 | |
| 		LD L,A
 | |
| 		ADC A,H
 | |
| 		SUB L
 | |
| 		LD H,A
 | |
| .goto_addr	LD E,(HL)
 | |
| 		INC HL
 | |
| 		LD D,(HL)			;  ¤à¥á ⥪áâ  á • ¯®§¨æ¨¥©
 | |
| 		INC HL
 | |
| 		LD A,(DE)
 | |
| 		INC DE
 | |
| 		LD C,A				; X ¯®§¨æ¨ï ¬« ¤è¨© ¡ ©â
 | |
| 		LD A,(DE)
 | |
| 		INC DE
 | |
| 		LD (.WINTYPE),A
 | |
| 		RES 7,A
 | |
| 		LD B,A				; X ¯®§¨æ¨ï áâ à訩 ¡ ©â
 | |
| 		LD (.XPOSTXT),BC		; X ¯®§¨æ¨ï ¯¥ç â¨
 | |
| 		LD (.XPOSTXT2),BC		; X ¯®§¨æ¨ï ¯¥ç â¨
 | |
| 		LD (.ADRTXT),DE			;  ¤à¥á ⥪áâ 
 | |
| 		LD (.ADRTXT2),DE		;  ¤à¥á ⥪áâ 
 | |
| 		LD A,(HL)
 | |
| 		INC HL
 | |
| 		LD H,(HL)
 | |
| 		LD L,A				;  ¤à¥á ªã¤  ¯¥à¥å®¤¨âì ¯®á«¥ ®ª 
 | |
| 		OR H
 | |
| 		RET Z				; ¥á«¨  ¤à¥á ¯¥à¥å®¤  0, ¢ë室¨¬
 | |
| 		LD (.ADRJUMP),HL
 | |
| 		LD (.ADRJUMP2),HL
 | |
| 		CALL SetMouse
 | |
| 		LD A,0
 | |
| .WINTYPE	EQU $-1
 | |
| 		BIT 7,A
 | |
| 		JR NZ,.TYPE2
 | |
| ; ®ª® á ⥪á⮬ ®è¨¡ª¨
 | |
| 	MAKEWINDOW WINSUBOBJ.STORE
 | |
| 	W_MAIN 224,88,192,48
 | |
| 	W_FILL 4,2,184,10,COLORI.RED
 | |
| 	W_TEXT 86,3,COLORI.WHITE + COLORP.RED,"Error"
 | |
| 	W_ADRTEXT 0,18,COLORP.HIGHGRAY,0
 | |
| .XPOSTXT	EQU $-7		; ¯®§¨æ¨ï ¯¥ç â¨
 | |
| .ADRTXT		EQU $-2		;  ¤à¥á ⥪áâ 
 | |
| 	W_BUTTON 60,30,72,14
 | |
| 	W_TEXT 88,33,COLORP.HIGHGRAY,"Ok"
 | |
| 	W_END
 | |
| 		JP 0
 | |
| .ADRJUMP	EQU $-2
 | |
| 
 | |
| ; ®ª® á ⥪á⮬ ®è¨¡ª¨ ¨ ¢¢®¤®¬ ¡ãª¢ë ¤¨áª 
 | |
| .TYPE2
 | |
| 	MAKEWINDOW WINSUBOBJ.STORE
 | |
| 	W_MAIN 224,88,192,48
 | |
| 	W_FILL 4,2,184,10,COLORI.RED
 | |
| 	W_TEXT 86,3,COLORI.WHITE + COLORP.RED,"Error"
 | |
| 	W_ADRTEXT 0,18,COLORP.HIGHGRAY,0
 | |
| .XPOSTXT2	EQU $-7		; ¯®§¨æ¨ï ¯¥ç â¨
 | |
| .ADRTXT2	EQU $-2		;  ¤à¥á ⥪áâ 
 | |
| 	W_BUTTON 60,30,72,14
 | |
| 	W_TEXT 88,33,COLORP.HIGHGRAY,"Ok"
 | |
| 	W_BORDER 120,15,16,12
 | |
| 	W_FILL 122,16,12,10,COLORI.WHITE
 | |
| 	W_END
 | |
| 		JP 0
 | |
| .ADRJUMP2	EQU $-2
 | |
| 
 | |
| ;		    ¤à¥á ⥪áâ 		 ¤à¥á ªã¤  ¯¥à¥å®¤¨âì
 | |
| .ErrorWins	DW 0,			0				; 00
 | |
| 		DW 0,			0				; 01
 | |
| 		DW TXTERR.InvDrive,	InputDrive	;InvDrive	; 02
 | |
| 		DW TXTERR.FileNFound,	ErrorLp		;FileNFound	; 03
 | |
| 		DW TXTERR.InvPath,	ErrorLp0	;InvPath	; 04
 | |
| 		DW 0,			0				; 05
 | |
| 		DW TXTERR.FileNFound,	ErrorLp		;FileNFound	; 06
 | |
| 		DW TXTERR.FILEexists,	ErrorLp		;FILEexists	; 07
 | |
| 		DW 0,			0				; 08
 | |
| 		DW TXTERR.ROOToverflow,	ErrorLp		;ROOToverflow	; 09
 | |
| 		DW TXTERR.NoDiskSpace,	ErrorLp		;NoDiskSpace	; 0A
 | |
| 		DW TXTERR.DIRnotEmpty,	ErrorLp		;DIRnotEmpty	; 0B
 | |
| 		DW 0,			0				; 0C
 | |
| 		DW TXTERR.InvMedia,	InputDrive	;InvMedia	; 0D
 | |
| 		DW 0,			0				; 0E
 | |
| 		DW TXTERR.DIRexists,	ErrorLp		;DIRexists	; 0F
 | |
| 		DW TXTERR.InvName,	ErrorLp		;InvName	; 10
 | |
| 		DW TXTERR.InvEXEfile,	ErrorLp		;InvEXEfile	; 11
 | |
| 		DW TXTERR.InvEXEver,	ErrorLp		;InvEXEver	; 12
 | |
| 		DW 0,			0				; 13
 | |
| 		DW TXTERR.NotReady,	InputDrive	;NotReady	; 14
 | |
| 		DW 0,			0				; 15
 | |
| 		DW 0,			0				; 16
 | |
| 		DW 0,			0				; 17
 | |
| 		DW TXTERR.WriteProtect,	ErrorLp		;WriteProtect	; 18	; [ ] 26/06/2024
 | |
| 		DW 0,			0				; 19
 | |
| 		DW 0,			0				; 1A
 | |
| 		DW 0,			0				; 1B
 | |
| 		DW TXTERR.NotReady,	InputDrive	;NotReady	; 1C
 | |
| 		DW 0,			0				; 1D
 | |
| 		DW TXTERR.NoMemory,	ErrorLp		;NoMemory	; 1E
 | |
| 		DW 0,			0				; 1F
 | |
| 		DW 0,			0				; 20
 | |
| 		DW 0,			0				; 21
 | |
| 		DW 0,			0				; 22
 | |
| 		DW TXTERR.ToManyFilesDir,ErrorLp	;ToManyFilesDir	; 23
 | |
| ; always last in the table:
 | |
| .UNKerror:	DW TXTERR.UnknownError,	ErrorLp		;UnknownError	; if no ERROR in this table then will show this message
 | |
| ; ¤ «¥¥ ¢ãâ२¥ ®è¨¡ª¨ FN
 | |
| .PlugNotFound	DW TXTERR.PlugNotFound,	ErrorLp
 | |
| 
 | |
| ;--------------------------------------------------------------
 | |
| SETERRTEXT	MACRO X,TEXT
 | |
| 		DW X			; X ¯®§¨æ¨ï ¯¥ç â¨
 | |
| 		DB TEXT,0		; áâப  ¡¥§ 0 ¢ ª®æ¥
 | |
| 		ENDM
 | |
| 
 | |
| TXTERR
 | |
| .PlugNotFound	SETERRTEXT 56,"Plugin not found"
 | |
| .InvDrive	SETERRTEXT 24 | 0x8000,"Invalid drive letter:"
 | |
| .FileNFound	SETERRTEXT 60,"File not found"
 | |
| .InvPath	SETERRTEXT 70,"Invalid path"
 | |
| .FILEexists	SETERRTEXT 72,"File exists"
 | |
| .ROOToverflow	SETERRTEXT 64,"ROOT overflow"
 | |
| .NoDiskSpace	SETERRTEXT 62,"No disk space"
 | |
| .DIRnotEmpty	SETERRTEXT 40,"Directory is not empty"
 | |
| .InvMedia	SETERRTEXT 46 | 0x8000,"Invalid media:"
 | |
| .DIRexists	SETERRTEXT 56,"Directory exists"
 | |
| .InvName	SETERRTEXT 66,"Invalid name"
 | |
| .InvEXEfile	SETERRTEXT 60,"Invalid EXE file"
 | |
| .InvEXEver	SETERRTEXT 40,"Unsupport EXE version"
 | |
| .NotReady	SETERRTEXT 36 | 0x8000,"Drive not ready:"
 | |
| .WriteProtect	SETERRTEXT 37,"Drive is write protected"
 | |
| .NoMemory	SETERRTEXT 52,"No memory space"
 | |
| .ToManyFilesDir	SETERRTEXT 30,"Too many directory entries"
 | |
| .UnknownError	SETERRTEXT 60,"Unknown Error"
 | |
| 
 | |
| InputDrive	PUSH	IY
 | |
| 	SPDSS DSSF.CURDISK
 | |
| 		POP	IY
 | |
| 		ADD	A,'A'
 | |
| 		LD	(CurDrv),A
 | |
| 		LD	IX,DriveStr
 | |
| 		LD	HL,ErrorTab1
 | |
| 		CALL	InputLine
 | |
| 	WINDOWCLOSE
 | |
| 		CALL	SetClock
 | |
| 		LD	A,(CurDrv)
 | |
| 		RES	5,A
 | |
| 		SUB	'A'
 | |
| 		PUSH	IY
 | |
| 	SPDSS DSSF.CHDISK
 | |
| 		POP	IY
 | |
| 		JP	C,DOSErrorR
 | |
| 		LD	HL,BegDIR
 | |
| 		PUSH	IY
 | |
| 	SPDSS DSSF.CHDIR
 | |
| 		POP	IY
 | |
| 		JP	C,DOSErrorR
 | |
| 		CALL	SetMouse
 | |
| 		LD	A,0x01
 | |
| 		RET 
 | |
| 
 | |
| ErrorTab1	DEFW 284,356,118,132,%0000000000000001,%0000000000000000,InputLine.InpLnExtN,0
 | |
| 		DEFW 0x8000
 | |
| 
 | |
| DriveStr	DEFB	0x01,0x00,0x00,0x00
 | |
| 		DEFB	0x01
 | |
| 		DEFW	0x015C,0x006A
 | |
| 		DEFW	0x000A
 | |
| 		DEFB	0xF0
 | |
| CurDrv		DUPL	0x02,0x00
 | |
| 
 | |
| ;--------------------------------------------------------------
 | |
| ErrorLp0	LD	IX,ErrorTab2
 | |
| 		CALL	TestCoords
 | |
| 	SPDSS DSSF.SCANKEY
 | |
| 		JR	Z,ErrorLp0
 | |
| 		LD	A,B
 | |
| 		OR	A
 | |
| 		JR	NZ,ErrorLp0
 | |
| 		LD	A,E
 | |
| 		CP	0x1B
 | |
| 		JR	Z,ErrorExt0
 | |
| 		CP	0x0D
 | |
| 		JR	Z,ErrorExt0
 | |
| 		RES	5,A
 | |
| 		CP	"O"
 | |
| 		JR	NZ,ErrorLp0
 | |
| ErrorExt0
 | |
| 	WINDOWCLOSE
 | |
| 		CALL	SetClock
 | |
| 		LD	HL,BegDIR
 | |
| 		PUSH	IY
 | |
| 	SPDSS DSSF.CHDIR
 | |
| 		POP	IY
 | |
| 		JP	C,DOSErrorR
 | |
| 		CALL	SetMouse
 | |
| 		LD	A,0x01
 | |
| 		RET 
 | |
| 
 | |
| ErrorTab2	DEFW 284,356,118,132,%0000000000100001,%0000000000000000,ErrorExt0,0
 | |
| 		DEFW 0x8000
 | |
| 
 | |
| ;--------------------------------------------------------------
 | |
| 
 | |
| ErrorLp		LD	IX,ErrorTab3
 | |
| 		CALL	TestCoords
 | |
| 	SPDSS DSSF.SCANKEY
 | |
| 		JR	Z,ErrorLp
 | |
| 		LD	A,B
 | |
| 		OR	A
 | |
| 		JR	NZ,ErrorLp
 | |
| 		LD	A,E
 | |
| 		CP	0x1B
 | |
| 		JR	Z,ErrorExt
 | |
| 		CP	0x0D
 | |
| 		JR	Z,ErrorExt
 | |
| 		RES	5,A
 | |
| 		CP	'O'
 | |
| 		JR	NZ,ErrorLp
 | |
| ErrorExt
 | |
| 	WINDOWCLOSE
 | |
| 		SUB	A
 | |
| 		RET 
 | |
| 
 | |
| ErrorTab3	DEFW 284,356,118,132,%0000000000100001,%0000000000000000,ErrorExt,0
 | |
| 		DEFW 0x8000
 |