flex_nav/rez3_fn_extensions.a80
savelij13 8f458146bc - для ошибок у которых нет текста описания теперь выдает всегда
текст ошибки "Unknown Error".
- исправлена ошибка приводящая к вылету при копировании нескольких файлов
  на уже существующие и выборе отмены от продолжения копирования.
2026-01-22 17:36:03 +03:00

211 lines
2.8 KiB
Plaintext

; LAST UPDATE: 18.01.2026 savelij
;[]==========================================================[]
InitExtention: LD HL,INIFILES.ExtName1
LD DE,REZ3_BUFFERS.fn_ext
CALL InitExt
LD HL,INIFILES.ExtName2
LD DE,REZ3_BUFFERS.fnview_ext
CALL InitExt
LD HL,INIFILES.ExtName3
LD DE,REZ3_BUFFERS.fnedit_ext
;[]----------------------------------------------------------[]
InitExt: LD (.EXTdata),DE
SPDSS DSSF.OPEN,,1
RET C
LD (.ExtHandle),A
LD HL,WorkBuffer
LD DE,WorkBuffer_Size
SPDSS DSSF.READ
RET C
OR A
RET P
LD A,0
.ExtHandle EQU $-1
PUSH DE
SPDSS DSSF.CLOSE
POP BC
LD HL,WorkBuffer ; ¢å®¤­®© ¡ãä¥à
LD DE,0x0000 ; ¡ãä¥à à á¯ ª®¢ ­­®£® ä ©«  à áè¨à¥­¨©
.EXTdata EQU $-2
EXX
LD BC,EXT_BUF_SIZE - 2 ; à §¬¥à ¢ë室­®£® ¡ãä¥à 
EXX
.loop: CALL InitExtLine ; à á¯ ª®¢ª  ®¤­®£® à áè¨à¥­¨ï
JR NC,.loop ; à á¯ ª®¢ª  á«¥¤ãî饣® à áè¨à¥­¨ï ¥á«¨ ­¥ ª®­ç¨«¨áì
RET
; à á¯ ª®¢ª  ä ©«  à áè¨à¥­¨© (®¤­® à áè¨à¥­¨¥ §  ¢ë§®¢)
InitExtLine: LD (.InExtSv),DE
SUB A
LD (DE),A
INC DE
EXX
DEC BC
LD A,B
OR C
SCF
EXX
RET Z
SUB A
LD (DE),A
INC DE
EXX
DEC BC
LD A,B
OR C
SCF
EXX
RET Z
DEC HL
INC BC
LD IXL,3 + 1 ; à §¬¥à à áè¨à¥­¨ï 3 + 1 ¡ ©â à §¤¥«¨â¥«ï ":"
; ª®¯¨à®¢ ­¨¥ à áè¨à¥­¨ï ä ©« 
.L1: LD A,B
OR C
SCF
RET Z ; ª®­â஫ì à §¬¥à  ¢å®¤­®£® ä ©« 
EXX
LD A,B
OR C
SCF
EXX
RET Z ; ª®­â஫ì à §¬¥à  ¢ë室­®£® ¡ãä¥à 
INC HL
DEC BC
LD A,(HL)
CP ' '
JR C,.L4
CP '`'
JR Z,.L4
CP ':'
JR Z,.L6
CP '*'
JR NZ,.L3
.L2: LD A,'?'
LD (DE),A
INC DE
DEC IXL
LD A,IXL
DEC A
JR Z,.L1
EXX
DEC BC
LD A,B
OR C
SCF
EXX
RET Z ; ª®­â஫ì à §¬¥à  ¢ë室­®£® ¡ãä¥à 
JR .L2
.L3: LD (DE),A
INC DE
EXX
DEC BC
EXX
DEC IXL
JR NZ,.L1
; ª®¯¨à®¢ ­¨¥ áâப¨ § ¯ã᪠ á ¯ à ¬¥âà ¬¨
.L4: LD DE,(.InExtSv)
.L5: LD A,B
OR C
SCF
RET Z
LD A,(HL)
INC HL
DEC BC
CP 0x0D
JR NZ,.L5
LD A,B
OR C
SCF
RET Z
INC HL
DEC BC
LD A,B
OR C
RET NZ
SCF
RET
.L6: DEC IXL
JR Z,.L8
.L7: EXX
LD A,B
OR C
SCF
EXX
RET Z
INC DE
EXX
DEC BC
EXX
DEC IXL
JR NZ,.L7
.L8: LD A,B
OR C
SCF
RET Z
EXX
LD A,B
OR C
SCF
EXX
RET Z
INC HL
DEC BC
LD A,(HL)
CP 0x0D
JR Z,.L4
CP 0x09
JR Z,.L8
CP ' '
JR Z,.L8
JR C,.L4
LD (DE),A
INC DE
EXX
DEC BC
EXX
.L9: LD A,B
OR C
SCF
RET Z
EXX
LD A,B
OR C
SCF
EXX
RET Z
INC HL
DEC BC
LD A,(HL)
CP 0x0D
JR Z,.L10
CP ' '
JR C,.L4
LD (DE),A
INC DE
EXX
DEC BC
EXX
JR .L9
.L10: SUB A
LD (DE),A
INC DE
PUSH HL
LD HL,0x0000
.InExtSv: EQU $-2
LD (HL),E
INC HL
LD (HL),D
POP HL
JR .L5
INIFILES
.ExtName1: DZ FILENAME.FN_EXT
.ExtName2: DZ FILENAME.FNVIEW_EXT
.ExtName3: DZ FILENAME.FNEDIT_EXT