#pragma mode( separator(.,;) integer(h32) )


//A simple 2048 game on HP Prime.
//Designed by kitten39 
//1242401280@qq.com
//wonderhoi~ > ω <
//能跑起来的代码就是最好的代码！:-D


EXPORT X12048,X22048,X32048,X42048,X52048,X62048,X72048,X82048;
EXPORT X92048,X102048,X112048,X122048,X132048,X142048,X152048,X162048;
LOCAL X1,X2,X3,X4;
LOCAL X5,X6,X7,X8;
LOCAL X9,X10,X11,X12;
LOCAL X13,X14,X15,X16;
LOCAL CHOICE;
LOCAL UPDATENUM;
LOCAL MAXSCORE,TOTAL;
LOCAL LIST1,LIST2,LIST3,LIST4;
LOCAL LIST,MAT;
LOCAL NUMBER,NUMBER2;
LOCAL SEED,RA;
LOCAL RX,GX,BX;


EXPORT Prime2048()
BEGIN
 RX:=255; GX:=185; BX:=200;
 CHOICE:=1;
 TOTAL:=0;
 MAXSCORE:=0; 
 LOAD();
 IF X1>0 OR X2>0 OR X3>0 OR X4>0 OR X5>0 OR X6>0 OR X7>0 OR X8>0 OR X9>0 OR X10>0 OR X11>0 OR X12>0 OR X13>0 OR X14>0 OR X15>0 OR X16>0 THEN
  CHOICE:=MSGBOX("Do you want to start a new game?",true);
  IF CHOICE≠0 THEN
   RESET();
  END;
  IF CHOICE==0 THEN
   LOAD();
  END;
 END;
 STARTAPP("Function");
 STARTVIEW(-1);
 Xmin:=-15.9;  Xmax:=15.9;  Ymin:=-10.9;  Ymax:=10.9;
 DIMGROB_P(G2,320,240,RGB(235,235,235));
 GRAPH();
 IF CHOICE≠0 THEN
  TEXTOUT("2048",G2,10,6.8,0);
  TEXTOUT("← Left",G2,9,3.8,0);
  TEXTOUT("→ Right",G2,9,0.8,0);
  TEXTOUT("↑ Up",G2,10,-2.2,0);
  TEXTOUT("↓ Down",G2,10,-5.2,0);
  TEXTOUT("Press any arrow key to start",G2,-8.7,-9,0,RGB(0,0,0),400,RGB(0,180,230));
  TEXTOUT("Designed By kitten39",G2,-5.5,-10.9,2,RGB(0,180,220)); 
  RECT(G2,-7.8,4.2,-4.2,7.8,RGB(255,185,200));
  RECT(G2,4.2,4.2,7.8,7.8,RGB(255,185,200));
  RECT(G2,-7.8,-7.8,-4.2,-4.2,RGB(255,185,200));
  RECT(G2,4.2,-7.8,7.8,-4.2,RGB(255,185,200));
  POSXY(2048,-6.3,6.6,-7,6.6,-7.7,6.6);
  POSXY(1024,5.7,6.6,5,6.6,4.3,6.6);
  POSXY(4,-6.3,-5.4,-7,-5.4,-7.7,-5.4);
  POSXY(2,5.7,-5.4,5,-5.4,4.3,-5.4);
  RECT(G2,-7.8,4.2,-4.2,7.8,RGB(0,240,140),RGB(0,180,220,230));
  RECT(G2,4.2,-7.8,7.8,-4.2,RGB(0,240,140),RGB(0,180,220,230)); 
 END;
 BLIT_P(G0,G2);
 REPEAT
  IF ISKEYDOWN(2) THEN
   WAIT(0.05);
   LIST1:=NUMSORT(X1,X5,X9,X13);
   LIST2:=NUMSORT(X2,X6,X10,X14); 
   LIST3:=NUMSORT(X3,X7,X11,X15);
   LIST4:=NUMSORT(X4,X8,X12,X16);
   X1:=ΣLIST(SUB(LIST1,1,1));
   X5:=ΣLIST(SUB(LIST1,2,2));
   X9:=ΣLIST(SUB(LIST1,3,3));
   X13:=ΣLIST(SUB(LIST1,4,4));
   X2:=ΣLIST(SUB(LIST2,1,1));
   X6:=ΣLIST(SUB(LIST2,2,2));
   X10:=ΣLIST(SUB(LIST2,3,3));
   X14:=ΣLIST(SUB(LIST2,4,4));
   X3:=ΣLIST(SUB(LIST3,1,1));
   X7:=ΣLIST(SUB(LIST3,2,2));
   X11:=ΣLIST(SUB(LIST3,3,3));
   X15:=ΣLIST(SUB(LIST3,4,4));
   X4:=ΣLIST(SUB(LIST4,1,1));
   X8:=ΣLIST(SUB(LIST4,2,2));
   X12:=ΣLIST(SUB(LIST4,3,3));
   X16:=ΣLIST(SUB(LIST4,4,4));
   UPDATENUM:=RAND2048();
   GRAPH();
   UPDATE(UPDATENUM);
   TEXTOUT("up",G2,-0.7,-9,0,RGB(0,0,0),400,RGB(0,180,230));
   BLIT_P(G0,G2);
   WAIT();
  END;
  IF ISKEYDOWN(12) THEN
   WAIT(0.05);
   LIST1:=NUMSORT(X13,X9,X5,X1);
   LIST2:=NUMSORT(X14,X10,X6,X2);
   LIST3:=NUMSORT(X15,X11,X7,X3);
   LIST4:=NUMSORT(X16,X12,X8,X4);
   X13:=ΣLIST(SUB(LIST1,1,1));
   X9:=ΣLIST(SUB(LIST1,2,2));
   X5:=ΣLIST(SUB(LIST1,3,3));
   X1:=ΣLIST(SUB(LIST1,4,4));
   X14:=ΣLIST(SUB(LIST2,1,1));
   X10:=ΣLIST(SUB(LIST2,2,2));
   X6:=ΣLIST(SUB(LIST2,3,3));
   X2:=ΣLIST(SUB(LIST2,4,4));
   X15:=ΣLIST(SUB(LIST3,1,1));
   X11:=ΣLIST(SUB(LIST3,2,2));
   X7:=ΣLIST(SUB(LIST3,3,3));
   X3:=ΣLIST(SUB(LIST3,4,4));
   X16:=ΣLIST(SUB(LIST4,1,1));
   X12:=ΣLIST(SUB(LIST4,2,2));
   X8:=ΣLIST(SUB(LIST4,3,3));
   X4:=ΣLIST(SUB(LIST4,4,4));
   UPDATENUM:=RAND2048();
   GRAPH();
   UPDATE(UPDATENUM);
   TEXTOUT("down",G2,-1.5,-9,0,RGB(0,0,0),400,RGB(0,180,230));
   BLIT_P(G0,G2);
   WAIT();
  END;
  IF ISKEYDOWN(7) THEN
   WAIT(0.05);
   LIST1:=NUMSORT(X1,X2,X3,X4);
   LIST2:=NUMSORT(X5,X6,X7,X8);
   LIST3:=NUMSORT(X9,X10,X11,X12);
   LIST4:=NUMSORT(X13,X14,X15,X16);
   X1:=ΣLIST(SUB(LIST1,1,1));
   X2:=ΣLIST(SUB(LIST1,2,2));
   X3:=ΣLIST(SUB(LIST1,3,3));
   X4:=ΣLIST(SUB(LIST1,4,4));
   X5:=ΣLIST(SUB(LIST2,1,1));
   X6:=ΣLIST(SUB(LIST2,2,2));
   X7:=ΣLIST(SUB(LIST2,3,3));
   X8:=ΣLIST(SUB(LIST2,4,4));
   X9:=ΣLIST(SUB(LIST3,1,1));
   X10:=ΣLIST(SUB(LIST3,2,2));
   X11:=ΣLIST(SUB(LIST3,3,3));
   X12:=ΣLIST(SUB(LIST3,4,4));
   X13:=ΣLIST(SUB(LIST4,1,1));
   X14:=ΣLIST(SUB(LIST4,2,2));
   X15:=ΣLIST(SUB(LIST4,3,3));
   X16:=ΣLIST(SUB(LIST4,4,4));
   UPDATENUM:=RAND2048();
   GRAPH();
   UPDATE(UPDATENUM);
   TEXTOUT("left",G2,-1.2,-9,0,RGB(0,0,0),400,RGB(0,180,230));
   BLIT_P(G0,G2);
   WAIT();
  END;
  IF ISKEYDOWN(8) THEN
   WAIT(0.05);
   LIST1:=NUMSORT(X4,X3,X2,X1);
   LIST2:=NUMSORT(X8,X7,X6,X5);
   LIST3:=NUMSORT(X12,X11,X10,X9);
   LIST4:=NUMSORT(X16,X15,X14,X13);
   X4:=ΣLIST(SUB(LIST1,1,1));
   X3:=ΣLIST(SUB(LIST1,2,2));
   X2:=ΣLIST(SUB(LIST1,3,3));
   X1:=ΣLIST(SUB(LIST1,4,4));
   X8:=ΣLIST(SUB(LIST2,1,1));
   X7:=ΣLIST(SUB(LIST2,2,2));
   X6:=ΣLIST(SUB(LIST2,3,3));
   X5:=ΣLIST(SUB(LIST2,4,4));
   X12:=ΣLIST(SUB(LIST3,1,1));
   X11:=ΣLIST(SUB(LIST3,2,2));
   X10:=ΣLIST(SUB(LIST3,3,3));
   X9:=ΣLIST(SUB(LIST3,4,4));
   X16:=ΣLIST(SUB(LIST4,1,1));
   X15:=ΣLIST(SUB(LIST4,2,2));
   X14:=ΣLIST(SUB(LIST4,3,3));
   X13:=ΣLIST(SUB(LIST4,4,4));
   UPDATENUM:=RAND2048();
   GRAPH();
   UPDATE(UPDATENUM);
   TEXTOUT("right",G2,-1.6,-9,0,RGB(0,0,0),400,RGB(0,180,230));
   BLIT_P(G0,G2);
   WAIT();
  END;
  IF ISKEYDOWN(1) THEN
   WAIT(0.1);
   RESET();
   GRAPH();
   TEXTOUT("Reset...",G2,10,9.8,0);
   BLIT_P(G0,G2);
   WAIT();
  END;
  IF X1>0 AND X2>0 AND X3>0 AND X4>0 AND X5>0 AND X6>0 AND X7>0 AND X8>0 AND X9>0 AND X10>0 AND X11>0 AND X12>0 AND X13>0 AND X14>0 AND X15>0 AND X16>0 AND X1≠X2 AND X2≠X3 AND X3≠X4 AND X5≠X6 AND X6≠X7 AND X7≠X8 AND X9≠X10 AND X10≠X11 AND X11≠X12 AND X13≠X14 AND X14≠X15 AND X15≠X16 AND X1≠X5 AND X5≠X9 AND X9≠X13 AND X2≠X6 AND X6≠X10 AND X10≠X14 AND X3≠X7 AND X7≠X11 AND X11≠X15 AND X4≠X8 AND X8≠X12 AND X12≠X16 THEN
   MSGBOX("Game over!",true);
   TOTAL:=X1+X2+X3+X4+X5+X6+X7+X8+X9+X10+X11+X12+X13+X14+X15+X16; 
   MAXSCORE:=MAX(X1,X2,X3,X4,X5,X6,X7,X8,X9,X10,X11,X12,X13,X14,X15,X16);
   MSGBOX("Max score: "+MAXSCORE);
   MSGBOX("Total: "+TOTAL); 
   RESET(); 
   BREAK;
  END;
 UNTIL ISKEYDOWN(4);
 IF TOTAL==0  AND (X1>0 OR X2>0 OR X3>0 OR X4>0 OR X5>0 OR X6>0 OR X7>0 OR X8>0 OR X9>0 OR X10>0 OR X11>0 OR X12>0 OR X13>0 OR X14>0 OR X15>0 OR X16>0) THEN
  MSGBOX("History saved.");
 END;
 STORE();
 RECT_P(G2,RGB(235,235,235));
 RETURN {MAXSCORE,TOTAL};
END;





RESET()
BEGIN
 X1:=0;X2:=0;X3:=0;X4:=0;
 X5:=0;X6:=0;X7:=0;X8:=0;
 X9:=0;X10:=0;X11:=0;X12:=0;
 X13:=0;X14:=0;X15:=0;X16:=0;
END;





STORE()
BEGIN
 X12048:=X1;X22048:=X2;X32048:=X3;X42048:=X4;
 X52048:=X5;X62048:=X6;X72048:=X7;X82048:=X8;
 X92048:=X9;X102048:=X10;X112048:=X11;X122048:=X12;
 X132048:=X13;X142048:=X14;X152048:=X15;X162048:=X16;
END;





LOAD()
BEGIN
 X1:=X12048;X2:=X22048;X3:=X32048;X4:=X42048;
 X5:=X52048;X6:=X62048;X7:=X72048;X8:=X82048;
 X9:=X92048;X10:=X102048;X11:=X112048;X12:=X122048;
 X13:=X132048;X14:=X142048;X15:=X152048;X16:=X162048;
END;





//2048 NUMBER SORTING(CORE FUNCTION)
NUMSORT(T1,T2,T3,T4)
BEGIN
 LOCAL S1,S2,S3,S4;
 LIST:=CONCAT(T1,T2,T3,T4);
 //DEAL WITH 0
 FOR J FROM 1 TO 4 DO
  FOR I FROM 1 TO 4 DO
   NUMBER:=ΣLIST(SUB(LIST,I,I));
   IF NUMBER==0 THEN
    LIST:=SUPPRESS(LIST,I);
    LIST:=CONCAT(LIST,0);
   END;
  END;
 END;
 //DEAL WITH THE SAME NUMBER
 FOR I FROM 1 TO 3 DO
  NUMBER:=ΣLIST(SUB(LIST,I,I));
  NUMBER2:=ΣLIST(SUB(LIST,I+1,I+1));
  IF NUMBER==NUMBER2 AND NUMBER>0 AND NUMBER2>0 THEN
   S1:=ΣLIST(SUB(LIST,1,1));
   S2:=ΣLIST(SUB(LIST,2,2));
   S3:=ΣLIST(SUB(LIST,3,3));
   S4:=ΣLIST(SUB(LIST,4,4));
   MAT:=[S1,S2,S3,S4]; 
   MAT:=DELCOL(MAT,I+1);
   MAT:=REPLACE(MAT,I,[2*ΣLIST(SUB(LIST,I,I))]);
   MAT:=REDIM(MAT,{1,4});
   S1:=DET(SUB(MAT,{1,1},{1,1}));
   S2:=DET(SUB(MAT,{1,2},{1,2}));
   S3:=DET(SUB(MAT,{1,3},{1,3}));
   S4:=DET(SUB(MAT,{1,4},{1,4}));
   LIST:=CONCAT(S1,S2,S3,S4);
  ELSE
   LIST:=LIST;
  END;
 END;
 RETURN LIST;
END;





RAND2048()
BEGIN 
 REPEAT
  RA:=RANDINT(1,16);
  SEED:=0;
  IF X1>0 AND X2>0 AND X3>0 AND X4>0 AND X5>0 AND X6>0 AND X7>0 AND X8>0 AND X9>0 AND X10>0 AND X11>0 AND X12>0 AND X13>0 AND X14>0 AND X15>0 AND X16>0 THEN
   SEED:=1; 
   RA:=0;
  END;
  IF RA==1 AND X1==0 THEN X1:=2*RANDINT(1,2); SEED:=1; END;
  IF RA==2 AND X2==0 THEN X2:=2*RANDINT(1,2); SEED:=1; END;
  IF RA==3 AND X3==0 THEN X3:=2*RANDINT(1,2); SEED:=1; END;
  IF RA==4 AND X4==0 THEN X4:=2*RANDINT(1,2); SEED:=1; END;
  IF RA==5 AND X5==0 THEN X5:=2*RANDINT(1,2); SEED:=1; END;  
  IF RA==6 AND X6==0 THEN X6:=2*RANDINT(1,2); SEED:=1; END;
  IF RA==7 AND X7==0 THEN X7:=2*RANDINT(1,2); SEED:=1; END;
  IF RA==8 AND X8==0 THEN X8:=2*RANDINT(1,2); SEED:=1; END;
  IF RA==9 AND X9==0 THEN X9:=2*RANDINT(1,2); SEED:=1; END;
  IF RA==10 AND X10==0 THEN X10:=2*RANDINT(1,2); SEED:=1; END;
  IF RA==11 AND X11==0 THEN X11:=2*RANDINT(1,2); SEED:=1; END;
  IF RA==12 AND X12==0 THEN X12:=2*RANDINT(1,2); SEED:=1; END;
  IF RA==13 AND X13==0 THEN X13:=2*RANDINT(1,2); SEED:=1; END;
  IF RA==14 AND X14==0 THEN X14:=2*RANDINT(1,2); SEED:=1; END;
  IF RA==15 AND X15==0 THEN X15:=2*RANDINT(1,2); SEED:=1; END;
  IF RA==16 AND X16==0 THEN X16:=2*RANDINT(1,2); SEED:=1; END;
 UNTIL SEED==1;
 RETURN RA;
END;





//MAIN USER INTERFACE
GRAPH()
BEGIN
 RECT_P(G2,RGB(235,235,235));
 LINE(G2,-8.2,-8.2,-8.2,8.2,RGB(0,180,230));
 LINE(G2,8.2,-8.2,8.2,8.2,RGB(0,180,230));
 LINE(G2,-8.2,-8.2,8.2,-8.2,RGB(0,180,230));
 LINE(G2,-8.2,8.2,8.2,8.2,RGB(0,180,230));
 TEXTOUT("Score: "+MAX(X1,X2,X3,X4,X5,X6,X7,X8,X9,X10,X11,X12,X13,X14,X15,X16),G2,-15,9.8,0);
 IF FLOOR(60*TRUNCATE(FP(Time),2))<10 THEN 
  TEXTOUT(CAS.IP(Time)+" : 0"+FLOOR(60*TRUNCATE(FP(Time),2)),G2,-15,8,0);
 ELSE
  TEXTOUT(CAS.IP(Time)+" : "+FLOOR(60*TRUNCATE(FP(Time),2)),G2,-15,8,0);
 END;
 TEXTOUT((X1+X2+X3+X4+X5+X6+X7+X8+X9+X10+X11+X12+X13+X14+X15+X16),G2,-15,6.2,0); 
 IF X1≠0 THEN
  RECT(G2,-7.8,4.2,-4.2,7.8,RGB(RX,GX,BX));
  POSXY(X1,-6.3,6.6,-7,6.6,-7.7,6.6);
 END;
 IF X2≠0 THEN
  RECT(G2,-3.8,4.2,-0.2,7.8,RGB(RX,GX,BX));
  POSXY(X2,-2.3,6.6,-3,6.6,-3.7,6.6);
 END;
 IF X3≠0 THEN
  RECT(G2,0.2,4.2,3.8,7.8,RGB(RX,GX,BX));
  POSXY(X3,1.7,6.6,1,6.6,0.3,6.6);
 END;
 IF X4≠0 THEN
  RECT(G2,4.2,4.2,7.8,7.8,RGB(RX,GX,BX));
  POSXY(X4,5.7,6.6,5,6.6,4.3,6.6);
 END;
 IF X5≠0 THEN
  RECT(G2,-7.8,0.2,-4.2,3.8,RGB(RX,GX,BX));
  POSXY(X5,-6.3,2.6,-7,2.6,-7.7,2.6);
 END;
 IF X6≠0 THEN
  RECT(G2,-3.8,0.2,-0.2,3.8,RGB(RX,GX,BX));
  POSXY(X6,-2.3,2.6,-3,2.6,-3.7,2.6);
 END;
 IF X7≠0 THEN
  RECT(G2,0.2,0.2,3.8,3.8,RGB(RX,GX,BX));
  POSXY(X7,1.7,2.6,1,2.6,0.3,2.6);
 END;
 IF X8≠0 THEN
  RECT(G2,4.2,0.2,7.8,3.8,RGB(RX,GX,BX));
  POSXY(X8,5.7,2.6,5,2.6,4.3,2.6);
 END;
 IF X9≠0 THEN
  RECT(G2,-7.8,-3.8,-4.2,-0.2,RGB(RX,GX,BX));
  POSXY(X9,-6.3,-1.4,-7,-1.4,-7.7,-1.4);
 END;
 IF X10≠0 THEN
  RECT(G2,-3.8,-3.8,-0.2,-0.2,RGB(RX,GX,BX));
  POSXY(X10,-2.3,-1.4,-3,-1.4,-3.7,-1.4);
 END;
 IF X11≠0 THEN
  RECT(G2,0.2,-3.8,3.8,-0.2,RGB(RX,GX,BX));
  POSXY(X11,1.7,-1.4,1,-1.4,0.3,-1.4);
 END;
 IF X12≠0 THEN
  RECT(G2,4.2,-3.8,7.8,-0.2,RGB(RX,GX,BX));
  POSXY(X12,5.7,-1.4,5,-1.4,4.3,-1.4);
 END;
 IF X13≠0 THEN
  RECT(G2,-7.8,-7.8,-4.2,-4.2,RGB(RX,GX,BX));
  POSXY(X13,-6.3,-5.4,-7,-5.4,-7.7,-5.4);
 END;
 IF X14≠0 THEN
  RECT(G2,-3.8,-7.8,-0.2,-4.2,RGB(RX,GX,BX));
  POSXY(X14,-2.3,-5.4,-3,-5.4,-3.7,-5.4);
 END;
 IF X15≠0 THEN
  RECT(G2,0.2,-7.8,3.8,-4.2,RGB(RX,GX,BX));
  POSXY(X15,1.7,-5.4,1,-5.4,0.3,-5.4);
 END;
 IF X16≠0 THEN
  RECT(G2,4.2,-7.8,7.8,-4.2,RGB(RX,GX,BX));
  POSXY(X16,5.7,-5.4,5,-5.4,4.3,-5.4);
 END;
END;





POSXY(NUM,TX1,TY1,TX2,TY2,TX3,TY3)
BEGIN
 IF NUM<127 THEN
  TEXTOUT(NUM,G2,TX1,TY1,0);
 END;
 IF NUM≥127 AND NUM<1023 THEN
  TEXTOUT(NUM,G2,TX2,TY2,0);
 END;
 IF NUM≥1023 THEN
  TEXTOUT(NUM,G2,TX3,TY3,0);
 END;
END;





UPDATE(UPD)
BEGIN
 IF UPD==1 THEN
  TEXTOUT("(1,1), "+X1,G2,10,9.8,0);
  RECT(G2,-7.8,4.2,-4.2,7.8,RGB(0,240,140),RGB(0,180,220,230));
 END;
 IF UPD==2 THEN
  TEXTOUT("(1,2), "+X2,G2,10,9.8,0);
  RECT(G2,-3.8,4.2,-0.2,7.8,RGB(0,240,140),RGB(0,180,220,230));
 END;
 IF UPD==3 THEN
  TEXTOUT("(1,3), "+X3,G2,10,9.8,0);
  RECT(G2,0.2,4.2,3.8,7.8,RGB(0,240,140),RGB(0,180,220,230));
 END;
 IF UPD==4 THEN
  TEXTOUT("(1,4), "+X4,G2,10,9.8,0);
  RECT(G2,4.2,4.2,7.8,7.8,RGB(0,240,140),RGB(0,180,220,230));
 END;
 IF UPD==5 THEN
  TEXTOUT("(2,1), "+X5,G2,10,9.8,0);
  RECT(G2,-7.8,0.2,-4.2,3.8,RGB(0,240,140),RGB(0,180,220,230));
 END;
 IF UPD==6 THEN
  TEXTOUT("(2,2), "+X6,G2,10,9.8,0);
  RECT(G2,-3.8,0.2,-0.2,3.8,RGB(0,240,140),RGB(0,180,220,230));
 END;
 IF UPD==7 THEN
  TEXTOUT("(2,3), "+X7,G2,10,9.8,0);
  RECT(G2,0.2,0.2,3.8,3.8,RGB(0,240,140),RGB(0,180,220,230));
 END;
 IF UPD==8 THEN
  TEXTOUT("(2,4), "+X8,G2,10,9.8,0);
  RECT(G2,4.2,0.2,7.8,3.8,RGB(0,240,140),RGB(0,180,220,230));
 END;
 IF UPD==9 THEN
  TEXTOUT("(3,1), "+X9,G2,10,9.8,0);
  RECT(G2,-7.8,-3.8,-4.2,-0.2,RGB(0,240,140),RGB(0,180,220,230));
 END;
 IF UPD==10 THEN
  TEXTOUT("(3,2), "+X10,G2,10,9.8,0);
  RECT(G2,-3.8,-3.8,-0.2,-0.2,RGB(0,240,140),RGB(0,180,220,230));
 END;
 IF UPD==11 THEN
  TEXTOUT("(3,3), "+X11,G2,10,9.8,0);
  RECT(G2,0.2,-3.8,3.8,-0.2,RGB(0,240,140),RGB(0,180,220,230));
 END;
 IF UPD==12 THEN
  TEXTOUT("(3,4), "+X12,G2,10,9.8,0);
  RECT(G2,4.2,-3.8,7.8,-0.2,RGB(0,240,140),RGB(0,180,220,230));
 END;
 IF UPD==13 THEN
  TEXTOUT("(4,1), "+X13,G2,10,9.8,0);
  RECT(G2,-7.8,-7.8,-4.2,-4.2,RGB(0,240,140),RGB(0,180,220,230)); 
 END;
 IF UPD==14 THEN
  TEXTOUT("(4,2), "+X14,G2,10,9.8,0);
  RECT(G2,-3.8,-7.8,-0.2,-4.2,RGB(0,240,140),RGB(0,180,220,230));
 END;
 IF UPD==15 THEN
  TEXTOUT("(4,3), "+X15,G2,10,9.8,0);
  RECT(G2,0.2,-7.8,3.8,-4.2,RGB(0,240,140),RGB(0,180,220,230)); 
 END;
 IF UPD==16 THEN
  TEXTOUT("(4,4), "+X16,G2,10,9.8,0);
  RECT(G2,4.2,-7.8,7.8,-4.2,RGB(0,240,140),RGB(0,180,220,230)); 
 END;
END;