home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Interactive Guide / c-cplusplus-interactive-guide.iso / c_ref / csource4 / 256_01 / chkhndl.a < prev    next >
Text File  |  1988-01-08  |  2KB  |  54 lines

  1. ;---------------------------------------------------------------------
  2. ;    ASM88 FILE:     CHKHNDL.A    Check whether handle refers to a file
  3. ;    ----------                   or a device on a Microsoft Networks 
  4. ;                                 station (local) or is redirected
  5. ;                                 to a server (= remote).
  6. ;    WRITTEN:        25/10/87
  7. ;    -------
  8. ;    PURPOSE:        This is one of a series of files which take
  9. ;    -------         advantage of INT 21H functions under MS-DOS.
  10. ;                    In each case the error situation is marked by
  11. ;                    the carry flag being set.   We use the De Smet
  12. ;                    external variable '_carryf' to see whether the
  13. ;                    carry is set on return from the function.
  14. ;                    If so, the error code can be used to obtain
  15. ;                    information about the specific error.
  16. ;
  17. ;    USAGE:          int CHKHNDL(drv, &_carryf)
  18. ;    -----           int drv;  A = 1, B = 2.....DEFAULT = 0
  19. ;                    char *_carryf;
  20. ;
  21. ;    DEPENDENCIES:           De Smet C V 2.44+
  22. ;    ------------
  23. ;    Copyright 1987 - Cogar Computer Services Pty. Ltd
  24. ;---------------------------------------------------------------------
  25.  
  26. CSEG
  27. PUBLIC CHKHNDL_
  28.  
  29. CHKHNDL_:
  30.     push    bp    ; normal De Smet C start
  31.     mov    bp,sp    ; point to the stack
  32.     mov    ax,ds    ; and make ES common with DS
  33.     mov    es,ax
  34. ;----------------------------------------------------------------------
  35. ;  The unique programme follows.
  36. ;----------------------------------------------------------------------
  37.     mov    byte bl,[bp+4]    ; the drive code
  38.     mov    ah,44h    ; the Function No.
  39.     mov    al,0ah
  40.     int    21h
  41.     jc    CHKHNDL_ERROR
  42.     mov    ax,dx    ; prepare for normal return
  43.     jmp    CHKHNDL_QUIT
  44. CHKHNDL_ERROR:
  45.     mov    si,[bp+6]    ; get address of '_carryf' variable
  46.     mov    byte [si],1    ; return with _carryf = 1
  47. ;----------------------------------------------------------------------
  48. ;  Normal programme termination.
  49. ;----------------------------------------------------------------------
  50. CHKHNDL_QUIT:
  51.     pop    bp    ; restore starting conditions
  52.     ret
  53. ;----------------------------------------------------------------------
  54.