home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 10 / 10.iso / m / m003_1 / sdk_dos.ddi / BASIC / GENERAL / LOADDRV.BAS next >
Encoding:
BASIC Source File  |  1991-10-08  |  2.5 KB  |  66 lines

  1. ' ------------------------------------------------------------------------ '
  2. '  @@ Usage                                      *** BASIC Version ***     '
  3. '                                                                          '
  4. '  Copyright (c) Creative Technology Pte Ltd, 1991. All rights reserved.   '
  5. '                                                                          '
  6. '   FUNCTION LOADDRV% (szDrvName$)                                         '
  7. '                                                                          '
  8. '   DESCRIPTION:                                                           '
  9. '       Loads driver into memory with the driver name specified. The       '
  10. '       driver is always loaded to the offset 0 of a segement.             '
  11. '                                                                          '
  12. '   ENTRY:                                                                 '
  13. '       szDrvName :- Driver name to be loaded.                             '
  14. '                                                                          '
  15. '   EXIT:                                                                  '
  16. '       Segment of the loaded driver if successfull, else returns 0        '
  17. '                                                                          '
  18. ' ------------------------------------------------------------------------ '
  19.  
  20. FUNCTION LOADDRV% (szDrvName$)
  21.  
  22.     DIM szDrvFile$, Handle%, dwFileLen&, wDrvSeg%
  23.  
  24.  
  25.     LOADDRV% = 0
  26.  
  27.     ' search SOUND environment for driver
  28.     szDrvFile$ = ENVIRON$("SOUND")
  29.  
  30.     IF (szDrvFile$ <> "") THEN
  31.         szDrvFile$ = szDrvFile$ + "\DRV\" + szDrvName$
  32.  
  33.         IF (FINDFILE%(szDrvFile$) = 0) THEN
  34.             szDrvFile$ = ""
  35.         ENDIF
  36.     ENDIF
  37.  
  38.     ' search the current directory for driver
  39.     IF (szDrvFile$ = "") THEN
  40.         szDrvFile$ = szDrvName$
  41.     ENDIF
  42.  
  43.     IF (FINDFILE%(szDrvFile$) <> 0) THEN
  44.         Handle% = DOSOPEN%(szDrvFile$)
  45.  
  46.         IF (Handle% <> 0) THEN
  47.             dwFileLen& = FILESIZE(Handle%)
  48.  
  49.             wDrvSeg% = ALLOCMEM(INT((dwFileLen& + 15) / 16))
  50.  
  51.             IF (wDrvSeg% <> 0) THEN
  52.                 IF DOSREAD%(Handle%, INT(0), wDrvSeg%, dwFileLen&) THEN
  53.                     LOADDRV% = wDrvSeg%
  54.                 ENDIF
  55.             ENDIF
  56.  
  57.             DOSCLOSE(Handle%)
  58.         ELSE
  59.             PRINT "Error in opening " + szDrvFile$
  60.         ENDIF
  61.     ELSE
  62.         PRINT "Driver file " + szDrvName$ + " does not exist ..."
  63.     ENDIF
  64.  
  65. END FUNCTION
  66.