63 lines
1.1 KiB
HolyC
63 lines
1.1 KiB
HolyC
|
//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;
|