U0 UsageDrawIt(CTask *, CDC *dc)
{
    I64 i, b;
    CCPU *c;
    F64 f;

    dc->thick = 1;

    dc->color = GREEN;
    GrPrint(dc, 8, 8, "CPU");

    dc->color = DKGRAY;
    GrRect(dc, 8, 16, 100, 8 + 16 * (mp_count - 1));

    dc->color = GREEN;
    for (i = 0; i < mp_count; i++)
    {
        c = &cpu_structs[i];

        f = 100.0 * (1.0 - c->idle_factor);
        if (f < 1.0)
            f = 1.0;

        GrRect(dc, 8, 16 + (16*i), ToI64(f), 8);
    }

    b = sys_code_bp->alloced_u8s - sys_code_bp->used_u8s;
    if (sys_data_bp)
        b += sys_data_bp->alloced_u8s - sys_data_bp->used_u8s;

    f = 1.0 * b / MemBIOSTotal;


    dc->color = RED;
    GrPrint(dc, 116, 8, "RAM");

    dc->color = DKGRAY;
    GrRect(dc, 116, 16, 100, 8);
    dc->color = RED;
    GrRect(dc, 116, 16, ToI64(100.0 * (1.0 - f)), 8);

    Sleep(1);
}

U0 Usage()
{
    SettingsPush;
    DocClear;
    DocCursor;
    Fs->draw_it = &UsageDrawIt;
    StrCopy(Fs->task_title, "Usage");

    while (CharGet(,FALSE) != CH_SHIFT_ESC) {};

    SettingsPop;
};

Usage;