flex_nav/rez3_fnnext.a80

220 lines
2.4 KiB
Plaintext

; LAST UPDATE: 11.03.2025 savelij
;[]==========================================================[]
InitExtention: ;[ ] 07/10/23
; LD (InitExt.path),HL
; EX HL,DE
;
LD HL,.ExtName1
LD DE,fn_ext
CALL InitExt
LD HL,.ExtName2
LD DE,fnview_ext
CALL InitExt
LD HL,.ExtName3
LD DE,fnedit_ext
CALL InitExt
RET
.ExtName1: DZ FILENAME.FN_EXT
.ExtName2: DZ FILENAME.FNVIEW_EXT
.ExtName3: DZ FILENAME.FNEDIT_EXT
.PathEnd: DW 0 ; not used
;[]----------------------------------------------------------[]
InitExt: LD (.EXTdata),DE
;[ ] 07/10/23
; .path+1: LD DE,0
; CALL CopyString
; LD HL,FlexDIRECTORY
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,(ExtHandle)
PUSH DE
SPDSS DSSF.CLOSE
POP BC
LD HL,WorkBuffer
LD DE,0x0000
.EXTdata EQU $-2
EXX
LD BC,0x03FE
EXX
.loop: CALL InitExtLine
JR NC,.loop
RET
ExtHandle: DEFB 0x00
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,0x04
.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 0x20
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 0x20
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 0x20
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