#help_index "Info;Task"
U0 TaskRepTask(CTask *task, I64 indent)
{
    CTask *task1;

    if (!IsRaw)
        "%h*c$MA,T=\"%08X\",LM=\"Kill(0x%X);\n\",$ $BLACK$#%d$FG$ $TX,\"%$Q...\",SCX=16$\n",
            indent, CH_SPACE, task, task, task->task_num, task->task_title;
    else
        "%h*c%08X #%d %$Q\n",
            indent, CH_SPACE, task, task->task_num, task->task_title;

    "%h*c%08X %04X:%04X:%08X\n", indent + 2, CH_SPACE,
                                 TaskMemAlloced(task), task->task_flags, task->display_flags, task->win_inhibit;
    task1 = task->next_child_task;
    while (task1 != (&task->next_child_task)(U8 *) - offset(CTask.next_sibling_task))
    {
        TaskRepTask(task1, indent + 2);
        task1 = task1->next_sibling_task;
    }
}

public U0 TaskRep()
{//Report current tasks on all cores.
    I64 i;
    CCPU *c;

    PUSHFD
    CLI
    for (i = 0; i < mp_count; i++)
    {
        c = &cpu_structs[i];
        if (!IsRaw)
            "$PURPLE$CPU%02X$FG$\n", i;
        else
            "CPU%02X\n", i;
        TaskRepTask(c->executive_task, 2);
    }
    POPFD
}