home *** CD-ROM | disk | FTP | other *** search
/ The Unsorted BBS Collection / thegreatunsorted.tar / thegreatunsorted / misc / graphit.doc < prev    next >
Text File  |  1990-08-22  |  47KB  |  996 lines

  1.  
  2.  
  3. =======================================================================
  4.  
  5.        GGGG                           h       IIIIIII   t       !
  6.       G    G                          h          I    tttttt   !!!
  7.      G                                h          I      t      !!!
  8.      G  GGGG  r rrr    aaaaa  ppppp   h hhh      I      t      !!!
  9.      G     G  rr   r  a    a  p    p  hh   h     I      t       !
  10.       G    G  r       a   aa  p    p  h    h     I      t   t    
  11.        GGGG   r        aaa a  ppppp   h    h  IIIIIII    ttt    !
  12.                               p
  13.                               p
  14.  
  15. =======================================================================
  16.  
  17.                                GraphIt!
  18.                      Version 2.00  wed 22 Aug 1990 
  19.  
  20.  
  21.                            by Keith Hertzer
  22.                     Copyright (C) 1990 kSoft, Inc.
  23.  
  24.  
  25.                          System Requirements:
  26.                          --------------------
  27.  
  28. IBM PC, XT, AT, PS/2 or compatible equipped with CGA, EGA, MCGA, or
  29. VGA graphics, at least 256kb of RAM, and a 360k, 1.2M, 720k, or 1.44M
  30. diskette drive or hard disk, running MS-DOS version 2.0 or higher.
  31.  
  32. GraphIt! also supports Microsoft and compatible mice. If your mouse
  33. driver is installed at boot-up, GraphIt! will automatically detect and
  34. make use of your mouse. See Section I for details on "mouse strokes."
  35.  
  36.     Note: Please do not edit GRAPHIT1.HLP, GRAPHIT2.HLP, or
  37. GRAPHIT3.HLP. They are formatted especially for use under the GraphIt!
  38. help view function, broken up into screens of 23 lines. Altering these
  39. files may result in abnormal page breaks and prevent effective use of
  40. the help text. These files are a subset of the information contained
  41. in GRAPHIT.DOC, so if you want printed documentation, you need not
  42. make a hard copy of the .HLP files.
  43.  
  44.                                Contents:
  45.                                ---------
  46.  
  47. Section I: Using GraphIt!............................................2
  48.  
  49. Section II: Using the Graph function.................................4
  50.  
  51. Section III: Using AutoRedraw and the Redraw Queue...................8
  52.  
  53. Section IV: Viewing and Setting Formatting Options..................10
  54.  
  55.  
  56. Appendix A: GraphIt!'s Command Line Arguments.......................13
  57.  
  58. Appendix B: Upgrade Notes: Changes from 1.41........................15
  59.  
  60. Appendix C: Using GraphIt! with Windows 3.0.........................16
  61.  
  62. Appendix D: Shareware / Order Form..................................17
  63.  
  64.  
  65.  
  66. Section                                             ==================
  67. III                                                 | Using GraphIt! |
  68.  I                                                  ==================
  69.  I
  70.  I
  71. IIIo                                                                 2
  72. ----------------------------------------------------------------------
  73.  
  74.  
  75.                                  MENUS
  76.  
  77.     GraphIt! is driven completely through pull-down menus, which
  78. operate in a pretty standard manner. A fuller explanation of the
  79. highlighted option appears on the bottom line of the screen. Highlight
  80. the option you want by using the left and right cursor keys. Select
  81. the highlighted option in the top bar by pressing enter.
  82.  
  83.     The Help, Redraw, and Options items each call up a secondary pull-
  84. down menu. Highlight the item you want using the up and down cursor
  85. keys. Select the highlighted item by pressing enter again. To cancel
  86. the menu and return to the top bar, press escape.
  87.  
  88.     If you usually keep Num Lock on or prefer to use function keys
  89. instead of cursoring around, the function keys will select the options
  90. in the current menu in the order they appear on the screen. (i.e. in
  91. the main menu, F1 selects help, F2 Graph, etc., and F7 selects Exit. 
  92. In the Options menu, F1 would select Settings, F2 Scale, and so on.) 
  93. Function key labels are not provided on the options for aesthetic
  94. reasons, but there are not many options to learn. If you use function
  95. keys, you do NOT need to press enter to select that item. Function
  96. keys greater than the number of items in the menu are ignored.
  97.  
  98.  
  99.                 POP-UP PROMPTS and the GraphIt! EDITOR
  100.  
  101.     Almost all data input in GraphIt! is done through pop-up "dialog
  102. boxes" which appear roughly in the center of the screen. (The main
  103. exception is the equation input, which takes place on the bottom line
  104. so you can look at other graphs while you enter an equation.) The
  105. input editor makes full use of the standard editing keys: Insert,
  106. Delete, Backspace, Left and Right arrow keys, Home, and End. Escape
  107. clears the entire field as in BASIC. A simulated graphics cursor
  108. alternately flashes the character at the current position and the
  109. underscore character (or a full block when you are inserting) so full
  110. editing is possible.
  111.  
  112.     Usually if you choose a function by mistake and it presents you a
  113. pop-up prompt, pressing enter or ESC on the blank field will return
  114. you to the menu as if you had never selected the option. However, to
  115. abort using the range function to change the range of coordinates
  116. displayed, you must press enter at all 4 prompts, and the current
  117. range will be preserved, BUT the screen will clear.
  118.  
  119.  
  120.  
  121.  
  122. I. Using GraphIt!                                                    3
  123. ----------------------------------------------------------------------
  124.  
  125.                              USING A MOUSE
  126.  
  127.     GraphIt! now has internal support for Microsoft (R) and compatible
  128. mice. If a mouse driver is installed when you run GraphIt!, it will
  129. automatically be detected and the usual mouse arrow will appear. To
  130. use the mouse on the menus, you simply "point and click." However,
  131. please be aware of the following idiosyncrasies of my mouse routines:
  132.    1. The left button, as usual, is always used to select an item or
  133.       emulate a keystroke. Whenever you see a prompt that says "Press
  134.       any key...", clicking the left button will have the same effect
  135.       as hitting a key.
  136.    2. The right button has the same effect as pressing the ESC key
  137.       whenever pressing ESC is a valid option. To get out of a
  138.       pulldown menu, you can click the right button.
  139.    3. When used with a mouse, the menus are technically drop-down, not
  140.       pull-down; you must release the mouse button before your choice
  141.       will be registered, so you can't push the button down, pull the
  142.       cursor around, and release the mouse button to select the item.
  143.    4. To get back to the main menu bar from a drop-down menu, you can
  144.       also click on the top bar. However, even if you click on a valid
  145.       menu item, your choice will not be registered--you will just be
  146.       returned to the top bar.
  147.    5. Whenever you are using GraphIt!'s input editor, the mouse can be
  148.       used to do two things: Pressing the right button, as usual,
  149.       causes the same effect as pressing the ESC key. You can also
  150.       position the cursor inside the edit field by clicking the left
  151.       button on the space you want to move to.
  152.    6. To use the mouse to scroll through a help file, click on the key
  153.       name (highlighted in red on the bottom line of the screen which
  154.       corresponds to the action you want to perform. In addition,
  155.       clicking the right mouse button corresponds to the escape key.
  156.    7. The mouse is not available during the actual graphing loop, to
  157.       prevent the pointer and the graph drawing routine from fighting
  158.       over the screen. To pause the graph, you must use the keyboard.
  159.       The mouse can be used to restart or cancel the graph at this
  160.       prompt though.
  161.  
  162.  
  163.              Important! ---> HARDWARE NOTE <--- Important!
  164.  
  165.     If you have a CGA or possibly an EGA monitor, you may need to run
  166. the DOS program GRAFTABL.COM (a small TSR that allows block graphics
  167. characters to be printed in graphics modes) before successfully
  168. running GraphIt!. The program seems to come only with DOS 3 and up but
  169. it runs under any version. If you're not sure whether your adapter has
  170. a graphics (>ASCII 127) character generator included, run GraphIt!
  171. first. If you NEED to run GRAFTABL, there will be NO box characters
  172. around the pulldown menus, none around the settings box, and the full
  173. block insert cursor will not function. Otherwise, you're okay without
  174. it. Since it's TSR, you need run it only once and then it's active
  175. until you reboot.
  176.  
  177.  
  178.  
  179. Section                                   ============================
  180. III III                                   | Using the Graph function |
  181.  I   I                                    ============================
  182.  I   I
  183.  I   I
  184. III IIIo                                                             4
  185. ----------------------------------------------------------------------
  186.  
  187.     GraphIt! 2.00's overhauled equation parser will automatically
  188. isolate the variable "y" wherever it is in the equation. It will now
  189. also graph some relations, like circles ("x^2+y^2=36") and ellipses
  190. ("x^2/3 + y^2/4 = 20"), as well as hyperbolas, sideways parabolas
  191. ("x=y^2") and many other conic sections. (Consult a good Algebra II
  192. textbook for help on their formulas, as I'm a little rusty.) The only
  193. limitation for functions is that there must be one and only one
  194. occurrence of the variable "y". GraphIt! cannot graph an equation
  195. without a "y", like "x=4". It also cannot perform the factoring needed
  196. to isolate the variable "y" when it occurs more than once (i.e.
  197. "x=y^2+3y"). The relation graphing module (for graphs which may have
  198. more than one y value for a given x value) works like this: if in
  199. isolating the "y" in an equation GraphIt! finds an even power of it
  200. (i.e. "y^2"), it makes two equations for that graph, one with the
  201. positive and and one with the negative root. This method by no means
  202. covers all possible relations, but it is adequate for the most common.
  203. In fact, I haven't thought up an equation it can't graph yet.
  204.  
  205.  
  206.                                OPERATORS
  207.  
  208.     GraphIt! uses an operator set almost identical to BASIC's, with
  209. several additions to make it more user-friendly. Almost all of the
  210. math functions provided in the Microsoft C library have been made
  211. available. The supported operators and functions are as follows:
  212.  
  213.     Operator/Function   Meaning
  214.     =================   =============================================
  215.     +, -, *, /          add, subtract, multiply, divide
  216.     ^                   exponentiation
  217.     {[( )]}             parentheses: may be nested to any extent,
  218.                         braces and brackets are provided for ease of
  219.                         reading but the parser will NOT differentiate
  220.                         between "{" and "(" and "[".
  221.  
  222.     abs                 absolute value
  223.     acos, asin, atan    arc cosine, arc sine, and arc tangent
  224.     cos, cosh           cosine and hyperbolic cosine
  225.     exp                 Euler's number to the specified power
  226.     int                 greatest integer ([x] is not supported)
  227.     ln, log             natural logarithm, logarithm base 10
  228.     sin, sinh           sine, hyperbolic sine
  229.     sqr                 square root
  230.     tan, tanh           tangent, hyperbolic tangent
  231.  
  232.     NOTE that all trig functions work in RADIANS, not degrees.
  233.  
  234.     Besides the variables x and y, 2 other "variables" (pi
  235. [3.14159...] and e [Euler's number: 2.718...]) are legal identifiers
  236. for your convenience.
  237.  
  238.  
  239.  
  240. II. Using the Graph function                                         5
  241. ----------------------------------------------------------------------
  242.  
  243.                            CALLING FUNCTIONS
  244.  
  245.     The parser's ability to determine exactly what you want to pass as
  246. an argument to a function is somewhat limited, so I suggest you make
  247. it a habit to enclose the desired expression in parentheses. "cos x"
  248. may work fine but "cos 2x" is interpreted as "(cos 2)*x" and "cos x^2"
  249. turns out "(cos x)^2". Typing "cos (2x)" or "cos (x^2)" instead works
  250. perfectly.
  251.  
  252. The order of operations is the standard algebraic left to right of:
  253.     Functions
  254.     Parentheses
  255.     Exponents
  256.     Multiplication and division
  257.     Addition and subtraction
  258.  
  259.     GraphIt! supports implied multiplication of variables and
  260. constants as in "3x" or "5(2x+3)", but not of variables and other
  261. alphabetic identifiers such as functions and built-in transcendental
  262. numbers like "xx", "xcos(x)", or "xpi", so you must include the times
  263. sign in those cases. (Implied multiplication of the two variables x
  264. and y [i.e. "xy=1"] IS supported, however.) The parser may reject some
  265. complex expressions for no apparent reason. Keep trying! I suggest
  266. liberal use of parentheses: if you are not sure whether something will
  267. be interpreted correctly, go back and put parentheses around it. (One
  268. exception: do NOT enclose the entire expression on either side of the
  269. equals sign in parentheses.)
  270.  
  271.  
  272.                          GRAPHING THE EQUATION
  273.  
  274.     To interrupt a graph when the computer is in the process of
  275. drawing it, hit any key and the program will display on the bottom
  276. line the message:
  277. "PAUSE at x=#, y=#. Press ESC to quit, any other key to restart.. "
  278. where # indicates the x and y coordinates you stopped it at. If you
  279. mistyped the equation and want to fix it, just press ESC.
  280.     Be patient! GraphIt! may need a while to produce a quality graph
  281. on a slower machine. To speed up the graphing, you may want to select
  282. a lower Fineness value.
  283.  
  284.  
  285.                            THE GRAPHING LOOP
  286.  
  287.     When the graph for your equation is complete, you will again be
  288. given the "Graph?" prompt at the bottom of the screen. If you'd like
  289. to start all over with a completely different equation, press ESC and
  290. the input field will clear. If you'd rather modify the last equation,
  291. go right ahead; it's already stored safe and sound in the redraw queue
  292. (for more information see Section III: Using AutoRedraw and the Redraw
  293. Queue). To exit the otherwise infinite graphing loop, press enter or
  294. escape on a blank line (escape twice will always work).
  295.  
  296.  
  297.  
  298. II. Using the Graph function                                         6
  299. ----------------------------------------------------------------------
  300.  
  301.                    PRINTING PICTURES OF YOUR GRAPHS
  302.  
  303.     In order to be able to print pictures of your graphs, you must
  304. have loaded GRAPHICS.COM, a standard MS-DOS program, into memory, and
  305. you must have an IBM, Epson, or compatible dot-matrix graphics capable
  306. printer. Select the Print function from the menu and all graphs on the
  307. screen will be printed on the printer, in a sideways format. Probably,
  308. the right edge of the paper will correspond to the top of the screen.
  309. For CGA screens, the Print function does little more than invoke the
  310. computer's built-in print-screen function (all it does is remove the
  311. menu and help printing on the top and bottom lines of the screen).
  312. However, for EGA and VGA multicolor screens, pressing Shift-PrtSc
  313. yields very confusing output as GRAPHICS tries to match on-screen
  314. colors to the printer's gray-scale equivalents and fails. In this
  315. case, the Print function also remaps the colors to yield bright white
  316. graphs on a black background for better black graphs on white contrast
  317. in the output. Once the printing is finished, the colors are reset to
  318. normal. If you have a color printer that produces legible output from
  319. a printscreen, you may want to just press Shift-PrtSc instead of using
  320. the print option.
  321.  
  322.  
  323.                             ERROR MESSAGES
  324.  
  325.     Eleven error messages may be encountered when graphing (apart from
  326. messages ingrained in the library functions which I cannot control).
  327. Five of them are fatal; the equation cannot be graphed and you must
  328. edit it. They will cause the computer to beep so you know there is a
  329. problem. The other six apply only to specific point(s) for which a y-
  330. value cannot be generated. They will not appear unless you ask for
  331. them using the Warnings option and then they appear silently.
  332.  
  333. "Found bad operation or mismatched parentheses. Press any key to
  334. retype..."
  335.     You either left out a paren somewhere, left out one or both of the
  336.     operands for a binary operation or the argument for a function, or
  337.     typed some other weird thing the parser and evaluator couldn't
  338.     digest, like putting parentheses around the entire expression.
  339.     Examine your equation carefully and fix whatever seems to be the
  340.     problem.
  341.  
  342. "Found unknown identifier. Press any key to retype equation."
  343.     Unfortunately, the evaluator isn't set up to return what caused
  344.     the error, so you'll have to look for it yourself. Check that your
  345.     equation contains only valid identifiers (x, y, pi, e, and the
  346.     functions listed above) and that you separated each of them with
  347.     an operator, space, or some other punctuation.
  348.  
  349. "No equals sign or more than one found. Press any key to edit
  350. equation."
  351.     To be a valid and graphable, your equation must include exactly
  352.     one equals sign ['=']. If you get this error, you either left out
  353.     the '=' or accidentally typed two or more of them.
  354.  
  355.  
  356.  
  357. II. Using the Graph function                                         7
  358. ----------------------------------------------------------------------
  359.  
  360.                        ERROR MESSAGES continued
  361.  
  362. "No 'y' variable or more than one found. Press any key to edit
  363. equation."
  364.     Although GraphIt! has been enhanced to isolate ONE 'y' variable
  365.     and graph some relations, it cannot graph an equation without a
  366.     'y', like "x=4". It also cannot perform the factoring needed to
  367.     isolate the variable 'y' when it occurs more than once (i.e.
  368.     "x=y^2+3y"). If you can adjust the equation so it uses only one
  369.     'y', do so; otherwise it can't be graphed.
  370.  
  371. "Can't find the inverse of this function of y. Press a key to edit
  372. equation."
  373.     You tried to graph an equation like "int(y)=x" or "abs(y)=x" for
  374.     which y cannot be isolated by taking the inverse of the function.
  375.     The functions which cannot be isolated are "abs", "cosh", "sinh",
  376.     "tanh", and "int". If you can't adjust the equation so this error
  377.     does not occur, it is not graphable.
  378.  
  379.  
  380.                         WARNING ERROR MESSAGES
  381.  
  382. "Overflow at x=#.##."
  383.     Some function or operation generated a number too large to fit
  384.     into a 8-byte floating point variable. The point at x=#.## was not
  385.     graphed. This error is not fatal, so the graphing process is
  386.     continued, but if the message is repeated and no image is graphed,
  387.     you may need to abort graphing and look at your equation again.
  388.  
  389. "Division by zero at x=#.##."
  390.     At x=#.## your equation included division by zero so that point
  391.     was skipped. Unless you get this error repeatedly, there's no real
  392.     problem.
  393.  
  394. "Can't raise a negative number to a fractional power. [x=#.##]"
  395.     Due to the possibility of getting an even root of a negative
  396.     number (like -16^(1/2) which actually equals the square root of
  397.     -16), the C Library pow() function refuses to process any
  398.     arguments like these. This is not a fatal error, and the portion
  399.     of your graph (if any) where the base is not negative or the power
  400.     is not fractional should be graphed perfectly. This error also
  401.     occurs when you try to take the square root of a negative number
  402.     with the "sqr" function.
  403.  
  404. "Can't find the logarithm of a negative number. [x=#.##]"
  405.     The natural logarithm (ln) and base 10 logarithm (log) functions
  406.     are defined only on x greater than zero.
  407.  
  408. "Domain error: asin/acos functions defined only on -1<=x<=1. [x=#.##]"
  409.     The arcsine (asin) and arc cosine (acos) functions are only
  410.     defined between -1 and 1 (the range of the sin and cos functions).
  411.  
  412.  
  413.  
  414. Section                      =========================================
  415. III III III                  | Using AutoRedraw and the Redraw Queue |
  416.  I   I   I                   =========================================
  417.  I   I   I
  418.  I   I   I
  419. III III IIIo                                                         8
  420. ----------------------------------------------------------------------
  421.  
  422.                            USING AutoRedraw
  423.  
  424.     Whenever you change the scale to look at a graph in greater detail
  425. or from farther back, or you shift the range of the axes so that the
  426. graph you just drew will be centered, the screen must be cleared so
  427. that a new coordinate grid can be drawn. So you're left with the
  428. viewing angle you wanted for that graph, but the screen is blank. You
  429. shouldn't have to solve this problem by retyping the whole equation
  430. again...and you don't. You can redraw the equation much more easily by
  431. selecting "Last graph" in the "Redraw" menu. But with AutoRedraw ON,
  432. you don't even have to do that.
  433.     As its name suggests, AutoRedraw will redraw the last equation you
  434. typed in automatically when you change the scale or range. If you
  435. don't want a graph redrawn, you can abort it by pressing ESC twice and
  436. you will be returned to the menu. If you want to turn off AutoRedraw
  437. completely (say you'd rather redraw all of the equations in the redraw
  438. queue instead of just the last one...with AutoRedraw on you'd have to
  439. wait for the last equation to be graphed twice, once by each
  440. function), just select "AutoToggle" under the "Redraw" menu and answer
  441. "n" when asked if you want AutoRedraw on.
  442.     AutoRedraw is ON by default. You can change the default to OFF by
  443. using the "/A" command line option (see Appendix A for a full
  444. explanation of the command line arguments).
  445.  
  446.  
  447.                            THE REDRAW QUEUE
  448.  
  449.     Every time you type in an equation, the character string you typed
  450. and the program's internal representation of that equation get stored
  451. in the redraw queue. From this queue, or list, you can call up any of
  452. the last 20 equations you typed to graph again with fewer keystrokes
  453. than retyping it. Or you can redraw all of them or the just the last
  454. one you typed with even fewer keystrokes. The equations in the queue
  455. are stored in an order that puts the most-recently-used at the
  456. beginning and the least-recently-used at the end. Hopefully, when the
  457. queue fills up, the equations that are bumped off the queue at the end
  458. will be the ones you won't miss very much.
  459.  
  460.     As explained in the previous sub-section, the screen clears
  461. whenever you execute Range or a successful Scale (if you abort Scale
  462. the screen remains as it was). If you execute either of these
  463. functions or clear the screen accidentally with the Clear menu option,
  464. you can redraw the last equation (if AutoRedraw hasn't already) by
  465. selecting "Last graph" under "Redraw", or you can redraw all of the
  466. equations in the queue using "Redraw All" under the "Redraw" menu.
  467. Note that the redraw function does not keep track of which graphs are
  468. on the screen at any point in time so "redrawing all" may put more (if
  469. you plotted many equations on the screen before the last one) or fewer
  470. (if you cleared the queue) equations on the screen than there were
  471. before the screen was cleared.
  472.  
  473.  
  474.  
  475. III. Using AutoRedraw and the Redraw Queue                           9
  476. ----------------------------------------------------------------------
  477.  
  478.     The "Pick graph" option in the Redraw menu allows you to graph any
  479. of the equations currently in the redraw queue. Because of the
  480. enormity of the buffer that would be required to "remember" what was
  481. on the screen "behind" a list of all the equations in the queue so the
  482. images there could be preserved in EGA and VGA modes, the equation-
  483. viewing is limited to one at a time in a pop-up box. If you would like
  484. to redraw the one shown, press enter. Or, if you have a mouse, click
  485. the left button on the equation itself. If you want to look at more,
  486. press any other key except Escape (or click on any point on the screen
  487. outside of the box with the equation in it). When you have looked at
  488. all of the equations in the queue, it recycles to the first equation
  489. again. If the equations start looking familiar, you've probably
  490. reached the beginning again. If you decide you don't want to redraw
  491. any of the equations presented for your perusal, press Escape (or
  492. click the right mouse button) and the command will be ignored. When
  493. you pick a graph, it is re-inserted at the top of the redraw queue, as
  494. you'll likely be working with it again in the future. So if you scale
  495. the grid again, that graph will be Auto-Redrawn, and if you redraw the
  496. last graph, that graph will be shown.
  497.  
  498.  
  499.  
  500. Section                     ==========================================
  501. III VVV VVV                 | Viewing and Setting Formatting Options |
  502.  I   V   V                  ==========================================
  503.  I   V   V
  504.  I    V V
  505. III    V o                                                          10
  506. ----------------------------------------------------------------------
  507.  
  508.                          THE DEFAULT SETTINGS
  509.  
  510.     When you run GraphIt! without any command-line arguments, the
  511. following settings are in effect:
  512.  
  513.     Start of range:  (-12.0, -8.14*)
  514.       End of range:  (12.0, 8.14*)
  515.           Fineness:  1.0 **
  516.          Step rate:  0.0625  (1/16)
  517.            Legends:  ON
  518.           Warnings:  OFF
  519.            Printer:  OFF
  520.         AutoRedraw:  ON
  521.  
  522. This provides a basic rectangular grid of decent size with the origin
  523. centered, a square aspect ratio (a 1x1 square on the grid really LOOKS
  524. square), and a good resolution graph.
  525.  
  526. * on VGA + or -  8.48 because 30 text rows allow 93% of the vertical
  527.   pixels to be used for graph while CGA/EGA 25 rows allow only 92%.
  528.  
  529.  
  530.                          VIEWING THE SETTINGS
  531.  
  532.     The current settings are almost always displayed whenever you
  533. change one of them. Every item under Options (unless aborted) will
  534. bring up the settings screen. You can also look at them manually by
  535. selecting Settings in the Options menu.
  536.  
  537.                           CHANGING THE SCALE
  538.  
  539.     The scale function allows you to change the scale of the graph you
  540. have on-screen while keeping the center of the display the same (the
  541. origin may move but if (2,2) is at the middle of the screen, it will
  542. stay there). The scale is totally relative to the size of the grid
  543. that is presently on the screen, so you need not make any comparison
  544. with an absolute scale of 1. To rescale the grid, select "Scale" from
  545. the options menu. Then respond to the prompt according to the
  546. following guidelines:
  547.     Enter a positive number to zoom in, or a negative number to pan
  548. out. The number of units across the screen will be divided or
  549. multiplied by that number accordingly. Numbers between -1 and 1,
  550. inclusive, are invalid because they produce meaningless values.
  551. Decimals greater than 1 or less than -1 are valid though.
  552.     If you enter an invalid number, you will be asked again to enter
  553. the scale. To abort rescaling, just press enter on a blank line.
  554.     To scale the default range, use the "/S" option on the command
  555. line.
  556.  
  557.  
  558.  
  559. IV. Viewing and Setting Formatting Options                          11
  560. ----------------------------------------------------------------------
  561.  
  562.                           ADJUSTING THE RANGE
  563.  
  564.     The ability to adjust the grid by inputting the beginning and end
  565. of the desired range is one of the most powerful and flexible features
  566. GraphIt! offers. It can rescale the grid to either be a perfect fit
  567. for the function you are graphing so that as much of it is visible as
  568. possible or to render the most accurate image possible on even the
  569. lowest resolution CGA screen. Both of these features can be
  570. accomplished by selecting Range in the Options menu.
  571.     To create a grid such as the first, graph an equation on the
  572. standard grid, and from that graph determine the top-, bottom-, left-
  573. and rightmost extremities of the graph, and respond with the proper
  574. values to the 4 Range prompts. The new grid may be somewhat expanded
  575. or compressed depending on the aspect ratio, but it will show the same
  576. amount of graph in much greater detail.
  577.     To create a more accurate representation like the second grid,
  578. have some idea in your mind as to the left, right, and top of the
  579. grid. Enter these 3 numbers in the first 3 range prompts, and on the
  580. fourth one just press enter. Voila. The bottom of the grid will be
  581. AutoScaled to the exact y to x ratio needed to get a square aspect
  582. ratio...if it isn't, you'd better check the vertical size knob on your
  583. monitor! To set the range from the command line, use the /X1:, /X2:,
  584. /Y1:, /Y2:, and /Y2 options [described in Appendix A].
  585.  
  586.  
  587.                         ADJUSTING THE FINENESS
  588.  
  589.     The fineness factor determines how high the resolution of the
  590. graph will be, and in effect, also the amount of time it takes to
  591. complete the graph. The fineness factor of 1 is quite adequate in most
  592. circumstances. With the addition of SmartFineness automatic fineness
  593. adjustment to the line-drawing feature in the graph-drawing loop, the
  594. manual fineness adjustment has become almost obsolete, but I left it
  595. in to accomodate the need for especially sharp graphs or for
  596. especially quick renderings. SmartFineness automatically decreases the
  597. fineness when the point being graphed is not on the screen to speed up
  598. blank areas, then recovers automatically and backtracks to the spot
  599. where the graph comes on-screen again. It also varies the fineness
  600. with the slope of the equation being graphed--less when the slope is
  601. near-horizontal, greater when the slope tends toward vertical, so
  602. steep graphs are tracked more effectively. As the fineness is
  603. increased, more of the curve will be smoothed out, but remember that
  604. if you increase the fineness factor to 5, the computer will be slowed
  605. down to 1/5 its normal graphing speed under the load of all the extra
  606. calculations. A factor greater than 10 can bring even the fastest 386
  607. computer to a snail's pace.
  608.     If you have CGA adapter, GraphIt! assumes you are using an 8088
  609. non-turbo PC and reduces the fineness to 0.5 to speed up graphing;
  610. the difference in resolution is usually not very noticeable on the
  611. CGA screen, but the difference in speed is.
  612.     To change the fineness factor, select Fineness from the Options
  613. menu. Any value greater than zero is valid; however I would recommend
  614. not going below 0.25, as the image quality suffers.
  615.  
  616.  
  617.  
  618. IV. Viewing and Setting Formatting Options                          12
  619. ----------------------------------------------------------------------
  620.  
  621.                             PRINTING VALUES
  622.  
  623.     This feature allows you to print out a table of coordinates as the
  624. program is drawing your graph. This option is available to aid the
  625. drawing of graphs manually (if you happen to be cheating on your
  626. homework) and provide a reference for labeling the axes if you print
  627. the graph (using the Print menu item described on page 4).
  628.     By default, the print tables option is OFF; most people don't
  629. leave their printer on at all times and the process does slow graphing
  630. a bit.
  631.     You can turn it on by selecting Printout in the Options menu and
  632. responding "y" to the prompt. You can also use the "/P" command line
  633. option to turn the printer ON by default.
  634.  
  635.  
  636.                            WARNING MESSAGES
  637.  
  638.     By default, the error messages which do not require the equation
  639. to be retyped are suppressed, because they slow down the graphing
  640. process, cover up the equation, and are somewhat annoying when you
  641. know the graph shouldn't produce any values in some area. (Also, it
  642. was easier than trying to add some method of specifying the domain for
  643. each equation.) If something goes wrong (i.e. the graph doesn't show
  644. up on screen when it should and the reason isn't readily apparent),
  645. you can turn on the warning messages (using the "Warnings" function of
  646. the "Options" menu) and redraw it to see what the problem is. You can
  647. use the same menu option to turn the messages off later. The "/W"
  648. command-line argument can be used to turn the messages ON by default.
  649.  
  650.  
  651.                              AXES LEGENDS
  652.  
  653.     GraphIt! 2.00 has been equipped with a routine that labels the
  654. hatch marks across the graph so you can more easily locate points or
  655. find the coordinates of a graphed point. In some cases, though,
  656. especially when doing graphs near the axes in monochrome CGA mode, the
  657. numbers can be confusing and you may want to turn them off. To do
  658. this, select the "Legends" option in the "Options" menu and answer "n"
  659. to the prompt "Do you want to label the grid axes?". The numbers
  660. cannot be erased without clearing the screen, so if you want them gone
  661. right away, you should clear the screen using the "Clear" option and
  662. then redraw your graph. When turning the numbers back on, you also
  663. must clear the screen before the command takes effect. The "/L"
  664. command-line argument can be used to turn the legends OFF upon
  665. startup.
  666.  
  667.  
  668.  
  669. Appendix                         =====================================
  670.  AAAA                            | GraphIt!'s Command Line Arguments |
  671. A    A                           =====================================
  672. AAAAAA
  673. A    A
  674. A    Ao                                                             13
  675. ----------------------------------------------------------------------
  676.  
  677.     Nearly all of GraphIt!s options---covering almost every feature---
  678. can be set upon startup of the program by the use of command line
  679. arguments. All arguments are NOT case sensitive (i.e. "/P" is the same
  680. as "/p"). Arguments must be separated by one or more spaces on the
  681. command line. All arguments begin with the standard MS-DOS "switch"
  682. character ("/"). UNIX-style switches (starting with "-") are NOT
  683. supported. Unidentifiable command line arguments may cause the message
  684. 'Unknown argument "XXXXX" ignored. Press any key...' to be shown on
  685. the bottom line of the screen.
  686.  
  687. -------------------------------- NOTE --------------------------------
  688.     Some command line options require a both a switch and a numeric
  689. value. All of these options should be entered in the following format:
  690.     A>graphit  /X:##.##
  691. where X is the option switch, and ##.## denotes an integer or real
  692. number. A decimal point is not required for integers. Note that there
  693. must be NO space anywhere in the argument, as a space is assumed to
  694. delimit separate arguments from each other. If you do not include the
  695. number after the colon, 0 will be the result (This is usually not
  696. desirable).
  697. -------------------------------- NOTE --------------------------------
  698.  
  699. /P          Turn printer ON
  700. ---------------------------
  701.     The point table printing function of GraphIt! is OFF by default.
  702.     Use the /P option to turn the printer ON immediately upon loading
  703.     the program.
  704.  
  705. /A           Autoredraw OFF
  706. ---------------------------
  707.     The AutoRedraw function is ON by default. If you do not wish to
  708.     utilize this feature, use the /A option to turn AutoRedraw OFF.
  709.  
  710. /L         Turn Legends OFF
  711. ---------------------------
  712.     The axes legends are ON by default. If you do not wish to utilize
  713.     this feature, use the /L option to turn the legends OFF.
  714.  
  715. /W      Warning messages ON
  716. ---------------------------
  717.     The occasionally annoying warning messages are OFF by default. If
  718.     you want to be alerted when a point cannot be generated, use the
  719.     /W option to turn the messages ON.
  720.  
  721. /S:###           Scale grid
  722. ---------------------------
  723.     If you would like to retain the original centered-around-the-
  724.     origin grid but would like to rescale it from the original 24 x 17
  725.     range, you can use the /S: option. The /S: option and the range
  726.     options should not be used at the same time, as this may cause
  727.     erratic results.
  728.  
  729.  
  730.  
  731. Appendix A: GraphIt!'s Command Line Arguments                       14
  732. ----------------------------------------------------------------------
  733.  
  734. /F:###         Set Fineness
  735. ---------------------------
  736.     The default fineness factor is 1.0---one value per pixel. If you
  737.     want to change the default to less than 1.0 for faster graphing or
  738.     to greater than 1.0 for higher-resolution curves, use the /F:
  739.     option. See the NOTE above for the required format.
  740.  
  741.                              RANGE OPTIONS
  742.  
  743.     The 5 options below allow you to set the range from the command
  744. line. If four of them (/X1:, /X2:, /Y1:, /Y2: _or_ /Y2) are not all
  745. present, the defaults (+ or -12.0 on the x-scale, + or - 8.14 or 8.48
  746. on the y-scale) will be assumed for the values left out. Note the
  747. difference between the /Y2:### (set the bottom of the grid to ###) and
  748. /Y2 (AutoScale bottom of grid for square aspect ration) options.
  749.  
  750.  
  751. /X1:###        Set LEFT of grid
  752. -------------------------------
  753.       The left side of the grid will be set to the value of ###.
  754.  
  755. /Y1:###         Set TOP of grid
  756. -------------------------------
  757.      The top of the grid will become the point ### on the y-axis.
  758.  
  759. /X2:###       Set RIGHT of grid
  760. -------------------------------
  761.     The right side of the grid will be set to the value of ###.
  762.  
  763. /Y2:###      Set BOTTOM of grid
  764. -------------------------------
  765.     The top of the grid will become the point ### on the y-axis.
  766.  
  767. /Y2    AutoScale bottom of grid
  768. -------------------------------
  769.     The bottom y-value will be scaled to fit the given x and y top
  770.     values for a square aspect ratio.
  771. *** NOTE: This option must be AFTER any other range options on the
  772.     command-line or the grid will not be scaled properly.
  773.  
  774.  
  775. /G:xxxxxx        Graph Equation
  776. -------------------------------
  777.     If you want to start up GraphIt! by automatically graphing one or
  778.     more equations, use the /G: option. The only limits on the number
  779.     of equations you can include on the command line are the capacity
  780.     of the redraw queue (20 equations) and, of course, the maximum
  781.     length of the command line (I think it's around 255 characters).
  782.     The equation(s) will be parsed and graphed in exactly the same way
  783.     as the regular prompted input, with one exception: You MAY NOT
  784.     include any spaces in the equation as they will be interpreted as
  785.     delimiters between arguments. Any other options on the command
  786.     line (range, scale, fineness, etc.) will be executed BEFORE the
  787.     equation is graphed. As the GraphIt! editor is far superior to the
  788.     DOS command line editor, this option has limited usefulness, but
  789.     it is a good interface for execution from a batch file.
  790.  
  791.  
  792.  
  793. Appendix                          ====================================
  794. BBBB                              | Upgrade Notes: Changes from 1.41 |
  795. B   B                             ====================================
  796. BBBB
  797. B   B
  798. BBBB o                                                              15
  799. ----------------------------------------------------------------------
  800.  
  801.     GraphIt! 2.00 offers significantly more power and functionality
  802. than its predecessor in an easier to use package. This is due to the
  803. following major enhancements:
  804.  
  805.  1. The parser has been revised to accept any equation with one equals
  806.     sign and one "y" variable and to isolate the "y" variable on one
  807.     side of the equation so the other side can be evaluated like a
  808.     regular expression in terms of "x". It also checks for even powers
  809.     of "y" and will set up to graph a "top" half and a "bottom" half
  810.     by taking both the positive and negative root when isolating "y".
  811.     This opens up a whole new class of functionality, but the only
  812.     change evident to the user is that the graphing prompt does not
  813.     provide the "y=" half of the equation.
  814.  
  815.  2. The program now supports Microsoft mice. The mouse is active all
  816.     of the time except during the actual graphing to provide a quicker
  817.     way of selecting menu items and a feeling of better responsiveness
  818.     to the user.
  819.  
  820.  3. The x- and y-axes are now labeled with the coordinates each cross-
  821.     hatch line represents, so you don't have to count to approximate
  822.     where a point is. The numbers are unobtrusive but you also have
  823.     the option of turning them off if they get in the way.
  824.  
  825.  4. The expression evaluator contains 2 more error traps and
  826.     associated messages to prevent floating-point errors from leaking
  827.     through and being detected by Quick C's clumsy math run-time error
  828.     processor. The non-fatal messages are also suppressed by default,
  829.     with the option to turn them on if desired.
  830.  
  831.  5. The graph-drawing loop benefits from the addition of the Smart-
  832.     Fineness automatic fineness adjustment, which working in
  833.     conjunction with the line-drawing feature makes manual fineness
  834.     adjustment almost obsolete. It automatically decreases the
  835.     fineness when the point being graphed is not on the screen to
  836.     speed up blank areas, then recovers automatically and backtracks
  837.     to the spot where it comes on-screen again. It also varies the
  838.     fineness with the slope of the equation being graphed--less when
  839.     the slope is near-horizontal, greater when the slope tends toward
  840.     vertical, so steep graphs are tracked more effectively.
  841.  
  842.  6. The Print tables function, which performed disappointingly at best
  843.     in the last release, has been completely rewritten to work
  844.     effectively.
  845.  
  846.     All of these major enhancements have been made at the cost of less
  847. than 6000 extra bytes in the executable file, due to kSoft's
  848. commitment to quality and excellence in all of its products. If you'd
  849. like to support future versions with your comments and suggestions,
  850. see Appendix D for the mail-in survey form.
  851.  
  852.  
  853.  
  854. Appendix                           ===================================
  855.  CCCC                              | Using GraphIt! with Windows 3.0 |
  856. C                                  ===================================
  857. C
  858. C
  859.  CCCC o                                                             16
  860. ----------------------------------------------------------------------
  861.  
  862. NOTE: GraphIt! 2.00 does NOT run in Win 3's windowed environment, but
  863. it should run perfectly as a full-screen DOS application.
  864.  
  865.     This ZIP file contains 2 files to make it easier to use GraphIt!
  866. from Microsoft Windows 3.0. They are GRAPHIT.PIF, its program
  867. information file, and GRAPHIT.ICO, its very own icon. To use these
  868. files, follow the instructions below.
  869.  
  870.  1. Create a directory on your hard drive -- C:\GRAPHIT
  871.     [you can use a different directory if you want but in that case
  872.     you must change the two fields in GRAPHIT.PIF which have the 
  873.     directory name in them.]
  874.  2. Copy all of the files in this ZIP file into that directory (see
  875.     READ.ME for a complete list).
  876.  3. Start up Windows if you weren't already using its File Manager to
  877.     do the steps above.
  878.  4. Open the group in Program Manager you want to put GraphIt! in.
  879.     Select "New..." from the "File" menu in Program Manager.
  880.  5. Select "Program Item" in the dialog box.
  881.  6. For Description, type "GraphIt!". For Command line, type
  882.     "C:\GRAPHIT\GRAPHIT.PIF".
  883.  7. Select the "Change Icon" button. At "Filename" in the dialog box,
  884.     type "C:\GRAPHIT\GRAPHIT.ICO".
  885.  8. Select "OK". You should now have a Windows-startable GraphIt!
  886.  
  887.  
  888.  
  889. Appendix                                    ==========================
  890. DDDD                                        | Shareware / Order Form |
  891. D   D                                       ==========================
  892. D   D
  893. D   D
  894. DDDD o                                                              17
  895. ----------------------------------------------------------------------
  896.  
  897. Shareware: Feel free to distribute copies of GraphIt! to your friends
  898. AS LONG AS 1) you charge no fees for its use or distribution and 2)
  899. you do not modify the program or documentation files in any way.
  900.  
  901.         This program is to be taken AS IS with no warranties, express
  902. or implied. There are several bugs I know of, most of which have to do
  903. with error messages I cannot keep the library functions from printing,
  904. but no serious bugs that could cause loss of data or even a system 
  905. crash. Please tell me about any bugs you find to be especially
  906. bothersome that I should correct for the next release.
  907.  
  908.         If, after using GraphIt!, you find that it is easy, helpful,
  909. and convenient to use, please support the release of future versions
  910. by filling out the registration form on the next page and sending your
  911. contribution (payable to Keith Hertzer) to the address below:
  912.  
  913.                               kSoft, Inc.
  914.                           345 Montecillo Dr.
  915.                       Walnut Creek, CA 94595-2613
  916.  
  917. If you send $20 or more, you will be registered to receive a diskette
  918. with the next version of GraphIt! when it becomes available, along
  919. with promotional copies of other kSoft programs. For releases after
  920. that, you will be informed that a new version is available and where
  921. you can download it.
  922.  
  923. Even if you cannot send any money, please help me out by filling out
  924. the response form below so I can get an idea of what I should add to
  925. the next upgrade.
  926.  
  927.  
  928. If you would like a copy of the source code for GraphIt! (compiled
  929. under Microsoft QuickC version 2.0), please send me $20 and a short
  930. note telling why you would like it.
  931.  
  932.  
  933.  
  934.  
  935.  
  936. ------------------------kSoft REGISTRATION FORM-----------------------
  937.  
  938.  
  939. Name__________________________      Phone # ________________________
  940.  
  941.  
  942. Address ______________________________________________________________
  943.  
  944.  
  945. City ____________________________    State _______    ZIP ____________
  946.  
  947.    _
  948.   |_|   Enclosed is my $20 or more contribution. Please register me to
  949.         receive the next upgrade to GraphIt!.
  950.    _
  951.   |_|   Please send me the C source code to GraphIt! 2.00. I have
  952.         enclosed a short note on why I'd like it and a check for $20.
  953.  
  954.  
  955. What size diskettes do you use?        5 1/4"           3 1/2"
  956.  
  957.  
  958. The following questions are asked on a purely informational basis:
  959.  
  960. What hardware platform are you using to run GraphIt!?  (circle one)
  961.  
  962.    PC      XT      AT       PS/2 (Model ____)
  963.  
  964.    8088 clone       '286 clone        '386/486
  965.  
  966.  
  967. What DOS version do you usually run with it?
  968.  
  969.    PC-DOS  /   MS-DOS    ____ . ____
  970.  
  971.  
  972. What type of video card do you have?        other (___________)
  973.  
  974.     Monographics           CGA            EGA             VGA
  975.  
  976.  
  977. What features do you like best about GraphIt!?
  978.  
  979. ______________________________________________________________________
  980.  
  981. ______________________________________________________________________
  982.  
  983.  
  984. What problems have you experienced with GraphIt!?
  985.  
  986. ______________________________________________________________________
  987.  
  988. ______________________________________________________________________
  989.  
  990.  
  991. Any other comments or suggestions for improvement in the next upgrade?
  992. (Your comments are vital so I will know what to change or add.)
  993.  
  994. ______________________________________________________________________
  995.  
  996.