Debugger: DOS MCBS command should indicate the segment immediately following the last MCB block in the chain

This commit is contained in:
Jonathan Campbell
2025-10-06 00:19:47 -07:00
parent d7a4a3131c
commit 6951493dc0
2 changed files with 10 additions and 6 deletions

View File

@@ -1,4 +1,6 @@
Next version
- Debugger: DOS MCBS command now also prints the segment immediately
following the last MCB block (joncampbell123).
- Tseng ET3000/ET4000: Update Status register 3DAh behavior when emulating
Tseng chipsets to reflect Tseng datasheet, and VGAKIT SVGA detection code
expectations. Bit 7 is expected, as documented by Tseng, to be the inverse

View File

@@ -4678,23 +4678,25 @@ static void LogMCBChain(uint16_t mcb_segment) {
psp_seg_note = "";
}
DEBUG_ShowMsg(" %04X %12u %04X %-7s %s",mcb_segment,mcb.GetSize() << 4,mcb.GetPSPSeg(), psp_seg_note, filename);
DEBUG_ShowMsg(" %04X %12u %04X %-7s %s",mcb_segment,mcb.GetSize() << 4,mcb.GetPSPSeg(), psp_seg_note, filename);
// print a message if dataAddr is within this MCB's memory range
PhysPt mcbStartAddr = PhysMake(mcb_segment+1,0);
PhysPt mcbEndAddr = PhysMake(mcb_segment+1+mcb.GetSize(),0);
if (dataAddr >= mcbStartAddr && dataAddr < mcbEndAddr) {
DEBUG_ShowMsg(" (data addr %04hX:%04X is %u bytes past this MCB)",dataSeg,DOS_dataOfs,dataAddr - mcbStartAddr);
DEBUG_ShowMsg(" (data addr %04hX:%04X is %u bytes past this MCB)",dataSeg,DOS_dataOfs,dataAddr - mcbStartAddr);
}
// if we've just processed the last MCB in the chain, break out of the loop
if (mcb.GetType()==0x5a) {
break;
}
// else, move to the next MCB in the chain
mcb_segment+=mcb.GetSize()+1;
if (mcb.GetType()==0x5a)
break;
// else, move to the next MCB in the chain
mcb.SetPt(mcb_segment);
}
DEBUG_ShowMsg(" %04X END OF CHAIN",mcb_segment);
}
#include "regionalloctracking.h"