home *** CD-ROM | disk | FTP | other *** search
/ Chip 1994 - Multimedia / CHIP_MM_1_94.BIN / chip194.mst < prev    next >
Encoding:
Text File  |  1994-02-23  |  16.1 KB  |  528 lines

  1. '**************************************************************************
  2. '*                       CHIP Multimedia CD Setup
  3. '**************************************************************************
  4. ''$DEFINE DEBUG
  5.  
  6. '$INCLUDE 'setupapi.inc'
  7. '$INCLUDE 'msdetect.inc'
  8.  
  9. ''Dialog ID's
  10. CONST ASKQUIT      = 200
  11. CONST SINGLELIST     = 1900
  12. CONST EXITFAILURE  = 400
  13. CONST EXITQUIT     = 600
  14. CONST EXITSUCCESS  = 700
  15. CONST OPTIONS      = 800
  16. CONST APPHELP      = 900
  17. CONST CUSTINST     = 6200
  18. CONST TOOBIG       = 6300
  19. CONST BADPATH      = 6400
  20.  
  21. ''Bitmap ID
  22. CONST LOGO         = 1
  23.  
  24. ''File Types
  25. CONST appfiles     = 3
  26. CONST optfiles1    = 2
  27. CONST deffiles     = 1
  28. CONST optfiles3    = 4
  29.  
  30.  
  31. GLOBAL DEST$        ''Default destination directory.
  32. GLOBAL WINDRIVE$    ''Windows drive letter.
  33. GLOBAL WINDRIVEFULL$
  34. GLOBAL WINSYSDRIVE$     ''Option selection from optfiles2 option dialog.
  35. GLOBAL ISSELECTED$
  36. GLOBAL HardDrive$
  37. GLOBAL FloppyDrive$
  38.  
  39. ''CustInst list symbol names
  40. GLOBAL APPNEEDS$    ''Option list costs per drive
  41. GLOBAL OPT1NEEDS$
  42. GLOBAL OPT3NEEDS$
  43. GLOBAL DEFNEEDS$
  44. GLOBAL EXTRACOSTS$  ''List of extra costs to add per drive
  45. GLOBAL BIGLIST$     ''List of option files cost calc results (boolean)
  46.  
  47. ''Dialog list symbol names
  48. GLOBAL CHECKSTATES$
  49. GLOBAL STATUSTEXT$
  50. GLOBAL DRIVETEXT$
  51. GLOBAL OPTIONSGREYED$
  52.  
  53. DECLARE SUB AddOptFilesToCopyList (ftype%)
  54. DECLARE SUB RecalcOptFiles (ftype%)
  55. DECLARE SUB RecalcPath
  56. DECLARE SUB SetDriveStatus
  57. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  58. DECLARE FUNCTION BigWindow LIB "mscuistf.dll" (hWindow%) AS INTEGER
  59.  
  60. INIT:
  61.     CUIDLL$ = "mscuistf.dll"            ''custom user interface dll
  62.  
  63.     hWindow% = HwndFrame()
  64.     bla% = BigWindow(hWindow%)
  65.  
  66.     SetBitmap   CUIDLL$,LOGO
  67.     SetTitle "CHIP Multimedia CD, Ausgabe 1/94"
  68.  
  69.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  70.     IF szInf$ = "" THEN
  71.         szInf$ = GetSymbolValue("STF_CWDDIR") + "Setup.INF"
  72.     END IF
  73.     ReadInfFile szInf$
  74.  
  75.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  76.     WINDRIVEFULL$ = GetWindowsDir
  77.     WINSYSDRIVE$ = GetWindowsSysDir
  78.     DEST$ = "C:\MM_CHIP\1_94\"
  79.  
  80.     ''CustInst list symbols
  81.     CHECKSTATES$ = "CheckItemsState"
  82.     STATUSTEXT$  = "StatusItemsText"
  83.     DRIVETEXT$   = "DriveStatusText"
  84.     OPTIONSGREYED$ = "OptionsGreyed"
  85.  
  86.     FOR i% = 1 TO 4 STEP 1
  87.         AddListItem CHECKSTATES$, "ON"
  88.     NEXT i%
  89.     ReplaceListItem CHECKSTATES$,2, "OFF"
  90.  
  91.     FOR i% = 1 TO 6 STEP 1
  92.         AddListItem STATUSTEXT$, ""
  93.     NEXT i%
  94.  
  95.     FOR i% = 1 TO 7 STEP 1
  96.         AddListItem DRIVETEXT$, ""
  97.     NEXT i%
  98.     ReplaceListItem DRIVETEXT$, 7, DEST$
  99.  
  100.     AddListItem OPTIONSGREYED$, "0"
  101.     AddListItem OPTIONSGREYED$, "0"
  102.     AddListItem OPTIONSGREYED$, "0"
  103.     AddListItem OPTIONSGREYED$, "0"
  104.  
  105.     ''Disk cost list symbols
  106.     APPNEEDS$       = "AppNeeds"
  107.     OPT1NEEDS$      = "Opt1Needs"
  108.     OPT3NEEDS$      = "Opt3Needs"
  109.     DEFNEEDS$       = "DefNeeds"
  110.     EXTRACOSTS$     = "ExtraCosts"
  111.     BIGLIST$        = "BigList"
  112.     HardDrive$      = "HardDrive"
  113.     FloppyDrive$     = "FlopyDrive"
  114.  
  115.     FOR i% = 1 TO 4 STEP 1
  116.         AddListItem BIGLIST$, ""
  117.     NEXT i%
  118.     FOR i% = 1 TO 26 STEP 1
  119.         AddListItem EXTRACOSTS$, "0"
  120.     NEXT i%
  121.  
  122.     RecalcPath
  123.     SetDriveStatus
  124.  
  125. '$IFDEF DEBUG
  126.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  127. '$ENDIF ''DEBUG
  128.  
  129.  
  130.  
  131. CUSTINST:
  132.     sz$ = UIStartDlg(CUIDLL$, CUSTINST, "FCustInstDlgProc", APPHELP, HELPPROC$)
  133.     IF sz$ = "CONTINUE" THEN
  134.         ''Install only if it will fit.
  135.         FOR i% = 1 TO 4 STEP 1
  136.             ''WriteToLogFile GetListItem(BIGLIST$, i%)
  137.             IF GetListItem(BIGLIST$, i%) <> "" THEN
  138.                 GOSUB TOOBIG
  139.                 GOTO CUSTINST
  140.             END IF
  141.         NEXT i%
  142.         UIPop 1
  143.         GOTO INSTALL
  144.     ELSEIF sz$ = "PATH" THEN
  145.  
  146.         GOTO GETPATH
  147.     ELSEIF sz$ = "CHK1" THEN
  148.         RecalcOptFiles DefFiles
  149.         SetDriveStatus
  150.         GOTO CUSTINST
  151.     ELSEIF sz$ = "CHK2" THEN
  152.         RecalcOptFiles optfiles1
  153.         SetDriveStatus
  154.         GOTO CUSTINST
  155.     ELSEIF sz$ = "CHK3" THEN
  156.         ''''''''pause "chk3"
  157.         RecalcOptFiles appfiles
  158.         SetDriveStatus
  159.         GOTO CUSTINST
  160.     ELSEIF sz$ = "CHK4" THEN
  161.         ''''''''pause "chk4"
  162.         RecalcOptFiles optfiles3
  163.         SetDriveStatus
  164.         GOTO CUSTINST
  165.     ELSEIF sz$ = "REACTIVATE" THEN
  166.      ''   ''''''pause "REACTIVATE"
  167.         RecalcPath
  168.         SetDriveStatus
  169.         GOTO CUSTINST
  170.     ELSE
  171.      ''   ''''''pause "ELSE"
  172.     GOSUB ASKQUIT
  173.         GOTO CUSTINST
  174.     END IF
  175.  
  176.  
  177.  
  178. INSTALL:
  179.     ClearCopyList
  180.     ISSELECTED$ = "0"
  181.     CreateDir MakePath(DEST$,""), cmoNone
  182.   ''  pause  MakePath(DEST$,"")
  183.     AddOptFilesToCopyList appfiles
  184.     AddOptFilesToCopyList optfiles1
  185.     AddOptFilesToCopyList optfiles3
  186.     AddOptFilesToCopyList deffiles
  187.  
  188.     CopyFilesInCopyList
  189.  
  190.     CopyFile WINDRIVEFULL$+"WIN.INI", WINDRIVEFULL$+"WIN.CHP",cmoOverwrite,0
  191.     CopyFile WINDRIVEFULL$+"SYSTEM.INI", WINDRIVEFULL$+"SYSTEM.CHP",cmoOverwrite,0
  192.  
  193.     CreateIniKeyValue "WIN.INI", "Extensions", "Txt", WINDRIVEFULL$ +"notepad.exe ^.txt ", cmoNone
  194.     CreateIniKeyValue "WIN.INI", "mci Extensions", "fli", "Animation1", cmoOverwrite
  195.     CreateIniKeyValue "WIN.INI", "mci Extensions", "flc", "Animation1", cmoOverwrite
  196.     CreateIniKeyValue MakePath(DEST$,"CHIP_CD.INI"), "System", "harddisk",MID$(DEST$, 1, 3), cmoOverwrite
  197.     CreateIniKeyValue MakePath(DEST$,"CHIP_CD.INI"), "System", "cdrom",MID$(GetSymbolValue("STF_SRCDIR"), 1, 3), cmoOverwrite
  198.     CreateIniKeyValue MakePath(DEST$,"CHIP_CD.INI"), "System", "version", "194", cmoOverwrite
  199.     
  200.     CreateIniKeyValue "WIN.INI", "aaplay animation", "DualScreen", "No", cmoOverwrite
  201.     CreateIniKeyValue "WIN.INI", "aaplay animation", "Fullscreen", "aavga.dll", cmoOverwrite
  202.     CreateIniKeyValue "WIN.INI", "aaplay animation", "WaveAudio", "c,522", cmoOverwrite
  203.     CreateIniKeyValue "WIN.INI", "aaplay animation", "Sequencer", "x,523", cmoOverwrite
  204.     CreateIniKeyValue WINDRIVEFULL$ + "system.ini", "Drivers", "VIDC.RT21", "indeo_u.drv", cmoOverwrite
  205.     CreateIniKeyValue WINDRIVEFULL$ + "system.ini", "Drivers", "VIDC.YVU9", "indeo_u.drv", cmoOverwrite
  206.     CreateIniKeyValue WINDRIVEFULL$ + "system.ini", "Drivers", "VIDC.IV31", "indeor3.drv", cmoOverwrite
  207.     CreateIniKeyValue WINDRIVEFULL$+"SYSTEM.INI", "mci", "Animation1", "mciaap.drv", cmoOverwrite
  208.  
  209.     IF GetListItem(CHECKSTATES$, optfiles3) = "ON" THEN
  210.             CreateIniKeyValue WINDRIVEFULL$ + "system.ini", "Drivers", "VIDC.MSVC", "msvidc.drv", cmoOverwrite
  211.             CreateIniKeyValue "WIN.INI", "mci extensions", "avi", "AVIVideo", cmoOverwrite
  212.             CreateIniKeyValue WINDRIVEFULL$ + "system.ini", "mci", "AVIVideo", "mciavi.drv", cmoOverwrite
  213.  
  214.         Run ("regedit.exe /s " + MakePath(WINDRIVEFULL$, "mplayer.reg"))
  215.  
  216.     ''  Run ("profdisp")
  217.  
  218.     END IF
  219.     IF GetListItem(CHECKSTATES$, optfiles1) = "ON" THEN
  220.         CreateIniKeyValue WINDRIVEFULL$+"SYSTEM.INI", "drivers", "wave", "speaker.drv", cmoOverwrite
  221.  
  222.     END IF
  223.  
  224.     IF GetListItem(CHECKSTATES$, appfiles) = "ON" THEN
  225.         CreateProgmanGroup "CHIP", "", cmoNone
  226.         ShowProgmanGroup  "CHIP", 1, cmoNone
  227.         CreateProgmanItem "CHIP", "Multimedia-CD Ausgabe 1/94", MakePath(DEST$,"START.EXE"), MakePath(DEST$,"setup.ico"), cmoOverwrite
  228.         CreateProgmanItem "CHIP", "ReadMe", MakePath(DEST$,"Readme.txt"), "", cmoOverwrite
  229.     END IF
  230.  
  231.     IF GetListItem(CHECKSTATES$, optfiles3) = "ON" THEN
  232.         CreateProgmanGroup "CHIP", "", cmoNone
  233.         ShowProgmanGroup  "CHIP", 1, cmoNone
  234.         CreateProgmanItem "CHIP", "MPlayer", MakePath(WINDRIVEFULL$,"mplayer.exe"),"", cmoOverwrite
  235.     END IF
  236.  
  237. QUIT:
  238.     ON ERROR GOTO ERRQUIT
  239.  
  240.     IF ERR = 0 THEN
  241.         dlg% = EXITSUCCESS
  242.     ELSEIF ERR = STFQUIT THEN
  243.         dlg% = EXITQUIT
  244.     ELSE
  245.         dlg% = EXITFAILURE
  246.     END IF
  247. QUITL1:
  248.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  249.     IF sz$ = "REACTIVATE" THEN
  250.         GOTO QUITL1
  251.     ELSEIF sz$ = "CONTINUE" THEN
  252.     if (dlg% = EXITSUCCESS) THEN
  253.             run WINDRIVEFULL$+"notepad.exe "+MakePath( GetSymbolValue("STF_SRCDIR")+"mm_chip\","Readme.txt")
  254.     END IF
  255.     END IF
  256.     UIPop 1
  257.     IF dlg% = EXITSUCCESS THEN  
  258.     i% = DoMsgBox("Sie sollten jetzt Windows neu starten, damit CHIP Multimedia-CD korrekt arbeiten kann.", "INFORMATION", MB_OK)
  259.     END IF
  260.     END
  261.  
  262.  
  263. ERRQUIT:
  264.     i% = DoMsgBox("Setup sources were corrupted, call 555-1212!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  265.     END
  266.  
  267.  
  268.  
  269. GETPATH:
  270.     GetLocalHardDrivesList (HardDrive$)
  271.     SetSymbolValue "ListItemsIn", HardDrive$
  272. GETPATHL1:
  273.     sz$ = UIStartDlg(CUIDLL$, SINGLELIST, "FListDlgProc", APPHELP, HELPPROC$)
  274.     IF sz$ = "CONTINUE" THEN
  275.         olddest$ = DEST$
  276.         DEST$ = UCASE$(GetSymbolValue("ListItemsOut"))+":\MM_CHIP\1_94\"
  277.         ''Validate new path.
  278.         IF IsDirWritable(DEST$) = 0 THEN
  279.             GOSUB BADPATH
  280.             GOTO GETPATHL1
  281.         END IF
  282.         UIPop 1
  283.  
  284.         ReplaceListItem DRIVETEXT$, 7, DEST$
  285.  
  286.         ''Recalc if path changed.
  287.         IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN
  288.             RecalcPath
  289.             SetDriveStatus
  290.         END IF
  291.  
  292.         olddest$ = ""
  293.         ''''''pause "vor GoTo CustInst"
  294.         GOTO CUSTINST
  295.     ELSEIF sz$ = "REACTIVATE" THEN
  296.         ''''''pause "reactivate"
  297.         RecalcPath
  298.         SetDriveStatus
  299.         GOTO GETPATHL1
  300.     ELSEIF sz$ = "EXIT" THEN
  301.         GOSUB ASKQUIT
  302.         GOTO GETPATHL1
  303.     ELSE
  304.         UIPop 1
  305.         GOTO CUSTINST
  306.     END IF
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313. TOOBIG:
  314.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  315.     IF sz$ = "REACTIVATE" THEN
  316.         RecalcPath
  317.         SetDriveStatus
  318.         GOTO TOOBIG
  319.     END IF
  320.     UIPop 1
  321.     RETURN
  322.  
  323.  
  324.  
  325. BADPATH:
  326.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  327.     IF sz$ = "REACTIVATE" THEN
  328.         RecalcPath
  329.         SetDriveStatus
  330.         GOTO BADPATH
  331.     END IF
  332.     UIPop 1
  333.     RETURN
  334.  
  335.  
  336.  
  337. ASKQUIT:
  338.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  339.  
  340.     IF sz$ = "EXIT" THEN
  341.         UIPopAll
  342.         ERROR STFQUIT
  343.     ELSEIF sz$ = "REACTIVATE" THEN
  344.         GOTO ASKQUIT
  345.     ELSE
  346.         UIPop 1
  347.     END IF
  348.     RETURN
  349.  
  350.  
  351.  
  352. '**
  353. '** Purpose:
  354. '**     Recalculates disk space for the given option files and sets
  355. '**     the status info symbol "StatusItemsText".
  356. '** Arguments:
  357. '**     ftype% - type of files to add, one of the following:
  358. '**             appfiles, optfiles1, optfiles2
  359. '** Returns:
  360. '**     none.
  361. '*************************************************************************
  362. SUB RecalcOptFiles (ftype%) STATIC
  363.  
  364.     CursorSave% = ShowWaitCursor()
  365.     ClearCopyList
  366.     AddOptFilesToCopyList ftype%
  367.  
  368.     fExtra% = 0
  369.     IF ftype% = APPFILES THEN
  370.         ListSym$ = APPNEEDS$
  371.     ELSEIF ftype% = OPTFILES1 THEN
  372.         ListSym$ = OPT1NEEDS$
  373.     ELSEIF ftype% = OPTFILES3 THEN
  374.         ListSym$ = OPT3NEEDS$
  375.     ELSEIF ftype% = DEFFILES THEN
  376.         ListSym$ = DEFNEEDS$
  377.         IF GetListItem(CHECKSTATES$, DEFFILES) = "ON" THEN
  378.             ''Add extra cost to Windows drive for ini/progman, etc.
  379.             ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  380.             ReplaceListItem EXTRACOSTS$, ndrive%, "496960"
  381.             fExtra% = 1
  382.         END IF
  383.  
  384.     END IF
  385.  
  386.     StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  387.     ''pause "Stillneeds: "+STR$(Stillneed&)+" von ListSym: "+ListSym$+" der Extracostliste: "
  388.     cost& = 0
  389.     FOR i% = 1 TO 6 STEP 1
  390.         cost&  = cost& + VAL(GetListItem(ListSym$, i%))
  391.         ''pause "cost = "+STR$(cost&)+" = "+"ListSym: "+ListSym$+ " Pfad: "+STR$(i%)
  392.     NEXT i%
  393.     ''pause "ReplaceListItem ftype, cost: "+STATUSTEXT$+"   "+STR$(ftype%)+"   "+STR$(cost& / 1024)
  394.     ReplaceListItem STATUSTEXT$, ftype%, STR$(cost& / 1024) + " K"
  395.  
  396.     IF StillNeed& > 0 THEN
  397.         ReplaceListItem BIGLIST$, ftype%, "YES"
  398.     ELSE
  399.         ReplaceListItem BIGLIST$, ftype%, ""
  400.     END IF
  401.  
  402.     IF fExtra% THEN
  403.         ReplaceListItem EXTRACOSTS$, ndrive%, "0"
  404.     END IF
  405.     RestoreCursor CursorSave%
  406.     ListSym$ = ""
  407.  
  408. END SUB
  409.  
  410.  
  411. '**
  412. '** Purpose:
  413. '**     Adds the specified option files to the copy list.
  414. '** Arguments:
  415. '**     ftype%  - type of files to add, one of the following:
  416. '**             appfiles, optfiles1, optfiles2
  417. '** Returns:
  418. '**     none.
  419. '*************************************************************************
  420. SUB AddOptFilesToCopyList (ftype%) STATIC
  421.      ''pause "In AddOptFilesToCopyList   ftype: "+STR$(ftype%)+"   DEST$:  "+DEST$
  422.  
  423.      IF GetListItem(CHECKSTATES$, ftype%) = "ON" THEN
  424.         SrcDir$ = GetSymbolValue("STF_SRCDIR")+"mm_chip\"
  425.         ''pause srcdir$
  426.         IF ftype% = appfiles THEN
  427.             AddSectionFilesToCopyList "appfiles", SrcDir$, DEST$
  428.         ELSEIF ftype% = optfiles1 THEN
  429.         AddSectionFilesToCopyList "optfiles1", SrcDir$, WINSYSDRIVE$
  430.         ELSEIF ftype% = optfiles3 THEN
  431.         AddSectionFilesToCopyList "MPlayer",SrcDir$+"winvideo\" , WINDRIVEFULL$
  432.         AddSectionFilesToCopyList "VfWRuntime",SrcDir$+"winvideo\"  ,WINSYSDRIVE$
  433.             AddSectionFilesToCopyList "AVICodecs",SrcDir$+"winvideo\" ,WINSYSDRIVE$
  434.         ELSEIF ftype% = deffiles THEN
  435.             AddSectionFilesToCopyList "system",SrcDir$ , WINSYSDRIVE$
  436.         END IF
  437.         SrcDir$ = ""
  438.     END IF
  439. END SUB
  440.  
  441.  
  442.  
  443.  
  444. '**
  445. '** Purpose:
  446. '**     Recalculates disk space and sets option status info according
  447. '**     to the current destination path.
  448. '** Arguments:
  449. '**     none.
  450. '** Returns:
  451. '**     none.
  452. '*************************************************************************
  453. SUB RecalcPath STATIC
  454.  
  455.     CursorSave% = ShowWaitCursor()
  456.  
  457.     RecalcOptFiles appfiles
  458.     RecalcOptFiles optfiles1
  459.     RecalcOptFiles optfiles3
  460.     RecalcOptFiles deffiles
  461.  
  462.     RestoreCursor CursorSave%
  463. END SUB
  464.  
  465.  
  466. '**
  467. '** Purpose:
  468. '**     Sets drive status info according to latest disk space calcs.
  469. '** Arguments:
  470. '**     none.
  471. '** Returns:
  472. '**     none.
  473. '*************************************************************************
  474. SUB SetDriveStatus STATIC
  475.  
  476.     cost& = 0
  477.     drive$ = MID$(DEST$, 1, 1)
  478.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  479.     cost& = VAL(GetListItem(DEFNEEDS$, ndrive%)) +VAL(GetListItem(APPNEEDS$, ndrive%)) + VAL(GetListItem(OPT1NEEDS$, ndrive%))+ VAL(GetListItem(OPT3NEEDS$, ndrive%))
  480.     free& = GetFreeSpaceForDrive(drive$)
  481.     ReplaceListItem DRIVETEXT$, 1, drive$ + ":"
  482.     ReplaceListItem DRIVETEXT$, 2, STR$(cost& / 1024) + " K"
  483.     ReplaceListItem DRIVETEXT$, 3, STR$(free& / 1024) + " K"
  484.  
  485.     IF drive$ = WINDRIVE$ THEN
  486.         ReplaceListItem DRIVETEXT$, 4, ""
  487.         ReplaceListItem DRIVETEXT$, 5, ""
  488.         ReplaceListItem DRIVETEXT$, 6, ""
  489.     ELSE
  490.         ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  491.         cost& = VAL(GetListItem(DEFNEEDS$, ndrive%)) +VAL(GetListItem(APPNEEDS$, ndrive%)) + VAL(GetListItem(OPT1NEEDS$, ndrive%))+ VAL(GetListItem(OPT3NEEDS$, ndrive%))
  492.         IF cost& = 0 THEN
  493.             ReplaceListItem DRIVETEXT$, 4, ""
  494.             ReplaceListItem DRIVETEXT$, 5, ""
  495.             ReplaceListItem DRIVETEXT$, 6, ""
  496.         ELSE
  497.             free& = GetFreeSpaceForDrive(WINDRIVE$)
  498.             ReplaceListItem DRIVETEXT$, 4, WINDRIVE$ + ":"
  499.             ReplaceListItem DRIVETEXT$, 5, STR$(cost& / 1024) + " K"
  500.             ReplaceListItem DRIVETEXT$, 6, STR$(free& / 1024) + " K"
  501.         END IF
  502.     END IF
  503. END SUB
  504.  
  505.  
  506. '**
  507. '** Purpose:
  508. '**     Appends a file name to the end of a directory path,
  509. '**     inserting a backslash character as needed.
  510. '** Arguments:
  511. '**     szDir$  - full directory path (with optional ending "\")
  512. '**     szFile$ - filename to append to directory
  513. '** Returns:
  514. '**     Resulting fully qualified path name.
  515. '*************************************************************************
  516. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  517.     IF szDir$ = "" THEN
  518.         MakePath = szFile$
  519.     ELSEIF szFile$ = "" THEN
  520.         MakePath = szDir$
  521.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  522.         MakePath = szDir$ + szFile$
  523.     ELSE
  524.         MakePath = szDir$ + "\" + szFile$
  525.     END IF
  526. END FUNCTION
  527.  
  528.