====== lDebug release 5 ====== **2023-03-08** The lDebug release 5 is imminent. Update: The release is done, grab packages at https://pushbx.org/ecm/download/ldebug/ or the source at https://hg.pushbx.org/ecm/ldebug/rev/release5 ===== ===== It brings several new features: * Support for 40-column displays in the R, U, D, and E commands * Expression types * The QA and QB and QC and QD commands * RC buffer commands * The RVP and RVD commands * The device driver mode * The conditionally debuggable lCDebug build option * Dual code segments build option * Sharing serial IRQs * The TAKEN and NOTTAKEN keywords * Debugger exception areas and AMIS private function 33h * The CLR operator * Variables to control the default length of U and D commands * INSTALL and UNINSTALL commands * Descriptor modification commands * Query patch support for bootloaded mode * MMX support commands fixed * ''IF EXISTS R variable THEN'' command It also has a number of bugfixes, including: * lDebugX in PM handles 32-bit offsets correctly more often, detects use of 32-bit offsets from limits > FFFFh * Use of the scratch selector works in some cases where it would have failed * R write memory variable command doesn't crash for values ending in FFFFh anymore * A range parameter can be ended by a semicolon comment indicator * Interrupt 19h call while in application mode now sets up registers to terminate the process on the next trace step * Current PSP is read and written using the SDA even in PM * Empty binaries now cause an error even if the DOS incorrectly handles them (FreeDOS kernel bug) * No longer crash in init if there's no UMCB but int 21.5803 is supported * Do not crash in init if int 2Fh is not initialised * WHILE condition not checked if pass or non-pass permanent breakpoint runs * The ldebug.txt file is now converted to CR LF line endings immediately after Halibut has created it * Command line tail in PSP also set up for loading .BIN files * Empty /C switch does not cause an error * Terminate properly on reaching the end of a stdin file * AAM and AAD do not display an operand in disassembly if it would be ''0A'' * RC buffer execution is aborted by a Control-C * XMS Protected Mode entrypoint is no longer used by default * ''r f .'' works * Bootloaded sector read that crosses a 64 KiB DMA boundary copies correct amount of data from transfer buffer * ''u(bootldpunit).(bootldppart)'' works even if LDP is a diskette file system * Serial IRQ handler passes on call if its IRQ isn't set in the In-Service Register of the PIC * RC command line parsing skips leading blanks * Double slash without subsequent command line allowed for ''BOOT PROTOCOL'' command * E and A commands in PM display original selector even if actually writing through the debugger's scratch selector * C command never uses debugger's scratch selector (and does not display it either) * Do not fault if scratch selector got a low limit in some way * ''BOOT PROTOCOL'' command always allows use of ENTRY and BPB parameters * Allow all address specifications for M command * Disassemble ''mov'' with segreg and memory operand as always m16 * Allow operators between ''??'' and ''::'' in H command * Allow single-digit interrupt number for RIxxy variables * Disabling string instruction simulation now assumes count as 1 for the access variables * Operand size prefix disassembled as part of a ''push'' or ''pop'' with segreg * Do not simulate string instruction on U command * lDebugX preserves scratch selector across ''getexpression'' calls * lDebugX TSR command works in PM * Set sleep delta limit to 5 to work around idle function needing more than 1 timer tick * Allow bootloaded debugger to access small FAT32 file systems (below 64 Ki clusters) * Q or QA could fail due to corrupting the client stack in the PM interrupt 21h handler * Access variables for ''int'' instructions select size based on mode, ignore operand-size of the instruction * Fix S command error if search mask is longer than search area * Support ''EXECUTING'' keyword on non-386 machines * Allow access to ''VD'' variable using R command * Creating a process resets the DTA * Bootloaded init relocation could corrupt part of the debugger in an unlikely case * RM command and MMxy register reads work {{tag>ldebug}} ~~DISCUSSION~~