home *** CD-ROM | disk | FTP | other *** search
/ Frostbyte's 1980s DOS Shareware Collection / floppyshareware.zip / floppyshareware / USCX / PASTOOL3.ZIP / GETFCB.ASM < prev    next >
Assembly Source File  |  1982-10-26  |  2KB  |  48 lines

  1.      TITLE    PASCAL CALLABLE ROUTINE TO FILL FCB FROM A DIRECTORY
  2.      PAGE  ,132
  3. ;
  4. ; FUNCTION GETFCB (VARS IFCB : DOSFCB;      {input fcb}
  5. ;           VARS OFCB : DOSFCB;      {output fcb}
  6. ;           CONST FUNC: INTEGER);  {1=RESTART SEARCH, 2=CONTINUE}
  7. ;
  8. ; You fill the IFCB with the filename info, and OFCB will be returned with
  9. ; all the FCB info for the file.  Filename may contain wild characters on
  10. ; initial call.  Returns TRUE if successful, FALSE otherwise.
  11. ;
  12. ;
  13. CSEG     SEGMENT
  14.      ASSUME CS:CSEG
  15. PUBLIC     GETFCB
  16. GETFCB     PROC    FAR
  17.      PUSH    BP          ; SAVE BP REG
  18.      MOV    DI,DS          ; SAVE DS FOR PASCAL
  19.      MOV    BP,SP          ; BP = BASE OF PARM LIST
  20.      MOV    BX,[BP]+10    ; SET DS/DX TO OUTPUT FCB ADDRESS
  21.      MOV    DS,BX
  22.      MOV    DX,[BP]+8
  23.      MOV    AH,1AH          ; SET DISK TRANSFER ADDRESS
  24.      INT    21H          ; CALL DOS TO SET DTA
  25.      MOV    BX,[BP]+14    ; SET DS/DX TO INPUT FCB ADDRESS
  26.      MOV    DS,BX
  27.      MOV    DX,[BP]+12
  28.      MOV    AH,11H          ; SPECIFY DOS SEARCH FOR FIRST DIRECTORY ENTRY
  29.      MOV    SI,[BP]+6
  30.      CMP    SI,02H          ; SEE IF WE WANT TO CONTINUE INSTEAD
  31.      JNE    L1          ; NOPE
  32.      MOV    AH,12H          ; SPECIFY DOS SEARCH CONTINUE
  33. L1:
  34.      INT    21H          ; CALL DOS TO GET DIRECTORY ENTRY
  35.      CMP    AL,0          ; SEE IF ZERO RETURN CODE
  36.      JNE    L2          ; NO, SET ERROR CODE
  37.      MOV    AX,1          ; YES, SET RETURN TO 'TRUE'
  38.      JMP    RETURN          ; GET OUT OF HERE
  39. L2:
  40.      MOV    AX,0          ; SET RETURN TO 'FALSE'
  41. RETURN:
  42.      MOV    DS,DI          ; RESTORE DS REGISTER
  43.      POP    BP          ; RESTORE BP REG
  44.      RET    0AH          ; RETURN TO PASCAL
  45. GETFCB     ENDP
  46. CSEG     ENDS
  47.      END
  48.