/popeye

Popeye is a chess problem solving and testing software with strong support for fairy chess and heterodox genres. For more information cf. topic "Popeye (chess)" on http://en.wikipedia.org/

Primary LanguageCGNU General Public License v2.0GPL-2.0

*********************** P O P E Y E **********************

Popeye is a program to solve a lot of fairy-chess-problems.
If you enter at least a (fairy-) chess-position and a stipulation
Popeye tries to solve this (fairy-) chess position.
Until now you can enter your input with one out of the
following languages:
english, french, german
For german examples look at the directory BEISPIEL.
Whole language dependent syntax and all the possibilities
of Popeye can be found in the language dependent *.txt files.
For any additional information have a look at the file history.txt .

HAVE FUN !


Contents of this distribution:
	readme.txt:     This file. Contains hints for porting and compiling.
	lizenz.txt:     Popeye License.
	history.txt:    Info about POPEYE-development during his life-time.
	py-????.txt     Documentation written in ????-language.
	makefile.unx    Makefile for unix compilation.
	coderule.txt    Some hints on coding style
	py.h:           Contains constant and type definitions.
	pydata.h:       Contains all extern declared data.
	pymsg.h:        Contains constant definitions for POPEYE I/O.
	pyproc.h:       Contains ANSI-C or K&R-C declarations of all procedures.
	py[1-6].c:      Contain the C-Source of all procedures.
	pyhash.c:       Contains the C-Source of POPEYE dynamic hashing.
	pyio.c:         Contains the C-Source of POPEYE I/O.
	pytime.c:       Contains the C-Source of POPEYE time-measurement.
	pysignal.c:     Contains the C-Source of POPEYE signal handling.
        pydata.c:       Contains only includes and a define to generate the
			the object file for all global data.
	pylang.c:	Contains language dependent procedures.
	pymsg.c:        Contains the Message-file related I/O-procedures.
	py-????.msg:    Message-file for POPEYE I/O in ????-language.
	pie-????.txt:   File for POPEYE LaTeX output in ????-language.
	genpystr.c:     C-Source to convert py-????.msg to py-????.str .
			POPEYE needs py-????.str for language-dependent I/O.
	BEISPIEL:	Directory containing german testfiles 
	EXAMPLES:	Directory containing english testfiles 
	DHT:		Directory containing the dynamic hashing support C-Source files.
	LATEX:		Directory containing files for LaTeX support.
	scripts:	Some bash scripts useful for developers
	toolchains:	contain makefile additions for different tool chains

Motto:
There is no C code portable to every compiler and every machine.

Nevertheless we want to provide C code as portable as possible. But
there are some problems which can be avoided if you read these few
lines, before compiling POPEYE by yourself.  If you do not want to
read any further, take a glance at the makefile.unx .

A lot of compiling this sources was done with the GNU C-Compiler
Version 4.xx in ANSI-mode.

On all these machines this sources compile without any problems.

1. Enumerations:
	Your compiler may know enumeration types, but handles them
	little strange. Enumerations are only used in py.h and only
	there changes have to be applied. For your convenience
	we provide two awk scripts:
		todef.awk and toenum.awk
	The first translates py.h - which uses enumeration types -
	to a version with #defines instead of enumerations.
	The second does the reverse job, and produces from py.h with
	#defines the enumeration form. If you change/add something
	at this locations, be sure to obeye the statet rules there,
	so that later it is always possible to switch from one
	version to the other.

2. One special candidate for porting-problems is pytime.c.
	It should compile for every UNIX. But there
	may be some problems with the #includes.
	Be sure to include <sys/params.h> only once.
	A special compile switch for TURBO-C (this file is the
	only file which uses this switch [genpystr.c also uses this or "MSC"
	- TLi]) is provided. For other DOS-compilers it is likely you have
	to adapt or completely rewrite this code.

3. Compiling for UNIX, Cygwin, MingW, MacOS X:
	Copy or link the file makefile.unx to makefile.
	The default tool chain used is gcc, with the target platform
	equal to the host platform (i.e. no cross compilation).
	To cross compilation, set the TOOLCHAIN parameter in the make
	command; e.g.:
		make TOOLCHAIN=cross-i386-mingw32msvc
	to cross compile from Linux for MingW (Windows 32). See the
	toolchains directory for support toolchains; and,of course,
	feel free to add other tool chains!

4. Borland C++BuilderX
	Copy or link the file makefile.unx to makefile.
	Make sure that the C++BuilderX (e.g. bcc32.exe) executables
	are in your PATH of a Cygwin bash shell. Do
        	make TOOLCHAIN=C++BuilderX
        In principle, this should also work for C++Builder (without
        the X), but hasn't been tested, feedback is welcome!

5. Microsoft Visual C++
	Copy or link the file makefile.unx to makefile.
	Make sure that the C++BuilderX (e.g. bcc32.exe) executables
	are in your PATH of a Cygwin bash shell. Do
        	make TOOLCHAIN=MSVC6
        As "MSVC6" tells you, this was tested with Visual C++ 6. In
        principle, later Visual C++s (Visual Studios) should work as
        well, but they haven't been tested; feedback is welcome!

6. On older (than MacOS X) Macintosh Computers:
	Popeye should compile with MPW without any problems.
	The compile switch  macintosh  will always be set by MPW !

	hello out there !
	this is information for mac-user who want to work with POPEYE.
	the only way we know until now to get input to Popeye is:	
		create an input file (word, ...).
		use the copy-function from the edit-menu.
		then leave your editor and start py ( or just switch to py,
			if you	use MultiFinder or System 7 ).
		now use the paste-function from the edit-menu.
		mark your input-data and press the enter-key or
			command - enter ( like executing a tool or
			command in Apple=s MPW ).
		good luck .

	ps.:	This macintosh version is a release from Stefan Brunzen !	
	You can contact Stefan if you have problems or suggestions for 	
	a better implementation.

7. DOS and GCC
	Only for 80386 and higher !
	Popeye should compile without any problems.
	If you've a working installation of GCC (DJGPP) just
	copy or link the file makefile.unx to makefile.
	Adjust the PATH's of your DJGPP installation accordingly.
	Go to the DHT directory and copy or link the file 
	        makefile.unx to makefile.
	Be sure to define UNIX. DO NOT DEFINE DOS !
	To create an executable pydos32.exe, you have to add a line
		where your preferred 32-Bit extender is concatenated
		to py to generate the binary.
	This may take some time on a 80386.

8. Hashing and low memory:
	If you are low on memory, you can save some space
	if you edit the dhtvalue.h of the dht package, and
	link only
		dhtsimpl.o and dhtbcmem.o
		dht.o, dhtvalue.o
	Remove the entries for the
	following three types:
		dhtStringValue, dhtCompactMemoryValue,
		dhtMemoryValue
	in these three places:
		dhtValueType
		dhtValueTypeToString
		dhtProcedures
					ElB 3.May 1994

-----  PY.COM  ---- simple command procedure for compiling and linking
$ compile == "cc/define=(VMS,HASH)"
$ delete py*.obj;*
$ delete py.exe;*
$ write sys$output "Compiling pyhash.c..."
$ compile pyhash
$ write sys$output "Compiling py1.c..."
$ compile py1
$ write sys$output "Compiling py2.c..."
$ compile py2
$ write sys$output "Compiling py3.c..."
$ compile py3
$ write sys$output "Compiling py4.c..."
$ compile py4
$ write sys$output "Compiling py5.c..."
$ compile py5
$ write sys$output "Compiling py6.c..."
$ compile py6
$ write sys$output "Compiling pydata.c..."
$ compile pydata
$ write sys$output "Compiling pyio.c..."
$ compile pyio
$ write sys$output "Compiling pylang.c..."
$ compile pylang
$ write sys$output "Compiling pymsg.c..."
$ compile pymsg
$ write sys$output "Compiling pytime.c..."
$ compile pytime
$ define lnk$library sys$library:vaxcrtl
$ write sys$output "Linking py.exe..."
$ link/exe=py.exe py.opt/option
-----  PY.OPT  -----   optionfile for the linker
py1
py2
py3
py4
py5
py6
pydata
pyio
pylang
pymsg
pytime
pyhash
[.dht]dht
[.dht]dhtvalue
[.dht]dhtcmem
[.dht]dhtsimpl
[.dht]dhtstrin
[.dht]dhtbcmem
[.dht]dhtmem
-----  DHT.COM  -----  command procedure for compiling the DHT-files
$ delete *.obj;*
$ compile == "cc/define=VAXC"
$ compile dht
$ compile dhtvalue
$ compile dhtcmem
$ compile dhtmem
$ compile dhtsimpl
$ compile dhtstrin
$ compile dhtbcmem
---------------------
						TLi, 06.05.1994