ftp.nice.ch/pub/next/developer/languages/smalltalk/squeak-2.0-0.3d109.NIHS.bs.tar.gz#/squeak-2.0/nextstep

@design/
 
@garbage/
 
BoTypes.h
[View BoTypes.h] 
English.lproj/
 
Info_Text.rtf
[View Info_Text.rtf] 
LICENCE.rtf
[View LICENCE.rtf] 
Makefile
 
Makefile.postamble
 
Makefile.preamble
 
PB.gdbinit
 
PB.project
 
README.html
 
README.txt
[View README.txt] 
SQ.tiff
 
SQ48x48.tiff
 
SQ96x96.tiff
 
SqApplication.h
[View SqApplication.h] 
SqApplication.m
[View SqApplication.m] 
SqButton.h
[View SqButton.h] 
SqButton.m
[View SqButton.m] 
SqCmdKeyWindow.h
[View SqCmdKeyWindow.h] 
SqCmdKeyWindow.m
[View SqCmdKeyWindow.m] 
SqPreference.h
[View SqPreference.h] 
SqPreference.m
[View SqPreference.m] 
SqView.h
[View SqView.h] 
SqView.m
[View SqView.m] 
SqViewMegaPixel.h
[View SqViewMegaPixel.h] 
SqViewMegaPixel.m
[View SqViewMegaPixel.m] 
Squeak.app/
 
Squeak.iconheader
 
SqueakVM-2.0h-nextstep-3.3
 
Squeak_main.m
[View Squeak_main.m] 
VERSION
 
Version.h
[View Version.h] 
sq.m
[View sq.m] 

README.html

<!doctype HTML PUBLIC "-//IEFT//DTD HTML//EN//2.0">
<html>
<head>
	<title>Squeak for NeXTSTEP</title>
	<META  name="description" 
		content="NEXTSTEP port of the Squeak Smalltalk.">
	<META  name="keywords" 
		content="NEXTSTEP, Smalltalk, Squeak, OPENSTEP, Rhapsody, source, virtual machine, front-end, GNU, free software">
</head>

<body>
<h1 align=center>Squeak for NeXTSTEP</h1>

<p align=center><img src="SQ.tiff">

<p align=center>
	<a href="http://squeak.cs.uiuc.edu/#what">Squeak</a> is a 
	<a href="http://www.gnu.org/philosophy/free-sw.html">free</a>
	Smalltalk implementation.
	
	
<p align=center>
	<b>Squeak for NeXTSTEP</b> is a native 
	<a href="http://www.apple.com/enterprise/openstep/index.html">NEXTSTEP</a>
	front-end for the Squeak Smalltalk.

<br><br>

<h2>Index</h2>

<ul>
	<li><a href="#d">Downloading</a>
	<li><a href="#r">The Read-me file</a>
	<ul>
		<li><a href="#v">Versions</a>
			<ul>
			<li><a href="#vv">What's new in this version?</a>
			</ul>
		<li><a href="#f">Features of Squeak.app</a>
		<li><a href="#c">Compiling</a>
		<li><a href="#w">Wish list</a>
		<li><a href="#l">Licence</a>
		<li><a href="#a">Author</a>
	</ul>
</ul>


<a name="d"></a><h2>Downloading Squeak for NeXTSTEP</h2>

<p><ul>
<!------------------------------->
<li>
	<b>The Sources only</b>: You will need to <a href="#c">compile</a> the 
	application on NEXTSTEP 3.3. 
	

	<br>Download:<ul>
	<li>
<a href="ftp://ftp.afaa.asso.fr/users/pascal/NAME-S">
		NAME-S from <code>ftp.afaa.asso.fr</code></a>
		[SIZE-S bytes].
		
	<li>
<a href="ftp://ftp.peanuts.org/peanuts/NEXTSTEP/developer/languages/smalltalk/NAME-S">
		NAME-S from <code>ftp.peanuts.org</code></a>
		[SIZE-S bytes].
	</ul>

	<p>
<!------------------------------->
<li>
	<b>The Sources with the quad-fat application</b>:
	Contains the source tree, plus the compiled quad-fat Squeak application, 
	plus the quad-fat squeak headless executable. 

	<br>Download:<ul>
	<li>
<a href="ftp://ftp.afaa.asso.fr/users/pascal/NAME-BS">
		NAME-BS from <code>ftp.afaa.asso.fr</code></a>
		[SIZE-BS bytes].
		
	<li>
<a href="ftp://ftp.peanuts.org/peanuts/NEXTSTEP/developer/languages/smalltalk/NAME-BS">
		NAME-BS from <code>ftp.peanuts.org</code></a>
		[SIZE-BS bytes].
	</ul>


	<p>
<!------------------------------->
<li>
	You will need also to download a <b>Squeak Image</b>, 
	and the <b>Squeak Sources</b>. 
	<br>You may use either the version 2.0 or the version 2.1 of the Smalltalk 
	image (both should be compatible with the version 2.0 of the virtual 
	machine compiled in the Squeak application).
	
	<p><b>Version 2.0</b>:
	<ul>
		<li>If you have access to a Macintosh, (the SEA will crash Executor on NeXTSTEP), you may download the image as a BinHex/Self Extractable archive:<br>
<a href="ftp://st.cs.uiuc.edu/pub/Smalltalk/Squeak/2.0/Squeak2.0.sea.bin">
			Squeak2.0.sea.bin</a> [1870720 bytes], or else,
		<li>you may download the image & changes as plain files, gziped (from <code>ftp.afaa.asso.fr</code>):<br>

<a href="ftp://ftp.afaa.asso.fr/users/pascal/Squeak/unix/2.0/image/Squeak2.0.image.gz">Squeak2.0.image.gz</a> [1632266 bytes] and
<a href="ftp://ftp.afaa.asso.fr/users/pascal/Squeak/unix/2.0/image/Squeak2.0.changes.gz">Squeak2.0.changes.gz</a> [575 bytes], or not compressed (from <code>st.cs.uiuc.edu</code>):<br>
<a href="ftp://st.cs.uiuc.edu/pub/Smalltalk/Squeak/unix/2.0/image/Squeak2.0.image">Squeak2.0.image</a> [3348816 bytes] and
<a href="ftp://st.cs.uiuc.edu/pub/Smalltalk/Squeak/unix/2.0/image/Squeak2.0.changes">Squeak2.0.changes</a> [2963 bytes].
	</ul>

	<p><b>Version 2.1</b>:
	<ul>
		<li>If you have access to a Macintosh, (the SEA will crash Executor on NeXTSTEP), you may download the image as a BinHex/Self Extractable archive:<br>
<a href="ftp://st.cs.uiuc.edu/pub/Smalltalk/Squeak/2.1/Squeak2.1.sea.bin">
			Squeak2.1.sea.bin</a> [2058880 bytes], or else,
		<li>you may download the image & changes as plain files, gziped (from <code>ftp.afaa.asso.fr</code>):<br>
<a href="ftp://ftp.afaa.asso.fr/users/pascal/Squeak/unix/2.1/image/Squeak2.1.image.gz">Squeak2.1.image.gz</a> [1622458 bytes] and
<a href="ftp://ftp.afaa.asso.fr/users/pascal/Squeak/unix/2.1/image/Squeak2.1.changes.gz">Squeak2.1.changes.gz</a> [186197 bytes], or not compressed (from <code>st.cs.uiuc.edu</code>):<br>
<a href="ftp://st.cs.uiuc.edu/pub/Smalltalk/Squeak/unix/2.1/image/Squeak2.1.image">Squeak2.1.image </a> [3412308 bytes] and
<a href="ftp://st.cs.uiuc.edu/pub/Smalltalk/Squeak/unix/2.1/image/Squeak2.1.changes">Squeak2.1.changes </a> [643488 bytes].

	</ul>
	
	
	
	<p><b>Sources V2</b>: in any case, you shoud download the Smalltalk 
	sources:
	<ul>
		<li>If you have access to a Macintosh, (the SEA will crash Executor on NeXTSTEP), you may download the image as a BinHex/Self Extractable archive:<br>
<a href="ftp://st.cs.uiuc.edu/pub/Smalltalk/Squeak/2.0/SqueakV2.sources.sea.bin">
			SqueakV2.sources.sea.bin</a>, 
			sources version 2.0 [1408768 bytes].
		<li>you may download the sources as a plain file, gziped (from <code>ftp.afaa.asso.fr</code>):<br>
<a href="ftp://ftp.afaa.asso.fr/users/pascal/Squeak/unix/image/SqueakV2.sources.gz">SqueakV2.sources.gz</a> [1365855 bytes], or not compressed (from <code>st.cs.uiuc.edu</code>):<br>
<a href="ftp://st.cs.uiuc.edu/pub/Smalltalk/Squeak/unix/image/SqueakV2.sources">SqueakV2.sources</a> [5602467 bytes].
	</ul>
	
	<p>

</ul>



<a name="r"></a><h2>The README file of Squeak for NeXTSTEP</h2>

<code>
	
<a name="v"></a><h3>Versions</h3>

<p>
This is version VERSION of the Squeak User Interface for NeXTSTEP 3.3. 
(It may run on OPENSTEP 4.2 too, you'll tell me).
This version, like the previous ones, integrates the version 2.0 of the Squeak virtual machine.


<p>
This release is distributed without the Squeak image. You can retrieve it from http://squeak.cs.uiuc.edu/ (see <a href="#d">the downloading section</a>).
Note that theorically, both the versions 2.0 and 2.1 of the image can be used with the version 2.0 of the virtual machine, but I've only tested the 2.0 image.

<p>
I'll wait for about a month for <a href="mailto:pjb@imaginet.fr">bug reports</a>, and then name it <em>Squeak.app for NEXTSTEP version 1.0</em>. Then it'll be on OPENSTEP.


<a name="vv"></a><h4>What's new in this version?</h4>

<p><b>0.3d109:</b>
<ul>
<li>Now, it is able to display correctly even on little-endian processors. Note however that I could not test with actual 16 and 32-bits. If you have a color screen, please try these depths and tell me how it comes.
</ul>


<p><b>0.3d104:</b>
<ul>
<li>Up to now, the displayed is not correct on little-endian processors. Check back here next week for a version supporting these processors.
<p>
<li>Corrected <a href="#b">The Annoying Bug</a>.
<p>
<li>The default window position and size is center of screen 512&mult;342. 
	  That should be more usefull to first-time users.
</ul>



<p><b>0.3d91:</b>
<ul>
<li><a name="b"><b>The Annoying Bug</b>: Thanks to Steve Dekorte who reports this annoying bug:

<p>The path of the image selected in the preference panel at launch time is written to the defaults but not enacted at the same time. That's annoying because it make Squeak.app loop arround its preference panel when first launched.
<p>
Pending a new version correcting this bug, the best way is to set the default "by hand", before the first launch of Squeak.app; for example:
<pre>
	dwrite Squeak imagePath /users/steve/squeak_2.0.image
</pre>
<p>Be sure to check-back here soon, there'll be a new version.

<p><li>
	  Now the Squeak.app wears the Squeak Icon (Yes, I know, it's one of the 
		most outstanding improvments !-)

<p><li> The binaries are compiled for these architectures: m68k, i386, sparc &amp; hppa.
	  However, I never tested them on i386, sparc, or hppa. Please try it on
	  these architectures and tell me how it went.

<p><li> A fat headless virtual machine is compiled and distributed in:
		nextstep/SqueakVM-2.0h-nextstep-3.3
	  It merely uses the sqXWindow.c main with the headless option. I've not
	  even tested it, just compiled it on NeXT. That means that it does not
	  use the NeXT defaults, but only the environment variables and 
	  command-line arguments.
		
<p><li> All the usual Squeak parameters can be set either:
	<ul>
		<li> in the Info/Preference panel, or
		<li> as environment variables, or
		<li> as arguments on command-line invocation.
	</ul><br>
	  The noTitle, fullScreen, sleepWhenHidden and mouseButton preferences
	  are taken into account as soon as OK is clicked. Other options are
	  enacted only on next launch.
	 
<p><li> fullScreen and noTitle options are handled. Unfortunately, I don't want
	  to mess too much with the Smalltalk&lt;-&gt;Objective-C interactions, so the
	  Smalltalk objects are not informed when the "screen" size changes, or
	  when the fullScreen option switches. So you have to use the 'restore
	  display' item and the Set Full Screen On/Off items in the Smalltalk 
	  menu to synchronize their points of view.

<p><li> There's a character conversion table from NeXT encoding to 
	  Macintosh encoding, found in the SqView.m source.

<p><li> The interrupt key (Command-.) is implemented.
	  All command keys other than 'h' &amp; 'q' are transmitted to Squeak.
	  Command-q and Command-h
	  are dispatched to the NeXT application to allow going back to the
	  NeXT environment even when the fullScreen option is on. 
	  This is done by removing all command-key equivalents but 'h' and 'q' 
	  from the NeXT menu.
	
<p><li> I've added an optimized subclass of SqView that's used when we infer 
	  that a MegaPixelDisplay is available, fullScreen is ON, and 1, 2 or 
	  8-bit depth is set in Smalltalk. In these cases, the Smalltalk bitmap
	  is directly copied to the video memory (via /dev/vid0).
	<br>
	  On a NeXTstation Turbo, the display speed improvement measured with:
<pre>
	  	F1:=nil.
		Transcript show:(Time millisecondsToRun:
			[F1:=Form makeStar.(1 to: 100) do:[:i|F1 display]])asString;cr.
</pre>
	  is given in this table:
<pre>
                    MegaPixel  DisplayPostscript
                    ---------  -----------------
            1->2:     407 ms        927 ms
            2->2:     912 ms       1437 ms
            8->2:    1224 ms       1588 ms
</pre>
	<p>  A MegaPixelDisplay is deemed available when:
		<ul>
			<li> it's a MC680x0 CPU,
			<li> there is exactly ONE screen,
			<li> its size is 1120x832,
			<li> its depth is 2 bit/pixel.
		</ul>
	 <p> However, the rowByte is assumed to be 1120/4; that's not true when
	  (dma_chip==313), but this can be determined only in kernel space, 
	  meaning that a device driver should be written to detect it, unless
	  the DKIOCGFBINFO ioctl call tells it, but who knows? (It's not
	  documented anywhere).	
	  <p>That's the joys of proprietary software. LONG LIFE 
	  	<a href="http://www.gnu.org/">GNU</a> &amp; 
		<a href="http://www.linux.org/">LINUX</a>!
	  <p>If you have rowByte problems with your NeXTstation, you may change the
	  value used in SqViewMegaPixel +initialize, and please let me know.
	  <p>
	  A similar subclass of SqView could be added for color screens, and 
	  they could be extended to deal with white-hardware PC, but I'll leave
	  that as an exercice to the reader.
</ul>

<p><b>0.2d14:</b>
<ul>
<p><li> The distributed sources can be compiled "out-of-the-box".
<p><li> The full screen on/off implementation has been given a try...
<p><li> The DEL key is mapped to BS for Squeak only interpret BS.
</ul>


<a name="f"></a><h3>Features of Squeak.app</h3>

<p>You can configure in the Info/Preference panel:
<ul>
	<li> all the usual parameters of Squeak,
	<li> the mapping of the modifiers and mouse button to the tree-buttoned 
	  Smalltalk mouse. Have a look at the source to check how non-exclusive 
	  configuration is handled.
</ul>

<p>The preferences are saved as defaults:
<pre>
	dwrite Squeak imagePath /local/src/squeak-2.0/pjb/pjb6.image
	dwrite Squeak 'NXWindow Frame SqueakScreen' '9 53 1057 766 '
	dwrite Squeak heapSize 8388608
	dwrite Squeak stackCacheEntries 16
	dwrite Squeak fullScreen NO
	dwrite Squeak sleepWhenUnmapped YES
	dwrite Squeak noTitle YES
	dwrite Squeak redButton l
	dwrite Squeak yellowButton r
	dwrite Squeak blueButton lm
</pre>
	
The supported Smalltalk screen depths are: 1, 2, 8, 16 and 32-bit.
<p>The Smalltalk screen depths of 1 and 2-bit are mapped to a 2-bit bitmap before rendering on the NeXT screen.
<p>The Smalltalk screen depth of 8-bit is mapped to either 2, 8, 16 or 32-bit depending on the depthLimit of the window.
<p>The Smalltalk screen depth of 16-bit is mapped to a 16-bit bitmap before rendering on the NeXT screen.
<p>The Smalltalk screen depth of 32-bit is mapped to a 32-bit bitmap before rendering on the NeXT screen.
<p>When the fullScreen option is on with a MegaPixel Display, screen depths of
<p>1, 2, and 8-bit are mapped fastly to the 2-bit screen depth, but 16 and 32-bit are mapped the same way than without the MegaPixel Display optimization, thru DisplayPostscript.
<p>The 1, 2, 4, and 8-bit Smalltalk screen depths are based on a fixed palette which is a color palette for 4 and 8-bit, while the 8-bit NeXT screen depth is a gray-level screen. Since one entry of the palette is used to mean `transparent', there's only 3 remaining gray level to be used for 2-bit deep screens.
<p>Note that I only have a black-and-white NeXTstation, so I have no idea of how the colors are rendered on color stations or on NeXTSTEP for Intel.
<p>
<p>The Smalltalk screen width is always a multiple of 32 pixels. The minimum size of the Smalltalk screen window is arbitrarily the Original Macintosh Screen Size: 512x342. (It seems that when the screen is smaller than the size of the Smalltalk menu, it cannot appear).
<p>
<pre>
	-------------------------------------------------------------------
	pascal@despina/p2[151] ../nextstep/Squeak.app/Squeak -version           
	
	2.0/6502 #22 Fri Aug 28 03:12:16 MET 1998 cc
	NEXTSTEP despina Lightning9I 3.3 68040 MC680x0 0.3d89
	No user-defined primitives installed
	
	pascal@despina/p2[152] ../nextstep/Squeak.app/Squeak -help   
	
	Usage: Squeak [<options>] [<imageName>]
	
	<options> are:
		any option interpreted by the Application class (-NX...)
		-notitle             turn off the Squeak window title bar
		-fullscreen          occupy the entire screen
		-lazy                go to sleep when main window unmapped
		-memory <size>[mk]   set initial memory size (default: 5m)
		-ccache <size>       set context cache size (default: 16)
		-version             print version information,then exit
	
	Notes:
		<imageName> defaults to 'squeak.image'.
		-ccache is merely ignored when the virtual machine has not 
				been compiled with CCACHE.
		-fullscreen implies -notitle.
		When you use -notitle on NeXT, you should set the size of the
		window in the defaults, because you won't be able to move/size it:
		dwrite Squeak 'NXWindow Frame SqueakScreen' '8 48 1024 800'
	
	All these options can be better set from the Info/Preference
	panel; they are stored in the user's default database.
	-------------------------------------------------------------------
</pre>
<p>
When you change the size of the window, or change the fullScreen or noTitle options from the NeXT Preferences panel, please use the Redisplay item in the Smalltalk menu to let the Display object learn new screen size.


<a name="c"></a><h3>Compiling</h3>

<p>
You need to have a gmake installed to be able to compile the Squeak part of the project.
<p>
You may compile the whole project from the squeak-2.0 directory, with a mere:
<pre>
   make clean           # to clean everything.
   make develop-app     # to compile a lean nextstep/Squeak.app
   make distrib-app     # to compile a fat  nextstep/Squeak.app 
   make distribution    # to clean and archive a distribution.
</pre>
<p>
Once the Squeak library has been compiled, you may edit-compile-debug cycle the Squeak NeXT application from ProjectBuilder with nextstep/PB.project.

<a name="w"></a><h3>Wish list</h3>

<ul>
<p><li> Optimization for NeXTstation Color, and perhaps for NeXTDimention. (1)
<p><li> Adding user primitives by dynamically loading.                     (2)
<p><li> Bridge between Smalltalk objects and Objective-C objects.          (2)
<p><li> Upgrade the sources to OPENSTEP 4.2.                               (3)
<p><li> Integrate version 2.2 of the virtual machine.                      (3)
<p><li> <a href="mailto:pjb@imaginet.fr">Insert here your own wishes</a>   (2)
</ul>
<p><small>
(1) I most certainly won't endeavor it.
<br>(2) I most probably won't endeavor it, but I would like.
<br>(3) I'll probably do that, if time permits, before the end of the year.
</small>

<a name="l"></a><h3>Licence</h3>
<p>
This notice concerns only the NeXT front-end application, whose sources are 
found in the nextstep subdirectory, and does not necessarily apply to the Squeak Smalltalk virtual machine and the Squeak Smalltalk image.
<p>
For information about the Squeak Smalltalk virtual machine and the Squeak Smalltalk image, pleaser refer to: 
<a href="http://squeak.cs.uiuc.edu/#license">
	http://squeak.cs.uiuc.edu/#license</a>.


<p>
Squeak.app, the Squeak User Interface for NeXTSTEP is a front-end for the Squeak Smalltalk.
Copyright (c) 1998 Pascal J. Bourguignon

<p>
This program is free software; you can redistribute it and/or
modify it under the terms of the version 2 of the GNU General Public License as published by the Free Software Foundation.

<p>
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License hereafter for more details.



	
<a name="a"></a><h3>Author</h3>
<p>
	
	The author of the NEXTSTEP front-end for Squeak is Pascal Bourguignon.
<br>
	<a href="mailto:pjb@imaginet.fr">
		mailto:pjb@imaginet.fr</a>
<br>
	<a href="http://www.imaginet.fr/~pjb/develop/squeak/english/">
		http://www.imaginet.fr/~pjb/develop/squeak/english/</a>
<p>See <a href="http://squeak.cs.uiuc.edu/">http://squeak.cs.uiuc.edu/</a>
	to learn about the genious-level authors of the Squeak Smalltalk.

	
</code>


<small><hr>
<p align="center">
| <a href="/~pascal/english/"><img src="/~pascal/images/home-small.tiff" alt="Back to home"></a> 
| </p>
<hr>
<p><small>If you have any comment regarding this page, please send an 
<a href = "mailto:pjb@imaginet.fr">e-mail to: Pascal Bourguignon</a>.
<br>Last update : Thu Oct  1 05:50:14 GMT+0200 1998
<br>Publishing date : DATEPUBLICATION
</small>
</body>
</html>

README.txt

Squeak is a free Smalltalk implementation.

Squeak for NeXTSTEP is a native NEXTSTEP front-end for the Squeak Smalltalk.

NOTE: For downloading instructions see 
	http://www.imaginet.fr/~pjb/develop/squeak/english/


Index:
======

	Versions
		What's new in this version?
	Features of Squeak.app
	Compiling
	Wish list
	Licence
	Author
	
Versions:
=========

This is version 0.3d109 of the Squeak User Interface for NeXTSTEP 3.3. 
(It may run on OPENSTEP 4.2 too, you'll tell me).
This version, like the previous ones, integrates the version 2.0 of the Squeak virtual machine.


This release is distributed without the Squeak image. You can retrieve it from:
	http://squeak.cs.uiuc.edu/
Note that theorically, both the versions 2.0 and 2.1 of the image can be used with the version 2.0 of the virtual machine, but I've only tested the 2.0 image.


I'll wait for about a month for bug reports (mailto:pjb@imaginet.fr), and then name it 'Squeak.app for NEXTSTEP version 1.0'. Then it'll be on OPENSTEP.


What's new in this version?
---------------------------

0.3d109:
	* Now, it is able to display correctly even on little-endian processors. 
	  Note however that I could not test with actual 16 and 32-bits. If you 
	  have a color screen, please try these depths and tell me how it comes.

0.3d104:
	* Up to now, the displayed is not correct on little-endian processors. 
	  Check back here next week for a version supporting these processors.

	* Corrected 'The Annoying Bug'.

	* The default window position and size is center of screen 512x342. 
	  That should be more usefull to first-time users.

	
0.3d91:
	* The Annoying Bug: Thanks to Steve Dekorte who reports this annoying bug:

	  The path of the image selected in the preference panel at launch 
	  time is written to the defaults but not enacted at the same time.
	  That's annoying because it make Squeak.app loop arround its 
	  preference panel when first launched.

	  Pending a new version correcting this bug, the best way is to set 
	  the default "by hand", before the first launch of Squeak.app; for
	  example:
			dwrite Squeak imagePath /users/steve/squeak_2.0.image
	  Be sure to check-back here soon, there'll be a new version.

	* Now the Squeak.app wears the Squeak Icon (Yes, I know, it's one of the 
		most outstanding improvment!-)

	* The binaries are compiled for these architectures: m68k i386 sparc hppa.
	  However, I never tested them on i386, sparc, or hppa. Please try it on
	  these architectures and tell me how it went.

	* A fat headless virtual machine is compiled and distributed in:
		nextstep/SqueakVM-2.0h-nextstep-3.3
	  It merely uses the sqXWindow.c main with the headless option. I've not
	  even tested it, just compiled it on NeXT. That means that it does not
	  use the NeXT defaults, but only the environment variables and 
	  command-line arguments.
		
	* All the usual Squeak parameters can be set either:
		- in the Info/Preference panel, or
		- as environment variables, or
		- as arguments on command-line invocation.
	  The noTitle, fullScreen, sleepWhenHidden and mouseButton preferences
	  are taken into account as soon as OK is clicked. Other options are
	  enacted only on next launch.
	 
	* fullScreen and noTitle options are handled. Unfortunately, I don't want
	  to mess too much with the Smalltalk<->Objective-C interactions, so the
	  Smalltalk objects are not informed when the "screen" size changes, or
	  when the fullScreen option switches. So you have to use the 'restore
	  display' item and the Set Full Screen On/Off items in the Smalltalk 
	  menu to synchronize their points of view.

	* There's a character conversion table from NeXT encoding to 
	  Macintosh encoding, found in the SqView.m source.

	* The interrupt key (Command-.) is implemented.
	  All command keys are transmitted to Squeak but Command-q and Command-h
	  that are dispatched to the NeXT application to allow going back to the
	  NeXT environment even when the fullScreen option is on. 
	  This is done by removing all command-key equivalents but 'h' and 'q' 
	  from the NeXT menu.
	
	* I've added an optimized subclass of SqView that's used when we infer 
	  that a MegaPixelDisplay is available, fullScreen is ON, and 1, 2 or 
	  8-bit depth is set in Smalltalk. In these cases, the Smalltalk bitmap
	  is directly copied to the video memory (via /dev/vid0).

	  On a NeXTstation Turbo, the display speed improvement measured with:
	  	F1:=nil.
		Transcript show:(Time millisecondsToRun:
			[F1:=Form makeStar.(1 to: 100) do:[:i|F1 display]])asString;cr.
	  is given in this table:
	
					MegaPixel	    Window
					---------     ---------
			1->2:     407 ms        927 ms
			2->2:     912 ms       1437 ms
			8->2:    1224 ms       1588 ms
	  
	  A MegaPixelDisplay is deemed available when:
	  	- it's a MC680x0 CPU,
	  	- there is exactly ONE screen,
		- its size is 1120x832,
		- its depth is 2 bit/pixel.

	  However, the rowByte is assumed to be 1120/4; that's not true when
	  (dma_chip==313), but this can be determined only in kernel space, 
	  meaning that a device driver should be written to detect it, unless
	  the DKIOCGFBINFO ioctl call tells it, but who knows? (It's not
	  documented anywhere).	
	  That's the joys of proprietary software. LONG LIFE GNU & LINUX!
	  If you have rowByte problems with you NeXTstation, you may change the
	  value used in SqViewMegaPixel +initialize, and please let me know.
	  
	  A similar subclass of SqView could be added for color screens, and 
	  they could be extended to deal with white-hardware PC, but I'll leave
	  that as an exercice to the reader.
	  
0.2d14:
	* The distributed sources can be compiled "out-of-the-box".
	* The full screen on/off implementation has been given a try...
	* The DEL key is mapped to BS for Squeak only interpret BS.



Features of Squeak.app:
=======================

You can configure in the Info/Preference panel:
	- all the usual parameters of Squeak,
	- the mapping of the modifiers and mouse button to the tree-buttoned 
	  Smalltalk mouse. Have a look at the source to check how non-exclusive 
	  configuration is handled.

The preferences are saved as defaults:

	dwrite Squeak imagePath /local/src/squeak-2.0/pjb/pjb6.image
	dwrite Squeak 'NXWindow Frame SqueakScreen' '9 53 1057 766 '
	dwrite Squeak heapSize 8388608
	dwrite Squeak stackCacheEntries 16
	dwrite Squeak fullScreen NO
	dwrite Squeak sleepWhenUnmapped YES
	dwrite Squeak noTitle YES
	dwrite Squeak redButton l
	dwrite Squeak yellowButton r
	dwrite Squeak blueButton lm
	
	
The supported Smalltalk screen depths are: 1, 2, 8, 16 and 32-bit.
The Smalltalk screen depths of 1 and 2-bit are mapped to a 2-bit bitmap before rendering on the NeXT screen.
The Smalltalk screen depth of 8-bit is mapped to either 2, 8, 16 or 32-bit depending on the depthLimit of the window.
The Smalltalk screen depth of 16-bit is mapped to a 16-bit bitmap before rendering on the NeXT screen.
The Smalltalk screen depth of 32-bit is mapped to a 32-bit bitmap before rendering on the NeXT screen.
When the fullScreen option is on with a MegaPixel Display, screen depths of
1, 2, and 8-bit are mapped fastly to the 2-bit screen depth, but 16 and 32-bit are mapped the same way than without the MegaPixel Display optimization, thru DisplayPostscript.
The 1, 2, 4, and 8-bit Smalltalk screen depths are based on a fixed palette which is a color palette for 4 and 8-bit, while the 8-bit NeXT screen depth is a gray-level screen. Since one entry of the palette is used to mean `transparent', there's only 3 remaining gray level to be used for 2-bit deep screens.
Note that I only have a black-and-white NeXTstation, so I have no idea of how the colors are rendered on color stations or on NeXTSTEP for Intel.

The Smalltalk screen width is always a multiple of 32 pixels. The minimum size of the Smalltalk screen window is arbitrarily the Original Macintosh Screen Size: 512x342. (It seems that when the screen is smaller than the size of the Smalltalk menu, it cannot appear).

	-------------------------------------------------------------------
	pascal@despina/p2[151] ../nextstep/Squeak.app/Squeak -version           
	
	2.0/6502 #22 Fri Aug 28 03:12:16 MET 1998 cc
	NEXTSTEP despina Lightning9I 3.3 68040 MC680x0 0.3d89
	No user-defined primitives installed
	
	pascal@despina/p2[152] ../nextstep/Squeak.app/Squeak -help   
	
	Usage: Squeak [<options>] [<imageName>]
	
	<options> are:
		any option interpreted by the Application class (-NX...)
		-notitle             turn off the Squeak window title bar
		-fullscreen          occupy the entire screen
		-lazy                go to sleep when main window unmapped
		-memory <size>[mk]   set initial memory size (default: 5m)
		-ccache <size>       set context cache size (default: 16)
		-version             print version information,then exit
	
	Notes:
		<imageName> defaults to 'squeak.image'.
		-ccache is merely ignored when the virtual machine has not 
				been compiled with CCACHE.
		-fullscreen implies -notitle.
		When you use -notitle on NeXT, you should set the size of the
		window in the defaults, because you won't be able to move/size it:
		dwrite Squeak 'NXWindow Frame SqueakScreen' '8 48 1024 800'
	
	All these options can be better set from the Info/Preference
	panel; they are stored in the user's default database.
	-------------------------------------------------------------------


When you change the size of the window, or change the fullScreen or noTitle options from the NeXT Preferences panel, please use the Redisplay item in the Smalltalk menu to let the Display object learn new screen size.


Compiling:
==========

You need to have a gmake installed to be able to compile the Squeak part of the project.

You may compile the whole project from the squeak-2.0 directory, with a mere:
   make clean           # to clean everything.
   make develop-app     # to compile a lean nextstep/Squeak.app
   make distrib-app     # to compile a fat  nextstep/Squeak.app 
   make distribution    # to clean and archive a distribution.

Once the Squeak library has been compiled, you may edit-compile-debug cycle the Squeak NeXT application from ProjectBuilder with nextstep/PB.project.

Wish list:
==========
	
	* Optimization for NeXTstation Color, and perhaps for NeXTDimention. (1)
	* Adding user primitives by dynamically loading.                     (2)
	* Bridge between Smalltalk objects and Objective-C objects.          (2)
	* Upgrade the sources to OPENSTEP 4.2.                               (3)
	* Integrate version 2.2 of the virtual machine.                      (3)

	(1) I most certainly won't endeavor it.
	(2) I most probably won't endeavor it, but I would like.
	(3) I'll probably do that, if time permits, before the end of the year.

Licence:
========
	
	I can only speak for the NeXT front-end application, whose sources are 
	found in the nextstep subdirectory. It's GPLed. Please check the 
	Information panel in the application or the LICENCE.rtf file.
	
	
Author:
=======

	__Pascal Bourguignon__
	mailto:pjb@imaginet.fr
	http://www.imaginet.fr/~pjb/develop/squeak/english/
	
/*** README.txt / Thu Oct  1 05:50:01 GMT+0200 1998 / PJB ***/

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.