Estex-DSS/DSS/API/Find.asm

126 lines
2.1 KiB
NASM
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

////////////////////////////////////////////////////////////////////////
;‚室­ë¥ §­ ç¥­¨ï:
; C - #19
; HL - 㪠§ â¥«ì ­  ä ©«®¢ãî ᯥæ¨ä¨ª æ¨î
; DE - à ¡®ç¨© ¡ãä¥à 44 ¡ ©â , ¥á«¨ B=0, ¨­ ç¥ 256 ¡ ©â
; ;!!!!! ­  á ¬®¬ ¤¥«¥ ¯®ª  çâ® ¥á«¨ B=1, à ¡®ç¨© ¡ãä¥à 46 ¡ ©â
; A -  âਡãâë, ¨á¯®«ì§ã¥¬ë¥ ¯à¨ ¯®¨áª¥
; B = 0 - ¨¬ï ­ ©¤¥­­®£® ä ©«  ¢ ä®à¬ â¥ 11 ¡ ©â "FilenameExt"
; B = 1 - ¨¬ï ­ ©¤¥­­®£® ä ©«  ¢ ä®à¬ â¥ DOS "filename.ext",0
;‚ë室­ë¥ §­ ç¥­¨ï:
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
////////////////////////////////////////////////////////////////////////
F_FIRST:
; Current Dir [x] 15/10/23
; LD C,A
; PUSH HL
; PUSH DE
; PUSH BC
; CALL DIR_PATH_CHECK
; POP BC
; POP DE
; POP HL
; RET C
; LD A,C
; ;
LD (.TMP),A
LD (.DTABUF),DE
LD A,B
LD (.FNDMODE),A
PUSH HL
;!TEST Current Dir ;[x] 15/10/23
CALL DIR_PATH_CHECK
RET C
;
CALL LOADDIR
POP HL
CALL GETWORD
RET C
CALL MASK
RET C
LD A,(.TMP)
CALL SEARCH.Custom
RET C
LD HL,MASKARE
.DTABUF+1:
LD DE,0
LD BC,11 ;!HARDCODE
LDIR
.TMP+1: LD A,0
LD (DE),A
.FIND_S:
INC DE
LD BC,#0020
ADD IX,BC
LD (F_NEXT.CURHND),IX
LD HL,HANDBUF+12 ;!HARDCODE
LD BC,HANDBUF.SIZE-12 ;????? ¬¥âªã ¢¬¥áâ® ç¨á« ?
LDIR
LD A,(HANDBUF+11)
LD (DE),A
INC DE
LD HL,HANDBUF
.FNDMODE+1:
LD A,0
OR A
JR NZ,.FIND_M2
LD BC,11 ;!HARDCODE
LDIR
LD A,F_NEXT.NO_NEXT.NO
LD (F_NEXT.NO_NEXT),A
XOR A
RET
.FIND_M2:
CALL GetName
LD A,F_NEXT.NO_NEXT.NO
LD (F_NEXT.NO_NEXT),A
XOR A
RET
////////////////////////////////////////////////////////////////////////
;
;
////////////////////////////////////////////////////////////////////////
F_NEXT:
.NO_NEXT.YES EQU 0
.NO_NEXT.NO EQU #FF
.NO_NEXT+1:
LD A,0
OR A
LD A,DSS_Error.sys.INVALID_ACCESS
SCF
RET Z
LD (F_FIRST.DTABUF),DE
EX DE,HL
LD DE,MASKARE
LD BC,11 ;!HARDCODE
LDIR
XOR A ; F_NEXT.NO_NEXT.YES
LD (F_NEXT.NO_NEXT),A
LD A,(HL)
PUSH HL
CALL .NSEARCH
POP DE
RET C
JP F_FIRST.FIND_S
.NSEARCH:
EX AF,AF'
SET_PAGE_X DIRPAGE
;PUSH AF
EX AF,AF'
CPL
LD C,A
;TEST 9/11/23
; EXX
; LD DE,0
; EXX
;
.CURHND+2:
LD IX,0
LD A,XH
OR XL
JP Z,SEARCH.error_too_many_files
JP SEARCH.loop
;