home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / l / l040 / 13.ddi / RTLDOS.ZIP / FIND.ASM < prev    next >
Encoding:
Assembly Source File  |  1992-10-28  |  1.5 KB  |  122 lines

  1.  
  2. ; *******************************************************
  3. ; *                            *
  4. ; *    Turbo Pascal Runtime Library Version 5.5    *
  5. ; *    Directory Search Routines            *
  6. ; *                            *
  7. ; *    Copyright (C) 1988,89 Borland International    *
  8. ; *                            *
  9. ; *******************************************************
  10.  
  11.     TITLE    FIND
  12.  
  13.     LOCALS    @@
  14.  
  15. DATA    SEGMENT    WORD PUBLIC
  16.  
  17.     EXTRN    DosError:WORD
  18.  
  19. DATA    ENDS
  20.  
  21. CODE    SEGMENT    BYTE PUBLIC
  22.  
  23.     ASSUME    CS:CODE,DS:DATA
  24.  
  25.     PUBLIC    FindFirst
  26.  
  27. FindFirst    PROC    FAR
  28.  
  29. PathP        EQU    (DWORD PTR [BP+12])
  30. Attr        EQU    (WORD PTR [BP+10])
  31. SearchP        EQU    (DWORD PTR [BP+6])
  32. PathBuf        EQU    (BYTE PTR [BP-80])
  33.  
  34.     PUSH    BP
  35.     MOV    BP,SP
  36.     SUB    SP,80
  37.     PUSH    DS
  38.     LDS    SI,PathP
  39.     LEA    DI,PathBuf
  40.     PUSH    SS
  41.     POP    ES
  42.     CLD
  43.     LODSB
  44.     CMP    AL,79
  45.     JB    @@1
  46.     MOV    AL,79
  47. @@1:    CBW
  48.     XCHG    AX,CX
  49.     REP    MOVSB
  50.     XOR    AL,AL
  51.     STOSB
  52.     LDS    DX,SearchP
  53.     MOV    AH,1AH
  54.     INT    21H
  55.     LEA    DX,PathBuf
  56.     PUSH    SS
  57.     POP    DS
  58.     MOV    CX,Attr
  59.     MOV    AH,4EH
  60.     INT    21H
  61.     POP    DS
  62.     LES    DI,SearchP
  63.     CALL    FindExit
  64.     MOV    SP,BP
  65.     POP    BP
  66.     RET    10
  67.  
  68. FindFirst    ENDP
  69.  
  70.     PUBLIC    FindNext
  71.  
  72. FindNext    PROC    FAR
  73.  
  74. SearchP        EQU    (DWORD PTR [BP+6])
  75.  
  76.     PUSH    BP
  77.     MOV    BP,SP
  78.     PUSH    DS
  79.     LDS    DX,SearchP
  80.     MOV    AH,1AH
  81.     INT    21H
  82.     POP    DS
  83.     MOV    AH,4FH
  84.     INT    21H
  85.     LES    DI,SearchP
  86.     CALL    FindExit
  87.     POP    BP
  88.     RET    4
  89.  
  90. FindNext    ENDP
  91.  
  92. FindExit    PROC    NEAR
  93.  
  94.     JC    @@1
  95.     ADD    DI,30
  96.     PUSH    DS
  97.     PUSH    ES
  98.     POP    DS
  99.     XOR    AL,AL
  100.     MOV    CX,256
  101.     CLD
  102.     REPNE    SCASB
  103.     NOT    CL
  104.     MOV    AL,CL
  105.     DEC    DI
  106.     MOV    SI,DI
  107.     DEC    SI
  108.     STD
  109.     REP    MOVSB
  110.     STOSB
  111.     CLD
  112.     POP    DS
  113.     XOR    AX,AX
  114. @@1:    MOV    DosError,AX
  115.     RET
  116.  
  117. FindExit    ENDP
  118.  
  119. CODE    ENDS
  120.  
  121.     END
  122.