
 History

 2008/01/11: version 2.9.6
 
  K command didn't work in previous version(s).
  bugfix: GPA didn't display mapped pages.
  rx command added to display xmm registers.
  DEBXXVDD for Win NT/XP added to tell the debugger if a page is
   readable/writeable.
  Under NT/XP, the OS will now notice the debugger's idle state.
 
 2007/06/12: version 2.9.5

  bugfix: the debugger relied upon the BIOS variables if debuggee was
   in text mode, resulting in a bad debug display if these variables
   weren't set to match the CRT values. Now the debugger directly queries
   the CRT if a VGA compatible display has been detected (DOS version only).
  bugfix: if Read/Write failed due to an invalid address, no message was
   displayed.
  bugfix: in v2.9.4, DEB16FW didn't work. And it tried to load an 
   experimental VDD, which was not included.
  bugfix: 'write' didn't use DS as default segment/selector.
  if <offset> parameter is given with 'Write', the file will not be
   truncated if it already exists.
  VDS macro modified so it actually displays something
  MSR command now installs a ring 0 GPF handler before running rdmsr/wrmsr,
   thus hopefully being able to display all valid MSRs without generating
   exceptions in ring 0.
  16-bit dll SYMBHDLD/SYMBHDLW no longer loaded on startup.
  16-bit KERNEL functions no longer imported by DOS versions of debugger.
  .VID cmd displays debuggee's current video/VESA mode 
  added a "clientview" parameter for .DN and .SEG in DOS version.
    
 
 2006/11/17: version 2.9.4a

  file RMDBGHLP.BIN missed in v2.9.4.

 2006/11/15: version 2.9.4
 
  DEB32FP renamed to DEB32F.
  bugfix: type command may have caused a GPF if DS held an expand down
   selector.
  FR command to display floating-point registers changed to RN.
  name of RMS command changed to S2D.
  new RM command to display MMX registers.
  floating point register display improved.
  watch real-mode int 21h and prevent debuggee to set interrupt vectors
   01 and 03.
  PTEs now displayed without leading zeros.
 
 2006/09/17: version 2.9.3
 
  bugfix: debugger may have caused a GPF on low memory conditions
   during startup.
  bugfix: if debugger DS was flat and expand down (DPMILDR=2048), it
   may not have set breakpoints reliably.
  errorcode returned by "lock drive" API in LOCKDrive displayed
  .DS command displays errors now
  in .MCB command type of MCB ('M' or 'Z') is displayed
  linker to build deb32fp.dll changed to POLINK
  bugfix: system was unable to detect breakpoint duplicates (same
   address + same type) after BD/BE has been implemented.
  added a "clientview" option for .DM and .DM32 in DOS version
 
 2006/07/13: version 2.9.2

  bugfix: keyboard polling didn't take into account that input from port
   60h may be from PS/2 device. Also IRQ 12 is no longer disabled inside
   debugger, because if the PS/2 mouse input is not handled, the keyboard
   may lock.
  added a new value for load option to disable break at real-mode entries
  bugfix: HiWord(EFlags) was lost if debuggee runs in real-mode
  bugfix: if screen was in graphics mode debugger couldn't be started.
  better idle indication when running on WinNT platforms
  BD/BE implemented to disable/enable a breakpoint
 
 2006/05/09: version 2.9.1
 
  display a message if DEB32FP.DLL cannot be loaded
  CR4 now may be edited inside the debugger (if ring 0 access is on)
  added REALLOCMX (DPMI function ax=0505h)
  reading TR3-TR5 on 80486 cpus deactivated. These registers provide
   no useful information and DosBox crashes if one tries to read them
   (although it reports an 80486).
  .DN now is able to find the nearest export to a given address
  bugfix: don't display psps which don't start with 'CD 20'
  bugfix: IRM didn't work if DS contained an expand down selector
  display module entry point in .DN
 
 2006/02/14: version 2.9

  PICOFF replaces MPICOFF + SPICOFF, PICON replaces MPICON + SPICON,
   PICValue replaces MPICValue + SPICValue.
  use DPMI ax=090x functions to get/set (virtual) interrupt flag
   in STRICT mode (required by WinXP and DosEmu).
  MSR now accepts a parameter (no of MSR to read)
  IW/ID implemented
  bugfix: (linear) memory address 0 accessed by symbol evaluation
  bugfix: another problem with expand down segments fixed
  bugfix: sometimes the debugger crashed on initialization due
   to a buffer overrun when reading debxxf.mac

 2005/10/01: version 2.8.1

  bugfix: expand down segments still caused problems
  DR4/DR5 no longer read (caused exception 06 on QEMU)
  TSS command accepts a parameter now
  if debugger installs resident with .res return code 0 to dos
  real-mode exceptions 05 and 07 now catchable by debugger.
   FPU bits in cr0 now show debuggee state.
  bugfix: iop command didn't work and didn't check for size
   of io permission bitmap
  bugfix: debugger now sets bit 7 of debuggee's PSP:[4Fh] if 
   debuggee was at least once in protected mode. If debuggee is to
   be canceled and this bit is set, the debugger will use a int 21h,
   ah=4Ch in protected mode in any case.
  .SFT command changed so it doesn't use DOS calls
  don't set client's ES,FS,GS to NULL in 'cancel' command
  added an option (on by default) to make the debugger
   skip exceptions 01 which it isn't responsible for.
  bugfix: .DA32 command didn't work for deb32f because
   int 21h, ax=4b82h expects a linear address in edx. 
  .DN command: 2. parameter accepted for 32bit modules,
   and it may be an address (linear/far16) or an ordinal.
  bugfix: adding macros from debxxf.mac didn't work properly.
  bugfix: limits of expand down segments weren't calculated
   correctly, resulting in "out of segments limit" message
  command "cancel": if current PSP==debugger PSP, don't
   do a int 21h, ah=4Ch call.
            
 2005/06/15: version 2.8

  internal variable MSW added
  commandline option -F documented
  bugfix: debuggee may just have switched to text mode
   but the screen is inconsistent (i.e. charsets not loaded).
   So take this situation into account. 
  debugger can now optionally ignore Sysreq
  variable EMSave now true as default.
  GCS renamed to CPStat. It acccepts a parameter now (new value
   for coprocessor status)
  a slight security check added when restoring debugger screen
   so there's no danger to overwrite UMBs and HMA when the memory
   is garbage.
  profile entry "HWBrk=0" will disable usage of HW breakpoints
  int 23h trapping may be disabled by profile entry "Ctrl-C=0"
  some support for 32RTM: int 2F, ax=FB42h, bx=3233h in real mode
  disable loader only during client is running
  Input command did not display a LF
  if base of a LDT selector is unknown (some DOSEMU selectors),
   dont check for "pm int vector points into free dos mem block"
  PFlags display changed, now able to change paging flags as well

 2004/08/31: version 2.7.9

  ALLOCSS command added
  now debugger sets DPMILDR environment variable internally
  if debugger is active text mode cursor should always be visible
   now (previously wasn't visible if debuggee switched cursor off)
  graphics helper dlls now loaded in extended memory
  bugfix: move now works with real mode destination address

 2004/06/16: version 2.7.8

  graphics helper dlls now load charset manually
  bugfix: read/write now works with real mode address
  keyboard polling now uses translation table from debxxf.ini
  bugfix: keyboard polling used german key translation
  helper DEBFVGA.DLL now uses int 10, AH=1C to save/restore state
  a second graphics helper DEBFVESA.DLL for VESA graphics created
   which is now loaded as default.
  the graphics helper dll may be changed by GraphHlp .INI param
  debuggee graphics handling now in a separate binary DEBFVGA.DLL.
  handling debuggee graphics mode extracted to new module GRAPHIC
  IDT/DI command improved

 2004/06/09: version 2.7.7

  SYSREQ may execute an INT 1/3 instead of setting trace flag.
  debuggers INT 09 vector now always remains first in the
   interrupt chain and thus allows break into debuggee with SYSREQ.
  for NT platform ALT-SCROLL key combination is used for SYSREQ
   since ALT-PRINT is caught by the system.
  check for SYSREQ no longer relies on BIOS variables
  macro LOAD4G added to debxxf.mac
  TRACEFlag 20 will jump over REP LODS/MOVS/STOS...
  swapping may be forced with new TRACEFlag 10
  bugfix: a breakpoint set before debuggee was loaded caused
   the debugger not to stop at program entry
  bugfix: launching a shell didn't work if a debuggee was loaded
  tprintf no longer assumes anything about ds/es
  current drive/directory now saved/restored on Save/LoadState
   for non-windows versions  
  bugfix: v86 mode wasn't detected
  bugfix: showfile.dll couldn't allocate segment for files > 1MB
  value of AX is displayed for int 21/31 in trace mode
  bugfix: screenswap for dos versions of debugger didn't work
   properly if debugger displayed int 41h messages.
  Unassemble uses segment part of address, so unassemble code
   in readable GDT segments will work again.
  support for DOS4/GW int 21h, AH=FF installed
  bugfix: check for invalid PM ints didn't work in all cases
  bugfix: if a standard bp cannot be written, use hw break
  bugfix: disabled vcpi wasn't reactivated on debugger exit
  bugfix: parser problem with multiple commands in one line
  bugfix: variable WINversion now NULL if int 2f, ax=1600 wasn't
   successful
  Go command now always possible for windows version
  windows version: use old int09 vector returned from GetBiosKeyProc
   while in debugger
  bugfix: .Quit for non-windows versions now works much better
  deb16fwv.dll now has its own profile file
  deb16fw: when setting/resetting breakpoints in win32 code
   page attributes will be restored
  diassembler prefix doesnt display segment part - and assumes
   CS D-bit set - if address is zero-based flat.
  .DN now understands 32bit modules
  bugfix: deb16fw didn't terminate if a 16-bit dll wasn't found
  deb16f now uses 32bit profile string functions which don't
   write back values which haven't changed.
  toolhelp32 functions now loaded dynamically in deb16fwh.dll, 
   so deb16fw works with NT as well 

 2004/05/26: version 2.7.6

  .DS now implemented for deb32fp.dll
  32bit version of symbhdld.dll (symbhd32.dll) no longer required
  bugfix: windows version may have overwritten hoststack 
  .sym command now works again (for all versions)
  type command deactivated on XP if output is on standard device
  error message displayed when no output is possible on XP
   in debugger's windows version.
  debxxhlp.dll renamed to deb16fwh.dll. No longer used by deb32f.exe
  the windows version will work now on XP, output in a console
   window in a separate process (deb16fwp.exe).
  notification messages will no longer switch to debugger screen
  bugfix: debugger no longer touches segments which are marked
   as not present.
  saving/restoring windows screen now done on a different stack.
   This avoids a bug in win31's FreeSelector routine.
  bugfix: .SEG command for a NE module with 0 segments caused a GPF
  windows version: exceptions inside debugger reported from toolhelp
   will display registers like the DPMI exception handler proc.
  video handling for windows version extracted to 16-bit dll
   deb16fwv.dll.
  windows version now uses Death/Resurrection to switch to/from
   debugger screen.
  bugfix: parser knows decimal values (ending with 't') again
  macros now in separate file debxxf.mac
  bugfix: setting a breakpoint at cs:eip located onto SS:ESP
   didn't work
  bugfix: pressing ctrl-alt-sysreq in the windows version
   no longer causes a GPF if toolhelp is deactivated
  the different versions of the debugger now all have
   their own section in debxxf.ini
  the windows version of the debugger will no longer loose
   control if int 21h, ax=4b00h returns
  more notification displays (load dll, exit dll, ...)
  a break in an interrupt service routine for IRQ 0 or 1 will
   set debugger's IRQ variable to 0, so continue debugging works.
  bugfix: breakpoint set with go command now works in real-mode
  rmdbghlp.dll changed to plain binary file, so it will
   be loaded by debugger and ensured it is located in conv. mem.
  windows version of debugger changed from NE to MZ format

 2004/05/13: version 2.7.5

  bugfix: 16-bit debugger version crashed if debuggee switched
   into graphics mode
  debugger now consumes less stack space if client is in real-mode
  screen swap now works as expected
  .DN with second parameter (wExport) now works as described
  DOSUTIL1.DLL no longer used
  .SFT and .CDS now works for deb32fp as well
  MACro accepts an argument, will then display this macro only
  macros will accept arguments now (^)
  bugfix: .SYM command works again
  debugger recognizes raw mode switches and will set breakpoints
   in trace mode to ensure control isn't lost.
  bugfix: safe display of [esp] in register command
  .Kill command added
  .LDR command added
  check for invalid real mode int vectors 00-2F added
  .MCBFree added
  reset int 1C (as int 08) while in debugger
  bugfix: D-bit of debugger's data descriptor was set for
   16-bit version (since debugger has changed to MZ format).
  display various error messages in deb16f/deb32f

 2004/04/29: version 2.7.4
 
  .VIDeo was not documented in debxxf.hlp
  init debugger video screen if it is filled with 00s
  bugfix: executing debugger with /? parameter now works again
  changed address format of real mode dumps to '&SSSS:OOOO'
  default traps changed (exc 0,1,3,6,c,d,e/pmint 1/rmint 0,1,3,6)
  16-bit debugger version changed from NE TO MZ format, so
   with TLINK no more 64 kB restriction.
  bugfix: parser had problems to recognize valid end of a
   number constant
  bugfix: unknown commmand entered caused a crash because
   PE loader didn't recognize CS as a module handle

 2004/04/24: version 2.7.3

  bugfix: MEMinfo printf output caused buffer overflow
  handle "divide by zero" error in parser
  check for int 21h, ah=1A (set DTA) calls on NT platforms, since
   this doesnt work if HIWORD(edx) is != 0. As well check for
   LFN functions used (GetCurrentDirectory) by debugger.
  alway reinitialize environment selector for debugger PSP.
   On NT platforms this value is converted to a segment if a
   program is launched.
  avoid to use HW breaks on NT platforms, since they cannot be
   freed anymore.
  bugfix: initial HW break may have failed because DH register
   for DPMI call 0B00h was != 0
  display erros/warnings if HW breaks cannot be cleared
  bugfix: internal printf routine causes memory corruption
   when SS!=DS (displays in int 41h routine)
  if program entry break cannot be set, set trace bit in eflags
   so after int 41h, ax=F003h returns an trace exception will occur
  check if hw breaks available, if not, use sw breaks
  display dpmi memory handle for 32bit module list
  command .CLRDOS implemented
  repair some important invalid protected mode int vectors
  GPA made more user friendly and no longer assumes that handle
   is linear base address (like in win9x and HDPMI) 
  after debuggee is done, test if any pm int points to free dos mem
  bugfix: hw breaks in real mode work now, restart flag is set
  Jump command accepts a parameter to force bp in real mode
  .I41 command added
  .FREE32 deleted, is now done by .FREE
  .SEG command now displays 32bit module sections
  commands entered by shortcuts aren't saved in keyboard buffer  

 2004/04/14: version 2.7.2

  command EPM now can show exception vectors from the
   debuggee's view.
  created own version of Get/WritePrivateProfileString,
   thus avoiding to include dkrnl32 modules such as
   VirtualAlloc/VirtualFree, CreateFile,...

 2004/04/12: version 2.7.1

  rewrote code to avoid usage of _lcreat, lopen, lread...            
  .psps command rewritten so it doesnt use any extern obj. module.
  new variable in ini file to set "first chance" exceptions
   (default is 0xA, exceptions 01 and 03 are "first chance")
  PD command now displays committed pages for each entry

 2004/03/19: version 2.7.0

  implemented emulation of KernelHeapFree function so less
   code from dkrnl32 library is automatically included. 
   This was a problem because of IRQ 1 handler in PeekCon.Asm.
  stack of deb32fp.exe changed from 1000h to 10000h.
   This stack is used when loading a dll for example.
  code for int41, ax=164h (load 32bit dll) added
  LDTSelector added to DPMI status (deactivated)
  command GPA implemented
  command .VCPI implemented

 2004/01/09: version 2.6.1

  fixed bug causing GPF when running on NT/2K/XP version

 2004/01/01: version 2.6.0

  conversion to english done
  started help file conversion to english language
  32bit debugger dll changed to PE format (version 2.6)

