home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Programmer's Library 1.3 / Microsoft-Programers-Library-v1.3.iso / sampcode / dos_ency / 8 / dirs.asm < prev    next >
Encoding:
Assembly Source File  |  1988-08-11  |  3.6 KB  |  126 lines

  1.                 TITLE   'DIRS.ASM'
  2.  
  3. ;
  4. ; Subroutines for DIRDUMP.C
  5. ;
  6.  
  7.  
  8. ARG1            EQU     [bp + 4]        ; stack frame addressing for C arguments
  9. ARG2            EQU     [bp + 6]
  10.  
  11.  
  12. _TEXT           SEGMENT byte public 'CODE'
  13.                 ASSUME  cs:_TEXT
  14.  
  15. ;------------------------------------------------------------------------------
  16. ;
  17. ; void SetDTA( DTA );
  18. ;         char *DTA;
  19. ;
  20. ;------------------------------------------------------------------------------
  21.  
  22.                 PUBLIC  _SetDTA
  23. _SetDTA         PROC    near
  24.  
  25.                 push    bp
  26.                 mov     bp,sp
  27.  
  28.                 mov     dx,ARG1         ; DS:DX -> DTA
  29.                 mov     ah,1Ah          ; AH = INT 21H function number
  30.                 int     21h             ; pass DTA to MS-DOS
  31.  
  32.                 pop     bp
  33.                 ret
  34.  
  35. _SetDTA         ENDP
  36.  
  37. ;------------------------------------------------------------------------------
  38. ;
  39. ; int GetCurrentDir( *path );           /* returns error code */
  40. ;         char *path;                   /* pointer to buffer to contain path */
  41. ;
  42. ;------------------------------------------------------------------------------
  43.  
  44.                 PUBLIC  _GetCurrentDir
  45. _GetCurrentDir  PROC    near
  46.  
  47.                 push    bp
  48.                 mov     bp,sp
  49.                 push    si
  50.  
  51.                 mov     si,ARG1         ; DS:SI -> buffer
  52.                 xor     dl,dl           ; DL = 0 (default drive number)
  53.                 mov     ah,47h          ; AH = INT 21H function number
  54.                 int     21h             ; call MS-DOS; AX = error code
  55.                 jc      L01             ; jump if error
  56.  
  57.                 xor     ax,ax           ; no error, return AX = 0
  58.  
  59. L01:            pop     si
  60.                 pop     bp
  61.                 ret
  62.  
  63. _GetCurrentDir  ENDP
  64.  
  65. ;------------------------------------------------------------------------------
  66. ;
  67. ; int FindFirstFile( path, attribute ); /* returns error code */
  68. ;         char *path;
  69. ;         int  attribute;
  70. ;
  71. ;------------------------------------------------------------------------------
  72.  
  73.                 PUBLIC  _FindFirstFile
  74. _FindFirstFile  PROC    near
  75.  
  76.                 push    bp
  77.                 mov     bp,sp
  78.  
  79.                 mov     dx,ARG1         ; DS:DX -> path
  80.                 mov     cx,ARG2         ; CX = attribute
  81.                 mov     ah,4Eh          ; AH = INT 21H function number
  82.                 int     21h             ; call MS-DOS; AX = error code
  83.                 jc      L02             ; jump if error
  84.  
  85.                 xor     ax,ax           ; no error, return AX = 0
  86.  
  87. L02:            pop     bp
  88.                 ret
  89.  
  90. _FindFirstFile  ENDP
  91.  
  92. ;------------------------------------------------------------------------------
  93. ;
  94. ; int FindNextFile();                   /* returns error code */
  95. ;
  96. ;------------------------------------------------------------------------------
  97.  
  98.                 PUBLIC  _FindNextFile
  99. _FindNextFile   PROC    near
  100.  
  101.                 push    bp
  102.                 mov     bp,sp
  103.  
  104.                 mov     ah,4Fh          ; AH = INT 21H function number
  105.                 int     21h             ; call MS-DOS; AX = error code
  106.                 jc      L03             ; jump if error
  107.  
  108.                 xor     ax,ax           ; if no error, set AX = 0
  109.  
  110. L03:            pop     bp
  111.                 ret
  112.  
  113. _FindNextFile   ENDP
  114.  
  115. _TEXT           ENDS
  116.  
  117.  
  118. _DATA           SEGMENT word public 'DATA'
  119.  
  120. CurrentDir      DB      64 dup(?)
  121. DTA             DB      64 dup(?)
  122.  
  123. _DATA           ENDS
  124.  
  125.                 END
  126.