Elliott 803 Simulation - Possible New Features
==============================================

The v1.2.0 release contains near enough all the function I had originally
intended to implement in this project.  The following is a list of 
possible enhancements - some large, some small - that could be added or
have been suggested by people who have used the program.
  
  Tape Readers and Punches
  ------------------------
  When developing a program you might spend quite a lot of time editing it 
  and re-compiling it.  It might be used to add a 'Reload' button to the tape
  reader as a quick way of reloading the last tape.
  
  The view of the reader and/or punch could also be enhanced to display some
  or all of the file it is reading/writing.  For reading text files (such as 
  Algol programs) it would be good to see some or all of the text displayed 
  and some kind of cursor or highlight showing the current character being 
  read.  This could help identify the source of some of the compiler's rather 
  terse and cryptic error messages.
  
  Teletype and Plotter
  --------------------
  Add a "Print" button to print the current output to a real printer.
  
  Interactive Input
  -----------------
  Not sure if a real 803 could do this or not but the 503 could read from the
  teletype device as well as write to it.  A '71 4096' instruction would mean
  read from the teletype.  Curiously the Algol compiler will generate these 
  instructions if a READER(3) function is coded.  Being able to enter a small
  amount of data interactively via the teletype would be useful for Algol 
  programs that want one or two parameters and would avoid having to edit and
  load a separate tape just to supply the data.
  
  Alternatively, the tape readers could be enhanced to have am 'interactive' 
  mode, whereby they read from some sort of text input area rather than a file.   
  
  Additional Hardware
  -------------------
  The main piece of missing hardware is the film handlers.  There is a block-
  device framework already in the code with a thought to implementing them but
  it is not complete and there is no actual film handler implementation.
  
  It shouldn't be too hard to do - it's basically just a big store - although
  I'm not actually sure how useful it would be.  Storing things on paper tapes
  is not really a problem when the 'tapes' are really just disk files!  
 
  Better Floating Point
  ---------------------
  The floating point instructions work by cheating, they convert the Elliott
  39-bit floating point numbers to Java doubles, do the arithmetic in Java
  then convert back to the Elliott bit pattern.  This is simple and actually
  works very well, but the results are not always absolutely identical to 
  those a real 803 would produce.
  
  It would be possible rewrite the FPU to do all its work entirely using the 
  Elliott number format and this should produce exact results.  But it would 
  need some in-depth knowledge of exactly how the original hardware worked 
  especially in some of the edge cases.  I'm not sure how worthwhile this would
  be.
  
  Elliott 503
  -----------
  The Elliott 503 was a follow-on the the 803 and had a very similar instruction
  set and hardware peripherals, although it was much faster.  It wouldn't be
  too hard to branch the code to create a separate 503 emulation, although 
  hopefully much of the existing core code could be kept common. 
  

If anyone is interested in working on any of these or other enhancements
please drop me an email at tjb803@tinymail.co.uk.

Tim Baldwin
December 2013  