* src/SDCCsymt.c (initCSupport): fix compile warning on Cygwin
[fw/sdcc] / debugger / mcs51 / cmd.c
index 89dfe6a5d4cfb2b520638dbde407bbd27f9b692b..d56b4f1e1f7b7e6371dd3c15e050d8aca98f0a20 100644 (file)
 #include "break.h"
 #include "cmd.h"
 
-int listLines = 10;
+/* default number of lines to list out */
+int listLines = 16;
+
+/* mainly used to retain a reference to the active module being
+   listed.  May be used as a general context for other commands if
+   no better context is available */
+static module *list_mod = NULL;
+
 EXTERN_STACK_DCL(callStack,function *,1024);
 
+#if defined(__APPLE__) && defined(__MACH__)
 static char *copying=
-"                   GNU GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-^L
-                    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The \"Program\", below,
-refers to any such program or work, and a \"work based on the Program\"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term \"modification\".)  Each licensee is addressed as \"you\".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-^L
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and \"any
-later version\", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-";
+{" GNU GENERAL PUBLIC LICENSE Version 2"};
+static char *warranty=
+{" NO WARRANTY"};
+#else
+static char *copying=
+"                   GNU GENERAL PUBLIC LICENSE\n"
+"                       Version 2, June 1991\n"
+"\n"
+" Copyright (C) 1989, 1991 Free Software Foundation, Inc.\n"
+" 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA\n"
+" Everyone is permitted to copy and distribute verbatim copies\n"
+" of this license document, but changing it is not allowed.\n"
+"\n"
+"                            Preamble\n"
+"\n"
+"  The licenses for most software are designed to take away your\n"
+"freedom to share and change it.  By contrast, the GNU General Public\n"
+"License is intended to guarantee your freedom to share and change free\n"
+"software--to make sure the software is free for all its users.  This\n"
+"General Public License applies to most of the Free Software\n"
+"Foundation's software and to any other program whose authors commit to\n"
+"using it.  (Some other Free Software Foundation software is covered by\n"
+"the GNU Library General Public License instead.)  You can apply it to\n"
+"your programs, too.\n"
+"\n"
+"  When we speak of free software, we are referring to freedom, not\n"
+"price.  Our General Public Licenses are designed to make sure that you\n"
+"have the freedom to distribute copies of free software (and charge for\n"
+"this service if you wish), that you receive source code or can get it\n"
+"if you want it, that you can change the software or use pieces of it\n"
+"in new free programs; and that you know you can do these things.\n"
+"\n"
+"  To protect your rights, we need to make restrictions that forbid\n"
+"anyone to deny you these rights or to ask you to surrender the rights.\n"
+"These restrictions translate to certain responsibilities for you if you\n"
+"distribute copies of the software, or if you modify it.\n"
+"\n"
+"  For example, if you distribute copies of such a program, whether\n"
+"gratis or for a fee, you must give the recipients all the rights that\n"
+"you have.  You must make sure that they, too, receive or can get the\n"
+"source code.  And you must show them these terms so they know their\n"
+"rights.\n"
+"\n"
+"  We protect your rights with two steps: (1) copyright the software, and\n"
+"(2) offer you this license which gives you legal permission to copy,\n"
+"distribute and/or modify the software.\n"
+"\n"
+"  Also, for each author's protection and ours, we want to make certain\n"
+"that everyone understands that there is no warranty for this free\n"
+"software.  If the software is modified by someone else and passed on, we\n"
+"want its recipients to know that what they have is not the original, so\n"
+"that any problems introduced by others will not reflect on the original\n"
+"authors' reputations.\n"
+"\n"
+"  Finally, any free program is threatened constantly by software\n"
+"patents.  We wish to avoid the danger that redistributors of a free\n"
+"program will individually obtain patent licenses, in effect making the\n"
+"program proprietary.  To prevent this, we have made it clear that any\n"
+"patent must be licensed for everyone's free use or not licensed at all.\n"
+"\n"
+"  The precise terms and conditions for copying, distribution and\n"
+"modification follow.\n"
+"^L\n"
+"                    GNU GENERAL PUBLIC LICENSE\n"
+"   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n"
+"\n"
+"  0. This License applies to any program or other work which contains\n"
+"a notice placed by the copyright holder saying it may be distributed\n"
+"under the terms of this General Public License.  The \"Program\", below,\n"
+"refers to any such program or work, and a \"work based on the Program\"\n"
+"means either the Program or any derivative work under copyright law:\n"
+"that is to say, a work containing the Program or a portion of it,\n"
+"either verbatim or with modifications and/or translated into another\n"
+"language.  (Hereinafter, translation is included without limitation in\n"
+"the term \"modification\".)  Each licensee is addressed as \"you\".\n"
+"\n"
+"Activities other than copying, distribution and modification are not\n"
+"covered by this License; they are outside its scope.  The act of\n"
+"running the Program is not restricted, and the output from the Program\n"
+"is covered only if its contents constitute a work based on the\n"
+"Program (independent of having been made by running the Program).\n"
+"Whether that is true depends on what the Program does.\n"
+"\n"
+"  1. You may copy and distribute verbatim copies of the Program's\n"
+"source code as you receive it, in any medium, provided that you\n"
+"conspicuously and appropriately publish on each copy an appropriate\n"
+"copyright notice and disclaimer of warranty; keep intact all the\n"
+"notices that refer to this License and to the absence of any warranty;\n"
+"and give any other recipients of the Program a copy of this License\n"
+"along with the Program.\n"
+"\n"
+"You may charge a fee for the physical act of transferring a copy, and\n"
+"you may at your option offer warranty protection in exchange for a fee.\n"
+"\n"
+"  2. You may modify your copy or copies of the Program or any portion\n"
+"of it, thus forming a work based on the Program, and copy and\n"
+"distribute such modifications or work under the terms of Section 1\n"
+"above, provided that you also meet all of these conditions:\n"
+"\n"
+"    a) You must cause the modified files to carry prominent notices\n"
+"    stating that you changed the files and the date of any change.\n"
+"\n"
+"    b) You must cause any work that you distribute or publish, that in\n"
+"    whole or in part contains or is derived from the Program or any\n"
+"    part thereof, to be licensed as a whole at no charge to all third\n"
+"    parties under the terms of this License.\n"
+"\n"
+"    c) If the modified program normally reads commands interactively\n"
+"    when run, you must cause it, when started running for such\n"
+"    interactive use in the most ordinary way, to print or display an\n"
+"    announcement including an appropriate copyright notice and a\n"
+"    notice that there is no warranty (or else, saying that you provide\n"
+"    a warranty) and that users may redistribute the program under\n"
+"    these conditions, and telling the user how to view a copy of this\n"
+"    License.  (Exception: if the Program itself is interactive but\n"
+"    does not normally print such an announcement, your work based on\n"
+"    the Program is not required to print an announcement.)\n"
+"\n"
+"These requirements apply to the modified work as a whole.  If\n"
+"identifiable sections of that work are not derived from the Program,\n"
+"and can be reasonably considered independent and separate works in\n"
+"themselves, then this License, and its terms, do not apply to those\n"
+"sections when you distribute them as separate works.  But when you\n"
+"distribute the same sections as part of a whole which is a work based\n"
+"on the Program, the distribution of the whole must be on the terms of\n"
+"this License, whose permissions for other licensees extend to the\n"
+"entire whole, and thus to each and every part regardless of who wrote it.\n"
+"\n"
+"Thus, it is not the intent of this section to claim rights or contest\n"
+"your rights to work written entirely by you; rather, the intent is to\n"
+"exercise the right to control the distribution of derivative or\n"
+"collective works based on the Program.\n"
+"\n"
+"In addition, mere aggregation of another work not based on the Program\n"
+"with the Program (or with a work based on the Program) on a volume of\n"
+"a storage or distribution medium does not bring the other work under\n"
+"the scope of this License.\n"
+"\n"
+"  3. You may copy and distribute the Program (or a work based on it,\n"
+"under Section 2) in object code or executable form under the terms of\n"
+"Sections 1 and 2 above provided that you also do one of the following:\n"
+"\n"
+"    a) Accompany it with the complete corresponding machine-readable\n"
+"    source code, which must be distributed under the terms of Sections\n"
+"    1 and 2 above on a medium customarily used for software interchange; or,\n"
+"\n"
+"    b) Accompany it with a written offer, valid for at least three\n"
+"    years, to give any third party, for a charge no more than your\n"
+"    cost of physically performing source distribution, a complete\n"
+"    machine-readable copy of the corresponding source code, to be\n"
+"    distributed under the terms of Sections 1 and 2 above on a medium\n"
+"    customarily used for software interchange; or,\n"
+"\n"
+"    c) Accompany it with the information you received as to the offer\n"
+"    to distribute corresponding source code.  (This alternative is\n"
+"    allowed only for noncommercial distribution and only if you\n"
+"    received the program in object code or executable form with such\n"
+"    an offer, in accord with Subsection b above.)\n"
+"\n"
+"The source code for a work means the preferred form of the work for\n"
+"making modifications to it.  For an executable work, complete source\n"
+"code means all the source code for all modules it contains, plus any\n"
+"associated interface definition files, plus the scripts used to\n"
+"control compilation and installation of the executable.  However, as a\n"
+"special exception, the source code distributed need not include\n"
+"anything that is normally distributed (in either source or binary\n"
+"form) with the major components (compiler, kernel, and so on) of the\n"
+"operating system on which the executable runs, unless that component\n"
+"itself accompanies the executable.\n"
+"\n"
+"If distribution of executable or object code is made by offering\n"
+"access to copy from a designated place, then offering equivalent\n"
+"access to copy the source code from the same place counts as\n"
+"distribution of the source code, even though third parties are not\n"
+"compelled to copy the source along with the object code.\n"
+"^L\n"
+"  4. You may not copy, modify, sublicense, or distribute the Program\n"
+"except as expressly provided under this License.  Any attempt\n"
+"otherwise to copy, modify, sublicense or distribute the Program is\n"
+"void, and will automatically terminate your rights under this License.\n"
+"However, parties who have received copies, or rights, from you under\n"
+"this License will not have their licenses terminated so long as such\n"
+"parties remain in full compliance.\n"
+"\n"
+"  5. You are not required to accept this License, since you have not\n"
+"signed it.  However, nothing else grants you permission to modify or\n"
+"distribute the Program or its derivative works.  These actions are\n"
+"prohibited by law if you do not accept this License.  Therefore, by\n"
+"modifying or distributing the Program (or any work based on the\n"
+"Program), you indicate your acceptance of this License to do so, and\n"
+"all its terms and conditions for copying, distributing or modifying\n"
+"the Program or works based on it.\n"
+"\n"
+"  6. Each time you redistribute the Program (or any work based on the\n"
+"Program), the recipient automatically receives a license from the\n"
+"original licensor to copy, distribute or modify the Program subject to\n"
+"these terms and conditions.  You may not impose any further\n"
+"restrictions on the recipients' exercise of the rights granted herein.\n"
+"You are not responsible for enforcing compliance by third parties to\n"
+"this License.\n"
+"\n"
+"  7. If, as a consequence of a court judgment or allegation of patent\n"
+"infringement or for any other reason (not limited to patent issues),\n"
+"conditions are imposed on you (whether by court order, agreement or\n"
+"otherwise) that contradict the conditions of this License, they do not\n"
+"excuse you from the conditions of this License.  If you cannot\n"
+"distribute so as to satisfy simultaneously your obligations under this\n"
+"License and any other pertinent obligations, then as a consequence you\n"
+"may not distribute the Program at all.  For example, if a patent\n"
+"license would not permit royalty-free redistribution of the Program by\n"
+"all those who receive copies directly or indirectly through you, then\n"
+"the only way you could satisfy both it and this License would be to\n"
+"refrain entirely from distribution of the Program.\n"
+"\n"
+"If any portion of this section is held invalid or unenforceable under\n"
+"any particular circumstance, the balance of the section is intended to\n"
+"apply and the section as a whole is intended to apply in other\n"
+"circumstances.\n"
+"\n"
+"It is not the purpose of this section to induce you to infringe any\n"
+"patents or other property right claims or to contest validity of any\n"
+"such claims; this section has the sole purpose of protecting the\n"
+"integrity of the free software distribution system, which is\n"
+"implemented by public license practices.  Many people have made\n"
+"generous contributions to the wide range of software distributed\n"
+"through that system in reliance on consistent application of that\n"
+"system; it is up to the author/donor to decide if he or she is willing\n"
+"to distribute software through any other system and a licensee cannot\n"
+"impose that choice.\n"
+"\n"
+"This section is intended to make thoroughly clear what is believed to\n"
+"be a consequence of the rest of this License.\n"
+"\n"
+"  8. If the distribution and/or use of the Program is restricted in\n"
+"certain countries either by patents or by copyrighted interfaces, the\n"
+"original copyright holder who places the Program under this License\n"
+"may add an explicit geographical distribution limitation excluding\n"
+"those countries, so that distribution is permitted only in or among\n"
+"countries not thus excluded.  In such case, this License incorporates\n"
+"the limitation as if written in the body of this License.\n"
+"\n"
+"  9. The Free Software Foundation may publish revised and/or new versions\n"
+"of the General Public License from time to time.  Such new versions will\n"
+"be similar in spirit to the present version, but may differ in detail to\n"
+"address new problems or concerns.\n"
+"\n"
+"Each version is given a distinguishing version number.  If the Program\n"
+"specifies a version number of this License which applies to it and \"any\n"
+"later version\", you have the option of following the terms and conditions\n"
+"either of that version or of any later version published by the Free\n"
+"Software Foundation.  If the Program does not specify a version number of\n"
+"this License, you may choose any version ever published by the Free Software\n"
+"Foundation.\n"
+"\n"
+"  10. If you wish to incorporate parts of the Program into other free\n"
+"programs whose distribution conditions are different, write to the author\n"
+"to ask for permission.  For software which is copyrighted by the Free\n"
+"Software Foundation, write to the Free Software Foundation; we sometimes\n"
+"make exceptions for this.  Our decision will be guided by the two goals\n"
+"of preserving the free status of all derivatives of our free software and\n"
+"of promoting the sharing and reuse of software generally.\n";
+
 static char *warranty=
-"                            NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-";
+"                            NO WARRANTY\n"
+"\n"
+"  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\n"
+"FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN\n"
+"OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\n"
+"PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\n"
+"OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n"
+"MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS\n"
+"TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE\n"
+"PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\n"
+"REPAIR OR CORRECTION.\n"
+"\n"
+"  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\n"
+"WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\n"
+"REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\n"
+"INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\n"
+"OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\n"
+"TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\n"
+"YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\n"
+"PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\n"
+"POSSIBILITY OF SUCH DAMAGES.\n";
+#endif
 
 static void printTypeInfo(link *);
 static void printValAggregates (symbol *,link *,char,unsigned int);
@@ -343,6 +356,8 @@ DEFSETFUNC(funcWithName)
 /*-----------------------------------------------------------------*/
 static void setBPatModLine (module *mod, int line)
 {
+  int next_line;
+
     /* look for the first executable line after the line
        specified & get the break point there */    
     if (srcMode == SRC_CMODE && line > mod->ncLines) {
@@ -357,24 +372,30 @@ static void setBPatModLine (module *mod, int line)
        return ;
     }
 
-    for ( ; line < (srcMode == SRC_CMODE ? mod->ncLines : mod->nasmLines ) ; 
-         line++ ) {
+    next_line = line;
+    for ( ; next_line < (srcMode == SRC_CMODE ? mod->ncLines : mod->nasmLines ) ; 
+         next_line++ ) {
        if (srcMode == SRC_CMODE) {
-           if (mod->cLines[line]->addr) {
-               setBreakPoint (mod->cLines[line]->addr, CODE, USER, 
-                              userBpCB, mod->c_name, line);
-               break;
+           if (mod->cLines[next_line]->addr) {
+               setBreakPoint (mod->cLines[next_line]->addr, CODE, USER, 
+                              userBpCB, mod->c_name, next_line);
+               return;
+//             break;
            }
        }
        else {
-          if (mod->asmLines[line]->addr) {
-              setBreakPoint (mod->asmLines[line]->addr, CODE, USER, 
-                             userBpCB, mod->asm_name, line);
-              break;
+          if (mod->asmLines[next_line]->addr) {
+              setBreakPoint (mod->asmLines[next_line]->addr, CODE, USER, 
+                             userBpCB, mod->asm_name, next_line);
+               return;
+//            break;
           } 
        }
     }
 
+       fprintf(stderr,"No line %d or after in file \"%s\"..\n",
+                       line,mod->c_name);
+
     return;
 }
 
@@ -540,8 +561,10 @@ context *discoverContext (unsigned addr)
     int line = 0;
 
     /* find the function we are in */
-    if (!applyToSet(functions,funcInAddr,addr,&func))
-       return NULL;
+    if (!applyToSet(functions,funcInAddr,addr,&func)) {
+      fprintf(stderr, "Error?:discoverContext: cannot apply to set!\n");
+       return NULL;
+    }
 
     currCtxt->func = func;
     currCtxt->addr = func->laddr = addr;
@@ -574,6 +597,8 @@ void simGo (unsigned int gaddr)
     unsigned int addr ;
     context *ctxt;
     int rv;
+    static int initial_break_flag = 0;
+
  top:    
     addr = simGoTillBp (gaddr);
 
@@ -592,8 +617,37 @@ void simGo (unsigned int gaddr)
        if not then we continue with the execution 
        of the program */
     if (!rv) {
+      if (!initial_break_flag) {
+        initial_break_flag = 1;  // kludge to stop only at first run
+        fprintf(stdout, "Stopping at entry.  You can now list and set breakpoints\n");
+      }
+      else {
+               gaddr = -1;
+               goto top ;
+      }
+
+// notes: kpb
+// I took this out, after running "run" it would just keep re-running
+// even after a lot of break points hit.  For some reason above code
+// not triggering(dispatchCB).  This seems to be by design, startup adds
+// a bunch of breakpoints-but they are not USER breakpoints.  Perhaps the
+// debugger changed with its implementation of "go"("run").  It seems we
+// need to add a "next" or "step" followed by a "run"...
+// I added a "step" in simi.c when we want a resume function, this seems
+// to work.
+
+// still there is question of how do we stop it initially, since
+// it must be started before it can get a context.  If so, we would
+// want it to just run up to an initial entry point you'd think...
+// I don't see why we can't set breakpoints before an initial run,
+// this does not seem right to me.
+
+// line #'s are a bit off too.
+
+#if 0
        gaddr = -1;
        goto top ;
+#endif
     }
     
 }
@@ -667,9 +721,13 @@ int cmdSetUserBp (char *s, context *cctxt)
                else 
                    setBPatModLine(func->mod,line);
            } else 
-               setBPatModLine(cctxt->func->mod,line);                  
+               setBPatModLine(cctxt->func->mod,line);
        } else {
-               fprintf(stdout,"No symbol information currently\n");
+               if (list_mod) {
+                       setBPatModLine(list_mod,line);
+               } else {
+                 fprintf(stdout,"Sdcdb fails to have module symbol context at %d\n", __LINE__);
+               }
        }
        
        goto ret;
@@ -972,6 +1030,276 @@ int cmdRun (char *s, context *cctxt)
     return 0;
 }
 
+/*-----------------------------------------------------------------
+ cmdListSymbols - list symbols
+|-----------------------------------------------------------------*/
+int cmdListSymbols (char *s, context *cctxt)
+{
+    int our_verbose = 0;
+    symbol *sy;
+    int i;
+
+    if (strstr(s, "v1")) {
+      our_verbose = 1;
+    } else if (strstr(s, "v2")) {
+      our_verbose = 2;
+    }
+
+    printf("[symbols]\n");
+    sy = setFirstItem(symbols);
+    i = 0;
+    for (;;) {
+      if (sy == NULL)
+        break;
+      if (our_verbose <= 1)
+        printf("<%s>", sy->name);
+
+      if (our_verbose > 1) {
+        printf("  %d) name:%s, size:%d, level:%d block:%d\n", i,
+          sy->name, sy->size, sy->level, sy->block);
+        printf("    isonstack:%d, isfunc:%d, offset:%d addr:%d\n",
+          sy->isonstack, sy->isfunc, sy->offset, sy->addr);
+        printf("    eaddr:%d, addr_type:%c, type:%x etype:%x\n",
+          sy->eaddr, sy->addr_type, sy->type, sy->etype);
+        printf("    scopetype:%c, sname:%s, rname:%s addrspace:%c\n",
+          sy->scopetype, sy->sname, sy->rname, sy->addrspace);
+        printf("    next:%x\n", sy->next);
+      }
+      ++i;
+      sy = setNextItem(symbols);
+    }
+    printf("   %d symbols\n", i);
+    return 0;
+}
+
+/*-----------------------------------------------------------------
+ cmdListFunctions - list functions.
+|-----------------------------------------------------------------*/
+int cmdListFunctions (char *s, context *cctxt)
+{
+    function *f;
+    int i;
+    int our_verbose = 0;
+
+    if (strstr(s, "v1")) {
+      our_verbose = 1;
+    } else if (strstr(s, "v2")) {
+      our_verbose = 2;
+    }
+
+    printf("[functions]\n");
+    f = setFirstItem(functions);
+    i = 0;
+    for (;;) {
+      if (f == NULL)
+        break;
+      if (our_verbose) {
+        printf("  %d) sym:%x, modName:%s, mod:%x\n", i,
+          f->sym, f->modName, f->mod);
+        printf("    entryline:%d, aentryline:%d, exitline:%d, aexitline:%d\n",
+                f->entryline, f->aentryline, f->exitline, f->aexitline);
+        printf("    cfpoints:%x, afpoints:%x, laddr:%x, lline:%d\n",
+                f->cfpoints, f->afpoints, f->laddr, f->lline);
+      }
+      else {
+        printf("<%s>", f->modName);
+      }
+      ++i;
+      f = setNextItem(functions);
+    }
+    printf("   %d functions\n", i);
+    return 0;
+}
+
+/*-----------------------------------------------------------------
+ cmdListModules - list functions.
+|-----------------------------------------------------------------*/
+int cmdListModules (char *s, context *cctxt)
+{
+    module *m;
+    srcLine *cs, *as;
+    int i, mi;
+    int our_verbose = 0;
+
+    if (strstr(s, "v1")) {
+      our_verbose = 1;
+    } else if (strstr(s, "v2")) {
+      our_verbose = 2;
+    }
+
+    printf("[modules]\n");
+    m = setFirstItem(modules);
+    mi = 0;
+    for (;;) {
+      if (m == NULL)
+        break;
+
+      if (our_verbose >= 0) {
+      printf("  %d) cfullname:%s, afullname:%s, name:%s\n", ++mi,
+        m->cfullname, m->afullname, m->name);
+      printf("    c_name:%s, asm_name:%s, ncLines:%d, nasmLines:%d\n",
+              m->c_name, m->asm_name, m->ncLines, m->nasmLines);
+      printf("    cLines:%x, asmLines:%x\n",
+              m->cLines, m->asmLines);
+      }
+      if (our_verbose > 2) {
+        i = 0;
+        if (m->cLines) {
+          cs = m->cLines[i++];
+          printf("    [cLines] ");
+          while (cs) {
+            if (our_verbose)
+              printf("   (%d) addr:%x, block:%d, level:%d, src:%s\n",
+                 i, cs->addr, cs->block, cs->level, cs->src);
+            cs = m->cLines[i++];
+          }
+          if (!our_verbose)
+              printf("%d records", i);
+        }
+        i = 0;
+        if (m->asmLines) {
+          as = m->asmLines[i++];
+          printf("    [asmLines] ");
+          while (as) {
+            if (our_verbose)
+              printf("   (%d) addr:%x, block:%d, level:%d, src:%s\n",
+                 i, as->addr, as->block, as->level, as->src);
+            as = m->asmLines[i++];
+          }
+          if (!our_verbose)
+              printf("%d records", i);
+        }
+        printf("\n");
+      }
+
+      m = setNextItem(modules);
+    }
+    return 0;
+}
+
+/*-----------------------------------------------------------------
+ infoSymbols - This is really just a tool to dump all these
+   huge program structures out into human readable form.
+|-----------------------------------------------------------------*/
+static void infoSymbols(context *ctxt)
+{
+  int our_verbose = 0;
+
+  printf("[context:%x] func:%x modName:%s addr:%x\n",
+    ctxt, ctxt->func, ctxt->modName, ctxt->addr);
+
+  printf("  cline:%d asmline:%d block:%d level:%d\n",
+    ctxt->cline, ctxt->asmline, ctxt->level);
+
+  printf("[globals] currCtxt:%x, modules:%x, functions:%x symbols:%x\n",
+    currCtxt, modules, functions, symbols);
+  printf("  nStructs:%d, structs:%x, ssdirl:%s\n",
+    nStructs, structs, ssdirl);
+
+  /**************** modules *******************/
+  {
+    module *m;
+    srcLine *cs, *as;
+    int i, mi;
+    printf("[modules]\n");
+    m = setFirstItem(modules);
+    mi = 0;
+    for (;;) {
+      if (m == NULL)
+        break;
+      printf("  %d) cfullname:%s, afullname:%s, name:%s\n", ++mi,
+        m->cfullname, m->afullname, m->name);
+      printf("    c_name:%s, asm_name:%s, ncLines:%d, nasmLines:%d\n",
+              m->c_name, m->asm_name, m->ncLines, m->nasmLines);
+      printf("    cLines:%x, asmLines:%x\n",
+              m->cLines, m->asmLines);
+      i = 0;
+      if (m->cLines) {
+        cs = m->cLines[i++];
+        printf("    [cLines] ");
+        while (cs) {
+          if (our_verbose)
+            printf("   (%d) addr:%x, block:%d, level:%d, src:%s\n",
+               i, cs->addr, cs->block, cs->level, cs->src);
+          cs = m->cLines[i++];
+        }
+        if (!our_verbose)
+            printf("%d records", i);
+      }
+      i = 0;
+      if (m->asmLines) {
+        as = m->asmLines[i++];
+        printf("    [asmLines] ");
+        while (as) {
+          if (our_verbose)
+            printf("   (%d) addr:%x, block:%d, level:%d, src:%s\n",
+               i, as->addr, as->block, as->level, as->src);
+          as = m->asmLines[i++];
+        }
+        if (!our_verbose)
+            printf("%d records", i);
+      }
+      printf("\n");
+
+      m = setNextItem(modules);
+    }
+  }
+
+  /**************** functions *******************/
+  {
+    function *f;
+    int i;
+    printf("[functions]\n");
+    f = setFirstItem(functions);
+    i = 0;
+    for (;;) {
+      if (f == NULL)
+        break;
+      if (our_verbose) {
+        printf("  %d) sym:%x, modName:%s, mod:%x\n", i,
+          f->sym, f->modName, f->mod);
+        printf("    entryline:%d, aentryline:%d, exitline:%d, aexitline:%d\n",
+                f->entryline, f->aentryline, f->exitline, f->aexitline);
+        printf("    cfpoints:%x, afpoints:%x, laddr:%x, lline:%d\n",
+                f->cfpoints, f->afpoints, f->laddr, f->lline);
+      }
+      ++i;
+      f = setNextItem(functions);
+    }
+    if (!our_verbose)
+      printf("   %d functions\n", i);
+  }
+
+  /**************** symbols *******************/
+  {
+    symbol *s;
+    int i;
+    printf("[symbols]\n");
+    s = setFirstItem(symbols);
+    i = 0;
+    for (;;) {
+      if (s == NULL)
+        break;
+      if (our_verbose) {
+        printf("  %d) name:%s, size:%d, level:%d block:%d\n", i,
+          s->name, s->size, s->level, s->block);
+        printf("    isonstack:%d, isfunc:%d, offset:%d addr:%d\n",
+          s->isonstack, s->isfunc, s->offset, s->addr);
+        printf("    eaddr:%d, addr_type:%c, type:%x etype:%x\n",
+          s->eaddr, s->addr_type, s->type, s->etype);
+        printf("    scopetype:%c, sname:%s, rname:%s addrspace:%c\n",
+          s->scopetype, s->sname, s->rname, s->addrspace);
+        printf("    next:%x\n", s->next);
+      }
+      ++i;
+      s = setNextItem(symbols);
+    }
+    if (!our_verbose)
+      printf("   %d symbols\n", i);
+  }
+
+}
+
 /*-----------------------------------------------------------------*/
 /* infoStack - print call stack information                        */
 /*-----------------------------------------------------------------*/
@@ -1021,6 +1349,14 @@ int cmdInfo (char *s, context *cctxt)
        return 0;
     }
 
+    /* info stack display call stack */
+    if (strcmp(s,"symbols") == 0) {
+      /* dump out symbols we have read in */
+      fprintf(stdout,"Dumping symbols...\n");
+      infoSymbols(cctxt);
+      return 0;
+    }
+
     fprintf(stdout,"Undefined info command: \"%s\".  Try \"help\n",s);
     return 0;
 
@@ -1044,7 +1380,6 @@ int cmdListSrc (char *s, context *cctxt)
     static int currline = 0;
     int i =0 ;
     int pline = 0;
-    static module *mod = NULL;
     int llines = listLines;
 
     while (*s && isspace(*s)) s++;
@@ -1055,15 +1390,19 @@ int cmdListSrc (char *s, context *cctxt)
        FILE:LINE     - filename line number
        FUNCTION      - list a function
        FILE:FUNCTION - function in file */
-    if (!cctxt || !cctxt->func || !cctxt->func->mod) {
-       fprintf(stdout,"No symbol table is loaded.  Use the \"file\" command.\n");
-       return 0;
-    }
+
     if (*s) {
        /* case a) LINE */
        if (isdigit(*s)) {
            sscanf(s,"%d",&pline);
-           mod = cctxt->func->mod;
+           if (!cctxt || !cctxt->func || !cctxt->func->mod) {
+             if (!list_mod) {
+               fprintf(stdout,"Sdcdb fails to have a proper context at %d.\n", __LINE__);
+               return 0;
+             }
+           }
+           else
+             list_mod = cctxt->func->mod;
        }
        else {
            char *bp;
@@ -1075,25 +1414,26 @@ int cmdListSrc (char *s, context *cctxt)
                bp ++;
                if (isdigit(*bp)) {
                    /* FILE:LINE */
+                   list_mod=NULL;  /* bug fix 2-09-02, moduleWithCName expects mod to be null */
                    if (srcMode == SRC_CMODE) {
-                       if (!applyToSet(modules,moduleWithCName,s,&mod)) {
-                           fprintf (stderr,"No source file named %s.\n",s);
+                       if (!applyToSet(modules,moduleWithCName,s,&list_mod)) {
+                           fprintf (stderr,"No source file named %s.\n",s);
                            return 0;
                        }
                    } else {
-                       if (!applyToSet(modules,moduleWithAsmName,s,&mod)) {
+                       if (!applyToSet(modules,moduleWithAsmName,s,&list_mod)) {
                            fprintf (stderr,"No source file named %s.\n",s);
                            return 0;
                        }
                    }
-                   sscanf(bp,"%d",&pline);                         
+                   sscanf(bp,"%d",&pline);
                } else {
                    /* FILE:FUCTION */
                    if (!applyToSet(functions,funcWithNameModule,bp,s,&func)) {
                        fprintf(stdout,"Function \"%s\" not defined.\n",bp);
                        return 0;
                    }
-                   mod = func->mod;
+                   list_mod = func->mod;
                    if (srcMode == SRC_CMODE) {
                        pline = func->entryline;
                        llines = func->exitline - func->entryline + 1;
@@ -1110,7 +1450,7 @@ int cmdListSrc (char *s, context *cctxt)
                    return 0;
                }
                else {
-                   mod = func->mod;
+                   list_mod = func->mod;
                    if (srcMode == SRC_CMODE) {
                        pline = func->entryline;
                        llines = func->exitline - func->entryline + 1; 
@@ -1119,7 +1459,7 @@ int cmdListSrc (char *s, context *cctxt)
                        llines = func->aexitline - func->aentryline + 1; 
                    }
                }
-           }               
+           }
        }
     } else {
        /* if no line specified & we had listed
@@ -1127,25 +1467,36 @@ int cmdListSrc (char *s, context *cctxt)
        if (currline)
            pline = currline ;
        else {
-           mod = cctxt->func->mod;
+           if (!cctxt || !cctxt->func || !cctxt->func->mod) {
+             fprintf(stdout,"Missing context at %d. Try list filename:lineno\n", __LINE__);
+             return 0;
+           }
+           list_mod = cctxt->func->mod;
            if (srcMode == SRC_CMODE)
                pline = cctxt->cline;
            else
                pline = cctxt->asmline;
        }
     }
+
+    if (!list_mod) {
+      fprintf(stdout,"Sdcdb fails to have a valid module context at %d.\n", __LINE__);
+      return 0;
+    }
     
+    if (llines > listLines) llines = listLines;
+
     for ( i = 0 ; i < llines ; i++ ) {
        if (srcMode == SRC_CMODE) {
-           if ( (pline + i) >= mod->ncLines )
+           if ( (pline + i) >= list_mod->ncLines )
                break;
            fprintf(stdout,"%d\t%s",pline + i,
-                   mod->cLines[pline +i]->src);
+                   list_mod->cLines[pline +i]->src);
        } else {
-           if ( (pline + i) >= mod->nasmLines )
+           if ( (pline + i) >= list_mod->nasmLines )
                break;
            fprintf(stdout,"%d\t%s",pline + i,
-                   mod->asmLines[pline +i]->src);
+                   list_mod->asmLines[pline +i]->src);
        }
     }
     currline = pline + i ;
@@ -1300,6 +1651,7 @@ static void printSymValue (symbol *sym, context *cctxt)
        else {
            printValBasic(sym,sym->addr,sym->addrspace,sym->size);
            fprintf(stdout,"\n");
+           //fprintf(stdout,"(BASIC %x,%c,%d)\n",sym->addr,sym->addrspace,sym->size);
        }
 }
 
@@ -1417,11 +1769,6 @@ int cmdPrint (char *s, context *cctxt)
     bp++ ;
     *bp = '\0';
 
-    if (!cctxt || !cctxt->func) {
-       fprintf(stdout,"No symbol \"%s\" in current context.\n",
-               s);
-       return 0;
-    }
     if ((sym = symLookup(s,cctxt))) {
        printSymValue(sym,cctxt);
     } else {
@@ -1446,18 +1793,12 @@ int cmdPrintType (char *s, context *cctxt)
     bp++ ;
     *bp = '\0';
 
-    if (!cctxt || !cctxt->func) {
-       fprintf(stdout,"No symbol \"%s\" in current context.\n",
-               s);
-       return 0;
-    }
-
     if ((sym = symLookup(s,cctxt))) {
        printTypeInfo(sym->type);
        fprintf(stdout,"\n");
     } else {
        fprintf(stdout,
-               "No symbol \"%s\" in current context.\n",              
+               "No symbol \"%s\" in current context.\n",
                s);
     }
     return 0;   
@@ -1574,9 +1915,16 @@ int cmdClrUserBp (char *s, context *cctxt)
 /*-----------------------------------------------------------------*/
 int cmdSimulator (char *s, context *cctxt)
 {   
-    sendSim(s);
-    sendSim("\n");
-    waitForSim();
+  char tmpstr[82];
+
+    if (strlen(s) > 80) {
+      printf("error 3A\n");
+      exit(1);
+    }
+    strcpy(tmpstr, s);
+    strcat(tmpstr, "\n");
+    sendSim(tmpstr);
+    waitForSim(200,NULL);
     fprintf(stdout,"%s",simResponse());
     return 0;
 }