Code

bsrt var word ; base rotate PORT 0
lwbk var word ; lower back PORT 1
upbk var word ; upper back PORT 2
neck var word ; neck PORT 3
rtsh var word ; right shoulder PORT 4
rtue var word ; right upper elbow PORT 5
rtle var word ; right lower elbow PORT 6
rtfg var word ; right fingers PORT 7
rttb var word ; right thumb PORT 8
ltsh var word ; left shoulder PORT 9
ltue var word ; left upper elbow PORT 10
ltle var word ; left lower elbow PORT 11
ltfg var word ; left fingers PORT 12
lttb var word ; left thumb PORT 13
rttk var word ; right track PORT 14
lttk var word ; left track PORT 15
left var word ; to check the direction where to move the next movement
right var word ; 'right'
cnt var word ; count of to and fro journey
init var word ; initilization value, default set to 1500
movetime var word

bsrt = 1500
lwbk = 1550
upbk = 1400
neck = 1500
rtsh = 1400
rtue = 2000
rtle = 2300
rtfg = 1900
rttb = 1200
ltsh = 1400
ltue = 2000
ltue = 2000
ltle = 2500
ltfg = 1000
lttb = 1500
rttk = 1450
lttk = 1450
cnt = 0
init = 0

movetime = 10000
serout p15,i38400,["#0P",DEC bsrt,"T",DEC movetime,13]
serout p15,i38400,["#1P",DEC lwbk,"T",DEC movetime,13]
serout p15,i38400,["#2P",DEC upbk,"T",DEC movetime,13]
serout p15,i38400,["#3P",DEC neck,"T",DEC movetime,13]
serout p15,i38400,["#4P",DEC rtsh,"T",DEC movetime,13]
serout p15,i38400,["#5P",DEC rtue,"T",DEC movetime,13]
serout p15,i38400,["#6P",DEC rtle,"T",DEC movetime,13]
serout p15,i38400,["#7P",DEC rtfg,"T",DEC movetime,13]
serout p15,i38400,["#8P",DEC rttb,"T",DEC movetime,13]
serout p15,i38400,["#9P",DEC ltsh,"T",DEC movetime,13]
serout p15,i38400,["#10P",DEC ltue,"T",DEC movetime,13]
serout p15,i38400,["#11P",DEC ltle,"T",DEC movetime,13]
serout p15,i38400,["#12P",DEC ltfg,"T",DEC movetime,13]
serout p15,i38400,["#13P",DEC lttb,"T",DEC movetime,13]
serout p15,i38400,["#15P",DEC rttk,"T",DEC movetime,13]
serout p15,i38400,["#14P",DEC lttk,"T",DEC movetime,13]

pause 2000

rtsh = 1900
ltsh = 1100
rttb = 1500
lttb = 1400
rtfg = 1300
ltfg = 1500
serout p15,i38400, ["#4P" , DEC rtsh,"T",Dec movetime,13]
serout p15,i38400, ["#9P" , DEC ltsh,"T",Dec movetime,13]
serout p15,i38400, ["#8P" , DEC rttb,"T",DEC movetime,13]
serout p15,i38400, ["#13P", DEC lttb,"T",DEC movetime,13]
serout p15,i38400, ["#12P", DEC ltfg,"T",DEC movetime,13]
serout p15,i38400, ["#7P" , DEC rtfg,"T",DEC movetime,13]

pause 2000

rtue = 2500
ltue = 2500

serout p15,i38400, ["#5P" , DEC rtue,"T",DEC movetime,13]
serout p15,i38400, ["#10P", DEC ltue,"T",DEC movetime,13]

pause 10000

rtfg = 1900
ltfg = 1000

serout p15,i38400, ["#4P" , DEC rtsh,"T",Dec movetime,13]
serout p15,i38400, ["#9P" , DEC ltsh,"T",Dec movetime,13]
serout p15,i38400, ["#8P" , DEC rttb,"T",DEC movetime,13]
serout p15,i38400, ["#13P", DEC lttb,"T",DEC movetime,13]
serout p15,i38400, ["#12P", DEC ltfg,"T",DEC movetime,13]
serout p15,i38400, ["#7P" , DEC rtfg,"T",DEC movetime,13]

pause 10000

loop:
rttk = 1200
lttk = 1200
movetime = 50
my_input var Word
my_input = 0
serout s_out, i9600, [DEC my_input,13]
serout p15,i38400,["#2P",DEC upbk,"T",DEC movetime,13]
serout p15,i38400,["#1P",DEC lwbk,"T",DEC movetime,13]
owin P0,0,exit,[my_input]

if ( my_input > 0 ) then

rttk = 1450
lttk = 1450
serout p15,i38400,["#15P",DEC rttk,"T",DEC movetime,13]
serout p15,i38400,["#14P",DEC lttk,"T",DEC movetime,13]
neck = 700
serout p15,i38400,["#3P" ,DEC neck,"T",DEC movetime,13]
pause 2000
owin P0,0,exit,[my_input]
if ( my_input > 0 ) then
neck = 2300
serout p15,i38400,["#3P" ,DEC neck,"T",DEC movetime,13]
pause 2000
owin P0,0,exit,[my_input]
if ( my_input > 0 ) then
neck = 1500
serout p15,i38400,["#3P" ,DEC neck,"T",DEC movetime,13]
rttk = 1450
lttk = 1450
serout p15,i38400,["#15P",DEC rttk,"T",DEC movetime,13]
serout p15,i38400,["#14P",DEC lttk,"T",DEC movetime,13]
goto exit
else
rttk = 1800
lttk = 1200
serout p15,i38400,["#15P",DEC rttk,"T",DEC movetime,13]
serout p15,i38400,["#14P",DEC lttk,"T",DEC movetime,13]
pause 1600
neck = 1500
rttk = 1450
lttk = 1450
serout p15,i38400,["#15P",DEC rttk,"T",DEC movetime,13]
serout p15,i38400,["#14P",DEC lttk,"T",DEC movetime,13]
serout p15,i38400,["#3P" ,DEC neck,"T",DEC movetime,13]
pause 2000
goto loop
endif
else
rttk = 1200
lttk = 1800
serout p15,i38400,["#15P",DEC rttk,"T",DEC movetime,13]
serout p15,i38400,["#14P",DEC lttk,"T",DEC movetime,13]
pause 1600
neck = 1500
rttk = 1450
lttk = 1450
serout p15,i38400,["#15P",DEC rttk,"T",DEC movetime,13]
serout p15,i38400,["#14P",DEC lttk,"T",DEC movetime,13]
serout p15,i38400,["#3P" ,DEC neck,"T",DEC movetime,13]
pause 2000
goto loop
endif
else
rttk = 1100
lttk = 1050
serout p15,i38400,["#15P",DEC rttk,"T",DEC movetime,13]
serout p15,i38400,["#14P",DEC lttk,"T",DEC movetime,13]
endif
serout s_out, i9600, [DEC my_input,13]
pause 200

goto loop
exit:
cnt = cnt + 1;
if ( cnt < 2 ) then
pause 3000
rttk = 1200
lttk = 1780
serout p15,i38400,["#15P",DEC rttk,"T",DEC movetime,13]
serout p15,i38400,["#14P",DEC lttk,"T",DEC movetime,13]
pause 3400
neck = 1500
rttk = 1450
lttk = 1450
serout p15,i38400,["#15P",DEC rttk,"T",DEC movetime,13]
serout p15,i38400,["#14P",DEC lttk,"T",DEC movetime,13]
serout p15,i38400,["#3P" ,DEC neck,"T",DEC movetime,13]
pause 2000
goto loop
else
pause 4000
neck = 1500
rttk = 1450
lttk = 1450
serout p15,i38400,["#15P",DEC rttk,"T",DEC movetime,13]
serout p15,i38400,["#14P",DEC lttk,"T",DEC movetime,13]
serout p15,i38400,["#3P" ,DEC neck,"T",DEC movetime,13]
pause 2000
movetime = 1000
rtfg = 1450
ltfg = 1450
serout p15,i38400, ["#12P", DEC ltfg,"T",DEC movetime,13]
serout p15,i38400, ["#7P" , DEC rtfg,"T",DEC movetime,13]
clap:
pause 1000
rtue = 2500
ltue = 2500
serout p15,i38400, ["#5P" , DEC rtue,"T",DEC movetime,13]
serout p15,i38400, ["#10P", DEC ltue,"T",DEC movetime,13]
pause 1000
rtfg = 1900
ltfg = 1000
serout p15,i38400, ["#12P", DEC ltfg,"T",DEC movetime,13]
serout p15,i38400, ["#7P" , DEC rtfg,"T",DEC movetime,13]
pause 1000
rtue = 2000
ltue = 2000
serout p15,i38400, ["#5P" , DEC rtue,"T",DEC movetime,13]
serout p15,i38400, ["#10P", DEC ltue,"T",DEC movetime,13]
goto clap
endif