Squeak is a free Smalltalk implementation.
Squeak for NeXTSTEP is a native
NEXTSTEP
front-end for the Squeak Smalltalk.
ftp.afaa.asso.fr
[SIZE-S bytes].
ftp.peanuts.org
[SIZE-S bytes].
ftp.afaa.asso.fr
[SIZE-BS bytes].
ftp.peanuts.org
[SIZE-BS bytes].
Version 2.0:
ftp.afaa.asso.fr
):st.cs.uiuc.edu
):Version 2.1:
ftp.afaa.asso.fr
):st.cs.uiuc.edu
):Sources V2: in any case, you shoud download the Smalltalk sources:
ftp.afaa.asso.fr
):st.cs.uiuc.edu
):
Versions
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.
This release is distributed without the Squeak image. You can retrieve it from http://squeak.cs.uiuc.edu/ (see the downloading section).
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, 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 512&mult;342.
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 improvments !-)
- 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 other than 'h' & '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.
- 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 DisplayPostscript
--------- -----------------
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 your 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 [] []
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 [mk] set initial memory size (default: 5m)
-ccache set context cache size (default: 16)
-version print version information,then exit
Notes:
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)
- Insert here your own wishes (2)
(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
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.
For information about the Squeak Smalltalk virtual machine and the Squeak Smalltalk image, pleaser refer to:
http://squeak.cs.uiuc.edu/#license.
Squeak.app, the Squeak User Interface for NeXTSTEP is a front-end for the Squeak Smalltalk.
Copyright (c) 1998 Pascal J. Bourguignon
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.
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.
Author
The author of the NEXTSTEP front-end for Squeak is Pascal Bourguignon.
mailto:pjb@imaginet.fr
http://www.imaginet.fr/~pjb/develop/squeak/english/
See http://squeak.cs.uiuc.edu/
to learn about the genious-level authors of the Squeak Smalltalk.
If you have any comment regarding this page, please send an
e-mail to: Pascal Bourguignon.
Last update : Thu Oct 1 05:50:14 GMT+0200 1998
Publishing date : DATEPUBLICATION