1.0a	27-Aug-1987
	First release to MTS Systems corporation
1.0b	1-Sept-1987
	Fix bug in event queue that caused a hang up after
	tasking errors.
1.0c	5-Sept-1987
	Add menus with SFGetFile for HFS support.
	Fix bug in txtClose that allowd tCursor to get at
	a dead window.
1.0d	1-Oct-1987
	Fix bugs in HFS support
	Change protocol for class Event (See class.doc)
	Change compiler to parse arithmetic correctly.
1.0e	Not released.
1.0f	21-Oct-1987
	Fix bugs in image save/restore logic to allow running systems
	to be saved and restored.
	Fixed bug in dqueue.alt list handler that caused mouse lockups.
	Add ^Y control key to stop the virtual machine when caught in a loop.
1.0g-r	Zillions of bugs fixed.
1.0s	Human interface (Macface) changed and simplified.
	Window package is extended to include nested transformations.
	Integer and Real infix operators are performed in the virtual
	machine.  Other speed improvements made in kernel.
1.0t	4-Jan-1988
	Bug fixed for String comparison operators.
	SFGetFile and SFPutFile are options with #open on the Mac.
1.0u	14-Jan-1988
	Fix infinite loop in SAVE/COLLECT do to G.C. bug.
	Disable graphics events when interpreter is looping
	to prevent menu show through and reentrant drawing.
	BinaryFile $deactivate selector was not implemented for
	heap deactivation before send.  This bug was fixed.
1.0v	18-Jan-1988
	Add functions to class Real:  log and atan2
	Repair Integer.random
1.0w	27-Jan-1988
	Fix (another) obscure bug in garbage collector:
	Class field of obj. was patched before data ptr.
1.0x	2-Feb-1988
	Not released.
1.0y	8-Feb-1988
	A bug with window scrolling for non-MacII was fixed.
	The $activate and $deactivate methods are now implemented
	for all classes.  When the heap is saved, all objects that
	understand the $deactivate selector will receive that message.
	Similarly, when the heap is restored, $activate is sent to all objects
	that understand $activate.  A class does not have to implement both
	of these selectors.	
1.0z	11-Feb-1988
	A small patch to the VM increased speed 30%
1.1a	19-Feb-1988
	
	Bug Fixes:

	An error (sometimes crash) in traceback occured when
	the "message not understood" method was called through
	the event loop handler.
	
	The predefined object UND (The undefined object) and FALSE have
	been removed from the kernel.  Only TRUE  and NIL remain.  These
	objects are used in a manner identical to common usage in the Lisp
	world:  NIL is used as logical false, all other values are considered
	a logical TRUE.  NIL is also used to initialize dynamic variables and
	as the empty marker for lists, etc.
	
	Interactive expressions are compiled as methods in the context
	of the default class, but when they run there is no receiver
	object.  Previous versions of Alltalk allowed references to
	instance variables, 'super' and 'self' from interactive methods.
	This caused instant disaster.
	
	The Listener window was not resized correctly when an event
	loop procedure was drawing in another window.
	
	New Features:
	
	Automatic coercion of parameters in arithmentic primatives
	is performed.  This allows general mixed class calculations.
	The class of the receiver determines the conversion attempted:
	The expression (x+y) where (x) is an integer is evaluated as 
	(x + y.integer)  If the object (y) understands the #integer message,
	the computation will succeed.  The following expressions are legal:

		2 + 3		Result: 5
		2 + 3.1		Result: 5
		3.1 + 2		Result: 5.1
		2 + '3'		Result: 5
		2 + '3.1'	Result: 5
		3.1 + '2'	Result: 5.1

	The compiler will now accept real numbers using scientific
	notation.  Examples:
		
		2.1E-3		Result: 0.0021	
		2.1e-3		Result:	0.0021
		2.2e2		Result: 220.0
		2.2e+2		Result: 220.0
		

1.1b	7-Mar-1988
	
	Getting Rid of "+"

	The '+' selector for string concatenation has been removed.
	The message ".append" has been added to take its place.
	The append message takes a variable number of parameters and
	concatenates all of them together onto the end of the receiver.
	
	Example:
		s := String.newWith[128]
		s.copy['hello']
		s.append['this', 'is', 'a']
		s.writeln
		hellothisisa

	New Class "Context"

	A new class has been added to the kernel to give better support
	for methods that need a variable number of parameters.
	In the body of a method, the method's selector is now a variable that
	contains and instance of a Context object.  This objects behaves like
	an array where the size of the array is the number of actual parameters
	passed in the message that invokes the method.  You may use 
	the ".get[i]"  message to get the iTh actual parameter value.
	Example:
		WITH Object
		METHOD goop IS
			i
		BEGIN
			self.writeln
			i := 1
			WHILE i <= goop.size DO
				goop.get[i].writeln
				i := i+1
			END WHILE
		END METHOD

		NIL .goop[1,2,'hello']
	Result:
		(Object NIL)
		1
		2
		hello

	Stack Dump Preservation

	A new global variable has been added to the system.
	After a runtime error (Such as "Message not understood"),
	the variable "debug"  contains a pointer to the Context
	object for the method that caused the error.
	It is possible to see the parameters to this method using
	the #size, and #get selectors described above.

	In addition, Context objects understand the message #selector,
	which will return the selector object that invoked the 
	method.  The selector object understands the #name message, which
	will return a String that names the selector.

	Most importantly, the Context object understands a message #last,
	which will return the Context of the previously active method.
	This is the method that invoked the method that cause the error.
	By using the #last message over and over, you can walk up the
	the stack an examine the method selectors and parameters in each
	context.  When you reach the topmost Context on the stack, the
	#last message will return NIL.  In effect, the Alltalk execution
	stack looks like a linked list of Context objects.

	The debugging Context variable "debug" preserves the entire stack
	state after each runtime error.  To enable you to
	continue using the interpreter for debugging and examining this
	stack, the Alltalk interpreter starts using a different stack
	after each error.  There are only two stacks, so if you make a 
	run time error while inspecting the debug Context, you will be
	switched back to the other stack and you debugging information 
	will be lost.

	New WITH Command Capability for Debugging

	The semantics of the WITH command have been expanded.
	The WITH command may be followed by a class name OR by any
	expression.
	If a class name is given, the class becomes the new default class.
	If an expression is given, the class of the default object becomes
	the new default class and the instance variables of this object
	are made directly visible for use in interactive expressions.

	Generalized Conversions to String

	All objects can now be converted to instances of class string.
	The ".string[strBuffer]" message will work with any object.
	The default method makes a string containing the class name and the
	object identifier.

	StringFile Read and Write 

	The methods for #write and #writeln in class StringFile have changed.
	These methods now accept a variable number of parameters of
	any class (up to 7).  Each parameter is converted to a string and the resulting
	strings are written to the receiver file.

	

1.1c	10-Mar-1988

	The String.append function now accepts up to 7 parameters and it
	will try to convert each to a string.  String.append now works a lot
	like StringFile.write

1.1d    13-Mar-1988

	The architecture of the Alltalk virtual machine has been
	altered to support larger systems.
	Alltalk 1.1D can support systems at least twice as large as previous
	versions.  Another aspect of this change allows you to use large numbers
	of message selectors, although it is still beneficial to limit
	the size of your 'conceptual space' and introduce new selectors
	that may be used in a generic manner.

	The Window.trackDown method has been removed.  The Window.track
	message now performs this function.

	The "Image.bytes" message has been changed to "Image.array".

	A method Class.forAll has been added to send a message to
	every existing instance of a class:

		String.forAll[#writeln]

	A method Object.kindOf[aClass] has been added.  It returns
	TRUE if the receiver's class is a subclass of the the Class
	parameter.


1.1e	Mar 17, 1988
	A bug was fixed in the lexical scanner that could
	write on random memory locations.
	The selector pool is now managed with a hash table.
	This speeds up the compiler quit a bit for large programs.

	Class Object has a new method:

	obj.sendArray[selector, array, count]

	This message will send the selector to the object, passing
	the elements of the array as parameters.  The count is an
	optional parameter.  If it is given, only 'count' parameters
	will be passed, no matter how large the array.  If count is
	not specified, the entire array is passed.  (But no more than
	the current 8 parameter limit)

1.1f	Mar 22, 1988
	The serial port on the Mac may be opened as a StringFile or
	as a BinaryFile.  In binary mode, the character stream is now
	totally transparent: no handshaking and no special interpretation
	for handshake, CR or LF.
	A bug has been fixed in the file support that caused random
	SFGetFile dialogs to appear when not called.

1.1g	Mar 24, 1988
	Bug in traceback fixed (Again!?)
	
1.1h	Mar 26, 1988
	Bug in MacFile system causes random hangups on startup.
	Mac lex buffer enlarged to speed the compiler.
1.1k	June 9, 1988
	Major revision adds class Dictionary
	
1.2A	June 29, 1988
	Add String.trim, Rectangle.wide, Rectangle.high

1.4A	November 22, 1988
	Access to the method activation record (Class Context) is no
	longer throught the method selector.  A pseudo variable 'context'
	is provided instead.
	
	When a message is not understood, the virtual machine now sends
	the message #undefined to the same receiver.  This message is
	implemented (by default) in class Object, where the usual trace
	back is displayed.  You may reimplement #undefined in other ways.
	In the context of the activation for a method that implements
	undefined, all the context information is for the message that
	was undefined.  For example, the message
			context.selector
	will return the selector that was not implemented in the receiver's
	class rather than the selector #undefined (which is the selector for
	the method that is actually running.
	
1.5	December 1988
	Array method for #copy
	Class methods for #method and #lookup
	Method methods for #selector and #parent

1.5D	Fix allocation of SmallArray in Class.newWith
	BinaryFile.seek had a paramter problem.
	Speed up graphics by simplification of Window.reset
	
1.6	Switch to THINK C 4.0
	Add Directory and System classes
	Add time conversions to class Integer.

1.6D	September 16, 1989
	Add menu messages to class system.
	Add Menu class to attach message to system menu bar items.

1.6E	September 27, 1989
	Add the backslash escape character to allow quotes inside quotes.
	Add protocol to the system object to handle dual forms of the menu
	messages ($open, open) ($quit, quit) etc.  The dollar form 'really' does
	the operation while the un-dollared form is sent by the menu manager.
	The default behavior is to invode the dollar form.  This allows the programmer
	to override the menu messages in class System and later invode the default
	behavior.

1.6F	Fix bug in System.save messages that caused a crash.  
	Add Integer.shift[n]

1.6F1	October 9, 1989
	The Integer.bit[n] method returned the wrong value.
	A bug introduced in 1.6 left the source file open after a
	syntax error was discovered by the compiler.2.1	June 6, 1989
	String.detab[source, tabGap] added.
	Speed up window file by fixing hold test.
	Make context a token in the compiler.
	Fix bug in Class.c for allocation of SmallArray.
	Fix BinaryFile.seek
	Speed up graphics by simplification of Window.reset
	Add backslash escape char for quotes inside quotes.

2.2	October 31, 1989
	String methods are more reliable and there are several
	new ones.
	Comparison using equal or not equal will now work for
	any combination of objects.

	Real, Integer, and String can 'format' themselves into
	a String.  They are right justified into a specified 
	width.  Reals are displayed at a selected precision.
	
	The String.pos method now requires a starting position.
	The new protocol is:   str.pos[target, startPosition]

2.2C	November 20, 1989
	Fix bugs in the min and max methods for Real & Integer.
	Real.format will round to the requested precision.
	Dictionary.reset is fixed.
	
2.5	April 23, 1990
	Dictionary.reset is fixed again!!!
	Directory.read returns boolean for type=directory


2.6	October 1, 1990
	Dictionary.collect[obj, sel]	! For all elements: obj.send[selector, element]
	Class.collect[obj, sel]		! For all elements: obj.send[selector, element]
	Object.forward[aContext]	! Pass context message to receiver
	Context.receiver		! CHANGED: Old message was 'self'
	Compiler:
	Syntax for METHOD now allows an empty method with no BEGIN:
		METHOD goop IS
			This is a comment.
		END METHOD

2.7	October 16, 1990
	A major overhaul of Dictionary:
	A new class Association is used to hold (key, value)
	pairs inside a Dictionary.  The protocol to add an
	entry to a dictionary remains the same:
		aDict.add[key, value]
	When a #lookup is performed, an instance of Association is
	returned (or NIL if no entry is found.)
	To obtain the value from the assocation, use the #value
	selector.  Associations have the following protocol:

		init[key, value]
		key
		value
		setValue[aValue]
	
	The key can be an object of any class, but only scalars and
	strings will use the Dictionaries internal hash mechanism.
	Using other key classes will result in a linear search
	during lookups.
	The selector #collect has been added to dictionary:

		collect[object, selector]

	This message will cause the paramter object to receive
	a message using the selector with each valuw in
	the dictionary as the parameter.

		collectAssociations[obj, selector]

	The #collectAssociations method works like #collect but it
	passes each Association in the Dictionary to the designated
	object.

	Class Class now has a similar #collect method as well.
	The following methods are added to class Class:

		collect[obj, selector]		! Pass each instance to obj
		classVars			! Return classVar Dictionary
		instanceVars			! Return instVar Dictionary

	The values of Associations in the classVar dictionary are
	the actual values of Alltalk class variables.

	The values of Associations in the instanceVar dictionary
	are the indexes into instances of the class treated as 
	an Object Array.

	Class Object has two new selectors:

		basicAt[index]
		basicPut[index, value]

	These selectors allow any object to be treated as an
	Array.  The indexes take from the class instanceVar
	Associations may be used to access named instance
	variables from methods outside of the class.  This
	capability is intended to support the development
	of inspectors and other programming aids.  Many of
	the built in kernel class have instance variables
	that are NOT accessable as objects.  Attempts to
	access these varaibles will cause an error to be
	reported.  It is best to obtain the legal indexes
	from the instanceVar dictionaries.

	The #basicAt and #basicPut selectors work just like
	#get and #put on the Array classes.

2.7B	November 14, 1990
	The heap save/restore and system start/stop internals have
	been cleaned up.  The system object will get the #start message
	after the #$activate messages are sent and the #stop message
	before the $deactivate messaegs are sent.  Do we really need
	$activate and $deactivate?  Would a single #start/#stop message
	to the system object be O.K.?

2.7C	November 19, 1990
	A bug that prevented control Y from interrupting the virtual machine
	has been fixed.
	Users who want their own menu bar can now use ResEdit to modify the
	MBAR and MENU resources in a copy of the Alltalk application.  The
	object stored in the 'system' variable will be the receiver for 
	messages with selectors that are automatically derived from the menu
	item names.  The menu item names are converted to lower case, punctuation
	is removed and word gaps are closed with the next letter capitalized.
	For example, the menu item 'About Alltalk...' becomes the selector
	spelled 'aboutAlltalk' similarly the menu item 'Save As...' becomes
	the selector spelled 'saveAs'.

	A new message has been added to class System: #saveQuit will cause
	the save image GetFile dialog to appear allowing the user to select
	a file to save the current image.  The interpreter will save the
	current image to the selected file and then quit.  If the user does
	not select a file, Alltalk still quits.  Should we post a warning
	dialog?

2.8	November 31, 1990
	The Mac version menu bar now sends messages to the object stored in
	the system variable.  These messages are derived automatically from
	the menu item names, so it is possible to modify the menu bar in the
	application resource file to add menus and menu items.  The names
	are 'canonized' by 1) If first letter is upper case, change it to lower
	case. 2) Remove all punctuation and run separate words together. 3)
	Make first letter of each word after the first upper case.  For example
	the menu item 'About Alltalk...' becomes the selector 'aboutAlltalk'.

	The default System object implements all of the menu messages, so your
	applicaton can use these selectors as well.

	A new method in class system 'saveIn[fileName]' will write the Alltalk
	heap into an existing file's data fork.  This file can be a copy of the
	Alltalk interpreter itself.  When you run this copy of Alltalk, the
	interpreter will restore the image saved in the data fork.  You can
	edit the bundle resource and give your application a new icon, etc.

	The listener window now comes to the front when drawn.
	The listener window now remembers it's state when an image is saved
	and restored.  If the listener is invisible, it will stay invisible.
	When building a stand alone application you can execute the sequence:
		stdout.erase
		system.saveIn['MyAppName']
	The image will restore without the listener window.
	The 'About Alltalk' menu item can be changed to reflect the name of 
	your application.  You system object can then implement the new selector
	in whatever manner you choose.  If you prefer to display a simple alert
	dialog, you can edit the About alert resource and then implement your
	aboutXXXX method in class System with the message  'system.aboutAlltalk'.
	This will display the modified alert resource.

	The compiler has been modified to allow more instance variables to be
	compiled per class.

	A long-existing problem caused Alltalk to crash under (mono)Finder when
	a desk accessory was selected.  This problem is now fixed.

	The compiler now accepts literal integers in 'C' hexidecimal format.

	The methods for Integer.format[str, size] and Integer.string[str] each
	allow an optional extra parameter that specifies the base for number
	conversion.  For example, (23 .string[s, 16]) will copy the string '17'
	into the string stored in the variable 's'.

2.8A January 18, 1991
	Class.super did not work on class Object: It returned a Class with ptr NIL!
	New method:
		Class.index[name]
	Returns the basicAt index of an instance variable.  The index
	may refer to instance var fields inherited from any superclass as well.
	Zero is returned if no instance var is found.
	Some clean-up was done in the compiler and class Class for manipulation of
	variables.
	When Class.lookup[name] cannot find an Association, it caused a compiler
	error.  This is now fixed so it will return NIL as expected.
	New methods:
		Real.sgn and Integer.sgn (sign) functions.
		Real.fraction and Real.truncate
		String.integer[base] allows an optional radix parameter
	BinaryFile has been cleaned up. #seek[n] and #pos work correctly.
	Many internal fixes to class Directory.
	Directory.parent will open the parent directory.
	Directory.name will return the local name of the directory

2.8B February 28, 1991
	BinaryFile gets a major revision:  The record size parameter
	has been eliminated from open and create.  It is now an
	optional parameter for read and write.  See the kernel
	documents for details.
	StringFile.seek and StringFile.pos are have been added.
	The compiler can handle more literal values in methods.

2.8C April 16, 1991
	SerialFile.setBaud[rate] has been added.
	Integer.not has been fixed to prevent 2's complement.

2.8D May 1, 1991
	The 'Open' selection from the file menu reported a
	"Heap too large" error due to a bug introduced by the
	binary file revision. (Fixed)
	Methods for Object.basicSize and Object.basicFirst have been added.
		Object.basicFirst returns the first object index.
		Object.basicSize  returns the last object index.
		Object.basicAt[i] returns the iTh instance variable value
		Class.instanceVars.lookup[name] returns the Association for the
		named instance variable.  The value of the Association is the basic
		index for the instance variable inside an object that is an instance
		of the class.
		
2.8E May 15, 1991
	A new pseudo variable has been added call 'local'.  Like 'self' and
	'super', it refers to the receiver of the message that invoked the
	context method.  Messages directed to 'local' are bound to methods
	in the context method class, rather than in some subclass, even
	if the receiver is an instance of a subclass that overrides the
	message selector.  If there is no method for the selector in the
	context method's class, the search proceeds upward to the superclass
	as usual.  Subsequent messages to the object in 'local' are also
	bound starting in the context class.  The 'local' variable behaves
	exactly as if
		local := self.become[context.method.parent]	

2.8F May 21, 1991
	A remarkable and ancient bug has been found and removed:
	Each time an image was restored, the internal table of windows
	grew by twice the number of existing windows.  With a 
	capacity of 128 windows, large images eventually used up
	the table.

2.8G May 30, 1991
	The Class.lookup[name] message has been replaced by 
	Class.classVar[name]  and a method for Class.instanceVar[name]
	has been added.  The #classVar method returns an Association for
	the named class variable if one exists anywhere on the super class
	chain.  If there is no class variable, the method will NOT try to find
	a system class variable (as #lookup used to do).  If no Association
	is found, the method returns NIL.

	There is a new method for finding the system class variables: 
	The System.classes method will return the dictionary of
	system classes.  To find the variable for a system class use 
	the expression System.classes.lookup[className].

	The #instanceVar[name] message will try to find an Association for
	the named instance variable anywhere in the superclass chain.  If
	none is found the method returns NIL.  The value inside an instance
	variable Association is the basic index of the instance variable
	value inside an instance object.  You can get this value using
	the method Object.basicGet[index].  For example, to get the
	value of the topView variable inside the browser:

		browser.basicGet[Browser.instanceVar['topView'].value]

	There are also methods for Class.instanceVars and Class.classVars.
	These methods return the Dictionaries for class variables and
	instance variables in a single class.  

	These methods are NOT for use in normal programming efforts.  They
	are provided to support building software development environments
	for Alltalk.

2.8M August 20, 1991
	SerialFile has several new methods to adjust communication parameters.
	The #setBaud selector has been changed to #setRate.

	The famous and long-standing "Judy traceback bug" has been fixed.

	A new kernel class has been added called LexFile.  Instances can
	read string files in lexical units.

2.8N February 1992
	The heap restore logic was redone to link methods more robustly between
	Alltalk versions.
	A bug in Dictionary was fixed that could cause certain scalar keys to crash.
	The String.number boolean selector has been added to test for legal numbers.
	The String.integer operator will allow white space before the digits.
	The new Think C 5.0 compiler is used, which makes the Alltalk program smaller
	and about 10% faster!

2.8P March 8, 1992
	A bug in SerialFile introduced with the new Think C compiler was
	fixed.  A new class, Driver was added to deal with general device
	drivers.  These changes were due to Think C 5.0 RTL preventing FSOpen
	from opening drivers.  The Class.classes method was moved to class
	System instead.  The proper protocol is now "system.classes".  This
	change required modifications to Views for ReadObject and WriteObject.

2.8Q March 16 1992
	A bug was fixed in the heap restore logic introduced by the 2.8N
	release.  (The method's were not linked when the heap delta was
	zero.)

2.8R February 4, 1993
	StringFile.seek was broken by a change to SerialFile.  (Methods were added
	to the wrong class, causing an error message from SerialFile when StringFiles
	used seek.
	THE IBM PC VERSION IS UP TO DATE AS OF 2.8R


2.8S	(NOT RELEASED)
	EXIT from the listener window and QUIT from the file menu now send the
	#stop selector to the system object.  Is this a good idea?
	BinaryFiles can be created or opened of any type specified by the #setType 
	message.  String.pad[n] now has an extra optional parameter to specify the
	pad character: String.pad[n, str].  Only the first character of the pad string
	is used.  This was done so DynamicText in Views could be more robust.  An
	associated change was made to DynamicText.
	
2.8T February 8, 1993
	This is a major revision of the file system and the interface
	to the finder.  It is now possible to make complete applications
	that launch from their own files, accept drop in files, etc.
	The BinaryFile.setType[creator, type] and
	StringFile.setType[creator, type] have been added to support
	the Mac OS file model.  On other machines these operators set
	the default file extension using the file type only.
	NOTES FOR THE DEVELOPER:
	The internal revisions involve:
		Remove conFile and ufFile idea altogether!
		This is done to clean up some portabliity problems
		and to implement StringFile.setType.
		The objWriteln functions were duplicated in all
		classes that inherit from StringFile: WindowFile,
		SerialFile because they no longer inherit directly.
	Bugfixes:
		There was a uf operation in LexFile.
		There was another f->fid->fid problem in StringFileSeek
	Misc ideas:	
		On the VAX, this may mean that WindowFile should not be
		implemented on the terminal window.  We could ignore the
		terminal and used a graphical CRT Listener window.
		This code could be shared by all implementations if
		graph.c implements...

2.8U March 11, 1993
	Serial file revised to use OpenDriver because PBOpen does not work
	on drivers any more. (At least with THINK C...)

2.8V March 29, 1993
	Class WindowFile has been eliminated from the Kernel.
	(The old versions contain a bug: seek and pos were not correctly overridden.)
	Changes from the experimetal meta class version of Alltalk have been introduced.
	These changes do not effect existing source code, but meta classes are now 
	available.
	Images have been revised to eliminate system dependent image files.  The
	new image files should work on any processor regardless of the color model.
	Image files should also be portable between processors and operating systems.
	(Knock on wood folks.)
	The selectors for $activate and $deactivate are no long available for application
	programmers.  Developers should override the start and stop messages in class
	System.
	Image save and restore is much faster. (No scan for activate/deactivate/suspend)
	The compiler is much faster due to revisions in Lex.

2.8W April 14, 1993
	Revisions for portable Images made the real time oscilloscopes slower.
	A back door access to the image represenation bits has been  added so 
	COOPS programmers can directly generate scope images on the DSP.

	Arrays in Alltalk have been limited to 65535 entries.  This
	limit was further restricted by memory allignment requirements in
	the heap.  All these restrictions have been removed:  array indexes and
	sizes are only limited by the 32 bit address space and available
	virtual memory.

	Several problems with the string library size parameters were fixed.
	This has caused an unpredictable crash now and then...

2.8X April 26, 1993
	A problem introduced by the internal conversion of type int to
	32 bits made Window.drawLines stop working. 

2.8Y August 31, 1993
	Optional priorities are added to Event.
	Bugs in the StringFile and BinaryFile classes we fixed to
	make #seek and #pos work correctly.  Methods for #size and
	#setSize are added to change the size of a file.
	An old bug the that made the object count wrong when
	CHECK was used before an image was saved is now fixed.
	When stand alone applications were made by saving the heap
	into a program image, the image file was never 'shrunk' if
	the code got smaller.  This is now fixed.
	Window.drawLines[count, xArray, yArray] has been changed.
	The count parameter used to refer to the number of line
	segments drawn.  The arrays contained count+1 values for the
	end point coordinates.  Now count is used to number the coordinate
	pairs so the arrays contain count coordinates each.  The number of
	line segments drawn is now count-1.
	

2.8Z October 21, 1993
	An error in BinaryFile could cause an incomplete record to be read
	when both the count and record size parameters were used with a minimum
	sized buffer.  (Fixed.)

2.9A November 21, 1993
	This version has some invisible internal reorganization that saves
	memory in applications that have lots of windows. 
	Class Directory now supports #create to create a new directory.
	The listener window now has the usual x,y,wide, high messages.
	Reopening or recreating BinaryFile or StringFile objects will now dispose
	of the operating system file objects to prevent consumption extra system
	open file slots.  This was a problem on both Mac and PC.
	String.isNumber now works with the same kinds of 'numbers' that the
	String.real or String.integer conversions will accept.  (It allows more
	kinds of white space and trailing chars that are not numbers.)

2.9B December 21, 1993
	The File create and open operations that use the dialog to obtain
	a file did not start in the directory specified by the default 
	file name.  This has been corrected. This fix also make the
	Directory.default method correctly specify the default directory
	that will be used by the next dialog open or create operation.
	
	The method for #setType[creatorString, typeString] has been
	changed for better compatibility with other operating systems.
	There are now two methods: #setType[typeString] and
	#setCreator[creatorString] used to specify these parameters
	individually.  Some systems don't have the concept of a creator
	and type and some systems use part of the file name to (the extension)
	to specify this information.  The #setType[typeString] specifies
	the file extension on these machines.  It should not contain a dot
	however.  The file type also controls the filtering operation when
	a dialog box is used to obtain a file specification.  Only files
	of the specified type are included.  To see all file types, use
	the default file type and creator which are empty strings.

2.9B (Windows)
	Taken from Mac version.  All classes have the same C sources.
	
2.9C January 17, 1994
	All the array classes now have a #set method to initialize
	all or part of the array values.

	Conversion of real to string has been improved to give
	better rounding and formatting behavior.

	Launching external applications has been added:
	
		system.command[applicationPathName]
		
	The application won't run right away because it has
	to get some event cycle time.  You have to use an Event
	or some other mechanism to follow up an application launch
	if you depend on the launch being completed before your
	Alltalk code takes subsequent actions.

	Exception handling added:
	
		context.catch
		context.throw[aMessage]

	See the kernel class documents for details.

2.9C (Windows) March 23, 1994
	Mouse tracking error caused double clicks from kernel.
	Heap size increased to 6 meg.
	
2.9C(W) March 31, 1994
	The .seek, .size, and .pos functions in the file classes contained an
	error that caused results to be unpredictable.

2.9D March 31, 1994
	Real zero was converted to string without a decimal.
	Now zero converts to "0.0".
	PC is updated to match this version.
	
2.9E May 2, 1994
	BinaryFile create with optional parameters displayed
	the message "Create text file" instead of saying "binary".
	In all the File subclasses #read did not return the
	number of bytes actually read. This has been changed.
	This also means that messages cannot be cascaded to 
	files after read now because an integer is returned.
	A change was made to the View.extras for reading Images
	to correct for this change.  The classes modified are:
	StringFile, BinaryFile, SerialFile, and Driver.

2.9F July 13, 1994
	Added multiplex to all the scalar array classes.
	(ByteArray, SmallArray, IntegerArray, RealArray)
	See the kernel class modules for documentation.
	Add String.upper and String.lower for case conversions.


2.9F (Windows) July 14, 1994
	Updated to match the Mac.

2.9G July 19,1994
	Major revision to clean up all 16 vs 32 bit default
	integer conflicts so now any C compiler will work.
	(Mainly in the array classes)

2.9G (Windows) July 20, 1994
	Updated to match Mac 
	
2.9HW (Windows bugs) September 13, 1994
	Filled rectangles no longer leave outlines on their
	backgrounds when set to match the background.
	Arrays indexed with negative subscripts now report
	the error correctly.
	There are fewer "MSWExtras.alt" in Views now.

2.9HW2 (Windows bugs) October 10, 1994
	An old bug that messed up fast scrolling in the listerner
	window is fixed.
	The cursor blinking rate in the listern window is now controled
	by real time.  (Currently one second)

2.9HW3 (Windows bug fix) October 20, 1994
	The visual C++ compiler generates incorrect code when using
	inline floating instructions for the "cvtFtoS" (Convert float
	to string) function in the kernel.  The symptoms cause the
	value "0.01" to be written as 0.001 (No other values are
	known to fail.)  The repair is to compile for 8087 calls,
	rather than inline 8087 instructions.

2.9HW4 (Windows feature added) November 1, 1994 
	The arrow keys are now supported.

2.9HW5 (Windows bug fixed) December 14, 1994 
	Window.drawLines: The count parameter was off-by-one.
	
2.9HW6 (Windows bug fixed) January 11, 1995
	Array index of zero crashed due to heap changes.

2.9HW7 (Windows and Mac) January 17, 1995
	Correction for NAN's in the floating point conversion
	prevents rare infinite loop.
	