----------------last changed: 2003-01-10-------------------------

[John Elliott] 

 - Changes made to the source to compile under Linux without warnings.
 - Modified the CPU emulation so that memory accesses wrap at 0xFFFFF 
  (like a real 8086). This will need changing if the A20 gate is ever 
  implemented in gde.
 - Added the CP/M CALL 5 instruction to the PSP, and some rudimentary 
  8086 code at INT 30h to handle it.

----------------last changed: 8/21/92----------------------------

This is the current build of gde.  Several people have expressed
an interest in the program, and for that reason I've put it
out for anyone who may have a interest in hacking on the code.

The latest changes:

 - it decodes 8087 instructions correctly now
   though it does not execute them.
 - it is *alot* faster (2-4x).  Several speedup hacks added.
 - It's ANSI C for the most part.
 - Several bios services implemented
 - Console I/O (i.e. input) is in the design stages.
 - dos filesystem support started.
 - configuration file support (mapping drives, debug levels, etc).
 - The elusive TC++ FP runtime bug has been squashed.  (CF not
   set correctly in NEG operations).

----   

GDE is a still alpha quality (maybe less), unofficial, unannounced,
and still only *partially* implemented DOS emulator.  It represents
about 12 months of fairly intense work, both as part of my Master's
work here at FSU and later in an attempt to clean up the original
code.  The work was done over the period 1/91 to the present.  Lots of
work remains to be done, and I am still planning to do this work.  I
plan to relax a just a little while longer before picking this back up
actively.

GDE differs from most of the dos emulation packages for sale in that 
it is free, and emulates msdos as well.  It attempts to emulate
the 8088, some of the msdos system calls, a small amount of BIOS,
and very little else.  Disk drives are mapped into unix directories.

As it may be some time before I really get this thing working,
and due to the fact that I have sort of "announced" the project
in at least two newsgroups, I thought it might be interesting to 
see what others may think about the code.  I am planning to make 
the code and documentation availabe to those who inquired about
it.

Note that it is copyrighted material, and is currently made available
under the terms of the Gnu Public License.


The source and documentation are currently on the machine:

    ftp.scri.fsu.edu:~ftp/pub/hudgens/gde-0.03.tar.Z

Be forwarned, though, this emulation is missing alot of features found
on a real machine, and some serious liberties have been taken with the
OS emulation.  Parts of the code seem really robust, others are
pitifully weak.  The hardware emulation of the CPU is probably the
strongest portion of this package.  Still, there are parts of this
package which are embarrassingly poorly written, so if you are weak of
stomach you might want to pass until the code gets cleaned up (==
months).   Alot of the positives and negatives are in the
documentation.

Currently, the program is *only* useful in a "batch" sense, since
the console portion has not been finished yet (and not included,
either).  That is at the top of the list of things to do, and 
will preclude any "alpha" release.

Any comments you may have about it would be welcome, positive or
negative!  Feel free to contact me if you have any questions about 
the code, etc.  

As a final note, the code is mostly portable, with the exception
of a call to "timelocal" in the file doss_ufs.c.  It has been 
compiled on Sun4 and Sun3 SunOS, MIPS and VAX Ultrix, RS6000 AIX3.1
and on a SGI 4D.  

Enjoy!

JHH

hudgens@scri.fsu.edu

-------------  QUICK TO-DO LIST --------------------------------

The X stuff is now 5th on the list of things to do:

  1) there's a problem in the core 8088 emulation which I have not
     been able to identify.  It shows up on the TC++ floating point 
     runtime.  I think it has to do with undocumented flag setting
     in some operation.  

  2) Major parts of the MSDOS emulation need to be redone.  This
     really is the major headache.  

  3) An interactive ability, via X, needs to be finished.  

  4) better debugging.  

  5) Better test suite to determine program correctness.  Currently
     I have approximately 50 programs (TC, asm, PowerC) which I run
     through to determine if the emulation is running.  Most are 
     ill-concieved hacks.  Only 4 really are useful, and are used
     to test the flag setting code of most of the operations.

  6) Portability checking of the code.









