Welcome to the BeSqueak Project

rev 1/2/01 cps

You must run BeSqueak the first time in Terminal. Use the following command line:

BeSqueakppc Squeak2.8.image
or:
BeSqueakx86 Squeak2.8.image

After running BeSqueak once, you can launch BeSqueak by double-clicking on an image file provided that the image file's mime-type is set to "application/x-squeakimage".

Adjust the above if using different executable name/image name. The VM looks for the changes file in the same directory as the image, and the sources file in the same directory as the VM. (This allows you to have multiple image/changes pairs, but only one sources file.)

Note that if you just run the executable without any command line arguments you will see what arguments are available.

One usage note. When you resize the (BeApp) window, the Squeak view inside will not automatically resize to fill the new view area; you need to issue a "restore screen" command from the Smalltalk control menu. We're working on this problem, as well as others.

Please report changes/bugs/suggestions to the BeSqueak mailing list.

Check our web page for the latest links to team members, mailing lists, ftp sites, etc.

Known bugs

Development info

Help is always welcome. Feel free to test / criticise / examine the VM and Squeak in general. Of course code contributions are always extra welcome :)

The project is pretty static these days, let me know if you need anything.

So far the three main people involved in this project, are Trey, Richard, and myself (Colin). I serve as the librarian / lead for the project. Trey has contributed the BDirectWindow code, and both of us have been experimenting with it / changing it (it is reasonably complete). Richard concentrates on the PPC port while Trey and I both tend to work the x86 port (Trey has access to PPC hardware though).

In order to build the binaries, execute the following in Terminal while in the source directory:

make

If you update header files or change flags in the makefiles, you will need to force a rebuild by deleting the appropriate object files.

To delete all object files, execute the following in Terminal while in the source directory:

make clean

To do:

Source files & descriptions

interp.c**The main interpreter. See ReadMe.Txt for details.
sq.h*The main Squeak header file.
sqOldSoundPrims.c**These are some old sound synthesis primitives.
sqSoundPrims.c**These are the newer version of the above.
sqMiscPrims.c**Miscellaneous primitives.
sqFilePrims.c*Primitives for synchronous file access.
sqPlatformSpecific.hThe name says it all. Right now this file defines a function that allows you to signal Squeak semaphores from a BeOS thread other than the interpreter thread. (these signals are queued and then signalled in the interpreter thread when it enters a primitive)
sqConfig.hThis header defines the attributes of a variety of platforms.
sqMachDep.hThis code is only required for the jitter version of Squeak.
sqUserPrims.cA file for user primitives, none, so far. You can put some here.
sqBeDirectory.cDirectory enumeration primitives. Right now these is just the same as sqUnixDirectory.c (I assume they both use POSIX functions). This could be changed to use native Be functions, but I don't know that there would be any benefit.
sqBeSound.cppOutput is currently working. Input not yet implemented.
sqBeSerialAndMIDIPort.cppSerial & MIDI primitives. MIDI input isn't done at all, but output is close, could use some cleanup though.
sqBeAsyncFilePrims.cAsynchronous file primitives. Not implemented, and not slated to be.
sqBeJoystick.cppJoystick primitives.
sqBeNetwork.cpp Networking support. Reference the Win32 VM source to see the code this was based on.
sqBeApp.cppThe main application class, a bunch of functions called by other parts of the VM, and a bunch of global variables.
sqCopyBits.cppThis file provide bit copying services to both BWindow & BDirectWindow display primitives.
sqBeWindow.cppThis file implements the Squeak display via a BWindow/BView/BBitmap combo.
sqBeDirectWindow.cppThis file implements the Squeak display via a BDirectWindow/BView combo with heavy support from sqCopyBits.cpp. This implementation provides a significant speedup over the sqBeWindow.cpp implementation.
sqBeSharedWindow.cppThis file implements routines that are shared in between sqBeWindow.cpp & sqBeDirectWindow.cpp
sqBeView.cppThe BView descendent that handles the main squeak display for both the BWindow and BDirectWindow implementations.
sqBeMisc.cppMiscellaneous functions called by the interpreter.
sqBeIOPrims.cppPrimitives dealing with I/O support, time, beep, exit.
b3d.h*3d primitives.
b3dAlloc.h*
b3dDraw.c*
b3dInit.c*
b3dMain.c*
b3dRemap.c*
Squeak3D.c**
primitiveTable.decl**Will be used for JIT compiler. Not yet used.
primitiveTable.defn**
sqADPCMPrims.c**Used for some sound compression related stuff.
SoundCodecPrims.mkmake files used for building the executable files from their sources.
Squeak3D.mk
SqueakVM.mk
makefile
SoundCodecPrims-xp.mkmake files used for building PPC executable files from sources on an x86 machine.
Squeak3D-xp.mk
SqueakVM-xp.mk
makefile-xp
* These files are identical across many platforms.
** These files are generated from code in Squeak itself that is written in a subset of Smalltalk.

Credits

Revision history

Changes added by version 1.1 1/2/2001

Changes added by version 1.0 10/31/1999

Changes added by version 0.9 (beta) 7/19/1999

Changes added by version 0.8 (alpha) 4/23/1999

Changes added by version 0.7 (alpha) 3/20/1999

Changes added by version 0.6 (alpha) 2/28/1999

Changes added by version 0.5 (alpha) 2/18/1999

Changes added by version 0.4 (alpha)

Changes added by version 0.3 (alpha)

Changes added by version 0.2 (alpha)

Changes added by version 0.1 (alpha)