/*progress1-progress4 are just global vars
shown on the wallpaper. Terry used them in debugging a lot.

If you set progress1_max-progress4_max,
then a progress bar will display.

If you set progress1_t0-progress4_t0
then the elapsed time will display.

If you set progress1_tf-progress4_tf
then the estimated time will display.
*/

U0 Main1()
{
        "\nWith description.\n";
        PressAKey;
        progress1_max = 200;
        StrCopy(progress1_desc, "Progress Demo"); //PROGRESS_DESC_LEN is max
        while (progress1++ != progress1_max)
                Sleep(20);
        ProgressBarsReset;
}
Main1;

U0 Main2()
{
        "\nWith description and elapsed time.\n";
        PressAKey;
        progress1_max = 200;
        progress1_t0 = tS;
        StrCopy(progress1_desc, "Progress Demo"); //PROGRESS_DESC_LEN is max
        while (progress1++ != progress1_max)
                Sleep(20);
        ProgressBarsReset;
}
Main2;

U0 Main3()
{
        "\nWith description, elapsed time and registry total time.\n";
        PressAKey;
        progress1_max = 200;
        progress1_t0 = tS;
        RegExe("DemoCompany/ProgressBars");
        StrCopy(progress1_desc, "Progress Demo"); //PROGRESS_DESC_LEN is max
        while (progress1++ != progress1_max)
                Sleep(20);
        ProgressBarsReset("DemoCompany/ProgressBars");
}
Main3;

U0 Main4()
{
        "\nNo description.\n";
        PressAKey;
        progress1_max = 200;
        while (progress1++ != progress1_max)
                Sleep(20);
        ProgressBarsReset;
}
Main4;


"\nNow, from asm...  It's handy for debugging.\n"
"Watch the progress on the wallpaper.\n";
WinBorder(ON);
PressAKey;

asm {
_PROGRESS_DEMO::
                                MOV             RCX, 12000000
@@05:                   MOV             U64 [&progress1], RCX
                                CALL            &Yield
                                LOOP            @@05
                                MOV             U64 [&progress1], RCX
                                RET
}

_extern _PROGRESS_DEMO U0 AsmProgressDemo();
AsmProgressDemo;