static void DeactivateBreaks( struct TDebugThread *obj, struct TDebugBreak *BreakList, struct TDebugWatch *WatchList ) { struct TDebugBreak *b = BreakList; struct TDebugWatch *w = WatchList; int bnum = 0; opcode_type brk_opcode; if( !obj->FWasTrace ) { while( w ) { if (bnum < 4) { RdosClearBreak( obj->ThreadID, bnum ); bnum++; } w = w->Next; } while( b ) { if ((b->Sel & 0x3) == 0x3) { RdosWriteThreadMem( obj->ThreadID, b->Sel, b->Offset, (char *)&brk_opcode, sizeof( brk_opcode ) ); b->Instr = brk_opcode; } else { if (bnum < 4) { RdosClearBreak( obj->ThreadID, bnum ); bnum++; } } b = b->Next; } } }
static void ActivateBreaks( struct TDebugThread *obj, struct TDebugBreak *BreakList, struct TDebugWatch *WatchList ) { struct TDebugBreak *b = BreakList; struct TDebugWatch *w = WatchList; opcode_type brk_opcode = BRKPOINT; int bnum = 0; while( w ) { if (bnum < 4) { RdosSetWriteDataBreak( obj->ThreadID, bnum, w->Sel, w->Offset, w->Size ); bnum++; } w = w->Next; } while( b ) { if ((b->Sel & 0x3) == 0x3) { RdosReadThreadMem( obj->ThreadID, b->Sel, b->Offset, (char *)&brk_opcode, sizeof( brk_opcode ) ); b->Instr = brk_opcode; RdosWriteThreadMem( obj->ThreadID, b->Sel, b->Offset, (char *)&brk_opcode, sizeof( brk_opcode ) ); } else { if (bnum < 4) { RdosSetCodeBreak( obj->ThreadID, bnum, b->Sel, b->Offset ); bnum++; } } b = b->Next; } }
static void ActivateBreaks( struct TDebugThread *obj, struct TDebugBreak *BreakList, struct TDebugWatch *WatchList ) { struct TDebugBreak *b = BreakList; struct TDebugWatch *w = WatchList; char brinstr = 0xCC; int bnum = 0; while( w ) { if (bnum < 4) { RdosSetWriteDataBreak( obj->ThreadID, bnum, w->Sel, w->Offset, w->Size ); bnum++; } w = w->Next; } while( b ) { if ((b->Sel & 0x3) == 0x3) { RdosReadThreadMem( obj->ThreadID, b->Sel, b->Offset, &b->Instr, 1 ); RdosWriteThreadMem( obj->ThreadID, b->Sel, b->Offset, &brinstr, 1 ); } else { if (bnum < 4) { RdosSetCodeBreak( obj->ThreadID, bnum, b->Sel, b->Offset ); bnum++; } } b = b->Next; } }
static void DeactivateBreaks( struct TDebugThread *obj, struct TDebugBreak *BreakList ) { struct TDebugBreak *b = BreakList; if( !obj->FWasTrace ) { while( b ) { RdosWriteThreadMem( obj->ThreadID, b->Sel, b->Offset, &b->Instr, 1 ); b = b->Next; } } }
static void ActivateBreaks( struct TDebugThread *obj, struct TDebugBreak *BreakList ) { struct TDebugBreak *b = BreakList; char brinstr = 0xCC; while( b ) { RdosReadThreadMem( obj->ThreadID, b->Sel, b->Offset, &b->Instr, 1 ); RdosWriteThreadMem( obj->ThreadID, b->Sel, b->Offset, &brinstr, 1 ); b = b->Next; } }
int WriteMem( struct TDebugThread *obj, int Sel, long Offset, char *Buf, int Size ) { return RdosWriteThreadMem( obj->ThreadID, Sel, Offset, Buf, Size ); }