ReadDOS.txt----------------------------------------------------

                      16-bit DOS Version

Contents:
    
    o EXECUTE\CPUSPEED.EXE     -- 16-bit CPUINFO binary for DOS
    o EXECUTE\SOURCE\*.*       -- Source Files for the DLLs, the
                                    test code, and the DOS* code

Installation:

-Running:
 Execute the CPUSPEED.EXE file.


OVERVIEW

 CPUSPEED requires at least an Intel386(TM) processor and MS-
 Windows* 3.1. CPUSPEED returns the processor family and the
 processor speed to the terminal screen. On systems with
 processors below Intel386 level, the processor family will
 be returned, but the processor speed will not since the speed
 determination code does not support anything below the
 Intel386.
 
 To determine what type of processor is in the computer, 
 the CPUSPEED uses the standard Intel CPUID opcode. To
 determine clock speed, the CPUSPEED uses one of two algorithms. 

 The first algorithm (for use on systems between the Intel386
 and the Pentium(R) processor) directly uses the PC Chipset Timer
 to determine the amount of time taken to run a specified set of
 instructions. The speed is then calculated based on the number
 of cycles run and the number of microseconds it took to run 
 them. This algorithm is basically a very crude benchmark test.
 
 The second algorithm (for use on Pentium Pro(R) Processors or
 above again directly peeks the PC Chipset Timer and determines
 the number cycles between peeks using the Read Time Stamp
 counter opcode.

Test Program Functionality

 1. CPU Family - this tests the wincpuid() function in 
      cpuinf16.dll, and returns the cpu Family (5-Pentium(R)
      processor, 4-i486(TM) processor ...) as a hex number in a
      windows message box.

 2. CPU Extensions - this tests the wincpuidext() function in 
      cpuinf16.dll, and returns the Processor Type/Family/
      Model/Stepping as a hexidecimal number in a windows 
      message box. The processor T/F/M/S are a 16-bit quantity
      returned in the AX register by the CPUID operation.  If 
      CPUID is not supported, only the Family, in bits 11:8,
      are displayed by tstdll16.
         AX(15:14) = Reserved
         AX(13:12) = Processor type
         AX(11:8)  = CPU Family
         AX(7:4)   = CPU Model(if CPUID supported)
         AX(3:0)   = Stepping #(if CPUID supported)

 3. CPU Speed - this tests the cpuspeed() function in
      cpuinf16.dll, and returns a FREQ_INFO structure which
      contains the calculated speed of the processor, the
      normalized (to the nearest known processor speed) value
      of the processor, and the number of clock cycles and
      microseconds that elapsed during the test sampling. After
      displaying this information, the user is asked whether
      to proceed with the testing and run 100 more iterations
      of the test. The results are then displayed
      statistically. This statistical feedback is primarily for
      the user to get information on the precision of the 
      cpuspeed() function. Note- Multiple sampling iterations
      are done within cpuspeed() as well. In most cases, 
      multiple calls to cpuspeed will not increase the
      accuracy of the data.If greater accuracy is necessary
      simply adjust the constants in SPEED.H.

 4. CPU Features - this tests the wincpufeatures() function in 
      cpuid16.dll, and returns the Feature Flags as a 
      hexidecimal number in a windows message box. The Feature
      Flags are a 32-bit quantity returned in the EDX register
      by the CPUID operation.

 5. Read Time Stamp - this tests the winrdtsc() function in
      cpuinf16.dll. The 64-bit Time Stamp register is currently
      available only on Pentium(R) and Pentium Pro(R)
      processors. All other processors will return all zeroes
      for the time stamp value.

6. Get DLL Version - this tests the getdllversion() function in
      CPUINF16.DLL. It returns an unsigned short. The upper byte
      is the major version and the lower byte is the minor version.



    +----------------------------------------------------------+
    | This program has been developed by Intel Corporation.    |
    | You have Intel's permission to incorporate this code     |
    | into your product, royalty free.  Intel has various      |
    | intellectual property rights which it may assert under   |
    | certain circumstances, such as if another manufacturer's |
    | processor mis-identifies itself as being "GenuineIntel"  |
    | when the CPUID instruction is executed.                  |
    |                                                          |
    | Intel specifically disclaims all warranties, express or  |
    | implied, and all liability, including consequential and  |
    | other indirect damages, for the use of this code,        |
    | including liability for infringement of any proprietary  |
    | rights, and including the warranties of merchantability  |
    | and fitness for a particular purpose.  Intel does not    |
    | assume any responsibility for any errors which may       |
    | appear in this code nor any responsibility to update it. |
    +----------------------------------------------------------+

  Information in this document is provided in connection with
  Intel products.  Intel assumes no liability whatsoever, 
  including infringement of any patent or copyright, for sale 
  and use of Intel products except as provided in Intel's Terms 
  and Conditions of Sale for such products.
     
  Intel retains the right to make changes to these specifications 
  at any time, without notice.
  

  * Other brands and names are the property of their respective
    owners.
  
  Copyright (c) 1995, Intel Corporation.  All rights reserved.

----------------------------------------------------ReadDOS.txt
