//Pass the task structure you
//wish to spy upon.
U0 SpyStkRep(CTask *task)
{
CDoc *doc=DocDblBufStart;
while (!ScanChar && TaskValidate(task)) {
StkRep(task);
'\n';
"$BK,1$PRESS A KEY$BK,0$\n";
DocDblBufSwap;
Refresh;
}
if (DocPut==doc) DocDblBufSwap;
DocDblBufEnd;
}
U0 SpyCallerRep(CTask *task)
{
CDoc *doc=DocDblBufStart;
while (!ScanChar && TaskValidate(task)) {
CallerRep(task->rbp,task);
'\n';
"$BK,1$PRESS A KEY$BK,0$\n";
DocDblBufSwap;
Refresh;
}
if (DocPut==doc) DocDblBufSwap;
DocDblBufEnd;
}
U0 Spy()
{
I64 i;
CTask *task;
while (TRUE) {
task=Fs->next_task;
while (task!=Fs) {
"$MA+X,T=\"Task:%08X:%16ts\",LM=\"0x%08X\n\"$\n",
task,task->task_name,task;
task=task->next_task;
}
'\n';
task=GetI64("Task Addr: ",0);
if (TaskValidate(task)) {
"\n\n\t$BT,\"StkRep\",LM=\"1\n\"$\n\n\n"
"\n\n\t$BT,\"CallerRep\",LM=\"2\n\"$\n\n\n";
i=GetI64("",0);
if (i==1)
SpyStkRep(task);
else if (i==2)
SpyCallerRep(task);
else
break;
} else
break;
}
'\n';
}
Spy;