@DefineProject
    @Name = "Crystal Flying Fonts!"
    @Version = "2.0"
    @OutDrive = C
    @Subdir = "\\FFONTS"
    @InDiskBell = 1
@EndProject

@DefineVars
    @QString @RunBatch = "FF"
    @QString @Exefile = "ffonts"
    @QString @CFGName   = "CRYSTAL"
@EndVars

@DefineVars
    @Integer @ProgramReqM = 4
    @Integer @PictureReqM = 2
    @Integer @FontReqM    = 2
    @Integer @CameraReqK  = 0
    @Integer @MatReqK     = 1
    @Integer @ProcReqK    = 0
    @Integer @MotionReqM  = 2
    @Integer @ExampleReqM = 3
@EndVars


// software name information
@DefineVars
    @Integer @NamePos =	(39 - (@StrLen(@Name) + 10)/2)
    @QString @SerialNumber = ""
@EndVars

// memory requirement constants
@DefineVars
    @Integer @K         = 1024
    @Integer @M         = (@K*@K)
    @Integer @RAMReq    = (200*@K)
    @Integer @RAMReqK   = (@RAMReq/@K)
    @Integer @ExtReq    = (5*@M)
    @Integer @ExtReqM   = (@ExtReq/@M)
@EndVars

@DefineVars
    @Dir @Models   = "@Subdir\\Models"
    @Dir @Pictures = "@Subdir\\Pictures"
    @Dir @Fonts    = "@Subdir\\Fonts"
    @Dir @Script   = "@Subdir\\Anim"
    @Dir @Batch    = "@Subdir\\Batch"
    @Dir @Material = "@Subdir\\Material"
    @QString @TmpFileType = ""
    @Dir @TmpDir  = ""
@EndVars

@DefineVars
    @Integer @DiskReq = (@ProgramReqM * @M + @PictureReqM * @M +
                         @FontReqM * @M + @CameraReqK * @K + @MatReqK * @K +
                         @ProcReqK * @K + @MotionReqM * @M + @ExampleReqM * @M)
    @Integer @DiskReqK  = (@DiskReq / @K)
    @Integer @DiskFreeK  = (@DiskFree @OutDrive / 1024)
    @Integer @DiskSpaceLeftK = (@DiskFreeK - @DiskReqK)
    @Integer @TmpValue = 0
    @QString @TmpDiskReqStr = ""
    @QString @TmpDiskFreeStr = ""
    @QString @TmpDiskSpaceLeftStr = ""
    @Integer @HasCFG = 0
@EndVars

@setoption(31)    // model path is the same
@setoption(32)    // picture path is the same
@setoption(33)    // fonts path is the same
@setoption(34)    // CAD path is the same
@setoption(35)    // cameras path is the same
@setoption(36)    // procedural path is the same
@setoption(37)    // script path is the same
@setoption(38)    // batch path is the same
@setoption(39)    // material path is the same
@setoption(40)    // DVE path is the same
@setoption(41)    // install program
@setoption(44)    // install pictures, if any
@setoption(45)    // install fonts, if any
@setoption(46)    // install cameras, if any
@setoption(47)    // install material files, if any
@setoption(48)    // install procedurals, if any
@setoption(49)    // install Motions, if any
@setoption(50)    // install example files, if any

// Display the greeting screen
@Display
@cls
@move(1, 15)ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
@move(2, 15)³
@movecstr(2, @NamePos, 15+16,"@Name Installer")
@movecstr(2, 62, 15+16, "³")
@move(3, 15)³                Copyright 1994                ³
@move(4, 15)³             CrystalGraphics, Inc.            ³
@move(5, 15)ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

     This utility will install the @Name software
     on your computer system. It will use the settings shown on the next
     screen to install the files. You may change these default settings
     if you want to specify the directory structure, or the files to be
     installed.

     Before performing the install, we recommend you use a disk repair and
     defragmentation utility such as DOS 6.2 Defrag and or The Norton
     Utilities from Symantec. This will insure that you are installing
     the software on a "healthy" system with optimal disk performance.

                                     @pause
@enddisplay


// Display Hardware problems (if any)
@Display
  @if ((@cpu < 386) || (@RAMAvail < @RAMReq) || (@ExtTotal < @ExtReq) ||
       (10 [= @option))
  @cls
  Hardware Problems
  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
  There are problems with your current hardware configuration, which must be
  resolved before @Name can be run.
  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

  They are:

    @if (@cpu < 386)
       @move(9, 2)- You need a 386 or better machine.
    @endif
    @if (@RAMAvail < @RAMReq)
       @move(10, 2)- You need more DOS memory. You will need at least @RAMReqK K.
    @endif
    @if (@ExtTotal < @ExtReq)
       @move(11, 2)- You need more extended memory.  You will need at least @ExtReqM M
    @endif


                                     @pause
  @endif
@enddisplay

// Display Math CoProcessor warnig if none present
@Display
  @if (@NDP == 0)
  @cls
  No Math Co-processor Installed
  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
  No math  co-processor has been detected. While the software does not
  require a math co-processor to run, it will run as much as 6 times faster
  with one installed. Adding a math co-processor is the single most
  important thing you can do to improve the performance of @Name.
  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

                                     @pause
  @endif
@enddisplay


SETTINGS:

// decide free space - round it down
@DiskFreeK = (@DiskFree @OutDrive / @K)
@if (@DiskFreeK >= @K)
  @TmpValue = (@DiskFree @OutDrive / @M)
  @TmpDiskFreeStr = "@TmpValue M free"
@else
  @TmpDiskFreeStr = "@DiskFreeK K free"
@endif

// decide disk required - round it up
@if (@DiskReqK >= @K)
   @TmpValue = (@DiskReq / @M)
   @if (@DiskReq > (@TmpValue * @M))
      @TmpValue = (@TmpValue + 1)
   @endif
   @TmpDiskReqStr = "@TmpValue M required"
@else
   @TmpDiskReqStr = "@DiskReqK K required"
@endif

// Determine whether we are doing a Default or Custom install
@if ((31 [= @option) && (32 [= @option) && (33 [= @option) &&
     (34 [= @option) && (35 [= @option) && (36 [= @option) &&
     (37 [= @option) && (38 [= @option) && (39 [= @option) &&
     (40 [= @option))
    @TmpFileType = "File directories:  @subdir\\<defaults>"
@else
    @TmpFileType = "File directories:  \\<custom>"
@endif


// Display and allow user to set the Installation Settings
@flushgroups
@getgroups
@if ((@ProcReqK > 0) || (@FontReqM > 0) || (@MatReqK > 0) ||
     (@CameraReqK > 0) || (@PictureReqM > 0) || (@MotionReqM > 0) ||
     (@ExampleReqM > 0))
    @localwindow(14,14)		// Have files to install
@else
    @localwindow(13,14)		// Don't have files to install
@endif
@set A = "INSTALL"
@set B = "Program drive"
@set C = "Program directory"
@set D = "File directories"
@if ((@ProcReqK > 0) || (@FontReqM > 0) || (@MatReqK > 0) ||
     (@CameraReqK > 0) || (@PictureReqM > 0) || (@MotionReqM > 0) ||
     (@ExampleReqM > 0))
    @set E = "Files to install"
@endif
@cls
  Current Installation Settings
  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
  These are the current settings to be used by the Installer. Select an
  option to change within the Install options list box, or proceed with the
  installation by selecting "INSTALL".
  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

  Install options:          Current settings:
@movecstr(12, 28, 15+16, "Program drive:     @outdrive:")
@movecstr(12, 59, 15+16, @TmpDiskFreeStr)
@movecstr(13, 28, 15+16, "Program directory: @subdir")
@movecstr(14, 28, 15+16, @TmpFileType)
@if ((@ProcReqK > 0) || (@FontReqM > 0) || (@MatReqK > 0) ||
     (@CameraReqK > 0) || (@PictureReqM > 0) || (@MotionReqM > 0) ||
     (@ExampleReqM > 0))
   @if ((41 [! @option) || (44 [! @option) || (45 [! @option) ||
        (46 [! @option) || (47 [! @option) || (48 [! @option) ||
        (49 [! @option) || (50 [! @option))
      @movecstr(15, 28, 15+16, "Files to install:  Partial")
   @else
      @movecstr(15, 28, 15+16, "Files to install:  All")
   @endif
@endif
@movecstr(15, 59, 15+16, @TmpDiskReqStr)
@movecstr(21, 2, 15+32, " [Arrow Keys]=Scroll                                                          ")
@movecstr(22, 2, 15+32, "      [ENTER]=Select                                               [ESC]=Quit ")
@endgroups

@if ( 'A' [= @group )
    @goto CONTINUE
@elseif ( 'B' [= @group )
    @goto DRIVES
@elseif ( 'C' [= @group )
    @goto DIRS
@elseif ( 'D' [= @group )
    @goto FILEDIRS
@else
    @goto SELECTFILES
@endif


DRIVES:

// decide free space & free space left - round it down
@DiskFreeK = (@DiskFree @OutDrive / @K)
@if (@DiskFreeK >= @K)
   @TmpValue = (@DiskFree @OutDrive / @M)
   @TmpDiskFreeStr = "@TmpValue M"
   @DiskSpaceLeftK = (@TmpValue * @K)
@else
   @TmpDiskFreeStr = "@DiskFreeK K"
   @DiskSpaceLeftK = (@DiskFreeK)
@endif

// decide disk required & update free space left - round it up
@if (@DiskReqK >= @K)
   @TmpValue = (@DiskReq / @M)
   @if (@DiskReq > (@TmpValue * @M))
      @TmpValue = (@TmpValue + 1)
   @endif
   @TmpDiskReqStr = "@TmpValue M"
   @DiskSpaceLeftK = (@DiskSpaceLeftK - @TmpValue * @K)
@else
   @TmpDiskReqStr = "@DiskReqK K"
   @DiskSpaceLeftK = (@DiskSpaceLeftK - @DiskReqK)
@endif

// decide free space left - round it down
@if (@DiskSpaceLeftK < 0)
   @TmpValue = (-@DiskSpaceLeftK)
   @if (@TmpValue >= @K)
      @TmpValue = (@DiskSpaceLeftK / @K)
      @TmpDiskSpaceLeftStr = "@TmpValue M"
   @else
      @TmpDiskSpaceLeftStr = "@DiskSpaceLeftK K"
   @endif
@else
   @if (@DiskSpaceLeftK >= @K)
      @TmpValue = (@DiskSpaceLeftK / @K)
      @TmpDiskSpaceLeftStr = "@TmpValue M"
   @else
      @TmpDiskSpaceLeftStr = "@DiskSpaceLeftK K"
   @endif
@endif

// Get the drive to do the installation on
@GetOutDrive
// disallow (known) removable media drives
@suppress A
@suppress B
@localwindow(15, 9)
@cls
  Program Drive
  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
  Current setting indicates the current drive and the amount of space
  available on it. Select the drive where you wish the software installed.
  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

  Available drives:    Current setting:

                          Program Drive:                     @OutDrive:
                          Currently available:               @TmpDiskFreeStr
                          Files chosen to install require:   @TmpDiskReqStr
                          Available after installation:      @TmpDiskSpaceLeftStr

@movecstr(21, 2, 15+32, " [Arrow Keys]=Scroll                                                          ")
@movecstr(22, 2, 15+32, "      [ENTER]=Select                                               [ESC]=Quit ")
@EndOutDrive

@goto SETTINGS


DIRS:

@getsubdir  @Subdir
@Prompt = " New directory: "
@cls
  Program Directory
  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
  Enter the name of the directory where you want to install the software.
  If it does not exist, it will be created; if it does exist, any files
  which have the same name as a file being installed will be overwritten.
  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

  Current directory:     @Subdir
@movecstr(21, 2, 15+32, " [ENTER]=Accept                                                               ")
@movecstr(22, 2, 15+32, "                                                                   [ESC]=Quit ")
@move(10,2)
@endsubdir

// reset all paths after a change of subdir if necessary
@if (31 [= @option)
   @Models = "@Subdir\\Models"
@endif
@if (32 [= @option)
   @Pictures = "@Subdir\\Pictures"
@endif
@if (33 [= @option)
   @Fonts = "@Subdir\\Fonts"
@endif
@if (37 [= @option)
   @Script   = "@Subdir\\Anim"
@endif
@if (38 [= @option)
   @Batch    = "@Subdir\\Batch"
@endif
@if (39 [= @option)
   @Material = "@Subdir\\Material"
@endif

@goto SETTINGS


FILEDIRS:

// reset all paths after a change of subdir if necessary
@if (31 [= @option)
   @Models  = "@Subdir\\Models"
@endif
@if (32 [= @option)
   @Pictures = "@Subdir\\Pictures"
@endif
@if (33 [= @option)
   @Fonts   = "@Subdir\\Fonts"
@endif
@if (37 [= @option)
   @Script   = "@Subdir\\Anim"
@endif
@if (38 [= @option)
   @Batch    = "@Subdir\\Batch"
@endif
@if (39 [= @option)
   @Material = "@Subdir\\Material"
@endif

@flushgroups()
@getgroups
@localwindow(15, 20)
@set A = "CONTINUE"
@set B = "Models:       @Models"
@set C = "Pictures:     @Pictures"
@set D = "Fonts:        @Fonts"
@set H = "Scripts:      @Script"
@set I = "Batch:        @Batch"
@set J = "Material:     @Material"
@cls
  File Directories
  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
  These are the directories where the specified file types will be
  installed and where the software will by default expect to find them.
  Select an item to change its directory, or select "CONTINUE" to return
  to the Installation Settings screen.
  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
  Current directories:
@movecstr(21, 2, 15+32, " [Arrow Keys]=Scroll                                                          ")
@movecstr(22, 2, 15+32, "      [ENTER]=Select                                               [ESC]=Quit ")
@endgroups

@if ( 'A' [= @group )
   @goto SETTINGS
@elseif ( 'B' [= @group )
   @TmpFileType = "Models"
   @TmpDir = @Models
@elseif ( 'C' [= @group )
   @TmpFileType = "Pictures"
   @TmpDir = @Pictures
@elseif ( 'D' [= @group )
   @TmpFileType = "Fonts"
   @TmpDir = @Fonts
@elseif ( 'H' [= @group )
   @TmpFileType = "Scripts"
   @TmpDir = @Script
@elseif ( 'I' [= @group )
   @TmpFileType = "Batch"
   @TmpDir = @Batch
@elseif ( 'J' [= @group )
   @TmpFileType = "Material"
   @TmpDir = @Material
@endif

@getsubdir @TmpDir
@Prompt = " New @TmpFileType directory: "
@cls
  @TmpFileType Directory
  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
  Enter a new directory for files of this type.  If the directory does
  not exist, it will be created.  If it does exist, any files which have
  the same name as a file being installed will be overwritten.
  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

  Current @TmpFileType directory:  @TmpDir
@movecstr(21, 2, 15+32, " [ENTER]=Accept                                                               ")
@movecstr(22, 2, 15+32, "                                                                   [ESC]=Quit ")
@move(10,2)
@endsubdir

@if ( 'B' [= @group )
   @if (@strfind("@TmpDir ", "@Models ") == (-1))
      @clearoption(31)
   @endif
   @Models = @TmpDir
@elseif ( 'C' [= @group )
   @if (@strfind("@TmpDir ", "@Pictures ") == (-1))
      @clearoption(32)
   @endif
   @Pictures = @TmpDir
@elseif ( 'D' [= @group )
   @if (@strfind("@TmpDir ", "@Fonts ") == (-1))
      @clearoption(33)
   @endif
   @Fonts = @TmpDir
@elseif ( 'H' [= @group )
   @if (@strfind("@TmpDir ", "@Script ") == (-1))
      @clearoption(37)
   @endif
   @Script = @TmpDir
@elseif ( 'I' [= @group )
   @if (@strfind("@TmpDir ", "@Batch ") == (-1))
      @clearoption(38)
   @endif
   @Batch = @TmpDir
@elseif ( 'J' [= @group )
   @if (@strfind("@TmpDir ", "@Material ") == (-1))
      @clearoption(39)
   @endif
   @Material = @TmpDir
@endif

@goto FILEDIRS


SELECTFILES:

// decide disk required - round it up
@DiskReqK = (@DiskReq/1024)
@if (@DiskReqK >= @K)
  @TmpValue = (@DiskReq / @M)
  @if (@DiskReq > (@TmpValue * @M))
    @TmpValue = (@TmpValue + 1)
  @endif
  @TmpDiskReqStr = "@TmpValue M"
@else
  @TmpDiskReqStr = "@DiskReqK K"
@endif

@getoption
@checkbox
@option 41  = "Program & Support Files    @ProgramReqM M"
@if (@PictureReqM > 0)
   @option 44  = "Pictures                   @PictureReqM M"
@endif
@if (@FontReqM > 0)
   @option 45  = "Fonts                      @FontReqM M"
@endif
@if (@CameraReqK > 0)
   @option 46  = "Cameras                    @CameraReqK K"
@endif
@if (@MatReqK > 0)
   @option 47  = "Materials & Palettes       @MatReqK K"
@endif
@if (@ProcReqK > 0)
   @option 48  = "Procedurals                @ProcReqK K"
@endif
@if (@MotionReqM > 0)
   @option 49  = "Motion Scripts             @MotionReqM M"
@endif
@if (@ExampleReqM > 0)
   @option 50  = "Sample Models & Animations @ExampleReqM M"
@endif
@localwindow(15, 24)
@cls
  Files To Install
  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
  These are the installable files. Program & Support Files are required to
  run the software; the others are optional. Files in the install directory
  having the same name as files being installed will be overwritten.
  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

      Files:                Size:  Install:
@movecstr(8, 48, 15+16, "Current Installation Uses: @TmpDiskReqStr")
@movecstr(21, 2, 15+32, " [Arrow Keys]=Scroll   [SPACE]=Toggle                                         ")
@movecstr(22, 2, 15+32, "      [ENTER]=Accept                                               [ESC]=Quit ")
@endoption

// change required disk space
@DiskReq = (0)
@if (41 [= @option)
   @DiskReq = (@DiskReq + @ProgramReqM * @M)
@endif
@if (44 [= @option)
   @DiskReq = (@DiskReq + @PictureReqM * @M)
@endif
@if (45 [= @option)
   @DiskReq = (@DiskReq + @FontReqM * @M)
@endif
@if (46 [= @option)
   @DiskReq = (@DiskReq + @CameraReqK * @K)
@endif
@if (47 [= @option)
   @DiskReq = (@DiskReq + @MatReqK * @K)
@endif
@if (48 [= @option)
   @DiskReq = (@DiskReq + @ProcReqK * @K)
@endif
@if (49 [= @option)
   @DiskReq = (@DiskReq + @MotionReqM * @M)
@endif
@if (50 [= @option)
   @DiskReq = (@DiskReq + @ExampleReqM * @M)
@endif
@DiskReqK = (@DiskReq / @K)

@goto SETTINGS


CONTINUE:

// check required disk space
@if (@DiskReq == 0)
@Display
@cls
   No files chosen for installation.
                                     @pause
@enddisplay
@goto SETTINGS
@endif


// Disk Space less than required for installation
@if (@DiskReqK > @DiskFreeK)
@Display
  @cls
  Insufficient Disk Space
  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
  The current installation of @Name requires
  @DiskReqK K of disk space, but only @DiskFreeK K of disk space is
  available on the Program Drive you have chosen. Select another Program
  Drive, reduce the amount of disk space required by installing fewer files
  or Quit the installation and delete some files before installing
  @Name.
  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
                                     @pause
@enddisplay
@goto SETTINGS
@endif

// Get the serial number if they installed the executable
@if (41 [= @option)
@getstring @SerialNumber
  Serialization
  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
  Enter the serial number for your copy of @Name.
  You will find it on your registration card.  Look for a number in the
  following format:  XXXX-XXXX-XXXX
  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

  Note: You must enter a serial number for @Name
  to be installed. [Esc] will stop installation.
@movecstr(21, 2, 15+32, " [ENTER]=Accept                                                               ")
@movecstr(22, 2, 15+32, "                                                                   [ESC]=Quit ")
@move(10, 3)
@Prompt = " Serial Number: "
@endstring

@if (@strlen(@SerialNumber) != 14)
   @goto CONTINUE
@endif
@endif // option 41


INSTALL:

// Make required directories
@if (41 [= @option)
   @mkdir("@outdrive:@Models")
   @mkdir("@outdrive:@Pictures")
   @mkdir("@outdrive:@Fonts")
   @mkdir("@outdrive:@Batch")
   @mkdir("@outdrive:@Material")
   @mkdir("@outdrive:@Script")
   @mkdir("@outdrive:@Subdir\\vesa")
@endif // option 41
@if (41 [= @option)
   @mkdir("@outdrive:@Subdir\\aawin")
@endif // option 41

@definedisk
   @label = "@Name v@Version disk 1"
   @if (41 [= @option)
      @file read_me.txt
      @beginlib @Exefile.001
         @file @Exefile.exe @out @outdrive:@Subdir\*.*
      @endlib
   @endif // option 41
@enddisk

@definedisk
   @label = "@Name v@Version disk 2"
   @if (41 [= @option)
      @beginlib @Exefile.002
         @file @Exefile.exe @out @outdrive:@Subdir\*.*
      @endlib
      @beginlib support.lif
         @file *.* @out @outdrive:@Subdir\*.*
      @endlib
      @beginlib setup.lif
         @file *.* @out @outdrive:@Subdir\*.*
      @endlib
      @beginlib vesa.lif
         @file *.* @out @outdrive:@Subdir\vesa\*.*
      @endlib
      @beginlib aawin.lif
         @file *.* @out @outdrive:@Subdir\aawin\*.*
      @endlib
   @endif // option 41
   @if ((@MatReqK > 0) && (47 [= @option))
      @beginlib basics.lif
         @file *.* @out @outdrive:@material\basics\*.*
      @endlib
      @beginlib ceramics.lif
         @file *.* @out @outdrive:@material\ceramics\*.*
      @endlib
      @beginlib glasses.lif
         @file *.* @out @outdrive:@material\glasses\*.*
      @endlib
      @beginlib metals.lif
         @file *.* @out @outdrive:@material\metals\*.*
      @endlib
      @beginlib plastics.lif
         @file *.* @out @outdrive:@material\plastics\*.*
      @endlib
      @beginlib stones.lif
         @file *.* @out @outdrive:@material\stones\*.*
      @endlib
      @beginlib woods.lif
         @file *.* @out @outdrive:@material\woods\*.*
      @endlib
   @endif // option 47
   @if ((@ExampleReqM > 0) && (50 [= @option))
      @beginlib groups.lif
         @file *.* @out @outdrive:@Models\*.*
      @endlib
   @endif // option 50
@enddisk

@definedisk
   @label = "@Name v@Version disk 3"
   @if ((@PictureReqM > 0) && (44 [= @option))
      @beginlib ffpics.lif
         @file *.* @out @outdrive:@Pictures\*.*
      @endlib
   @endif // option 44
   @if ((@MotionReqM > 0) && (49 [= @option))
      @beginlib motions.lif
         @file *.* @out @outdrive:@Script\*.*
      @endlib
   @endif // option 49
@enddisk

@definedisk
   @label = "@Name v@Version disk 4"
   @if ((@FontReqM > 0) && (45 [= @option))
      @beginlib fonts.lif
         @file *.* @out @outdrive:@Fonts\*.*
      @endlib
   @endif // option 45
   @if ((@ExampleReqM > 0) && (50 [= @option))
      @beginlib examples.lif
         @file *.mdl @out @outdrive:@Models\*.*
         @file *.ai @out @outdrive:@Models\*.*
         @file *.scr @out @outdrive:@Script\*.*
         @file *.beg @out @outdrive:@Script\*.*
      @endlib
      @beginlib cgiflc.lif
         @file *.* @out @outdrive:@Script\*.*
      @endlib
   @endif // option 50
@enddisk


END:

// Check if they already have a .CFG file
@HasCFG = @Exists("@OutDrive:@SubDir\\@CFGName.CFG")

@finish

@chdrive @outdrive

// Extract Motions from Libarary
@if ((@MotionReqM > 0) && (49 [= @option))
   @chdir "@Script"
   @cls
Extracting Motions . . .
   @if (@system("extract motions.lib /v") != 0)
      Unable to extract motions.
   @endif
   @if (@system("del extract.exe") != 0)
      Unable to delete extract.exe.
   @endif
   @if (@system("del motions.lib") != 0)
      Unable to delete motions.lib.
   @endif
@endif

@chdir "@subdir"

@if (41 [= @option)
   // update serial number
   @if (@system("serial @SerialNumber") != 0)
      Unable to serialize @Name.
   @endif
   @if (@system("del serial.exe") != 0)
      Unable to delete serial.exe.
   @endif
@endif

// If they installed the executable and they don't have a .CFG file
// check for VESA TSR and run the mini-setup
@if ((@HasCFG == @False) && (41 [= @option))
   @cls

   // Create an initial .CFG file with default graphics driver
   @if ((@videocard != 'V') || (@spawn("isvesa") == 0))
      @write("@CFGName.CFG", "at", "Screen STD_VGA.s32   # \"VGA (Standard VGA)\"\n")
   @else
      @write("@CFGName.CFG", "at", "Screen VESA_VGA.s32   # \"VESA Compatible VGA (no TSR)\"\n")
      @if (@spawn("isvesa") == 1)
         // Just leave as default
      @elseif (@spawn("isvesa") == 2)
         @write(, , "Menu \"VESA_VGA\" 640x480x15\n")
         @write(, , "Wireframe \"VESA_VGA\" 640x480x15\n")
         @write(, , "FullColor \"VESA_VGA\" 640x480x15\n")
      @elseif (@spawn("isvesa") == 3)
         @write(, , "Menu \"VESA_VGA\" 640x480x16\n")
         @write(, , "Wireframe \"VESA_VGA\" 640x480x16\n")
         @write(, , "FullColor \"VESA_VGA\" 640x480x16\n")
      @elseif (@spawn("isvesa") == 4)
         @write(, , "Menu \"VESA_VGA\" 640x480x24\n")
         @write(, , "Wireframe \"VESA_VGA\" 640x480x24\n")
         @write(, , "FullColor \"VESA_VGA\" 640x480x24\n")
      @elseif (@spawn("isvesa") == 5)
         @write(, , "Menu \"VESA_VGA\" 640x480x32\n")
         @write(, , "Wireframe \"VESA_VGA\" 640x480x32\n")
         @write(, , "FullColor \"VESA_VGA\" 640x480x32\n")
      @endif
   @endif

   @if (@system("setup msetup.dat @RunBatch") != 0)
      Unable to execute setup.
   @endif
   @if (@system("del @CFGName.BAK") != 0)
      Unable to delete @CFGName.BAK.
   @endif
   @cls
  Installation Complete
  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
  To run the software, type @Runbatch at the DOS prompt, and hit enter. To
  customize your software preferences, type SETUP at the DOS prompt and hit
  enter.
  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
                                     @pause
@endif
@if (41 [= @option)
   @if (@system("del isvesa.exe") != 0)
      Unable to delete isvesa.exe.
   @endif
@endif

// Create a batch file at the root directory of the C: drive to run the SW.
@if ((@Exists("C:\\@RunBatch.BAT") == @False) && (41 [= @option))
   @write("C:\\@RunBatch.BAT", "at", "\@ECHO OFF\n")
   @write(, , "@OutDrive:\n")
   @write(, , "CD \\@SubDir\n")
   @write(, , "@RunBatch\n")
@endif

@if ((@HasCFG == @False) && (31 [! @option))	// Model path has changed
   @write("@CFGName.CFG", "at", "ModelPath @Models\n")
   @write(, , "OBFPath @Models\n")
   @write(, , "GroupPath @Models\n")
   @write(, , "AMFPath @Models\n")
@endif
@if ((@HasCFG == @False) && (32 [! @option))	// Pictures path has changed
   @write("@CFGName.CFG", "at", "PicturePath @Pictures\n")
@endif
@if ((@HasCFG == @False) && (33 [! @option))	// Fonts path has changed
   @write("@CFGName.CFG", "at", "FontPath @Fonts\n")
@endif
@if ((@HasCFG == @False) && (37 [! @option))	// Script path has changed
   @write("@CFGName.CFG", "at", "AnimPath @Script\n")
@endif
@if ((@HasCFG == @False) && (38 [! @option))	// Batch path has changed
   @write("@CFGName.CFG", "at", "BatchPath @Batch\n")
@endif
@if ((@HasCFG == @False) && (39 [! @option))	// Material path has changed
   @write("@CFGName.CFG", "at", "MatPath @Material\n")
@endif

@endfinish
