]> rtime.felk.cvut.cz Git - eurobot/public.git/commitdiff
disp: removed old 4dg display source
authorMartin Zidek <zidekm1@gmail.com>
Wed, 22 Apr 2009 15:46:15 +0000 (17:46 +0200)
committerMartin Zidek <zidekm1@gmail.com>
Wed, 22 Apr 2009 15:46:15 +0000 (17:46 +0200)
src/disp-4dgl/control.4dg [deleted file]

diff --git a/src/disp-4dgl/control.4dg b/src/disp-4dgl/control.4dg
deleted file mode 100644 (file)
index 30d4f5b..0000000
+++ /dev/null
@@ -1,1294 +0,0 @@
-#platform "uOLED-32028-PMD3T"\r
-\r
-/*           4DGL Demo Application\r
-       -  Packed String Manipulation   -\r
-            -- PICASO Platform --\r
-*/\r
-\r
-\r
-#inherit "4DGL_16bitColours.fnc"\r
-\r
-#constant NEWLINE $print("\n")      // a macro for carriage return\r
-\r
-#constant VOLTAGE_OK 1\r
-\r
-#constant MSG_START 150\r
-\r
-#constant MSG_VOLTAGE_STATUS 159\r
-#constant MSG_VOLTAGE 160\r
-#constant MSG_FSM_STATE 161\r
-#constant MSG_BALLS 162\r
-#constant MSG_HW_STATUS 163\r
-#constant MSG_COLOR 164\r
-#constant MSG_POSITION 165\r
-#constant MSG_MOVE_FSM_STATE 166\r
-#constant CHANGE_MODE_REP 200\r
-#constant CHANGE_MODE_REQ 201\r
-#constant CHANGE_MODE_STATUS 202\r
-#constant CHANGE_MODE_CONTROL 203\r
-\r
-#constant MSG_ACTUATORS 180\r
-#constant MSG_GET_READY 181\r
-#constant MSG_ROBOT_START 182\r
-#constant MSG_SWITCH_TO_STATUS 183\r
-#constant MSG_SWITCH_TO_CONTROL 184\r
-#constant MSG_SWITCH_TO_STATUS_DONE 185\r
-#constant MSG_SWITCH_TO_CONTROL_DONE 186\r
-#constant MSG_SET_COLOR 187\r
-#constant MSG_SET_MODE 188\r
-#constant MSG_CAR_LEFT 189\r
-#constant MSG_CAR_RIGHT 190\r
-\r
-#constant MSG_LBRUSH_SERVO 1\r
-#constant MSG_RBRUSH_SERVO 2\r
-#constant MSG_FDOOR_SERVO 3\r
-#constant MSG_BDOOR_SERVO 4\r
-\r
-#constant MSG_LBRUSH_DRIVE 5\r
-#constant MSG_RBRUSH_DRIVE 6\r
-#constant MSG_BAGR_DRIVE 7\r
-\r
-\r
-#constant MSG_TERM 254\r
-#constant MSG_TERM_LF 10\r
-\r
-#constant TEXTWIDTH  1\r
-#constant TEXTHEIGHT 1    \r
-#constant TXT_BT_1 $"CONS"\r
-#constant TXT_BT_STATUS $"           STATUS           "\r
-#constant TXT_BT_CONTROL $"           CONTROL          "\r
-#constant TXT_BT_3 $" MAP "\r
-#constant TXT_BT_4 $" MISC "\r
-\r
-#constant TXT_BT_LEFT_BRUSH_SERVO $" LEFT BRUSH "\r
-#constant TXT_BT_RIGHT_BRUSH_SERVO $" RIGHT BRUSH "\r
-\r
-#constant TXT_BT_BOTTOM_DOOR_SERVO $" BOTTOM DOOR"\r
-#constant TXT_BT_BACK_DOOR_SERVO $"  BACK DOOR  "\r
-\r
-#constant TXT_BT_GET_READY $"  GET READY!  "\r
-#constant TXT_BT_START $"     START    "\r
-#constant TXT_BT_COLOR $"     COLOR    "\r
-\r
-#constant TXT_BT_CAR_LEFT $"  <<  "\r
-#constant TXT_BT_CAR_RIGHT $"  >> "\r
-\r
-#constant TXT_BT_BAGR_DRIVE $"    BAGR    "\r
-\r
-#constant MSG_BUFF_LEN 40\r
-\r
-\r
-#constant BT_S_ROW1_Y   0\r
-#constant BT_S_ROW2_Y   1\r
-#constant BT_D_ROW1_Y   2\r
-#constant BT_D_ROW2_Y   3\r
-#constant BT_S_ROW2_END_Y 4\r
-#constant BT_D_ROW2_END_Y 5\r
-#constant BT_GET_READY_Y 6\r
-#constant BT_START_Y 7\r
-#constant BT_START_END_Y 8\r
-#constant BT_STATUS_Y   9\r
-#constant BT_STATUS_END_Y   10\r
-#constant BT_COLOR_Y   11\r
-#constant BT_COLOR_END_Y   12\r
-#constant BT_CAR_LEFT_Y   13\r
-#constant BT_CAR_LEFT_END_Y   14\r
-#constant BT_CAR_RIGHT_Y   15\r
-#constant BT_CAR_RIGHT_END_Y   16\r
-#constant BT_X_0    17\r
-\r
-#constant BT_S_RBRUSH_X           0\r
-#constant BT_S_BDOOR_X            1\r
-#constant BT_D_RBRUSH_X           2\r
-#constant BT_D_BAGR_X               3\r
-#constant BT_D_BAGR_END_X       4\r
-#constant BT_GET_READY_X         5\r
-#constant BT_GET_READY_END_X 6\r
-#constant BT_START_X                   7\r
-#constant BT_START_END_X          8\r
-#constant BT_STATUS_X                9\r
-#constant BT_STATUS_END_X        10\r
-#constant BT_COLOR_X                11\r
-#constant BT_COLOR_END_X        12\r
-#constant BT_CAR_LEFT_X   13\r
-#constant BT_CAR_LEFT_END_X   14\r
-#constant BT_CAR_RIGHT_X   15\r
-#constant BT_CAR_RIGHT_END_X   16\r
-\r
-#constant VOLTAGE33 0\r
-#constant VOLTAGE50 1\r
-#constant VOLTAGE80 2\r
-#constant VOLTAGE_BAT 3\r
-\r
-#constant COLOR_RED 1\r
-#constant COLOR_BLUE 0\r
-\r
-#constant CAR_LEFT 1\r
-#constant CAR_RIGHT 2\r
-\r
-#constant NO_BALL 0\r
-#constant BLUE_BALL 1\r
-#constant RED_BALL 2\r
-#constant WHITE_BALL 3\r
-\r
-#constant HW_STATUS_OK 1\r
-\r
-#constant HW1 1\r
-#constant HW2 2\r
-#constant HW3 3\r
-#constant HW4 4\r
-#constant HW5 5\r
-#constant HW6 6\r
-\r
-var msg_buff[MSG_BUFF_LEN];\r
-var bt_x[20];\r
-var bt_y[20];\r
-var msg_len;\r
-\r
-var voltage33[4];\r
-var voltage50[4];\r
-var voltage80[4];\r
-var voltageBAT[5];\r
-\r
-var voltage_status[4];\r
-    \r
-var position[8];\r
-var game_color;\r
-var fsm_state[21];\r
-var move_fsm_state[21];\r
-var fsm_state_len;\r
-var move_fsm_state_len;\r
-\r
-var balls_state[5];\r
-var ball_up;\r
-var ball_down;\r
-\r
-var current_color;\r
-\r
-var isStatus;\r
-var isControl;\r
-\r
-var out_msg_buff[10];\r
-\r
-func clear_screen()\r
-    gfx_Rectangle(0, 0, 239, 319, BLACK);   \r
-    return 0;\r
-endfunc\r
-\r
-func bt_lbrush_servo(var state, var color)\r
-    gfx_Button(state, bt_x[BT_X_0], bt_y[BT_S_ROW1_Y], color, WHITE, FONT3, TEXTWIDTH, TEXTHEIGHT, TXT_BT_LEFT_BRUSH_SERVO);\r
-endfunc\r
-\r
-func bt_rbrush_servo(var state, var color)\r
-    gfx_Button(state, bt_x[BT_S_RBRUSH_X], bt_y[BT_S_ROW1_Y], color, WHITE, FONT3, TEXTWIDTH, TEXTHEIGHT, TXT_BT_RIGHT_BRUSH_SERVO);\r
-endfunc\r
-\r
-func bt_fdoor_servo(var state, var color)\r
-    gfx_Button(state, bt_x[BT_X_0], bt_y[BT_S_ROW2_Y], color, WHITE, FONT3, TEXTWIDTH, TEXTHEIGHT, TXT_BT_BOTTOM_DOOR_SERVO);\r
-endfunc\r
-\r
-func bt_bdoor_servo(var state, var color)\r
-    gfx_Button(state, bt_x[BT_S_BDOOR_X], bt_y[BT_S_ROW2_Y], color, WHITE, FONT3, TEXTWIDTH, TEXTHEIGHT, TXT_BT_BACK_DOOR_SERVO);\r
-endfunc\r
-\r
-func bt_lbrush_drive(var state, var color)\r
-    gfx_Button(state, bt_x[BT_X_0], bt_y[BT_D_ROW1_Y], color, WHITE, FONT3, TEXTWIDTH, TEXTHEIGHT, TXT_BT_LEFT_BRUSH_SERVO);\r
-endfunc\r
-\r
-func bt_rbrush_drive(var state, var color)\r
-    gfx_Button(state, bt_x[BT_D_RBRUSH_X], bt_y[BT_D_ROW1_Y], color, WHITE, FONT3, TEXTWIDTH, TEXTHEIGHT, TXT_BT_RIGHT_BRUSH_SERVO);\r
-endfunc\r
-\r
-func bt_bagr_drive(var state, var color)\r
-    gfx_Button(state, bt_x[BT_D_BAGR_X], bt_y[BT_D_ROW2_Y], color, WHITE, FONT3, TEXTWIDTH, TEXTHEIGHT, TXT_BT_BAGR_DRIVE);\r
-endfunc\r
-\r
-func bt_carousel_left(var state, var color)\r
-    gfx_Button(state, bt_x[BT_CAR_LEFT_X], bt_y[BT_CAR_LEFT_Y], color, WHITE, FONT3, TEXTWIDTH, TEXTHEIGHT, TXT_BT_CAR_LEFT);\r
-endfunc\r
-\r
-func bt_carousel_right(var state, var color)\r
-    gfx_Button(state, bt_x[BT_CAR_RIGHT_X], bt_y[BT_CAR_RIGHT_Y], color, WHITE, FONT3, TEXTWIDTH, TEXTHEIGHT, TXT_BT_CAR_RIGHT);\r
-endfunc\r
-\r
-func bt_get_ready(var state, var color)\r
-    gfx_Button(state, bt_x[BT_GET_READY_X], bt_y[BT_GET_READY_Y], color, WHITE, FONT4, TEXTWIDTH, TEXTHEIGHT, TXT_BT_GET_READY);\r
-endfunc\r
-\r
-func bt_start(var state, var color)\r
-    gfx_Button(state, bt_x[BT_START_X], bt_y[BT_START_Y], color, WHITE, FONT4, TEXTWIDTH, TEXTHEIGHT, TXT_BT_START);\r
-endfunc\r
-\r
-func bt_status(var state, var color, var text)\r
-    gfx_Button(state, bt_x[BT_STATUS_X], bt_y[BT_STATUS_Y], color, WHITE, FONT3, TEXTWIDTH, TEXTHEIGHT, text);\r
-endfunc\r
-\r
-func bt_color(var state, var color)\r
-    gfx_Button(state, bt_x[BT_COLOR_X], bt_y[BT_COLOR_Y], color, WHITE, FONT4, TEXTWIDTH, TEXTHEIGHT, TXT_BT_COLOR);\r
-endfunc\r
-\r
-//----------------------------------------------------------------------------------------------------\r
-func draw_voltage33()\r
-    var col_rect;\r
-\r
-    if(voltage_status[VOLTAGE33]==VOLTAGE_OK)\r
-        col_rect := RED;\r
-    else\r
-        col_rect := GREEN;\r
-    endif\r
-\r
-    gfx_Rectangle(0,10,60,50,col_rect);\r
-    gfx_Line(59, 10, 59, 50, BLACK);\r
-    txt_Set(TEXT_COLOUR, WHITE);\r
-    txt_Set(FONT_SIZE, FONT3);\r
-    txt_MoveCursor(1,1);\r
-    putstr("3,30V");\r
-    txt_Set(FONT_SIZE, FONT4);\r
-    txt_MoveCursor(2,0);\r
-    print([CHR] voltage33[0]);\r
-    print([CHR] voltage33[1]);\r
-    print([CHR] voltage33[2]);\r
-    print([CHR] voltage33[3]);\r
-    return 0;\r
-endfunc\r
-\r
-func draw_voltage50()\r
-    var col_rect;\r
-\r
-    if(voltage_status[VOLTAGE50]==VOLTAGE_OK)\r
-        col_rect := RED;\r
-    else\r
-        col_rect := GREEN;\r
-    endif\r
-\r
-    gfx_Rectangle(60,10,120,50,col_rect);\r
-    gfx_Line(119, 10, 119, 50, BLACK);\r
-    txt_Set(TEXT_COLOUR, WHITE);\r
-    txt_Set(FONT_SIZE, FONT3);\r
-    txt_MoveCursor(1,9);\r
-    putstr("5,00V");\r
-    txt_Set(FONT_SIZE, FONT4);\r
-    txt_MoveCursor(2,5);\r
-    print([CHR] voltage50[0]);\r
-    print([CHR] voltage50[1]);\r
-    print([CHR] voltage50[2]);\r
-    print([CHR] voltage50[3]);\r
-    return 0;\r
-endfunc\r
-\r
-func draw_voltage80()\r
-    var col_rect;\r
-\r
-    if(voltage_status[VOLTAGE80]==VOLTAGE_OK)\r
-        col_rect := RED;\r
-    else\r
-        col_rect := GREEN;\r
-    endif\r
-\r
-    gfx_Rectangle(120,10,180,50,col_rect);\r
-    gfx_Line(179, 10, 179, 50, BLACK);\r
-    txt_Set(TEXT_COLOUR, WHITE);\r
-    txt_Set(FONT_SIZE, FONT3);\r
-    txt_MoveCursor(1,17);\r
-    putstr("8,00V");\r
-    txt_Set(FONT_SIZE, FONT4);\r
-    txt_MoveCursor(2,10);\r
-    print([CHR] voltage80[0]);\r
-    print([CHR] voltage80[1]);\r
-    print([CHR] voltage80[2]);\r
-    print([CHR] voltage80[3]);\r
-    return 0;\r
-endfunc\r
-\r
-func draw_voltageBAT()\r
-    var col_rect;\r
-\r
-    if(voltage_status[VOLTAGE_BAT]==VOLTAGE_OK)\r
-        col_rect := RED;\r
-    else\r
-        col_rect := GREEN;\r
-    endif\r
-\r
-    gfx_Rectangle(180,10,240,50,col_rect);\r
-    txt_Set(TEXT_COLOUR, WHITE);\r
-    txt_Set(FONT_SIZE, FONT3);\r
-    txt_MoveCursor(1,25);\r
-    putstr("BATT");\r
-    txt_Set(FONT_SIZE, FONT4);\r
-    txt_MoveCursor(2,15);\r
-    print([CHR] voltageBAT[0]);\r
-    print([CHR] voltageBAT[1]);\r
-    print([CHR] voltageBAT[2]);\r
-    print([CHR] voltageBAT[3]);\r
-    print([CHR] voltageBAT[4]);\r
-    return 0;\r
-endfunc\r
-\r
-func draw_fsm_state()\r
-    var idx;\r
-    txt_Set(FONT_SIZE, FONT3);\r
-    txt_MoveCursor(5, 6);           // move the cursor to line 4, column 5\r
-    txt_Set(TEXT_COLOUR, GRAY);\r
-    \r
-    putstr("CURRENT FSM STATE");\r
-    return 0;\r
-endfunc\r
-\r
-func update_fsm_state()\r
-    var idx;\r
-    gfx_Rectangle(0, 70, 239, 99, BLACK);\r
-    txt_Set(FONT_SIZE, FONT4);\r
-    txt_MoveCursor(5, 0);           // move the cursor to line 4, column 5\r
-    txt_Set(TEXT_COLOUR, WHITE);\r
-    idx:=0;\r
-    repeat\r
-        print([CHR] fsm_state[idx]);\r
-        idx++;\r
-    until(idx==fsm_state_len)\r
-    return 0;\r
-endfunc\r
-\r
-func update_move_fsm_state()\r
-    var idx;\r
-    gfx_Rectangle(0, 99, 239, 112, BLACK);\r
-    txt_Set(FONT_SIZE, FONT4);\r
-    txt_MoveCursor(6, 0);           // move the cursor to line 4, column 5\r
-    txt_Set(TEXT_COLOUR, WHITE);\r
-    idx:=0;\r
-    repeat\r
-        print([CHR] move_fsm_state[idx]);\r
-        idx++;\r
-    until(idx==move_fsm_state_len)\r
-    return 0;\r
-endfunc\r
-\r
-func draw_balls()\r
-    txt_Set(FONT_SIZE, FONT3);\r
-    txt_MoveCursor(10, 12);           // move the cursor to line 4, column 5\r
-    txt_Set(TEXT_COLOUR, GRAY);\r
-    \r
-    putstr("BALLS");\r
-    gfx_Set(0,0);\r
-    gfx_Circle(24, 150, 22, BLUE);\r
-    gfx_Circle(72, 150, 22, BLUE);\r
-    gfx_Circle(120, 150, 22, DARKRED);\r
-    gfx_Circle(168, 150, 22, BLUE);\r
-    gfx_Circle(216, 150, 22, WHITE);\r
-    return 0;\r
-endfunc\r
-\r
-func draw_carousel_pos(var up, var down)\r
-    var x_up, x_down;\r
-\r
-    x_up  := up*48 + 24;\r
-    x_down := down*48 + 24;\r
-    \r
-    gfx_Set(1,0);\r
-    gfx_Triangle(x_up-15, 160, x_up+15, 160, x_up, 135, BLACK);\r
-    gfx_Triangle(x_down, 165, x_down+15, 140, x_down-15, 140, BLACK);\r
-    return 0;\r
-endfunc\r
-\r
-func update_balls()\r
-    \r
-    gfx_Set(0,0);\r
-    if(balls_state[0]==BLUE_BALL)\r
-        gfx_Circle(24, 150, 22, BLUE);\r
-    endif\r
-    if(balls_state[0]==RED_BALL)\r
-        gfx_Circle(24, 150, 22, DARKRED);\r
-    endif\r
-    if(balls_state[0]==NO_BALL)\r
-        gfx_Circle(24, 150, 22, GRAY);\r
-    endif\r
-    if(balls_state[0]==WHITE_BALL)\r
-        gfx_Circle(24, 150, 22, WHITE);\r
-    endif\r
-    \r
-    if(balls_state[1]==BLUE_BALL)\r
-        gfx_Circle(72, 150, 22, BLUE);\r
-    endif\r
-    if(balls_state[1]==RED_BALL)\r
-        gfx_Circle(72, 150, 22, DARKRED);\r
-    endif\r
-    if(balls_state[1]==NO_BALL)\r
-        gfx_Circle(72, 150, 22, GRAY);\r
-    endif\r
-    if(balls_state[1]==WHITE_BALL)\r
-        gfx_Circle(72, 150, 22, WHITE);\r
-    endif\r
-\r
-    if(balls_state[2]==BLUE_BALL)\r
-        gfx_Circle(120, 150, 22, BLUE);\r
-    endif\r
-    if(balls_state[2]==RED_BALL)\r
-        gfx_Circle(120, 150, 22, DARKRED);\r
-    endif\r
-    if(balls_state[2]==NO_BALL)\r
-        gfx_Circle(120, 150, 22, GRAY);\r
-    endif\r
-    if(balls_state[2]==WHITE_BALL)\r
-        gfx_Circle(120, 150, 22, WHITE);\r
-    endif\r
-\r
-    if(balls_state[3]==BLUE_BALL)\r
-        gfx_Circle(168, 150, 22, BLUE);\r
-    endif\r
-    if(balls_state[3]==RED_BALL)\r
-        gfx_Circle(168, 150, 22, DARKRED);\r
-    endif\r
-    if(balls_state[3]==NO_BALL)\r
-        gfx_Circle(168, 150, 22, GRAY);\r
-    endif    \r
-    if(balls_state[3]==WHITE_BALL)\r
-        gfx_Circle(168, 150, 22, WHITE);\r
-    endif    \r
-    \r
-    if(balls_state[4]==BLUE_BALL)\r
-        gfx_Circle(216, 150, 22, BLUE);\r
-    endif\r
-    if(balls_state[4]==RED_BALL)\r
-        gfx_Circle(216, 150, 22, DARKRED);\r
-    endif\r
-    if(balls_state[4]==NO_BALL)\r
-        gfx_Circle(216, 150, 22, GRAY);\r
-    endif\r
-    if(balls_state[4]==WHITE_BALL)\r
-        gfx_Circle(216, 150, 22, WHITE);\r
-    endif\r
-    \r
-//    draw_carousel_pos(ball_up, ball_down);\r
-    return 0;\r
-endfunc\r
-\r
-\r
-\r
-func draw_position()\r
-    txt_Set(FONT_SIZE, FONT3);\r
-    txt_MoveCursor(21, 6);           // move the cursor to line 4, column 5\r
-    txt_Set(TEXT_COLOUR, GRAY);\r
-    \r
-    putstr("POSITION AND COLOR");\r
-\r
-    gfx_Rectangle(0,266,239,289,game_color);\r
-    txt_Set(FONT_SIZE, FONT4);\r
-    txt_Set(TEXT_COLOUR, WHITE);\r
-    txt_MoveCursor(17,0);\r
-    print("X,Y: ");\r
-    print([CHR] position[0]);\r
-    print([CHR] position[1]);\r
-    print([CHR] position[2]);\r
-    print([CHR] position[3]);\r
-    print(" ");\r
-    print([CHR] position[4]);\r
-    print([CHR] position[5]);\r
-    print([CHR] position[6]);\r
-    print([CHR] position[7]);\r
-    print(" [m]");\r
-    return 0;\r
-endfunc\r
-\r
-func draw_hw1(var status)\r
-    txt_Set(FONT_SIZE, FONT3);\r
-    txt_Set(TEXT_COLOUR, WHITE);\r
-    \r
-    if(status==HW_STATUS_OK)\r
-        gfx_Rectangle(0,193,79,218,GREEN);\r
-    else\r
-        gfx_Rectangle(0,193,79,218,RED);\r
-    endif\r
-\r
-    txt_MoveCursor(17,1);\r
-    putstr(" MOTION");\r
-endfunc\r
-\r
-func draw_hw2(var status)\r
-    txt_Set(FONT_SIZE, FONT3);\r
-    txt_Set(TEXT_COLOUR, WHITE);\r
-    \r
-    if(status==HW_STATUS_OK)\r
-        gfx_Rectangle(81,193,159,218,GREEN);\r
-        else\r
-        gfx_Rectangle(81,193,159,218,RED);\r
-        endif\r
-    txt_MoveCursor(17,11);\r
-    putstr("  LASER");\r
-endfunc\r
-\r
-func draw_hw3(var status)\r
-    txt_Set(FONT_SIZE, FONT3);\r
-    txt_Set(TEXT_COLOUR, WHITE);\r
-    \r
-    if(status==HW_STATUS_OK)\r
-        gfx_Rectangle(161,193,240,218,GREEN);\r
-        else\r
-        gfx_Rectangle(161,193,240,218,RED);\r
-    endif\r
-\r
-    txt_MoveCursor(17,21);\r
-    putstr("   CMU");\r
-endfunc\r
-\r
-func draw_hw4(var status)\r
-    txt_Set(FONT_SIZE, FONT3);\r
-    txt_Set(TEXT_COLOUR, WHITE);\r
-    \r
-    if(status==HW_STATUS_OK)\r
-        gfx_Rectangle(0,220,79,245,GREEN);\r
-        else\r
-        gfx_Rectangle(0,220,79,245,RED);\r
-    endif\r
-    \r
-    txt_MoveCursor(19,1);\r
-    putstr("  POWER");\r
-endfunc\r
-\r
-func draw_hw5(var status)\r
-    txt_Set(FONT_SIZE, FONT3);\r
-    txt_Set(TEXT_COLOUR, WHITE);\r
-    \r
-    if(status==HW_STATUS_OK)\r
-        gfx_Rectangle(81,220,159,245,GREEN);\r
-        else\r
-        gfx_Rectangle(81,220,159,245,RED);\r
-    endif\r
-    \r
-    txt_MoveCursor(19,11);\r
-    putstr("  ");\r
-endfunc\r
-\r
-func draw_hw6(var status)\r
-    txt_Set(FONT_SIZE, FONT3);\r
-    txt_Set(TEXT_COLOUR, WHITE);\r
-    \r
-    if(status==HW_STATUS_OK)\r
-        gfx_Rectangle(161,220,240,245,GREEN);\r
-        else\r
-        gfx_Rectangle(161,220,240,245,RED);\r
-    endif\r
-    \r
-    txt_MoveCursor(19,21);\r
-    putstr("  ");\r
-endfunc\r
-\r
-func draw_hw()\r
-    txt_Set(FONT_SIZE, FONT3);\r
-    txt_MoveCursor(15, 10);           // move the cursor to line 4, column 5\r
-    txt_Set(TEXT_COLOUR, GRAY);\r
-    \r
-    putstr("HW STATUS");\r
-    \r
-    txt_Set(TEXT_COLOUR, WHITE);\r
-\r
-    draw_hw1(HW_STATUS_OK);\r
-    draw_hw2(HW_STATUS_OK);\r
-    draw_hw3(HW_STATUS_OK);\r
-    draw_hw4(HW_STATUS_OK);\r
-    draw_hw5(HW_STATUS_OK);\r
-    draw_hw6(HW_STATUS_OK);\r
-    return 0;\r
-endfunc\r
-\r
-//-------------------------------------------------------------------------------------------------\r
-\r
-func set_actuators(var id)\r
-    var len,idx;\r
-    \r
-    out_msg_buff[0] := MSG_START;\r
-    out_msg_buff[1] := MSG_ACTUATORS;\r
-    out_msg_buff[2] := id;\r
-    out_msg_buff[3] := MSG_TERM_LF;\r
-\r
-    len := 4;\r
-    idx := 0;\r
-    \r
-    repeat\r
-        serout(out_msg_buff[idx]);\r
-        idx++;\r
-    until(idx==len)\r
-endfunc\r
-\r
-func robot_get_ready()\r
-    var len,idx;\r
-    \r
-    out_msg_buff[0] := MSG_START;\r
-    out_msg_buff[1] := MSG_GET_READY;\r
-    out_msg_buff[2] := MSG_TERM_LF;\r
-\r
-    len := 3;\r
-    idx := 0;\r
-    \r
-    repeat\r
-        serout(out_msg_buff[idx]);\r
-        idx++;\r
-    until(idx==len)\r
-endfunc\r
-\r
-func start()\r
-    var len,idx;\r
-    \r
-    out_msg_buff[0] := MSG_START;\r
-    out_msg_buff[1] := MSG_ROBOT_START;\r
-    out_msg_buff[2] := MSG_TERM_LF;\r
-\r
-    len := 3;\r
-    idx := 0;\r
-    \r
-    repeat\r
-        serout(out_msg_buff[idx]);\r
-        idx++;\r
-    until(idx==len)\r
-endfunc\r
-\r
-func switch_to_status()\r
-    var len,idx;\r
-    \r
-    out_msg_buff[0] := MSG_START;\r
-    out_msg_buff[1] := MSG_SWITCH_TO_STATUS;\r
-    out_msg_buff[2] := MSG_TERM_LF;\r
-\r
-    len := 3;\r
-    idx := 0;\r
-    \r
-    repeat\r
-        serout(out_msg_buff[idx]);\r
-        idx++;\r
-    until(idx==len)\r
-endfunc\r
-\r
-func switch_to_status_done()\r
-    var len,idx;\r
-    \r
-    out_msg_buff[0] := MSG_START;\r
-    out_msg_buff[1] := MSG_SWITCH_TO_STATUS_DONE;\r
-    out_msg_buff[2] := MSG_TERM_LF;\r
-\r
-    len := 3;\r
-    idx := 0;\r
-    \r
-    repeat\r
-        serout(out_msg_buff[idx]);\r
-        idx++;\r
-    until(idx==len)\r
-endfunc\r
-\r
-func switch_to_control()\r
-    var len,idx;\r
-    \r
-    out_msg_buff[0] := MSG_START;\r
-    out_msg_buff[1] := MSG_SWITCH_TO_CONTROL;\r
-    out_msg_buff[2] := MSG_TERM_LF;\r
-\r
-    len := 3;\r
-    idx := 0;\r
-    \r
-    repeat\r
-        serout(out_msg_buff[idx]);\r
-        idx++;\r
-    until(idx==len)\r
-endfunc\r
-\r
-func switch_to_control_done()\r
-    var len,idx;\r
-    \r
-    out_msg_buff[0] := MSG_START;\r
-    out_msg_buff[1] := MSG_SWITCH_TO_CONTROL_DONE;\r
-    out_msg_buff[2] := MSG_TERM_LF;\r
-\r
-    len := 3;\r
-    idx := 0;\r
-    \r
-    repeat\r
-        serout(out_msg_buff[idx]);\r
-        idx++;\r
-    until(idx==len)\r
-endfunc\r
-\r
-func move_carousel(var dir)\r
-    var len,idx;\r
-    \r
-    out_msg_buff[0] := MSG_START;\r
-    if(dir==CAR_LEFT)\r
-    out_msg_buff[1] := MSG_CAR_LEFT;\r
-    else\r
-        if(dir==CAR_RIGHT)\r
-            out_msg_buff[1] := MSG_CAR_RIGHT;\r
-        endif\r
-    endif\r
-    out_msg_buff[2] := MSG_TERM_LF;\r
-\r
-    len := 3;\r
-    idx := 0;\r
-    \r
-    repeat\r
-        serout(out_msg_buff[idx]);\r
-        idx++;\r
-    until(idx==len)\r
-endfunc\r
-\r
-func set_color(var des_col)\r
-    var len,idx;\r
-    \r
-    out_msg_buff[0] := MSG_START;\r
-    out_msg_buff[1] := MSG_SET_COLOR;\r
-    out_msg_buff[2] := des_col;\r
-    out_msg_buff[3] := MSG_TERM_LF;\r
-\r
-    len := 4;\r
-    idx := 0;\r
-    \r
-    repeat\r
-        serout(out_msg_buff[idx]);\r
-        idx++;\r
-    until(idx==len)\r
-endfunc\r
-\r
-func draw_ctrl_titles()\r
-    txt_Set(FONT_SIZE, FONT3);\r
-    txt_Set(TEXT_COLOUR, RED);\r
-\r
-    txt_MoveCursor(0, 8);\r
-    putstr("SERVOS CONTROL");\r
-    \r
-    txt_MoveCursor(7, 8);\r
-    putstr("DRIVES CONTROL");\r
-    \r
-    txt_MoveCursor(14, 9);\r
-    putstr("ROBOT CONTROL");\r
-endfunc\r
-\r
-func draw_servos_buttons()\r
-    bt_x[BT_X_0] := 0;\r
-    bt_y[BT_S_ROW1_Y] := 18;\r
-    bt_lbrush_servo(UP, BLUE);\r
-    \r
-    bt_x[BT_S_RBRUSH_X] := gfx_Get(2);\r
-    bt_rbrush_servo(UP, BLUE);\r
-    bt_y[BT_S_ROW2_Y] := gfx_Get(3);\r
-\r
-// SECOND ROW\r
-    bt_fdoor_servo(UP, BLUE);\r
-    bt_x[BT_S_BDOOR_X] := gfx_Get(2);\r
-    bt_bdoor_servo(UP, BLUE);\r
-    bt_y[BT_S_ROW2_END_Y] := gfx_Get(3);\r
-endfunc\r
-\r
-func draw_drives_buttons()\r
-    bt_y[BT_D_ROW1_Y] := 100;\r
-    bt_lbrush_drive(UP, BLUE);\r
-    \r
-    bt_x[BT_D_RBRUSH_X] := gfx_Get(2);\r
-    bt_rbrush_drive(UP, BLUE);\r
-    \r
-    bt_y[BT_D_ROW2_Y] := gfx_Get(3);\r
-\r
-// SECOND ROW\r
-    bt_x[BT_D_BAGR_X] := 0;\r
-    bt_bagr_drive(UP, BLUE);\r
-    \r
-    bt_y[BT_D_ROW2_END_Y] := gfx_Get(3);\r
-    bt_x[BT_D_BAGR_END_X] := gfx_Get(2);\r
-\r
-    bt_y[BT_CAR_LEFT_Y] := bt_y[BT_D_ROW2_Y];\r
-    bt_x[BT_CAR_LEFT_X] := bt_x[BT_D_BAGR_END_X];\r
-    bt_carousel_left(UP, BLUE);\r
-    bt_y[BT_CAR_LEFT_END_Y] := bt_y[BT_D_ROW2_END_Y];\r
-    bt_x[BT_CAR_LEFT_END_X] := gfx_Get(2);\r
-    \r
-    bt_y[BT_CAR_RIGHT_Y] := bt_y[BT_D_ROW2_Y];\r
-    bt_x[BT_CAR_RIGHT_X] := gfx_Get(2);\r
-    bt_carousel_right(UP, BLUE);\r
-    bt_y[BT_CAR_RIGHT_END_Y] := bt_y[BT_D_ROW2_END_Y];\r
-    bt_x[BT_CAR_RIGHT_END_X] := gfx_Get(3);\r
-endfunc\r
-\r
-func draw_robot_control_buttons()\r
-    bt_y[BT_GET_READY_Y] := bt_y[BT_D_ROW2_END_Y] + 25;\r
-    bt_x[BT_GET_READY_X] := 30;\r
-\r
-    bt_get_ready(UP, BLUE);\r
-    \r
-    bt_x[BT_GET_READY_END_X] := gfx_Get(2);\r
-\r
-    bt_y[BT_START_Y] := gfx_Get(3);\r
-    bt_x[BT_START_X] := 30;\r
-    \r
-    bt_start(UP, RED);\r
-\r
-    bt_x[BT_START_END_X] := gfx_Get(2);\r
-    bt_y[BT_START_END_Y] := gfx_Get(3);\r
-    \r
-    bt_x[BT_COLOR_X] := 30;\r
-    bt_y[BT_COLOR_Y] := bt_y[BT_START_END_Y] + 5;\r
-    \r
-    bt_color(UP, BLUE);\r
-    \r
-    bt_x[BT_COLOR_END_X] := gfx_Get(2);\r
-    bt_y[BT_COLOR_END_Y] := gfx_Get(3);\r
-    \r
-endfunc\r
-\r
-func draw_status_button()\r
-    bt_x[BT_STATUS_X] := 0;\r
-    bt_y[BT_STATUS_Y] := 290;\r
-    \r
-    bt_status(UP, GRAY, TXT_BT_STATUS);\r
-    \r
-    bt_x[BT_STATUS_END_X] := gfx_Get(2);\r
-    bt_y[BT_STATUS_END_Y] := gfx_Get(3);\r
-endfunc\r
-\r
-func draw_control_button()\r
-    bt_x[BT_STATUS_X] := 0;\r
-    bt_y[BT_STATUS_Y] := 290;\r
-    \r
-    bt_status(UP, GRAY, TXT_BT_CONTROL);\r
-    \r
-    bt_x[BT_STATUS_END_X] := gfx_Get(2);\r
-    bt_y[BT_STATUS_END_Y] := gfx_Get(3);\r
-endfunc\r
-\r
-func draw_status() \r
-    clear_screen();\r
-    txt_Set(FONT_SIZE, FONT3);\r
-    txt_MoveCursor(0, 12);           // move the cursor to line 4, column 5\r
-    txt_Set(TEXT_COLOUR, GRAY);\r
-    \r
-    putstr("VOLTAGE");\r
-    draw_voltage33();\r
-    draw_voltage50();\r
-    draw_voltage80();\r
-    draw_voltageBAT();\r
-    \r
-    fsm_state_len := 1;\r
-    draw_fsm_state();\r
-\r
-    draw_balls();\r
-//    draw_carousel_pos(3, 2);\r
-    draw_hw();\r
-    draw_position();\r
-    draw_control_button();\r
-    return 0;\r
-endfunc\r
-\r
-func draw_control()\r
-    clear_screen();\r
-    draw_ctrl_titles();\r
-    draw_servos_buttons();\r
-    draw_drives_buttons();\r
-    draw_robot_control_buttons();\r
-    draw_status_button();\r
-endfunc\r
-\r
-func process_msg()\r
-    var idx;\r
-    if(msg_buff[0]==CHANGE_MODE_REP)\r
-        if(msg_buff[1]==CHANGE_MODE_STATUS)\r
-            draw_status();\r
-            isControl:=0;\r
-            isStatus:=1;            \r
-            switch_to_status_done();\r
-        endif\r
-        if(msg_buff[1]==CHANGE_MODE_CONTROL)\r
-            draw_control();\r
-            isStatus:=0;\r
-            isControl:=1;\r
-            switch_to_control_done();\r
-        endif\r
-    endif\r
-    \r
-    if((msg_buff[0]==MSG_VOLTAGE_STATUS)&&(isStatus==1))\r
-        voltage_status[VOLTAGE33]:=msg_buff[1];\r
-        voltage_status[VOLTAGE50]:=msg_buff[2];\r
-        voltage_status[VOLTAGE80]:=msg_buff[3];\r
-        voltage_status[VOLTAGE_BAT]:=msg_buff[4];\r
-    endif\r
-\r
-    if((msg_buff[0]==MSG_VOLTAGE)&&(isStatus==1))\r
-        \r
-        voltage33[0]:=msg_buff[1];\r
-        voltage33[1]:=msg_buff[2];\r
-        voltage33[2]:=msg_buff[3];\r
-        voltage33[3]:=msg_buff[4];\r
-        \r
-        voltage50[0]:=msg_buff[5];\r
-        voltage50[1]:=msg_buff[6];\r
-        voltage50[2]:=msg_buff[7];\r
-        voltage50[3]:=msg_buff[8];\r
-        \r
-        voltage80[0]:=msg_buff[9];\r
-        voltage80[1]:=msg_buff[10];\r
-        voltage80[2]:=msg_buff[11];\r
-        voltage80[3]:=msg_buff[12];\r
-        \r
-        voltageBAT[0]:=msg_buff[13];\r
-        voltageBAT[1]:=msg_buff[14];\r
-        voltageBAT[2]:=msg_buff[15];\r
-        voltageBAT[3]:=msg_buff[16];\r
-        voltageBAT[4]:=msg_buff[17];\r
-        \r
-        draw_voltage33();\r
-        draw_voltage50();\r
-        draw_voltage80();\r
-        draw_voltageBAT();\r
-    endif\r
-    if((msg_buff[0]==MSG_POSITION)&&(isStatus==1))\r
-        idx:=1;\r
-        repeat\r
-            position[idx-1] := msg_buff[idx];\r
-            idx++;\r
-        until (msg_buff[idx]==MSG_TERM)\r
-        draw_position();\r
-    endif\r
-    if((msg_buff[0]==MSG_FSM_STATE)&&(isStatus==1))\r
-        idx:=1;\r
-        repeat\r
-            fsm_state[idx-1] := msg_buff[idx];\r
-            idx++;\r
-        until(msg_buff[idx]==MSG_TERM)\r
-        fsm_state_len := idx-1;\r
-        update_fsm_state();\r
-    endif\r
-    if((msg_buff[0]==MSG_MOVE_FSM_STATE)&&(isStatus==1))\r
-        idx:=1;\r
-        repeat\r
-            move_fsm_state[idx-1] := msg_buff[idx];\r
-            idx++;\r
-        until(msg_buff[idx]==MSG_TERM)\r
-        move_fsm_state_len := idx-1;\r
-        update_move_fsm_state();\r
-    endif\r
-    if((msg_buff[0]==MSG_COLOR)&&(isStatus==1))\r
-        if(msg_buff[1]==1)\r
-            game_color := RED;\r
-        else\r
-            game_color := BLUE;\r
-        endif\r
-    endif\r
-    if((msg_buff[0]==MSG_SET_COLOR))\r
-        if(msg_buff[1]==COLOR_BLUE)\r
-            current_color:=COLOR_BLUE;\r
-            if(isControl==1)\r
-                bt_color(UP, BLUE);\r
-            endif\r
-        endif\r
-        if(msg_buff[1]==COLOR_RED)\r
-            current_color:=COLOR_RED;\r
-            if(isControl==1)\r
-                bt_color(DOWN, RED);\r
-            endif\r
-        endif\r
-    endif\r
-    if((msg_buff[0]==MSG_BALLS)&&(isStatus==1))\r
-        balls_state[0]:=msg_buff[1];\r
-        balls_state[1]:=msg_buff[2];\r
-        balls_state[2]:=msg_buff[3];\r
-        balls_state[3]:=msg_buff[4];\r
-        balls_state[4]:=msg_buff[5];\r
-        ball_up:=msg_buff[6];\r
-        ball_down:=msg_buff[7];\r
-        update_balls();\r
-    endif\r
-    if((msg_buff[0]==MSG_HW_STATUS)&&(isStatus==1))\r
-//        if(msg_buff[1]==HW1)\r
-            draw_hw1(msg_buff[1]);\r
-//        endif\r
-//        if(msg_buff[1]==HW2)\r
-            draw_hw2(msg_buff[2]);\r
-//        endif\r
-//        if(msg_buff[1]==HW3)\r
-            draw_hw3(msg_buff[3]);\r
-//        endif\r
-//        if(msg_buff[1]==HW4)\r
-            draw_hw4(msg_buff[4]);\r
-//        endif\r
-//        if(msg_buff[1]==HW5)\r
-//            draw_hw5(msg_buff[5]);\r
-//        endif\r
-//        if(msg_buff[1]==HW6)\r
-//            draw_hw6(msg_buff[6]);\r
-//        endif\r
-    endif\r
-    return 0;\r
-endfunc\r
-\r
-func get_msg()\r
-    var in, idx, bad;\r
-\r
-    idx:=0;\r
-    bad:=0;\r
-\r
-    repeat\r
-        in:=serin();\r
-        if(in!=-1)\r
-            msg_buff[idx] := in;\r
-            idx++;\r
-        else\r
-            break;\r
-        endif\r
-    until((in==MSG_TERM)||(idx==MSG_BUFF_LEN))\r
-    msg_len := idx;\r
-\r
-    process_msg();\r
-    return 0;\r
-endfunc\r
-\r
-func bt_pressed_s_row1(var x)\r
-    if(x<bt_x[BT_S_RBRUSH_X])\r
-        bt_lbrush_servo(DOWN, GREEN);\r
-        set_actuators(MSG_LBRUSH_SERVO);\r
-    else\r
-        bt_rbrush_servo(DOWN, GREEN);\r
-        set_actuators(MSG_RBRUSH_SERVO);\r
-    endif\r
-endfunc\r
-\r
-func bt_pressed_s_row2(var x)\r
-    if(x<bt_x[BT_S_BDOOR_X])\r
-        bt_fdoor_servo(DOWN, GREEN);\r
-        set_actuators(MSG_FDOOR_SERVO);\r
-    else\r
-        bt_bdoor_servo(DOWN, GREEN);\r
-        set_actuators(MSG_BDOOR_SERVO);\r
-    endif\r
-endfunc\r
-\r
-func bt_pressed_d_row1(var x)\r
-    if(x<bt_x[BT_S_RBRUSH_X])\r
-        bt_lbrush_drive(DOWN, GREEN);\r
-        set_actuators(MSG_LBRUSH_DRIVE);\r
-    else\r
-        bt_rbrush_drive(DOWN, GREEN);\r
-        set_actuators(MSG_RBRUSH_DRIVE);\r
-    endif\r
-endfunc\r
-\r
-func bt_pressed_d_row2(var x)\r
-    if((x>bt_x[BT_D_BAGR_X])&&(x<bt_x[BT_D_BAGR_END_X]))\r
-        bt_bagr_drive(DOWN, GREEN);\r
-        set_actuators(MSG_BAGR_DRIVE);\r
-    endif\r
-    if((x>bt_x[BT_CAR_LEFT_X])&&(x<bt_x[BT_CAR_LEFT_END_X]))\r
-        bt_carousel_left(DOWN, GREEN);\r
-        move_carousel(CAR_LEFT);\r
-    endif\r
-    if(x>bt_x[BT_CAR_RIGHT_X])\r
-        bt_carousel_right(DOWN, GREEN);\r
-        move_carousel(CAR_RIGHT);\r
-    endif\r
-endfunc\r
-\r
-func bt_pressed_get_ready()\r
-    bt_get_ready(DOWN, GREEN);\r
-    robot_get_ready();\r
-endfunc\r
-\r
-func bt_pressed_start()\r
-    bt_start(DOWN, GREEN);\r
-    start();\r
-endfunc\r
-\r
-func bt_pressed_status()\r
-    bt_status(DOWN, GREEN, TXT_BT_STATUS);\r
-endfunc\r
-\r
-func bt_pressed_control()\r
-    bt_status(DOWN, GREEN, TXT_BT_CONTROL);\r
-endfunc\r
-\r
-func bt_pressed_color()\r
-    if(current_color==COLOR_RED)\r
-        bt_color(UP, BLUE);\r
-        set_color(COLOR_BLUE);\r
-        current_color := COLOR_BLUE;\r
-    else\r
-        if(current_color==COLOR_BLUE)\r
-            bt_color(DOWN, RED);\r
-            set_color(COLOR_RED);\r
-            current_color := COLOR_RED;\r
-        endif\r
-    endif\r
-endfunc\r
-\r
-func bt_unpressed_s_row1(var x)\r
-    if(x<bt_x[BT_S_RBRUSH_X])\r
-        bt_lbrush_servo(UP, BLUE);\r
-    else\r
-        bt_rbrush_servo(UP, BLUE);\r
-    endif\r
-endfunc\r
-\r
-func bt_unpressed_s_row2(var x)\r
-    if(x<bt_x[BT_S_BDOOR_X])\r
-        bt_fdoor_servo(UP, BLUE);\r
-    else\r
-        bt_bdoor_servo(UP, BLUE);\r
-    endif\r
-endfunc\r
-\r
-func bt_unpressed_d_row1(var x)\r
-    if(x<bt_x[BT_S_RBRUSH_X])\r
-        bt_lbrush_drive(UP, BLUE);\r
-    else\r
-        bt_rbrush_drive(UP, BLUE);\r
-    endif\r
-endfunc\r
-\r
-func bt_unpressed_d_row2(var x)\r
-    if((x>bt_x[BT_D_BAGR_X])&&(x<bt_x[BT_D_BAGR_END_X]))\r
-        bt_bagr_drive(UP, BLUE);\r
-    endif\r
-    if((x>bt_x[BT_CAR_LEFT_X])&&(x<bt_x[BT_CAR_LEFT_END_X]))\r
-        bt_carousel_left(UP, BLUE);\r
-    endif\r
-    if(x>bt_x[BT_CAR_RIGHT_X])\r
-        bt_carousel_right(UP, BLUE);\r
-    endif\r
-endfunc\r
-\r
-func bt_unpressed_get_ready()\r
-    bt_get_ready(UP, BLUE);\r
-endfunc\r
-\r
-func bt_unpressed_start()\r
-    bt_start(UP, RED);\r
-endfunc\r
-\r
-func bt_unpressed_status()\r
-    bt_status(UP, GRAY, TXT_BT_STATUS);\r
-    switch_to_status();\r
-endfunc\r
-\r
-func bt_unpressed_control()\r
-    bt_status(UP, GRAY, TXT_BT_CONTROL);\r
-    switch_to_control();\r
-endfunc\r
-\r
-func touchscreen() \r
-    var col, state, x, y;\r
-    state := touch_Get(TOUCH_STATUS);               // get touchscreen status\r
-        \r
-        if(state == NOTOUCH)\r
-            return;\r
-        endif\r
-        //-----------------------------------------------------------------------------------------\r
-        if(state == TOUCH_PRESS)                        // if there's a press\r
-            x := touch_Get(TOUCH_GETX);                          \r
-            y := touch_Get(TOUCH_GETY);\r
-            \r
-            if(isControl)\r
-            if((y > bt_y[BT_S_ROW1_Y])&&(y<bt_y[BT_S_ROW2_Y]))\r
-                bt_pressed_s_row1(x);                \r
-            endif            \r
-\r
-            if((y > bt_y[BT_S_ROW2_Y])&&(y<bt_y[BT_S_ROW2_END_Y]))\r
-                bt_pressed_s_row2(x);                \r
-            endif            \r
-            \r
-            if((y > bt_y[BT_D_ROW1_Y])&&(y<bt_y[BT_D_ROW2_Y]))\r
-                bt_pressed_d_row1(x);                \r
-            endif            \r
-\r
-            if((y > bt_y[BT_D_ROW2_Y])&&(y<bt_y[BT_D_ROW2_END_Y]))\r
-                bt_pressed_d_row2(x);                \r
-            endif            \r
-\r
-            if((y > bt_y[BT_GET_READY_Y])&&(y<bt_y[BT_START_Y])&&(x>bt_x[BT_GET_READY_X])&&(x<bt_x[BT_GET_READY_END_X]))\r
-                bt_pressed_get_ready();\r
-            endif\r
-\r
-            if((y > bt_y[BT_START_Y])&&(y<bt_y[BT_START_END_Y])&&(x>bt_x[BT_START_X])&&(x<bt_x[BT_START_END_X]))\r
-                bt_pressed_start();\r
-            endif\r
-            \r
-            if((y > bt_y[BT_COLOR_Y])&&(y<bt_y[BT_COLOR_END_Y])&&(x>bt_x[BT_COLOR_X])&&(x<bt_x[BT_COLOR_END_X]))\r
-                bt_pressed_color();\r
-            endif\r
-\r
-            if(y > bt_y[BT_STATUS_Y])\r
-                bt_pressed_status();\r
-            endif\r
-            \r
-            endif //isControl\r
-            \r
-            if(isStatus)\r
-\r
-                if(y > bt_y[BT_STATUS_Y])\r
-                    bt_pressed_control();\r
-                endif\r
-                \r
-            endif //isStatus\r
-        endif\r
-        \r
-        //-----------------------------------------------------------------------------------------\r
-        if(state == TOUCH_RELEASE)                      // if there's a release\r
-\r
-            if(isControl)\r
-\r
-            if((y > bt_y[BT_S_ROW1_Y])&&(y<bt_y[BT_S_ROW2_Y]))\r
-                bt_unpressed_s_row1(x);                \r
-            endif            \r
-            \r
-            if((y > bt_y[BT_S_ROW2_Y])&&(y<bt_y[BT_S_ROW2_END_Y]))\r
-                bt_unpressed_s_row2(x);                \r
-            endif            \r
-\r
-            if((y > bt_y[BT_D_ROW1_Y])&&(y<bt_y[BT_D_ROW2_Y]))\r
-                bt_unpressed_d_row1(x);                \r
-            endif            \r
-            \r
-            if((y > bt_y[BT_D_ROW2_Y])&&(y<bt_y[BT_D_ROW2_END_Y]))\r
-                bt_unpressed_d_row2(x);                \r
-            endif          \r
-            \r
-            if((y > bt_y[BT_GET_READY_Y])&&(y<bt_y[BT_START_Y])&&(x>bt_x[BT_GET_READY_X])&&(x<bt_x[BT_GET_READY_END_X]))\r
-                bt_unpressed_get_ready();\r
-            endif\r
-\r
-            if((y > bt_y[BT_START_Y])&&(y<bt_y[BT_START_END_Y])&&(x>bt_x[BT_START_X])&&(x<bt_x[BT_START_END_X]))\r
-                bt_unpressed_start();\r
-            endif  \r
-            \r
-            if(y > bt_y[BT_STATUS_Y])\r
-                bt_unpressed_status();\r
-            endif\r
-\r
-            endif //isControl\r
-\r
-            if(isStatus==1)\r
-            \r
-            if(y > bt_y[BT_STATUS_Y])\r
-                bt_unpressed_control();\r
-            endif\r
-            \r
-            endif //isStatus\r
-\r
-        endif\r
-    \r
-endfunc\r
-\r
-func main()\r
-    var ch;\r
-    setbaud(BAUD_2400); \r
-    touch_Set(TOUCH_ENABLE);\r
-    touch_Set(2); \r
-    isStatus := 1;\r
-    isControl := 0;\r
-    current_color := COLOR_BLUE;\r
-    draw_status();\r
-//    draw_control();\r
-\r
-    repeat\r
-        touchscreen();\r
-        ch:=serin();\r
-        if(ch==MSG_START)\r
-            get_msg();\r
-            \r
-        endif\r
-    forever\r
-endfunc\r
-\r
-\r
-\r
-\r
-\r