home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / lisp / tools / ally20 / ally.doc < prev    next >
Text File  |  1991-11-25  |  131KB  |  3,631 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.                     ----------------------------------------
  16.  
  17.                              ALLY - A LISP ANALYZER
  18.  
  19.                            Version 2.0  User's Manual
  20.  
  21.                     ----------------------------------------
  22.  
  23.  
  24.  
  25.                        Copyright 1990, 1991 Steve Waskow
  26.  
  27.                               ALL RIGHTS RESERVED
  28.  
  29.  
  30.  
  31.  
  32.  
  33.                               _______
  34.                          ____|__     |                (R)
  35.                       --|       |    |-------------------
  36.                         |   ____|__  |  Association of
  37.                         |  |       |_|  Shareware
  38.                         |__|   o   |    Professionals
  39.                       -----|   |   |---------------------
  40.                            |___|___|    MEMBER
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.                     ----------------------------------------
  48.                             Wasco Technical Software
  49.                            1211 Grand Junction Drive
  50.                                 Katy, TX  77450
  51.                     ----------------------------------------
  52.  
  53.               Phone/FAX: (713) 392-1359     CompuServe: 72020,2031
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.           ------------------------------------------------------------
  74.                        DISCLAIMER AND LIMIT OF LIABILITY
  75.           ------------------------------------------------------------
  76.  
  77.           STEVE  WASKOW AND WASCO TECHNICAL SOFTWARE MAKES NO WARRANTY
  78.           OF  ANY KIND, EITHER  EXPRESS OR  IMPLIED, INCLUDING BUT NOT
  79.           LIMITED TO IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
  80.           FOR  A PARTICULAR PURPOSE, WITH RESPECT TO THIS SOFTWARE AND
  81.           ACCOMPANYING DOCUMENTATION.
  82.  
  83.           IN  NO EVENT SHALL  STEVE WASKOW OR WASCO TECHNICAL SOFTWARE
  84.           BE  LIABLE FOR  ANY DAMAGES  (INCLUDING DAMAGES  FOR LOSS OF
  85.           BUSINESS  PROFITS, BUSINESS  INTERRUPTION, LOSS  OF BUSINESS
  86.           INFORMATION, OR OTHER PECUNIARY LOSS) ARISING OUT OF THE USE
  87.           OF  OR INABILITY TO USE  THIS SOFTWARE, EVEN IF STEVE WASKOW
  88.           OR  WASCO  TECHNICAL  SOFTWARE   HAS  BEEN  ADVISED  OF  THE
  89.           POSSIBILITY OF SUCH DAMAGES.
  90.  
  91.           ------------------------------------------------------------
  92.                         COPYRIGHT NOTICE AND TRADEMARKS
  93.           ------------------------------------------------------------
  94.  
  95.           The ALLY software programs and documentation are:
  96.  
  97.                        Copyright 1990, 1991 Steve Waskow
  98.                             Wasco Technical Software
  99.  
  100.           All  rights to the  ALLY software programs and this document
  101.           are reserved by Steve Waskow and Wasco Technical Software.
  102.  
  103.           AutoCAD  & AutoLISP  are registered  trademarks of Autodesk,
  104.           Inc.
  105.  
  106.           Other  brand   and  product   names  mentioned   herein  are
  107.           trademarks  or  registered  trademarks  of  their respective
  108.           holders.
  109.  
  110.           ------------------------------------------------------------
  111.                                     CREDITS
  112.           ------------------------------------------------------------
  113.  
  114.           Special  thanks  to  ALLY  beta  testers  Antonio Fernandes,
  115.           Howard  Johnson, Eric  Michalowsky,  David Pitzer  and Trent
  116.           Riley.
  117.  
  118.           These  gentlemen   have  provided   constructive  criticism,
  119.           numerous suggestions, and precious support throughout ALLY's
  120.           lengthy  development and  evolution  cycle.  Thanks  guys, I
  121.           couldn't have done it without you.
  122.                                                     Steve Waskow, 1991
  123.  
  124.  
  125.  
  126.  
  127.           ALLY - A Lisp Analyzer      1     Version 2.0 User's Manual
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.           ------------------------------------------------------------
  140.                                TABLE OF CONTENTS
  141.           ------------------------------------------------------------
  142.           INTRODUCTION ............................................. 3
  143.           INSTALLATION ............................................. 4
  144.             System Requirements .................................... 4
  145.             File Directory ......................................... 4
  146.             Automatic Installation ................................. 4
  147.             Manual Installation (Optional) ......................... 4
  148.             Using Expanded Memory (Optional) ....................... 5
  149.             Adjusting the ACAD.PGP Memory Reserve .................. 6
  150.             First Time Users ....................................... 6
  151.           ALLY DATA ENTRY SCREENS AND EDITING KEYS ................. 7
  152.             Mouse Hot Spots ........................................ 9
  153.           ALLY SETUP OPTIONS ...................................... 10
  154.             Install User Programs ................................. 11
  155.             Define Page ........................................... 13
  156.             Report Options ........................................ 15
  157.             Execution Options ..................................... 17
  158.             Printer Setup ......................................... 19
  159.             About ALLY ............................................ 20
  160.           THE ALLY WORKBENCH ...................................... 21
  161.             File/Destination ...................................... 21
  162.             File Selection ........................................ 23
  163.             Workbench Commands .................................... 25
  164.           THE ALLY CHECKER ........................................ 29
  165.           THE ALLY ANALYZER ....................................... 31
  166.             Analyzing Multiple Files .............................. 32
  167.             Declaration and Symbol Scope .......................... 33
  168.             Warnings Reported ..................................... 37
  169.             File Hierarchy of User Defined Functions .............. 39
  170.             Function Call Hierarchy - Dynamic Scope ............... 40
  171.             Cross-reference of User Defined Functions ............. 41
  172.             Cross-reference of User Defined Symbols ............... 42
  173.             Cross-reference of Reserved Subrs and Symbols ......... 43
  174.             Program Listing ....................................... 44
  175.             Analyzer Screen Output ................................ 45
  176.           PROBLEMS AND ERROR MESSAGES ............................. 46
  177.             Problems with ACAD.LSP and ACAD.PGP ................... 46
  178.             Problems with ALLY Executable Files ................... 47
  179.           APPENDIX A - ASCII TABLE ................................ 49
  180.           APPENDIX B - PRINTER COMMANDS ........................... 50
  181.           INDEX ................................................... 52
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.           ALLY - A Lisp Analyzer      2     Version 2.0 User's Manual
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.           ------------------------------------------------------------
  206.                                   INTRODUCTION
  207.           ------------------------------------------------------------
  208.           ALLY  is a programmer's workbench, code checker and analyzer
  209.           for  AutoLISP, the  AutoCAD LISP  programming language.  The
  210.           ALLY  Checker  and  Analyzer  assist  you  in  debugging and
  211.           documenting  AutoLISP   source  code.   The  ALLY  Workbench
  212.           integrates  your text editor  and other programs to create a
  213.           personalized  programming environment,  accessible  from and
  214.           interactive with AutoCAD.
  215.  
  216.           The  ALLY Analyzer generates a comprehensive cross-reference
  217.           of  variables, constants,  functions and  subroutines, and a
  218.           full  function call hierarchy.  Each symbol is identified by
  219.           line  number   and  scope,   and  categorized   as  a  call,
  220.           declaration,  definition,  reference,  or  setting.   ALLY's
  221.           analysis   is   useful   in   identifying   symbol   scopes,
  222.           interactions  and dependencies, declared but unused symbols,
  223.           duplicate  definitions   and  function   side  effects,  and
  224.           provides  extensive error checking.  You can analyze several
  225.           LISP files together to check program compatibility.
  226.  
  227.           The  ALLY Checker uses  color coding to provide a convenient
  228.           visual check of mismatched parentheses, misplaced or missing
  229.           string quotes, and missing comment semicolons.
  230.  
  231.           The  size of files which  ALLY can handle is limited only by
  232.           available  memory.  ALLY  reads individual  lines  up  to 64
  233.           kilobytes  in length, and safely prints any embedded control
  234.           characters.
  235.  
  236.           The  Workbench's text editor  is your own  - ALLY links your
  237.           favorite  text editor to  the Workbench, making it available
  238.           at  the press  of a  key.   ALLY also  links your  text file
  239.           browser  and up  to eight  more of  your favorite  tools and
  240.           utilities,  assigning each  an execution  key.  ALLY shrinks
  241.           itself  to less than  4K when shelling  to DOS and executing
  242.           external programs.
  243.  
  244.           The  ALLY Workbench integrates these tools in a tidy package
  245.           with  mouse  support,  point-and-shoot  file  selection, and
  246.           shell  for  executing DOS  commands  and  external programs.
  247.           ALLY  can be used from DOS or run from within AutoCAD.  When
  248.           run  from AutoCAD, ALLY can load your programs into AutoLISP
  249.           with a single keystroke.
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.           ALLY - A Lisp Analyzer      3     Version 2.0 User's Manual
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.           ------------------------------------------------------------
  272.                                   INSTALLATION
  273.           ------------------------------------------------------------
  274.  
  275.           This  chapter  contains   important  information  on  system
  276.           requirements  and  installation.  Please  read  this section
  277.           completely before beginning your ALLY installation.
  278.  
  279.           SYSTEM REQUIREMENTS
  280.           ------------------------------------------------------------
  281.           ALLY's  requirements are basically  the same as DOS versions
  282.           of  AutoCAD.  ALLY requires  an  IBM  XT, AT,  PS/2  or true
  283.           compatible  with 640K  RAM, hard  disk, monochrome  or color
  284.           display, and MS/DOS 3.1 or higher.  ALLY can be run from DOS
  285.           as  a stand-alone product,  or run  from within AutoCAD. The
  286.           ALLY  AutoCAD interface requires AutoCAD Release 9 or later,
  287.           and  a shell  space of 240000  or more  bytes - depending on
  288.           your usage.
  289.  
  290.           FILE DIRECTORY
  291.           ------------------------------------------------------------
  292.           ALLY's  files can either  be placed into the drive/directory
  293.           in  which your AutoCAD executable program files are kept, or
  294.           into  any support  directory  pointed to  by  AutoCAD's ACAD
  295.           environment  variable.  AutoCAD  R11+  allows more  than one
  296.           directory  in the  ACAD path, so  you can  create a new ALLY
  297.           directory if you wish.
  298.  
  299.           AUTOMATIC INSTALLATION
  300.           ------------------------------------------------------------
  301.           To  install ALLY,  run the  installation program ALLYIN.EXE.
  302.           Just  type  "ALLYIN"  at  the  DOS  prompt  and  follow  the
  303.           on-screen  instructions. ALLYIN installs  the ALLY files and
  304.           updates  your ACAD.LSP  and  ACAD.PGP.  As  an  alternate to
  305.           using  ALLYIN, you can install ALLY manually with DOS and an
  306.           ASCII  text  editor.  Manual  installation  instructions are
  307.           given below.
  308.  
  309.           MANUAL INSTALLATION (OPTIONAL)
  310.           ------------------------------------------------------------
  311.           1.   Copy the ALLY files ALLYWB.EXE, ALLYSU.EXE, ALLYAN.EXE,
  312.           ALLYCK.EXE,  ALLY.BAT, ALLY.LSP and ALLYXM.SCR into the ALLY
  313.           directory you have chosen (see FILE DIRECTORY above).
  314.  
  315.           2.    If you have registered  ALLY, use an ASCII text editor
  316.           to  edit the  newly  installed ALLY.BAT  file.   Replace the
  317.           dummy registration code "+RegCode" with your assigned code.
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.           ALLY - A Lisp Analyzer      4     Version 2.0 User's Manual
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.           3.    Use your  text editor  again, this  time to  edit your
  338.           ACAD.PGP  file.  Your  ACAD.PGP should  be located in either
  339.           your  AutoCAD executable  directory or  a support directory.
  340.           Create one if none exists.  Add the following line:
  341.  
  342.                ALLY!, ALLYWB +RegCode, 240000, , 0
  343.  
  344.           If  ALLY is installed in a directory other than your AutoCAD
  345.           executable  directory which is  not on your DOS PATH, prefix
  346.           "ALLYWB"  with  its  directory path.   Also,  if  you  are a
  347.           registered  user, you should  replace the dummy registration
  348.           code "+RegCode" with your assigned code.
  349.  
  350.           4.    Add ALLY.LSP to your ACAD.LSP file.  Like ACAD.PGP, it
  351.           will  be located in either your AutoCAD executable directory
  352.           or  a support directory. Create  one if none exists.  Use an
  353.           ASCII  text  editor to  insert  the ALLY.LSP  file  into the
  354.           bottom  of ACAD.LSP.  Do not  attempt to edit ACAD.LSP if it
  355.           is  encrypted.  If you  see "AutoCAD PROTECTED LISP file" as
  356.           the  file's first line,  exit the  editor without saving the
  357.           file  -  you  will  need to  load  ALLY.LSP  as  needed with
  358.           AutoCAD's LOAD command.
  359.  
  360.           USING EXPANDED MEMORY (OPTIONAL)
  361.           ------------------------------------------------------------
  362.           If  you have adequate  expanded memory (EMS) available, ALLY
  363.           will  automatically use it instead  of a disk swap file when
  364.           executing  your  external  programs.   Swapping  to  EMS  is
  365.           faster, but file swapping on a decent hard disk is more than
  366.           adequate.   To use EMS, ALLY needs five 16K EMS pages (5 EMS
  367.           pages  =  81920  bytes  =  80K  kilobytes  =  0x14000  bytes
  368.           hexadecimal).
  369.  
  370.           To  set aside EMS for ALLY with non-386 versions of AutoCAD,
  371.           check  your AUTOEXEC.BAT file or your AutoCAD start-up batch
  372.           file  for a line  which sets AutoCAD's ACADLIMEM environment
  373.           variable.  If there is none, add the following line:
  374.  
  375.                SET ACADLIMEM=-5
  376.  
  377.           If  you have ACADLIMEM  set to ALL,  change it to -5. If you
  378.           have  ACADLIMEM set to a  positive value, decrease it by the
  379.           equivalent  of  5  EMS  pages.  If  ACADLIMEM  is  set  to a
  380.           negative  value,  increase it  by  the equivalent  of  5 EMS
  381.           pages.
  382.  
  383.           To  set aside EMS for ALLY with AutoCAD 386 using VCPI-style
  384.           expanded  memory, use AutoCAD's  CFIGPHAR.EXE program or the
  385.           -maxvcpi  switch of  AutoCAD's CFIG386.EXE  program to limit
  386.           AutoCAD to 81920 bytes less than its current expanded memory
  387.           usage.
  388.  
  389.  
  390.  
  391.           ALLY - A Lisp Analyzer      5     Version 2.0 User's Manual
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.           AutoCAD defaults to using all expanded memory, so check your
  404.           current  configuration  and  switch  settings  before making
  405.           modifications.   Refer  to  your  AutoCAD  Installation  and
  406.           Performance  Guide for details specific to your hardware and
  407.           AutoCAD version.
  408.  
  409.           ADJUSTING THE ACAD.PGP MEMORY RESERVE
  410.           ------------------------------------------------------------
  411.           Because the requirements of your installed external programs
  412.           and  the size and number of files you analyze are variables,
  413.           we  cannot   anticipate  precisely  the   amount  of  memory
  414.           required.  Some trial and error may be required.
  415.  
  416.           You can increase available memory in non-386 DOS versions of
  417.           AutoCAD  by editing your  ACAD.PGP file, changing the 240000
  418.           byte  memory reserve field in  the "ALLY!" command line to a
  419.           higher  value.   Try incremental  increases  of  25000 bytes
  420.           until ALLY functions with your largest AutoLISP files.
  421.  
  422.           Your  text editor may be a large consumer of memory.  If you
  423.           already  successfully run  it  from AutoCAD,  try  using its
  424.           ACAD.PGP  file memory  reserve figure  plus about 4000 bytes
  425.           for  ALLY.  You  must exit  and reenter  the AutoCAD drawing
  426.           editor after each change to ACAD.PGP.
  427.  
  428.           These  and other methods of dealing with insufficient memory
  429.           problems,   including  solutions   to  AutoCAD   386  memory
  430.           problems,  are discussed  further in  the PROBLEMS AND ERROR
  431.           MESSAGES chapter at the back of this manual.
  432.  
  433.           FIRST TIME USERS
  434.           ------------------------------------------------------------
  435.           Although  no trouble  is  anticipated, in  keeping  with the
  436.           spirit of "better safe than sorry", we suggest you save your
  437.           drawing  prior to executing ALLY the first few times you try
  438.           it.  This is especially wise if you have a highly customized
  439.           system.
  440.  
  441.           If  your text editor and other programs work for you through
  442.           AutoCAD's  SHELL, you  should expect  no trouble  with ALLY,
  443.           once  properly  installed.  Once  it  is  apparent  that  no
  444.           problems  exist,  the act  of  saving the  drawing  first is
  445.           unnecessary.
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.           ALLY - A Lisp Analyzer      6     Version 2.0 User's Manual
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469.           ------------------------------------------------------------
  470.                     ALLY DATA ENTRY SCREENS AND EDITING KEYS
  471.           ------------------------------------------------------------
  472.           The  ALLY Workbench and Setup programs have a series of data
  473.           entry  screens for configuration items and other user input.
  474.           These screens are simple to edit.
  475.  
  476.           Use  your cursor keys  or mouse to  move about the screen to
  477.           add  or change  entries.  The  active field  is highlighted.
  478.           Fields can be picked with a mouse by moving the mouse cursor
  479.           into the field and pressing the left mouse button.
  480.  
  481.           To exit any menu or data entry screen, press [F10], [Alt-X],
  482.           or  use a mouse to pick the [F10] Exit function from the top
  483.           command  menu  or  the exit  window  button  (a  small solid
  484.           rectangle) in the upper left hand corner of the window.
  485.  
  486.           These  editing keys  are common  to  the ALLY  Workbench and
  487.           Setup  programs.  Key functions may differ in other parts of
  488.           ALLY, other chapters of the manual describe keys specific to
  489.           the ALLY Checker and Analyzer.
  490.  
  491.           [Enter] .... (also known as [Return])  Enter data and cursor
  492.                        down  a   data  entry   screen,  or   pick  the
  493.                        highlighted item of a selection list.
  494.  
  495.           [Left] ..... Cursor key, moves the cursor left one space.
  496.  
  497.           [Right] .... Cursor key, moves the cursor right one space.
  498.  
  499.           [Up] ....... Cursor key, moves up one line.
  500.  
  501.           [Down] ..... Cursor key, moves down one line.
  502.  
  503.           [^Left] .... Control-Left  cursor moves  the cursor left one
  504.                        word.   When editing  a file  name or directory
  505.                        path, backslash divisions are word breaks.
  506.  
  507.           [^Right] ... Control-Right cursor moves the cursor right one
  508.                        word.   When editing  a file  name or directory
  509.                        path, backslash divisions are word breaks.
  510.  
  511.           [Home] ..... Moves cursor to the first character of an entry
  512.                        field or the top of a selection list.
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.           ALLY - A Lisp Analyzer      7     Version 2.0 User's Manual
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535.           [End] ...... Moves  cursor to the last character of an entry
  536.                        field or the bottom of a selection list.
  537.  
  538.           [PgUp] ..... Moves  to the  top of  a  data entry  screen or
  539.                        displays the previous page of selections.
  540.  
  541.           [PgDn] ..... Moves  to the bottom  of a data entry screen or
  542.                        displays the next page of selections.
  543.  
  544.           [Ins] ...... The  Insert  key  toggles  the insert/overwrite
  545.                        mode.
  546.  
  547.           [Esc] ...... Use  the Escape key  to undo any changes to the
  548.                        current  data  entry field.   [Esc]  also exits
  549.                        menus  and aborts  pending commands  and active
  550.                        processes.
  551.  
  552.           [BkSp] ..... The  Backspace key deletes the character to the
  553.                        immediate left of the cursor.
  554.  
  555.           [Del] ...... The  Delete key  deletes the character directly
  556.                        above the cursor.
  557.  
  558.           [^End] ..... Control-End  deletes   text  from   the  cursor
  559.                        position to the end of the entry.
  560.  
  561.           [^Home] .... Control-Home  deletes   text  from   the  first
  562.                        character of the entry to the cursor position.
  563.  
  564.           [Spacebar] . Toggles  the  entry   of  a  highlighted  fixed
  565.                        response field, such as a YES/NO field.
  566.  
  567.           [MouseRight] The  right  mouse   button  performs  the  same
  568.                        function as the [Spacebar] for fixed responses.
  569.  
  570.           [MouseBoth]  Clicking  both  right  and  left  mouse buttons
  571.                        simultaneously is the same as pressing [Esc].
  572.  
  573.           [MouseLeft]  The  left mouse  button serves  as a Pick/Enter
  574.                        key.   See   the  following   MOUSE  HOT  SPOTS
  575.                        section.
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.           ALLY - A Lisp Analyzer      8     Version 2.0 User's Manual
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601.           MOUSE HOT SPOTS
  602.           ------------------------------------------------------------
  603.           You  can move around and execute many commands and functions
  604.           by  picking mouse  sensitive hot-spots  with your left mouse
  605.           button.
  606.  
  607.           1.    Data entry screen fields.   Pick any field to move the
  608.           cursor and highlight bar into it.
  609.  
  610.           2.   Menu window choices.  Choose a menu item by picking it.
  611.  
  612.           3.    [F1] through  [F10] commands  and [^F1]  through [^F8]
  613.           user  programs.   Picking an  item  on the  top  screen menu
  614.           executes the command or program.
  615.  
  616.           4.    Exit window  buttons.  Pick  the rectangle  in the top
  617.           left hand corner of a window border to exit the window.
  618.  
  619.           5.     Fixed   response   options,   such   as   YES/NO  and
  620.           NAME/TIME/SIZE.   Reply  to data  entry  fields  and prompts
  621.           which  require a  fixed response  by picking the appropriate
  622.           answer  from the message prompt in the lower right hand part
  623.           of the screen.
  624.  
  625.           6.    Filenames in  the file  selection window.   Picking an
  626.           un-highlighted  file name  moves  the highlight  bar  to the
  627.           picked position.  Picking a highlighted name selects it.
  628.  
  629.           7.    File selection window  scroll bar.  Pick a point along
  630.           the scroll bar relative to the position of the file list you
  631.           wish to move to.
  632.  
  633.           8.    File selection window  Up and Down arrows.  Pick these
  634.           to cursor through the list of file names.
  635.  
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.           ALLY - A Lisp Analyzer      9     Version 2.0 User's Manual
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667.           ------------------------------------------------------------
  668.                                ALLY SETUP OPTIONS
  669.           ------------------------------------------------------------
  670.  
  671.           ALLY  setup options can  either be set  directly from DOS or
  672.           from  the ALLY Workbench.   From DOS type "ALLYSU" and press
  673.           [Enter].   From the ALLY Workbench you can press either [F2]
  674.           or  [Alt-O], or use your mouse to pick [F2] Opt(ions) in the
  675.           top  command menu line.   The Options screen presents a main
  676.           menu of options.
  677.  
  678.                            o------- Options --------+
  679.                            | Install User Programs  |
  680.                            | Define Page            |
  681.                            | Report Options         |
  682.                            | Execution Options      |
  683.                            | Printer Setup          |
  684.                            | About ALLY             |
  685.                            +------------------------+
  686.  
  687.           To  make a menu choice, you can either cursor to the desired
  688.           option and press [Enter], press the highlighted first letter
  689.           of option name, or pick the option with your mouse.
  690.  
  691.           Each  menu choice will bring  up a new screen, most of which
  692.           are  data entry  windows.  We  next describe  each screen in
  693.           detail.
  694.  
  695.  
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.           ALLY - A Lisp Analyzer      10     Version 2.0 User's Manual
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731.  
  732.  
  733.           INSTALL USER PROGRAMS
  734.           ------------------------------------------------------------
  735.           This  is where you  install your  external programs into the
  736.           ALLY  Workbench. There  are  fields for  your  browser, text
  737.           editor, and up to 8 other external programs or DOS commands.
  738.           The  browser   attaches  to  [F7]/[Alt-B],   the  editor  to
  739.           [F8]/[Alt-E],  and other user  programs to [Ctrl-F1] through
  740.           [Ctrl-F8].
  741.  
  742.              o-------------- Install User Programs --------------+
  743.              | F7 Browser: c:\util\list.com ]                    |
  744.              | F8 Editor : C:\ED\EDWIN.COM ]                     |
  745.              |^F1 Program: @d:\acad\adesk\kelv [ > e:\;.k        |
  746.              |^F2 Program: D:\ACAD\ADESK\LB.EXE -w80 ] [.NEW     |
  747.              |^F3 Program: copy ] ?                              |
  748.              |^F4 Program: dir ch????.lsp                        |
  749.              |^F5 Program: D:\PRT\LJBOOK *                       |
  750.              |^F6 Program: del *.bak                             |
  751.              |^F7 Program:                                       |
  752.              |^F8 Program:                                       |
  753.              +---------------------------------------------------+
  754.  
  755.           Commands  and external programs install in the same fashion,
  756.           except  internal DOS commands (such  as DIR) have no path or
  757.           file  extension.  If  your program's  directory is listed in
  758.           your  PATH statement (check your AUTOEXEC.BAT file), you can
  759.           simply  enter the program's  file name (example: EDWIN).  If
  760.           its  directory  is not  in  the PATH  statement,  prefix the
  761.           program  name   with  its  full   directory  path  (example:
  762.           C:\ED\EDWIN).   If the program  must execute from within its
  763.           own  directory, prefix the  path with an ampersand (example:
  764.           @C:\ED\EDWIN).   The ampersand forces  a directory change to
  765.           the  listed  directory before  program  execution,  and back
  766.           after.
  767.  
  768.           If  you give the full path name of your program AND the file
  769.           extension  (example: C:\ED\EDWIN.COM),  ALLY will execute it
  770.           directly,  without first loading  a copy  of the DOS command
  771.           interpreter  (COMMAND.COM).   With many  DOS  versions, this
  772.           makes  as much as 3.5 kilobytes more memory available to the
  773.           program.
  774.  
  775.           List any required command line parameters behind the program
  776.           name.   If you place a lone question mark (?) in the command
  777.           line,  ALLY pauses  at execution  time to  allow you  to add
  778.           parameters or edit the command line. Spaces before and after
  779.           the  question mark prevent ALLY from confusing it with a DOS
  780.           wildcard  character.  The command  line editor positions the
  781.           cursor at the position of the question mark.
  782.  
  783.  
  784.  
  785.  
  786.  
  787.           ALLY - A Lisp Analyzer      11     Version 2.0 User's Manual
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.  
  799.           ALLY  uses other special  symbols as filename aliases.  When
  800.           you  insert  a  right bracket  (])  into  the  command, ALLY
  801.           converts  it to the  full path and  filename of the selected
  802.           LISP file.  A left bracket ([) converts to the full path and
  803.           LISP  filename less  the  file extension.   A  semicolon (;)
  804.           converts  to the LISP filename less both path and extension.
  805.           An  asterisk (*) converts  to the full  path and filename of
  806.           the  Analyzer report file.  These symbols allow you to build
  807.           variable command lines for your programs which require input
  808.           and output filenames.
  809.  
  810.           All special symbols except the semicolon must be preceded by
  811.           a  blank space, and all special symbols except the semicolon
  812.           and left bracket must either be followed by a blank space or
  813.           be  the last character  in the command.  These rules prevent
  814.           ALLY from confusing question mark pause symbols and asterisk
  815.           report  name aliases  with DOS  filename wildcards (examples
  816.           are  shown below).  If in  doubt, add a space and a question
  817.           mark  pause  symbol at  the  end  of the  line  to  test the
  818.           command.   For example,  if the  LISP  and report  files are
  819.           C:\MYFILE.LSP and E:\MYFILE.RPT:
  820.  
  821.           kelv [ > e:\;.k  = kelv C:\MYFILE > e:\MYFILE.k
  822.           lb -w80 ] [.NEW  = lb -w80 C:\MYFILE.LSP C:\MYFILE.NEW
  823.           copy ] ?         = copy C:\MYFILE.LSP (& pauses for editing)
  824.           dir ch????.lsp   = dir ch????.lsp
  825.           D:\PRT\LJBOOK *  = D:\PRT\LJBOOK E:\MYFILE.RPT
  826.           del *.bak        = del *.bak
  827.  
  828.           Your editor must be capable of editing and saving files in a
  829.           plain  ASCII format  for  AutoLISP.  For  best  results with
  830.           ALLY, both the editor and browser must be capable of loading
  831.           a  file when  the file  name is  placed on  the command line
  832.           (install  these using  the file  name alias method described
  833.           above).   If not, you  must load the  files from within your
  834.           program.   Do not install  TSR (Terminate and Stay Resident)
  835.           programs  as ALLY user programs  - loading them this way can
  836.           cause  problems.  You can use TSRs if you load them prior to
  837.           executing ALLY and call them up with their usual hot keys.
  838.  
  839.           To  maximize  the  amount   of  memory  available  for  your
  840.           programs,  ALLY swaps most  of its own  code and data out of
  841.           memory - into expanded memory if available, otherwise into a
  842.           temporary  hidden disk  file (ALLY0000.$$$).  Still, you are
  843.           generally  better off using  small memory efficient programs
  844.           rather  than  full-blown   applications  when  running  ALLY
  845.           through  AutoCAD.  Some  large  word processors  may require
  846.           more memory than can readily be made available.
  847.  
  848.  
  849.  
  850.  
  851.  
  852.  
  853.           ALLY - A Lisp Analyzer      12     Version 2.0 User's Manual
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  
  863.  
  864.  
  865.           DEFINE PAGE
  866.           ------------------------------------------------------------
  867.           These  options  affect  the page  format  and  page  size of
  868.           Analyzer reports.
  869.  
  870.                           o------ Define Page ------+
  871.                           | Page width······: 80    |
  872.                           | Left margin·····: 2     |
  873.                           | Right margin····: 2     |
  874.                           | Page length·····: 66    |
  875.                           | Top margin······: 2     |
  876.                           | Bottom margin···: 2     |
  877.                           +-------------------------+
  878.  
  879.           Page width
  880.           ----------
  881.           Enter  the page  width for  ALLY's report.   The report page
  882.           width is adjustable from 70 to 255 characters, defaulting to
  883.           80  characters   wide.   For   a  typical   narrow  carriage
  884.           dot-matrix  printer, try  using 80  for its  normal (10 CPI)
  885.           print  mode, or  132 for  a compressed  (17 CPI) print mode.
  886.           You  can  use  higher  values  for  wide  carriage printers,
  887.           depending on paper width and font size.
  888.  
  889.           Left margin
  890.           -----------
  891.           Enter  the size of  the left margin  for ALLY's report.  The
  892.           margin  is adjustable from 0 to 10 characters, defaulting to
  893.           0 characters wide.
  894.  
  895.           Right margin
  896.           ------------
  897.           Enter  the size of the  right margin for ALLY's report.  The
  898.           margin  is adjustable from 0 to 10 characters, defaulting to
  899.           0 characters wide.
  900.  
  901.           Page length
  902.           -----------
  903.           Enter  the page length  for the  ALLY's report.  ALLY allows
  904.           settings  from 44 to 32767,  defaulting to 66 lines per page
  905.           (a  standard 11 inch long page is assumed).  Adjust the page
  906.           length  to suit your  printer and its line spacing settings.
  907.           The actual number of lines printed for each page is the page
  908.           length minus the top and bottom margins.
  909.  
  910.           Typically, dot-matrix printers default to 66 lines per page,
  911.           and  laser  and ink  jet  printers default  to  60.  Another
  912.           variable  is  your  printer's  line  spacing  setting  - for
  913.           example,  using  an 1/8th  inch  line spacing  setting  on a
  914.           dot-matrix  printer can  increase the  printed output  to 88
  915.           lines per page.
  916.  
  917.  
  918.  
  919.           ALLY - A Lisp Analyzer      13     Version 2.0 User's Manual
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931.           ALLY  paginates with  a  title header  on  each page  of the
  932.           report.   To effectively  defeat ALLY's  pagination, set the
  933.           Page breaks option to NO and increase the Page length option
  934.           to  32767 -  or any  value larger  than the  total number of
  935.           lines in the report.
  936.  
  937.           Top margin
  938.           ----------
  939.           Enter  the length of the  top margin for ALLY's report.  The
  940.           margin  is adjustable  from 0  to 10  lines, defaulting to 2
  941.           lines.
  942.  
  943.           Bottom margin
  944.           -------------
  945.           Enter  the length  of the  bottom margin  for ALLY's report.
  946.           The margin is adjustable from 0 to 10 lines, defaulting to 2
  947.           lines.
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954.  
  955.  
  956.  
  957.  
  958.  
  959.  
  960.  
  961.  
  962.  
  963.  
  964.  
  965.  
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.  
  974.  
  975.  
  976.  
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.           ALLY - A Lisp Analyzer      14     Version 2.0 User's Manual
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  
  995.  
  996.  
  997.           REPORT OPTIONS
  998.           ------------------------------------------------------------
  999.           These options effect the report the ALLY Analyzer produces.
  1000.  
  1001.                           o---- Report Options -----+
  1002.                           | File hierarchy··: YES   |
  1003.                           | Call hierarchy··: YES   |
  1004.                           | X-Ref functions·: YES   |
  1005.                           | X-Ref symbols···: YES   |
  1006.                           | X-Ref reserved··: YES   |
  1007.                           | Program listing·: YES   |
  1008.                           | Double space····: NO    |
  1009.                           | ASCII lines·····: YES   |
  1010.                           | Hard form feeds·: YES   |
  1011.                           | Page breaks·····: LIST  |
  1012.                           +-------------------------+
  1013.  
  1014.           File hierarchy
  1015.           --------------
  1016.           ALLY's  file  hierarchy  is a  tree  structure  of  all user
  1017.           defined  functions, showing their  beginning and ending line
  1018.           numbers.  Answer NO to omit this reporting.
  1019.  
  1020.           Call hierarchy
  1021.           --------------
  1022.           The  call hierarchy  is a  tree structure  of all called and
  1023.           user defined functions, illustrating their dynamic scope and
  1024.           dependencies.  Respond NO to eliminate this section from the
  1025.           report.   The Analyzer uses  less memory and executes faster
  1026.           with  this  option  off,  but  the  report  is  normally too
  1027.           valuable to exclude.
  1028.  
  1029.           X-Ref functions
  1030.           ---------------
  1031.           This  is   ALLY's  cross-reference   of  all   user  defined
  1032.           functions.   Like  most  other sections,  you  can  turn the
  1033.           reporting on or off with a YES or NO response.
  1034.  
  1035.           X-Ref symbols
  1036.           -------------
  1037.           All  user defined symbols which are not functions are cross-
  1038.           referenced in this section.  NO turns reporting off.
  1039.  
  1040.           X-Ref reserved
  1041.           --------------
  1042.           Answer   YES   to   have  the   ALLY   Analyzer   track  and
  1043.           cross-reference  AutoLISP's reserved symbols.  These include
  1044.           the predefined
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.           ALLY - A Lisp Analyzer      15     Version 2.0 User's Manual
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063.           constants,  such s  Pi, T  and nil,  and AutoLISP's built-in
  1064.           subrs  (functions).  ALLY categorizes  each usage as called,
  1065.           referenced or set.  This option can be useful in identifying
  1066.           AutoLISP  version compatibility, but memory requirements and
  1067.           execution time of the ALLY Analyzer increase with its use.
  1068.  
  1069.           Program listing
  1070.           ---------------
  1071.           Choose  YES  and the  ALLY  Analyzer report  will  include a
  1072.           listing of the analyzed AutoLISP source files.  Each line is
  1073.           numbered  to cross-reference  with the  listing of functions
  1074.           and  symbols.  You can disable this option to save reporting
  1075.           time  during  debugging  sessions,  most  text  editors  and
  1076.           browsers will identify line numbers.  You should enable this
  1077.           and  all other Analyzer  options for producing final program
  1078.           documentation.
  1079.  
  1080.           Double space
  1081.           ------------
  1082.           Answer  YES to  force the listing  of the  source file to be
  1083.           printed double spaced, with room to add editorial comments.
  1084.  
  1085.           ASCII lines
  1086.           -----------
  1087.           If  you respond  YES, the  ALLY Analyzer  will use the "box"
  1088.           characters from the IBM extended character set to draw lines
  1089.           and  tree diagrams in its  report. If your printer or editor
  1090.           does  not  support  this  character  set  (perhaps producing
  1091.           foreign  or italic characters instead), turn this option off
  1092.           with  NO. When off, ALLY substitutes dashes and other common
  1093.           characters which any printer should be capable of producing.
  1094.  
  1095.           Hard form feeds
  1096.           ---------------
  1097.           If  YES, ALLY  inserts form  feed  characters (ASCII  12) to
  1098.           terminate each page.  If NO, blank lines are used to pad the
  1099.           bottom of each page to the specified length.
  1100.  
  1101.           Page breaks
  1102.           -----------
  1103.           Enter  YES, NO or  LIST.  The ALLY  Analyzer generates up to
  1104.           seven  sections in  its reports.   YES  forces a  page break
  1105.           after  each of the  sections -  even if they  are just a few
  1106.           lines  long each.   NO  uses the  least  amount of  paper to
  1107.           generate  a printed  report, by  allowing report sections to
  1108.           follow  directly behind  one another  as page space permits.
  1109.           LIST  allows the first six sections of the report to mix but
  1110.           forces  a page break  between program listings, allowing you
  1111.           to  separate  them  to study  side-by-side  with  the symbol
  1112.           cross-references.
  1113.  
  1114.  
  1115.  
  1116.  
  1117.           ALLY - A Lisp Analyzer      16     Version 2.0 User's Manual
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128.  
  1129.           EXECUTION OPTIONS
  1130.           ------------------------------------------------------------
  1131.           These options effect the way the ALLY programs operate.
  1132.  
  1133.                           o--- Execution Options ---+
  1134.                           | Tab expansion···: 8     |
  1135.                           | Read buffer size: 1     |
  1136.                           | File sort method: NAME  |
  1137.                           | Browse 2 files··: NO    |
  1138.                           | Edit 2 files····: NO    |
  1139.                           | Pause Analyzer··: NO    |
  1140.                           | Use mouse·······: YES   |
  1141.                           | 43/50 line mode·: NO    |
  1142.                           | Resistor colors·: NO    |
  1143.                           | Mono colors·····: NO    |
  1144.                           +-------------------------+
  1145.  
  1146.           Tab expansion
  1147.           -------------
  1148.           Enter  the number  of  spaces that  Tabs  (ASCII 9)  in your
  1149.           source  code should be  expanded to  in Analyzer reports and
  1150.           Checker  displays.  It  is adjustable  from  2 to  8 spaces,
  1151.           default is 8.
  1152.  
  1153.           Read buffer size
  1154.           ----------------
  1155.           Enter a size for ALLY's line reading buffer, 1K to 64K.  The
  1156.           buffer  size  dictates  the  maximum  line  length  that the
  1157.           Analyzer  and  Checker can  read.  A 1K  buffer  allows 1024
  1158.           character  lines and is  generally adequate.  Increasing the
  1159.           buffer  decreases  the memory  available  for  analyzing and
  1160.           checking.
  1161.  
  1162.           File sort method
  1163.           ----------------
  1164.           Enter  a  default  sorting  method  for  the  ALLY Workbench
  1165.           point-and-shoot file selection window.  Choose NAME, TIME or
  1166.           SIZE.   The  default  sorting  order  can  be  changed  when
  1167.           selecting files.
  1168.  
  1169.           Browse 2 files
  1170.           --------------
  1171.           When  reports are destined to  BROWSER, a YES causes ALLY to
  1172.           send  both the report and source file names to the browser's
  1173.           execution   command  line.   This   option  is   useful  for
  1174.           "windowing" browsers which can switch between or display two
  1175.           files on the screen simultaneously.
  1176.  
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.  
  1183.           ALLY - A Lisp Analyzer      17     Version 2.0 User's Manual
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.  
  1193.  
  1194.  
  1195.           Edit 2 files
  1196.           ------------
  1197.           When  reports are destined  to EDITOR, a  YES causes ALLY to
  1198.           send  both the report and  source file names to the editor's
  1199.           execution  command   line.   This   option  is   useful  for
  1200.           "windowing"  editors which  can display  and edit  two files
  1201.           simultaneously.
  1202.  
  1203.           Pause Analyzer
  1204.           --------------
  1205.           When  the pause option  is on,  ALLY pauses after completing
  1206.           the analysis so that you can review the status window before
  1207.           browsing  the report.  Press [Esc] to abort or any other key
  1208.           to continue.
  1209.  
  1210.           Use mouse
  1211.           ---------
  1212.           This  option controls  whether or  not ALLY  makes use  of a
  1213.           mouse.  ALLY automatically determines whether or not a mouse
  1214.           driver  is  present, but  this  option provides  a  means to
  1215.           totally disable the mouse event handler in case of conflict.
  1216.           You  must  reload ALLY  after  editing this  option  for the
  1217.           change to take effect.
  1218.  
  1219.           43/50 line mode
  1220.           ---------------
  1221.           ALLY  will use EGA 43-line  mode or VGA 50-Line mode display
  1222.           for  the Checker  and the  Analyzer screen  output when this
  1223.           option is on and the proper hardware is present.
  1224.  
  1225.           Resistor colors
  1226.           ---------------
  1227.           This  allows you to choose the color set used in parentheses
  1228.           coloring  in  the  ALLY  Checker.   The  default  color  set
  1229.           attempts  to maximize  contrast in  nested parentheses.  The
  1230.           alternate   resistor  color   set  follows   the  Brown-Red-
  1231.           Orange-Yellow-Green-Blue-Violet-Gray-White-Black    sequence
  1232.           which  certain users  with  electronics background  may find
  1233.           more familiar and informative.
  1234.  
  1235.           Answer  YES to  force ALLY  to use  the Resistor  color set.
  1236.           This option is only valid for color displays.
  1237.  
  1238.           Mono colors
  1239.           -----------
  1240.           Answer YES to force ALLY to use monochrome (black and white)
  1241.           colors  for its  screen display,  regardless of  the monitor
  1242.           type.
  1243.  
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.           ALLY - A Lisp Analyzer      18     Version 2.0 User's Manual
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.  
  1261.           PRINTER SETUP
  1262.           ------------------------------------------------------------
  1263.           Use  the printer setup  screen to select  a printer port and
  1264.           set up printer defaults for Analyzer reports.
  1265.  
  1266.              o------------------ Printer Setup -------------------+
  1267.              | Printer port····: LPT1                             |
  1268.              | Printer setup···: 15,27,48                         |
  1269.              | Printer reset···: 18,27,50                         |
  1270.              +----------------------------------------------------+
  1271.  
  1272.           Printer port
  1273.           ------------
  1274.           Use  this field to  tell ALLY which communications port your
  1275.           printer is attached to - LPT1, LPT2, COM1 or COM2.  The most
  1276.           common  connection is LPT1  (often by redirection), try this
  1277.           if  you are unsure  which port your  printer is attached to.
  1278.           Serial  printers must  be set  to  the proper  baud, parity,
  1279.           databits,  and retry mode  with the  DOS MODE command before
  1280.           executing ALLY.
  1281.  
  1282.           Printer setup
  1283.           -------------
  1284.           This  entry is  optional.  If you  wish to  send a string of
  1285.           control  codes and/or escape sequences to your printer prior
  1286.           to  printing ALLY Analyzer reports, use this entry to define
  1287.           them.   Printer commands  are  hardware specific  - although
  1288.           some  de facto standards exist, compatibility may be limited
  1289.           to a subset of commands.  There are differences in the codes
  1290.           used  by different printer technologies - laser, dot-matrix,
  1291.           etc.   See your  printer manual  for codes  specific to your
  1292.           hardware.
  1293.  
  1294.           List  control characters,  escape sequences,  or a string of
  1295.           both.   Each  code  and character  must  be  entered  in its
  1296.           decimal  ASCII value with  each value  separated by a comma.
  1297.           Blank spaces are not required between codes (ALLY will strip
  1298.           them out anyway) and leading zeros are optional.
  1299.  
  1300.           Appendix B further describes printer commands and contains a
  1301.           condensed  table  of  commands specific  to  IBM,  Epson and
  1302.           compatible  dot-matrix printers. Appendix A, an ASCII table,
  1303.           will  help  you to  convert  other printer  commands  to the
  1304.           required format.
  1305.  
  1306.           To  illustrate the  method,  let's set  an  Epson compatible
  1307.           dot-matrix printer to condensed print mode and 1/8 inch line
  1308.           spacing.   The  control  code   to  turn  on  the  printer's
  1309.           condensed  print mode  is SI  (Shift  In), which  is decimal
  1310.           ASCII 15. To set
  1311.  
  1312.  
  1313.  
  1314.  
  1315.           ALLY - A Lisp Analyzer      19     Version 2.0 User's Manual
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.  
  1325.  
  1326.  
  1327.           1/8  inch  line  spacing,   the  escape  sequence  ESC+0  is
  1328.           required.   ESC  (Escape)  is  decimal  ASCII  27,  and  the
  1329.           character  0 (zero) is decimal ASCII 48. Thus the string you
  1330.           enter to send these two commands is:  15,27,48
  1331.  
  1332.           Printer reset
  1333.           -------------
  1334.           This  entry is  optional.  The  instructions for  entering a
  1335.           reset  string are the  same as for  entering a printer setup
  1336.           string.   This is normally  used only  in conjunction with a
  1337.           printer  setup string, to return the printer to its previous
  1338.           state.
  1339.  
  1340.           To  continue the  example we  began  with the  setup string,
  1341.           let's return the printer to its previous state.  The control
  1342.           code  to turn  the condensed  print mode  off is DC2 (Device
  1343.           Control  2), which is  decimal ASCII 18.   To reset the line
  1344.           spacing  to  a  normal 1/6,  the  escape  sequence  ESC+2 is
  1345.           required.   ESC  (Escape)  is  decimal  ASCII  27,  and  the
  1346.           character  2 (two) is  decimal ASCII 50. The developed reset
  1347.           string is:  18,27,50
  1348.  
  1349.  
  1350.           ABOUT ALLY
  1351.           ------------------------------------------------------------
  1352.           Choose  this menu  item  to display  some  brief information
  1353.           about ALLY's developer.
  1354.  
  1355.  
  1356.  
  1357.  
  1358.  
  1359.  
  1360.  
  1361.  
  1362.  
  1363.  
  1364.  
  1365.  
  1366.  
  1367.  
  1368.  
  1369.  
  1370.  
  1371.  
  1372.  
  1373.  
  1374.  
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.  
  1381.           ALLY - A Lisp Analyzer      20     Version 2.0 User's Manual
  1382.  
  1383.  
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.  
  1392.  
  1393.           ------------------------------------------------------------
  1394.                                THE ALLY WORKBENCH
  1395.           ------------------------------------------------------------
  1396.           To run ALLY from either AutoCAD or DOS, just type "ALLY" and
  1397.           press  [Enter].  ALLY starts up in the Workbench at the main
  1398.           File/Destination  data entry  screen.   Here you  select the
  1399.           file  search  mask,  the file  and  report  directories, the
  1400.           source file to be analyzed, and the report destination.
  1401.  
  1402.           Function  keys are available for configuring ALLY, for Help,
  1403.           and  to perform actions such as executing the ALLY Analyzer,
  1404.           a  DOS shell, your  editor, file browser and other installed
  1405.           external  programs.  These  command  keys will  be described
  1406.           later.
  1407.  
  1408.           FILE/DESTINATION
  1409.           ------------------------------------------------------------
  1410.           This  is the  main ALLY  screen,  where you  select AutoLISP
  1411.           files  and direct  their  reports.  All  ALLY  functions are
  1412.           available  from this  screen: editing,  checking, analyzing,
  1413.           and other user installed programs.
  1414.  
  1415.              o---------------- File/Destination ------------------+
  1416.              | File search mask: *.LSP                            |
  1417.              | File directory··: D:\ACAD11\SAMPLE\                |
  1418.              | Report directory: E:\                              |
  1419.              | Lisp file name··: D:\ACAD11\SAMPLE\DLINE.LSP       |
  1420.              | Destination·····: SCREEN                           |
  1421.              | Report file name: E:\DLINE.RPT                     |
  1422.              +----------------------------------------------------+
  1423.  
  1424.           File search mask
  1425.           ----------------
  1426.           This  is the search mask that the ALLY pop-up file selection
  1427.           window ([F3] or [Alt-F]) uses to find the files it displays.
  1428.           The  default is *.LSP, but  you may enter any combination of
  1429.           wildcard  and match  characters  that DOS  permits.   Do not
  1430.           prefix a path to the search mask.
  1431.  
  1432.           File directory
  1433.           --------------
  1434.           This  is the directory path where your AutoLISP source files
  1435.           are  located.  The  path must  contain the appropriate drive
  1436.           letter  and must be  terminated with a  backslash. If you do
  1437.           not  supply  a path,  ALLY  inserts the  current  path.  The
  1438.           pop-up file selection window ([F3] or [Alt-F]) searches from
  1439.           this  field's directory, and updates it when directories are
  1440.           changed.
  1441.  
  1442.  
  1443.  
  1444.  
  1445.  
  1446.  
  1447.           ALLY - A Lisp Analyzer      21     Version 2.0 User's Manual
  1448.  
  1449.  
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.  
  1457.  
  1458.  
  1459.           Report directory
  1460.           ----------------
  1461.           ALLY uses the report directory, by default, as a destination
  1462.           for  its output reports.  Like the file directory, this must
  1463.           be  a  valid  path  with  a  drive  letter  and  terminating
  1464.           backslash  - if  blank, the  current path  is inserted  as a
  1465.           default.  This directory also  receives the temporary report
  1466.           files  created when the browser is named as the destination.
  1467.           If  you have a ram  disk with adequate free space, naming it
  1468.           as  the report directory  can result  in a significant speed
  1469.           increase.  You can override this default path for EDITOR and
  1470.           FILE  destinations by  prefixing the  report file  name with
  1471.           another path.
  1472.  
  1473.           Lisp file name
  1474.           --------------
  1475.           Enter  the name of the AutoLISP file you wish to operate on.
  1476.           Your  chosen file directory  automatically prefixes the file
  1477.           name, but you can enter a different path name if needed.  If
  1478.           you  omit the  file extension,  ALLY  adds .LSP  by default.
  1479.           When  changing a file  name, the old  name clears if any key
  1480.           other than a cursor or editing key is pressed first.  Rather
  1481.           than  manually entering the  LISP file  name, you can select
  1482.           files  from  ALLY's  point-and-shoot  file  selection window
  1483.           (press function key [F3] or [Alt-F]).
  1484.  
  1485.           Destination
  1486.           -----------
  1487.           Use  this field to direct the ALLY Analyzer's report to your
  1488.           choice  of SCREEN,  FILE, PRINTER,  BROWSER or  EDITOR.  The
  1489.           SCREEN  option directs the output to a simple screen display
  1490.           routine,  which   pages  but   does  not   provide  backward
  1491.           scrolling.   The FILE option  writes the report to the named
  1492.           output  disk file.  PRINTER prints the report to the printer
  1493.           attached  to the  specified port.   For BROWSER, ALLY writes
  1494.           the report to a temporary disk file, then loads it into your
  1495.           browser  (the  temporary file  is  erased as  you  leave the
  1496.           browser).   When EDITOR is  chosen for the destination, ALLY
  1497.           writes the report to the named output disk file and loads it
  1498.           into your editor.
  1499.  
  1500.           Report file name
  1501.           ----------------
  1502.           Enter  the file  name for  the report  generated by the ALLY
  1503.           Analyzer.   This name is  only required when you have chosen
  1504.           FILE or EDITOR for the destination.  ALLY will automatically
  1505.           fill  this field, using the same name as the AutoLISP source
  1506.           file  with a .RPT  file name  extension.  Your chosen report
  1507.           directory  prefixes the file name by default.  You can enter
  1508.           a different path or name if desired.  If you change the name
  1509.           but omit the file extension, ALLY adds .RPT by default.
  1510.  
  1511.  
  1512.  
  1513.           ALLY - A Lisp Analyzer      22     Version 2.0 User's Manual
  1514.  
  1515.  
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  
  1523.  
  1524.  
  1525.           FILE SELECTION
  1526.           ------------------------------------------------------------
  1527.           Point-and-shoot  file selection  is available  from the ALLY
  1528.           Workbench  by pressing  [F3] or  [Alt-F].  A  window pops up
  1529.           with   a  file  listing gathered  from  your  specified file
  1530.           directory  and  filename  search  mask.   Drive  letters and
  1531.           subdirectories  are   also  included  and   are  marked  and
  1532.           displayed  in unique  colors.  When  the list  contains more
  1533.           items than can fit in the window, it scrolls as you traverse
  1534.           it.
  1535.  
  1536.           The  files are sorted  according to the default order chosen
  1537.           in  ALLY's Setup  Options.  To  temporarily change  the sort
  1538.           method, press [F9] or [Alt-S] and choose NAME, TIME or SIZE.
  1539.  
  1540.           Pick  your selection  by moving  the highlight  bar over the
  1541.           file  or subdirectory  name and  pressing [Enter].  The [Up]
  1542.           and [Down] cursor keys traverse the list one name at a time.
  1543.           If  you have a mouse, you can move the mouse cursor over the
  1544.           chosen  file name and click the left button to highlight the
  1545.           file.  Clicking the left  mouse button  again with the mouse
  1546.           cursor over the highlighted file enters your selection.
  1547.  
  1548.           There  are  other ways  to  move the  highlight  bar through
  1549.           longer  lists.  Typing  the first  character of  a file name
  1550.           moves  the highlight bar to the first matching file.  Typing
  1551.           the  second character within  two seconds of the first moves
  1552.           the  highlight bar  again to  the  first name  matching both
  1553.           characters.   ALLY continues to  track and match the name so
  1554.           long  as you continue  to type  characters within two second
  1555.           intervals.   The  string  of  characters  being  tracked are
  1556.           displayed  below the  file  selection window.   After  a two
  1557.           second  interval, the tracking string clears.  You can force
  1558.           the  tracking string  to clear  at any  time by pressing the
  1559.           spacebar.
  1560.  
  1561.           The [PgUp] and [PgDn] keys page the highlight bar up or down
  1562.           the  length of the  window, and [Home]  and [End] move it to
  1563.           the respective ends of the list.
  1564.  
  1565.           The  right hand side of the file window is a mouse sensitive
  1566.           scroll  bar.  The  slider box  on the  scroll bar  shows the
  1567.           position  of the highlighted  file relative to the length of
  1568.           the file list.  The bold arrowheads at the top and bottom of
  1569.           the scroll bar are cursor hot spots.  Place the mouse cursor
  1570.           over  the arrowheads and click  the left button to cursor up
  1571.           or  down.  To make  bigger jumps along  the file list, place
  1572.           the mouse cursor over the scroll bar in the desired relative
  1573.           position  and click  the left  button.   The slider  box and
  1574.           highlight bar will be repositioned accordingly.
  1575.  
  1576.  
  1577.  
  1578.  
  1579.           ALLY - A Lisp Analyzer      23     Version 2.0 User's Manual
  1580.  
  1581.  
  1582.  
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588.  
  1589.  
  1590.  
  1591.           Press [Esc] to exit the file selection window.  You can also
  1592.           exit  by  pressing  [F10] or  [Alt-X],  pressing  both mouse
  1593.           buttons simultaneously, or picking the exit window button in
  1594.           the upper left corner of the window border with the mouse.
  1595.  
  1596.           To take a quick peek at a file, highlight it and press [F3],
  1597.           [Alt-P] or the right mouse button.  The first three lines of
  1598.           the  file will  be displayed  at the  bottom of  the screen.
  1599.           Other ALLY commands - Check, Analyze, Browse, Edit, and your
  1600.           [^F1]  through  [^F8]  programs  -  are  active  and  can be
  1601.           executed on any  file highlighted in the list.
  1602.  
  1603.           The   directory  tree   can  be   traversed  by   picking  a
  1604.           subdirectory name from the list - the window will be redrawn
  1605.           to  display files from  the new  directory.  To traverse the
  1606.           directory  tree   towards  the  root,   pick  the  displayed
  1607.           directory's  parent  directory.   The  parent  directory  is
  1608.           indicated  in the  list as a  pair of  periods followed by a
  1609.           backslash: (..\)
  1610.  
  1611.           To  change drives, simply pick the desired drive letter from
  1612.           the  list. Alternatively,  you can  exit the  file selection
  1613.           window  by pressing [Esc], enter the new drive and directory
  1614.           into the file directory field and press [F3] again.
  1615.  
  1616.           Once  a file name is  picked, the window clears and the name
  1617.           is entered into the LISP file name field.  If FILE or EDITOR
  1618.           is  used as the report destination, a matching name with the
  1619.           extension   .RPT is assigned  as the  report file.  The file
  1620.           directory field is updated each time you pick a file.
  1621.  
  1622.  
  1623.  
  1624.  
  1625.  
  1626.  
  1627.  
  1628.  
  1629.  
  1630.  
  1631.  
  1632.  
  1633.  
  1634.  
  1635.  
  1636.  
  1637.  
  1638.  
  1639.  
  1640.  
  1641.  
  1642.  
  1643.  
  1644.  
  1645.           ALLY - A Lisp Analyzer      24     Version 2.0 User's Manual
  1646.  
  1647.  
  1648.  
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.  
  1655.  
  1656.  
  1657.           WORKBENCH COMMANDS
  1658.           ------------------------------------------------------------
  1659.           The ALLY Workbench uses the keyboard's function keys and Alt
  1660.           key  combinations to  execute  commands and  perform various
  1661.           actions on the selected AutoLISP source code file.
  1662.  
  1663.           If  you are using a  mouse, you can move its cursor over any
  1664.           active  command item in  the menu at  the top of the screen,
  1665.           and press the left button to execute the command or program.
  1666.  
  1667.           +--------------------------------------------/
  1668.           | F1-Help F2-Opt F3-File F4-Check F5-Analyze
  1669.           +------------------------------------------/
  1670.             ^F1 Kelv      ^F2 Lb      ^F3 Copy
  1671.  
  1672.                                 /------------------------------------+
  1673.                                  F7-Browse F8-Edit F9-Shell F10-Exit |
  1674.                               /--------------------------------------+
  1675.                                   ^F4 Dir      ^F5 Ljbook      ^F6 Del
  1676.  
  1677.           Help - [F1] or [Alt-H]
  1678.           ----------------------
  1679.           Pressing [F1] or [Alt-H] displays a help screen.  The screen
  1680.           shows a summary of each function key and a brief description
  1681.           of the editing keys available for ALLY's data entry screen.
  1682.  
  1683.           Opt(ions) - [F2] or [Alt-O]
  1684.           ---------------------------
  1685.           These  keys bring up the ALLY Setup Options menu.  This menu
  1686.           and  its sub-menus  are described  in  detail in  an earlier
  1687.           section of the manual - see ALLY SETUP OPTIONS.
  1688.  
  1689.           File - [F3] or [Alt-F]
  1690.           ----------------------
  1691.           Press  [F3] or  [Alt-F] to  bring up  ALLY's point-and-shoot
  1692.           file  selection window.   Its operation  is described in the
  1693.           previous section of the manual titled FILE SELECTION.
  1694.  
  1695.           Check - [F4] or [Alt-C]
  1696.           -----------------------
  1697.           These  keys execute the ALLY Checker.  The Checker is a LISP
  1698.           file browser which colorizes parentheses, quoted strings and
  1699.           comments  to help you  spot errors. The Checker is described
  1700.           in more detail later.
  1701.  
  1702.  
  1703.  
  1704.  
  1705.  
  1706.  
  1707.  
  1708.  
  1709.  
  1710.  
  1711.           ALLY - A Lisp Analyzer      25     Version 2.0 User's Manual
  1712.  
  1713.  
  1714.  
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720.  
  1721.  
  1722.  
  1723.           Analyze - [F5] or [Alt-A]
  1724.           -------------------------
  1725.           Pressing  [F5]  or [Alt-A]  analyzes  the  selected AutoLISP
  1726.           source  file with the  ALLY Analyzer.  Multiple source files
  1727.           can  be  analyzed  together  -  see  the  section  ANALYZING
  1728.           MULTIPLE  FILES.  The functions  of the ALLY Analyzer itself
  1729.           are described in a later section of the manual.
  1730.  
  1731.           Your  current report settings  are passed to the Analyzer at
  1732.           execution.  As your source file is being analyzed, a running
  1733.           tally  of   the  number   of  lines,   symbols,  and  errors
  1734.           encountered  are displayed  on screen.   ALLY then writes or
  1735.           prints the report to the selected destination.
  1736.  
  1737.           If  the selected destination  is your browser or editor, the
  1738.           report  file name  is  passed to  the  command line  and the
  1739.           editor  or browser  is executed.   When the  output is to an
  1740.           existing  file,  you  have  the  option  of  overwriting  or
  1741.           appending  the file.  You can abort the analysis at any time
  1742.           by  picking the exit window  button with a mouse or pressing
  1743.           [Esc].
  1744.  
  1745.           If  there are any file errors - such as a nonexistent source
  1746.           file  name or directory - ALLY displays an error message and
  1747.           moves the cursor to the offending entry.
  1748.  
  1749.           Because    the   encryption    methods    employed   produce
  1750.           incomprehensible  results, protected  AutoLISP files are not
  1751.           allowed to be analyzed.
  1752.  
  1753.           Browse - [F7] or [Alt-B]
  1754.           ------------------------
  1755.           Press  function key  [F7] or  [Alt-B] to  use your installed
  1756.           file  browser to browse  the selected AutoLISP file.  If you
  1757.           have  installed the browser  using a  file name alias symbol
  1758.           (see the [F2]/[Alt-O] Options command), ALLY passes the file
  1759.           name  to the browser  along with any command line parameters
  1760.           you  have  entered.   When  you  exit  the  browser  you are
  1761.           returned to the ALLY Workbench.
  1762.  
  1763.           Edit - [F8] or [Alt-E]
  1764.           ----------------------
  1765.           Function  key [F8]  or [Alt-E]  executes your installed text
  1766.           editor  to edit  the selected  AutoLISP  file.  If  you have
  1767.           installed the editor using a file name alias symbol (see the
  1768.           [F2]/[Alt-O]  Options command), ALLY passes the file name to
  1769.           the  editor along with  any command line parameters you have
  1770.           entered.  You are returned to ALLY after exiting the editor.
  1771.  
  1772.  
  1773.  
  1774.  
  1775.  
  1776.  
  1777.           ALLY - A Lisp Analyzer      26     Version 2.0 User's Manual
  1778.  
  1779.  
  1780.  
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.  
  1787.  
  1788.  
  1789.           Shell - [F9] or [Alt-S]
  1790.           -----------------------
  1791.           ALLY implements a sophisticated DOS shell feature, available
  1792.           by  pressing function key [F9] or [Alt-S].  ALLY prompts for
  1793.           a  DOS command  line when  the  command is  entered.  ALLY's
  1794.           shell command can be used in two different methods.
  1795.  
  1796.           The first method is an DOS shell.  When ALLY prompts you for
  1797.           a  DOS command,  press [Enter].   Without a  command string,
  1798.           ALLY  loads   a  copy   of  your   DOS  command  interpreter
  1799.           (COMMAND.COM)  and shells  out to  the DOS environment where
  1800.           you  are greeted with the familiar DOS prompt.  You can stay
  1801.           in  DOS as  long  as you  wish,  performing DOS  commands or
  1802.           running  other programs.   To return  to the ALLY Workbench,
  1803.           type EXIT at the DOS prompt and press [Enter].
  1804.  
  1805.           The  second method is a program shell.  Enter a program name
  1806.           or  DOS command  at the  prompt and  press [Enter], and ALLY
  1807.           will  execute it, pause,  then return to the Workbench after
  1808.           you press a key.  You can add command line parameters behind
  1809.           the  command  and use  any  of ALLY's  special  command line
  1810.           symbol except the question mark pause symbol.
  1811.  
  1812.           To  execute a program residing  in a directory not listed in
  1813.           your  DOS PATH  statement, you  can prefix  the program name
  1814.           with  its full directory path (example: C:\UTIL\MYPROG).  If
  1815.           the  program needs to execute from within its own directory,
  1816.           prefix  the   program  path  with   an  ampersand  (example:
  1817.           @C:\UTIL\MYPROG).   When ALLY  encounters the  ampersand, it
  1818.           changes  to the  listed program  directory before execution,
  1819.           and back after.
  1820.  
  1821.           If  you give the  full path name  of a COM or EXE executable
  1822.           program     and     the     file     extension     (example:
  1823.           C:\UTIL\MYPROG.EXE),  ALLY will execute it directly, without
  1824.           loading  a copy of  the DOS  command interpreter.  With many
  1825.           versions  of DOS, this  makes as much  as 3.5 kilobytes more
  1826.           memory available for the program being executed.
  1827.  
  1828.           You  can use ALLY's  square bracket, semicolon, and asterisk
  1829.           filename alias symbols when entering your command line.  See
  1830.           the   preceding  INSTALL   USER   PROGRAMS  section   for  a
  1831.           description of the file name alias symbols.
  1832.  
  1833.           To  maximize the  amount of  memory for  the DOS shell, ALLY
  1834.           swaps  most of its  own code  and data out  of memory - into
  1835.           expanded  memory if  available,  otherwise into  a temporary
  1836.           hidden  disk file (ALLY0000.$$$).  See USING EXPANDED MEMORY
  1837.           for details.
  1838.  
  1839.  
  1840.  
  1841.  
  1842.  
  1843.           ALLY - A Lisp Analyzer      27     Version 2.0 User's Manual
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852.  
  1853.  
  1854.  
  1855.           There  is one warning  we wish to  stress.  You may pop up a
  1856.           TSR  (Terminate and Stay  Resident) program which is already
  1857.           loaded, but never load a TSR while in a DOS shell.  Doing so
  1858.           can  cause unpredictable results  when you  try to return to
  1859.           the parent program, and open files could be lost.
  1860.  
  1861.           Exit - [F10] or [Alt-X]
  1862.           -----------------------
  1863.           Press  [F10] or [Alt-X] when you are ready to leave ALLY and
  1864.           return  to the operating system  (or to return to AutoCAD if
  1865.           you  have run  ALLY from  the ALLY  AutoCAD interface).  You
  1866.           will be prompted to confirm your command to leave ALLY.
  1867.  
  1868.           If  run from AutoCAD, you  are asked if you want to load the
  1869.           AutoLISP  source file which was last loaded in ALLY.  If you
  1870.           respond  yes, the file is loaded into AutoLISP.  If multiple
  1871.           LISP  files were  analyzed with  ALLY's special include file
  1872.           directive,  they are all  loaded - see the section ANALYZING
  1873.           MULTIPLE  FILES.  Use this  feature to  load new or modified
  1874.           AutoLISP programs to try them out.  If you find more editing
  1875.           is needed, execute ALLY again to automatically return to the
  1876.           same file.
  1877.  
  1878.           User Programs - [Ctrl-F1] through [Ctrl-F8]
  1879.           -------------------------------------------
  1880.           These  keys execute  the  installed external  programs.  For
  1881.           more  information, see  the description  of the INSTALL USER
  1882.           PROGRAMS  section of the  ALLY SETUP OPTIONS chapter.  These
  1883.           programs  may be executed  from either  the Workbench or the
  1884.           file selection window.
  1885.  
  1886.  
  1887.  
  1888.  
  1889.  
  1890.  
  1891.  
  1892.  
  1893.  
  1894.  
  1895.  
  1896.  
  1897.  
  1898.  
  1899.  
  1900.  
  1901.  
  1902.  
  1903.  
  1904.  
  1905.  
  1906.  
  1907.  
  1908.  
  1909.           ALLY - A Lisp Analyzer      28     Version 2.0 User's Manual
  1910.  
  1911.  
  1912.  
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.  
  1919.  
  1920.  
  1921.           ------------------------------------------------------------
  1922.                                 THE ALLY CHECKER
  1923.           ------------------------------------------------------------
  1924.  
  1925.           The  ALLY  Checker  is  a  LISP  file  browser  which colors
  1926.           parentheses,  quoted strings  and comments  to help you spot
  1927.           errors.   Each line of code  is numbered on the left side of
  1928.           the screen.  Lines longer than the display are automatically
  1929.           wrapped and indented.  A plus mark in the line number column
  1930.           indicates a wrapped line.
  1931.  
  1932.           Matching  left and right  parentheses are paired in the same
  1933.           color.   Colors change at each level of parentheses nesting,
  1934.           repeating  at the tenth level.  The line numbers on the left
  1935.           side  of the display  are colored to  match the current open
  1936.           parentheses,  or colored  cyan if  no parentheses  are open.
  1937.           You  can choose between two different parentheses color sets
  1938.           in ALLY's Setup Options.
  1939.  
  1940.           Normal  LISP code is colored light gray, quoted text strings
  1941.           are colored green and comments are colored cyan.  This makes
  1942.           quoted  strings and comments stand  out from the rest of the
  1943.           code.  The change in color (or lack of change) makes it easy
  1944.           to recognize cases of missing quote marks and semicolons.
  1945.  
  1946.           Embedded Tabs (ASCII 9) are expanded to the number of spaces
  1947.           set  in the ALLY  Workbench (the default  is 8 spaces).  All
  1948.           other  control characters (ASCII 0 to 31) are represented by
  1949.           a carat symbol followed by the control letter.  For example,
  1950.           a  backspace character  (ASCII 8)  is displayed  as ^H.  See
  1951.           this  manual's  Appendix A  for  an ASCII  table  of control
  1952.           characters.
  1953.  
  1954.           The  Checker's  status/command  line  shows  the  number  of
  1955.           parentheses  which are open  at the point following the last
  1956.           line of code displayed on screen.  This number should always
  1957.           be zero when you reach the end of file.
  1958.  
  1959.           If a parentheses error is detected all following parentheses
  1960.           are  displayed in blinking white.  This does not necessarily
  1961.           pinpoint the error, but does show where it becomes apparent.
  1962.  
  1963.           Here are the command keys used within the ALLY Checker:
  1964.  
  1965.           [G] ........ Go to. Prompts for and moves to specified line.
  1966.  
  1967.           [A] or [Esc] Aborts browsing and returns the Workbench.
  1968.  
  1969.           [Up]/[Down]  Cursor keys, moves display up or down one line.
  1970.  
  1971.  
  1972.  
  1973.  
  1974.  
  1975.           ALLY - A Lisp Analyzer      29     Version 2.0 User's Manual
  1976.  
  1977.  
  1978.  
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984.  
  1985.  
  1986.  
  1987.           [Home] ..... Moves the display to the first line.
  1988.  
  1989.           [End] ...... Moves the display to the end of the file.
  1990.  
  1991.           [PgUp] ..... Displays the previous screen of code.
  1992.  
  1993.           [PgDn] ..... Displays the next screen of code.
  1994.  
  1995.           [MouseRight] The  right mouse button is the same as pressing
  1996.                        the [Down] cursor.
  1997.  
  1998.           [MouseBoth]  Both   mouse  buttons   pressed  simultaneously
  1999.                        together is the same as pressing [Esc].
  2000.  
  2001.           [MouseLeft]  The  left mouse button  is the same as pressing
  2002.                        the [PgDn] key.
  2003.  
  2004.  
  2005.  
  2006.  
  2007.  
  2008.  
  2009.  
  2010.  
  2011.  
  2012.  
  2013.  
  2014.  
  2015.  
  2016.  
  2017.  
  2018.  
  2019.  
  2020.  
  2021.  
  2022.  
  2023.  
  2024.  
  2025.  
  2026.  
  2027.  
  2028.  
  2029.  
  2030.  
  2031.  
  2032.  
  2033.  
  2034.  
  2035.  
  2036.  
  2037.  
  2038.  
  2039.  
  2040.  
  2041.           ALLY - A Lisp Analyzer      30     Version 2.0 User's Manual
  2042.  
  2043.  
  2044.  
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050.  
  2051.  
  2052.  
  2053.           ------------------------------------------------------------
  2054.                                THE ALLY ANALYZER
  2055.           ------------------------------------------------------------
  2056.           A  symbol  cross-referencer  and  more,  the  ALLY  Analyzer
  2057.           performs  several functions to  help debug and document your
  2058.           AutoLISP programs.  The ALLY Analyzer generates a seven part
  2059.           comprehensive report of errors, warnings symbol usage, scope
  2060.           and function calls.
  2061.  
  2062.           As ALLY reads your AutoLISP files, it checks for and reports
  2063.           unbalanced  parentheses, unclosed  quotes,  misused symbols,
  2064.           and  other  common   errors.  ALLY  will   generate  a  file
  2065.           hierarchy,  a function  call hierarchy,  and separate cross-
  2066.           reference  reports of  user defined  functions, user defined
  2067.           symbols,  and  AutoLISP's  reserved  subrs  and  symbols.  A
  2068.           line-numbered  program listing follows the cross-references.
  2069.           Several formatting options are offered.
  2070.  
  2071.           The  size of files which ALLY can analyze is only limited by
  2072.           the  amount of memory  available.  Several source code files
  2073.           may  be analyzed at once. ALLY's read buffer can be adjusted
  2074.           to read lines up to 64K in length.
  2075.  
  2076.           The  destination  of  ALLY's   report  is  user  selectable,
  2077.           offering  a choice of  output to screen, disk file, printer,
  2078.           text editor, or file browser.  ALLY's built-in screen output
  2079.           is  a simple  mechanism which can  scroll a  line at a time,
  2080.           scroll  a  page  at  a  time,  or  scroll  nonstop.  Nonstop
  2081.           scrolling  can  be halted  by  pressing any  key.   For more
  2082.           flexible  screen output, install  your favorite file browser
  2083.           and direct ALLY's output to it.
  2084.  
  2085.           ALLY displays a status window as the file is being analyzed.
  2086.           To  abort the analysis,  you can press  the [Esc] key at any
  2087.           time, or press both mouse buttons simultaneously.
  2088.  
  2089.  
  2090.  
  2091.  
  2092.  
  2093.  
  2094.  
  2095.  
  2096.  
  2097.  
  2098.  
  2099.  
  2100.  
  2101.  
  2102.  
  2103.  
  2104.  
  2105.  
  2106.  
  2107.           ALLY - A Lisp Analyzer      31     Version 2.0 User's Manual
  2108.  
  2109.  
  2110.  
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116.  
  2117.  
  2118.  
  2119.           ANALYZING MULTIPLE FILES
  2120.           ------------------------------------------------------------
  2121.           By adding special include directives into your source files,
  2122.           ALLY can be used to analyze multiple LISP files and generate
  2123.           a  single report  of symbol  and function interactions.  The
  2124.           syntax of the include directive is:
  2125.  
  2126.                ;ALLY(filename)
  2127.  
  2128.           Here are a couple of examples:
  2129.  
  2130.                ;ALLY(TrigFunc.lsp)  -  trigonometric routines.
  2131.                ;ally(D:\Lisp\MyFile.Lsp)
  2132.  
  2133.           Use  the  conventional  DOS  backslash  for  directory  path
  2134.           separators,  not  AutoLISP's forward  slash.   The directive
  2135.           statement  is not case sensitive, but it is space sensitive.
  2136.           You  must not include any blank spaces between the semicolon
  2137.           and  the terminating right parenthesis.  You may precede the
  2138.           directive  with   spaces  for  indentation,   but  no  other
  2139.           characters  are allowed to  the left of the semicolon.  ALLY
  2140.           does  not allow two  directives in the  same line - any text
  2141.           following  the directive is  ignored, so  you may follow the
  2142.           directive with comments.
  2143.  
  2144.           AutoLISP  itself   ignores  ALLY's   include  directives  as
  2145.           comments,  so the directives  may be placed anywhere in your
  2146.           AutoLISP  files.  ALLY builds  its list of included files as
  2147.           the  directives are encountered.   The next file in the list
  2148.           is  processed  after the  analysis  of the  current  file is
  2149.           complete.   Include directives  may be  nested to any level,
  2150.           for  example, a file  included by the  main file may contain
  2151.           include directives of its own.  Duplicate include directives
  2152.           are  ignored, and the order of included files is unimportant
  2153.           except  for special cases where functions are redefined from
  2154.           one source file to the next.
  2155.  
  2156.           As  an alternative to  editing your AutoLISP source files to
  2157.           add include directives, you can create and analyze "project"
  2158.           files  - small files  which contain nothing but ALLY include
  2159.           directives.   You may find that creating and maintaining the
  2160.           include list is easier with this method.
  2161.  
  2162.           When  multiple LISP  files are  analyzed with ALLY's include
  2163.           directives,  they are  all loaded  along with  the main file
  2164.           when you use ALLY's automatic AutoLISP load feature.
  2165.  
  2166.  
  2167.  
  2168.  
  2169.  
  2170.  
  2171.  
  2172.  
  2173.           ALLY - A Lisp Analyzer      32     Version 2.0 User's Manual
  2174.  
  2175.  
  2176.  
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.  
  2183.  
  2184.  
  2185.           DECLARATIONS AND SYMBOL SCOPE
  2186.           ------------------------------------------------------------
  2187.           The  scope of a symbol is the region of the program where it
  2188.           is  accessible for evaluation, established by where, and if,
  2189.           the  symbol is  declared  in a  DEFUN  (function definition)
  2190.           argument  list.   A  symbol  is  global  if  not  explicitly
  2191.           declared.   Global symbols  are stored  in the  ATOMLIST and
  2192.           bound (reserved a place in memory to hold values) when first
  2193.           encountered by the AutoLISP interpreter.  Global symbols can
  2194.           be  set  (assigned  a  value)  or  evaluated  anywhere  - by
  2195.           expressions  evaluated when the  LISP file is loaded, during
  2196.           function  execution, or by  user input  at the command line.
  2197.           Global symbols have global scope.
  2198.  
  2199.           Symbols declared in a DEFUN argument list are local symbols.
  2200.           In  addition to arguments, a DEFUN argument list can contain
  2201.           other  local symbols as  well.  Local symbols are both bound
  2202.           and assigned values when the function is entered.  Arguments
  2203.           get their values from the function call, other local symbols
  2204.           (if  any) are initialized  to nil.   This dynamic binding of
  2205.           local  symbols conserves  memory, since  they are bound only
  2206.           when needed for the function call.
  2207.  
  2208.           Local  symbols may  be bound  to new  values as the function
  2209.           executes.  Changing the  bindings of  local symbols does not
  2210.           effect identically named symbols outside the function.  When
  2211.           a function exits, all its local symbol bindings are lost and
  2212.           the  memory allocated to them recaptured in the next garbage
  2213.           collection.   In summary, the scope of a local symbol is the
  2214.           transient  localized environment  created when  the function
  2215.           which spawns it is called.
  2216.  
  2217.           Function  definitions can  be  nested inside  other function
  2218.           definitions  in the source  code.  An  inner function can be
  2219.           made  local to the  outer function by  declaring its name in
  2220.           the  outer function definition's argument list.  The benefit
  2221.           of  using  local  functions  is  the  same  as  using  local
  2222.           variables  -  memory  conservation.   In  AutoLISP  a nested
  2223.           function,  like any  other symbol,  is  still global  if not
  2224.           explicitly declared.
  2225.  
  2226.           Free  variables  are  instances  of  symbols  used  inside a
  2227.           function  in which they  are not  local.  Free variables are
  2228.           commonly  used to produce side effects outside the function.
  2229.           Perhaps  the best known class of free variable is the global
  2230.           variable,  but it is  not the  only kind.  AutoLISP provides
  2231.           another  class  of  free  variable  known  as  dynamic  free
  2232.           variables  (also referred to as special variables).  Dynamic
  2233.           free  variables are instances  of local symbols used outside
  2234.           the function in which they have been declared.  This outside
  2235.           referencing  is made possible  by AutoLISP's dynamic scoping
  2236.           method.
  2237.  
  2238.  
  2239.           ALLY - A Lisp Analyzer      33     Version 2.0 User's Manual
  2240.  
  2241.  
  2242.  
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248.  
  2249.  
  2250.  
  2251.           There  are two major  methods employed for computer language
  2252.           scoping,    dynamic   (run-time)    scoping    and   lexical
  2253.           (compile-time) scoping.  AutoLISP's interpreter uses dynamic
  2254.           scoping, whereas most compiled LISPs and other languages use
  2255.           lexical  scoping by  default.   Since AutoLISP's  scoping is
  2256.           unlike the majority of other languages with which you may be
  2257.           familiar, it is important to explain the difference.
  2258.  
  2259.           To  illustrate the  difference  between dynamic  and lexical
  2260.           scoping,  consider the  following example.   Functions Test,
  2261.           Check  and Write are global (Check and Write are nested, but
  2262.           undeclared).  Test's local symbol S is set to "two", and the
  2263.           global  symbol S is set to "three".  Test's function call to
  2264.           Check passes the value "one" to Check's argument S.
  2265.  
  2266.               (setq S "three")
  2267.               (defun Test ( / S)
  2268.                 (defun Check (S)
  2269.                    (Write)
  2270.                 )
  2271.                 (defun Write ()
  2272.                    (print S)
  2273.                 )
  2274.                 (setq S "two")
  2275.                 (Check "one")
  2276.                 (princ)
  2277.               )
  2278.  
  2279.           Under  AutoLISP's dynamic scoping, executing Test will print
  2280.           the  word "one", whereas  a lexical  scoped LISP would print
  2281.           the  word "two".   When Write  executes,  a binding  for the
  2282.           symbol  S  must  be  found.   Both  scoping  methods require
  2283.           Write's  local environment to  be searched first, and when a
  2284.           local binding for S is not found, both establish that S is a
  2285.           free variable.  The two scoping methods differ in the manner
  2286.           they search for a free variable bindings.
  2287.  
  2288.           A  dynamically scoped language  searches for free variables,
  2289.           top  down, in the call stack calling environments.  The call
  2290.           stack is a record of active function calls.  As each call is
  2291.           made,  the  called function's  local  environment  record is
  2292.           placed  on the top of  the stack.  Upon exit, the function's
  2293.           record is popped off the top of the stack.
  2294.  
  2295.           When  one function calls another, the called function stacks
  2296.           on  top of the calling function.  The called function may in
  2297.           turn  call another, and  so on, further deepening the stack.
  2298.           Each  called function  has full  access to  the local symbol
  2299.           bindings  of all other function environments below it in the
  2300.           stack.
  2301.  
  2302.  
  2303.  
  2304.  
  2305.           ALLY - A Lisp Analyzer      34     Version 2.0 User's Manual
  2306.  
  2307.  
  2308.  
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.  
  2315.  
  2316.  
  2317.           Where there are multiple local bindings of identically named
  2318.           symbols,  the called function uses the first one encountered
  2319.           in  its top down search.  The global environment is searched
  2320.           only after exhausting the call stack without a match.
  2321.  
  2322.           In  our dynamic  example, the  top down  search of  the call
  2323.           stack finds a binding for the dynamic free variable S in the
  2324.           environment  of function Check - where "one" is bound to its
  2325.           local  argument S.   Had a binding  for S  not been found in
  2326.           Check,  the search would  have continued down the call stack
  2327.           to  the next  function -  Test in  this case,  and following
  2328.           that, the global environment.
  2329.  
  2330.           Lexical  scoping is different.   A lexically scoped language
  2331.           searches  for free variables, inside out, in nested function
  2332.           environments.  Nesting is accomplished by physically placing
  2333.           function  definitions inside one another in the source code.
  2334.           Lexical  scoping does not require inner functions to be made
  2335.           local to outer functions in order to be considered nested.
  2336.  
  2337.           Each  lexical nested function  has full  access to the local
  2338.           symbol  bindings of all outer function environments.  In the
  2339.           case  of  multiple  local   bindings  of  identically  named
  2340.           symbols,  the  nested  function   will  use  the  first  one
  2341.           encountered  in its outward  search.  The global environment
  2342.           is  the outermost environment.   By default, a function in a
  2343.           lexically  scoped  language  does  not  have  access  to the
  2344.           calling environment, unless by chance or design the function
  2345.           is nested within the calling environment.
  2346.  
  2347.           In  our lexical  example, Write's  outer environment  is the
  2348.           environment  of  Test, where  "two"  is bound  to  its local
  2349.           symbol  S.  Had a binding  for S not been found in Test, the
  2350.           search  would have  continued outward  to the  next level of
  2351.           nesting - the global environment in this case.
  2352.  
  2353.                +---Write---+              +-------Global--------+
  2354.                |    S=?    |              |      S="three"      |
  2355.                |           |              |  +-----Test------+  |
  2356.                +---Check---+              |  |    S="two"    |  |
  2357.                |  S="one"  |              |  |  +--Check--+  |  |
  2358.                |           |              |  |  | S="one" |  |  |
  2359.                +---Test----+              |  |  +---------+  |  |
  2360.                |  S="two"  |              |  |               |  |
  2361.                |           |              |  |  +--Write--+  |  |
  2362.                +--Global---+              |  |  |   S=?   |  |  |
  2363.                | S="three" |              |  |  +---------+  |  |
  2364.                |           |              |  +---------------+  |
  2365.                +-----------+              +---------------------+
  2366.           DYNAMIC SCOPE CALL STACK   LEXICAL SCOPE NESTED ENVIRONMENTS
  2367.                 (AUTOLISP)                   (OTHER LANGUAGES)
  2368.  
  2369.  
  2370.  
  2371.           ALLY - A Lisp Analyzer      35     Version 2.0 User's Manual
  2372.  
  2373.  
  2374.  
  2375.  
  2376.  
  2377.  
  2378.  
  2379.  
  2380.  
  2381.  
  2382.  
  2383.           Now  that  we  have  some  understanding  of  how AutoLISP's
  2384.           dynamic  scoping  differs  from   the  more  common  lexical
  2385.           scoping,  we can examine  the reason  for using dynamic free
  2386.           variables.   All user defined functions will return a value,
  2387.           but consider those which need to set or effect more than one
  2388.           symbol outside the function.
  2389.  
  2390.           In AutoLISP you can pass arguments to user defined functions
  2391.           by  value  only.  Changing  the  formal  parameters  in  the
  2392.           function  itself does not  effect the actual parameters used
  2393.           in  the function  call.  There  is no  mechanism for passing
  2394.           parameters  by reference (variable parameters) such that the
  2395.           actual parameters outside the function can be changed.
  2396.  
  2397.           To work around this limitation, free variables are employed.
  2398.           Global variables can be used, but dynamic free variables are
  2399.           more  memory  efficient  since   they  are  transient  local
  2400.           variables at some point in the call stack.
  2401.  
  2402.           Although  dynamic free  variables can  be difficult to track
  2403.           manually,  the  ALLY  Analyzer  makes  them  much  easier to
  2404.           manage.    Dynamic  free   variables   can  be   a  powerful
  2405.           programming tool when used appropriately, don't be afraid to
  2406.           add them to your arsenal.
  2407.  
  2408.  
  2409.  
  2410.  
  2411.  
  2412.  
  2413.  
  2414.  
  2415.  
  2416.  
  2417.  
  2418.  
  2419.  
  2420.  
  2421.  
  2422.  
  2423.  
  2424.  
  2425.  
  2426.  
  2427.  
  2428.  
  2429.  
  2430.  
  2431.  
  2432.  
  2433.  
  2434.  
  2435.  
  2436.  
  2437.           ALLY - A Lisp Analyzer      36     Version 2.0 User's Manual
  2438.  
  2439.  
  2440.  
  2441.  
  2442.  
  2443.  
  2444.  
  2445.  
  2446.  
  2447.  
  2448.  
  2449.           WARNINGS REPORTED
  2450.           ------------------------------------------------------------
  2451.           ALLY  performs error  checking as  it analyzes your AutoLISP
  2452.           source.   One  of  the  most  common  errors  is  missing or
  2453.           misplaced  parentheses.  ALLY reports all parentheses errors
  2454.           with the line where it became apparent.
  2455.  
  2456.           The  Analyzer also checks  that quotations are closed on the
  2457.           same  line  they   are  opened,  since   this  is  often  an
  2458.           unintentional  error.  Some programmers insert hard carriage
  2459.           returns  in  quoted text  intentionally,  and  AutoLISP will
  2460.           accept  them.  ALLY warns  you when this condition is found,
  2461.           and  lists the line numbers so an inspection of the code can
  2462.           be  made.  Usually a  true quote error  will show in several
  2463.           successive  line numbers and  create one or more parentheses
  2464.           errors.
  2465.  
  2466.           Both  parentheses and quote  errors are unrecoverable - that
  2467.           is,  the analysis of the code beyond the point of error will
  2468.           be  inaccurate, since ALLY  cannot presume to know where the
  2469.           missing  punctuation should  go.  (HINT:  Should this occur,
  2470.           study  the report to  determine where  the analysis has gone
  2471.           awry.  This will help you to pinpoint the error).
  2472.  
  2473.           The source code is also checked for improper use of reserved
  2474.           symbol  and  functions  names.  For  instance,  an  error is
  2475.           reported  if the code sets  a value to the reserved symbol T
  2476.           (AutoLISP  reserves T  for the  Boolean TRUE, i.e. non-nil).
  2477.           ALLY  checks that reserved symbols and functions are neither
  2478.           set, defined, nor used in a function's argument list.
  2479.  
  2480.           ALLY  reports symbols  which  are declared  but  never used.
  2481.           Although  these  extraneous symbols  may  be  harmless, they
  2482.           should be removed to eliminate unnecessary memory overhead.
  2483.  
  2484.           Functions which are called but not defined with DEFUN in the
  2485.           analyzed  source code  are listed  as undefined functions in
  2486.           the  warning report.  A function listed by ALLY as undefined
  2487.           is  not necessarily  an error,  the function  may be defined
  2488.           elsewhere,  or set to  an another function,  or created as a
  2489.           list  without using  DEFUN (a  trick  we do  not recommend).
  2490.           These  occurrences, however, are  uncommon enough to warrant
  2491.           investigation if you are unsure.
  2492.  
  2493.           Another function warning occurs when two functions share the
  2494.           same  name  or a  function  is redefined.   This  warning is
  2495.           helpful  in  identifying  conflicts   between  one  or  more
  2496.           separate  AutoLISP  programs.  Sometimes  a  redefinition is
  2497.           intentional,  other  times   they  are  not.   Unintentional
  2498.           redefinitions  can cause unexpected results or lead to other
  2499.           problems.
  2500.  
  2501.  
  2502.  
  2503.           ALLY - A Lisp Analyzer      37     Version 2.0 User's Manual
  2504.  
  2505.  
  2506.  
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512.  
  2513.  
  2514.  
  2515.           ALLY  also  checks  for  certain  scope  errors  -  see  the
  2516.           preceding SYMBOL AND FUNCTION SCOPE section for a discussion
  2517.           of scope.  A warning is reported when a symbol is referenced
  2518.           in  a  scope in  which  it is  not  an argument  or  has not
  2519.           otherwise been assigned a value.
  2520.  
  2521.           A  sample report follows.  When multiple files are analyzed,
  2522.           the file name heads each section.
  2523.  
  2524.             C:\ACAD\MYFILE.LSP
  2525.               FUNCTIONS REDEFINED:
  2526.                 DoIt 44
  2527.               UNDEFINED FUNCTIONS:
  2528.                 itooa 36
  2529.               SYMBOLS REFERENCED BUT UNSET IN SCOPE:
  2530.                 i 12,15,16
  2531.               RESERVED SYMBOLS RESET OR REDEFINED:
  2532.                 max 49,53,57
  2533.                 t 11,16,17,29
  2534.               SYMBOLS DECLARED BUT NEVER USED:
  2535.                 r2 4
  2536.  
  2537.             C:\ACAD\TEST.LSP
  2538.               QUOTE NOT CLOSED ON LINE 4,5,6,7,8,9,10
  2539.               PARENTHESES NOT CLOSED ON LINE 10
  2540.  
  2541.           Other  types  of  errors can  be  found  by  studying ALLY's
  2542.           report.   For instance, it is  easy to spot a misspelling of
  2543.           one  of AutoLISP's built-in  functions, since the misspelled
  2544.           name will show up as an undefined function.
  2545.  
  2546.  
  2547.  
  2548.  
  2549.  
  2550.  
  2551.  
  2552.  
  2553.  
  2554.  
  2555.  
  2556.  
  2557.  
  2558.  
  2559.  
  2560.  
  2561.  
  2562.  
  2563.  
  2564.  
  2565.  
  2566.  
  2567.  
  2568.  
  2569.           ALLY - A Lisp Analyzer      38     Version 2.0 User's Manual
  2570.  
  2571.  
  2572.  
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578.  
  2579.  
  2580.  
  2581.           FILE HIERARCHY OF USER DEFINED FUNCTIONS
  2582.           ------------------------------------------------------------
  2583.           The  file hierarchy which ALLY generates is a tree structure
  2584.           of  all  user defined  functions,  including  lambdas.  This
  2585.           serves as a table of contents of your AutoLISP file.
  2586.  
  2587.           All  globally accessible functions  are shown as branches of
  2588.           the AutoLISP file. Nested functions are shown as branches of
  2589.           their  parent  functions.   Lambda  functions  are  numbered
  2590.           sequentially as encountered.
  2591.  
  2592.           The  line numbers of  the source file  for the beginning and
  2593.           ending  of each function are shown.  When multiple files are
  2594.           analyzed, they are shown as a continuation of the main trunk
  2595.           of the tree diagram.
  2596.  
  2597.           Here is a short example:
  2598.  
  2599.               File C:\ACAD\FILE1.LSP
  2600.                +--C:CMORE (1-107)
  2601.                |  +--PRNT (4-18)
  2602.                |  |  +--lambda#01 (11-12)
  2603.                |  +--lambda#02 (52-52)
  2604.               File C:\ACAD\FILE2.LSP
  2605.                +--DRWLIN (1-32)
  2606.                   +--lambda#03 (17-18)
  2607.  
  2608.           Use  this report to determine if a function is nested and to
  2609.           quickly locate its position in the file.
  2610.  
  2611.  
  2612.  
  2613.  
  2614.  
  2615.  
  2616.  
  2617.  
  2618.  
  2619.  
  2620.  
  2621.  
  2622.  
  2623.  
  2624.  
  2625.  
  2626.  
  2627.  
  2628.  
  2629.  
  2630.  
  2631.  
  2632.  
  2633.  
  2634.  
  2635.           ALLY - A Lisp Analyzer      39     Version 2.0 User's Manual
  2636.  
  2637.  
  2638.  
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644.  
  2645.  
  2646.  
  2647.           FUNCTION CALL HIERARCHY - DYNAMIC SCOPE
  2648.           ------------------------------------------------------------
  2649.           The  function call  hierarchy generated  by  ALLY is  a tree
  2650.           structure  of all  called or  user defined  functions.  This
  2651.           tree  diagram illustrates the dynamic scope and dependencies
  2652.           of the analyzed functions.
  2653.  
  2654.           The  global environment is  the root of the tree.  Branching
  2655.           off  the main trunk  are all global  functions which are not
  2656.           specifically  called by another function. Each function call
  2657.           found  produces a function  branch off of its calling parent
  2658.           function.   If a function is  called by more than one parent
  2659.           function, it will be reproduced as a branch for each parent.
  2660.  
  2661.           Functions are arranged alphabetically along common branches.
  2662.           Branches of functions which call themselves are truncated at
  2663.           the  first recursion and marked with three periods following
  2664.           the  function name.  Deep  recursion, or circular calls with
  2665.           intervening functions are illustrated likewise.
  2666.  
  2667.           The following example illustrates a case where one function,
  2668.           DRWLIN,  is being  called at  different levels,  and another
  2669.           function, PRNT, recursively calls itself.
  2670.  
  2671.               global
  2672.                +--C:CMORE
  2673.                |  +--DRWLIN
  2674.                |  |  +--lambda#03
  2675.                |  +--lambda#02
  2676.                |  +--PRNT
  2677.                |     +--DRWLIN
  2678.                |     |  +--lambda#03
  2679.                |     +--lambda#01
  2680.                |     +--PRNT...
  2681.                +--C:XLINE
  2682.                   +--RUBLIN
  2683.                      +--lambda#04
  2684.  
  2685.           To  determine  a  function's  hierarchy,  follow  its branch
  2686.           inward to the root.   To determine its dependencies,  follow
  2687.           its branches outward.
  2688.  
  2689.  
  2690.  
  2691.  
  2692.  
  2693.  
  2694.  
  2695.  
  2696.  
  2697.  
  2698.  
  2699.  
  2700.  
  2701.           ALLY - A Lisp Analyzer      40     Version 2.0 User's Manual
  2702.  
  2703.  
  2704.  
  2705.  
  2706.  
  2707.  
  2708.  
  2709.  
  2710.  
  2711.  
  2712.  
  2713.           CROSS-REFERENCE OF USER DEFINED FUNCTIONS
  2714.           ------------------------------------------------------------
  2715.           In  this section, all  user defined  functions are listed in
  2716.           alphabetical  order.  Each function  has  a  separate cross-
  2717.           reference for the parent functions and line numbers in which
  2718.           it  is declared, called,  defined, referenced, and set.  The
  2719.           scope  of a  function is  determined by  where and  if it is
  2720.           declared  (see the  preceding DECLARATIONS  AND SYMBOL SCOPE
  2721.           section for more details).
  2722.  
  2723.           A list of symbols declared by the function follows the usage
  2724.           report,  and lastly, a list  of symbols used directly by the
  2725.           function is shown.  Keep in mind that some apparently unused
  2726.           symbols  may  have been  declared  for use  as  dynamic free
  2727.           variables in a called function.  Take a look at the warnings
  2728.           report  and the cross reference of the symbol in question to
  2729.           determine if it is truly extraneous.
  2730.  
  2731.           Here is a sample listing of an analysis of a single file.
  2732.  
  2733.               lambda#01
  2734.                 def in PRNT 11
  2735.  
  2736.               PRNT
  2737.                 dec in C:CMORE 1
  2738.                 def in C:CMORE 4
  2739.                 cal in C:CMORE 39,44
  2740.                 decs BSET
  2741.                 uses a2 BSET pt1 i1 i2 xdata
  2742.  
  2743.           When multiple files are analyzed, the file name precedes the
  2744.           parent function names for each usage as in this example.
  2745.  
  2746.               DRWLIN
  2747.                 undeclared (global)
  2748.                 def in FILE2 (global) 1
  2749.                 cal in FILE1 PRNT 12
  2750.                 cal in FILE1 C:CMORE 89,92
  2751.                 decs ss1
  2752.                 uses ang1 pt1 pt2 ss1
  2753.  
  2754.  
  2755.  
  2756.  
  2757.  
  2758.  
  2759.  
  2760.  
  2761.  
  2762.  
  2763.  
  2764.  
  2765.  
  2766.  
  2767.           ALLY - A Lisp Analyzer      41     Version 2.0 User's Manual
  2768.  
  2769.  
  2770.  
  2771.  
  2772.  
  2773.  
  2774.  
  2775.  
  2776.  
  2777.  
  2778.  
  2779.           CROSS-REFERENCE OF USER DEFINED SYMBOLS
  2780.           ------------------------------------------------------------
  2781.           User  defined symbols  are those  not explicitly  defined as
  2782.           functions  (with  DEFUN  statements)  and  not  belonging to
  2783.           AutoLISP's  reserved subr and symbol set.  These symbols are
  2784.           listed  in alphabetical  order.  Each  symbol has a separate
  2785.           cross-reference for the parent functions and line numbers in
  2786.           which it is declared, referenced and set.
  2787.  
  2788.           The  symbol's scope  is  determined by  where  and if  it is
  2789.           declared  (see the  preceding DECLARATIONS  AND SYMBOL SCOPE
  2790.           section).  It is common to have duplicate symbol names, each
  2791.           declared within and belonging to different functions.  Using
  2792.           dynamic  scoping  rules,  ALLY   properly  treats  these  as
  2793.           separate and distinct symbols.
  2794.  
  2795.           A  sample symbol listing  follows.  The format of the cross-
  2796.           reference  is similar to  the function report section.  Note
  2797.           that  two unrelated symbols share the name BSET, a perfectly
  2798.           acceptable practice.
  2799.  
  2800.               bset
  2801.                 dec in C:CMORE 1
  2802.                 set in C:CMORE 89
  2803.                 ref in C:CMORE 99
  2804.  
  2805.               bset
  2806.                 dec in PRNT 4
  2807.                 set in PRNT 12
  2808.                 ref in PRNT 16
  2809.  
  2810.           Like  user  defined  functions,   when  multiple  files  are
  2811.           analyzed the file name precedes the parent function names of
  2812.           each symbol usage.
  2813.  
  2814.               edat
  2815.                 dec in FILE1 C:CMORE 1
  2816.                 ref in FILE1 lambda#1 5
  2817.                 set in FILE1 C:CMORE 29,36,50,59,68,89,94
  2818.                 ref in FILE1 C:CMORE 31,32,36,54,55,56,71,72,90,
  2819.                   92,95
  2820.                 ref in FILE2 DRWLIN 12,17
  2821.  
  2822.               ral
  2823.                 dec in FILE2 DRWLIN 1
  2824.                 ref in FILE2 DRWLIN 8
  2825.  
  2826.  
  2827.  
  2828.  
  2829.  
  2830.  
  2831.  
  2832.  
  2833.           ALLY - A Lisp Analyzer      42     Version 2.0 User's Manual
  2834.  
  2835.  
  2836.  
  2837.  
  2838.  
  2839.  
  2840.  
  2841.  
  2842.  
  2843.  
  2844.  
  2845.           CROSS-REFERENCE OF RESERVED LISP SUBRS AND SYMBOLS
  2846.           ------------------------------------------------------------
  2847.           This  optional section of  ALLY's report will alphabetically
  2848.           list  AutoLISP  reserved  subrs  and  symbols  used  by  the
  2849.           analyzed  file.  Each reserved  symbol has a separate cross-
  2850.           reference for the parent functions and line numbers in which
  2851.           it is referenced, called or set.
  2852.  
  2853.           The  constants pi,  T, and  nil  should only  be referenced,
  2854.           *error*  can be set,  and generally  all remaining subrs are
  2855.           only to be called.  A short sample follows.
  2856.  
  2857.               1+
  2858.                 cal in PRNT 18
  2859.                 cal in C:CMORE 42,43,89
  2860.  
  2861.               cdr
  2862.                 cal in lambda#1 5
  2863.                 cal in PRNT 6,13
  2864.                 cal in C:CMORE 29,31,36,54,55,65,68,71,72,79,90
  2865.  
  2866.  
  2867.  
  2868.  
  2869.  
  2870.  
  2871.  
  2872.  
  2873.  
  2874.  
  2875.  
  2876.  
  2877.  
  2878.  
  2879.  
  2880.  
  2881.  
  2882.  
  2883.  
  2884.  
  2885.  
  2886.  
  2887.  
  2888.  
  2889.  
  2890.  
  2891.  
  2892.  
  2893.  
  2894.  
  2895.  
  2896.  
  2897.  
  2898.  
  2899.           ALLY - A Lisp Analyzer      43     Version 2.0 User's Manual
  2900.  
  2901.  
  2902.  
  2903.  
  2904.  
  2905.  
  2906.  
  2907.  
  2908.  
  2909.  
  2910.  
  2911.           PROGRAM LISTING
  2912.           ------------------------------------------------------------
  2913.           This section of the report contains a source listing of each
  2914.           AutoLISP file analyzed.  ALLY numbers each line of the files
  2915.           for the purpose of cross-referencing functions and symbols.
  2916.  
  2917.           Embedded Tabs (ASCII 9) are expanded to the number of spaces
  2918.           set  in the ALLY  Workbench (the default  is 8 spaces).  All
  2919.           other  control characters (ASCII 0 to 31) are represented by
  2920.           a carat symbol followed by the control letter.  For example,
  2921.           a  backspace character (ASCII 8) is displayed and printed as
  2922.           ^H.   This allows  you to  identify the  inclusion of any of
  2923.           these  normally unprintable characters in the file.  Control
  2924.           characters  are  sometimes included  intentionally,  but can
  2925.           occur  from  using  a  word  processor  in  its  proprietary
  2926.           document  mode rather than  ASCII mode.   Appendix A of this
  2927.           manual  contains  an  ASCII table  which  lists  the control
  2928.           characters.
  2929.  
  2930.           The  listing is formatted to the column width you specify in
  2931.           the ALLY Workbench.  Lines whose length exceed the specified
  2932.           page  width  are  broken  at  the  nearest  delimiter.   The
  2933.           remaining  portion of  the line  is wrapped underneath.  For
  2934.           better  readability, the wrapped  portion is indented to the
  2935.           same  column  of indentation  as  the line  above.   This is
  2936.           illustrated by line number 17 in the sample below.
  2937.  
  2938.             16  (defun *error* (str1)
  2939.             17     (if (and str1 (/= str1 "console break") (/=
  2940.                    str1 "Function canceled"))
  2941.             18        (prompt (strcat "\n^GError: " str1))
  2942.             19     )
  2943.             20     (grtext)
  2944.             21     (princ)
  2945.             22  )
  2946.  
  2947.           Note  the  ^G on  line  18  above.  It  is  an  embedded BEL
  2948.           character  (ASCII 7)  to beep  the computer's  speaker (this
  2949.           method  of beeping, incidentally,  is not effective with all
  2950.           hardware).
  2951.  
  2952.  
  2953.  
  2954.  
  2955.  
  2956.  
  2957.  
  2958.  
  2959.  
  2960.  
  2961.  
  2962.  
  2963.  
  2964.  
  2965.           ALLY - A Lisp Analyzer      44     Version 2.0 User's Manual
  2966.  
  2967.  
  2968.  
  2969.  
  2970.  
  2971.  
  2972.  
  2973.  
  2974.  
  2975.  
  2976.  
  2977.           ANALYZER SCREEN OUTPUT
  2978.           ------------------------------------------------------------
  2979.           When  you choose to send  the report to screen, the Analyzer
  2980.           simply redirects its normal printer/file write operations to
  2981.           the console device.  Because there is no disk or printer I/O
  2982.           involved, you get the report fast.  The downside is that due
  2983.           to  the  interception  method  employed,  you  cannot cursor
  2984.           backwards to see text that has scrolled or paged off screen.
  2985.           If  you need  greater flexibility,  send the  report to your
  2986.           editor or browser instead.
  2987.  
  2988.           From  Setup's Execution  Options  screen, you  can configure
  2989.           ALLY to use 43-line EGA or 50-line VGA display modes for the
  2990.           screen  output.  Here is a summary of the commands available
  2991.           with report output to screen.
  2992.  
  2993.           [A] or [Esc] Aborts browsing and returns the Workbench.
  2994.  
  2995.           [Down] ..... Cursor  key,  displays  the  next  line  of the
  2996.                        report.
  2997.  
  2998.           [PgDn] ..... Displays the next screen page of the report.
  2999.  
  3000.           [N] ........ Nonstop.  The report scrolls continuously until
  3001.                        the end of file or a key is pressed.
  3002.  
  3003.           [MouseRight] The  right mouse button is the same as pressing
  3004.                        the [Down] cursor.
  3005.  
  3006.           [MouseBoth]  Both   mouse  buttons   pressed  simultaneously
  3007.                        together is the same as pressing [Esc].
  3008.  
  3009.           [MouseLeft]  The  left mouse button  is the same as pressing
  3010.                        the [PgDn] key.
  3011.  
  3012.  
  3013.  
  3014.  
  3015.  
  3016.  
  3017.  
  3018.  
  3019.  
  3020.  
  3021.  
  3022.  
  3023.  
  3024.  
  3025.  
  3026.  
  3027.  
  3028.  
  3029.  
  3030.  
  3031.           ALLY - A Lisp Analyzer      45     Version 2.0 User's Manual
  3032.  
  3033.  
  3034.  
  3035.  
  3036.  
  3037.  
  3038.  
  3039.  
  3040.  
  3041.  
  3042.  
  3043.           ------------------------------------------------------------
  3044.                           PROBLEMS AND ERROR MESSAGES
  3045.           ------------------------------------------------------------
  3046.           Consult  this section  if  you are  having  problems running
  3047.           ALLY.
  3048.  
  3049.           PROBLEMS WITH ACAD.LSP OR ACAD.PGP
  3050.           ------------------------------------------------------------
  3051.           If  you have just installed ALLY and find that entering ALLY
  3052.           at  the AutoCAD  command prompt  yields no  results, inspect
  3053.           your ACAD.LSP and ACAD.PGP files to insure ALLY was actually
  3054.           installed.   A common  problem  is finding  two  ACAD.PGP or
  3055.           ACAD.LSP  files existing  in  different directories  on your
  3056.           system,  with AutoCAD using  the one without ALLY installed.
  3057.           Another   common   problem   occurs   when   AutoCAD's  ACAD
  3058.           environment  variable  is  not set  to  the  ALLY directory,
  3059.           and/or the ALLY! command in the ACAD.PGP file lacks a proper
  3060.           directory path to ALLYWB.
  3061.  
  3062.           The ALLY AutoLISP interface is so small, it is doubtful that
  3063.           you will ever experience a LISP related problem with it, but
  3064.           just in case, here are some of the things to look for.
  3065.  
  3066.           If  you are  using an older  version of  AutoCAD and see the
  3067.           message  "Insufficient memory -- AutoLISP disabled" when you
  3068.           execute  it, you probably  have too  many TSR (Terminate and
  3069.           stay  resident) programs loaded.  You will need to eliminate
  3070.           one or more of them if you wish to use AutoLISP programs.
  3071.  
  3072.           Should  you see  messages like  "insufficient node space" or
  3073.           "insufficient  string space" when trying to execute the ALLY
  3074.           AutoLISP interface, you have inadequate memory set aside for
  3075.           the  LISP programs you have  loaded.  In most cases this can
  3076.           be corrected by either:
  3077.  
  3078.             1) adding  a (vmon)  command to  the top  of your ACAD.LSP
  3079.                file,
  3080.             2) reconfiguring your LISPHEAP and LISPSTACK variables,
  3081.             3) using Extended AutoLISP (R10+ non-386 versions), or
  3082.             4) hardware permitting, upgrading to AutoCAD 386.
  3083.  
  3084.           Refer  to  your  AutoLISP  Programmer's  Reference  and your
  3085.           AutoCAD   Installation  and   Performance  Guide   for  more
  3086.           information on memory management.
  3087.  
  3088.           If  you have configured your ALLY installation to reset your
  3089.           digitizer/mouse driver after running ALLY, and the automatic
  3090.           LISP  file loading  routine fails,  it could  be one  of two
  3091.           things.
  3092.  
  3093.  
  3094.  
  3095.  
  3096.  
  3097.           ALLY - A Lisp Analyzer      46     Version 2.0 User's Manual
  3098.  
  3099.  
  3100.  
  3101.  
  3102.  
  3103.  
  3104.  
  3105.  
  3106.  
  3107.  
  3108.  
  3109.           One,  you have ALLYXM.SCR  in a directory  not pointed to by
  3110.           the  ACAD environment  variable (see  INSTALLATION), or two,
  3111.           the ALLYXM.SCR file needs to be edited to match your AutoCAD
  3112.           plotter driver.  If you have your AutoCAD plotter driver set
  3113.           to  "None", there  should be  no  spaces between  the Ctrl-C
  3114.           character  (ASCII 3, usually  displayed as  a heart) and the
  3115.           word  ALLOAD in  the second  line  of ALLYXM.SCR.   With any
  3116.           other plotter driver, there must be one space between Ctrl-C
  3117.           and ALLOAD.
  3118.  
  3119.           PROBLEMS WITH ALLY EXECUTABLE FILES
  3120.           ------------------------------------------------------------
  3121.           When you run ALLY from within AutoCAD, memory considerations
  3122.           sometimes  cause problems.  Insufficient memory problems can
  3123.           manifest themselves in several ways, but are usually easy to
  3124.           correct.   There are two  solutions we can  take.  One is to
  3125.           decrease  ALLY's memory  requirements by disabling features.
  3126.           The  other - and  more favorable -  approach is to make more
  3127.           memory  available to ALLY.  The method you use may depend on
  3128.           the exact problem and the AutoCAD version used.
  3129.  
  3130.           If  the ALLY  LISP routine  seems to  function but  the ALLY
  3131.           Workbench  will not  execute, you  should first  verify that
  3132.           your ACAD.PGP file includes the proper ALLY! command line as
  3133.           described  in  the  Installation section.   If  you  see the
  3134.           message  "bad command or file name", it may be that you need
  3135.           to add a path to ALLYWB.  If instead you see "EXEC failure",
  3136.           you need to increase the memory available to ALLY.
  3137.  
  3138.           The  ALLY Analyzer or  Checker may halt with an insufficient
  3139.           memory  message  when  analyzing  large  or  multiple files.
  3140.           Since  the ALLY  Analyzer  allocates memory  as  needed, the
  3141.           larger  the file, or  the more  files analyzed together, the
  3142.           more memory ALLY requires.  To correct this, either decrease
  3143.           ALLY's  memory requirements or make more memory available to
  3144.           ALLY.
  3145.  
  3146.           Another  potential  problem  is  your  Workbench  interfaced
  3147.           editor,  browser  or other  external  program  not executing
  3148.           properly.   Sometimes the  only indication  you may  have of
  3149.           this is a flash as the screen clears and is redrawn.  First,
  3150.           check  the ALLY  setup options  to see  that the  program is
  3151.           properly  installed with the correct path and name.  If this
  3152.           checks,  there  is  probably  insufficient  memory  for  the
  3153.           program,  and you will  need to  either substitute a smaller
  3154.           program or make more memory available to ALLY.
  3155.  
  3156.           If  your installation uses a non-386 version of AutoCAD, you
  3157.           can  make more  memory available  to ALLY  by increasing the
  3158.           memory  reserve for the ALLY! command in your ACAD.PGP file.
  3159.           The  INSTALLATION chapter  of  this manual  explains  how to
  3160.           change the memory reserve.
  3161.  
  3162.  
  3163.           ALLY - A Lisp Analyzer      47     Version 2.0 User's Manual
  3164.  
  3165.  
  3166.  
  3167.  
  3168.  
  3169.  
  3170.  
  3171.  
  3172.  
  3173.  
  3174.  
  3175.           In  AutoCAD  386  installations   using  the  Phar  Lap  DOS
  3176.           Extender,  you always get  the maximum  amount of memory for
  3177.           external  programs regardless of the number you place in the
  3178.           memory  reserve  field.   Memory managers  and  DOS  5.0 can
  3179.           increase    the   amount    of   base    memory   available.
  3180.           Unfortunately, there is about 200K which earlier versions of
  3181.           the DOS Extender does not release.
  3182.  
  3183.           There  are at least  two commercial applications designed to
  3184.           recover  memory from the DOS Extender, and one from Autodesk
  3185.           called  SHROOM  which is  shipped  with AutoCAD  386  R11 (a
  3186.           shareware  version of SHROOM  is available in the CompuServe
  3187.           ADESK forum).
  3188.  
  3189.           As  an  alternate  or additional  method  of  increasing the
  3190.           memory  released by the DOS Extender, Autodesk has a program
  3191.           called  NEWDX (also available  on CompuServe) which upgrades
  3192.           the  Phar Lap DOS Extender to a later version with a smaller
  3193.           kernel.
  3194.  
  3195.           To  lessen ALLY's  memory requirements,  you can disable the
  3196.           Call  Hierarchy, disable  the X-ref  Reserved option, and/or
  3197.           reduce   the  Read   Buffer  size.    You  rarely   need  to
  3198.           cross-reference  reserved symbols, but the Call Hierarchy is
  3199.           generally  too useful  to consider  disabling.  A large Read
  3200.           Buffer  lessens the memory  available for symbol storage and
  3201.           can  usually be  made smaller.   The only  use for  a buffer
  3202.           larger  than 1K is  to error  check Kelvinated or "squeezed"
  3203.           files, and their reports have limited usefulness.
  3204.  
  3205.           Lessening ALLY's memory requirements may not be enough - the
  3206.           best  solution is to increase the amount of memory available
  3207.           to  ALLY  using  one   of  the  methods  described  earlier.
  3208.           Remember, if these attempts to increase the available memory
  3209.           fail  or fall  short, you  still have  the option of running
  3210.           ALLY directly from DOS.
  3211.  
  3212.  
  3213.  
  3214.  
  3215.  
  3216.  
  3217.  
  3218.  
  3219.  
  3220.  
  3221.  
  3222.  
  3223.  
  3224.  
  3225.  
  3226.  
  3227.  
  3228.  
  3229.           ALLY - A Lisp Analyzer      48     Version 2.0 User's Manual
  3230.  
  3231.  
  3232.  
  3233.  
  3234.  
  3235.  
  3236.  
  3237.  
  3238.  
  3239.  
  3240.  
  3241.           ------------------------------------------------------------
  3242.                             APPENDIX A - ASCII TABLE
  3243.           ------------------------------------------------------------
  3244.  
  3245.              +----------------+-----------+-----------+-----------+
  3246.              | DEC  CTRL NAME | DEC  CHAR | DEC  CHAR | DEC  CHAR |
  3247.              +----------------+-----------+-----------+-----------+
  3248.              |  0   ^@   NUL  |  32       |  64   @   |  96   `   |
  3249.              |  1   ^A   SOH  |  33   !   |  65   A   |  97   a   |
  3250.              |  2   ^B   STX  |  34   "   |  66   B   |  98   b   |
  3251.              |  3   ^C   ETX  |  35   #   |  67   C   |  99   c   |
  3252.              |  4   ^D   EOT  |  36   $   |  68   D   | 100   d   |
  3253.              |  5   ^E   ENQ  |  37   %   |  69   E   | 101   e   |
  3254.              |  6   ^F   ACK  |  38   &   |  70   F   | 102   f   |
  3255.              |  7   ^G   BEL  |  39   '   |  71   G   | 103   g   |
  3256.              |  8   ^H   BS   |  40   (   |  72   H   | 104   h   |
  3257.              |  9   ^I   HT   |  41   )   |  73   I   | 105   i   |
  3258.              | 10   ^J   LF   |  42   *   |  74   J   | 106   j   |
  3259.              | 11   ^K   VT   |  43   +   |  75   K   | 107   k   |
  3260.              | 12   ^L   FF   |  44   ,   |  76   L   | 108   l   |
  3261.              | 13   ^M   CR   |  45   -   |  77   M   | 109   m   |
  3262.              | 14   ^N   SO   |  46   .   |  78   N   | 110   n   |
  3263.              | 15   ^O   SI   |  47   /   |  79   O   | 111   o   |
  3264.              | 16   ^P   DLE  |  48   0   |  80   P   | 112   p   |
  3265.              | 17   ^Q   DC1  |  49   1   |  81   Q   | 113   q   |
  3266.              | 18   ^R   DC2  |  50   2   |  82   R   | 114   r   |
  3267.              | 19   ^S   DC3  |  51   3   |  83   S   | 115   s   |
  3268.              | 20   ^T   DC4  |  52   4   |  84   T   | 116   t   |
  3269.              | 21   ^U   NAK  |  53   5   |  85   U   | 117   u   |
  3270.              | 22   ^V   SYN  |  54   6   |  86   V   | 118   v   |
  3271.              | 23   ^W   ETB  |  55   7   |  87   W   | 119   w   |
  3272.              | 24   ^X   CAN  |  56   8   |  88   X   | 120   x   |
  3273.              | 25   ^Y   EM   |  57   9   |  89   Y   | 121   y   |
  3274.              | 26   ^Z   SUB  |  58   :   |  90   Z   | 122   z   |
  3275.              | 27   ^[   ESC  |  59   ;   |  91   [   | 123   {   |
  3276.              | 28   ^\   FS   |  60   <   |  92   \   | 124   |   |
  3277.              | 29   ^]   GS   |  61   =   |  93   ]   | 125   }   |
  3278.              | 30   ^^   RS   |  62   >   |  94   ^   | 126   ~   |
  3279.              | 31   ^_   US   |  63   ?   |  95   _   | 127   DEL |
  3280.              +----------------+-----------+-----------+-----------+
  3281.  
  3282.  
  3283.  
  3284.  
  3285.  
  3286.  
  3287.  
  3288.  
  3289.  
  3290.  
  3291.  
  3292.  
  3293.  
  3294.  
  3295.           ALLY - A Lisp Analyzer      49     Version 2.0 User's Manual
  3296.  
  3297.  
  3298.  
  3299.  
  3300.  
  3301.  
  3302.  
  3303.  
  3304.  
  3305.  
  3306.  
  3307.           ------------------------------------------------------------
  3308.                          APPENDIX B - PRINTER COMMANDS
  3309.           ------------------------------------------------------------
  3310.  
  3311.           The following is a table of printer control codes and escape
  3312.           sequences  used  by  IBM   and  Epson  nine-wire  dot-matrix
  3313.           printers,  and compatibles such as Panasonic.  This is not a
  3314.           full  command listing, just  a few you  might find useful to
  3315.           execute  before  and  after  printing  the  ALLY  Analyzer's
  3316.           report.
  3317.  
  3318.           Use  decimal ASCII codes  as shown  below for ALLY's printer
  3319.           setup  and reset strings.   To send multiple commands in the
  3320.           strings,  simply chain  them together,  separating them with
  3321.           commas.   For  example, to  turn  skip-perforation  off, set
  3322.           compressed  mode and set 1/8 inch line spacing you would use
  3323.           the following string:  27,79,15,27,48
  3324.  
  3325.           Where  command   functions  differ  for   the  three  brands
  3326.           mentioned,  the  brand  identification  is  shown  in square
  3327.           brackets: I=IBM, E=Epson, P=Panasonic.  Some of the commands
  3328.           will  function only  when certain  printer modes or switches
  3329.           are set.  Although many character modes have both on and off
  3330.           commands,  others have no off  command - they are turned off
  3331.           when  another mode is selected.  Consult your printer manual
  3332.           for  more details  and commands  specific to  your hardware.
  3333.           The  ASCII table in Appendix A will help you translate other
  3334.           commands into the decimal ASCII strings required by ALLY.
  3335.  
  3336.           ------------------------------------------------------------
  3337.           Code or    Decimal  Printer
  3338.           Sequence   ASCII    Function
  3339.           ------------------------------------------------------------
  3340.           FF  12     Form feed (to next top of form)
  3341.           SI  15     Compressed mode on
  3342.           DC2 18     Compressed mode off
  3343.           ESC+SI     27,15    Compressed mode on [E, P]
  3344.           ESC+0      27,48    Set 1/8 inch line spacing
  3345.           ESC+1      27,49    Set 7/72 inch line spacing
  3346.           ESC+2      27,50    Set 1/6 inch line spacing (standard)
  3347.           ESC+3+n    27,51,n  Set n/216 inch line spacing
  3348.                               (example: 27,51,21 sets 21/216"spacing)
  3349.           ESC+4      27,52    Italic mode on [E, P]
  3350.           ESC+5      27,53    Italic mode off [E, P]
  3351.           ESC+@      27,64    Initialize printer [E, P]
  3352.           ESC+E      27,69    Emphasized mode on
  3353.           ESC+F      27,70    Emphasized mode off
  3354.           ESC+G      27,71    Double-strike mode on
  3355.  
  3356.  
  3357.  
  3358.  
  3359.  
  3360.  
  3361.           ALLY - A Lisp Analyzer      50     Version 2.0 User's Manual
  3362.  
  3363.  
  3364.  
  3365.  
  3366.  
  3367.  
  3368.  
  3369.  
  3370.  
  3371.  
  3372.  
  3373.           ------------------------------------------------------------
  3374.           Code or    Decimal  Printer
  3375.           Sequence   ASCII    Function
  3376.           ------------------------------------------------------------
  3377.           ESC+H      27,72    Double-strike mode off
  3378.           ESC+M      27,77    Elite pitch on
  3379.           ESC+N+n    27,78,n  Skip n lines over perforation
  3380.                               (example: 27,78,8 skips 8 lines)
  3381.           ESC+O      27,79    Skip-perforation off
  3382.           ESC+P      27,80    Pica pitch on [I, P]
  3383.                               Elite pitch off [E]
  3384.           ESC+n      27,110   Set letter quality print mode [P]
  3385.           ESC+z      27,122   Select letter quality/draft [E, I]
  3386.  
  3387.  
  3388.  
  3389.  
  3390.  
  3391.  
  3392.  
  3393.  
  3394.  
  3395.  
  3396.  
  3397.  
  3398.  
  3399.  
  3400.  
  3401.  
  3402.  
  3403.  
  3404.  
  3405.  
  3406.  
  3407.  
  3408.  
  3409.  
  3410.  
  3411.  
  3412.  
  3413.  
  3414.  
  3415.  
  3416.  
  3417.  
  3418.  
  3419.  
  3420.  
  3421.  
  3422.  
  3423.  
  3424.  
  3425.  
  3426.  
  3427.           ALLY - A Lisp Analyzer      51     Version 2.0 User's Manual
  3428.  
  3429.  
  3430.  
  3431.  
  3432.  
  3433.  
  3434.  
  3435.  
  3436.  
  3437.  
  3438.  
  3439.           ------------------------------------------------------------
  3440.                                      INDEX
  3441.           ------------------------------------------------------------
  3442.           Abort .................................... 8, 26, 29, 31, 45
  3443.           ACAD.LSP .......................................... 4, 5, 46
  3444.           ACAD.PGP ....................................... 4-6, 46, 47
  3445.           ACADLIMEM ................................................ 5
  3446.           ALLY.BAT ................................................. 4
  3447.           ALLY.LSP .............................................. 4, 5
  3448.           Alias (filename) ................................ 12, 26, 27
  3449.           ALLYAN.EXE ............................................... 4
  3450.           ALLYCK.EXE ............................................... 4
  3451.           ALLYSU.EXE ............................................... 4
  3452.           ALLYWB.EXE ............................................... 4
  3453.           ALLYXM.SCR ........................................... 4, 47
  3454.           Ampersand ........................................... 11, 27
  3455.           Analyze [F5] or [Alt-A] command ..................... 26, 31
  3456.           Analyzer ................ 13, 15, 17, 19, 21, 26, 31, 45, 47
  3457.           Appendixes .......................................... 49, 50
  3458.           Arguments ........................................... 33, 36
  3459.           ASCII ............................ 12, 16, 19, 20, 29, 49-50
  3460.           ASCII lines ............................................. 16
  3461.           Asterisk ............................................ 12, 27
  3462.           AutoCAD ................................. 4-6, 21, 28, 46-48
  3463.           AutoCAD 386 ................................... 5, 6, 46, 48
  3464.           AUTOEXEC.BAT ......................................... 5, 11
  3465.           AutoLISP .. 3, 12, 15, 16, 21, 22, 26, 31, 33-39, 43, 44, 46
  3466.           Bottom margin ........................................... 14
  3467.           Browse [F7] or [Alt-B] command ...................... 11, 26
  3468.           Browser ............................. 11, 17, 22, 26, 29, 45
  3469.           Call, Called ................. 15, 33-35, 37, 40, 41, 43, 48
  3470.           CFIG386.EXE .............................................. 5
  3471.           CFIGPHAR.EXE ............................................. 5
  3472.           Check [F4] or [Alt-C] command ....................... 25, 29
  3473.           Checker ..................................... 17, 18, 25, 29
  3474.           Control-End, Control-Home ................................ 8
  3475.           Control-Left, Control-Right .............................. 7
  3476.           Cross-reference .......................... 15, 31, 41-43, 48
  3477.           Data entry editing keys ................................ 7-9
  3478.           Declaration .......................................... 33-36
  3479.           Define Page ......................................... 10, 13
  3480.           Destination ................................. 21, 22, 24, 31
  3481.           Directory .................. 4, 5, 11, 21-24, 27, 32, 46, 47
  3482.           Disk, Disk drive ............................. 4, 12, 24, 27
  3483.           Double space ............................................ 16
  3484.           Dynamic scoping, variables ................... 15, 33-36, 40
  3485.           Edit [F8] or [Alt-E] command ........................ 11, 26
  3486.           Editor .................... 3, 4, 11, 12, 18, 21, 22, 26, 47
  3487.           Errors ...................................... 29, 31, 37, 38
  3488.           Execution Options ................................... 10, 17
  3489.           Exit [F10] or [Alt-X] command ..................... 7, 9, 28
  3490.           Expanded memory, EMS ............................. 5, 12, 27
  3491.  
  3492.  
  3493.           ALLY - A Lisp Analyzer      52     Version 2.0 User's Manual
  3494.  
  3495.  
  3496.  
  3497.  
  3498.  
  3499.  
  3500.  
  3501.  
  3502.  
  3503.  
  3504.  
  3505.           External programs ................... 11, 21, 25, 28, 47, 48
  3506.           File [F3] or [Alt-F] command ........................ 23, 25
  3507.           File/Destination ........................................ 21
  3508.           File directory ....................................... 21-24
  3509.           File search mask ........................................ 21
  3510.           File selection .......................................... 23
  3511.           File sort method .................................... 17, 23
  3512.           Form feeds .............................................. 16
  3513.           Function call ............................... 33, 34, 36, 40
  3514.           Function keys ........................................... 25
  3515.           Global symbols ............................... 33-36, 40, 41
  3516.           Help [F1] or [Alt-H] command ............................ 25
  3517.           Hierarchy ................................... 15, 39, 40, 48
  3518.           Hot spots ............................................ 9, 23
  3519.           Installation ............................................. 4
  3520.           Left bracket ........................................ 12, 27
  3521.           Left margin ............................................. 13
  3522.           Lisp file name ....................................... 22-24
  3523.           LISPHEAP ................................................ 46
  3524.           LISPSTACK ............................................... 46
  3525.           MAXVCPI switch ........................................... 5
  3526.           Memory ............................. 5, 6, 33, 36, 37, 46-48
  3527.           Mono colors ............................................. 18
  3528.           Mouse ............................. 8, 9, 18, 23, 30, 45, 46
  3529.           Multiple files ...................... 28, 32, 39, 41, 42, 47
  3530.           Nested functions ................................ 33, 35, 39
  3531.           Opt(tions) [F2] or [Alt-O] command .................. 10, 25
  3532.           Page breaks ............................................. 16
  3533.           Page length ......................................... 13, 14
  3534.           Page width .......................................... 13, 44
  3535.           Parameters .................................. 11, 26, 27, 36
  3536.           Parentheses, Parentheses errors ............. 18, 29, 31, 37
  3537.           Path .................. 4, 5, 11, 12, 21, 22, 27, 32, 46, 47
  3538.           Peek [F3] or [Alt-P] command ............................ 24
  3539.           Phar Lap DOS Extender ................................... 48
  3540.           Printer ......................... 13, 16, 19, 20, 22, 50, 51
  3541.           Printer Options ..................................... 10, 19
  3542.           Printer port ............................................ 19
  3543.           Printer reset ....................................... 19, 20
  3544.           Printer setup ............................... 10, 19, 20, 50
  3545.           Problems ..................................... 6, 37, 46, 47
  3546.           Program listing ..................................... 16, 44
  3547.           Protected AutoLISP files ............................. 5, 26
  3548.           Question mark ................................... 11, 12, 27
  3549.           Quote errors ........................................ 29, 37
  3550.           Report ....................... 12, 15, 21, 22, 24, 26, 31-44
  3551.           Report directory ........................................ 22
  3552.           Report file name .................................... 12, 22
  3553.           Report options ...................................... 10, 15
  3554.           Reserved LISP subrs and symbols ......... 15, 33, 37, 43, 48
  3555.           Right bracket ....................................... 12, 27
  3556.           Right margin ............................................ 13
  3557.  
  3558.  
  3559.           ALLY - A Lisp Analyzer      53     Version 2.0 User's Manual
  3560.  
  3561.  
  3562.  
  3563.  
  3564.  
  3565.  
  3566.  
  3567.  
  3568.  
  3569.  
  3570.  
  3571.           Scope ............................. 15, 31, 33-36, 38, 40-42
  3572.           Scroll bar ........................................... 9, 23
  3573.           Setup options ....................................... 10, 25
  3574.           Shell [F9] or [Alt-S] command ........................... 27
  3575.           SHROOM program .......................................... 48
  3576.           Slider box ........................................... 9, 23
  3577.           Sort [F9] or [Alt-S] command ............................ 23
  3578.           Sorting files ....................................... 17, 23
  3579.           Subdirectories ...................................... 23, 24
  3580.           Swap, Swap file .................................. 5, 12, 27
  3581.           Symbols ...................... 12, 15, 27, 31, 33-36, 42, 43
  3582.           Tab characters .................................. 17, 29, 44
  3583.           Top margin .............................................. 14
  3584.           TSR ............................................. 12, 28, 46
  3585.           Unprintable characters .................................. 44
  3586.           User defined functions .............................. 39, 41
  3587.           User defined symbols .................................... 42
  3588.           Warnings ................................................ 37
  3589.           Workbench ............................................ 21-28
  3590.           Workbench commands ...................................... 25
  3591.           X-ref reserved .................................. 15, 43, 48
  3592.  
  3593.  
  3594.  
  3595.  
  3596.  
  3597.  
  3598.  
  3599.  
  3600.  
  3601.  
  3602.  
  3603.  
  3604.  
  3605.  
  3606.  
  3607.  
  3608.  
  3609.  
  3610.  
  3611.  
  3612.  
  3613.  
  3614.  
  3615.  
  3616.  
  3617.  
  3618.  
  3619.  
  3620.  
  3621.  
  3622.  
  3623.  
  3624.  
  3625.           ALLY - A Lisp Analyzer      54     Version 2.0 User's Manual
  3626.  
  3627.  
  3628.  
  3629.  
  3630.  
  3631.