This shows you the differences between two versions of the page.
— |
blog:pushbx:2023:0108_ldebug_work_in_december_and_early_january [2023-01-08 16:36:12 +0100 Jan Sun] (current) ecm created |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== lDebug work in December and early January ====== | ||
+ | |||
+ | **2023-01-04** | ||
+ | |||
+ | The end of December and the first days of January saw a lot of changes to the debugger. | ||
+ | |||
+ | ===== INSTALL and UNINSTALL commands ===== | ||
+ | |||
+ | These commands are in part to provide easier to memorise commands for installing and uninstalling interrupt hooks, namely the lDebugX interrupt 2Fh hook (to hook the DPMI entrypoint), | ||
+ | |||
+ | However, a new command added for lDDebugX/ | ||
+ | |||
+ | The newly named '' | ||
+ | |||
+ | |||
+ | ===== Convenience entrypoints to cmd3 loop ===== | ||
+ | |||
+ | The first of these has been provided for a while already: The assembly makes sure to place '' | ||
+ | |||
+ | The second convenience entrypoint is a slight variation: If '' | ||
+ | |||
+ | Finally, if dual code segments are in use, then the convenience entries at offsets 0 and 1 will be duplicated to the lDEBUG_CODE2 segment as well. This allows to use a simple '' | ||
+ | |||
+ | Finally, the '' | ||
+ | |||
+ | |||
+ | ===== Disassembler changes ===== | ||
+ | |||
+ | If string instruction simulation is disabled, the access variables will be calculated with an assumed count of 1 instead of '' | ||
+ | |||
+ | An '' | ||
+ | |||
+ | No repeated string instruction simulation occurs when running the U command now. | ||
+ | |||
+ | |||
+ | ===== Test changes ===== | ||
+ | |||
+ | The test script '' | ||
+ | |||
+ | |||
+ | ===== Serial IRQ changes ===== | ||
+ | |||
+ | The big change is that the serial interrupt handler can now (and will by default) pass along calls to it to its downlink, enabling to share the IRQ with another program installed before the debugger' | ||
+ | |||
+ | It is assumed that the prior handler will issue an EOI. However, if during the KEEP prompt handling the debugger detects that its IRQ is still listed as in service within the In-Service Register, it will change an option of the debugger and issue an EOI. The option is to insure that the serial interrupt handler will issue EOIs going forward. If the IRQ sharing is also enabled then the prior handler will be called instead of chained to, and the EOI is issued after it returns. | ||
+ | |||
+ | Further, the KEEP prompt handling will also check that the serial IRQ is still enabled in the PIC. If it is found to have been masked off, it is re-enabled and IRQ sharing is disabled. This is meant to catch the case where the default (or prior) handler masks the IRQ that it receives. | ||
+ | |||
+ | With these three changes, the debugger will adapt to work on both older dosemu2, current dosemu2, and our 686 box, yet also enable shared IRQ use (eg for multiple serial ports). | ||
+ | |||
+ | |||
+ | ===== Descriptor modification commands ===== | ||
+ | |||
+ | These commands allow to modify LDT descriptors in Protected Mode. They are inspired by the X commands for EMS modification. There' | ||
+ | |||
+ | The base of an existing selector can be read using a '' | ||
+ | |||
+ | |||
+ | ===== AMIS changes ===== | ||
+ | |||
+ | The new AMIS private function 33h is used to install fault areas structures. It is provided by lDebugX by default. | ||
+ | |||
+ | DDebug/ | ||
+ | |||
+ | |||
+ | ===== E command changes ===== | ||
+ | |||
+ | The E command can now be used without a parameter. It will continue after the last byte written or at the last byte displayed by a prior E command. This address is also available in the '' | ||
+ | |||
+ | Some 32-bit addressing bugs in the E command were also fixed. | ||
+ | |||
+ | |||
+ | ===== Expression evaluator changes ===== | ||
+ | |||
+ | The '' | ||
+ | |||
+ | The '' | ||
+ | |||
+ | The RIxxy and PSP variables in lDebugX now save and restore the scratch selector, fixing bugs eg when writing a command like '' | ||
+ | |||
+ | The PSP variables as well as the TSR command were fixed to set the scratch selector limit, as '' | ||
+ | |||
+ | |||
+ | ===== Option 6 for ROM-BIOS I/O ===== | ||
+ | |||
+ | Option 6 flag 200h was changed to force only **output** to the ROM-BIOS interface (plus use of the '' | ||
+ | |||
+ | |||
+ | ===== Boot load support for iniload query patch ===== | ||
+ | |||
+ | If the query patch flag 80h is set for a unit, bootable lDebug will now read the low 3 bits of the query patch and use them to set its '' | ||
+ | |||
+ | As a companion, INSTSECT now carries /U, /P, /Q, and /L options to patch respectively the unit, part info, query geometry, and LBA detection bits of the lDOS boot sector loaders. This allows to modify the first stage without any need for the assembler nor much of an understanding of the build process. | ||
+ | |||
+ | |||
+ | ===== New sleep wait handling ===== | ||
+ | |||
+ | It was observed on the 686 machine that the debugger would wait too long, for example on the serial KEEP prompt. It turned out that with FDAPM installed with '' | ||
+ | |||
+ | The most important part of these patches is the '' | ||
+ | |||
+ | The value should not be too high to keep the skew at midnight low enough. At 24:00:00 the timer tick is stepped from 18_00AFh or 18_00B0h to 0. The delta limit handling ignores this transition, so it will detect the low word's delta as being very high at midnight. Higher precision timers should probably specifically handle midnight. For example, the Insight debugger' | ||
+ | |||
+ | {{tag> | ||
+ | |||
+ | |||
+ | ~~DISCUSSION~~ | ||