summaryrefslogtreecommitdiff
path: root/rhtvision/readme.txt
diff options
context:
space:
mode:
Diffstat (limited to 'rhtvision/readme.txt')
-rw-r--r--rhtvision/readme.txt456
1 files changed, 456 insertions, 0 deletions
diff --git a/rhtvision/readme.txt b/rhtvision/readme.txt
new file mode 100644
index 0000000..3d30c4c
--- /dev/null
+++ b/rhtvision/readme.txt
@@ -0,0 +1,456 @@
+Hi!
+
+The small sections are:
+
+0. Ultra quick instructions
+1. Introduction
+2. Notes about the package
+3. Compilation and installation
+4. Using the library to compile your program
+5. Linux/UNIX dynamic libraries
+6. Libraries and tools needed
+7. Examples
+8. Dialog editor
+9. Targets supported, limitations
+10. CPU usage
+11. Notes about international support
+12. How to submit a patch
+13. Memory Debuggers
+14. Special thanks
+15. Contact information
+
+ The instructions to compile the source code can be found in the INSTALL.txt
+file. I strongly suggest reading the INSTALL.txt file and the files indicated
+by it.
+
+0. Ultra quick instructions
+----------------------------
+
+ If you can't wait even a second and you are running a UNIX like system with
+most of the GNU tools (Perl, shell utils, file utils, bash, make, etc.) you
+can just follow these steps: [These tools are installed in all Linux systems;
+they are available for most UNIX systems and also for djgpp, Cygwin and MinGW]
+
+A) Run the configure script (./configure or configure).
+
+Examples:
+ linux:/usr/src/tvision# ./configure
+ c:\djgpp\contrib\tvision>configure
+
+B) If all is OK run "make".
+C) If all is OK just run "make install". [On UNIX systems you'll need to
+change to the root user before installing]
+
+ With it you'll get the headers and library installed.
+ If the installation prefix directory is wrongly guessed call the configure
+script passing --prefix=dir as argument.
+Example:
+ linux:/usr/src/tvision# ./configure --prefix=/usr/local
+
+ Note: The configuration mechanism can be used for Cygwin or MinGW but you
+must install some GNU tools. It can't be used for Borland and Microsoft
+compilers.
+
+
+
+
+1. Introduction:
+---------------
+
+ That's the Turbo Vision distribution (TV for short) v2.2.0.
+ The sources are copyrighted by Borland (currently Inprise) and are freely
+available in internet from:
+
+ftp://ftp.inprise.com/pub/borlandcpp/devsupport/archive/turbovision/tv.zip
+
+ Look in the borland.txt file for more information. Additionally here is
+what Inprise says about this package:
+
+URL: http://www.inprise.com/devsupport/bcppbuilder/faq/QNA906.html
+or: http://community.borland.com/article/0,1410,17285,00.html
+------------------------------------------------------------------------------
+Question and Answer Database
+
+QNA :Turbo Vision
+Category :C/C++ Language Issues
+Platform :Windows95
+Product :C++Builder ALL
+
+Question:
+Where can I find the public domain version of Turbo Vision?
+
+Answer:
+It can be found at
+ftp.inprise.com/pub/borlandcpp/devsupport/archive/turbovision/
+
+the turbo vision libraries are in the tv.zip archve, the rest of the
+files are examples.
+
+7/2/1998 10:32:32 AM
+------------------------------------------------------------------------------
+ So according to Inprise web tv.zip is a Public Domain version.
+<Clarification>
+ I added this small text because some people have doubts about copyrights
+issues.
+</Clarification>
+
+ They were heavily patched to work with gcc, BC++ and MSVC. Some patches
+fixes bugs, others changes the behavior of things limited to 16 bits values
+and others add brand new functionality. The resulting TV isn't 100%
+compatible with the original. See the examples/porting.txt file for more
+information, I explain which differences I found while porting the examples.
+ Up to release 1.0.1 most of the patches were made by Robert Hoehne. I
+contributed with various patches and modules mainly to extend the original
+functionality. For information about what changed before it just read the
+change.log and change1.log files. You'll find more information in the "doc"
+directory.
+ The library is distributed under the GPL license, it seems to be OK because
+according to a FAQ in the Inprise web site the base library is Public
+Domain. The file "copying" contains the GPL license and the file "copying.rh"
+contains the RHIDE copyright. Some portions of the contributed code are under
+the BSD license (QNX RtP driver). I took some code from the Sigala's port of
+TV (some examples), Sigala's port is under the BSD license, but I modified
+the code and my changes are covered by the GPL license. If you want the
+code under BSD look for Sigala's port. I also added some code from TV Tools,
+this package was created by Marc Stern <stern@mble.philips.be> and he states:
+"You can freely distribute them, modify them and use them for any purpose
+(even include it into commercial products).". For the purpose of this
+distribution the code is under GPL license.
+
+ Recent news: Richard M. Stallman contacted me and put some doubts about the
+distribution of Borland's sources, he contacted somebody at Borland asking if
+TV was freesoftware and he got no as answer. I think this reply was mainly
+because RMS asked without clarifying your point. To clarify it I contacted
+the person in charge of the Linux web section of Borland and he told me that
+he is redirecting these doubts to the right people inside Borland. Until now
+I didn't get a final answer. Note it was in 2000, Borland never replied and I
+insisted during 18 months. Also note that I tried to contact Linux
+International but they never replied.
+
+
+
+
+2. Notes about the package:
+--------------------------
+
+ As you are reading it you already unpacked it but here are some notes:
+(I usually read the readmes without unpacking)
+ The distribution is done using two formats: .zip and .tar.gz. The .zip file
+contains the files in "DOS" format (\r\n as end of line) and the .tar.gz file
+contains the same files in "UNIX" format (\n as end of line). The .zip file
+also lacks a few files needed to create Debian packages because these files
+have names that can't be safetly used in environments where the file names
+are limited to 8+3 characters.
+ If you use the .tar.gz file for a system like djgpp (DOS) you can use the
+file lista.dos to know which files should be converted to DOS format. The
+script called fromunix.pl converts those files. The rest of the file doesn't
+usually need any change because gcc understands both kind of end of line
+terminators. I don't know if bcc and msvc also supports it.
+ Note that sometimes I talk about "Linux" but it usually applies to most
+POSIX systems. Also note that Cygwin is more similar to Linux than DOS.
+ Starting with 1.0.5 I include the Debian package files. As these files
+aren't 8+3 clean if you uncompress the files in plain DOS you'll get some
+warnings about files with the same name, so I removed these files from the
+DOS distribution in 1.0.6, now they are only in the Linux distribution. So
+if you want to try generating the .deb packages you *must* have the Linux
+distribution of the library.
+ The compress and compress.bat files are used to create the distribution
+packages and are included. If you need to generate the .zip file just use the
+files in the djgpp directory. If you need to generate the .tar.gz just use
+the files in the linux directory.
+ Starting with 1.1.0 Win32 platforms are also supported using MingW and BC++
+5.5 compilers.
+ In 2.0.0 we added MSVC and QNX support. The UNIX support was also enhanced
+to support FreeBSD and Solaris.
+ Starting with 2.0.2 the make process is unified and the resulting library
+is generated in the makes directory for all architectures. Currently the only
+target that isn't integrated is MSVC because Microsoft doesn't provide a free
+compiler like Borland does. I need volunteers to integrate the MSVC to the
+rest and make things easier for MSVC users. For more information read the
+INSTALL.txt file.
+
+
+
+
+3. Compilation and installation:
+-------------------------------
+
+ The compilation instructions are in the INSTALL.txt file.
+ All the .o/.obj files are stored in the makes/obj directory it helps to
+delete or compress these files if you want to save disk space and you won't
+be modifying the sources all the time.
+ The generated library/ies can be found in the makes directory.
+
+ The systems using gcc and UNIX tools can install the library/ies using:
+
+$ make install
+
+ If it fails or you are using another compiler you can install it by hand or
+use the library without installing:
+ To use the library add the include directory in your includes path and the
+directory where the library was created to your libraries path (or just move
+the library to the lib directory). I recommend using an environment variable
+pointing to the base directory where the files are located and add the rest
+to it. For example:
+TVISION=e:/dj/contrib/tvision
+Then $(TVISION)/include is the include directory and $(TVISION)/linux or
+$(TVISION)/djgpp is the library path.
+ *Note* In this way you don't need to install the library and you can make
+changes in the library without needing to reinstall all the time.
+
+
+
+
+4. Using the library to compile your program:
+--------------------------------------------
+
+ In order to compile your program you'll have to set your compiler to search
+the header files in the directory where the Turbo Vision are installed. This
+is usually achieved using the -I command option. Here is an example: suppose
+the prefix is /usr/local then the headers will be installed to
+/usr/local/include/rhtvision So you'll have to use
+-I/usr/local/include/rhtvision as command line option for the compiler.
+ All TV programs includes tv.h header and no other headers. To avoid pulling
+a huge header and a lot of definitions TV have a "request" system. Suppose
+you want to use the TView class, then you add to your source code:
+
+#define Uses_TView
+#include <tv.h>
+
+ Take a look at the examples and tutorial to see real word examples. The
+point is that you never do things like:
+
+#include <tv/view.h>
+
+ This works, but could change in the future.
+ If you want to make your application more portable include the standard C
+headers using definitions like Uses_stdio. This will save time because the
+header will be included just once (the library could need to request it from
+its own headers) and will solve some portability problems. To learn more
+about read the include/compatlayer.h file and take a look at the files
+located in the compat directory.
+ In order to link your TV application you'll have to provide the name of the
+library and the path where the library is installed.
+ To simplify the above mentioned task the library provides a small program
+called "rhtv-config". This program can be used to know the paths from a
+script or makefile. Running the program without arguments will print the
+usage information. Here is an example for a POSIX shell and the gcc
+compiler:
+
+$ gcc -o tv_logo `rhtv-config --include` tv_logo.cc `rhtv-config --dir-libs` `rhtv-config --dlibs`
+
+ It compiles one of the example found in the examples/desklogo directory.
+ For those not familiar with the above syntaxis: the reverse quotes are used
+to execute a program and replace the text with the output of the executed
+command. For the example I used for the include directory it means that:
+
+$ gcc -o tv_logo `rhtv-config --include`
+
+ Is equivalent to:
+
+$ gcc -o tv_logo -I/usr/local/include/rhtvision
+
+ Currently it works only for systems using gcc. If you are interested in
+applying this concept to other of the supported compilers consider helping me
+with some information and tests.
+ Note the tool supports a switch for dynamic linking and static linking.
+Currently static linking really means "link statically with TV and
+dynamically with the rest of libraries". This is just to allow users to
+distribute programs that doesn't need downloading TV itselft. Also note that
+when linking dynamically you only have to indicate rhtv library, that's
+because the library was linked providing its dependencies, but when you link
+statically you have to list all the dependencies, sometimes this is long. In
+my Linux system it the list of dependencies is: -lstdc++ -lncurses -lm -lgpm
+-lX11 -lXmu
+
+
+
+
+5. Linux/UNIX dynamic libraries:
+-------------------------------
+
+ The configure/make process generates it.
+ My tests shows that a small TV example (examples/dyntxt) is only 14Kb
+long when linked dynamically and without debug information. But you should
+know that dynamically linked executables are slower than static ones,
+specially when you call a lot of small and fast library functions, that's
+because the address resolution overhead.
+
+
+
+
+6. Libraries needed:
+-------------------
+
+ Consult the doc/install/tools.txt file.
+
+
+
+7. Examples:
+-----------
+
+ I included a collection of over than 13 examples I got from the net and
+ported to this TV. The examples are shipped only with the sources
+distribution. See the examples directory for more information.
+ For targets using the gcc compiler you can run:
+
+$ make examples
+
+ To compile all examples. You can also make any of the examples by changing
+to the example/example_name directory and running:
+
+$ make -f name_of_the_example.mkf
+
+ If you are using Borland tools you must use:
+
+> make -f name_of_the_example.bmk
+
+ Currently Microsoft's nmake is not supported. Please contact me if you know
+about the MSVC command line usage and want to help with it.
+
+
+
+
+
+8. Dialog Editor:
+----------------
+
+ In the examples directory you'll find a directory called dlgdsn. This
+directory contains sources for a dialog editor. It was created by Warlei
+Alves and he asked me to maintain it. Right now I'm just including it in the
+package and adapted it to compile with the last release of TV. I also made it
+work under DOS and not only Linux. If enough people gets interested I think
+we can do a good tool from it, but as I use EasyDiag (a library to easilly
+generate dialogs) I don't have much interest on fixing all the bugs in the
+dialog editor.
+
+
+
+
+
+9. Targets supported, limitations:
+---------------------------------
+
+ The library compiles and runs in FreeBSD, DOS, Linux, QNX, Solaris and
+Win32 systems. Only i386 is fully tested, but the code also works for Alpha,
+ARM, HPPA, Itanium, Power PC and SPARC; we need volunteers to deeply test
+those platforms. The demo program compiles for all the mentioned
+architectures but I think there are some endian details that must be solved,
+I fixed the ones that were visible. Joel Soete reported some success using
+Linux+HPPA+gcc 3.0. All the other were tested using remote machines found in
+the Source Forge's compiler farm and H.P. Test Drive.
+ Starting with TV 2.0.0 we use the concept of drivers. Most drivers have
+documentation in the doc directory explaining their limitations and
+configuration options.
+
+
+
+
+
+10. CPU usage:
+-------------
+
+ Since v1.0.8 the TProgram::idle() member releases the CPU to the OS. If for
+some reason you want to eat 100% of the CPU or you want to use a methode
+different than the used by this function just set TProgram::doNotReleaseCPU
+to 1 and the class won't release the CPU.
+ For Linux I just do a usleep(10), that's sleep for 10 micro s. For djgpp
+I call to the __dpmi_yield() function. Note that you could use usleep for
+both (DOS and Linux) but in this case you should sleep for more than 18.2 ms
+to let djgpp's sleep really release the CPU. I think is easier to just call
+__dpmi_yield() and explicitly release the CPU, in this way you sleep the
+minimal amount of time.
+
+
+
+
+
+11. Notes about international support:
+-------------------------------------
+
+ The configuration script detects if the internationalization support is
+available in your system.
+ For Linux that's part of the standard C library and all is provided as
+dynamic libraries so it doesn't impact the memory usage.
+ For DOS that's provided by the gettext package (gtxtXXXb.zip). Versions of
+gettext prior to 0.10.37 are relative small and I think the memory used by it
+is OK and you should try to use it. Since 0.10.37 libintl.a recodes the
+strings on the fly, for that it needs libiconv (licvXXb.zip). This library is
+a huge set of conversion tables, those tables include chinese, japanese and
+korean codes, it makes the tables really huge and the size of programs linked
+with it increases more than 800 Kb (more than 600 Kb using UPX). In this case
+you could:
+a) Just use an old version of gettext, very recommendable.
+b) Generate programs with international support only when really needed.
+ If you choose the second option you must configure the library to use
+international support. I provide a dummy international library. This library
+provides the functions that gettext provides but they do nothing.
+ Why? What is the purpose? By doing it if you don't have international
+support at configuration time but you install it latter no recompilation is
+needed. You can also configure with international support and then create
+applications without it just linking with this library. Additionally you can
+configure the library to use the dummy version even if gettext is installed
+(--force-dummy), that's a good option if you only need to create a few
+applications with international support.
+ This library is compiled and installed with the libtvfintl.a name. If you
+don't have international support or want to disable it to reduce the size of
+a particular application you must link with this library
+ If you want to disable the fake library and all the internationalization
+support use the --no-intl configuration option.
+ Note: Turbo Vision have its own recoding facilities so you don't need
+libiconv.
+
+
+
+
+12. How to submit a patch:
+-------------------------
+
+ The simplest way is running a diff between your current directory and a
+copy of the library as you downloaded it. Don't forget to specify the exact
+version of the distribution and the purpose of the patchs. Use the unified
+mode (-u), this mode is the best for humans ;-)
+
+
+
+
+13. Memory Debuggers:
+--------------------
+
+ The library supports the MSS memory debugger version 1.2.1 for DOS. The
+code have special provisions to workaround some limitations in MSS. To use it
+just configure the library using the --with-mss option. You'll need to link
+with the mss library as explained in the mss documentation and as shown in
+the examples. MSS should work for Linux but I didn't test it.
+ If you know about other memory debugger and you need to introduce some
+changes in the library contact me.
+
+
+
+
+14. Special thanks:
+------------------
+
+They goes to the people listed in THANKS file. If I omitted you please let me
+know.
+
+
+
+
+15. Contact information:
+-----------------------
+
+Salvador E. Tropea (SET)
+Curapaligue 2124
+3 de Febrero, Caseros
+(1678) Bs.As. Argentina
+
+Phone: (+5411) 4759-0013
+
+e-mail: salvador@inti.gov.ar, set@computer.org, set@ieee.org
+http: www.geocities.com/SiliconValley/Vista/6552/
+ www.geocities.com/set-soft/ (alias of the above mentioned)
+
+
+
+Enjoy, SET