LMS 2012
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
TestPrg4.c
Go to the documentation of this file.
1 //
7 //
8 //
9 //**********************************************************************
10 // TESTPRG4
11 //**********************************************************************
12  //
13  //
14 #define Timer GV0(0) // DATA32 Timer
15 #define Counter1 GV0(4) // DATA32 Counter1
16 #define Counter2 GV0(8) // DATA32 Counter2
17 #define DataF GV0(12) // DATAF DataF
18 #define Run GV0(16) // DATA8 Run
19 #define Globals 17 //
20  //
21  //
22 UBYTE prg[] = //
23 { //
24  PROGRAMHeader(1.01,4,Globals), // TestPrg4
25  VMTHREADHeader(0,16), // MAIN
26  BLOCKHeader(0,1,1), // Block1
27  BLOCKHeader(0,1,1), // Block2
28  SUBCALLHeader(0,4), // Add
29  //
30  // void MAIN(void)
31  // {
32  opMOVE32_32,LC0(0),Counter1, // Counter1 = 0
33  opMOVE32_32,LC0(0),Counter2, // Counter2 = 0
34  //
35  opMOVE8_8,LC0(1),Run, // Run = 1
36  opOBJECT_TRIG,LC0(2), // OBJECT_TRIG(Block1)
37  opOBJECT_TRIG,LC0(3), // OBJECT_TRIG(Block2)
38  //
39  opTIMER_WAIT,LC4(100),Timer, // TIMER_WAIT(100,Timer)
40  opTIMER_READY,Timer, // TIMER_READY(Timer)
41  //
42  opMOVE8_8,LC0(0),Run, // Run = 0
43  opOBJECT_WAIT,LC0(2), // OBJECT_WAIT(Block1)
44  opOBJECT_WAIT,LC0(3), // OBJECT_WAIT(Block2)
45  //
46  opJR_NEQ32,Counter1,LC0(0),LC0(3), // if (Counter1 == 0)
47  // {
48  opINFO,LC0(SET_ERROR),LC0(18), // INFO(SET_ERROR,18)
49  // }
50  opJR_NEQ32,Counter2,LC0(0),LC0(3), // if (Counter2 == 0)
51  // {
52  opINFO,LC0(SET_ERROR),LC0(18), // INFO(SET_ERROR,18)
53  // }
54  opOBJECT_END, // }
55  //
56  //
57  // define Block1 {
58  // do
59  // {
60  opCALL,LC0(4),LC0(1),Counter1, // Add(&Counter1)
61  // }
62  opJR_TRUE,Run,LC0(-7), // while (Run)
63  opOBJECT_END, // }
64  //
65  //
66  // define Block2 {
67  // do
68  // {
69  opCALL,LC0(4),LC0(1),Counter2, // Add(&Counter2)
70  opNOP, // NOP()
71  // }
72  opJR_TRUE,Run,LC0(-8), // while (Run)
73  opOBJECT_END, // }
74  //
75  //
76  1,IO_32, // void Add(DATA32 *Cnt)
77  // {
78  opADD32,LV0(0),1,LV0(0), // *Cnt++
79  opRETURN, //
80  opOBJECT_END, // }
81  //
82 }; //
83  //
84 //
86 
#define Run
#define BLOCKHeader(OffsetToInstructions, OwnerObjectId, TriggerCount)
Definition: bytecodes.h:1579
UBYTE prg[]
Definition: p0.c:1
#define Globals
#define LC4(v)
Definition: bytecodes.h:1618
#define VMTHREADHeader(OffsetToInstructions, LocalBytes)
Definition: bytecodes.h:1573
#define PROGRAMHeader(VersionInfo, NumberOfObjects, GlobalBytes)
Definition: bytecodes.h:1570
#define Timer
#define LC0(v)
Definition: bytecodes.h:1615
#define LV0(i)
Definition: bytecodes.h:1621
unsigned char UBYTE
Basic Type used to symbolise 8 bit unsigned values.
Definition: lmstypes.h:29
#define Counter2
#define Counter1
#define SUBCALLHeader(OffsetToInstructions, LocalBytes)
Definition: bytecodes.h:1576
#define IO_32
Definition: bytecodes.h:1659