/*progress1-progress4 are just global variables
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;