home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 051.lha / Mcad_v1.2.5 / mCAD.doc < prev    next >
Text File  |  1986-11-20  |  32KB  |  677 lines

  1.     mCAD Version 1.2.5    5/12/87
  2.  
  3.    by
  4.       Tim Mooney
  5.       120 Purefoy Rd.
  6.       Chapel Hill, NC 27514
  7.  
  8. ---------------------------------------------------------------------------
  9.    mCAD is SHAREWARE.  This means that you are free to play around with mCAD
  10. for as long as it takes you to decide whether or not you are willing to pay
  11. for it.  It also means that you are also free to decide what price you are
  12. willing to pay.  Finally, it is possible for you to use mCAD and pay nothing,
  13. although this violates the moral contract between you and me that you enter
  14. by reading this message.
  15.  
  16.    If you send me $20 or more, you will become a registered user.  I'll be
  17. grateful for your support and I will:
  18.  
  19. 1) Send you notice of new versions as I write them.
  20.  
  21. 2) Allow you personal use of the source code.
  22.  
  23. 3) Support your use by answering questions and considering your requests for
  24. improvements to mCAD.  Since some requests are more difficult than others to
  25. satisfy, and since some improvements may be impossible to implement without
  26. adversely affecting mCAD's performance in other respects, I can promise
  27. nothing more than serious consideration.
  28.  
  29. 4) Send you the latest versions of public domain software that I either
  30. wrote or am maintaining.  Currently, the list includes:
  31.  
  32.    mp          - a 2-D data plotting routine which can extract data by
  33.                  "column" from a text file.
  34.  
  35.    tdp         - a 3-D data plotting routine with hidden line removal.
  36.  
  37.    vt640       - a tektronix 4010 emulator that is derived from "TEK4010"
  38.                  and the latest version of "VT100" available to me.
  39.  
  40.    long.font   - an 8 X 16 font that works well with interlaced screens and
  41.                  with my favorite (customized) version of MicroEmacs.
  42.  
  43.    d           - a directory listing program (five-up, sorted, with sub-
  44.                  directories in an alternate color) derived from the public
  45.                  domain program "ld".
  46.  
  47.    Whatever you decide to do, you will not be paying for marketing,
  48. promotion, or copy-protection.
  49.  
  50.    Final note: if you want me to send you the latest version of mCAD,
  51. source code, or anything else on disk, please send either a blank disk
  52. or an additional $5. 
  53. ---------------------------------------------------------------------------
  54.  
  55.    mCAD is an object-oriented drawing program.  It has a small set of
  56. graphics primitives (like "line", "box", and "text") and a small set of
  57. editing functions (like "move", "size", and "rotate").  While drawing and
  58. editing, the user can call on other functions to modify the display -- to
  59. zoom in, slide around, superimpose a grid, etc. 
  60.  
  61.    The one powerful feature of mCAD is that primitives can be grouped and
  62. ungrouped; the editing functions operate on groups of (one or more)
  63. primitives.  In these instructions, "group" and "object" will mean either a
  64. single primitive or a group of primitives.
  65.  
  66.    Most (surely all!) Amiga users know how to use the mouse to draw pictures. 
  67. In mCAD, the mouse does mostly what you're accustomed to from programs like
  68. GraphiCraft.  There are three differences:
  69.  
  70.    1) In mCAD, you are called on to SELECT objects for treatment with one of
  71. the editing tools.  Since mCAD can't know for which of two or more
  72. overlapping objects your SELECT click was intended, it runs through a list of
  73. all the possibilities, highlighting each in turn.  In this context, the MENU
  74. button means "No, not that one", the SELECT button means "Yes, the
  75. highlighted object is the one I want". 
  76.  
  77.    2) While drawing a primitive (exception: text) or editing a group
  78. (exceptions: coloring, setting line type), mCAD gives you a chance to abort
  79. the whole operation.  In this context, the MENU button means "Abort", the
  80. SELECT button means "The highlighted object is drawn as I want it, make it
  81. permanent."
  82.  
  83.    3) Certain editing functions, "Size" for example, require additional
  84. information and indicate this by drawing a highlighted object.  You are asked
  85. to click on (SELECT button) e. g., one corner of a box. 
  86.  
  87.    So, generally, when the mouse buttons don't have their Intuition meanings,
  88. the SELECT button means "Yes/ok/do it...", and the MENU button means
  89. "No/abort/get me out of this".  This follows the accepted Amiga convention
  90. that "left" breaks new ground while "right" is conservative and safe.  If you
  91. get lost in -- or called away in the middle of -- a sequence of mouse clicks,
  92. a couple of MENU button clicks will get you out of it. 
  93.  
  94.  
  95. *********************************************************************
  96. FILES:
  97.    mCAD wants the files mCAD.txt and mCAD.rgb to be in your default
  98. directory.  If mCAD.txt doesn't exist, text will not work.  If mCAD.rgb
  99. doesn't exist, default colors will be used.
  100.    mCAD expects the default directory to contain a subdirectory named
  101. "part".  If this subdirectory doesn't exist, mCAD may think you have the
  102. wrong disk, and you may have to type in the name of the directory you
  103. are using to save parts in.
  104.    If you intend ever to render a drawing on a dot-matrix printer, the
  105. file mCAD.prtdef must exist in your default directory.
  106.  
  107. *********************************************************************
  108. THE COMMAND LINE:  to call up the program
  109. *****************
  110.  
  111. mCAD ?         Help
  112. mCAD filename  Create/Edit a drawing named "filename".  (You need not type
  113.                the filename if you intend to load the file from within mCAD.)
  114.  
  115.  
  116. *********************************************************************
  117. THE MENU:   menu items that don't work or aren't yet implemented are
  118. described by "*"
  119. *********
  120.  
  121. *************
  122. PROJECT
  123.  
  124. New         Erases the current drawing.
  125.  
  126. Open        Opens a drawing which exists on disk for viewing and/or editing.
  127.             MicroSmith's file requester is used to specify the file name.
  128.  
  129. Save        Saves the drawing to disk using the current drawing name.  The
  130.             current drawing name is either the name that occurred on the
  131.             command line, or the name of the file most recently "Open"ed.
  132.             The default drawing name is "mCAD.out".
  133.  
  134. SaveAS      Saves the drawing to disk.  MicroSmith's file requester is used
  135.             to specify the file name.
  136.  
  137. Plot        Saves the (entire) drawing as a plot file in the Hewlett Packard
  138.             Graphics Language.  Instructions are included in the file to
  139.             enable XON/XOFF handshaking with the plotter.  To actually make
  140.             the plot, copy the plot file to SER: The plot file name has the
  141.             same root as the current drawing name, and the extension ".plt"
  142.  
  143. ..1 Pen     Similar to "Plot", except that a separate file is made for each
  144.             of the 16 colors.  The files are named as for "Plot", but a hex
  145.             number (0..f) is tacked onto the end to indicate the pen color.
  146.             The file whose extension is ".plt0" is special;  it contains the
  147.             plotter initialization and MUST be sent to the plotter first.
  148.             The pen number used in all files is 1.  See "HINTS..." below for
  149.             more information on this item.
  150.  
  151. PrtScrn     Prints the current screen on a dot-matrix printer.  Information
  152.             about the printer and your choice of scale and orientation are
  153.             read from the file mCAD.prtdef.  See "PRINTERS" below for more
  154.             information on this file.
  155.  
  156. About       Toggles display of the screen title bar.
  157.  
  158. Quit        Quits mCAD.  If you have made any changes to the current drawing,
  159.             you will be asked if you want to save it.
  160.  
  161.  
  162. *************
  163. PART
  164. mCAD expects the current directory to contain a sub-directory called "part".
  165. MicroSmith's file requester will let you change directories, however.  If
  166. the sub-directory "part" is not found, the file requester will say
  167. "Wrong disk?".  
  168.  
  169. Open        Includes an mCAD drawing, which was previously saved to disk, in
  170.             the current drawing.  You will use MicroSmith's file requester to
  171.             specify the part name.
  172.  
  173. Save        Saves a group to disk using the current part name.  Select the
  174.             group you want to save with the mouse as described above.
  175.  
  176. SaveAs      Saves a group to disk by name.  When you've selected the group
  177.             to be saved, MicroSmith's file requester will display itself
  178.             and accept the file name.
  179.  
  180. Group       Groups objects together for treatment with an editing tool or to
  181.             be saved as a "part".  Draw a box completely enclosing the
  182.             objects you want treated as a group.  An object can be in only
  183.             one group at a time;  if an enclosed object is already part of a
  184.             group, the entire group will merge into the new group. 
  185.  
  186. UnGroup     Select a group by clicking on any of its members.  On the
  187.             confirming SELECT click, the group will be dismembered.
  188.  
  189.  
  190. *************
  191. OPTIONS
  192.  
  193. Replot      Redraws the screen.
  194.  
  195. Zoom        1)  Draw a box around the region you want to see up close.  mCAD
  196.             will zoom in to the biggest region consistent with both the box
  197.             you drew and the aspect ratio of the drawing.  Note: in this
  198.             version the aspect ratio cannot be changed by any command.
  199.             2)  Click twice in the same spot.  mCAD will zoom out by a
  200.             factor of two.
  201.  
  202. Slide       Draw a line.  On your second SELECT click mCAD redraws the
  203.             picture as if your first click had grabbed a hold of the page. 
  204.  
  205. FullPlot    Zooms out to show the whole drawing.
  206.  
  207. Axes        This is a toggle switch that puts axes on the display.  Setting
  208.             this switch does NOT cause the screen to be redrawn.
  209.  
  210. Grid        This is a toggle switch that puts a grid over the display.
  211.             Setting this switch does NOT cause the screen to be redrawn.
  212.  
  213. X-Hair      This is a toggle switch.  The mouse pointer is replaced by a
  214.             crosshair.  (Notice what happens when you press the MENU button
  215.             and move the mouse.)            
  216.  
  217. GridSnap    This is a toggle switch.  Primitives (exceptions: text, circle,
  218.             arc) drawn with GridSnap enabled will snap to the grid on your
  219.             *final* SELECT click.  When enabled, menu item reads "GRIDSNAP". 
  220.  
  221. DataSnap    This is a toggle switch.  Primitives (exceptions: text, circle,
  222.             arc) drawn with DataSnap enabled will snap to previously drawn
  223.             objects (if they are close enough) on your final SELECT click.
  224.             Points are more "attractive" than lines connecting those points.
  225.             When enabled, menu item reads "DATASNAP"
  226.  
  227. nTics*2     Increases the density of tics / grid lines.  A maximum is
  228.             enforced.  Selecting this item causes the screen to be redrawn
  229.  
  230. nTics/2     Decreases the density of tics / grid lines.  A minimum is
  231.             enforced.  Setting this item causes the screen to be redrawn
  232.  
  233. ShowXY      Calls up a numeric readout in the current plot color of the
  234.             pointer position.  The readout is in USER coordinates (the
  235.             numbers which are drawn when you select "Axes" are in USER
  236.             coordinates.) The readout consists of the absolute X
  237.             (horizontal) and Y coordinates and the distances from the
  238.             location of the most recent SELECT click.
  239.  
  240.  
  241. *************
  242. DRAW
  243.  
  244. Line        Draw a sequence of (one or more) connected lines.  Click twice
  245.             on your final point. 
  246.  
  247. Box         Draw a box by clicking on two corners.
  248.  
  249. Circle      Draw a circle by clicking on the center position, moving the
  250.             mouse to change the size, and clicking again when the size is
  251.             right. 
  252.  
  253. Arc         Draw an arc with three mouse clicks: the first click sets the
  254.             center;  the second click sets the radius and starting angle;
  255.             the third click sets the ending angle. 
  256.  
  257. Measure     *
  258.  
  259. Clone       Select a group by clicking on any of its members.  A duplicate
  260.             will follow the mouse pointer until you press either the MENU
  261.             button ("abort") or the SELECT button. 
  262.  
  263. TextSize    Draw a box indicating the size/aspect of the letters you plan
  264.             to type onto the screen.
  265.  
  266. Cursor      SELECT the location of the text cursor.
  267.  
  268.  
  269. *************
  270. EDIT
  271. In every case, you first select a group for treatment.
  272.  
  273. Erase       SELECT a highlighted group to erase it.
  274.  
  275. Size        SELECT a highlighted group.  mCAD draws the smallest enclosing
  276.             rectangle (possibly a line).  You SELECT a corner of the
  277.             rectangle to begin sizing.  The group is scaled as the mouse
  278.             moves.  Press the SELECT button, when you like what you see, or
  279.             the MENU button to abort. 
  280.  
  281. Move        Select a group by clicking on any of its members.  The group
  282.             will follow the mouse pointer until you press either the MENU
  283.             button ("abort") or the SELECT button. 
  284.  
  285. Rotate      The selected object is rotated about its "center".  Vary the
  286.             angle by moving the mouse and click SELECT to finish or MENU to
  287.             abort. 
  288.  
  289. Rot +90     The selected object will be rotated counter- clockwise by 90
  290.             degrees.
  291.  
  292. Rot -90     The selected object will be rotated clockwise by 90 degrees.
  293.  
  294. Point       Select a group.  While the group you want to modify is
  295.             highlighted, click on the point you would like to move.  The
  296.             point and lines connecting it to adjacent points will follow
  297.             the mouse.  Click SELECT to finish or MENU to abort.
  298.  
  299. Color       Select a group.  The selected group immediately turns to the
  300.             current plot color.  (No chance for abort here.)
  301.  
  302. SetLType    Select a group.  The selected group will be re-rendered in the
  303.             current line type.  (No chance for abort here.)
  304.  
  305.  
  306. *************
  307. COLORS
  308.  
  309. color boxes    Your menu selection becomes the current plot color.
  310.                Initially, the current color is #4 (first box in second row
  311.                of the palette).
  312.  
  313. Modify Colors  Call up Microsmith's Palette tool (a very nice tool written
  314.                by Charlie Heath).
  315.  
  316. Save Colors    Save current colors to the file "mCAD.rgb" which is read by
  317.                mCAD on startup. 
  318.  
  319.  
  320. *************
  321. LINETYPE
  322. Line types are represented pixel-by-pixel using underscores. (Pretty crude,
  323. huh?)  Your menu selection becomes the current line type.  Text is rendered
  324. in solid lines regardless of the current line type, but you can use the
  325. editing function "SetLType" on text as well as any other primitive.
  326.  
  327. ************************************************************************
  328.  
  329. NEW FEATURES
  330.  
  331. Version 1.2.5
  332.    Support for some dot-matrix printers has been added.  Printers with
  333. more than eight addressable printing pins are NOT supported because I have
  334. no information about them.  Printers with eight or fewer addressable pins
  335. are likely to work if a ".prtdef" file can be written for them.  See
  336. "PRINTERS" below for information about this file.  I have written
  337. ".prtdef" files for the graphics-capable version of the Epson MX-80, and
  338. for the Star Gemini-10X.
  339.    A few more bugs have been fixed.
  340.  
  341. Version 1.2.4
  342.    A selection of line types has been added.  These are designed to
  343. approximate the line types available in HPGL.
  344.    Text defaults work.
  345.    mCAD now "picks up" the cross-hair/point before drawing and puts it back
  346. down after.  No more litter on the screen.
  347.  
  348. Version 1.2.3
  349.    Screen scaling is completely redone.  mCAD now uses the entire screen
  350. instead of reserving space for axes.  When axes (which also have been redone)
  351. are selected, they are just plopped on top of the drawing.
  352.    Plot scaling has been modified so that no coordinates larger than 10000
  353. are generated.
  354.  
  355. Version 1.2.2
  356.  
  357.    File input and output from within mCAD has been added.  Thanks to Charlie
  358. Heath and MicroSmith's for the file requester and, while I'm at it, for their
  359. palette tool.  This is the hard stuff, folks.  If I had had to write these
  360. tools myself, you can be sure that they wouldn't be such a pleasure to use,
  361. and that I would be asking for more of a donation than $20.
  362.  
  363.    Point editing has been added.  This feature allows you to move a single
  364. point of a group without affecting other points.
  365.  
  366.    A shortcut for rotating by 90 degrees has been added.  (The original
  367. motive for this was to rotate entire drawings before plotting.)
  368.  
  369.    Several bugs that once caused mCAD to crash have been fixed.  mCAD now
  370. realizes that mouse clicks are being queued up "behind its back" and that
  371. disabling them doesn't erase queued messages.
  372.  
  373.    Groups work right.  In previous versions, the result of grouping objects
  374. that were already in different groups depended on the order in which those
  375. groups had been formed.  (See "HINTS..." for the full story.)
  376.  
  377.    mCAD can now read a file and add the objects in that file to its linked
  378. list of objects.  In other words, the "Parts" menu is fully implemented.  It
  379. may be useful to know that there is no difference, to mCAD, between a "part"
  380. file and a "cad" file.  You can treat a whole drawing as a part and
  381. vice-versa.  You can also use the outputs of the programs "mp" and "tdp" as
  382. either parts or drawings. 
  383.  
  384.    Tab, backspace, and carriage return now do more nearly what one would
  385. expect.  Backspace does not erase, however.  Also, see "BUGS...".
  386. ************************************************************************
  387.  
  388. HINTS, SUGGESTIONS ...
  389.  
  390. 1)   mCAD's input file format is very simple.  You can make an mCAD file by
  391. hand or with a simple program in "c", Basic, etc.  The following lines
  392. could be used as an mCAD file.
  393.  
  394. 100 100     This is a box..
  395. 100 200
  396. 200 200
  397. 200 100
  398. 100 100
  399. *>          The object above this mark is in a group with the object below it.
  400. *C 4        The object above is in color 4
  401. *L 2        The object above is to be rendered in line type 2
  402.  
  403. 125 150     This is a line..
  404. 175 150
  405. *C 5  
  406.  
  407.       --------------------------
  408.  
  409. 2)   I prefer a "fast" mouse for most programs, but would like a slower one
  410. for doing fine work with mCAD.  I haven't implemented a mechanism for
  411. changing the mouse speed while in the program, but an acceptable substitute
  412. is using the Amiga-arrow keys.  You may have forgotten about this keyboard
  413. alternative since it is so rarely useful.  Also, don't forget about Amiga-alt
  414. for mouse buttons.  (Sometimes, I inadvertently move the mouse while clicking
  415. a mouse button.)
  416.  
  417. 3)   Grouping objects:
  418.    Since the only way to indicate which objects you want in your group is to
  419. draw an enclosing rectangle, you may be having trouble getting just the
  420. objects you want.  You don't have to enclose all the desired objects at once,
  421. however.  Two or more rectangles can be used.  If you group objects which
  422. already are parts of separate groups, the groups will be merged. 
  423.  
  424. 4)   When X-Hair is not selected, the Intuition pointer is supplemented with a
  425. dot at the current location of the graphics cursor.  (You may know that the
  426. Intuition pointer is implemented in low resolution and therefore cannot, with
  427. precision, select a point on a high resolution screen.  The dot is a remedy
  428. for this.)  To make effective use of the dot -- indeed, too SEE it -- your
  429. pointer should have its "hot spot" on one of the "transparent" pixels.  In
  430. Preferences, use the "Set Point" option while you "Edit Pointer". 
  431.  
  432. 5)   To keep a constant text size in your drawing through many edits, or from
  433. drawing to drawing, you might consider making a box of the desired text
  434. size and saving it as a part called "textsize".  When you want to set your
  435. text size, then: open the "textsize" part;  select "TextSize" from the
  436. "Draw" menu; and draw a box exactly like the "textsize" box.
  437.  
  438. 6)   If your drawing has more colors than your plotter has pens, you will
  439. probably want to use the "Project" menu item "..1 Pen" to write your plotter
  440. files.  mCAD will make 16 files, one for each color, which you can send
  441. separately to the plotter -- manually changing pens between sends.  The
  442. file "sendplt" is an "Execute" script to take the drudgery out of this
  443. procedure.  An example:
  444.  
  445.    I've made, say, a drawing named "mypic.cad" and used "..1 Pen" to make the
  446.    files "mypic.plt0", "mypic.plt1", ... "mypic.pltF";  I'm connected via the
  447.    serial port to a plotter, and have loaded a pen I think of as "pen 0" in
  448.    what that plotter considers the "pen 1" slot;  I can now use the Amiga
  449.    "Execute" command like so:
  450.       "Execute sendplt mypic"
  451.    When this file reports:
  452.       "sending mypic.plt0"
  453.    I hit the space bar (or any key) and wait until the plotter has finished
  454.    drawing.  (Since I've typed into the CLI window, the Amiga politely waits
  455.    until I either erase what I've typed, or hit <return>, before continuing
  456.    to execute "sendplt" -- because what sendplt wants to do next is write to
  457.    that same CLI window.)  I now change pens and hit <backspace>, whereupon
  458.    sendplt continues to execute and says:
  459.       "sending mypic.plt1"
  460.    I repeat the (hit key; wait; swap pen; hit <backspace>) procedure until
  461.    the drawing is complete.
  462.  
  463. 7)   Those of you who are interested in writing plotter drivers or other
  464. software for converting mCAD output for use with other that HPGL plotters,
  465. please note:
  466.    I haven't been concerned in the past with providing a stable format in
  467. the .plt file for your efforts.  This means that a positional translation of
  468. a .plt file is likely to be useable only with the output of the mCAD version
  469. for which it was designed.  If this is a problem, tell me.  Maybe we can
  470. work something out.  Let me also suggest an alternative:
  471.    The mCAD input file (the .cad file) is likely to be more stable -- else
  472. one version of mCAD couldn't read the file saved by another.  Also, the .cad
  473. file is MUCH easier to parse than the .plt file.  In fact, a routine which
  474. parses it is available to you in getdat().  The only problem here is that
  475. there is no scaling information up-front; you have to read the whole file to
  476. find the limits of the data.  If there is sufficient interest, I could
  477. provide that scaling information up-front in what mCAD would normally
  478. consider "comments".
  479.    Finally, I'm not going to GUARANTEE the stability of either file just
  480. yet, though.  mCAD takes too long to read and save files for my taste and
  481. if a different format would make a big difference, I'll change it and send
  482. you a translator.)
  483. ************************************************************************
  484.  
  485. PRINTERS
  486.  
  487.    mCAD can do a "screen dump" to printers which meet the following
  488. criteria:
  489.  
  490.    1) There is an escape sequence which puts the printer in "graphics mode"
  491. -- i.e., tells the printer to expect some number of bytes of bit-mapped
  492. graphics which are to be printed from left to right on one line.
  493.  
  494.    2) The pins on the print head can all be fired by sending a single byte
  495. to the printer (when it is in graphics mode.)  The bottom-most pin is fired
  496. by sending the number 1 (i.e. hexadecimal 01), the pin above that by sending
  497. the number 2, the next by sending 4, and so on.  I think most nine-pin
  498. printers work this way;  If I'm wrong, please let me know.
  499.  
  500.    To use the screen dump capability with your printer, you will probably
  501. have to write an "mCAD.prtdef" file.  This is really pretty easy, and I'll
  502. tell you exactly how to do it.  There are seven lines in the file; I'll go
  503. line by line.  You might want to look at the mCAD.prtdef file I wrote
  504. while you read this.  (Experts: please don't be insulted by this long-winded
  505. discussion.  Yes, this is easy, but there's a first time for everybody.)
  506.  
  507.       LINE 1:
  508.          Write the mCAD version number 
  509. 1.2.5
  510.          If you want the picture to appear sideways on the page, put the
  511.       letter R before the version number. 
  512. R 1.2.5
  513.       ********************************************************************
  514.  
  515.       LINE 2:
  516.          If your printer is connected to the Amiga parallel port, write
  517. PAR:
  518.          else, write
  519. SER:
  520.          You may put a file name here instead of a device name.  This is
  521.       useful for debugging.  (The file may be very large, mCAD will not
  522.       like it if the disk gets too full to write on.)
  523.       ********************************************************************
  524.  
  525.       LINE 3:
  526.          Find out how many dots your printer can print on a single line
  527.       in graphics mode.  For the Epson MX-80, the number is 960.  This
  528.       number has to agree with what you will write in LINE 5, and may not
  529.       be larger than 2000.
  530. 960
  531.          Decide how many rows of dots you want your picture to be made up
  532.       of.  For the Epson, 432 rows gives a picture with approximately the
  533.       right aspect for unrotated screen dumps; 780 works ok for rotated
  534.       dumps.
  535. 960 432
  536.          Find out how many user-addressable pins there are on your printer's
  537.       print head.  (Many printers have nine actual pins, but only seven or
  538.       eight of them can be specified when in graphics mode.  If you have a
  539.       choice of seven or eight pins, choose eight.)
  540. 960 432 8
  541.       ********************************************************************
  542.  
  543.          Open your printer manual to the section in which the "escape
  544.       sequences" ("control codes", "function codes", etc.) are described. 
  545.       You are going to write four lines of numbers.  The first number in
  546.       each line will be decimal and the rest will be hexadecimal.  The first
  547.       number tells mCAD how many hexadecimal numbers there are in the line,
  548.       so if you find you don't need any hexadecimal numbers, just put 0.
  549.  
  550.       LINE 4:
  551.          Find the escape sequence which resets your printer.  For an Epson,
  552.       the sequence is <ESC>@ which is a two byte sequence.  The hexadecimal
  553.       number which <ESC> stands for is 1B.  The hex number for @ is 40.  As
  554.       a (cryptic) reminder that these numbers are in base 16, put 0x in
  555.       front of them. 
  556. 2 0x1B 0x40
  557.          If your printer gives you a choice of using seven or eight pins for
  558.       graphics, there is an escape sequence to specify your choice.  For the
  559.       Epson, the sequence specifying eight pins is <ESC># which is a two
  560.       byte sequence.  Adding these to line 4 yields:
  561. 4 0x1B 0x40 0x1B 0x23
  562.          If your printer is capable of printing in both directions (i.e.,
  563.       left-to-right and right-to-left) you need to find out how to tell it
  564.       not to.  If there is an escape sequence for "unidirectional printing",
  565.       or some such, include it.  For the Epson, the sequence is <ESC>< or
  566.       0x1B 0x3C. 
  567. 6 0x1B 0x40 0x1B 0x23 0x1B 0x3C
  568.          Find the escape sequence which sets your printer's line spacing. 
  569.       (There probably are several different ways to do this.)  You also need
  570.       to determine what the line spacing should be so that successive sweeps
  571.       of the print head form a continuous picture, without leaving blank
  572.       lines or overprinting part of the previous sweep.  The spacing
  573.       depends, of course, on how many pins of the print head are used for
  574.       graphics. 
  575.          For the Epson, using eight pins, the correct spacing is 8/72 in. 
  576.       The Epson allows the line spacing to be specified in multiples of 1/72
  577.       in.  with the escape sequence 0x1B 0x41 0x08. 
  578. 9 0x1B 0x40 0x1B 0x23 0x1B 0x3C 0x1B 0x41 0x08
  579.          There may be other escape sequences that your printer requires to
  580.       put it in the appropriate frame of mind to accept graphics.  If so,
  581.       add them now. 
  582.          Finally, I've noticed that when I set the paper by hand to the top
  583.       of a page, I usually get poor results from the first few passes of the
  584.       print head.  I get good results when I let the printer do a few line
  585.       feeds before beginning to print.  So, I recommend adding a few line
  586.       feeds (0x0A's) to the initialization line.  The finished product:
  587. 11 0x1B 0x40 0x1B 0x23 0x1B 0x3C 0x1B 0x41 0x08 0x0A 0x0A
  588.       ********************************************************************
  589.  
  590.       LINE 5: SENT BEFORE EACH LINE OF GRAPHICS
  591.          Find the escape sequence that puts your printer in graphics mode. 
  592.       This code is almost certainly intended to be sent before EACH sweep of
  593.       the print head.  (If your printer has an escape sequence that prepares
  594.       it for many sweeps, you might want to include that sequence in the
  595.       initialization line and just put a 0 on this line and the next.)
  596.          The "enter graphics mode" sequence probably has to be followed by
  597.       two bytes which tell the printer how many columns of dots to print in
  598.       the upcoming sweep of the print head. 
  599.          For the Epson, the sequence is <ESC>K for a maximum of 480 columns,
  600.       or <ESC>L for a maximum of 960 columns.  The actual number of columns
  601.       is variable and is coded in two additional bytes.  I chose 960 columns
  602.       and the full sequence is:
  603. 4 0x1B 0x4C 0xC0 0x03
  604.       (960 = 0x03C0;  the Epson wants the least significant byte first.)
  605.          Your printer manual probably spells out in detail how to specify
  606.       the number of columns for your printer.  Probably, it shows you how to
  607.       do it in BASIC using the CHR$ function.  Remember that the CHR$
  608.       function takes a decimal number argument. 
  609.          ALSO, VERY IMPORTANT: THE NUMBER OF COLUMNS YOU TELL YOUR PRINTER
  610.       TO PRINT MUST BE THE SAME AS THE FIRST NUMBER YOU SPECIFIED IN LINE 3. 
  611.       ********************************************************************
  612.  
  613.       LINE 6: SENT AFTER EACH LINE OF GRAPHICS
  614.          After a sweep of the print head, you probably have to do a line
  615.       feed to prepare for the next line.  You may have to send another code
  616.       to tell your printer to print everything it has collected (whatever
  617.       mCAD sent it) since LINE 5 was sent.  For the Epson, a carriage return
  618.       and a line feed are sufficient. 
  619. 2 0x0D 0x0A
  620.       ********************************************************************
  621.  
  622.       LINE 7: SENT TO CLEAN UP AFTER A DRAWING
  623.          You may not need to do anything here, but you'll probably want to
  624.       send a form feed and reset the printer.  For the Epson,
  625. 3 0x0C 0x1B 0x40
  626.       ********************************************************************
  627.  
  628.    That's it.  I volunteer to collect ".prtdef" files and include them in
  629. the mCAD distribution.  I may modify them to keep them current as new
  630. versions of mCAD come out.
  631.  
  632.    Finally, I'd like to support 18 and 24 pin printers too.  If I run
  633. across any info (hint, hint), I'll do it.
  634.  
  635.  
  636. ************************************************************************
  637.  
  638. BUGS, WARNINGS, ADDITIONAL NOTES ...
  639.  
  640.    Letters, in this version, are REALLY primitives; all points are connected
  641. together as though drawn with a single "Line" command.  This means characters
  642. like [ ! = ? : ; " Q ] don't look so good.  (Ok, they look awful!).  Text is
  643. likely to improve in some future version. 
  644.  
  645.    mCAD doesn't do ANY memory checking.  It will crash the system or exit
  646. without returning allocated memory if it finds that there isn't enough memory
  647. to do whatever it wants to do.  In a multi-tasking system with a ram disk,
  648. this is bound to happen to you sooner or later.  This IS going to be fixed!
  649. Until it is fixed, I suggest you save your drawing often and keep an eye on
  650. the amount of ram available.
  651.  
  652.    If you select "Open" or "SaveAs" and nothing happens, you may be short
  653. on memory.  MicroSmith's file requester may not be able to allocate enough
  654. memory to display itself.  mCAD will have no idea what has happened, however.
  655. It receives the same message as it would if you had selected the requester's
  656. "Cancel" gadget.  The only way to save under this circumstance is to select
  657. "Save" from the Project menu.  (If you select "SaveAs" from the "Part" menu,
  658. remember that nothing will happen in any case until you select the object to
  659. be saved.)
  660.  
  661. ************************************************************************
  662. ETC.
  663.  
  664.    If you have a modem and are so inclined, you can leave me mail at the
  665.    following bulletin board which I monitor regularly.
  666.       "Deep Thought"   (919) 471-6436
  667.  
  668.    Registered users:
  669.  
  670.    I plan to move sometime in the fall of '87.  When I do, I'll leave a
  671. forwarding address on the bulletin board mentioned above and with:
  672.  
  673.    Department of Physics and Astronomy
  674.    Phillips Hall
  675.    University of North Carolina
  676.    Chapel Hill, NC  27514
  677.