			SWI-Prolog for Windows
			    Jan Wielemaker
			       06/05/94


The file pl-win.zip contains SWI-Prolog for  Windows.  It  is  a port of
version 1.8.11 of SWI-Prolog.  SWI-Prolog  runs   in  a simple MS-Window
providing traditional stream-based interaction.

Status:
=======

Beta test version.  Please report problems to jan@swi.psy.uva.nl.


Copyright:
==========

SWI-Prolog may be  distributed  freely   for  non-commercial  use.   See
pl\licence for a more complete description of your rights.


Requirements:
=============

386/486/pentium based PC running MS-Windows 3.1.  SWI-Prolog is compiled
using the WATCOM 32-bit C/C++ compiler and   should run on machines with
and with or without floating point   coprocessor.   Minimum memory usage
will be about 1  MB.   You'll  probably  need   at  least  4  MB  to run
SWI-Prolog under Windows.  Please report your experiences.


Installation:
=============

Unpack the zip file from C:, creating a directory c:\pl.  If you want to
install in another directory, define the   environment variable SWIPL to
point  to  the  main  direcotry.    The    executable   is   located  in
%SWIPL%/bin/pl.exe.  It looks  for   %SWIPL%/startup/startup.pc  for its
startup file and the directory %SWIPL%/library for the Prolog library.

Create a `New Program Object' using the Window Program Manager's `new...'
option.  The fields should be:

	Description:		SWI-Prolog
	Command Line:		c:\pl\bin\pl.exe
	Working Directory:	The place you work

Modify `Command Line' if you installed SWI-Prolog into another directory.


Configuration of the console dimensions:
========================================

The stream-based console window is a  completely separate library, using
its own configuration info.  It will  look at two environment variables:
"CONSOLE" and the base-name of the running  program ("PL" if you use the
default configuration).  Options in "PL"   overrule  those in "CONSOLE".
Options in "CONSOLE" apply to any application compiled using the console
library.  The options variable should contain a string of the form

	<name>:<value>{,<name>:<value>}

Where <name> is one of:

	<name>	default		description
	sl	200		Number of lines you can scroll back.
				There is no limit, but the more you
				specify the more memory will be used.
				Memory is allocated when data becomes
				available.
	rows	24		Initial number of lines
	cols	80		Initial number of columns
	x	CW_USEDEFAULT	X-coordinate of the top-left corner.
	y	CW_USEDEFAULT	Y-coordinate of the top-left corner.
				
You will normally specify this in your autoexec.bat file.  Here is
what I use:

	set CONSOLE=sl:600,x:400,y:400


Windowing and Graphics
======================

SWI-Prolog itself has  no  graphical   capabilities.   Graphics  can  be
provided by the XPCE toolkit, for which   an MS-Windows version is under
development and will soon be  available   for  public  release.  XPCE is
*not* free software.  The licence conditions   neither the price for the
Windows version is decided yet.   Contact xpce-request@swi.psy.uva.nl if
you are interrested.


Filenames:
==========

All filenames are internally handled in   a Unix compatible format: they
are lowercase, the directories are  separated   with  a '/' and absolute
files are of the form  /<drive>:/...    Filenames  will  be converted to
DOS/Windows format just before invoking the C-library functions.

Filename expansion will translate `~' to  the environment variable HOME.
Constructs  of  the  form  $VAR  in    filenames  are  expanded  to  the
corresponding environment variable.  DOS %VAR% is not recognised.

The user may specify filenames either using   DOS format or Unix format.
Unix format should be used in source-files that   need to be run both on
the Unix and DOS/Windows version.

	
Features and bugs specific to this version:
===========================================

	* Dynamically expanding runtime stacks using a stack-shifter.

	* Garbage collection works.

	* Fixed C-stack of 128 KB (limits depth of unification and
	  various other recursive tasks; does not limit normal Prolog
          recursion).

	* GNU-Readline 1.2 based input editor that allows for GNU-EMACS
	  like editing of the command line.  This input editor runs on
	  top of a simple, still incomplete I/O window.	 Features:

	  	* Command history using ^P, ^N
		* Cursor movement using ^B, ^F, etc.
		* Many more; just try the GNU-Emacs bindings!
		* End-of-file is ^D.
		* Completion on files and atoms using TAB, viewing
		  alternatives using ESC-?
		* Window may be resized and scrolled.

	  Bugs:

		* Showing matching bracket does not work
		* Resizing the window while the line is wrapped gives
		  bad results.

	* save/[1,2] and save_program/[1,2] do not work.

	* profile/1 does not work.

	* load_foreign/[2,5] does not work.

	* The statistics/[0.2] reported CPU-time also includes idle time.

	* help/1 just dumps it output in the console window.  Should be
	  a separate window some day ...

	* Control-C cannot be used to break loops.

	* Fatal errors will often just cause the window to disappear.


Boot compilation:
=================

The file pl\startup\startup.pc is  a   `Prolog  Intermediate  Code' file
created from the Prolog sources in the   boot subdirectory.  If you want
to change anything there, you can recreate   the  startup file using the
command:

	pl.exe -o startup/startup.pc -b boot/init.pl -c boot/load.pl


Sources:
========

The common source for all platforms is  available using anonymous ftp to
swi.psy.uva.nl,  directory  pub/SWI-Prolog.   The   Windows  version  is
compiled using the 32-bit WATCOM C/C++   compiler (version 9.5).  If you
decide to port it to another compiler  (for example GCC), please forward
me the changes.
