
***************************************
* New features/changes in version 0.4 *
***************************************

User interface:
---------------
The load command now selects the instruction indicated by the PC and
makes it visible, so the instruction memory looks as usual.

Also, if you use the mouse to select a different instruction in the
instruction memory display, it now causes the PC to correspondingly
change. Deselecting is no longer possible (the PC instruction gets
immediately reselected).

New parsing error messages:
---------------------------
There is now an error message if you declare a name as a label or
register name that is already in use in either of these roles.  There
is also an error message if you use a label as a register name or vice
versa.

Bug fix:
--------
The comment had said that loading a program in cleared the instruction
memory, but in fact this didn't happen.  So, if you went from a larger
program to a smaller, you got the tail end of the old program tacked
onto the new, which could cause confusion and debugging hassles.  So,
as of SLIME version 0.4, it now really does clear out the instruction
memory when you load.

***************************************
* New features/changes in version 0.3 *
***************************************

User Interface:
---------------
SLIME can be started as an applet.  The "applet" part consists mainly 
of a text area where the program is input.  Quitting in the main SLIME window 
doesn't halt the applet; there is a button for re-starting SLIME.

Added "Quit" button.

Improved formatting of instructions.  The original label, if any, is shown.

The graphical Exception button has been replaced by a simpler 
text-based indicator.  This removes the need for that ugly
"GraphicPath" business.  (Although I still think there should 
be some nicer way to do that in Java.)

The instruction window is scrolled to make the current instruction 
visible after each step.  (This was trivial-- there's a function to 
do just that, which I never noticed before.) 

Other:
------
The applet conversion made it necessary to be more careful about cleanup.
Several small functions have been added for stopping the MachineThread and 
dispose()ing the windows.

Notes:
------

The console window can be improved under Java 1.1, but I'm holding 
off on that until I get a decent 1.1 JDK.  Most of the other "work to 
be done" items from before have been taken care of.  So I made a new list.

Possible improvements:
  ** The code for determining whether the program is running as an applet 
or an application is a little kludgy... ideally, it should make less 
difference.  In general, the "shut-down" code could take another look, 
perhaps a rewrite.
  ** The various uses of Font should probably be combined, so only 
one check need be made for the existence of "Courier."  The handling 
of its absence may be suspect.  It might also be useful to allow 
the font name to be taken from a property.
  ** The Quit button is too close to everything else, and there is 
no confirmation required in its use.
  ** Documentation should be written.
  ** The SLIME window on the applet version usually obscures the 
applet in the browser, along with any explanatory text.  This is a 
rather "rude" behavior--- perhaps SLIME should be in its "stopped" 
state initially.
  ** Menus?  Some sort of "about" or "help" window?
  ** I'm still tempted to rewrite the parser using a more coherent 
strategy, or using some of the available parsing tools.

***************************************
* New features/changes in version 0.2 *
***************************************

General:
--------
Lots of race conditions fixed.

Added instruction counter.


User Interface:
---------------
Register text fields do not change vertical size.

Console input is cleared after being read.

Graphical button for displaying and clearing exception flag.

Stop, Reset, and Load buttons all interrupt a console input.

*********************
* Version 0.1 notes *
*********************

Differences between SLIME and Scheme SLIM simulator:

0. No parentheses.
        (Although it would not be hard to merely ignore them.)
1. Program labels must end with a colon.
2. Commas are accepted (but not necessary) between arguments.
3. Multiple "allocate-registers" are allowed.
4. Address labels and register labels share a name space.  
        (This would also not be too difficult to change.)

   >This isn't actually a difference between SLIME and the current Scheme
   >SLIM simulator, though it is a difference between the two of them and
   >an earlier incarnation of the simulator written in Scheme.
   >
   >On the other hand, although this behavior (sharing a name space) is
   >consistent not only with the current simulator written in Scheme but
   >also with the description in the book, I would like to change it (and
   >change the description in the book and the simulator written in
   >Scheme). Having seperate name spaces resulted in many fewer really
   >frustrating bugs; combining the two name spaces was something we did
   >to make the description simpler, but wasn't worth it.
   >
   > -max

5. Java "int"s are used instead of Scheme bignums.

