
Are you a dosemu hacker?  If not, then what are you doing with release 0.61?
This is a highly unstable release, trying to add new functionality and
straighten out the old code problems.

Right.  So you are moving up from version 0.60.  Lots has changed.  Lots.
In an effort to try and keep the code mildly clean for at least a week, I
would like comment on the changes that have been made.  Please read this
file carefully.

GOT THAT?  PLEASE READ THIS FILE CAREFULLY!  Thanks!  :)

Lots of things have changed.  Most notably, the code has been completely
reorganized.  Please, please, please try to help keep the code separated.
The basic organization is this:

./src/
  base		-- all the functions you would need to make a 'virtual
		   DOS box'
  dosext	-- all DOS-specific extensions (e.g. EMS, XMS, UMB, IPX,
		   DPMI, etc.)
  env		-- files relating to the keyboards & displays for the various
                   'environments' (e.g. X, terminal, console, console w/vga)
  emu-i386      -- files relating to vm86() functionality
  emu-bochs     -- files relating to bochs 80x86 emulation
  emu-*
  arch-linux    -- files needed to build the Linux version of dosemu
  arch-netbsd   -- files needed to build the NetBSD version of dosemu

------------------------------------------------------------------------------
Types & Variables:

There are new types (Bit8u, Bit16u, & Bit32u.)  Please use them instead of
'u_char', 'us', 'u_short', 'unsigned short', 'long', 'unsigned long', etc.
They represent 8bit, 16bit, and 32bit quantities, respectively.

When transferring information to and from DOS, please use the READ_BYTE,
READ_WORD, READ_DWORD, WRITE_BYTE, WRITE_WORD, & WRITE_DWORD functions.
To read & write blocks, use: MEMCPY_TO_DOS & MEMCPY_TO_UNIX.

For everyone except the DPMI folks, there are new macros:
_AX, _BX, _CX, _DX, _SI, _DI, _BP, _SP
_EAX, _EBX, _ECX, _EDX, _ESI, _EDI, _EBP, _ESP
_AH, _AL, _BH, _BL, _CH, _CL, _DH, _DL
_CS, _DS, _ES, _FS, _GS

Please try to use them instead of HI(), LO(), REG(), & LWORD().  Those macros
were used incorrectly throughout the code, so it seems easier to request
that folks use these macros to be more explicit about what values they are
assigning and reading.

------------------------------------------------------------------------------
Functions:

Lots and lots of functions have changed.  Most notably the signal*, int*,
port*, hlt*, and bios* functions.

XXX

------------------------------------------------------------------------------
Phases:

Phase0:  Anything for the base system that has nothing to do with the
         actual DOS emulation (e.g. one time initialization of the system --
         detecting the environment, setting up the emulator, various
         handler setup, etc.)

Phase1:  Set up any DOS-box functions (bios, interrupt lists, handlers,
         pic, pit, rtc, cmos, etc.)

Phase2:  Set up any DOS-specific functions (EMS, XMS, DPMI, etc.)

Each phase has an _init and a _term function.  These are called (surprise!)
at initialization and termination.

Phase1 & 2 also have _reset procedures.  These procedures will do any setup
that is needed when the system is rebooted (initially or when the user
requests a reboot.)

------------------------------------------------------------------------------









