home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast2.iso / turbopas / sys60a.zip / SYS60A.DOC < prev    next >
Text File  |  1991-03-26  |  32KB  |  941 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.                                 TURBO PASCAL 6.0
  20.                                    SYS60A.TPU
  21.                                INSTALLATION GUIDE
  22.  
  23.                                   Version 6.0a
  24.                                  March 26, 1991
  25.  
  26.                Copyright (C) 1990-1991 Eagle Performance Software
  27.                               All Rights Reserved.
  28.  
  29.  
  30.  
  31.                                _______                     
  32.                           ____|__     |               (tm) 
  33.                        --|       |    |------------------- 
  34.                          |   ____|__  |  Association of    
  35.                          |  |       |_|  Shareware         
  36.                          |__|   o   |    Professionals     
  37.                        -----|   |   |--------------------- 
  38.                             |___|___|    MEMBER            
  39.  
  40.  
  41.    SYSTEM Unit                                Installation Guide, Version 6.0a
  42.  
  43.  
  44.  
  45.                        T A B L E   O F   C O N T E N T S
  46.  
  47.         1. INTRODUCTION  . . . . . . . . . . . . . . . . . . . . . 3
  48.              Features  . . . . . . . . . . . . . . . . . . . . . . 3
  49.              Philosophy  . . . . . . . . . . . . . . . . . . . . . 3
  50.              Licensing . . . . . . . . . . . . . . . . . . . . . . 3
  51.              Discounts . . . . . . . . . . . . . . . . . . . . . . 4
  52.              Customer Service  . . . . . . . . . . . . . . . . . . 4
  53.              ASP . . . . . . . . . . . . . . . . . . . . . . . . . 5
  54.  
  55.         2. GETTING STARTED . . . . . . . . . . . . . . . . . . . . 6
  56.              Distribution Files  . . . . . . . . . . . . . . . . . 6
  57.              Installation  . . . . . . . . . . . . . . . . . . . . 6
  58.  
  59.         3. PERFORMANCE . . . . . . . . . . . . . . . . . . . . . . 8
  60.              LongInt Math  . . . . . . . . . . . . . . . . . . . . 8
  61.              Decimal / String Conversions  . . . . . . . . . . . . 8
  62.              String handling . . . . . . . . . . . . . . . . . . . 8
  63.              Set Handling  . . . . . . . . . . . . . . . . . . . . 9
  64.              Other Improvements  . . . . . . . . . . . . . . . . . 9
  65.              Code Size . . . . . . . . . . . . . . . . . . . . . . 10
  66.              Greater Speeds  . . . . . . . . . . . . . . . . . . . 10
  67.  
  68.         4. SPEED TESTING . . . . . . . . . . . . . . . . . . . . . 11
  69.              Profiler  . . . . . . . . . . . . . . . . . . . . . . 11
  70.              Rate Timer  . . . . . . . . . . . . . . . . . . . . . 11
  71.  
  72.         APPENDIX A: Application Products . . . . . . . . . . . . . 13
  73.  
  74.         APPENDIX B: Revision History . . . . . . . . . . . . . . . 16
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.                                        2
  101.    SYSTEM Unit                                Installation Guide, Version 6.0a
  102.  
  103.  
  104.    1.  I N T R O D U C T I O N
  105.  
  106.  
  107.    FEATURES
  108.  
  109.    Welcome to SYS60 replacement unit for Turbo Pascal 6.0!
  110.  
  111.    How would you like to speed up your Turbo Pascal 6.0 programs without 
  112.    changing a single line of code?  You have just found the easiest way to do 
  113.    it!  SYS60 replaces the SYSTEM.TPU in your TURBO.TPL library with our unit 
  114.    which has much faster algorithms for over 32 built-in procedures and 
  115.    functions like Pos and Div.  See as much as 800% increase in speed!
  116.  
  117.    How can you do it?  Simply run a batch file to replace your SYSTEM.TPU.  
  118.    Then any program you compile will automatically have the faster algorithms 
  119.    - no code to change.  And you get the exact same results - only faster!
  120.    
  121.  
  122.    PHILOSOPHY
  123.  
  124.    The RTL - Borland has been gracious enough to make the Run-Time Library 
  125.    (RTL) assembler source code available to any user for their own 
  126.    modifications (for a license fee of $195).  There are six units specific to 
  127.    TP 6.0 in the RTL and the SYSTEM unit is by far the most significant.  But 
  128.    why would anyone want to take the time for a critical look at this 
  129.    fundamental code?  Most programmers are trying to stay busy and produce 
  130.    applications.  But after getting a copy for ourselves, we noticed that 
  131.    there were some ways that we could trim the amount of time that the CPU 
  132.    spends on a number of SYSTEM routines.  And if these routines can be sped 
  133.    up, then your overall applications can be sped up as well - without 
  134.    changing any of your source code.
  135.  
  136.    The Critical Look - We decided to take whatever time it took to go back 
  137.    over the SYSTEM unit to produce the fastest code possible.  Here are some 
  138.    of the things we considered:
  139.  
  140.      . Created 16-bit transfer methods in lieu of 8-bit.
  141.      . Replaced PUSH/POP with MOV.
  142.      . Combined register/flag operations.
  143.      . Reduced routine CALLs.
  144.      . Tightened clocks in intensive loops.
  145.      . Tested for CPU in use.
  146.      . Used CPU registers in lieu of stack.
  147.      . Used pass-through conditional jumps.
  148.      . Eliminated redundant jumps.
  149.  
  150.    In some routines, this would reduce the amount of code to achieve the same 
  151.    operation.  In others, a few extra bytes greatly increased the speed.  
  152.    SYS60 is the final result of this effort.
  153.  
  154.  
  155.    LICENSING
  156.  
  157.    Registration - These routines and the documentation have been released for 
  158.  
  159.  
  160.    Chapter 1, Introduction                                             Page 3
  161.    SYSTEM Unit                                Installation Guide, Version 6.0a
  162.  
  163.  
  164.    distribution as Shareware.  You have been given the chance to sample the 
  165.    full capability of SYS without risk!  If you find that SYS is a valuable 
  166.    tool, then you are expected to register.  You will find a reasonable 
  167.    licensing schedule found in LICENSE.LIC to meet private or commercial 
  168.    needs.
  169.  
  170.    Source Code - Due to Borland's License Agreement on the Run-Time 
  171.    Library (RTL), we are not authorized to release source code based on the 
  172.    RTL no matter what modifications we have made.  So, at the current time, 
  173.    the source code will not be available for release and will just be managed 
  174.    by Eagle Performance Software.  Please contacts us for the latest 
  175.    developments.
  176.  
  177.    Commercial Version - This may be our last shareware version.  Future 
  178.    versions will be sold commercially.
  179.  
  180.  
  181.    DISCOUNTS
  182.  
  183.    Should you register before June 31, 1991, you will be sent an even 
  184.    faster system unit than the one supplied in this archive.  Plus, you will 
  185.    get a 20% extra discount on our STRG61 string handling unit when you 
  186.    register at the same time.
  187.  
  188.  
  189.    CUSTOMER SERVICE
  190.  
  191.    If you have questions, comments, or suggestions, the Eagle can be contacted 
  192.    by four means - (1) telephone, (2) CompuServe, (3) The Eagle BBS, or 
  193.    (4) mail.
  194.  
  195.    Telephone - To contact the Eagle, you can reach us by phone at 
  196.    (214) 539-7855 on weekdays and Saturday from 9:00 a.m. to 7:00 p.m. CST.
  197.  
  198.    CompuServe - Another means is through CompuServe.  For personal contact, 
  199.    Jordan Gallagher [73557,2342] or Jim LeMay [76011,217] can be reached 
  200.    through CIS MAIL.
  201.  
  202.    The Eagle BBS - You can also contact us on our 24-hour BBS at (214) 539-
  203.    9878, at connections of 1200/2400/9600 MNP5/V.42bis N81.
  204.  
  205.    Mail - For registration or problems, please write:
  206.  
  207.        Eagle Performance Software
  208.        P.O. Box 292786
  209.        Lewisville, TX  75029-2786
  210.  
  211.    In your written request for resolving problems, be sure to include:
  212.  
  213.      . A diskette of compilable source code of the problem.
  214.      . The Eagle product and version number.
  215.      . The computer CPU.
  216.  
  217.  
  218.  
  219.  
  220.    Chapter 1, Introduction                                             Page 4
  221.    SYSTEM Unit                                Installation Guide, Version 6.0a
  222.  
  223.  
  224.    ASP
  225.  
  226.    SYS is a shareware program conforming to the standards of the Association 
  227.    of Shareware Professionals (ASP).  You can get more information about ASP 
  228.    by writing to:
  229.     
  230.      Association of Shareware Professionals
  231.      545 Grover Road
  232.      Muskegon, MI  49442
  233.  
  234.    This program is produced by a member of the Association of Shareware 
  235.    Professionals (ASP).  ASP wants to make sure that the shareware principle 
  236.    works for you.  If you are unable to resolve a shareware-related problem 
  237.    with an ASP member by contacting the member directly, ASP may be able to 
  238.    help.  The ASP Ombudsman can help you resolve a dispute or problem with an 
  239.    ASP member, but does not provide technical support for member's products.  
  240.    Please write to:
  241.  
  242.      ASP Ombudsman
  243.      545 Grover Road
  244.      Muskegon, MI  49442
  245.  
  246.   or send a CompuServe message via CIS MAIL to ASP Ombudsman 70007,3536.
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.    Chapter 1, Introduction                                             Page 5
  281.    SYSTEM Unit                                Installation Guide, Version 6.0a
  282.  
  283.  
  284.    2.  G E T T I N G   S T A R T E D
  285.  
  286.    This section will acquaint you with the files on distribution disk and show 
  287.    you how to install the new SYSTEM.TPU.
  288.  
  289.  
  290.    DISTRIBUTION FILES
  291.  
  292.    In this version, SYS60A.ZIP contains:
  293.  
  294.      Sys60a  .bat:  Automatic installation batch file.
  295.      Sys60a  .tpu:  System replacement unit.
  296.      Sys60a  .doc:  This file.
  297.      Rate60a .pas:  A simple, accurate time test routine for 
  298.                     reps/second.
  299.      ToPrint .txt:  Instructions for printing docs.
  300.      License .lic:  Order form.
  301.      Statment.lic:  Statement for license terms and conditions.
  302.  
  303.    Files have been archived using PKZIP.  They should be authentically 
  304.    verified after extraction with our company name -  Eagle Performance 
  305.    Software.
  306.  
  307.  
  308.    INSTALLATION
  309.  
  310.    To install the new system unit, simply run the SYS60A.BAT file in your 
  311.    TP60 directory.  But just to make you feel comfortable about running it, 
  312.    we'll explain what it does first.
  313.  
  314.      1. It creates a back-up copy of your current library 
  315.         TURBO.TPL in a file called TPL-BOR.TPL.  (BOR = Borland)
  316.      2. It then creates a second copy of this library in a file 
  317.         called TPL-EPS.TPL.  (EPS = Eagle Performance Software)
  318.      3. Then it modifies TPL-EPS.TPL by installing the new
  319.         SYSTEM.TPU.
  320.      4. Finally, TPL-EPS.TPL is copied to TURBO.TPL.
  321.      5. As a clean-up measure, SYSTEM.TPU is deleted.  So be sure 
  322.         you have your original ZIP file of SYS60A.TPU.
  323.  
  324.    The installation only needs to be done one time.  In fact, it won't let you 
  325.    do it more than once.  Should you ever want to go back to your original 
  326.    library, simply copy TPL-BOR.TPL to TURBO.TPL.  To install, do the 
  327.    following steps:
  328.  
  329.      1. Go to your TP directory and be sure that TURBO.TPL 
  330.         exists.
  331.      2. Also, be sure that TPUMOVER.EXE is on your path.
  332.      3. If you are upgrading to a new version of SYS, be sure 
  333.         that TURBO.TPL is considered your "original" library. (If 
  334.         not, copy TPL-BOR.TPL to TURBO.TPL.)
  335.      4. Also be sure that there are NO files named SYSTEM.TPU, 
  336.         TPL-BOR.TPL, or TPL-EPS.TPL in this directory.
  337.      5. Copy SYS60A.TPU and SYS60A.BAT into this directory.
  338.  
  339.  
  340.    Chapter 2, Getting Started                                          Page 6
  341.    SYSTEM Unit                                Installation Guide, Version 6.0a
  342.  
  343.  
  344.      6. Run SYS60A.BAT.
  345.      7. Compile your programs as usual.
  346.  
  347.    Recompiling - To get the new system into your programs, simply recompile 
  348.    your program to create an EXE file.  There is no need to rebuild TPUs.  
  349.    Since SYS60 was designed as drop-in replacement, its interface was not 
  350.    modified.  This means all pre-compiled TPUs will compile as is.
  351.  
  352.    No Learning Curve - That's all there is to making your programs run faster.
  353.    No code changes and no new routines to learn about.  If your programs 
  354.    intensively use the improved routines, the speed increase will really be 
  355.    noticeable.
  356.  
  357.  
  358.  
  359.  
  360.  
  361.  
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.    Chapter 2, Getting Started                                          Page 7
  401.    SYSTEM Unit                                Installation Guide, Version 6.0a
  402.  
  403.  
  404.    3.  P E R F O R M A N C E
  405.  
  406.    This section will show you which algorithms were improved and the range of 
  407.    speed improvements.  Speed increases were checked on a 386/20Hz computer.  
  408.    Values will vary between applications and hardware.
  409.  
  410.  
  411.    LONGINT MATH
  412.  
  413.    Long integer math speed is greatly improved.  Intel 80386 users will 
  414.    enjoy even greater speed since the algorithms check for the CPU.  A source 
  415.    code line like the following:
  416.  
  417.       i1 := abs(i2 * i3 div i4 mod i5);
  418.  
  419.    would get these increases in speed:
  420.  
  421.       Operation                     Increase
  422.       ----------------------------  --------
  423.       *                                  15%
  424.       div / mod (16-bit cpu's)      250-630%
  425.       div / mod (32-bit cpu's)          800%
  426.       abs                                 5%
  427.  
  428.  
  429.    DECIMAL / STRING CONVERSIONS
  430.  
  431.    Conversions from string to scalars and vice-versa are improved in speed as 
  432.    well.  The improvement is readily noticed.  Scalars are bytes, short 
  433.    integers, integers, words, and long integers.  Some values of reals are 
  434.    also affected, but it is minimal.  The procedures Str and Val are directly 
  435.    affected as well as conversions in Read, ReadLn, Write, and WriteLn 
  436.    statements.  Intel 80386 users will also notice an additional increase in 
  437.    speed since the routine detects the CPU in operation.
  438.  
  439.       Procedure                     Increase
  440.       ----------------------------  --------
  441.       Str  (scalar)                  40-100%
  442.       Str  (scalar) (32-bit cpu's)  115-205%
  443.       Val  (scalar)                      19%
  444.  
  445.  
  446.    STRING HANDLING
  447.  
  448.    String handling is improved mostly by using 16-bit transfers instead of 
  449.    just 8-bit handling.  Plus, the algorithms are more efficient.  The 
  450.    longer the string, the more apparent the increase in speed.  The speed 
  451.    increases below reflect the maximum increase on 255-char strings:
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.    Chapter 3, Performance                                              Page 8
  461.    SYSTEM Unit                                Installation Guide, Version 6.0a
  462.  
  463.  
  464.       Operation                     Increase    Comments
  465.       ----------------------------  ----------  -------------------------
  466.       Loading, storing, moving      up to  70%  (such as ":=" )
  467.       Comparing                     up to  70%  (such as Str1<Str2)
  468.       Pos                           up to 340%
  469.       Concat                        up to  63%
  470.       Copy                          up to  34%
  471.       Insert / Delete               up to 400%
  472.       Covert char to string                 8%
  473.  
  474.  
  475.    SET HANDLING
  476.  
  477.    Set handling is also improved slightly overall, but the variable range is 
  478.    improved greatly.  Improvements are as follows:
  479.  
  480.       Operation                     Increase
  481.       ----------------------------  ----------
  482.       Subset/superset relation      up to  18%
  483.       Intersection                          8%
  484.       Union                                 8%
  485.       Add variable range            up to 850%
  486.       Add component                         5%
  487.       Difference                            7%
  488.  
  489.  
  490.    OTHER IMPROVEMENTS
  491.  
  492.    Other procedures have also been improved with more efficient preparation 
  493.    for DOS interfaces.  But depending on your version of DOS and the 
  494.    efficiency of your hardware, you may or may not see any difference in 
  495.    speed:
  496.  
  497.       Procedure / Function          Increase
  498.       ----------------------------  ----------
  499.       Assign        (text files)    up to   4%
  500.       FilePos                             240%
  501.       FileSize                             17%
  502.       Rename                        up to 120%
  503.       Read/ReadLn   (text files)    up to  60%
  504.       Write/WriteLn (text files)    up to 330%
  505.  
  506.    Text Files - If you use text files, you will be able to see much greater 
  507.    results with this unit.  Procedures like Write and WriteLn use several 
  508.    routines that are transparent to the programmer.  This includes writing 
  509.    strings, characters, integers, and reals.  
  510.  
  511.    SetTextBuf - TIP: If you haven't already learned about it, read up on the 
  512.    SetTextBuf procedure on page 140 of the Turbo Pascal Reference Guide.  A 
  513.    16k buffer along with SYS60 can increase your writing speeds 10 times or 
  514.    more.  For example:
  515.  
  516.  
  517.  
  518.  
  519.  
  520.    Chapter 3, Performance                                              Page 9
  521.    SYSTEM Unit                                Installation Guide, Version 6.0a
  522.  
  523.  
  524.      var
  525.        TF1: text;
  526.        Buf: array[1..16384] of char;
  527.      begin
  528.        Assign     (TF1,'file1');
  529.        SetTextBuf (TF1,Buf);     { Place it right after Assign }
  530.        Rewrite    (TF1);
  531.        { ... }
  532.        Close      (TF1);
  533.      end.
  534.  
  535.    By default, the optional size parameter for SetTextBuf is not required in 
  536.    the above example.  However, if you chose to use untyped pointers, then the 
  537.    size parameter is mandatory:
  538.  
  539.      var
  540.        TF1: text;
  541.        BufPtr: pointer
  542.      begin
  543.        GetMem (BufPtr,10000);
  544.        Assign     (TF1,'file1');
  545.        SetTextBuf (TF1,BufPtr^,10000);  { Size parameter required here }
  546.        Rewrite    (TF1);
  547.        { ... }
  548.        Close      (TF1);
  549.      end.
  550.  
  551.    If the size was not specified, by default, the buffer size is set to zero 
  552.    cutting off all disk I/O and leaving your programs in an endless loop.  The 
  553.    Library Reference Guide does not mention this.  On the other hand, the use 
  554.    of typed pointers does not require a size parameter.
  555.     
  556.    Objects - Copying of objects is also improved up to 95%.
  557.  
  558.  
  559.    CODE SIZE
  560.  
  561.    Should your programs use all of the new features, they would increase in 
  562.    size by only 320 bytes - not a bad trade-off for the speed!  You can check 
  563.    your own actual increase in size, but be sure to turn off all debugging 
  564.    before comparing.
  565.  
  566.  
  567.    GREATER SPEEDS
  568.  
  569.    Should you decide to register, you will be sent an even faster system unit 
  570.    with the added features of variable and memory handling increases of up to 
  571.    95%.  Plus, you can register for STRG61 string unit at a 20% discount 
  572.    before June 31, 1990.
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  
  579.  
  580.    Chapter 3, Performance                                              Page 10
  581.    SYSTEM Unit                                Installation Guide, Version 6.0a
  582.  
  583.  
  584.    4.  S P E E D   T E S T I N G
  585.  
  586.  
  587.    PROFILER
  588.  
  589.    The easiest way to see differences in speed is to run your program through 
  590.    a profiler program such as the one provided by Borland called Turbo 
  591.    Profiler (TPROF).  This program is provided with Turbo Assembler/Debugger 
  592.    2.0 or a later version.  It will display the actual time used in the time-
  593.    sensitive portions of your code that you want to observe.  This tool can 
  594.    give you the proof you need to see speed improvements.
  595.  
  596.    Quick Samples - Some sections of code may be too fast for TPROF to give a 
  597.    measurable value.  If you do use it for very quick areas or individual 
  598.    lines, our experience shows that an "enable" operation must be placed on 
  599.    the first line and a "disable" after the last line.  For example, suppose 
  600.    you wanted to measure the time duration of lines 200 and 201:
  601.  
  602.          LongInt1 := LongInt2;               { Line 199 }
  603.       e> LongInt3 := LongInt2 div LongInt4;  { Line 200 }
  604.       => LongInt5 := LongInt6;               { Line 201 }
  605.       d> LongInt7 := LongInt5;               { Line 202 }
  606.          delay (1000);                       { Line 203 }
  607.  
  608.    If you did not place a "disable" on line 202, the time duration of lines 
  609.    202 and onward would have been included on line 201.  This would make you 
  610.    think that line 201 took 1 full second to run because the delay of line 203 
  611.    would have been included.  Lines 200-201 are so fast that TPROF says that 
  612.    they both took 0.0000 seconds.  For something like this when there is only 
  613.    a few lines of code to measure, consider using the rate timer provided with 
  614.    SYS instead.
  615.  
  616.  
  617.    RATE TIMER
  618.  
  619.    Should you not have access to a profiling tool, a simple rate timer program 
  620.    has been included called RATE60.PAS so you can test your own code 
  621.    sequences.  This routine may actually be more helpful than Turbo Profiler, 
  622.    since RATE can display more resolution.
  623.  
  624.    Rate Timer - RATE60.PAS is a rate timer as opposed to an event timer.  A 
  625.    rate timer measures how many events occurred during a single duration, 
  626.    while an event timer measures the duration of a single event.  RATE has a 
  627.    high resolution of +/-1 repetition and is particularly suited for short 
  628.    events (<.01 seconds).
  629.  
  630.    Insert Code - The program is already set to run testing the DIV operation.  
  631.    If you run it as is, the program will run about 2 seconds and and return 
  632.    the result of "Reps/Second".  This tells how many times the sequence of 
  633.    code was executed in a second.  The higher the number of reps, the faster 
  634.    the speed.  You can test the program under either TPL-BOR.TPL or 
  635.    TPL-EPS.TPL by simply copying the appropriate file to TURBO.TPL.  The 
  636.    increase in speed can be seen by comparing the results between the two 
  637.    system units.  You can modify the code in the "Insert Code" area to test 
  638.  
  639.  
  640.    Chapter 4, Speed Testing                                            Page 11
  641.    SYSTEM Unit                                Installation Guide, Version 6.0a
  642.  
  643.  
  644.    any sequence of code you want.
  645.  
  646.    Reset Variables - Sometimes you will need to reset a variable to its 
  647.    original value before testing again.  Since you don't want the time it 
  648.    takes to reset the variables to affect the results, they should be 
  649.    subtracted out.  The RATE60 program automatically does this.  For example, 
  650.    if you were to test the DELETE procedure, you code may look something like 
  651.    the following:
  652.  
  653.        fillchar (MyStr,256,'a');
  654.        MyStr[0] := 255;
  655.        Delete (MyStr,1,1);
  656.  
  657.    The first two lines do the job of resetting the MyStr variable.  Instead of 
  658.    placing these two lines in the "Insert Code" area, they should be placed 
  659.    in the ResetVariables procedure.  Only the last line should be placed in 
  660.    the "Insert Code" area.  If you check out the code, you'll see that the 
  661.    ResetVariables procedure is used for both resetting the variables and is 
  662.    later subtracted out of the final result.  This gives you a true value for 
  663.    "Reps/Second".
  664.  
  665.    Init - Different from repeatedly resetting a variables, use the Init 
  666.    procedure for a one time initialization.  This will allow you to preserve 
  667.    a given value throughout the testing process.
  668.  
  669.    RepsPerSec - The variable RepsPerSec (or R) is the variable to observe in 
  670.    your watch window for the final results which is also output to the screen.  
  671.    It is probably easier to enter "R" into the watch window than RepsPerSec.  
  672.    Use either one and see how much SYS60 improves your speed!
  673.  
  674.  
  675.  
  676.  
  677.  
  678.  
  679.  
  680.  
  681.  
  682.  
  683.  
  684.  
  685.  
  686.  
  687.  
  688.  
  689.  
  690.  
  691.  
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  
  698.  
  699.  
  700.    Chapter 4, Speed Testing                                            Page 12
  701.    SYSTEM Unit                                Installation Guide, Version 6.0a
  702.  
  703.  
  704.    A P P E N D I X   A :   A P P L I C A T I O N   P R O D U C T S
  705.  
  706.  
  707.    Eagle Performance Software has developed identical products for both Turbo 
  708.    C and Turbo Pascal.  Our pledge is to provide you quality products with 
  709.    unparalleled performance and ease of use.  All registered users receive the 
  710.    complete source code when a signed license agreement is returned.  (SYS is 
  711.    currently not eligible for source code release.  Contact us for latest 
  712.    developments.)
  713.  
  714.  
  715.    STRG
  716.  
  717.    STRG - Extremely-high speed string processing routines for strings, 
  718.    characters, and all types of numbers including case, classification, 
  719.    comparison, conversions, copy, count, delete, format, justification, 
  720.    membership, parse, position, replace, search, sort, tabbing, ASCIIZ, many 
  721.    with match/ignore case and many more - 111 routines in 6.3kb or less.  
  722.  
  723.       File name    CIS Name    Compiler
  724.       -----------  ----------  --------
  725.       STRG57.ZIP   STRG57.ZIP  TP55    
  726.       STRG61A.ZIP  STRG61.ZIP  TP60    
  727.  
  728.  
  729.    QWIK
  730.  
  731.    QWIK - For direct screen video, QWIK is the highest performance screen 
  732.    writing tools available today for all text modes in any video 
  733.    configuration.  QWIK provides capabilities far beyond those in the 
  734.    unit/library that comes with your compiler.   Here are some of the 
  735.    features:
  736.                    
  737.      - Writes on all IBM compatible computers, displays and adapters 
  738.        including MDA, CGA, EGA, MCGA, VGA, 8514/A, Hercules and 3270 PC.
  739.      - Superior video detection routine.
  740.      - Eliminates snow and flicker.
  741.      - Writes directly to the screen in absolute rather than relative 
  742.        coordinates.
  743.      - Writes in all text modes and column modes.
  744.      - Writes on all video pages.
  745.      - Writes on virtual screens in RAM.
  746.      - Writes text and attribute, text only, or attribute only.
  747.      - Reads strings, characters and attributes.
  748.      - Uses End-Of-String (EOS) marker for quick string chaining.
  749.      - Provides standardized cursor shapes for all adapters.
  750.      - Enhanced cursor movement.
  751.      - Compatible with DESQview and similar multi-tasking environments.
  752.      - Over 650% faster than standard direct screen writing.
  753.      - Only 2.7k bytes of code if all 43 utilities are used.
  754.      - Optimized by the compiler and drops unused code.
  755.      - Used in all other Eagle products.
  756.      - Excellent documentation like this document.
  757.  
  758.  
  759.  
  760.    Appendix A: Application Products                                    Page 13
  761.    SYSTEM Unit                                Installation Guide, Version 6.0a
  762.  
  763.  
  764.    Here are the product versions:
  765.  
  766.       File name    CIS Name    Compiler
  767.       -----------  ----------  --------
  768.       QWIK56.ARC   QWIK55.ARC  TP4-5.5 
  769.       QWIK60.ARC   QWIK60.ARC  TP60    
  770.       QWIKC21.ARC  QWKC21.ARC  TC2     
  771.            
  772.            
  773.    WNDW
  774.  
  775.    WNDW - For multi-level virtual windows, WNDW is the highest 
  776.    performance window utilities available today.  WNDW avoids the excess 
  777.    code of windows as objects.  It offers very powerful utilities for 
  778.    full window control and management you probably never thought 
  779.    possible.   They are simple and yet very powerful with high speed and 
  780.    tight code.  With WNDW, you can choose the absolute writing routines 
  781.    of QWIK, the window-relative writing routines of WNDW, and even 
  782.    customize your own.  Here are some of the features you will discover:
  783.  
  784.      - Uses the powerful direct screen writing routines of QWIK.           
  785.      - Up to 254 fixed or virtual windows can be on the screen at one 
  786.        time.
  787.      - Extremely high-speed virtual screens in RAM (up to 40 times 
  788.        faster).
  789.      - Virtual windows are fully updated on screen, even if covered.  
  790.        Screens can scroll underneath one another right on the screen at 
  791.        very high speeds!       
  792.      - Virtual windows have virtual titles.                                
  793.      - Fully supported hidden windows saved in RAM.                        
  794.      - Fully supports all video pages.                                     
  795.      - Adjustable-rate moving, resizing, and scrolling.                    
  796.      - All windows can be randomly accessed, not just stacked or tiled.    
  797.      - 28 window-relative writing routines.                                
  798.      - 15 different border styles with shadow and zoom effects.            
  799.      - Full line drawing procedures.                                       
  800.      - Full cursor mode control for each window.                           
  801.      - Writes in all text modes and column modes.                          
  802.      - Only 13k bytes of code if all 69 utilities are used.                
  803.      - Used in all other Eagle products.                                   
  804.      - Excellent documentation like this document.
  805.  
  806.    Here are the product versions:
  807.  
  808.       File name    CIS Name    Compiler
  809.       -----------  ----------  --------
  810.       WNDW55.ARC   WNDW55.ARC  TP4-5.5 
  811.       WNDWC21.ARC  WNDC21.ARC  TC2     
  812.            
  813.            
  814.    PULL
  815.  
  816.    PULL - For multi-level pull-down menus, PULL is fully featured and fully 
  817.    configurable.  Includes execute, single, and multiple choice menus, 
  818.  
  819.  
  820.    Appendix A: Application Products                                    Page 14
  821.    SYSTEM Unit                                Installation Guide, Version 6.0a
  822.  
  823.  
  824.    unlimited nested submenus, data entry windows, help windows, directory 
  825.    windows, message system, and fully completed interfaces.  Some of the 
  826.    features are:
  827.  
  828.      - Uses QWIK and WNDW.
  829.      - Work window(s) and complete interface for menus
  830.      - Pull-down menus with 3 menu modes and 8 line modes
  831.      - Pull-down file directory
  832.      - Highlighted command letters
  833.      - Unlimited levels of submenus
  834.      - Unlimited data entry windows for 9 types of data
  835.      - Data entry for the work window(s)
  836.           Free field entry with either fixed column or flexible column          
  837.        length.
  838.         Full editing capability including insert cursor mode
  839.         Full field selection with cursor keys
  840.         Automatic NumLock for numerical data entry
  841.         Right or left justification for data entry output
  842.         Error messages for invalid data entries
  843.         Error messages for data entries out of range
  844.      - Automatic sizes and locations for menus.
  845.      - Operation by cursor keys or command keys
  846.      - Pull/Pop between work window and nested submenu(s)
  847.      - Programmable control of pull and pop sequences
  848.      - Context-sensitive help
  849.      - Message lines for prompts and processing
  850.      - Full working shell for user development
  851.      - Excellent documentation like this document.
  852.  
  853.    Here are the product versions:
  854.  
  855.       File name    CIS Name    Compiler
  856.       -----------  ----------  --------
  857.       PULL55.ARC   PULL55.ARC  TP4-5.5 
  858.       PULLC21.ARC  PULC21.ARC  TC2     
  859.            
  860.  
  861.    ON-LINE SERVICES
  862.  
  863.    CompuServe - All updated files and later versions that are shareware can be 
  864.    found on the CompuServe Borland Forums (GO BPROGA for TP and GO BPROGB for 
  865.    TC).
  866.  
  867.    The Eagle BBS - You can also contact us on our 24-hour BBS at (214) 539-
  868.    9878, at connections of 1200/2400/9600 MNP5/V.42bis N81.
  869.  
  870.  
  871.  
  872.  
  873.  
  874.  
  875.  
  876.  
  877.  
  878.  
  879.  
  880.    Appendix A: Application Products                                    Page 15
  881.    SYSTEM Unit                                Installation Guide, Version 6.0a
  882.  
  883.  
  884.    A P P E N D I X   B :   R E V I S I O N   H I S T O R Y
  885.  
  886.    REVISIONS:
  887.  
  888.    Version 6.0 (02-20-91):
  889.      . Initial release
  890.  
  891. |  Version 6.0a (03-26-91):
  892. |    . Fixed variable range set routine.  Last value was considered 1-based     
  893. |      and stayed one short of the given range.  Reset to 0-based.  (This was 
  894. |      already fixed in a previous version.  Old and new source was 
  895. |      inadvertently swapped.)
  896. |    . Read/ReadLn used incorrect file pointer with local string variables.
  897. |    . Added TOPRINT.TXT file for printing instructions.
  898.  
  899.  
  900.    CREDITS:
  901.  
  902.    The original Turbo Pascal Runtime Library is copyright (C) 1991 by Borland 
  903.    International, Inc.
  904.     
  905.    Modification is copyright (C) 1991 by James H. LeMay for Eagle Performance 
  906.    Software.  All Rights Reserved.  Protected by the United States Copyright 
  907.    Laws.
  908.  
  909.  
  910.  
  911.  
  912.  
  913.  
  914.  
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931.  
  932.  
  933.  
  934.  
  935.  
  936.  
  937.  
  938.  
  939.  
  940.    Appendix B: Revision History                                        Page 16
  941.