flex_nav/rez2_fnerror.a80
savelij13 881739653b CDplayer.flx 1.1:
- плагин доделан, описание/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.
2025-07-25 16:01:19 +03:00

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