//define signals and directions (Input, outputs, clocks)


#define output0 0
setoutput(output0);

#define output1 1
setoutput(output1);

#define output2 2
setoutput(output2);

#define output3 3
setoutput(output3);

#define input0 4
setinput(input0);

#define input1 5
setinput(input1);

#define input2 6
setinput(input2);

#define input3 7
setinput(input3);

  
#define PW pw()
#define SB(x) setbit(x) 
#define CB(x) clearbit(x)
#define CLOCK  clearbit(CLKBIT); pw();setbit(CLKBIT);pw()
#define LCLOCK  clearbit(CLKBIT); pw();setbit(CLKBIT);pw();clearbit(CLKBIT); pw()
#define CLOCKS(x) for (i=0;i<x;i++) {clearbit(CLKBIT);pw(); setbit(CLKBIT); pw();}
#define STOP setstop();
#define START setstart();
#define REPEAT(x) for (i=0;i<(x);i++) {pw();}
#define DOFOR(x) for (j=0;j<(x);j++) {
// }

			     
#define INST0 CB(output3);CB(output2);CB(output1);CB(output0);PW;
#define INST1 CB(output3);CB(output2);CB(output1);SB(output0);PW;
#define INST2 CB(output3);CB(output2);SB(output1);CB(output0);PW;
#define INST3 CB(output3);CB(output2);SB(output1);SB(output0);PW;
#define INST4 CB(output3);SB(output2);CB(output1);CB(output0);PW;
#define INST5 CB(output3);SB(output2);CB(output1);SB(output0);PW;
#define INST6 CB(output3);SB(output2);SB(output1);CB(output0);PW;
#define INST7 CB(output3);SB(output2);SB(output1);SB(output0);PW;
#define INST8 SB(output3);CB(output2);CB(output1);CB(output0);PW;
#define INST9 SB(output3);CB(output2);CB(output1);SB(output0);PW;
#define INST10 SB(output3);CB(output2);SB(output1);CB(output0);PW;
#define INST11 SB(output3);CB(output2);SB(output1);SB(output0);PW;
#define INST12 SB(output3);SB(output2);CB(output1);CB(output0);PW;

START;
INST0;

setwaitpoint(0);
setwaittime(0,5);
INST1;

setstartloop(5);
setnloop(5,2);
INST2;

setstartloop(0);
setnloop(0,2);
INST3;

INST4;

setstoploop(0);
setstoploop(5);
INST5;

INST6;

setwaitpoint(4);
setwaittime(1,0);
INST7;

INST8;

setstartloop(2);
setnloop(2,0);
INST9;

INST10;

setstoploop(2);
INST11;

STOP;
INST12;