//Pass the task structure you //wish to spy upon. U0 SpyStackRep(CTask *task) { CDoc *doc = DocDblBufStart; while (!CharScan && TaskValidate(task)) { StackRep(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 (!CharScan && 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 = I64Get("Task Addr: ", 0); if (TaskValidate(task)) { "\n\n\t$BT,\"StackRep\",LM=\"1\n\"$\n\n\n" "\n\n\t$BT,\"CallerRep\",LM=\"2\n\"$\n\n\n"; i = I64Get("", 0); if (i == 1) SpyStackRep(task); else if (i == 2) SpyCallerRep(task); else break; } else break; } '\n'; } Spy;