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 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 ET3000/ET4000: Update Status register 3DAh behavior when emulating
Tseng chipsets to reflect Tseng datasheet, and VGAKIT SVGA detection code Tseng chipsets to reflect Tseng datasheet, and VGAKIT SVGA detection code
expectations. Bit 7 is expected, as documented by Tseng, to be the inverse 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 = ""; 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 // print a message if dataAddr is within this MCB's memory range
PhysPt mcbStartAddr = PhysMake(mcb_segment+1,0); PhysPt mcbStartAddr = PhysMake(mcb_segment+1,0);
PhysPt mcbEndAddr = PhysMake(mcb_segment+1+mcb.GetSize(),0); PhysPt mcbEndAddr = PhysMake(mcb_segment+1+mcb.GetSize(),0);
if (dataAddr >= mcbStartAddr && dataAddr < mcbEndAddr) { 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 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; mcb_segment+=mcb.GetSize()+1;
if (mcb.GetType()==0x5a)
break;
// else, move to the next MCB in the chain
mcb.SetPt(mcb_segment); mcb.SetPt(mcb_segment);
} }
DEBUG_ShowMsg(" %04X END OF CHAIN",mcb_segment);
} }
#include "regionalloctracking.h" #include "regionalloctracking.h"