Make sure that when you use VMSTAR you use the command:

$tar nm=<v>xvf smtalk43.tar

To install on VMS enter:

$set def [.smtalk43.vmsmake]
$@build_make
$@make_startup
$set command make
$set def [-.smtalk.src]
$make/makefile=makefile.vms



		Release 4.3 of Little Smalltalk for XWindows

Note: This version has been built and tested on the following platforms:

	INTEL 386	(LINUX)
	INTEL 486	(SYSVR4)
	INTEL 486	(NEXT)
	CRAY XMP	(UNICOS 6)
	SPARC 2		(SUNOS 4.1.3)
	AMDAHL		(UTS 1.4.1) SYSV
	DECStation	(ULTRIX 4.2)
	SEQUENT		(DYNIX/ptx V2.1.0) SYSV
	ALPHA AXP	(OSF/1)
	VAX		(VMS 5.5-2)


Origin: Little Smalltalk V3.04 and STDWIN for Xwindows V0.9.5

	Little Smalltalk from Tim Budd
	STDWIN from Guido van Rossum

	I could not get the latest version of STDWIN 0.9.6 to work under any
	circumstances.

Requirements:

	K + R compatible C compiler
	XWindows X.V11R4 or X.V11R5
	8 MBytes of disk storage

Installation:


	tar -xvf smtalk42.tar
	cd smtalk42
	make zzzzz

	Where zzzzz can be:

		linux
		sunos
		ultrix
		scounix
		unicos
		uts
		sequent
		osf1



	The Smalltalk image(systemImage) will be created in the smtalk42
	directory along with the XWindow version of the Little Smalltalk
	interpretor(xst).

Good Luck
Tom McCune
temccune@rockwell.com


The following improvements have been made to Little Smalltalk and the Van
Guido X window interface:


Release 4.3

o Support for VMS

o General bug fixes

Release 4.2

o Fixes to the memory management that caused crashes when number objects
  exceeded the memory allocation block size of 6000 bytes.

o Performance balance the multitasking system.

o Integrate all platform code into one source code tar file. All platforms
  now have all fixes and new features.

o Improvements to the makefile.

o Stress test against over 33000 objects, e.g. input, parse, and process
  the objects. Passes with flying colors. wish I could display all of them
  at once in a browser window. Sorry, limitations of XWindows.


o Add window edit feature.

o Remove Window debugging code. My fixes appear to be working.

o Add modified QuickSort to the Array class and add a primitive to
  speed it up.

Release 4.1


o Improvements to the scheduler. Fixes of several problems related to
  the window management software.

o Add sanity checks to the graphics primitives to prevent drawing conflicts.

Release 4.0

o Clipping regions

  A problem in clipping regions manifested itself as highlighted text being
  redrawn incorrectly when an expose event occurred, .e.g. a partially
  covered Smalltalk window would find highlighted text clobbered when the
  window was exposed again. This was fixed by forcing a complete redraw of
  the window(no clipping). This was an aesthetic nuisance really, and I
  believe there could actually be a bug in XWindows since experimentation
  with the routines led me to believe that Guido knew  what he was doing.

o Scrollbars

  Scrollbars were not being added properly to text windows when the document
  size exceeded the window size as in the Workspace window. Actually, for text
  windows anyway, the call to update the document size was never being done.
  I added this to the routine terecompute (which is called as lines get added)
  and now you get scroll bars appropriately.

o Horizontal Scrollbar

  The horizontal scrollbar was not being aligned properly which showed up
  on some workstations(SUN) but not others. The fix worked may it work for
  all workstations tested. Besides, the code was wrong.

o Saveimage

  When the saveimage menu item is activated, selecting cancel would cause a
  core dump because nothing was returned from the routine. I added a return
  of the  nilobject and changed Little Smalltalk to do nothing when a nilobject
  was returned (user did cancel after all).

o Application Dictionary and Menu Item

  Created a global applications dictionary and matching menu item so one
  could create applications on the fly and activate them via the Workspace
  menu item.

o Errors in handling the Windows

  The windows are reserved by placing themselves in an array. Then when the
  window is closed, a nil is stored in the array. Unfortunately, the check
  to store nil there is whether the window variable itself isNIL. Oops!
  This caused situations where opening and closing windows willy nilly
  could cause the close of a window to actually store a nil over anothers
  newly created window array item. This was validated by placing a couple
  of sanity checks in the system. Things appear very stable now.


o Output interrupt

  Another nuisance related to XWindows was resolved in two ways. When printing
  to a text window, the printing would often just stop until the user "clicked"
  on the window. The Smalltalk interpretor has a loop counter to
  perform so many intructions for a Smalltalk process before allowing a yield
  to the Window system, e.g. wait-for-a-window-event. The process would then
  continue. This happened more often when numbers were printed. Further
  investigation revealed that conversion of integers to strings for printing
  was being done by Smalltalk code causing literally thousands of Smalltalk
  instructions to be executed(though quite correctly). To fix this, I added
  another primitive to perform a sprintf and return the resulting string
  object. The maximum steps allowed a Smalltalk program was also increased.
  The problem/nuisance still occurrs when a failure triggers a Smalltalk
  traceback. The Smalltalk traceback code must yield to the next process to
  update the process link pointers. Xwindows then gains control till a
  mouse event occurrs. The traceback then continues, albeit on whatever
  window you click on.

o Multitasking

  Multitaksing was severely hampered by the above XWindow getevent problem.
  With that fixed, multitasking could be tuned to actually work. You could
  fork one Smalltalk code block and go on to others.

o Sorted List Window as Browser

  Added sorted list browser for the class browser.

o Problems with clicking on window while output is going

  While output was going to one window and another was clicked to start
  another task (or browse), the output would go to the new window. Yikes!
  This was fixed also.

o Carriage Return displayed

  On some window systems(SUN), carriage return is displayed as a funky little
  symbol. I added code to not display Carriage Return.

o Integer arithmetic

  All integers are now 32 bits, allowing for more objects. I have
  the maximum number of objects set to 64000. Be careful, all objects
  are intialized to nilobject at program startup. So choosing a larger
  number could result in a long wait before seeing your window. The 
  arithmetic was changed to use double float arithmetic to check for
  overflow. Some may cry foul and  want to use another more scientifically
  correct mult/carry/check-for-overflow  method. I have been reviewing the
  latest Dr. Dobbs journal on arbitray precision arithmetic IEEE routines
  and I like what I see. But they are  slow. Another choice would be to use
  GNU C as I understand that long long is supported as will the SUN compiler
  in the near future.

o GNU C

  I have tried compiling and running the Little Smalltalk system with the
  SUNOS 4.1.1 c compiler on a SPARC and the GNU c compiler. Both provide
  the same results and pass the tests as provided with the system, which
  is encouraging.

o DECstation with ULTRIX 4.2

  Same as above. The only other change was use the mBlockAlloc macro in
  memory.h instead of the system mBlockAlloc which fails on the DECStation.

o Syntax of Name Binding

  Name binding has been changed to support with the "<-" syntax as in some
  implementations or ":=" as in others.

o Bag class

  Implementing a Bag class required only a few lines of Smalltalk code since
  a Bag is just a Set with no retrictions on duplicates.

o Transcipt Window

  Adding a transcript window in Little Smalltalk is a rather trivial process.
  For example:

  In the Workspace enter:

  Transcript <- TextWindow new;title: 'Transcript';open

  Go to the menu and select do it. Your transcript window will appear. Then
  using the browser, select the print method for the string class and change
  printer to Transcript. From now on, print of any text will go to the
  transcript window. This saves deleting your output text from the Workspace
  menu when you just wish to repeat or modify the previous command.

o addSubClass

  For those more adventurous, you might wish to change addSubClass to addclass
  as in other Smalltalk systems. This seems to work, but for now I felt it
  best to leave it so that it matches the documentation.

o Futures

  BTrees and Sparse arrays

  There are enough primitives left over to implement such important things
  as sparse arrays, B+trees, and therefore virtual objects. I have most of
  the code to do this already but wish to be sure I do it right: simple
  fast, and without bugs. If nothing else, this could serve as a base for
  a better Dictionary container or Association (which is heavily used in
  Smalltalk).

  Streams

  Streams look fairly easy to implement.

  Better browser

  The class browser currently just displays all classes (not even sorted). With
  a little bit of work, the display could be made to collapse and expand or
  change to use indentation to display the classes as they are related.