LMS 2012
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
TestPrg4 Application

// 
//
//
//**********************************************************************
//        TESTPRG4
//**********************************************************************
                                                                      //
                                                                      //
#define Timer//  DATA32    Timer
#define Counter1//  DATA32    Counter1
#define Counter2//  DATA32    Counter2
#define DataF//  DATAF     DataF
#define Run//  DATA8     Run
#define Globals//
                                                                      //
                                                                      //
UBYTE     prg[] =                                                     //
{                                                                     //
  PROGRAMHeader(1.01,4,Globals),                                      //  TestPrg4
  VMTHREADHeader(0,16),                                               //  MAIN
  BLOCKHeader(0,1,1),                                                 //  Block1
  BLOCKHeader(0,1,1),                                                 //  Block2
  SUBCALLHeader(0,4),                                                 //  Add
                                                                      //
                                                                      //  void    MAIN(void)
                                                                      //  {
  opMOVE32_32,LC0(0),Counter1,                                        //    Counter1  =  0
  opMOVE32_32,LC0(0),Counter2,                                        //    Counter2  =  0
                                                                      //
  opMOVE8_8,LC0(1),Run,                                               //    Run       =  1
  opOBJECT_TRIG,LC0(2),                                               //    OBJECT_TRIG(Block1)
  opOBJECT_TRIG,LC0(3),                                               //    OBJECT_TRIG(Block2)
                                                                      //
  opTIMER_WAIT,LC4(100),Timer,                                        //    TIMER_WAIT(100,Timer)
  opTIMER_READY,Timer,                                                //    TIMER_READY(Timer)
                                                                      //
  opMOVE8_8,LC0(0),Run,                                               //    Run       =  0
  opOBJECT_WAIT,LC0(2),                                               //    OBJECT_WAIT(Block1)
  opOBJECT_WAIT,LC0(3),                                               //    OBJECT_WAIT(Block2)
                                                                      //
  opJR_NEQ32,Counter1,LC0(0),LC0(3),                                  //    if (Counter1 == 0)
                                                                      //    {
  opINFO,LC0(SET_ERROR),LC0(18),                                      //      INFO(SET_ERROR,18)
                                                                      //    }
  opJR_NEQ32,Counter2,LC0(0),LC0(3),                                  //    if (Counter2 == 0)
                                                                      //    {
  opINFO,LC0(SET_ERROR),LC0(18),                                      //      INFO(SET_ERROR,18)
                                                                      //    }
  opOBJECT_END,                                                       //  }
                                                                      //
                                                                      //
                                                                      //  define  Block1  {
                                                                      //                    do              
                                                                      //                    {
  opCALL,LC0(4),LC0(1),Counter1,                                      //                      Add(&Counter1)
                                                                      //                    }
  opJR_TRUE,Run,LC0(-7),                                              //                    while (Run)
  opOBJECT_END,                                                       //                  }
                                                                      //
                                                                      //
                                                                      //  define  Block2  {
                                                                      //                    do              
                                                                      //                    {
  opCALL,LC0(4),LC0(1),Counter2,                                      //                      Add(&Counter2)
  opNOP,                                                              //                      NOP()
                                                                      //                    }
  opJR_TRUE,Run,LC0(-8),                                              //                    while (Run)
  opOBJECT_END,                                                       //                  }
                                                                      //
                                                                      //
  1,IO_32,                                                            //  void    Add(DATA32 *Cnt)
                                                                      //  {
  opADD32,LV0(0),1,LV0(0),                                            //    *Cnt++
  opRETURN,                                                           //  
  opOBJECT_END,                                                       //  }
                                                                      //
};                                                                    //
                                                                      //
//
//!