
 History

    0.95e [11 January 2003]  Fixed a bug in the assember.
    0.95f [10 September 2003]  Converted to NASM; fixed some syntax
       incompatibilities.
    0.98 [27 October 2003]  Added EMS commands and copyright conditions.

    ------- changes below done by japheth

    0.99 [27 Septemb 2006]
       - bugfix: IF was not displayed correctly.
       - FS and GS registers displayed if cpu is 80386+.
       - RX displays the standard 32bit registers.
       - R register [value] understands the standard 32bit registers.
    0.99a [28 Septemb 2006] 
       - bugfix: JECXZ had wrong prefix (66h, should be 67h).
       - A and D understand the 32bit opcodes LOOP(Z|NZ|E|NE)D.
    0.99b [29 Septemb 2006]
       - L and W now work with FAT32 drives.
    0.99c [29 Septemb 2006]
       - RX changed. Now it toggles 16/32 bit register dump.
       - RN displays floating point register status.
    0.99d [02 October 2006]
       - bugfix: RN displayed error-pointer registers wrong.
    0.99e [12 October 2006]
       - XR command added to reallocate EMS handle.
       - XA command allows to allocate zero pages on EMS 4.0.
       - TM [0|1] added to be able to switch T to the ms-dos debug
         compatible behaviour (that is, T jumps into 'INT xx').
    0.99f [17 October 2006]
       - debug's EMS functions may work even with a "hidden" EMM.
       - bugfix: display of mappable pages didn't account for amount of
         these pages == 0.
    0.99g [25 October 2006]
       - bugfix: U was unable to recognise [ESP] related memory operands
         (i.e. mov eax,[esp]).
    0.99h [07 November 2006]
       - bugfix: R trying to display content of effective address has
         caused a GPF in v86-mode if this address was FFFFh of FFFDh.
       - IW, ID, OW and OD implemented.
    0.99i [14 November 2006]
       - bugfix: a child PSP was created but not terminated, causing files
         not to be closed. It became obvious if stdin and/or stdout were
         redirected to files ("C:\>DEBUG >yyy")
    0.99j [16 November 2006]
       - bugfix: using T if current instruction is an INT xx (and trace
         mode == 0) stopped debuggee one instruction *after* the INT (due
         to a x86 design weakness).
       - bugfix: the 0.99i bugfix had some problems on FreeDOS.
    1.00 [25 November 2006]
       - bugfix: debuggee's psp was saved after program load only, but
          this has to be done every time the debugger regains control.
       - There is now a DPMI aware version of debug, DEBUGX, createable
         from the source.
       - bugfix in disassembler: RETF did not have a corresponding RETFD
         entry (to switch with prefix 66h)
    1.01 [26 November 2006]
       - bugfix: MC2 didn't work.
       - Register names can be used anywhere where a number is expected
         as input.
    1.02 [29 November 2006]
       - bugfix: 'I d' and 'O d' didn't work because the parser assumed
         ID and OD commands.
       - DEBUGX bugfix: T= and G= didn't work in protected-mode.
       - bugfix: loading a file at another location than cs:100h was not
         supported in versions 0.99 - 1.01.
       - Debugger can be loaded high.
    1.03 [1 February 2007]
       - DEBUG bugfix: previous version of DEBUG.COM did not reliably reset
         "auto-reset" breakpoints (used for processing INTs).
       - DEBUGX: DI now works in real-mode as well.
       - DM command added.
    1.04 [2 March 2007]
       - making single-step through the DOS kernel possible.
    1.05 [1 April 2007] 
       - program exit code displayed.
       - DM displays the PSP "name".
       - autorepeat for D, DX, T and U added.
       - DEBUGX: DX added.
    1.06 [21 May 2007] 
       - bugfix: SMSW/LMSW in assembler didn't accept a 32bit operand.
       - bugfix: OW/OD didn't accept the value parameter.
       - key '-' supported in E command to step backward.
    1.07 [3 November 2007]
       - bugfix: entering ranges with upper bound was refused.
       - DEBUGX bugfix: if help cmd waited for a keypress, it displayed
         garbage if cpu was in protected-mode and CWSDPMI was used.
       - Tracing into an INT (TM 1) now works if interrupt vector points
         to ROM code.
    1.08 [23 November 2007]
       - bugfix: segment prefix was lost for mnemonics without arguments
         (patch by Oleg O. Chukaev).
    1.09 [30 December 2007]
       - DEBUGX: several bugfixes for A and U handling 32bit code segments.
       - bugfix: U split lines if instruction size exceeded 6.
       - bugfix: M didn't work with "upper bound" ranges.
       - DEBUGX change: in 32bit code segments, U displayed ECX as first
         operand for LOOPx to indicate that ECX is used instead of CX.
         Now a 'D' is attached to the opcode (LOOPxD, x=Z|NZ|E|NE) instead.
       - bugfix: A didn't choose the short (=signed) form of arith
         instructions (adc, add, ...) if E/AX was first operand.
    1.10 [25 January 2008]
       - DEBUGX: to intercept DPMI initial switches to protected-mode,
         int 2Fh is now hooked later. This allows to debug applications
         which install their own DPMI host during initialization.
       - DEBUGX: DL understands an optional "count" argument.
    1.11 [06 February 2008]
       - bugfix: debugger lost debuggee's HiWord(EFL) in real-mode.
       - bugfix: if debuggee set CR0 AM bit and EFL AC flag, an
         exception 11h occured in the debugger.
       - DEBUGX bugfix: G command was unable to set/restore breakpoints if
         HiWord(EIP) wasn't clear.
       - DEBUGX bugfix: U ignored HiWord of argument's offset part.
       - DEBUGX bugfix: E ignored HiWord of argument's offset part.
       - DEBUGX bugfix: M didn't accept first argument's offset > FFFF.
       - DEBUGX bugfix: running in NTVDM and pressing Ctrl-C while debuggee
         is in protected-mode no longer drops to real-mode.
       - DEBUGX: RN now renders floating point register content properly
         (DEBUG still just displays raw hex format for size reasons).
       - DEBUGX: DI got an optional 'count' parameter.
       - DEBUGX: D default segment part is checked if it is valid in pmode
         and changed to value of client's DS if no.
    1.12 [14 February 2008]
       - bugfix: length 0 in range wasn't interpreted as 64 kB.
       - DEBUGX bugfix: E in prompt mode didn't work with 32bit offsets.
       - DEBUGX bugfix: L and W didn't work with buffer offset >= 10000h.
       - DEBUGX bugfix: Q while debuggee was in pmode caused a GPF if
         HiWord(EIP) or HiWord(ESP) wasn't zero.
       - DEBUGX: DI additionally displays DPMI exception vectors.
       - DEBUGX: when running in NTVDM, DEBXXVDD.DLL will be loaded, which
         will make L and W work with sectors on this platform.
       - DEBUGX: DM now works in protected-mode as well.
       - now all commands are described in DEBUG.TXT.
    1.13 [27 February 2008]
       - DEBUG bugfix: L and W with sectors worked for DEBUGX only in v1.12.
    1.14 [12 January 2009]
       - DEBUGX bugfix: 'D ip' caused a syntax error.
       - DEBUGX bugfix: if debugger stepped into an INT in protected-mode,
         the carry flag was cleared.
       - H improved.
       - source converted to Masm syntax.
       - samples in Masm syntax added.
    1.15 [12 April 2009]
       - bugfix: in v1.04 - v1.14, restoring debuggee's interrupt vectors
         23+24 caused a memory corruption (8 bytes) due to a wrong segment
         register value.
    1.16 [20 April 2009]
       - bugfix: 'mnc' command was rejected. Syntax changed to 'mc n'.
       - bugfix: in v1.14-1.15, 'g' didn't reliably detect whether a bp was
         external.
       - bugfix: 'g' command could get confused by opcode CD 03.
       - DEBUGX bugfix: 'a' command ignored hiword of current offset in
         32bit segments.
       - DEBUGX bugfix: when debuggee was in protected-mode and then
         terminated during execution of 'p' or 't' command, the try to
         restore an internal bp may have caused memory corruption.
    1.17 [28 April 2009]
       - bugfix: R <32bit register> <new value> didn't work in v1.16.
       - bugfix: DPMICL16.ASM wasn't a sample for a 16bit DPMI client.
       - bugfix: under some conditions 'm' was silently rejected.
    1.18 [18 May 2009]
       - DEBUGX bugfix: RN required a 80386 cpu.
       - DEBUGX bugfix: RN always assumed that current mode is real-mode.
         However, the layout of FSAVE/FRSTOR differs for protected-mode.
       - bugfix: 'A' command didn't accept a semi-colon right after the
         mnemonic (example: clc;)
       - if cpu is 80386+, the 32bit version of FSAVE/FRSTOR is used now,
         which improves display of the FPU status.
       - 'r' command: EFL added to 386 register display.
       - for FLDENV, FSTENV, FSAVE and FRSTOR, 16/32 bits variants with
         suffixes W/D were added: FLDENVW/FLDENVD, FSTENVW/FSTENVD, ...
       - DEBUGX: 'rm' command added to display MMX registers.
       - DEBUGX: instructions MOVD, MOVQ, EMMS added to assembler and 
         disassembler.
       - layout of tables in debugtbl.inc modified to make them use
         symbolic constants and addresses. This allows to modify this
         file directly.
    1.19 [18 October 2010]
       - DEBUGX bugfix: breakpoints set with G couldn't be reset if the
         debuggee's current mode (real-mode / protected-mode) did change
         inside G.
    1.20 [20 October 2010]
       - DEBUGX: bugfix of v1.19 modified to navigate around a couple of
         CWSDPMI bugs.
    1.21 [29 October 2010]
       - DEBUGX bugfix: internal breakpoints set by T or P still had
         problems if a mode switch occured.
    1.22 [11 November 2010]
       - DEBUGX bugfix: wrong value of PSP displayed with DM if debuggee
         was halted in real-mode after initial switch to protected-mode.
       - DEBUGX bugfix: line assembler didn't handle PC-relative addresses 
         correctly if source or destination was > 0xFFFF.
    1.23 [15 April 2011]
       - bugfix 'a' command: entering a segment register name may have
         "terminated" debug unexpectedly.
       - bugfix: XS always assumed 255 EMS handles. Now it tries to get
         the number of EMS handles by using EMS4 function 5402h.
       - 'a' command: the segment prefix syntax as it is implemented by
         MS debug is accepted now ( which is a segment register followed
         by a colon ).
       - file makex.bat added.
    1.24 [04 July 2011]
       - bugfix: line assembler didn't encode 32-bit addressing with SIB
         byte correctly in v1.23.
       - debug script DPMICL16.SCR added.
    1.25 [08 August 2011]
       - 2 variants (F & G) added to makex.bat
