<HTML xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">

<HEAD>
<META http-equiv=Content-Type content="text/html; charset=windows-1252">
<META name=ProgId content=FrontPage.Editor.Document>
<META name=Generator content="Microsoft FrontPage 4.0">
<META name=Originator content="Microsoft Word 9">
<TITLE>APPENDIX A: Geometry Menus</TITLE>
</HEAD>

<BODY lang=EN-US style='tab-interval:.5in' background="images/BlueGrid.gif">

   <DIV>

   <BR>

   <BR>

   <H1 Align=Center><B>CAM Wizard</B> N/C Programming Software</H1>

   <H2 Align=Center>Editing the Geometry Menus</H2>

   <BR>

   <P> The menus in the geometry program are user configurable. Each menu is stored in a file with
   the menu name and a .MNU extension. These menu files are text files with lists of menu items
   followed by a comma or semicolon and the command to be executed if that item is selected.
   Multiple commands can be executed for a given menu item by separating the commands with commas.
   Menu items are selected by moving the mouse cursor to that item and pressing any mouse key, or
   pressing the right mouse button (or F3) to select the highlighted item.</P>

   <BR>

   <P>The mouse and menu system work together to create a powerful and flexible command processing
   system. Special commands exist to enhance the interaction of the mouse and menus. These commands
   allow interactive, prompted inputting of parameters such as geometry selection, names, and X/Y
   locations from either the mouse, or the keyboard. These commands are: &quot;<B>XN</B>&quot;,
   &quot;<B> YN</B>&quot;, &quot;<B> XY</B>&quot;,&quot;<B>PN</B>&quot;, &quot;<B>LN</B>&quot;,
   &quot;<B> CN</B>&quot;, &quot;<B> SHAPEN</B>&quot;, &quot;<B>SELECTION</B>&quot;,
   &quot;<B>LAYERN</B>&quot;, &quot;<B> RAD</B>&quot;, &quot;<B> ANG</B>&quot;, and
   &quot;<B>DIST</B>&quot;. All of these commands, when used in the command line will prompt the
   user for an appropriate response, and then replace that command with the user input. The mouse
   keys work as described below for these commands.</P>

   <BR>

   <P><B>XN</B> asks the user for an X dimension (X/Point ?). This dimension can be typed in at the
   keyboard, selected with the left button of the mouse, taken as the X coordinate of the object
   picked with the center button of the mouse, or as the default X0 by pressing either [Enter] or
   the right mouse button.</P>

   <BR>

   <P><B>YN</B> asks the user for an Y dimension (Y/Point ?). This dimension can be typed in at the
   keyboard, selected with the left button of the mouse, taken as the Y coordinate of the object
   picked with the center button of the mouse, or as the default Y0 by pressing either [Enter] or
   the right mouse button.</P>

   <BR>

   <P><B>XY</B> asks the user for an XY position (X,Y/Point ?). This position can be typed in at
   the keyboard as two numbers (the X and Y dimensions) separated by a comma, selected with the
   left button of the mouse, taken as the X/Y coordinate of the object picked with the center
   button of the mouse, or as the default X0/Y0 by pressing either [Enter]. An [intersection]
   option is also available as indicated at the bottom right of the screen. This option is selected
   with the right mouse button. The user is then prompted for two selections, the X/Y input being
   taken as the intersection of the two.</P>

   <BR>

   <P><B>ANG</B> asks the user for an angle (Angle ?). The angle can be typed in at the keyboard,
   or a line can be selected with any mouse button. The angle of the line is then taken as the
   input angle.</P>

   <BR>

   <P><B>RAD</B> asks the user for an radius (Radius ?). The radius can be typed in at the
   keyboard, or a circle can be selected with any mouse button. The radius of the circle is then
   taken as the input radius.</P>




   <BR>

   <P><B>DIST</B> asks the user for a distance (Distance ?). The distance can be typed in at the
   keyboard, or a point can be digitized with the left mouse button, or an existing point picked
   with the center mouse button, and its distance from X0/Y0 will be the input distance. If either
   [Enter] is pressed or the right mouse button is pressed, then the default distance is used.</P>

   <BR>

   <P><B>PN</B>, <B> CN</B>, <B> LN</B>, <B>SHAPEN</B>, and <B> LAYERN</B> ask the user for an
   existing element of geometry (such as Point ?). The element number can be typed in on the
   keyboard (such as 3 for P3), or the element can be selected with either of the left two mouse
   buttons. This last element is selected by pressing the right mouse button or pressing [Enter].</P>

   <BR>

   <P><B>SELECTION</B> asks the user for an existing piece of geometry (Selection ?). This element
   name can be typed in on the keyboard as it would normally be specified (such as P2 for point
   number 2), or selected with the two left mouse buttons. A [window] option also exists as
   indicated at the bottom right of the screen. This option is selected by pressing the right mouse
   button and then inputting the two points defining the window. When window is selected, all
   elements completely in the window are chosen.</P>

   <BR>

   <P>In addition to these commands, if a string of characters is enclosed in square brackets, then
   that string of characters will be used for the prompt, and anything typed as a response will be
   inserted into the command line in place of the square brackets and their contents.</P>

   <BR>

   <BR>

   <BR>

   <H2 Align=Center>Creating Machine Definition Files</H2>

   <BR>

   <P> The file <B>MACH.CAM</B> is a list of the machines supported by the system. Each machine
   will be listed in this file as the machine name, a search line number and string, and the
   machine type, all separated by commas. The machine names are used to identify the different N/C
   machines by name. The search line number and search string are used to identify a particular
   tape as being for a given machine. The tape will be searched for the search string on the
   specified line (or the entire tape if the search line is 0) for each machine one by one, until a
   match is found between that tape and a machine listed in <B>MACH.CAM</B>. The Machine type can
   be either <B>MILL</B>, <B> LATHE</B>, <B> PUNCH</B>, or <B>CUTTER</B> and tells the system which
   post-processor or check program to run for that machine.</P>

   <BR>

   <P> Each machine has it own machine definition file with a file name of <B> MACHn.DEF</B> where
   the n indicates its position in the <B>MACH.CAM</B> file. for example, the second machine in
   <B>MACH.CAM</B> will use <B>MACH2.DEF</B>. This part of the manual explains the contents of the
   machine definition files.</P>

   <BR>

   <P>The contents of the <B>MACHn.DEF</B> files can be broken up into three sections. The first
   section is the list of parameters and function names for that machine (such as maximum feedrate
   and the name of the rapid function), speed and tool change tables, and the SUB's that define the
   tape format for a given function. The following is a list of the parameters and function
   definitions found in the beginning of the <B> MACHn.DEF</B> file, with a description of each.</P>

   <BR>

   <PRE>

   <B>SMIN:nn</B>                Min spindle speed

   <B>SMAX:nn</B>                Max spindle speed

   <B>TAPSPEED:.5</B>            Ratio of tap to drill spindle speed

   <B>BORESPEED:3</B>            Ratio of boring speed to drilling speed

   <B>REAMSPEED:3</B>            Ratio of reaming speed

   <B>CARBSPEED:4</B>            Ratio of speed for carbide tool

   <B>TAPMAX:800</B>             Max spindle speed used for tapping

   <B>FMIN:nn</B>                Min feed rate

   <B>FMAX:nn</B>                Max feed rate

   <B>XMIN:nn</B>                Min X dimension

   <B>XMAX:nn</B>                Max X dimension

   <B>YMIN:nn</B>                Min Y dimension

   <B>YMAX:nn</B>                Max Y dimension

   <B>FIX:4</B>                  Number of places to use for converting numbers in POST

   <B>ZFEED:.5</B>               Ratio of Zfeedrate to X/Y feedrate

   <B>BORE:.004</B>              Inches per revolution for boring

   <B>REAM:3</B>                 Ratio of reaming feedrate to drilling feedrate

   <B>HOLETOL:.005</B>           Tolerence for checking if a hole is the specified size

   <B>CIRCTOL:.0005</B>          Tolerence for linear moves approximating circular move

   <B>ROTARY COMP:ON/OFF</B>     Turns on/off rotary X/Y compensation leaving edge of tool on  centerline of cylinder

   <B>COMMENTS:ON/OFF</B>        Enables/disables comments in source becoming comments in tape

   <B>CHAMFER:.005</B>           Chamfer amount automatically used when SPOT DRILL is used

   <B>CLEARANCE:.1</B>           Clearance for Drilling, Offset to bring in cutter comp

   <B>TAPRAP:.4</B>              Rapid height used for tapping

   <B>ZTOOL:1</B>                Default tool Z height after tool change

   <B>LINEMODE:1</B>             1 = normal, 2 = pt to pt

   <B>CIRCMODE:1</B>             1 = multiple quadrants, 2 = quadrants, 3 = pt to pt

   <B>NUM:1,1</B>                Number of places for line numbers, step

   <B>ROTARY AXIS:X/Y</B>        Tells which axis is rotary

   </PRE>

   <BR>

   <BR>

   <BR>

   <P> The following function definitions are strings of characters to be substituted for the
   function name when the SUB is executed.</P>

   <BR>

   <PRE>

   <B>ABS</B>                       = G90 Go to absolute mode

   <B>INC</B>                       = G91 Go to incremental mode

   <B>RAPID</B>                     = G0 Go to rapid mode

   <B>FEED</B>                      = G1 Go to feed mode (NO + RAPID$ if default is FEED)

   <B>CCW</B>                       = G3 Circular move counter clockwise

   <B>CW</B>                        = G2 Circular move clockwise

   <B>COMPLEFT</B>                  = G41 Pull in cutter comp to the left

   <B>COMPRIGHT</B>                 = G42 Pull in cutter comp to the right

   <B>COOLANTON</B>                 = M8 Turn coolant on

   <B>COOLANTOFF</B>                = M9 Turn coolant off

   <B>SPINDLECWISE</B>              = M3 Turn spindle on clockwise

   <B>SPINDLECCWISE</B>             = M4 Turn spindle on counter clockwise

   <B>CONSTSPEED</B>                = G97 Run at constant speed (drilling etc.)

   <B>SETSPEED</B>                  = G96 Vary speed to maintain a set SFM

   <B>DRILL</B>                     = G81 Drill canned cycle

   <B>PECK</B>                      = G83 Peck canned cycle

   <B>REAM</B>                      = G82 Ream canned cycle

   <B>BORE</B>                      = G86 Bore canned cycle

   <B>TAP</B>                       = G84 Tap canned cycle

   </PRE>

   <BR>

   <BR>

   <BR>

   <BR>

   <BR>

   <P> The following are used only to tell the <B>CHECK</B> program how to identify the specified
   function in the tape:</P>

   <BR>

   <PRE>

   <B>BLOCKDLT</B>                     = / Do not execute this line in tape

   <B>REF</B>                          = G72 Define reference pt

   <B>PUNCHLINE</B>                    = G79 Punch line

   <B>NIBBLELINE</B>                   = G69 Nibble line

   <B>NIBBLEARC</B>                    = G68 Nibble arc

   <B>PUNCHRCT</B>                     = G66 Punch rectangle

   <B>WD</B>                           = I Width

   <B>HT</B>                           = K Height

   <B>XSTP</B>                         = P X step

   <B>YSTP</B>                         = Q Y step

   <B>ANG1</B>                         = J 1st angle

   <B>ANG2</B>                         = K 2nd angle

   <B>TOOLANG</B>                      = C Rotation angle of tool

   <B>CANCANCEL</B>                    = G80 Cancel canned cycle

   <B>THREAD</B>                       = G76 Threading canned cycle

   <B>ROUGHTURN</B>                    = G71 Rough turn cycle

   <B>CHANGETOOLS</B>                  = M6 Start tool change

   <B>XCODE</B>                        = X X coordinate

   <B>YCODE</B>                        = Y Y coordinate

   <B>ZCODE</B>                        = Z Z coordinate

   <B>ICODE</B>                        = I X ctr

   <B>JCODE</B>                        = J Y ctr

   <B>KCODE</B>                        = K Z ctr

   <B>RAP</B>                          = R Rapid level

   <B>SCODE</B>                        = S Spindle speed

   <B>FCODE</B>                        = F Feedrate

   <B>ECODE</B>                        = E Feedrate per revolution

   <B>TCODE</B>                        = T Specifies tool number

   <B>STEP</B>                         = Q Step for pecking

   <B>ZMOVE</B>                        = Z Start showing tool after tool Change

   <B>HCODE</B>                        = H Bring in tool height offset (AUTO means do it at tool change)

   <B>INITON</B>                       = G98 Return to intial point

   <B>INITOFF</B>                      = G99 No return to intial point

   <B>TOOLNUM</B>                      = NORMAL Describes tool # location change (also LATER, LAST)

   <B>TOOLFORMAT</B>                   = T0101 if like lathe

   <B>TOOLSET</B>                      = TOOL - Show tool description in tape

   <B>TOOLDLT</B>                      = FALSE TRUE if toolchanges have block delete char

   <B>SETPOS</B>                       = G92 Set position

   <B>CALLSUB</B>                      = M98 Call subroutine

   <B>LINESUB</B>                      = P Line number of subroutine

   <B>NUMSUB</B>                       = L Number of times to execute sub

   <B>RETSUB</B>                       = M99 Return from sub

   <B>ZERORET</B>                      = G28 Return axis to machine zero

   <B>PROGSTOP</B>                     = M0 Program stop

   <B>PROGEND</B>                      = M30 Marks end of program

   </PRE>

   <BR>

   <BR>

   <BR>

   <H2 Align=Center>TABLE FORMATS:</H2>

   <BR>

   <P>The tables in the machine definition files hold the data for looking up speed codes and tool
   change parameters. Machines with speed codes that are not capable of taking actual spindle
   speeds specified as S codes need a speed table. When choosing the speed code for a particular
   speed, the table is searched forward for a drilling or milling operation, and backward for
   tapping. This is intended to give the POST a chance to use the highest torque for milling and
   drilling, and the smallest torque for tapping. </P>

   <BR>

   <P>A table is also used for tool holders on the PUNCH type machines. This table shows the
   minimum and maximum sizes of the tools that can be held by a certain holder, and whether it is
   rotatable.</P>

   <BR>

   <BR>

   <BR>

   <P> The format of these tables is as follows:</P>

   <BR>

   <BR>

   <P><B>SPEED TABLE</B></P>

   <P><B> n:speed n:speed</B></P>

   <P><B> ...</B></P>

   <P><B> n:speed</B></P>

   <P><B>END TABLE</B></P>

   <BR>

   <BR>

   <BR>

   <P><B>TOOL TABLE</B></P>

   <P><B> TOOLn MIN:nn MAX:nn ROT</B></P>

   <P><B> TOOLn MIN:nn MAX:nn</B></P>

   <P><B> ...</B></P>

   <P><B> TOOLn MIN:nn MAX:nn</B></P>

   <P><B>END TABLE</B></P>

   <BR>

   <BR>

   <BR>

   <BR>

   <P><B>SUB Declarations:</B></P>

   <BR>

   <P>   The SUB declarations are used to define the format of certain basic command lines in the
   finished tape. The format of the SUB declaration is as follows:</P>

   <BR>

   <P><B>SUB name</B></P>

   <P><B> executed lines...</B></P>

   <P><B>END SUB</B></P>

   <BR>

   <P>   Where name is the name of the basic function represented by this SUB routine. The
   following is a list of the functions supported by the POST's and the SUB's in MACHn.DEF that
   will be executed for each of these.</P>

   <BR>

   <BR>

   <BR>

   <P><B>Function</B>                      <B>SUB</B> executed by POST (from MACHn.DEF)</P>

   <P> 
   &#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;&#8209;</P>

   <PRE>
   <B>StartUp</B>                      StartUp

   <B>TOOL</B>                         ToolChange

   <B>MILL</B>                         RapidXY, RapidZ, FeedZ, StartComp, FeedXY Ccw Cw, CancelComp, RapidZ

   <B>ROUGH TURN</B>                   RoughTurn, RapidXY, StartComp, FeedXY, Ccw, Cw, CancelComp, RapidXY

   <B>TURN</B>                         RapidXY, StartComp, FeedXY, Ccw, Cw, CancelComp, RapidXY

   <B>THREAD</B>                       Thread

   <B>FACE</B>                         RapidXY, FeedXY, RapidXY

   <B>CUT OFF</B>                      RapidXY, FeedXY, RapidXY

   <B>GRID</B>                         GridDef, GridStart, GridEnd, Grid

   <B>PUNCH</B>                        NibbleLine, NibbleArc

   <B>PUNCH</B>                        PunchXY

   <B>DRILL</B>                        Drill first time, then RapidXY

   <B>TAP</B>                          Drill first time, then RapidXY

   <B>BORE</B>                         Drill first time, then RapidXY

   <B>REAM</B>                         Drill first time, then RapidXY

   <B>STOP</B>                         ProgramStop

   <B>END</B>                          EndProgram

   <B>MANCODE</B>                      ManCode

   </PRE>

   <BR>

   <P>Lines in <B>SUB</B> routines are executed by replacing certain strings with their determined
   values and then making that line from the <B>SUB</B> the next line of the finished tape. Lines
   in these <B>SUB's</B> can be conditionally executed by using the <B>IF</B> function. If the
   expression after <B>IF</B> is non-zero, then the next lines are executed, otherwise they are
   not. <B>ELSE</B> can also used to break up <B>IF</B> statements into two parts, one to be
   executed if <B>IF</B> is true and one to be executed if <B> IF</B> is <B>FALSE</B>. <B>IF</B>
   statements follow this format:</P>

   <BR>

   <P><B>IF expr THEN</B></P>

   <P><B>   executed lines...</B></P>

   <P><B>ENDIF</B></P>

   <BR>

   <P><B>IF expr THEN</B></P>

   <P><B>   executed lines...</B></P>

   <P><B>ELSE</B></P>

   <P><B>   executed lines...</B></P>

   <P><B>ENDIF</B></P>

   <BR>

   <P> Possible <B>IF</B> statement parameters are:</P>

   <BR>

   <P><B>NOT</B> <B>INSIDE</B> <B>OUTSIDE</B> <B>&gt; &lt; = &quot;user string&quot;</B> -
   True if user string found in tool name or command. For example, IF &quot;TAP&quot; will be TRUE
   if TAP is found in the tool name or the command being executed.</P>

   <BR>

   <P> <B>firsttool</B> - True if this is the first tool</P>

   <BR>

   <P> <B>rotary</B> - True if rotary axis enabled</P>

   <BR>

   <BR>

   <BR>

   <P> Executed Lines in a SUB routine are handled as follows: First substitutions are made for the
   following strings:</P>

   <BR>

   <PRE>

   <B>x1</B>                          -&gt; 1st X

   <B>y1</B>                          -&gt; 1st Y

   <B>z1</B>                          -&gt; 1st Z

   <B>x2</B>                          -&gt; 2nd X

   <B>y2</B>                          -&gt; 2nd Y

   <B>z2</B>                          -&gt; 2nd Z

   <B>xpos</B>                        -&gt; Current X position

   <B>ypos</B>                        -&gt; Current Y position

   <B>zpos</B>                        -&gt; Current Z position

   <B>i1</B>                          -&gt; Incremental X to Xctr

   <B>j1</B>                          -&gt; Incremental Y to Yctr

   <B>r1</B>                          -&gt; Rapid height

   <B>a1</B>                          -&gt; 1st angle (in degrees)

   <B>a2</B>                          -&gt; 2nd angle (in degrees)

   <B>lasttool</B>                    -&gt; Last tool number

   <B>nexttool</B>                    -&gt; Next tool number

   <B>changetools</B>                 -&gt; Code that starts a tool change

   <B>tool1</B>                       -&gt; Tool number of first tool

   <B>toolname</B>                    -&gt; Current tool name

   <B>tool</B>                        -&gt; Current tool number

   <B>partname</B>                    -&gt; Part name specified on first line of SOURCE

   <B>speedcode$</B>                  -&gt; ConstSpeed$ or SetSpeed$ (Lathe)

   <B>speed</B>                       -&gt; RPM (or SFM for SetSpeed$ on lathe)

   <B>zfeedrate</B>                   -&gt; inches / minute for Z feed

   <B>feedrate</B>                    -&gt; inches / minute (inches per rev on lathe)

   <B>smax</B>                        -&gt; Max spindle speed allowed

   <B>cut</B>                         -&gt; Amount of each cut for threading on lathe

   <B>depth</B>                       -&gt; Depth of cut for threading on lathe

   <B>threads</B>                     -&gt; threads per inch

   <B>width</B>                       -&gt; PassWidth

   <B>thread</B>                      -&gt; Thread$ (Lathe)

   <B>roughturn</B>                   -&gt; RoughTurn$ (Lathe)

   <B>stnum</B>                       -&gt; Start Number for RoughTurn (Lathe)

   <B>subnum</B>                      -&gt; Number of lines for RoughTurn (Lathe)

   <B>grid</B>                        -&gt; Grid number (Punch)

   <B>clp</B>                         -&gt; Amount trimmed off edge (Punch)

   <B>dst</B>                         -&gt; Distance of Punch/Nibble Line (Punch)

   <B>trx</B>                         -&gt; 2nd tool radius (Punch)

   <B>tr</B>                          -&gt; Tool radius

   <B>spindleon</B>                   -&gt; SpindleCw$ or SpindleCcw$

   <B>can</B>                         -&gt; Drill$, Peck$, Bore$, Ream$, Tap$

   <B>step</B>                        -&gt; Step$ if incr &lt;&gt; 0

   <B>incr</B>                        -&gt; Pecking amount if incr &lt;&gt; 0

   <B>comp</B>                        -&gt; CompLeft$ or CompRight$

   <B>coolanton</B>                   -&gt; CoolantOn$ if COOLANT enabled

   <B>coolantoff</B>                  -&gt; CoolantOff$ if COOLANT enabled

   <B>abs</B>                         -&gt; Abs$ if not already absolute mode

   <B>inc</B>                         -&gt; Inc$ if not already incremental mode

   <B>rapid</B>                       -&gt; Rapid$ if not already rapid mode

   <B>feed</B>                        -&gt; Feed$ if not already linear feed mode

   <B>ccw</B>                         -&gt; Ccw$ if not already ccw feed mode

   <B>cw</B>                          -&gt; Cw$ if not already cw feed mode

   <B>//</B>                          -&gt; / after domath

   </PRE>

   <BR>

   <P>Then if the line is not a comment, all math expressions are executed:</P>

   <BR>

   <P>domath: <B>(): PI SIN COS TAN ATN SQR * / - + FIXnn,n INTnn TRAILnn,n LEADnn,n []</B></P>

   <BR>

   <P>The POST always keeps track of X,Y,Z,F trim dimensions. It then expands <B>N<I>n</I></B>
   into N and the line number of that line in the tape according to the <B>NUM</B> parameter. The
   line then becomes a line in the tape code.</P>

   <BR>

   </DIV>

   <P>
   <NOBR>[ <A href="software.asp">Home</A> ]</NOBR> <NOBR>[ <A href="cam.htm">Geometry</A> ]</NOBR> <NOBR>[ <A href="source.htm">Programming</A> ]</NOBR> <NOBR>[ <A href="postm.htm">Mill</A> ]</NOBR> <NOBR>[ <A href="postl.htm">Lathe</A> ]</NOBR> <NOBR>[ <A href="postp.htm">Punch</A> ]</NOBR> <NOBR>[ <A href="tape.htm">Tape Editor</A> ]</NOBR> <NOBR>[ <A href="checkm.htm">Check (Mill)</A> ]</NOBR> <NOBR>[ <A href="checkl.htm">Check (Lathe)</A> ]</NOBR> <NOBR>[ <A href="checkp.htm">Check (Punch)</A> ]</NOBR> <NOBR>[ <A href="appendix.htm">Setup</A> ]</NOBR>
   </P>

   <P>
   <FONT color=midnightblue>Send mail to <A href="mailto:webmaster@swe-eng.com">webmaster@swe-eng.com</A> with questions or comments about this web site.<BR>
   Please read our <A href="rules.asp">Usage Rules</A> before using any information from this site.<BR>
   <A href="copyright.asp">Copyright © 2000</A> swe-eng.com<BR>
   Last modified: March 30, 2000</FONT>
   </P>

</BODY>

</HTML>