home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / CLIPPER / MISC / ALLY211.ZIP / ALLY.DOC next >
Encoding:
Text File  |  1992-09-16  |  127.4 KB  |  3,237 lines

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