Browse Source

Added KDE3 version of ktechlab


git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/ktechlab@1095338 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
tags/v3.5.13
tpearson 9 years ago
commit
5de3dd4762
100 changed files with 29722 additions and 0 deletions
  1. 2
    0
      AUTHORS
  2. 280
    0
      COPYING
  3. 56
    0
      ChangeLog
  4. 167
    0
      INSTALL
  5. 5
    0
      Makefile.am
  6. 10
    0
      Makefile.cvs
  7. 0
    0
      NEWS
  8. 1
    0
      README
  9. 49
    0
      TODO
  10. 11630
    0
      acinclude.m4
  11. 12463
    0
      aclocal.m4
  12. 1561
    0
      config.guess
  13. 256
    0
      config.h.in
  14. 341
    0
      config.log
  15. 1686
    0
      config.sub
  16. 2
    0
      configure.files
  17. 248
    0
      configure.in
  18. 142
    0
      configure.in.in
  19. 7
    0
      doc/Makefile.am
  20. 7
    0
      doc/en/Makefile.am
  21. 84
    0
      doc/en/circuits.docbook
  22. 35
    0
      doc/en/debugging.docbook
  23. 68
    0
      doc/en/faq.docbook
  24. 52
    0
      doc/en/flowcode.docbook
  25. 56
    0
      doc/en/index.docbook
  26. 422
    0
      doc/en/microbe.docbook
  27. 44
    0
      doc/en/picprograms.docbook
  28. 42
    0
      doc/en/quick.docbook
  29. 6
    0
      icons/Makefile.am
  30. BIN
      icons/hi128-app-ktechlab.png
  31. BIN
      icons/hi128-app-microbe.png
  32. BIN
      icons/hi128-mime-ktechlab_circuit.png
  33. BIN
      icons/hi128-mime-ktechlab_flowcode.png
  34. BIN
      icons/hi128-mime-ktechlab_microbe.png
  35. BIN
      icons/hi16-action-convert_to_assembly.png
  36. BIN
      icons/hi16-action-convert_to_hex.png
  37. BIN
      icons/hi16-action-convert_to_microbe.png
  38. BIN
      icons/hi16-action-convert_to_pic.png
  39. BIN
      icons/hi16-action-indent_asm.png
  40. BIN
      icons/hi16-action-logic_or.png
  41. BIN
      icons/hi16-action-null.png
  42. BIN
      icons/hi16-action-oscilloscope.png
  43. BIN
      icons/hi16-action-tool_arrow.png
  44. BIN
      icons/hi16-action-tool_ellipse.png
  45. BIN
      icons/hi16-action-tool_line.png
  46. BIN
      icons/hi16-action-tool_rectangle.png
  47. BIN
      icons/hi16-action-tool_text.png
  48. BIN
      icons/hi16-app-ktechlab.png
  49. BIN
      icons/hi16-app-microbe.png
  50. BIN
      icons/hi16-mime-ktechlab_circuit.png
  51. BIN
      icons/hi16-mime-ktechlab_flowcode.png
  52. BIN
      icons/hi16-mime-ktechlab_microbe.png
  53. BIN
      icons/hi22-action-convert_to_assembly.png
  54. BIN
      icons/hi22-action-convert_to_hex.png
  55. BIN
      icons/hi22-action-convert_to_microbe.png
  56. BIN
      icons/hi22-action-convert_to_pic.png
  57. BIN
      icons/hi22-action-dbgnext.png
  58. BIN
      icons/hi22-action-dbgrun.png
  59. BIN
      icons/hi22-action-dbgstep.png
  60. BIN
      icons/hi22-action-dbgstepout.png
  61. BIN
      icons/hi22-action-indent_asm.png
  62. BIN
      icons/hi22-action-logic_or.png
  63. BIN
      icons/hi22-app-ktechlab.png
  64. BIN
      icons/hi22-app-microbe.png
  65. BIN
      icons/hi22-mime-ktechlab_circuit.png
  66. BIN
      icons/hi22-mime-ktechlab_flowcode.png
  67. BIN
      icons/hi22-mime-ktechlab_microbe.png
  68. BIN
      icons/hi32-action-convert_to_assembly.png
  69. BIN
      icons/hi32-action-convert_to_hex.png
  70. BIN
      icons/hi32-action-convert_to_microbe.png
  71. BIN
      icons/hi32-action-convert_to_pic.png
  72. BIN
      icons/hi32-action-indent_asm.png
  73. BIN
      icons/hi32-action-logic_or.png
  74. BIN
      icons/hi32-app-ktechlab.png
  75. BIN
      icons/hi32-app-microbe.png
  76. BIN
      icons/hi32-mime-ktechlab_circuit.png
  77. BIN
      icons/hi32-mime-ktechlab_flowcode.png
  78. BIN
      icons/hi32-mime-ktechlab_microbe.png
  79. BIN
      icons/hi48-action-convert_to_assembly.png
  80. BIN
      icons/hi48-action-convert_to_hex.png
  81. BIN
      icons/hi48-action-convert_to_microbe.png
  82. BIN
      icons/hi48-action-convert_to_pic.png
  83. BIN
      icons/hi48-action-indent_asm.png
  84. BIN
      icons/hi48-action-logic_or.png
  85. BIN
      icons/hi48-app-ktechlab.png
  86. BIN
      icons/hi48-app-microbe.png
  87. BIN
      icons/hi48-mime-ktechlab_circuit.png
  88. BIN
      icons/hi48-mime-ktechlab_flowcode.png
  89. BIN
      icons/hi48-mime-ktechlab_microbe.png
  90. BIN
      icons/hi64-action-convert_to_assembly.png
  91. BIN
      icons/hi64-action-convert_to_hex.png
  92. BIN
      icons/hi64-action-convert_to_microbe.png
  93. BIN
      icons/hi64-action-convert_to_pic.png
  94. BIN
      icons/hi64-action-indent_asm.png
  95. BIN
      icons/hi64-action-logic_or.png
  96. BIN
      icons/hi64-app-ktechlab.png
  97. BIN
      icons/hi64-app-microbe.png
  98. BIN
      icons/hi64-mime-ktechlab_circuit.png
  99. BIN
      icons/hi64-mime-ktechlab_flowcode.png
  100. 0
    0
      icons/hi64-mime-ktechlab_microbe.png

+ 2
- 0
AUTHORS View File

@@ -0,0 +1,2 @@
David Saxton <david@bluehaze.org>
Daniel Clarke <daniel.jc@gmail.com>

+ 280
- 0
COPYING View File

@@ -0,0 +1,280 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991

Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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.
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.
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.

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.

END OF TERMS AND CONDITIONS

+ 56
- 0
ChangeLog View File

@@ -0,0 +1,56 @@
New or improved components:
* Transistors (NPN and PNP).
* Inductor.
* Ideal opamp.
* Rotary switch.
* Bus connection.
* Matrix display and driver.
* Magnitude comparator.
* Voltage and current probes for oscilloscope.
* Simulated bouncing for switches.
* Serial and parallel port components (interface with computer hardware).

Project Management:
* Complete rewrite...
* Support for building targets, with processing and linking options.

FlowCode / Microbe:
* Can read from keypads and display on seven segment displays.
* Add warning for floating connections in FlowCode.
* Generated assembly is now heavily optimized.

Debugging:
* High level language support (SDCC, Microbe).
* Mouse-over variable inspection.
* Symbol Viewer.

Optimization:
* Cache simulation data for circuits with discrete set of inputs (and no
reactive components).
* Speed up calculation of diode operating point.
* Optimized mixed logic and non-logic simulation.
* Optimized recording of boolean data from logic probes.

Interface:
* Translations into French, Spanish and Italian.
* Replaced KMDI with KateMDI (toolviews remember sizes, lots of other
improvements).
* Modularised GUI - menus and toolbars are hidden / shown as appropriate for
the document being edited.
* Toolbar item editor is now squashable.
* Lots of icon improvements.

Polishing:
* Removed flicker when resizing the work area.
* Remember cursor position in text documents on save / restore.
* Removed flicker when joining / splitting connectors.
* Save undo / redo state after editing data.
* Remember connection routing selection.
* Try and retain upwards position of text when rotating / reflecting components.
* Editing of real numbers now always uses three significant figures.
* Give LEDs a nice selection of predefined LED colours.

Miscellaneous Features:
* PIC program uploading (via the use of external programs).
* Allow changing of the z-ordering of items.
* Added support for gpsim-0.21.11 and gpsim-0.21.12.

+ 167
- 0
INSTALL View File

@@ -0,0 +1,167 @@
Basic Installation
==================

These are generic installation instructions.

The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create a `Makefile' in each directory of the package.
It may also create one or more `.h' files containing system-dependent
definitions. Finally, it creates a shell script `config.status' that
you can run in the future to recreate the current configuration, a file
`config.cache' that saves the results of its tests to speed up
reconfiguring, and a file `config.log' containing compiler output
(useful mainly for debugging `configure').

If you need to do unusual things to compile the package, please try
to figure out how `configure' could check whether to do them, and mail
diffs or instructions to the address given in the `README' so they can
be considered for the next release. If at some point `config.cache'
contains results you don't want to keep, you may remove or edit it.

The file `configure.in' is used to create `configure' by a program
called `autoconf'. You only need `configure.in' if you want to change
it or regenerate `configure' using a newer version of `autoconf'.

The simplest way to compile this package is:

1. `cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system. If you're
using `csh' on an old version of System V, you might need to type
`sh ./configure' instead to prevent `csh' from trying to execute
`configure' itself.

Running `configure' takes a while. While running, it prints some
messages telling which features it is checking for.

2. Type `make' to compile the package.

3. Type `make install' to install the programs and any data files and
documentation.

4. You can remove the program binaries and object files from the
source code directory by typing `make clean'.

Compilers and Options
=====================

Some systems require unusual options for compilation or linking that
the `configure' script does not know about. You can give `configure'
initial values for variables by setting them in the environment. Using
a Bourne-compatible shell, you can do that on the command line like
this:
CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure

Or on systems that have the `env' program, you can do it like this:
env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure

Compiling For Multiple Architectures
====================================

You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
own directory. To do this, you must use a version of `make' that
supports the `VPATH' variable, such as GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'.

If you have to use a `make' that does not supports the `VPATH'
variable, you have to compile the package for one architecture at a time
in the source code directory. After you have installed the package for
one architecture, use `make distclean' before reconfiguring for another
architecture.

Installation Names
==================

By default, `make install' will install the package's files in
`/usr/local/bin', `/usr/local/man', etc. You can specify an
installation prefix other than `/usr/local' by giving `configure' the
option `--prefix=PATH'.

You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
give `configure' the option `--exec-prefix=PATH', the package will use
PATH as the prefix for installing programs and libraries.
Documentation and other data files will still use the regular prefix.

If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure' the
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.

Optional Features
=================

Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
is something like `gnu-as' or `x' (for the X Window System). The
`README' should mention any `--enable-' and `--with-' options that the
package recognizes.

For packages that use the X Window System, `configure' can usually
find the X include and library files automatically, but if it doesn't,
you can use the `configure' options `--x-includes=DIR' and
`--x-libraries=DIR' to specify their locations.

Specifying the System Type
==========================

There may be some features `configure' can not figure out
automatically, but needs to determine by the type of host the package
will run on. Usually `configure' can figure that out, but if it prints
a message saying it can not guess the host type, give it the
`--host=TYPE' option. TYPE can either be a short name for the system
type, such as `sun4', or a canonical name with three fields:
CPU-COMPANY-SYSTEM

See the file `config.sub' for the possible values of each field. If
`config.sub' isn't included in this package, then this package doesn't
need to know the host type.

If you are building compiler tools for cross-compiling, you can also
use the `--target=TYPE' option to select the type of system they will
produce code for and the `--build=TYPE' option to select the type of
system on which you are compiling the package.

Sharing Defaults
================

If you want to set default values for `configure' scripts to share,
you can create a site shell script called `config.site' that gives
default values for variables like `CC', `cache_file', and `prefix'.
`configure' looks for `PREFIX/share/config.site' if it exists, then
`PREFIX/etc/config.site' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script.
A warning: not all `configure' scripts look for a site script.

Operation Controls
==================

`configure' recognizes the following options to control how it
operates.

`--cache-file=FILE'
Use and save the results of the tests in FILE instead of
`./config.cache'. Set FILE to `/dev/null' to disable caching, for
debugging `configure'.

`--help'
Print a summary of the options to `configure', and exit.

`--quiet'
`--silent'
`-q'
Do not print messages saying which checks are being made.

`--srcdir=DIR'
Look for the package's source code in directory DIR. Usually
`configure' can determine that directory automatically.

`--version'
Print the version of Autoconf used to generate the `configure'
script, and exit.

`configure' also accepts some other, not widely useful, options.


+ 5
- 0
Makefile.am View File

@@ -0,0 +1,5 @@
AUTOMAKE_OPTIONS = foreign 1.5

include admin/deps.am

SUBDIRS=$(TOPSUBDIRS)

+ 10
- 0
Makefile.cvs View File

@@ -0,0 +1,10 @@
all:
@echo "This Makefile is only for the CVS repository"
@echo "This will be deleted before making the distribution"
@echo ""
$(MAKE) -f admin/Makefile.common cvs

dist:
$(MAKE) -f admin/Makefile.common dist

.SILENT:

+ 0
- 0
NEWS View File


+ 1
- 0
README View File

@@ -0,0 +1 @@


+ 49
- 0
TODO View File

@@ -0,0 +1,49 @@
0.4 targets:
* Replace QCanvas with own optimized implementation.
* "Tutorial" tool (e.g. for learning about electronic circuits and PICs) tailored to education.
* Only use IDs for items, etc, in ItemDocumentData - otherwise they lead to too many bugs.
* More intelligent connector routing.
* Variable time step in Simulation.
* Improved ItemEditor (free scaling preview buttons, moved buttons around, toolbar needs work, etc).
* Remove insert / duplicate functionality for ViewContainers, and replace it with concept of empty panes.
* Fix subcircuits so that they are saved in an itemdocument.
* Fully i18n'izable (e.g. see string lists bug below, some buttons too big with non-english text, etc).
* Full complement of basic electronic devices (e.g. mosfet, jfet).
* Debugging support for FlowCode.

New components:
* ALU components (shifters, multipliers)
* Displays: double-digit LCD display
* Audio: buzzers, speakers.
* Different types of signals (e.g. square, triangular) for current and voltage signal components.

Bugs:
* At the moment, KTechlab auto-detects a point in the circuit to use as ground, according to a set of priorities (e.g. the Ground component has the highest priority, then voltage elements, etc etc). However, some circuits do not have any point which should be considered ground, e.g. "(+9V)-------(Battery)". Suggested solution: detect a point to have as a fixed voltage, that can be anything including 0V.
* Some string lists for item properties are not i18n-safe. Scaling {Linear, Logarithmic}; Polarity {Row Cathode, Column Cathode } / {Common Cathode, Common Anode}; Edge {Rising, Falling}; Unary Operation {Rotate Left, Rotate Right, Increment, Decremement}
* Microbe should give "noline" where applicable in show-source (such as in delay routines).

Features:
* Bookmarks in the oscilloscope.
* Draw an outline of the component / flowpart / etc being dragged from the list on the left to show where it will be placed. This will probably involve adding static functions to all Item subclasses that will do the drawing, and returning a pointer to the function in the LibraryItem the subclass returns.
* Allow inserting a component into a wire, so that the wire is broken in two with the component connecting at either end.
* Some intelligent connect tool that will connect up pins between components - e.g. if the pins are dragged over each other, or horizontaly next to each other.
* Work area text: allow clickable URIs, rich text editor.
* Indicate the direction of current flow in a wire when hovering the mouse over.
* Allow editing of embedded code in the FlowCode element in a TextView, instead of a popup dialog.
* Be able to "shake" an item to get rid of attached connectors.
* Allow creating a flowcontainer by dragging a rectangle.
* Templates for different file types (making use of the microcontroller selected).
* "Show All" zoom action (zooms in / out to a level that shows everything in the work area).

General TODO:
* Finish serial and parallel port components.
* optimize microbe some more?

Polishing:
* Make sure that when context help refers to "advanced" variables (i.e. only editable from the Item Editor tab), it makes clear how to edit them.
* Informational message when user attempts to paste flowcode into a circuit (can't do so; must save and load into pic).
* On program startup, use "text blobs" pointing to sidebars to explain what they do.
* Update register info even when PIC is paused.
* Move the "merge" button to individual property entries.
* replace "refresh rate" slider in settings dialog with standard one.
* flicker of bottom horizontal scrollbar when initially moving a component downwards from having no vertical scrollbar to having one.

+ 11630
- 0
acinclude.m4
File diff suppressed because it is too large
View File


+ 12463
- 0
aclocal.m4
File diff suppressed because it is too large
View File


+ 1561
- 0
config.guess
File diff suppressed because it is too large
View File


+ 256
- 0
config.h.in View File

@@ -0,0 +1,256 @@
/* config.h.in. Generated from configure.in by autoheader. */

/* Gpsim 0.21.11 was found */
#undef GPSIM_0_21_11

/* Gpsim 0.21.12 was found */
#undef GPSIM_0_21_12

/* Gpsim 0.21.4 was found */
#undef GPSIM_0_21_4

/* Define to 1 if you have the <Carbon/Carbon.h> header file. */
#undef HAVE_CARBON_CARBON_H

/* Define if you have the CoreAudio API */
#undef HAVE_COREAUDIO

/* Define to 1 if you have the <crt_externs.h> header file. */
#undef HAVE_CRT_EXTERNS_H

/* Defines if your system has the crypt function */
#undef HAVE_CRYPT

/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H

/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H

/* Define if you have libjpeg */
#undef HAVE_LIBJPEG

/* Define if you have libpng */
#undef HAVE_LIBPNG

/* Define if you have a working libpthread (will enable threaded code) */
#undef HAVE_LIBPTHREAD

/* Define if you have libz */
#undef HAVE_LIBZ

/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H

/* Define if your system needs _NSGetEnviron to set up the environment */
#undef HAVE_NSGETENVIRON

/* Define if you have res_init */
#undef HAVE_RES_INIT

/* Define if you have the res_init prototype */
#undef HAVE_RES_INIT_PROTO

/* Define if you have a STL implementation by SGI */
#undef HAVE_SGI_STL

/* Define to 1 if you have the `snprintf' function. */
#undef HAVE_SNPRINTF

/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H

/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H

/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H

/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H

/* Define if you have strlcat */
#undef HAVE_STRLCAT

/* Define if you have the strlcat prototype */
#undef HAVE_STRLCAT_PROTO

/* Define if you have strlcpy */
#undef HAVE_STRLCPY

/* Define if you have the strlcpy prototype */
#undef HAVE_STRLCPY_PROTO

/* Define to 1 if you have the <sys/bitypes.h> header file. */
#undef HAVE_SYS_BITYPES_H

/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H

/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H

/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H

/* Define to 1 if you have the `vsnprintf' function. */
#undef HAVE_VSNPRINTF

/* Suffix for lib directories */
#undef KDELIBSUFF

/* Define a safe value for MAXPATHLEN */
#undef KDEMAXPATHLEN

/* Gpsim was not found */
#undef NO_GPSIM

/* Name of package */
#undef PACKAGE

/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT

/* Define to the full name of this package. */
#undef PACKAGE_NAME

/* Define to the full name and version of this package. */
#undef PACKAGE_STRING

/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME

/* Define to the version of this package. */
#undef PACKAGE_VERSION

/* The size of a `char *', as computed by sizeof. */
#undef SIZEOF_CHAR_P

/* The size of a `int', as computed by sizeof. */
#undef SIZEOF_INT

/* The size of a `long', as computed by sizeof. */
#undef SIZEOF_LONG

/* The size of a `short', as computed by sizeof. */
#undef SIZEOF_SHORT

/* The size of a `size_t', as computed by sizeof. */
#undef SIZEOF_SIZE_T

/* The size of a `unsigned long', as computed by sizeof. */
#undef SIZEOF_UNSIGNED_LONG

/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS

/* Version number of package */
#undef VERSION

/* Defined if compiling without arts */
#undef WITHOUT_ARTS

/* Define to 1 if your processor stores words with the most significant byte
first (like Motorola and SPARC, unlike Intel and VAX). */
#undef WORDS_BIGENDIAN

/*
* jpeg.h needs HAVE_BOOLEAN, when the system uses boolean in system
* headers and I'm too lazy to write a configure test as long as only
* unixware is related
*/
#ifdef _UNIXWARE
#define HAVE_BOOLEAN
#endif



/*
* AIX defines FD_SET in terms of bzero, but fails to include <strings.h>
* that defines bzero.
*/

#if defined(_AIX)
#include <strings.h>
#endif



#if defined(HAVE_NSGETENVIRON) && defined(HAVE_CRT_EXTERNS_H)
# include <sys/time.h>
# include <crt_externs.h>
# define environ (*_NSGetEnviron())
#endif



#if !defined(HAVE_RES_INIT_PROTO)
#ifdef __cplusplus
extern "C" {
#endif
int res_init(void);
#ifdef __cplusplus
}
#endif
#endif



#if !defined(HAVE_STRLCAT_PROTO)
#ifdef __cplusplus
extern "C" {
#endif
unsigned long strlcat(char*, const char*, unsigned long);
#ifdef __cplusplus
}
#endif
#endif



#if !defined(HAVE_STRLCPY_PROTO)
#ifdef __cplusplus
extern "C" {
#endif
unsigned long strlcpy(char*, const char*, unsigned long);
#ifdef __cplusplus
}
#endif
#endif



/*
* On HP-UX, the declaration of vsnprintf() is needed every time !
*/

#if !defined(HAVE_VSNPRINTF) || defined(hpux)
#if __STDC__
#include <stdarg.h>
#include <stdlib.h>
#else
#include <varargs.h>
#endif
#ifdef __cplusplus
extern "C"
#endif
int vsnprintf(char *str, size_t n, char const *fmt, va_list ap);
#ifdef __cplusplus
extern "C"
#endif
int snprintf(char *str, size_t n, char const *fmt, ...);
#endif



#if defined(__SVR4) && !defined(__svr4__)
#define __svr4__ 1
#endif


/* type to use in place of socklen_t if not defined */
#undef kde_socklen_t

/* type to use in place of socklen_t if not defined (deprecated, use
kde_socklen_t) */
#undef ksize_t

+ 341
- 0
config.log View File

@@ -0,0 +1,341 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.

It was created by configure, which was
generated by GNU Autoconf 2.59. Invocation command line was

$ ./configure --host=x86_64-linux-gnu --build=x86_64-linux-gnu --disable-debug --disable-rpath --prefix=/opt/kde3 --libexecdir=/opt/kde3/bin --sysconfdir=/etc --libdir=/opt/kde3/lib --includedir=/opt/kde3/include/kde --with-qt-includes=/usr/include/qt3 --mandir=/opt/kde3/share/man --infodir=/opt/kde3/share/info --with-xinerama --prefix=/opt/kde3

## --------- ##
## Platform. ##
## --------- ##

hostname = argus4
uname -m = x86_64
uname -r = 2.6.31-16-generic
uname -s = Linux
uname -v = #53-Ubuntu SMP Tue Dec 8 04:02:15 UTC 2009

/usr/bin/uname -p = unknown
/bin/uname -X = unknown

/bin/arch = unknown
/usr/bin/arch -k = unknown
/usr/convex/getsysinfo = unknown
hostinfo = unknown
/bin/machine = unknown
/usr/bin/oslevel = unknown
/bin/universe = unknown

PATH: /opt/kde3/bin
PATH: /opt/kde3/bin
PATH: /opt/kde3/games
PATH: /opt/kde3/bin
PATH: /home/eldarion/bin
PATH: /usr/local/sbin
PATH: /usr/local/bin
PATH: /usr/sbin
PATH: /usr/bin
PATH: /sbin
PATH: /bin
PATH: /usr/games


## ----------- ##
## Core tests. ##
## ----------- ##

configure:1564: checking build system type
configure:1582: result: x86_64-pc-linux-gnu
configure:1590: checking host system type
configure:1604: result: x86_64-pc-linux-gnu
configure:1612: checking target system type
configure:1626: result: x86_64-pc-linux-gnu
configure:1673: checking for a BSD-compatible install
configure:1728: result: /usr/bin/install -c
configure:1743: checking for -p flag to install
configure:1756: result: yes
configure:1767: checking whether build environment is sane

## ---------------- ##
## Cache variables. ##
## ---------------- ##

ac_cv_build=x86_64-pc-linux-gnu
ac_cv_build_alias=x86_64-linux-gnu
ac_cv_env_CC_set=
ac_cv_env_CC_value=
ac_cv_env_CFLAGS_set=set
ac_cv_env_CFLAGS_value='-Wall -g -O2 -Wl,-z,defs'
ac_cv_env_CPPFLAGS_set=set
ac_cv_env_CPPFLAGS_value=
ac_cv_env_CPP_set=
ac_cv_env_CPP_value=
ac_cv_env_CXXCPP_set=
ac_cv_env_CXXCPP_value=
ac_cv_env_CXXFLAGS_set=set
ac_cv_env_CXXFLAGS_value='-g -O2'
ac_cv_env_CXX_set=
ac_cv_env_CXX_value=
ac_cv_env_F77_set=
ac_cv_env_F77_value=
ac_cv_env_FFLAGS_set=set
ac_cv_env_FFLAGS_value='-g -O2'
ac_cv_env_LDFLAGS_set=set
ac_cv_env_LDFLAGS_value=-Wl,-Bsymbolic-functions
ac_cv_env_build_alias_set=set
ac_cv_env_build_alias_value=x86_64-linux-gnu
ac_cv_env_host_alias_set=set
ac_cv_env_host_alias_value=x86_64-linux-gnu
ac_cv_env_target_alias_set=
ac_cv_env_target_alias_value=
ac_cv_host=x86_64-pc-linux-gnu
ac_cv_host_alias=x86_64-linux-gnu
ac_cv_path_install='/usr/bin/install -c'
ac_cv_target=x86_64-pc-linux-gnu
ac_cv_target_alias=x86_64-linux-gnu

## ----------------- ##
## Output variables. ##
## ----------------- ##

ACLOCAL=''
AMDEPBACKSLASH=''
AMDEP_FALSE=''
AMDEP_TRUE=''
AMTAR=''
AR=''
ARTSCCONFIG='/opt/kde3/bin/artsc-config'
AUTOCONF=''
AUTODIRS=''
AUTOHEADER=''
AUTOMAKE=''
AWK=''
CC=''
CCDEPMODE=''
CFLAGS='-Wall -g -O2 -Wl,-z,defs'
CONF_FILES=''
CPP=''
CPPFLAGS=''
CXX=''
CXXCPP=''
CXXDEPMODE=''
CXXFLAGS='-g -O2'
DCOPIDL2CPP='/opt/kde3/bin/dcopidl2cpp'
DCOPIDL='/opt/kde3/bin/dcopidl'
DCOPIDLNG=''
DCOP_DEPENDENCIES=''
DEFS=''
DEPDIR=''
ECHO='echo'
ECHO_C=''
ECHO_N='-n'
ECHO_T=''
EGREP=''
ENABLE_PERMISSIVE_FLAG=''
EXEEXT=''
F77=''
FFLAGS='-g -O2'
FRAMEWORK_COREAUDIO=''
GMSGFMT=''
HAVE_GCC_VISIBILITY=''
INSTALL_DATA='install -p -c -m 644'
INSTALL_PROGRAM='${INSTALL} $(INSTALL_STRIP_FLAG)'
INSTALL_SCRIPT='${INSTALL}'
INSTALL_STRIP_PROGRAM=''
KCFG_DEPENDENCIES=''
KCONFIG_COMPILER=''
KDECONFIG=''
KDE_EXTRA_RPATH=''
KDE_INCLUDES=''
KDE_LDFLAGS=''
KDE_MT_LDFLAGS=''
KDE_MT_LIBS=''
KDE_NO_UNDEFINED=''
KDE_PLUGIN=''
KDE_RPATH=''
KDE_USE_CLOSURE_FALSE=''
KDE_USE_CLOSURE_TRUE=''
KDE_USE_FINAL_FALSE=''
KDE_USE_FINAL_TRUE=''
KDE_USE_NMCHECK_FALSE=''
KDE_USE_NMCHECK_TRUE=''
KDE_XSL_STYLESHEET=''
LDFLAGS='-Wl,-Bsymbolic-functions'
LDFLAGS_AS_NEEDED=''
LDFLAGS_NEW_DTAGS=''
LIBCOMPAT=''
LIBCRYPT=''
LIBDL=''
LIBJPEG=''
LIBOBJS=''
LIBPNG=''
LIBPTHREAD=''
LIBRESOLV=''
LIBS=''
LIBSM=''
LIBSOCKET=''
LIBTOOL=''
LIBUCB=''
LIBUTIL=''
LIBZ=''
LIB_GPSIM=''
LIB_KAB=''
LIB_KABC=''
LIB_KDECORE=''
LIB_KDEPIM=''
LIB_KDEPRINT=''
LIB_KDEUI=''
LIB_KDNSSD=''
LIB_KFILE=''
LIB_KFM=''
LIB_KHTML=''
LIB_KIMPROXY=''
LIB_KIO=''
LIB_KJS=''
LIB_KNEWSTUFF=''
LIB_KPARTS=''
LIB_KSPELL=''
LIB_KSYCOCA=''
LIB_KUTILS=''
LIB_POLL=''
LIB_QPE=''
LIB_QT=''
LIB_SMB=''
LIB_X11=''
LIB_XEXT=''
LIB_XRENDER=''
LN_S=''
LTLIBOBJS=''
MAKEINFO=''
MAKEKDEWIDGETS=''
MCOPIDL='/opt/kde3/bin/mcopidl'
MEINPROC=''
MOC=''
MSGFMT=''
NOOPT_CFLAGS=''
NOOPT_CXXFLAGS=''
OBJEXT=''
PACKAGE=''
PACKAGE_BUGREPORT=''
PACKAGE_NAME=''
PACKAGE_STRING=''
PACKAGE_TARNAME=''
PACKAGE_VERSION=''
PATH_SEPARATOR=':'
PERL=''
QTE_NORTTI=''
QT_INCLUDES=''
QT_LDFLAGS=''
RANLIB=''
SET_MAKE=''
SHELL='/bin/bash'
STRIP=''
TOPSUBDIRS=''
UIC=''
UIC_TR=''
USER_INCLUDES=''
USER_LDFLAGS=''
USE_EXCEPTIONS=''
USE_RTTI=''
USE_THREADS=''
VERSION=''
WOVERLOADED_VIRTUAL=''
XGETTEXT=''
XMLLINT=''
X_EXTRA_LIBS=''
X_INCLUDES=''
X_LDFLAGS=''
X_PRE_LIBS=''
X_RPATH=''
ac_ct_AR=''
ac_ct_CC=''
ac_ct_CXX=''
ac_ct_F77=''
ac_ct_RANLIB=''
ac_ct_STRIP=''
all_includes=''
all_libraries=''
am__include=''
am__quote=''
bindir='${exec_prefix}/bin'
build='x86_64-pc-linux-gnu'
build_alias='x86_64-linux-gnu'
build_cpu='x86_64'
build_os='linux-gnu'
build_vendor='pc'
datadir='${prefix}/share'
exec_prefix='NONE'
glib_cflags=''
host='x86_64-pc-linux-gnu'
host_alias='x86_64-linux-gnu'
host_cpu='x86_64'
host_os='linux-gnu'
host_vendor='pc'
include_ARTS_FALSE=''
include_ARTS_TRUE=''
include_x11_FALSE=''
include_x11_TRUE=''
includedir='/opt/kde3/include/kde'
infodir='/opt/kde3/share/info'
install_sh=''
kde_appsdir='/opt/kde3/share/applnk'
kde_bindir='/opt/kde3/bin'
kde_confdir='/etc/kde3'
kde_datadir='/opt/kde3/share/apps'
kde_htmldir='/opt/kde3/share/doc/kde/HTML'
kde_icondir='/opt/kde3/share/icons'
kde_includes=''
kde_kcfgdir=''
kde_libraries=''
kde_libs_htmldir=''
kde_libs_prefix=''
kde_locale='/opt/kde3/share/locale'
kde_mimedir='/opt/kde3/share/mimelnk'
kde_moduledir='/opt/kde3/lib/kde3'
kde_qtver=''
kde_servicesdir='/opt/kde3/share/services'
kde_servicetypesdir='/opt/kde3/share/servicetypes'
kde_sounddir='/opt/kde3/share/sounds'
kde_styledir=''
kde_templatesdir='/opt/kde3/share/templates'
kde_wallpaperdir='/opt/kde3/share/wallpapers'
kde_widgetdir=''
kdeinitdir=''
libdir='/opt/kde3/lib'
libexecdir='/opt/kde3/bin'
localstatedir='${prefix}/var'
mandir='/opt/kde3/share/man'
oldincludedir='/usr/include'
prefix='/opt/kde3'
program_transform_name='s,x,x,'
qt_includes=''
qt_libraries=''
sbindir='${exec_prefix}/sbin'
sharedstatedir='${prefix}/com'
sysconfdir='/etc'
target='x86_64-pc-linux-gnu'
target_alias=''
target_cpu='x86_64'
target_os='linux-gnu'
target_vendor='pc'
unsermake_enable_pch_FALSE=''
unsermake_enable_pch_TRUE=''
x_includes='NONE'
x_libraries='NONE'
xdg_appsdir=''
xdg_directorydir=''
xdg_menudir=''

## ----------- ##
## confdefs.h. ##
## ----------- ##

#define PACKAGE_BUGREPORT ""
#define PACKAGE_NAME ""
#define PACKAGE_STRING ""
#define PACKAGE_TARNAME ""
#define PACKAGE_VERSION ""

configure: caught signal 2
configure: exit 1

+ 1686
- 0
config.sub
File diff suppressed because it is too large
View File


+ 2
- 0
configure.files View File

@@ -0,0 +1,2 @@
./admin/configure.in.min
configure.in.in

+ 248
- 0
configure.in View File

@@ -0,0 +1,248 @@
dnl =======================================================
dnl FILE: ./admin/configure.in.min
dnl =======================================================

dnl This file is part of the KDE libraries/packages
dnl Copyright (C) 2001 Stephan Kulow (coolo@kde.org)
dnl This file is free software; you can redistribute it and/or
dnl modify it under the terms of the GNU Library General Public
dnl License as published by the Free Software Foundation; either
dnl version 2 of the License, or (at your option) any later version.
dnl This library is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
dnl Library General Public License for more details.
dnl You should have received a copy of the GNU Library General Public License
dnl along with this library; see the file COPYING.LIB. If not, write to
dnl the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
dnl Boston, MA 02110-1301, USA.

# Original Author was Kalle@kde.org
# I lifted it in some mater. (Stephan Kulow)
# I used much code from Janos Farkas

dnl Process this file with autoconf to produce a configure script.

AC_INIT(acinclude.m4) dnl a source file from your sub dir

dnl This is so we can use kde-common
AC_CONFIG_AUX_DIR(admin)

dnl This ksh/zsh feature conflicts with `cd blah ; pwd`
unset CDPATH

dnl Checking host/target/build systems, for make, install etc.
AC_CANONICAL_SYSTEM
dnl Perform program name transformation
AC_ARG_PROGRAM

dnl Automake doc recommends to do this only here. (Janos)
AM_INIT_AUTOMAKE(ktechlab, 0.3) dnl searches for some needed programs

KDE_SET_PREFIX

dnl generate the config header
AM_CONFIG_HEADER(config.h) dnl at the distribution this done

dnl Checks for programs.
AC_CHECK_COMPILERS
AC_ENABLE_SHARED(yes)
AC_ENABLE_STATIC(no)
KDE_PROG_LIBTOOL

dnl for NLS support. Call them in this order!
dnl WITH_NLS is for the po files
AM_KDE_WITH_NLS

KDE_USE_QT(3.2.0)
AC_PATH_KDE
dnl =======================================================
dnl FILE: configure.in.in
dnl =======================================================

#MIN_CONFIG(3.2.0)

dnl PACKAGE set before
AC_C_BIGENDIAN
AC_CHECK_KDEMAXPATHLEN


################################
## BEGIN Check for gpsim 0.21 ##
################################

AC_LANG_SAVE
AC_LANG_CPLUSPLUS
ktechlab_save_CXXFLAGS="$CXXFLAGS"

AC_ARG_WITH(glib12, [ --with-glib12 force using glib 1.2.x [default=no]])
if test "x$with_glib12" != "xyes" ; then
glib_cflags=`pkg-config --cflags glib-2.0`
else
glib_cflags=`glib-config --cflags`
fi
AC_SUBST(glib_cflags)

CXXFLAGS="$glib_cflags"

AC_MSG_CHECKING([for gpsim 0.21.4 availability])
AC_TRY_COMPILE(
[
#include <gpsim/interface.h>
#include <gpsim/gpsim_interface.h>
#include <gpsim/breakpoints.h>
#include <gpsim/gpsim_time.h>
void func() { (void)cycles; (void)initialize_gpsim_core(); (void)load_symbol_file(0,0); }
],
[],
AC_MSG_RESULT( yes )
have_gpsim_0_21_4=yes,
AC_MSG_RESULT( no )
)

AC_MSG_CHECKING([for gpsim 0.21.11 availability])
AC_TRY_COMPILE(
[
#include <gpsim/interface.h>
#include <gpsim/gpsim_interface.h>
#include <gpsim/breakpoints.h>
#include <gpsim/gpsim_time.h>
#include <gpsim/symbol.h>
#include <gpsim/program_files.h>
void func() { (void)cycles; (void)initialize_gpsim_core(); }
],
[],
AC_MSG_RESULT( yes )
have_gpsim_0_21_11=yes,
AC_MSG_RESULT( no )
)

AC_MSG_CHECKING([for gpsim 0.21.12 availability])
AC_TRY_COMPILE(
[
#include <gpsim/ValueCollections.h>
],
[],
AC_MSG_RESULT( yes )
have_gpsim_0_21_12=yes,
AC_MSG_RESULT( no )
)

CXXFLAGS="$ktechlab_save_CXXFLAGS"
AC_LANG_RESTORE

##############################
## END Check for gpsim 0.21 ##
##############################



################################
## BEGIN DO_NOT_COMPILE CHECK ##
################################

if test x$have_gpsim_0_21_12 == xyes; then
AC_DEFINE([GPSIM_0_21_12],[],[Gpsim 0.21.12 was found])
CXXFLAGS="$CXXFLAGS $USE_EXCEPTIONS"
else
if test x$have_gpsim_0_21_4 != xyes; then
if test x$have_gpsim_0_21_11 != xyes; then
AC_DEFINE([NO_GPSIM],[],[Gpsim was not found])
LIB_GPSIM=""
else
AC_DEFINE([GPSIM_0_21_11],[],[Gpsim 0.21.11 was found])
fi
else
AC_DEFINE([GPSIM_0_21_4],[],[Gpsim 0.21.4 was found])
fi
fi

if test x$have_gpsim_0_21_4 == xyes || test x$have_gpsim_0_21_11 == xyes || test x$have_gpsim_0_21_12 == xyes; then
wi_cv_lib_readline=no
ac_save_LIBS="$LIBS"
# Note: $LIBCURSES is permitted to be empty.
for LIBREADLINE in "-lreadline" "-lreadline $LIBCURSES" "-lreadline -ltermcap" "-lreadline -lncurses" "-lreadline -lcurses"
do
LIBS="$ac_save_LIBS $LIBREADLINE"
LIB_GPSIM="$LIBREADLINE -lgpsim -lgpsim_eXdbm -lgpsimcli"
AC_TRY_RUN([
/* program */
#include <stdio.h>
#include <stdlib.h>
main(int argc, char **argv)
{
/* Note: don't actually call readline, since it may block;
* We just want to see if it (dynamic) linked in okay.
*/
if (argc == 0) /* never true */
readline(0);
exit(0);
}
],[
# action if true
wi_cv_lib_readline=yes
],[
# action if false
wi_cv_lib_readline=no
],[
# action if cross compiling
wi_cv_lib_readline=no
])
if test "$wi_cv_lib_readline" = yes ; then break ; fi
done

LIBS="$ac_save_LIBS"
fi

AC_SUBST(LIB_GPSIM)

##############################
## END DO_NOT_COMPILE CHECK ##
##############################

KDE_CREATE_SUBDIRSLIST
AC_CONFIG_FILES([ Makefile ])
AC_CONFIG_FILES([ doc/Makefile ])
AC_CONFIG_FILES([ doc/en/Makefile ])
AC_CONFIG_FILES([ icons/Makefile ])
AC_CONFIG_FILES([ icons/pics/Makefile ])
AC_CONFIG_FILES([ microbe/Makefile ])
AC_CONFIG_FILES([ po/Makefile ])
AC_CONFIG_FILES([ src/Makefile ])
AC_CONFIG_FILES([ src/core/Makefile ])
AC_CONFIG_FILES([ src/drawparts/Makefile ])
AC_CONFIG_FILES([ src/electronics/Makefile ])
AC_CONFIG_FILES([ src/electronics/components/Makefile ])
AC_CONFIG_FILES([ src/electronics/simulation/Makefile ])
AC_CONFIG_FILES([ src/flowparts/Makefile ])
AC_CONFIG_FILES([ src/gui/Makefile ])
AC_CONFIG_FILES([ src/languages/Makefile ])
AC_CONFIG_FILES([ src/mechanics/Makefile ])
AC_CONFIG_FILES([ src/micro/Makefile ])
AC_OUTPUT
if test x$have_gpsim_0_21_4 != xyes; then
if test x$have_gpsim_0_21_11 != xyes; then
echo ""
echo "################################################################################"
echo "# WARNING: gpsim support will not be compiled as gpsim >= 0.21.4 was not found #"
echo "################################################################################"
fi
fi

if test "$all_tests" = "bad"; then
if test ! "$cache_file" = "/dev/null"; then
echo ""
echo "Please remove the file $cache_file after changing your setup"
echo "so that configure will find the changes next time."
echo ""
fi
else
echo ""
echo "Good - your configure finished. Start make now"
echo ""
fi

+ 142
- 0
configure.in.in View File

@@ -0,0 +1,142 @@
#MIN_CONFIG(3.2.0)

AM_INIT_AUTOMAKE(ktechlab, 0.3)
AC_C_BIGENDIAN
AC_CHECK_KDEMAXPATHLEN


################################
## BEGIN Check for gpsim 0.21 ##
################################

AC_LANG_SAVE
AC_LANG_CPLUSPLUS
ktechlab_save_CXXFLAGS="$CXXFLAGS"

AC_ARG_WITH(glib12, [ --with-glib12 force using glib 1.2.x [default=no]])
if test "x$with_glib12" != "xyes" ; then
glib_cflags=`pkg-config --cflags glib-2.0`
else
glib_cflags=`glib-config --cflags`
fi
AC_SUBST(glib_cflags)

CXXFLAGS="$glib_cflags"

AC_MSG_CHECKING([for gpsim 0.21.4 availability])
AC_TRY_COMPILE(
[
#include <gpsim/interface.h>
#include <gpsim/gpsim_interface.h>
#include <gpsim/breakpoints.h>
#include <gpsim/gpsim_time.h>
void func() { (void)cycles; (void)initialize_gpsim_core(); (void)load_symbol_file(0,0); }
],
[],
AC_MSG_RESULT( yes )
have_gpsim_0_21_4=yes,
AC_MSG_RESULT( no )
)

AC_MSG_CHECKING([for gpsim 0.21.11 availability])
AC_TRY_COMPILE(
[
#include <gpsim/interface.h>
#include <gpsim/gpsim_interface.h>
#include <gpsim/breakpoints.h>
#include <gpsim/gpsim_time.h>
#include <gpsim/symbol.h>
#include <gpsim/program_files.h>
void func() { (void)cycles; (void)initialize_gpsim_core(); }
],
[],
AC_MSG_RESULT( yes )
have_gpsim_0_21_11=yes,
AC_MSG_RESULT( no )
)

AC_MSG_CHECKING([for gpsim 0.21.12 availability])
AC_TRY_COMPILE(
[
#include <gpsim/ValueCollections.h>
],
[],
AC_MSG_RESULT( yes )
have_gpsim_0_21_12=yes,
AC_MSG_RESULT( no )
)

CXXFLAGS="$ktechlab_save_CXXFLAGS"
AC_LANG_RESTORE

##############################
## END Check for gpsim 0.21 ##
##############################



################################
## BEGIN DO_NOT_COMPILE CHECK ##
################################

if test x$have_gpsim_0_21_12 == xyes; then
AC_DEFINE([GPSIM_0_21_12],[],[Gpsim 0.21.12 was found])
CXXFLAGS="$CXXFLAGS $USE_EXCEPTIONS"
else
if test x$have_gpsim_0_21_4 != xyes; then
if test x$have_gpsim_0_21_11 != xyes; then
AC_DEFINE([NO_GPSIM],[],[Gpsim was not found])
LIB_GPSIM=""
else
AC_DEFINE([GPSIM_0_21_11],[],[Gpsim 0.21.11 was found])
fi
else
AC_DEFINE([GPSIM_0_21_4],[],[Gpsim 0.21.4 was found])
fi
fi

if test x$have_gpsim_0_21_4 == xyes || test x$have_gpsim_0_21_11 == xyes || test x$have_gpsim_0_21_12 == xyes; then
wi_cv_lib_readline=no
ac_save_LIBS="$LIBS"
# Note: $LIBCURSES is permitted to be empty.
for LIBREADLINE in "-lreadline" "-lreadline $LIBCURSES" "-lreadline -ltermcap" "-lreadline -lncurses" "-lreadline -lcurses"
do
LIBS="$ac_save_LIBS $LIBREADLINE"
LIB_GPSIM="$LIBREADLINE -lgpsim -lgpsim_eXdbm -lgpsimcli"
AC_TRY_RUN([
/* program */
#include <stdio.h>
#include <stdlib.h>
main(int argc, char **argv)
{
/* Note: don't actually call readline, since it may block;
* We just want to see if it (dynamic) linked in okay.
*/
if (argc == 0) /* never true */
readline(0);
exit(0);
}
],[
# action if true
wi_cv_lib_readline=yes
],[
# action if false
wi_cv_lib_readline=no
],[
# action if cross compiling
wi_cv_lib_readline=no
])
if test "$wi_cv_lib_readline" = yes ; then break ; fi
done

LIBS="$ac_save_LIBS"
fi

AC_SUBST(LIB_GPSIM)

##############################
## END DO_NOT_COMPILE CHECK ##
##############################


+ 7
- 0
doc/Makefile.am View File

@@ -0,0 +1,7 @@
# the SUBDIRS is filled automatically by am_edit. If files are
# in this directory they are installed into the english dir

KDE_LANG = en
KDE_DOCS = AUTO
SUBDIRS = $(AUTODIRS)


+ 7
- 0
doc/en/Makefile.am View File

@@ -0,0 +1,7 @@
KDE_DOCS = ktechlab
# KDE_MANS = ktechlab
KDE_LANG = en
# KDE_DOCS = AUTO

kde_docs_KDEDOCS = debugging.docbook circuits.docbook flowcode.docbook \
quick.docbook faq.docbook picprograms.docbook

+ 84
- 0
doc/en/circuits.docbook View File

@@ -0,0 +1,84 @@
<!-- kate: tab-width 2; indent-mode xml; -->
<chapter id="circuits">
<title>Circuits</title>
<sect1 id="placing_components">
<title>Placing components</title>
<para>On the left, you'll find the Components tab.</para>
<para>Dragging a component from the sidebar into the circuit will place it under the mouse cursor. Alternatively, you can double click on an item in the Components sidebar to repeatedly add it to the circuit. In this mode, a copy of the selected component will be placed repeatedly on mouse left-clicking until either Escape is pressed, or the mouse is right-clicked.</para>
<para>To reposition a component, left-click and drag. You'll find it snapping to the underlying grid. If you drag the component out of the right or bottom edges of the workarea, the workarea will resize itself to accomodate.</para>
<para>All components have a notion of orientation; 0, 90, 180 and 270 degrees. Those that aren't symmetrical about an axis can also be flipped. To rotate a selection of components, either right click and select from the Orientation menu, or click on the rotate buttons in the toolbar. The latter can also be accessed by pressing the "[" and "]" keys (familiar to Inkscape users). The Item sidebar (on the right) provides a powerful method of setting the orientation by providing previews of the components. Flipping components is also only possibly via the Item sidebar.</para>
</sect1>
<sect1 id="connecting_components">
<title>Connecting Components</title>
<para>There are two modes for creating connections (wires): automatic, and manual. These modes are selected via the "Connection Routing Mode" pulldown menu in the toolbar. Experiment with both - automatic routing is often better for small circuits, whereas more complex circuits may need manual routing.</para>
<para>In automatic mode, create a connection by dragging from either a component pin or an existing connection, and releasing the mouse over the desired pin or connection. You'll see the straight-line being drawn turn orange when a valid connection will be created on mouse release. If the line you're drawing is black, it's either because there's nothing beneath the mouse cursor, or you're attempting to connect together two items which are already connected. When flowcharting, the criteria for a valid connection are more complex - but we'll get to that later.</para>
<para>The best way to get a feel for manual connection routing is by experimenting with it. Click on the starting pin or connection, and then extend the proto-connector by moving the mouse away from where you clicked. To place a corner, left-click. To cancel drawing the connection, either press escape, or right-click the mouse.</para>
<para>&kappname; tries its best to maintain the routes your connections take. However, if dragging a component results in the end points of a connection moving relative to each other, &kappname; will be forced to redraw the connection using auto-routing. Before moving a component, you can see which connectors will have to be rerouted - as they will turn grey on clicking.</para>
<para>To remove an existing connection, select it by drawing a small select-rectangle over part of the connector, and hit delete.</para>
</sect1>
<sect1 id="component_attributes">
<title>Component Attributes</title>
<para>Most components will have editable attributes, such as the resistance for resistors. By default, you can edit simple attributes in the toolbar, when a group of the same type of components are selected. If your selection contains a mixture of different types of components (such as resistors and capacitors), then no attributes will be displayed for editing.</para>
<para>Some components have more advanced attributes which are not accesible via the toolbar. These are found in the Item sidebar on the right. The diode, for example, has a variety of behavioural characteristics that you can edit here.</para>
<para>If your selection of components have different values for their attributes (for example, different resistances for a selection of resistors), the Item sidebar will have the disagreeing attributes greyed-out. You can enable these by clicking the "Merge properties" button.</para>
<para>The "Defaults" button will reset the component attributes to the ones it had on creation.</para>
<para>There is one type of attribute that cannot be editable by either the toolbar or Item sidebar - multiline text. Double clicking on the item will bring up a dialog box where the text can be entered.</para>
</sect1>
<sect1 id="circuit_simulation">
<title>Simulation</title>
<para>By default, the simulation will be running when you create a new circuit. The status of the simulation is displayed in the lower right of a circuit view, and can be changed via the Tools menu. Firstly - a little explanation on how the Simulator works. This should allow you to make the most out of it.</para>
<para>When a circuit is created or modified, the affected areas are partitioned up into groups of pins and connections that can be considered independent. Each group is then simulated as a seperate entity (although still interacting via the components), with the simulation provided dependent on the group's complexity. Complex groups, such as those involving nonlinear components like LEDs, are slow to simulate. Groups that contain only logic pins, of which only one controls the value on those pins, are the fastest to simulate.</para>
<para>The results of the simulation are provided through several graphical means.</para>
<para>The pins on the components will display voltage sidebars. These are coloured orange for positive voltage, and blue for negative voltage. Their length depends on the voltage level, and their width on the amount of current flowing through the pin. These can be turned off in the Work Area tab of the Configuration dialog.</para>
<para>Hovering the mouse over a pin or connection will display a small tooltip showing the voltage and current at that point in the circuit. Several components also provide graphical feedback - for example, LEDs and voltmeters or ammeters.</para>
<para>Lastly, there is the oscilloscope, discussed in the next section.</para>
</sect1>
<sect1 id="oscilloscope">
<title>Oscilloscope</title>
<para>The oscilloscope can record logic, voltage and current data. The logic probe is optimized for storing boolean samples, and so should be used instead of the voltage probe when measuring logic.</para>
<para>To collect data, create a new probe component, and attach it to an appropriate point in the circuit. You'll see the output immediately drawn in the oscilloscope. Adding more probes will squash the outputs next to each other - you can reposition these by dragging the arrows on the left of the oscilloscope view, and change their colours via the probe's attributes.</para>
<para>For voltage and current probes, the range of input values can be adjusted in the "Item Editor" sidebar on the right.</para>
<para>Zooming is controlled by a slider. The scaling is logarithmic; for every few pixels that the slider moves along, the zoom factor will be multipled by a constant. &kappname; simulates logic to a maximum precision of 1 microsecond, and at maximum zoom level, one microsecond is represented by 8 pixels.</para>
<para>When the scrollbar is dragged to the end, it will remain there as new data is recorded. Otherwise, the position of the scrollbar remains fixed in time. The oscilloscope view can also be moved forwards and backwards by left-clicking and dragging the view. Due to limitations of the underlying widget system, scrolling will be very granular at maximum zoom.</para>
<para>Right-clicking on the oscilloscope view brings up a menu where you can control the number of times the oscilloscope view is updated. This allows for either a smoother display, or reducing CPU usage.</para>
</sect1>
<sect1 id="subcircuits">
<title>Subcircuits</title>
<para>Subcircuits offer a reusable and tidy way of using a circuit, when you're only interested in interacting with external connections to the circuit. The subcircuit is creating as an IC, with the pins acting as the interaction with the internal circuit.</para>
<para>First, the circuit to be used in as a template for creating a subcircuit from must be constructed. The points of interaction are defined via "External Connection" components. These must be connected up, and positioned where you want the pin to be positioned on the subcircuit IC.</para>
<para>Next, select the group of components and external connections to be turned into a subcircuit, and select "Create Subcircuit" from the right-click menu. You'll be offered to enter a name for the subcircuit. Once created, the name will popup in the Component selector under the Subcircuits selection. This can be treated as any normal component - with the additional option of removing it by right-clicking on the item and selecting Remove.</para>
</sect1>
</chapter>




+ 35
- 0
doc/en/debugging.docbook View File

@@ -0,0 +1,35 @@
<!-- kate: tab-width 2; indent-mode xml; -->
<chapter id="debugging">
<title>Debugging</title>
<sect1 id="starting_debugger">
<title>Starting the Debugger</title>
<para>Debugging support is provided for Assembly, SDCC and Microbe, when they are open as a text document. From here, stepping is controlled via the Debug menu. There are two methods of starting the debugger.</para>
<para>If the PIC program is already running in a circuit, then double-clicking on the PIC component will open up the program. For assembly PIC programs, the debugger for that text document will be linked into the PIC component. In this case, the debug menu cannot stop the PIC program - as this is owned by the PIC component.</para>
<para>If the assembly file is already opened, then the debugger can be run via the Debug menu. After compiling the program, the debugger will be ready, with the PIC program paused at the first instruction. Note that when debugging high level languages, the current execution point will not be shown if there is no line that corresponds to the first assembly instruction to be executed. In this case, clicking next will bring the execution point to the first line in the program.</para>
</sect1>
<sect1 id="controlling_debugger">
<title>Controlling the Debugger</title>
<para>The debugger can be in one of two modes: running, and stepping. While running, the PIC program will be simulated in realtime. To allow stepping, the PIC program must be paused - either by clicking on Interrupt in the Debug menu, or clicking on the pause button on the PIC component.</para>
<para>In stepping mode, a green arrow in the margin of the text document indicates the next line to be executed (familiar to KDevelop users). It may be useful to turn on the icon border via the View menu (it can be permanently turned on via the Editor Settings dialog).</para>
<para>There are three types of stepping:</para>
<itemizedlist>
<listitem><para>Step into - This executes the current instruction. The green arrow is moved onto the next line to be executed.</para></listitem>
<listitem><para>Step over - If the next instruction to be executed is a call, or similar, then this will "step over" the call, returning to stepping mode once the call has returned. Otherwise, stepping over an instruction behaves identically to step. To put it technically - the initial stack level is recorded, and the program execution is paused once the stack level returns to its initial level.</para></listitem>
<listitem><para>Step out - If the current execution is inside a call, or similar, then this will wait until the call returns. Similarly to stepping over, this is equivalent to waiting until the stack level returns to one less than the initial level, if the initial level is greater than zero.</para></listitem>
</itemizedlist>
<para>Breakpoints allow the execution to be paused when the PIC program reaches a given instruction. To toggle a breakpoint on the line containing the cursor, either use the Debug menu, or click on the icon border of the text document.</para>
<para>The "Symbol Viewer" sidebar on the right shows the values of the Special Function Registers. To find out the value of a variable in the General Purpose Registers, you can hover your mouse over the variable name in an instruction that operates on that register. Note that the radix selection in the Symbol Viewer also controls how the value is displayed when hovering over a variable.</para>
</sect1>
</chapter>

+ 68
- 0
doc/en/faq.docbook View File

@@ -0,0 +1,68 @@
<!-- kate: tab-width 2; indent-mode xml; -->
<chapter id="faq">
<title>FAQ</title>

<qandaset>
<qandaentry>
<question>
<para>Configure can't find gpsim</para>
</question>
<answer>
<para>Configure will attempt to compile several files to test for gpsim presence; testing for versions 0.21.4, 0.21.11 and 0.21.12. These files uses part of the gpsim API, that is also used by &kappname;, and was introduced in the respective gpsim versions. If it fails in compiling this program, it will display the warning to the user, and PIC simulation support will not be compiled into &kappname;. There are a number of possibly reasons for finding gpsim to fail:</para>
<itemizedlist>
<listitem><para>gpsim >= 0.21.4 is not installed. &kappname; does not support gpsim-0.21.2 or gpsim-0.20.14 (or any earlier versions). Later versions may work; but this cannot be tested before they are released. The latest gpsim can be obtained from the <ulink url="http://www.dattalo.com/gnupic/gpsim.html">gpsim website</ulink>.</para></listitem>
<listitem><para>Gpsim is installed, but the header files could not be found. If gpsim is installed in a non-standard location, you may need to specify the location of the header files with "./configure --with-extra-includes=DIR". It is also likely you'll need to specify a library location with the configure option "--with-extra-lib" if the includes are in a non-standard location.</para></listitem>
<listitem><para>Gpsim is installed and the headers are somewhere where configure can find them, but there is some other glib craziness occuring.</para></listitem>
</itemizedlist>
<para>Configure generates the file <computeroutput>config.log</computeroutput> which will contain details of exactly what went wrong. Searching for gpsim in this log should help you decide what's happened. As an example, here is part of the config.log file where one of the gpsim header files is missing:</para>
<example><title>Possible config.log output where gpsim detection failed</title>
<programlisting>
configure:30956: checking for gpsim 0.21.4 availability
configure:31009: g++ -c -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
-DQT_THREAD_SUPPORT -O3 -march=athlon-xp -mcpu=athlon-xp -D_REENTRANT
conftest.cc >&amp;5
conftest.cc:48:35: gpsim/gpsim_interface.h: No such file or directory</programlisting>
</example>
<para>If the config.log doesn't help, please contact the &kappname; developers with the relevant parts of config.log attached.</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>&kappname; crashes when running a PIC program</para>
</question>
<answer>
<para>Version 0.21.11 of gpsim contains a bug that may cause &kappname; to crash on the second running of a PIC program. This bug has since been fixed in gpsim-cvs. The &kappname; website provides a <ulink url="http://ktechlab.org/download/gpsim.php">patched version</ulink> of the stable release of gpsim that fixes this bug.</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>High Level Language (HLL) debugging does not work</para>
</question>
<answer>
<para>Version 0.21.11 of gpsim contains a bug preventing HLL debugging from working. This bug has since been fixed in gpsim-cvs. The &kappname; website provides a <ulink url="http://ktechlab.org/download/gpsim.php">patched version</ulink> of the stable release of gpsim that fixes this bug.</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>&kappname; uses lots of CPU</para>
</question>
<answer>
<para>There are several possible causes. Simulation of circuits that contain both reactive and nonlinear components (such as capacitors and transistors) take a lot of CPU time to simulate. You can pause and resume the simulation via the Tools menu.</para>
<para>Drawing of the work area (in particular, redrawing lots of rapidly updating voltage bars on pins) is also CPU intensive. You can reduce the refresh rate or turn off the voltage bars via the Settings dialog. The refresh rate of the Oscilloscope can also be reduced by right clicking on its display.</para>

<para>Note that the next major release of &kappname; will be a lot faster in both displaying the work area and simulating reactive and nonlinear components.</para>
</answer>
</qandaentry>
</qandaset>
</chapter>

+ 52
- 0
doc/en/flowcode.docbook View File

@@ -0,0 +1,52 @@
<!-- kate: tab-width 2; indent-mode xml; -->
<chapter id="flowcode">
<title>&flowcode;</title>
<sect1 id="flowcode_introduction">
<title>Introduction</title>
<para>&flowcode; allows for very quick and easy construction of a PIC program. After the user has constructed a flowchart from the program parts available, &kappname; can then convert the flowchart into a number of formats. To output hex, for example, the following chain of conversions takes place:</para>
<orderedlist>
<listitem><para>The &flowcode; is converted to &microbe;; a high-level language whose compiler is distributed with &kappname;.</para></listitem>
<listitem><para>The <command>microbe</command> executable then compiles the &microbe; file to PIC assembly.</para></listitem>
<listitem><para>Finally, <command>gpasm</command> takes the PIC assembly file, and outputs the hex for the program.</para></listitem>
</orderedlist>
<para>Of course, if you don't have gputils installed - with which <command>gpasm</command> is distributed - then the last step can't be performed.</para>
</sect1>
<sect1 id="flowcode_creation">
<title>Creating a Program</title>
<para>Every &flowcode; program needs a unique starting point - this is the place where your program will be run from on PIC startup. To define this point, open up the FlowParts sidebar on the left, and drag across the Start part. &kappname; will only allow you to use one of these.</para>
<para>You can then construct your program by using the predefined parts on the left - or insert code of your own (in assembly or &microbe; format) via the Embed part. The flow of the program is controlled via the connections between the FlowParts - <xref linkend="connecting_components"/> offers more detail on creating connections.</para>
<para>&flowcode; imposes limitations in addition to those of Circuits on what can be connected. For example, each FlowPart can only have one output connection. Additional limitations are described in <xref linkend="nestling_flowcode"/>.</para>
</sect1>
<sect1 id="pic_settings">
<title>PIC Settings</title>
<para>When you create a new &flowcode; document, you'll notice a picture of the PIC you're using in the top-left corner of the work area. This represents the initial settings of the PIC.</para>
<para>Each pin shown on the picture of the PIC shows the initial type of pin (input or output), and its initial state (high or low). You can change these by dragging the pin to set the type, and clicking on it to toggle its state.</para>
<para>The Settings dialog, invoked by clicking on the Settings button, also allows you to edit the initial pin types and states - in this case, by editing the binary values written to the PORT and TRIS registers. As well as pin settings though, the dialog allows editing of the initial values of variables in the PIC program.</para>
<para>At the bottom, there is a list of currently defined pin maps, as well as buttons to manipulate them. Pin maps are used to specify how a seven segment or a keypad is connected to a PIC. To use the Seven Segment or the Keypad &flowcode; parts, you will need to define a pin map here first.</para>
</sect1>
<sect1 id="nestling_flowcode">
<title>Nestling &flowcode;</title>
<para>Many FlowParts, such as subroutines and loops, can contain code of their own. After creating such a container, FlowParts can be added by either dragging or dropping them into the container. The container will be highlighted to indicate that it will become the new parent of the FlowPart.</para>
<para>The container takes responbility for FlowParts nestled inside. If the expand button is unclicked, all contained FlowParts will be hidden - and likewise, the contents will be shown when the expand button is clicked again. Connections cannot be made between FlowParts in different containers, and the contents of a container will be moved about along with the container.</para>
</sect1>
</chapter>

+ 56
- 0
doc/en/index.docbook View File

@@ -0,0 +1,56 @@
<?xml version="1.0" ?>
<!-- kate: tab-width 2; indent-mode xml; -->
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.1.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
<!ENTITY ktechlab "ktechlab">
<!ENTITY ktechlab-quick SYSTEM "quick.docbook">
<!ENTITY ktechlab-pic-programs SYSTEM "picprograms.docbook">
<!ENTITY ktechlab-circuits SYSTEM "circuits.docbook">
<!ENTITY ktechlab-flowcode SYSTEM "flowcode.docbook">
<!ENTITY ktechlab-microbe SYSTEM "microbe.docbook">
<!ENTITY ktechlab-debugging SYSTEM "debugging.docbook">
<!ENTITY ktechlab-faq SYSTEM "faq.docbook">
<!ENTITY kappname "KTechlab">
<!ENTITY microbe "Microbe">
<!ENTITY flowcode "FlowCode">
<!ENTITY % addindex "IGNORE">
<!ENTITY % English "INCLUDE">
]>
<book lang="&language;">
<bookinfo>
<title>The KTechlab Handbook</title>
<authorgroup>
<author>
<firstname>David</firstname>
<surname>Saxton</surname>
<affiliation><address><email>david&#64;bluehaze&#46;org</email></address></affiliation>
</author>
<author>
<firstname>Daniel</firstname>
<surname>Clarke</surname>
</author>
</authorgroup>
<date>2005-12-27</date>
<releaseinfo>0&#46;3</releaseinfo>
<abstract>
<para>KTechlab is an IDE for microcontrollers and electronics.</para>
</abstract>
<keywordset>
<keyword>KTechlab</keyword>
<keyword>KDE</keyword>
<keyword>Development</keyword>
<keyword>Electronics</keyword>
<keyword>Simulation</keyword>
<keyword>PICs</keyword>
<keyword>Microbe</keyword>
</keywordset>
</bookinfo>
&ktechlab-quick;
&ktechlab-pic-programs;
&ktechlab-circuits;
&ktechlab-flowcode;
&ktechlab-microbe;
&ktechlab-debugging;
&ktechlab-faq;
</book>

+ 422
- 0
doc/en/microbe.docbook View File

@@ -0,0 +1,422 @@
<!-- kate: tab-width 2; indent-mode xml; -->
<chapter id="microbe">
<title>&microbe;</title>
<sect1>
<title>Introduction and General Syntax</title>
<para>
<application>Microbe</application> compiles programs written in the custom language for PICs, as a companion program to <application>&kappname;</application>. The syntax has been designed to suit a &flowcode; program.
The syntax for running <command>microbe</command> from the commandline is:
<programlisting>microbe [options] [input.microbe] [output.asm]</programlisting>
where options are:
<itemizedlist>
<listitem><para><function>--show-source</function> - Puts each line of &microbe; source code as a comment in the assembly output before the assembly instructions themselves for that line.</para></listitem>
<listitem><para><function>--no-optimize</function> - Prevent optimization of the instructions generated from the source. Optimization is usually safe, and so this option is mainly used for debugging.</para></listitem>
</itemizedlist>
The .microbe input file must identify the target PIC by inserting the PIC name at the top of the .microbe file; e.g. the name of a PIC16F84 is "P16F84".
<example><title>Simple complete &microbe; program</title>
<programlisting role="correct">
P16F84

a = 0
repeat
{
PORTA = a
a = a + 1
}
until a == 5

end</programlisting>
</example>
</para>

<sect2 id="namingconventions">
<title>Naming conventions</title>
<para>
The following rules apply to variable names and labels:
<itemizedlist>
<listitem><para>They can only contain alphanumerical characters [a..z][A..Z][0..9] and the underscore "_".</para></listitem>
<listitem><para>They are case-sensitive.</para></listitem>
<listitem><para>They cannot start with a number.</para></listitem>
<listitem><para>They should not start with "__" (double underscore), as this is reserved for use by the compiler.</para></listitem>
</itemizedlist>
</para>
</sect2>

<sect2 id="bracingconventions">
<title>Bracing conventions</title>
<para>
Curly braces, {}, indicate the start and end of a code block.
They can appear anywhere before the start and after the end of the code block.
Examples of acceptable code blocks:
<programlisting role="correct">
statement1 {
some code
}</programlisting>
<programlisting role="correct">
statement2 {
other code }</programlisting>
<programlisting role="correct">
statement3
{
other code
}</programlisting>
<programlisting role="correct">
statement5 {
code block
} statement6</programlisting>
</para>
</sect2>
<sect2 id="commenting">
<title>Commenting</title>
<para>
Commenting is similar to C. // comments out the rest of the line. /* and */ denote a multiline comment.
<programlisting role="correct">
// This is a comment
x = 2
/* As is this
multiline comment */</programlisting>
</para>
</sect2>

<sect2 id="structure">
<title>Program Structure</title>
<para>
The PIC id must be inserted at the top of the program. The end of the main program is denoted with "end". Subroutines must placed after "end".
</para>
</sect2>

<sect2 id="subroutines">
<title>Subroutines</title>
<para>
A subroutine can be called from anywhere in the code. Syntax:
</para>
<programlisting role="correct">
sub SubName
{
// Code...
}</programlisting>
<para>The subroutine is called with "call SubName".</para>
</sect2>
</sect1>

<sect1 id="languagereference">
<title>&microbe; language reference</title>
<sect2 id="if">
<title>if</title>
<para>Conditional branching.
Syntax:
<programlisting role="correct">if [expression] then [statement]</programlisting>
or
<programlisting role="correct">
if [expression] then
{
[statement block]
}</programlisting>
Similarly for else:
<programlisting role="correct">else [statement]</programlisting>
or
<programlisting role="correct">
else
{
[statement block]
}</programlisting>
</para>
<example><title>if</title>
<programlisting role="correct">
if porta.0 is high then
{
delay 200
}
else
{
delay 300
}</programlisting>
</example>
</sect2>