Home
JAQForum Ver 24.01
Log In or Join  
Active Topics
Local Time 16:53 02 Aug 2025 Privacy Policy
Jump to

Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.

Forum Index : Microcontroller and PC projects : Explorer-100 to the rescue :)

Author Message
Tinine
Guru

Joined: 30/03/2016
Location: United Kingdom
Posts: 1646
Posted: 12:30pm 07 Sep 2021
Copy link to clipboard 
Print this post

Another panic-project came up and the E-100 is the perfect solution due to the two Click-module sockets. I need Bluetooth and quadrature-encoder decode/counting.

This is an old machine, fitted with AC solenoid valves and so this gives me an opportunity to test these Fotek SSRs

HMI is a 7" Android tablet and the code is coming together rapidly.

Client thinks I'm a nutter because I have insisted on bringing a sleeping bag to his factory so that I can knock this thing out in record time  
 
Tinine
Guru

Joined: 30/03/2016
Location: United Kingdom
Posts: 1646
Posted: 12:46pm 07 Sep 2021
Copy link to clipboard 
Print this post

Using RFO Basic, aka BASIC! for the HMI.

To give an idea of the syntax:




GoSub INCFILES
StatusB = 0
GoSub INITGRAPHICS
GR.ORIENTATION 0
Pause 800
   
DevWidth  = 600  % Keep aspect ratio
DevHeight = 1024  % Keep aspect ratio
GR.SCREEN ActWidth, ActHeight
If DevWidth > DevHeight & ActWidth < ActHeight Then Swap DevWidth, DevHeight
If DevWidth < DevHeight & ActWidth > ActHeight Then Swap DevWidth, DevHeight
If StatusB > 0 Then
GR.STATUSBAR StatusH
ActHeight  = ActHeight - StatusH
End If
ScaleW = ActWidth / DevWidth
ScaleH = ActHeight / DevHeight
GR.SCALE ScaleW, ScaleH
   
LastItm = 469
MaxArray = 470
GoSub GLOBALCODE
DIM Screen1[MaxArray]
DIM Screen2[MaxArray]
DIM Screen3[MaxArray]
DIM Screen4[MaxArray]
DIM Screen5[MaxArray]
DIM Screen6[MaxArray]

GoSub CUSTOMGRAPHICS

DRAWOBJECTS:
! Draw RndBtn1 =====================================
GR.COLOR 0, 0, 0, 0, 0
GR.RECT Screen1[1], 10, 110, 162, 162
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen1[2], 15, 110, 157, 162
GR.RECT Screen1[3], 10, 115, 162, 157
GR.CIRCLE Screen1[4], 15, 115, 5
GR.CIRCLE Screen1[5], 157, 115, 5
GR.CIRCLE Screen1[6], 157, 157, 5
GR.CIRCLE Screen1[7], 15, 157, 5
GR.COLOR 255, 255, 255, 255, 0
GR.SET.STROKE 1
GR.LINE Screen1[8], 10, 115, 10, 157
GR.LINE Screen1[9], 15, 110, 157, 110
GR.LINE Screen1[10], 162, 115, 162, 157
GR.LINE Screen1[11], 157, 162, 15, 162
GR.ARC Screen1[12], 10, 110, 20, 120, 270, -90, 0
GR.ARC Screen1[13], 152, 152, 162, 162, 0, 90, 0
GR.ARC Screen1[14], 10, 152, 20, 162, -270, 90, 0
GR.ARC Screen1[15], 152, 110, 162, 120, -90, 90, 0
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen1[16], 86, 145, "Clamp IN"
TxtRndBtn1 = 16
   
! Draw RndBtn2 =====================================
GR.COLOR 0, 0, 0, 0, 0
GR.RECT Screen1[17], 175, 110, 327, 162
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen1[18], 180, 110, 322, 162
GR.RECT Screen1[19], 175, 115, 327, 157
GR.CIRCLE Screen1[20], 180, 115, 5
GR.CIRCLE Screen1[21], 322, 115, 5
GR.CIRCLE Screen1[22], 322, 157, 5
GR.CIRCLE Screen1[23], 180, 157, 5
GR.COLOR 255, 255, 255, 255, 0
GR.SET.STROKE 1
GR.LINE Screen1[24], 175, 115, 175, 157
GR.LINE Screen1[25], 180, 110, 322, 110
GR.LINE Screen1[26], 327, 115, 327, 157
GR.LINE Screen1[27], 322, 162, 180, 162
GR.ARC Screen1[28], 175, 110, 185, 120, 270, -90, 0
GR.ARC Screen1[29], 317, 152, 327, 162, 0, 90, 0
GR.ARC Screen1[30], 175, 152, 185, 162, -270, 90, 0
GR.ARC Screen1[31], 317, 110, 327, 120, -90, 90, 0
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen1[32], 251, 145, "P-Die IN"
TxtRndBtn2 = 32
   
! Draw RndBtn3 =====================================
GR.COLOR 0, 0, 0, 0, 0
GR.RECT Screen1[33], 340, 110, 492, 162
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen1[34], 345, 110, 487, 162
GR.RECT Screen1[35], 340, 115, 492, 157
GR.CIRCLE Screen1[36], 345, 115, 5
GR.CIRCLE Screen1[37], 487, 115, 5
GR.CIRCLE Screen1[38], 487, 157, 5
GR.CIRCLE Screen1[39], 345, 157, 5
GR.COLOR 255, 255, 255, 255, 0
GR.SET.STROKE 1
GR.LINE Screen1[40], 340, 115, 340, 157
GR.LINE Screen1[41], 345, 110, 487, 110
GR.LINE Screen1[42], 492, 115, 492, 157
GR.LINE Screen1[43], 487, 162, 345, 162
GR.ARC Screen1[44], 340, 110, 350, 120, 270, -90, 0
GR.ARC Screen1[45], 482, 152, 492, 162, 0, 90, 0
GR.ARC Screen1[46], 340, 152, 350, 162, -270, 90, 0
GR.ARC Screen1[47], 482, 110, 492, 120, -90, 90, 0
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen1[48], 416, 145, "Mand ADV"
TxtRndBtn3 = 48
   
! Draw RndBtn4 =====================================
GR.COLOR 0, 0, 0, 0, 0
GR.RECT Screen1[49], 10, 195, 162, 247
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen1[50], 15, 195, 157, 247
GR.RECT Screen1[51], 10, 200, 162, 242
GR.CIRCLE Screen1[52], 15, 200, 5
GR.CIRCLE Screen1[53], 157, 200, 5
GR.CIRCLE Screen1[54], 157, 242, 5
GR.CIRCLE Screen1[55], 15, 242, 5
GR.COLOR 255, 255, 255, 255, 0
GR.SET.STROKE 1
GR.LINE Screen1[56], 10, 200, 10, 242
GR.LINE Screen1[57], 15, 195, 157, 195
GR.LINE Screen1[58], 162, 200, 162, 242
GR.LINE Screen1[59], 157, 247, 15, 247
GR.ARC Screen1[60], 10, 195, 20, 205, 270, -90, 0
GR.ARC Screen1[61], 152, 237, 162, 247, 0, 90, 0
GR.ARC Screen1[62], 10, 237, 20, 247, -270, 90, 0
GR.ARC Screen1[63], 152, 195, 162, 205, -90, 90, 0
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen1[64], 86, 230, "Clamp IN"
TxtRndBtn4 = 64
   
! Draw RndBtn5 =====================================
GR.COLOR 0, 0, 0, 0, 0
GR.RECT Screen1[65], 175, 195, 327, 247
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen1[66], 180, 195, 322, 247
GR.RECT Screen1[67], 175, 200, 327, 242
GR.CIRCLE Screen1[68], 180, 200, 5
GR.CIRCLE Screen1[69], 322, 200, 5
GR.CIRCLE Screen1[70], 322, 242, 5
GR.CIRCLE Screen1[71], 180, 242, 5
GR.COLOR 255, 255, 255, 255, 0
GR.SET.STROKE 1
GR.LINE Screen1[72], 175, 200, 175, 242
GR.LINE Screen1[73], 180, 195, 322, 195
GR.LINE Screen1[74], 327, 200, 327, 242
GR.LINE Screen1[75], 322, 247, 180, 247
GR.ARC Screen1[76], 175, 195, 185, 205, 270, -90, 0
GR.ARC Screen1[77], 317, 237, 327, 247, 0, 90, 0
GR.ARC Screen1[78], 175, 237, 185, 247, -270, 90, 0
GR.ARC Screen1[79], 317, 195, 327, 205, -90, 90, 0
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen1[80], 251, 230, "P-Die IN"
TxtRndBtn5 = 80
   
! Draw RndBtn6 =====================================
GR.COLOR 0, 0, 0, 0, 0
GR.RECT Screen1[81], 340, 195, 492, 247
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen1[82], 345, 195, 487, 247
GR.RECT Screen1[83], 340, 200, 492, 242
GR.CIRCLE Screen1[84], 345, 200, 5
GR.CIRCLE Screen1[85], 487, 200, 5
GR.CIRCLE Screen1[86], 487, 242, 5
GR.CIRCLE Screen1[87], 345, 242, 5
GR.COLOR 255, 255, 255, 255, 0
GR.SET.STROKE 1
GR.LINE Screen1[88], 340, 200, 340, 242
GR.LINE Screen1[89], 345, 195, 487, 195
GR.LINE Screen1[90], 492, 200, 492, 242
GR.LINE Screen1[91], 487, 247, 345, 247
GR.ARC Screen1[92], 340, 195, 350, 205, 270, -90, 0
GR.ARC Screen1[93], 482, 237, 492, 247, 0, 90, 0
GR.ARC Screen1[94], 340, 237, 350, 247, -270, 90, 0
GR.ARC Screen1[95], 482, 195, 492, 205, -90, 90, 0
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen1[96], 416, 230, "Mand ADV"
TxtRndBtn6 = 96
   
! Draw RndBtn7 =====================================
GR.COLOR 0, 0, 0, 0, 0
GR.RECT Screen1[97], 10, 275, 162, 327
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen1[98], 15, 275, 157, 327
GR.RECT Screen1[99], 10, 280, 162, 322
GR.CIRCLE Screen1[100], 15, 280, 5
GR.CIRCLE Screen1[101], 157, 280, 5
GR.CIRCLE Screen1[102], 157, 322, 5
GR.CIRCLE Screen1[103], 15, 322, 5
GR.COLOR 255, 255, 255, 255, 0
GR.SET.STROKE 1
GR.LINE Screen1[104], 10, 280, 10, 322
GR.LINE Screen1[105], 15, 275, 157, 275
GR.LINE Screen1[106], 162, 280, 162, 322
GR.LINE Screen1[107], 157, 327, 15, 327
GR.ARC Screen1[108], 10, 275, 20, 285, 270, -90, 0
GR.ARC Screen1[109], 152, 317, 162, 327, 0, 90, 0
GR.ARC Screen1[110], 10, 317, 20, 327, -270, 90, 0
GR.ARC Screen1[111], 152, 275, 162, 285, -90, 90, 0
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen1[112], 86, 310, "Clamp IN"
TxtRndBtn7 = 112
   
! Draw RndBtn8 =====================================
GR.COLOR 0, 0, 0, 0, 0
GR.RECT Screen1[113], 175, 275, 327, 327
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen1[114], 180, 275, 322, 327
GR.RECT Screen1[115], 175, 280, 327, 322
GR.CIRCLE Screen1[116], 180, 280, 5
GR.CIRCLE Screen1[117], 322, 280, 5
GR.CIRCLE Screen1[118], 322, 322, 5
GR.CIRCLE Screen1[119], 180, 322, 5
GR.COLOR 255, 255, 255, 255, 0
GR.SET.STROKE 1
GR.LINE Screen1[120], 175, 280, 175, 322
GR.LINE Screen1[121], 180, 275, 322, 275
GR.LINE Screen1[122], 327, 280, 327, 322
GR.LINE Screen1[123], 322, 327, 180, 327
GR.ARC Screen1[124], 175, 275, 185, 285, 270, -90, 0
GR.ARC Screen1[125], 317, 317, 327, 327, 0, 90, 0
GR.ARC Screen1[126], 175, 317, 185, 327, -270, 90, 0
GR.ARC Screen1[127], 317, 275, 327, 285, -90, 90, 0
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen1[128], 251, 310, "P-Die IN"
TxtRndBtn8 = 128
   
! Draw RndBtn9 =====================================
GR.COLOR 0, 0, 0, 0, 0
GR.RECT Screen1[129], 340, 275, 492, 327
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen1[130], 345, 275, 487, 327
GR.RECT Screen1[131], 340, 280, 492, 322
GR.CIRCLE Screen1[132], 345, 280, 5
GR.CIRCLE Screen1[133], 487, 280, 5
GR.CIRCLE Screen1[134], 487, 322, 5
GR.CIRCLE Screen1[135], 345, 322, 5
GR.COLOR 255, 255, 255, 255, 0
GR.SET.STROKE 1
GR.LINE Screen1[136], 340, 280, 340, 322
GR.LINE Screen1[137], 345, 275, 487, 275
GR.LINE Screen1[138], 492, 280, 492, 322
GR.LINE Screen1[139], 487, 327, 345, 327
GR.ARC Screen1[140], 340, 275, 350, 285, 270, -90, 0
GR.ARC Screen1[141], 482, 317, 492, 327, 0, 90, 0
GR.ARC Screen1[142], 340, 317, 350, 327, -270, 90, 0
GR.ARC Screen1[143], 482, 275, 492, 285, -90, 90, 0
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen1[144], 416, 310, "Mand ADV"
TxtRndBtn9 = 144
   
! Draw RndBtn10 =====================================
GR.COLOR 0, 0, 0, 0, 0
GR.RECT Screen1[145], 530, 110, 682, 162
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen1[146], 535, 110, 677, 162
GR.RECT Screen1[147], 530, 115, 682, 157
GR.CIRCLE Screen1[148], 535, 115, 5
GR.CIRCLE Screen1[149], 677, 115, 5
GR.CIRCLE Screen1[150], 677, 157, 5
GR.CIRCLE Screen1[151], 535, 157, 5
GR.COLOR 255, 255, 255, 255, 0
GR.SET.STROKE 1
GR.LINE Screen1[152], 530, 115, 530, 157
GR.LINE Screen1[153], 535, 110, 677, 110
GR.LINE Screen1[154], 682, 115, 682, 157
GR.LINE Screen1[155], 677, 162, 535, 162
GR.ARC Screen1[156], 530, 110, 540, 120, 270, -90, 0
GR.ARC Screen1[157], 672, 152, 682, 162, 0, 90, 0
GR.ARC Screen1[158], 530, 152, 540, 162, -270, 90, 0
GR.ARC Screen1[159], 672, 110, 682, 120, -90, 90, 0
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen1[160], 606, 145, "Clamp OUT"
TxtRndBtn10 = 160
   
! Draw RndBtn11 =====================================
GR.COLOR 0, 0, 0, 0, 0
GR.RECT Screen1[161], 695, 110, 847, 162
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen1[162], 700, 110, 842, 162
GR.RECT Screen1[163], 695, 115, 847, 157
GR.CIRCLE Screen1[164], 700, 115, 5
GR.CIRCLE Screen1[165], 842, 115, 5
GR.CIRCLE Screen1[166], 842, 157, 5
GR.CIRCLE Screen1[167], 700, 157, 5
GR.COLOR 255, 255, 255, 255, 0
GR.SET.STROKE 1
GR.LINE Screen1[168], 695, 115, 695, 157
GR.LINE Screen1[169], 700, 110, 842, 110
GR.LINE Screen1[170], 847, 115, 847, 157
GR.LINE Screen1[171], 842, 162, 700, 162
GR.ARC Screen1[172], 695, 110, 705, 120, 270, -90, 0
GR.ARC Screen1[173], 837, 152, 847, 162, 0, 90, 0
GR.ARC Screen1[174], 695, 152, 705, 162, -270, 90, 0
GR.ARC Screen1[175], 837, 110, 847, 120, -90, 90, 0
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen1[176], 771, 145, "P-Die OUT"
TxtRndBtn11 = 176
   
! Draw RndBtn12 =====================================
GR.COLOR 0, 0, 0, 0, 0
GR.RECT Screen1[177], 860, 110, 1012, 162
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen1[178], 865, 110, 1007, 162
GR.RECT Screen1[179], 860, 115, 1012, 157
GR.CIRCLE Screen1[180], 865, 115, 5
GR.CIRCLE Screen1[181], 1007, 115, 5
GR.CIRCLE Screen1[182], 1007, 157, 5
GR.CIRCLE Screen1[183], 865, 157, 5
GR.COLOR 255, 255, 255, 255, 0
GR.SET.STROKE 1
GR.LINE Screen1[184], 860, 115, 860, 157
GR.LINE Screen1[185], 865, 110, 1007, 110
GR.LINE Screen1[186], 1012, 115, 1012, 157
GR.LINE Screen1[187], 1007, 162, 865, 162
GR.ARC Screen1[188], 860, 110, 870, 120, 270, -90, 0
GR.ARC Screen1[189], 1002, 152, 1012, 162, 0, 90, 0
GR.ARC Screen1[190], 860, 152, 870, 162, -270, 90, 0
GR.ARC Screen1[191], 1002, 110, 1012, 120, -90, 90, 0
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen1[192], 936, 145, "Mand RET"
TxtRndBtn12 = 192
   
! Draw RndBtn13 =====================================
GR.COLOR 0, 0, 0, 0, 0
GR.RECT Screen1[193], 530, 195, 682, 247
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen1[194], 535, 195, 677, 247
GR.RECT Screen1[195], 530, 200, 682, 242
GR.CIRCLE Screen1[196], 535, 200, 5
GR.CIRCLE Screen1[197], 677, 200, 5
GR.CIRCLE Screen1[198], 677, 242, 5
GR.CIRCLE Screen1[199], 535, 242, 5
GR.COLOR 255, 255, 255, 255, 0
GR.SET.STROKE 1
GR.LINE Screen1[200], 530, 200, 530, 242
GR.LINE Screen1[201], 535, 195, 677, 195
GR.LINE Screen1[202], 682, 200, 682, 242
GR.LINE Screen1[203], 677, 247, 535, 247
GR.ARC Screen1[204], 530, 195, 540, 205, 270, -90, 0
GR.ARC Screen1[205], 672, 237, 682, 247, 0, 90, 0
GR.ARC Screen1[206], 530, 237, 540, 247, -270, 90, 0
GR.ARC Screen1[207], 672, 195, 682, 205, -90, 90, 0
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen1[208], 606, 230, "Clamp OUT"
TxtRndBtn13 = 208
   
! Draw RndBtn14 =====================================
GR.COLOR 0, 0, 0, 0, 0
GR.RECT Screen1[209], 695, 195, 847, 247
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen1[210], 700, 195, 842, 247
GR.RECT Screen1[211], 695, 200, 847, 242
GR.CIRCLE Screen1[212], 700, 200, 5
GR.CIRCLE Screen1[213], 842, 200, 5
GR.CIRCLE Screen1[214], 842, 242, 5
GR.CIRCLE Screen1[215], 700, 242, 5
GR.COLOR 255, 255, 255, 255, 0
GR.SET.STROKE 1
GR.LINE Screen1[216], 695, 200, 695, 242
GR.LINE Screen1[217], 700, 195, 842, 195
GR.LINE Screen1[218], 847, 200, 847, 242
GR.LINE Screen1[219], 842, 247, 700, 247
GR.ARC Screen1[220], 695, 195, 705, 205, 270, -90, 0
GR.ARC Screen1[221], 837, 237, 847, 247, 0, 90, 0
GR.ARC Screen1[222], 695, 237, 705, 247, -270, 90, 0
GR.ARC Screen1[223], 837, 195, 847, 205, -90, 90, 0
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen1[224], 771, 230, "P-Die OUT"
TxtRndBtn14 = 224
   
! Draw RndBtn15 =====================================
GR.COLOR 0, 0, 0, 0, 0
GR.RECT Screen1[225], 860, 195, 1012, 247
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen1[226], 865, 195, 1007, 247
GR.RECT Screen1[227], 860, 200, 1012, 242
GR.CIRCLE Screen1[228], 865, 200, 5
GR.CIRCLE Screen1[229], 1007, 200, 5
GR.CIRCLE Screen1[230], 1007, 242, 5
GR.CIRCLE Screen1[231], 865, 242, 5
GR.COLOR 255, 255, 255, 255, 0
GR.SET.STROKE 1
GR.LINE Screen1[232], 860, 200, 860, 242
GR.LINE Screen1[233], 865, 195, 1007, 195
GR.LINE Screen1[234], 1012, 200, 1012, 242
GR.LINE Screen1[235], 1007, 247, 865, 247
GR.ARC Screen1[236], 860, 195, 870, 205, 270, -90, 0
GR.ARC Screen1[237], 1002, 237, 1012, 247, 0, 90, 0
GR.ARC Screen1[238], 860, 237, 870, 247, -270, 90, 0
GR.ARC Screen1[239], 1002, 195, 1012, 205, -90, 90, 0
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen1[240], 936, 230, "Mand RET"
TxtRndBtn15 = 240
   
! Draw RndBtn16 =====================================
GR.COLOR 0, 0, 0, 0, 0
GR.RECT Screen1[241], 530, 275, 682, 327
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen1[242], 535, 275, 677, 327
GR.RECT Screen1[243], 530, 280, 682, 322
GR.CIRCLE Screen1[244], 535, 280, 5
GR.CIRCLE Screen1[245], 677, 280, 5
GR.CIRCLE Screen1[246], 677, 322, 5
GR.CIRCLE Screen1[247], 535, 322, 5
GR.COLOR 255, 255, 255, 255, 0
GR.SET.STROKE 1
GR.LINE Screen1[248], 530, 280, 530, 322
GR.LINE Screen1[249], 535, 275, 677, 275
GR.LINE Screen1[250], 682, 280, 682, 322
GR.LINE Screen1[251], 677, 327, 535, 327
GR.ARC Screen1[252], 530, 275, 540, 285, 270, -90, 0
GR.ARC Screen1[253], 672, 317, 682, 327, 0, 90, 0
GR.ARC Screen1[254], 530, 317, 540, 327, -270, 90, 0
GR.ARC Screen1[255], 672, 275, 682, 285, -90, 90, 0
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen1[256], 606, 310, "Clamp OUT"
TxtRndBtn16 = 256
   
! Draw RndBtn17 =====================================
GR.COLOR 0, 0, 0, 0, 0
GR.RECT Screen1[257], 695, 275, 847, 327
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen1[258], 700, 275, 842, 327
GR.RECT Screen1[259], 695, 280, 847, 322
GR.CIRCLE Screen1[260], 700, 280, 5
GR.CIRCLE Screen1[261], 842, 280, 5
GR.CIRCLE Screen1[262], 842, 322, 5
GR.CIRCLE Screen1[263], 700, 322, 5
GR.COLOR 255, 255, 255, 255, 0
GR.SET.STROKE 1
GR.LINE Screen1[264], 695, 280, 695, 322
GR.LINE Screen1[265], 700, 275, 842, 275
GR.LINE Screen1[266], 847, 280, 847, 322
GR.LINE Screen1[267], 842, 327, 700, 327
GR.ARC Screen1[268], 695, 275, 705, 285, 270, -90, 0
GR.ARC Screen1[269], 837, 317, 847, 327, 0, 90, 0
GR.ARC Screen1[270], 695, 317, 705, 327, -270, 90, 0
GR.ARC Screen1[271], 837, 275, 847, 285, -90, 90, 0
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen1[272], 771, 310, "P-Die OUT"
TxtRndBtn17 = 272
   
! Draw RndBtn18 =====================================
GR.COLOR 0, 0, 0, 0, 0
GR.RECT Screen1[273], 860, 275, 1012, 327
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen1[274], 865, 275, 1007, 327
GR.RECT Screen1[275], 860, 280, 1012, 322
GR.CIRCLE Screen1[276], 865, 280, 5
GR.CIRCLE Screen1[277], 1007, 280, 5
GR.CIRCLE Screen1[278], 1007, 322, 5
GR.CIRCLE Screen1[279], 865, 322, 5
GR.COLOR 255, 255, 255, 255, 0
GR.SET.STROKE 1
GR.LINE Screen1[280], 860, 280, 860, 322
GR.LINE Screen1[281], 865, 275, 1007, 275
GR.LINE Screen1[282], 1012, 280, 1012, 322
GR.LINE Screen1[283], 1007, 327, 865, 327
GR.ARC Screen1[284], 860, 275, 870, 285, 270, -90, 0
GR.ARC Screen1[285], 1002, 317, 1012, 327, 0, 90, 0
GR.ARC Screen1[286], 860, 317, 870, 327, -270, 90, 0
GR.ARC Screen1[287], 1002, 275, 1012, 285, -90, 90, 0
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen1[288], 936, 310, "Mand RET"
TxtRndBtn18 = 288
   
! Draw TxtLine1 ===================================
GR.COLOR 255, 0, 255, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen1[289], 885, 75, "Post-Bend Sequence"
TxtTxtLine1 = 289
   
! Draw TxtLine2 ===================================
GR.COLOR 255, 0, 255, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen1[290], 135, 75, "Pre-Bend Sequence"
TxtTxtLine2 = 290
   
! Draw Bitmap1 =====================================
GR.COLOR 255, 0, 0, 0, 1
GR.BITMAP.LOAD TmpPtr, "bluetooth_button_not_connected.png"
GR.BITMAP.SCALE BmpPtr1, TmpPtr, 45, 45, 1
GR.BITMAP.DELETE TmpPtr
GR.BITMAP.DRAW Screen1[291], BmpPtr1, 0, 0
PtrBitmap1 = 291
   
! Draw Btn3 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen1[292], 0, 450, 210, 600
GR.COLOR 255, 255, 255, 0, 1
GR.RECT Screen1[293], 1, 451, 209, 599
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 120
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen1[294], 105, 570, "1"
TxtBtn3 = 294
   
! Draw Btn4 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen1[295], 688, 450, 1023, 600
GR.COLOR 255, 255, 255, 0, 1
GR.RECT Screen1[296], 689, 451, 1022, 599
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 120
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen1[297], 856, 570, "000.0"
TxtBtn4 = 297
   
! Draw Btn5 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen2[298], 780, 180, 925, 360
GR.COLOR 255, 255, 255, 0, 1
GR.RECT Screen2[299], 781, 181, 924, 359
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 200
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen2[300], 853, 345, "0"
TxtBtn5 = 300
   
! Draw Btn6 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen2[301], 725, 180, 770, 360
GR.COLOR 255, 255, 255, 0, 1
GR.RECT Screen2[302], 726, 181, 769, 359
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 200
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen2[303], 748, 345, "."
TxtBtn6 = 303
   
! Draw Btn7 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen2[304], 570, 180, 715, 360
GR.COLOR 255, 255, 255, 0, 1
GR.RECT Screen2[305], 571, 181, 714, 359
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 200
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen2[306], 643, 345, "0"
TxtBtn7 = 306
   
! Draw Btn8 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen2[307], 415, 180, 560, 360
GR.COLOR 255, 255, 255, 0, 1
GR.RECT Screen2[308], 416, 181, 559, 359
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 200
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen2[309], 488, 345, "0"
TxtBtn8 = 309
   
! Draw Btn9 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen2[310], 260, 180, 405, 360
GR.COLOR 255, 255, 255, 0, 1
GR.RECT Screen2[311], 261, 181, 404, 359
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 200
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen2[312], 333, 345, "0"
TxtBtn9 = 312
   
! Draw Bitmap2 =====================================
GR.COLOR 255, 0, 0, 0, 1
GR.BITMAP.LOAD TmpPtr, "increment_button.png"
GR.BITMAP.SCALE BmpPtr2, TmpPtr, 145, 100, 1
GR.BITMAP.DELETE TmpPtr
GR.BITMAP.DRAW Screen2[313], BmpPtr2, 260, 70
PtrBitmap2 = 313
   
! Draw Bitmap3 =====================================
GR.COLOR 255, 0, 0, 0, 1
GR.BITMAP.LOAD TmpPtr, "increment_button.png"
GR.BITMAP.SCALE BmpPtr3, TmpPtr, 145, 100, 1
GR.BITMAP.DELETE TmpPtr
GR.BITMAP.DRAW Screen2[314], BmpPtr3, 415, 70
PtrBitmap3 = 314
   
! Draw Bitmap4 =====================================
GR.COLOR 255, 0, 0, 0, 1
GR.BITMAP.LOAD TmpPtr, "increment_button.png"
GR.BITMAP.SCALE BmpPtr4, TmpPtr, 145, 100, 1
GR.BITMAP.DELETE TmpPtr
GR.BITMAP.DRAW Screen2[315], BmpPtr4, 570, 70
PtrBitmap4 = 315
   
! Draw Bitmap5 =====================================
GR.COLOR 255, 0, 0, 0, 1
GR.BITMAP.LOAD TmpPtr, "increment_button.png"
GR.BITMAP.SCALE BmpPtr5, TmpPtr, 145, 100, 1
GR.BITMAP.DELETE TmpPtr
GR.BITMAP.DRAW Screen2[316], BmpPtr5, 780, 70
PtrBitmap5 = 316
   
! Draw Bitmap6 =====================================
GR.COLOR 255, 0, 0, 0, 1
GR.BITMAP.LOAD TmpPtr, "decrement_button.png"
GR.BITMAP.SCALE BmpPtr6, TmpPtr, 145, 100, 1
GR.BITMAP.DELETE TmpPtr
GR.BITMAP.DRAW Screen2[317], BmpPtr6, 260, 375
PtrBitmap6 = 317
   
! Draw Bitmap7 =====================================
GR.COLOR 255, 0, 0, 0, 1
GR.BITMAP.LOAD TmpPtr, "decrement_button.png"
GR.BITMAP.SCALE BmpPtr7, TmpPtr, 145, 100, 1
GR.BITMAP.DELETE TmpPtr
GR.BITMAP.DRAW Screen2[318], BmpPtr7, 415, 375
PtrBitmap7 = 318
   
! Draw Bitmap8 =====================================
GR.COLOR 255, 0, 0, 0, 1
GR.BITMAP.LOAD TmpPtr, "decrement_button.png"
GR.BITMAP.SCALE BmpPtr8, TmpPtr, 145, 100, 1
GR.BITMAP.DELETE TmpPtr
GR.BITMAP.DRAW Screen2[319], BmpPtr8, 570, 375
PtrBitmap8 = 319
   
! Draw Bitmap9 =====================================
GR.COLOR 255, 0, 0, 0, 1
GR.BITMAP.LOAD TmpPtr, "decrement_button.png"
GR.BITMAP.SCALE BmpPtr9, TmpPtr, 145, 100, 1
GR.BITMAP.DELETE TmpPtr
GR.BITMAP.DRAW Screen2[320], BmpPtr9, 780, 375
PtrBitmap9 = 320
   
! Draw Bitmap11 =====================================
GR.COLOR 255, 0, 0, 0, 1
GR.BITMAP.LOAD TmpPtr, "bluetooth_button_not_connected.png"
GR.BITMAP.SCALE BmpPtr11, TmpPtr, 45, 45, 1
GR.BITMAP.DELETE TmpPtr
GR.BITMAP.DRAW Screen2[321], BmpPtr11, 0, 0
PtrBitmap11 = 321
   
! Draw Btn10 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen3[322], 25, 25, 177, 125
GR.COLOR 255, 255, 255, 0, 1
GR.RECT Screen3[323], 26, 26, 176, 124
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen3[324], 101, 84, "BEND 1"
TxtBtn10 = 324
   
! Draw Btn11 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen3[325], 190, 25, 342, 125
GR.COLOR 255, 255, 255, 0, 1
GR.RECT Screen3[326], 191, 26, 341, 124
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen3[327], 266, 84, "BEND 2"
TxtBtn11 = 327
   
! Draw Btn12 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen3[328], 355, 25, 507, 125
GR.COLOR 255, 255, 255, 0, 1
GR.RECT Screen3[329], 356, 26, 506, 124
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen3[330], 431, 84, "BEND 3"
TxtBtn12 = 330
   
! Draw Btn13 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen3[331], 520, 25, 672, 125
GR.COLOR 255, 255, 255, 0, 1
GR.RECT Screen3[332], 521, 26, 671, 124
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen3[333], 596, 84, "BEND 4"
TxtBtn13 = 333
   
! Draw Btn14 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen3[334], 685, 25, 837, 125
GR.COLOR 255, 255, 255, 0, 1
GR.RECT Screen3[335], 686, 26, 836, 124
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen3[336], 761, 84, "BEND 5"
TxtBtn14 = 336
   
! Draw Btn15 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen3[337], 850, 25, 1002, 125
GR.COLOR 255, 255, 255, 0, 1
GR.RECT Screen3[338], 851, 26, 1001, 124
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen3[339], 926, 84, "BEND 6"
TxtBtn15 = 339
   
! Draw Btn16 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen3[340], 25, 150, 177, 250
GR.COLOR 255, 255, 255, 0, 1
GR.RECT Screen3[341], 26, 151, 176, 249
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen3[342], 101, 209, "BEND 7"
TxtBtn16 = 342
   
! Draw Btn17 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen3[343], 190, 150, 342, 250
GR.COLOR 255, 255, 255, 0, 1
GR.RECT Screen3[344], 191, 151, 341, 249
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen3[345], 266, 209, "BEND 8"
TxtBtn17 = 345
   
! Draw Btn18 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen3[346], 355, 150, 507, 250
GR.COLOR 255, 255, 255, 0, 1
GR.RECT Screen3[347], 356, 151, 506, 249
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen3[348], 431, 209, "BEND 9"
TxtBtn18 = 348
   
! Draw Btn19 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen3[349], 520, 150, 672, 250
GR.COLOR 255, 255, 255, 0, 1
GR.RECT Screen3[350], 521, 151, 671, 249
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen3[351], 596, 209, "BEND 10"
TxtBtn19 = 351
   
! Draw Btn20 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen3[352], 685, 150, 837, 250
GR.COLOR 255, 255, 255, 0, 1
GR.RECT Screen3[353], 686, 151, 836, 249
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen3[354], 761, 209, "BEND 11"
TxtBtn20 = 354
   
! Draw Btn21 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen3[355], 850, 150, 1002, 250
GR.COLOR 255, 255, 255, 0, 1
GR.RECT Screen3[356], 851, 151, 1001, 249
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen3[357], 926, 209, "BEND 12"
TxtBtn21 = 357
   
! Draw Btn22 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen3[358], 25, 275, 177, 375
GR.COLOR 255, 255, 255, 0, 1
GR.RECT Screen3[359], 26, 276, 176, 374
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen3[360], 101, 334, "BEND 13"
TxtBtn22 = 360
   
! Draw Btn23 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen3[361], 190, 275, 342, 375
GR.COLOR 255, 255, 255, 0, 1
GR.RECT Screen3[362], 191, 276, 341, 374
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen3[363], 266, 334, "BEND 14"
TxtBtn23 = 363
   
! Draw Btn24 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen3[364], 355, 275, 507, 375
GR.COLOR 255, 255, 255, 0, 1
GR.RECT Screen3[365], 356, 276, 506, 374
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen3[366], 431, 334, "BEND 15"
TxtBtn24 = 366
   
! Draw Btn25 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen3[367], 520, 275, 672, 375
GR.COLOR 255, 255, 255, 0, 1
GR.RECT Screen3[368], 521, 276, 671, 374
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen3[369], 596, 334, "BEND 16"
TxtBtn25 = 369
   
! Draw Btn26 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen3[370], 685, 275, 837, 375
GR.COLOR 255, 255, 255, 0, 1
GR.RECT Screen3[371], 686, 276, 836, 374
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen3[372], 761, 334, "BEND 17"
TxtBtn26 = 372
   
! Draw Btn27 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen3[373], 850, 275, 1002, 375
GR.COLOR 255, 255, 255, 0, 1
GR.RECT Screen3[374], 851, 276, 1001, 374
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen3[375], 926, 334, "BEND 18"
TxtBtn27 = 375
   
! Draw TxtLine4 ===================================
GR.COLOR 255, 0, 255, 0, 1
GR.TEXT.SIZE 40
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen1[376], 105, 425, "Bend #"
TxtTxtLine4 = 376
   
! Draw TxtLine5 ===================================
GR.COLOR 255, 0, 255, 0, 1
GR.TEXT.SIZE 40
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen1[377], 855, 425, "Angle (Deg)"
TxtTxtLine5 = 377
   
! Draw Bitmap13 =====================================
GR.COLOR 255, 0, 0, 0, 1
GR.BITMAP.LOAD TmpPtr, "white_background.png"
GR.BITMAP.SCALE BmpPtr13, TmpPtr, 1024, 600, 1
GR.BITMAP.DELETE TmpPtr
GR.BITMAP.DRAW Screen4[378], BmpPtr13, 0, 0
PtrBitmap13 = 378
   
! Draw Btn28 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen4[379], 400, 20, 1000, 72
GR.COLOR 255, 181, 182, 178, 1
GR.RECT Screen4[380], 401, 21, 999, 71
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 40
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen4[381], 700, 61, "Btn28"
TxtBtn28 = 381
   
! Draw Btn29 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen4[382], 400, 85, 1000, 137
GR.COLOR 255, 181, 182, 178, 1
GR.RECT Screen4[383], 401, 86, 999, 136
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 40
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen4[384], 700, 126, "Btn29"
TxtBtn29 = 384
   
! Draw Btn30 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen4[385], 400, 150, 1000, 202
GR.COLOR 255, 181, 182, 178, 1
GR.RECT Screen4[386], 401, 151, 999, 201
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 40
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen4[387], 700, 191, "Btn30"
TxtBtn30 = 387
   
! Draw Btn31 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen4[388], 400, 215, 1000, 267
GR.COLOR 255, 181, 182, 178, 1
GR.RECT Screen4[389], 401, 216, 999, 266
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 40
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen4[390], 700, 256, "Btn31"
TxtBtn31 = 390
   
! Draw Btn32 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen4[391], 400, 280, 1000, 332
GR.COLOR 255, 181, 182, 178, 1
GR.RECT Screen4[392], 401, 281, 999, 331
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 40
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen4[393], 700, 321, "Btn32"
TxtBtn32 = 393
   
! Draw Btn33 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen4[394], 400, 345, 1000, 397
GR.COLOR 255, 181, 182, 178, 1
GR.RECT Screen4[395], 401, 346, 999, 396
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 40
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen4[396], 700, 386, "Btn33"
TxtBtn33 = 396
   
! Draw Btn34 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen4[397], 400, 410, 1000, 462
GR.COLOR 255, 181, 182, 178, 1
GR.RECT Screen4[398], 401, 411, 999, 461
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 40
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen4[399], 700, 451, "Btn34"
TxtBtn34 = 399
   
! Draw Btn35 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen4[400], 400, 475, 1000, 527
GR.COLOR 255, 181, 182, 178, 1
GR.RECT Screen4[401], 401, 476, 999, 526
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 40
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen4[402], 700, 516, "Btn35"
TxtBtn35 = 402
   
! Draw Bitmap14 =====================================
GR.COLOR 255, 0, 0, 0, 1
GR.BITMAP.LOAD TmpPtr, "Keyboard.png"
GR.BITMAP.SCALE BmpPtr14, TmpPtr, 1020, 395, 1
GR.BITMAP.DELETE TmpPtr
GR.BITMAP.DRAW Screen5[403], BmpPtr14, 2, 200
PtrBitmap14 = 403
   
! Draw TchRect1 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[404], 5, 203, 80, 280
PtrTchRect1 = 404
   
! Draw TchRect2 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[405], 84, 203, 159, 280
PtrTchRect2 = 405
   
! Draw TchRect3 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[406], 162, 203, 237, 280
PtrTchRect3 = 406
   
! Draw TchRect4 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[407], 239, 203, 314, 280
PtrTchRect4 = 407
   
! Draw TchRect5 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[408], 317, 203, 392, 280
PtrTchRect5 = 408
   
! Draw TchRect6 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[409], 395, 203, 470, 280
PtrTchRect6 = 409
   
! Draw TchRect7 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[410], 473, 203, 548, 280
PtrTchRect7 = 410
   
! Draw TchRect8 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[411], 551, 203, 626, 280
PtrTchRect8 = 411
   
! Draw TchRect9 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[412], 629, 203, 704, 280
PtrTchRect9 = 412
   
! Draw TchRect10 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[413], 708, 203, 783, 280
PtrTchRect10 = 413
   
! Draw TchRect11 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[414], 786, 203, 861, 280
PtrTchRect11 = 414
   
! Draw TchRect12 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[415], 864, 203, 939, 280
PtrTchRect12 = 415
   
! Draw TchRect13 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[416], 943, 203, 1018, 280
PtrTchRect13 = 416
   
! Draw TchRect14 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[417], 5, 283, 80, 357
PtrTchRect14 = 417
   
! Draw TchRect15 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[418], 84, 283, 159, 357
PtrTchRect15 = 418
   
! Draw TchRect16 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[419], 162, 283, 237, 357
PtrTchRect16 = 419
   
! Draw TchRect17 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[420], 239, 283, 314, 357
PtrTchRect17 = 420
   
! Draw TchRect18 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[421], 317, 283, 392, 357
PtrTchRect18 = 421
   
! Draw TchRect19 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[422], 395, 283, 470, 357
PtrTchRect19 = 422
   
! Draw TchRect20 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[423], 473, 283, 548, 357
PtrTchRect20 = 423
   
! Draw TchRect21 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[424], 552, 283, 627, 357
PtrTchRect21 = 424
   
! Draw TchRect22 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[425], 631, 283, 706, 357
PtrTchRect22 = 425
   
! Draw TchRect23 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[426], 709, 283, 784, 357
PtrTchRect23 = 426
   
! Draw TchRect24 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[427], 788, 283, 863, 357
PtrTchRect24 = 427
   
! Draw TchRect25 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[428], 865, 283, 940, 357
PtrTchRect25 = 428
   
! Draw TchRect26 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[429], 945, 283, 1020, 357
PtrTchRect26 = 429
   
! Draw TchRect27 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[430], 97, 360, 171, 435
PtrTchRect27 = 430
   
! Draw TchRect28 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[431], 175, 360, 250, 434
PtrTchRect28 = 431
   
! Draw TchRect29 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[432], 253, 360, 328, 434
PtrTchRect29 = 432
   
! Draw TchRect30 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[433], 331, 360, 406, 434
PtrTchRect30 = 433
   
! Draw TchRect31 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[434], 409, 360, 484, 434
PtrTchRect31 = 434
   
! Draw TchRect32 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[435], 488, 360, 563, 434
PtrTchRect32 = 435
   
! Draw TchRect33 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[436], 565, 360, 640, 434
PtrTchRect33 = 436
   
! Draw TchRect34 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[437], 644, 360, 719, 434
PtrTchRect34 = 437
   
! Draw TchRect35 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[438], 722, 360, 797, 434
PtrTchRect35 = 438
   
! Draw TchRect36 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[439], 800, 360, 875, 433
PtrTchRect36 = 439
   
! Draw TchRect37 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[440], 113, 439, 188, 513
PtrTchRect37 = 440
   
! Draw TchRect38 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[441], 191, 439, 266, 513
PtrTchRect38 = 441
   
! Draw TchRect39 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[442], 270, 439, 345, 513
PtrTchRect39 = 442
   
! Draw TchRect40 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[443], 348, 439, 423, 513
PtrTchRect40 = 443
   
! Draw TchRect41 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[444], 426, 439, 501, 513
PtrTchRect41 = 444
   
! Draw TchRect42 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[445], 504, 439, 579, 513
PtrTchRect42 = 445
   
! Draw TchRect43 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[446], 581, 439, 656, 513
PtrTchRect43 = 446
   
! Draw TchRect44 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[447], 878, 360, 1017, 434
PtrTchRect44 = 447
   
! Draw TchRect45 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[448], 755, 517, 1018, 591
PtrTchRect45 = 448
   
! Draw TchRect46 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[449], 173, 517, 747, 591
PtrTchRect46 = 449
   
! Draw TchRect47 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen5[450], 7, 517, 169, 591
PtrTchRect47 = 450
   
! Draw Btn36 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen5[451], 148, 32, 875, 84
GR.COLOR 255, 181, 182, 178, 1
GR.RECT Screen5[452], 149, 33, 874, 83
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 30
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen5[453], 512, 69, ""
TxtBtn36 = 453
   
! Draw Btn37 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen1[454], 270, 0, 755, 52
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen1[455], 271, 1, 754, 51
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 40
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen1[456], 513, 41, ""
TxtBtn37 = 456
   
! Draw Bitmap16 =====================================
GR.COLOR 255, 0, 0, 0, 1
GR.BITMAP.LOAD TmpPtr, "Esc_button.png"
GR.BITMAP.SCALE BmpPtr16, TmpPtr, 134, 104, 1
GR.BITMAP.DELETE TmpPtr
GR.BITMAP.DRAW Screen3[457], BmpPtr16, 25, 490
PtrBitmap16 = 457
   
! Draw Bitmap18 =====================================
GR.COLOR 255, 0, 0, 0, 1
GR.BITMAP.LOAD TmpPtr, "OK_button.png"
GR.BITMAP.SCALE BmpPtr18, TmpPtr, 131, 104, 1
GR.BITMAP.DELETE TmpPtr
GR.BITMAP.DRAW Screen2[458], BmpPtr18, 25, 490
PtrBitmap18 = 458
   
! Draw Bitmap22 =====================================
GR.COLOR 255, 0, 0, 0, 1
GR.BITMAP.LOAD TmpPtr, "File_page.png"
GR.BITMAP.SCALE BmpPtr22, TmpPtr, 1024, 551, 1
GR.BITMAP.DELETE TmpPtr
GR.BITMAP.DRAW Screen6[459], BmpPtr22, 0, 0
PtrBitmap22 = 459
   
! Draw TchRect48 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen6[460], 5, 450, 139, 546
PtrTchRect48 = 460
   
! Draw TchRect49 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen6[461], 394, 448, 583, 547
PtrTchRect49 = 461
   
! Draw TchRect50 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen6[462], 585, 449, 773, 547
PtrTchRect50 = 462
   
! Draw Btn38 =====================================
GR.COLOR 255, 255, 255, 255, 1
GR.RECT Screen6[463], 10, 20, 1015, 72
GR.COLOR 255, 255, 0, 0, 1
GR.RECT Screen6[464], 11, 21, 1014, 71
GR.COLOR 255, 255, 255, 255, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen6[465], 513, 55, "Touch Delete Again to DELETE THIS PROGRAM FILE"
TxtBtn38 = 465
   
! Draw TchRect51 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen6[466], 775, 450, 1020, 545
PtrTchRect51 = 466
   
! Draw TxtLine14 ===================================
GR.COLOR 255, 0, 0, 0, 1
GR.TEXT.SIZE 25
GR.TEXT.BOLD 1
GR.TEXT.ALIGN 2
GR.TEXT.DRAW Screen6[467], 513, 124, ""
TxtTxtLine14 = 467
   
! Draw TchRect52 Invisible Obj ==================
GR.COLOR 0, 0, 0, 0, 1
GR.RECT Screen6[468], 870, 0, 1022, 52
PtrTchRect52 = 468
   
! Draw Bitmap23 =====================================
GR.COLOR 255, 0, 0, 0, 1
GR.BITMAP.LOAD TmpPtr, "Esc_button.png"
GR.BITMAP.SCALE BmpPtr23, TmpPtr, 134, 96, 1
GR.BITMAP.DELETE TmpPtr
GR.BITMAP.DRAW Screen4[469], BmpPtr23, 5, 450
PtrBitmap23 = 469
   
GR.COLOR 0,0,0,0,0
GR.POINT Ftch, 1, 1
GoSub INITCODE
GoSub SHOWSCREEN   % Start Screen

! The Main Program Loop============================
MAIN:
GR.RENDER
DO
GR.TOUCH Tched, nnx, nny
nx = nnx / ScaleW
ny = nny / ScaleH
GoSub INTERRUPTTOUCH
UNTIL Tched
GoSub GETOWNER
GoSub CUSTOMTOUCHES
Goto MAIN

GETOWNER:
GR.MODIFY Ftch, "x", nx, "y", ny
Owner$ = ""  % Last Obj 1st to preserve Z-order
Ft = 0
GoSub CUSTOMOWNER
If Ft = 0 & ScreenIndex = 4 & GR_COLLISION(Ftch, Screen4[469]) Then
Owner$ = "Bitmap23"
GoSub ONCLICK_Bitmap23
Ft = 1
End If
If Ft = 0 & ScreenIndex = 6 & GR_COLLISION(Ftch, Screen6[468]) Then
Owner$ = "TchRect52"
GoSub ONCLICK_TchRect52
Ft = 1
End If
If Ft = 0 & ScreenIndex = 6 & GR_COLLISION(Ftch, Screen6[467]) Then
Owner$ = "TxtLine14"
% GoSub ONCLICK_TxtLine14
Ft = 1
End If
If Ft = 0 & ScreenIndex = 6 & GR_COLLISION(Ftch, Screen6[466]) Then
Owner$ = "TchRect51"
GoSub ONCLICK_TchRect51
Ft = 1
End If
If Ft = 0 & ScreenIndex = 6 & GR_COLLISION(Ftch, Screen6[463]) Then
Owner$ = "Btn38"
% GoSub ONCLICK_Btn38
Ft = 1
End If
If Ft = 0 & ScreenIndex = 6 & GR_COLLISION(Ftch, Screen6[462]) Then
Owner$ = "TchRect50"
GoSub ONCLICK_TchRect50
Ft = 1
End If
If Ft = 0 & ScreenIndex = 6 & GR_COLLISION(Ftch, Screen6[461]) Then
Owner$ = "TchRect49"
GoSub ONCLICK_TchRect49
Ft = 1
End If
If Ft = 0 & ScreenIndex = 6 & GR_COLLISION(Ftch, Screen6[460]) Then
Owner$ = "TchRect48"
GoSub ONCLICK_TchRect48
Ft = 1
End If
If Ft = 0 & ScreenIndex = 6 & GR_COLLISION(Ftch, Screen6[459]) Then
Owner$ = "Bitmap22"
% GoSub ONCLICK_Bitmap22
Ft = 1
End If
If Ft = 0 & ScreenIndex = 2 & GR_COLLISION(Ftch, Screen2[458]) Then
Owner$ = "Bitmap18"
GoSub ONCLICK_Bitmap18
Ft = 1
End If
If Ft = 0 & ScreenIndex = 3 & GR_COLLISION(Ftch, Screen3[457]) Then
Owner$ = "Bitmap16"
GoSub ONCLICK_Bitmap16
Ft = 1
End If
If Ft = 0 & ScreenIndex = 1 & GR_COLLISION(Ftch, Screen1[454]) Then
Owner$ = "Btn37"
GoSub ONCLICK_Btn37
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[451]) Then
Owner$ = "Btn36"
% GoSub ONCLICK_Btn36
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[450]) Then
Owner$ = "TchRect47"
GoSub ONCLICK_TchRect47
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[449]) Then
Owner$ = "TchRect46"
GoSub ONCLICK_TchRect46
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[448]) Then
Owner$ = "TchRect45"
GoSub ONCLICK_TchRect45
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[447]) Then
Owner$ = "TchRect44"
GoSub ONCLICK_TchRect44
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[446]) Then
Owner$ = "TchRect43"
GoSub ONCLICK_TchRect43
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[445]) Then
Owner$ = "TchRect42"
GoSub ONCLICK_TchRect42
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[444]) Then
Owner$ = "TchRect41"
GoSub ONCLICK_TchRect41
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[443]) Then
Owner$ = "TchRect40"
GoSub ONCLICK_TchRect40
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[442]) Then
Owner$ = "TchRect39"
GoSub ONCLICK_TchRect39
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[441]) Then
Owner$ = "TchRect38"
GoSub ONCLICK_TchRect38
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[440]) Then
Owner$ = "TchRect37"
GoSub ONCLICK_TchRect37
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[439]) Then
Owner$ = "TchRect36"
% GoSub ONCLICK_TchRect36
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[438]) Then
Owner$ = "TchRect35"
GoSub ONCLICK_TchRect35
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[437]) Then
Owner$ = "TchRect34"
GoSub ONCLICK_TchRect34
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[436]) Then
Owner$ = "TchRect33"
GoSub ONCLICK_TchRect33
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[435]) Then
Owner$ = "TchRect32"
GoSub ONCLICK_TchRect32
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[434]) Then
Owner$ = "TchRect31"
GoSub ONCLICK_TchRect31
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[433]) Then
Owner$ = "TchRect30"
GoSub ONCLICK_TchRect30
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[432]) Then
Owner$ = "TchRect29"
GoSub ONCLICK_TchRect29
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[431]) Then
Owner$ = "TchRect28"
GoSub ONCLICK_TchRect28
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[430]) Then
Owner$ = "TchRect27"
GoSub ONCLICK_TchRect27
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[429]) Then
Owner$ = "TchRect26"
% GoSub ONCLICK_TchRect26
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[428]) Then
Owner$ = "TchRect25"
% GoSub ONCLICK_TchRect25
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[427]) Then
Owner$ = "TchRect24"
% GoSub ONCLICK_TchRect24
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[426]) Then
Owner$ = "TchRect23"
GoSub ONCLICK_TchRect23
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[425]) Then
Owner$ = "TchRect22"
GoSub ONCLICK_TchRect22
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[424]) Then
Owner$ = "TchRect21"
GoSub ONCLICK_TchRect21
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[423]) Then
Owner$ = "TchRect20"
GoSub ONCLICK_TchRect20
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[422]) Then
Owner$ = "TchRect19"
GoSub ONCLICK_TchRect19
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[421]) Then
Owner$ = "TchRect18"
GoSub ONCLICK_TchRect18
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[420]) Then
Owner$ = "TchRect17"
GoSub ONCLICK_TchRect17
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[419]) Then
Owner$ = "TchRect16"
GoSub ONCLICK_TchRect16
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[418]) Then
Owner$ = "TchRect15"
GoSub ONCLICK_TchRect15
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[417]) Then
Owner$ = "TchRect14"
GoSub ONCLICK_TchRect14
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[416]) Then
Owner$ = "TchRect13"
% GoSub ONCLICK_TchRect13
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[415]) Then
Owner$ = "TchRect12"
GoSub ONCLICK_TchRect12
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[414]) Then
Owner$ = "TchRect11"
GoSub ONCLICK_TchRect11
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[413]) Then
Owner$ = "TchRect10"
GoSub ONCLICK_TchRect10
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[412]) Then
Owner$ = "TchRect9"
GoSub ONCLICK_TchRect9
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[411]) Then
Owner$ = "TchRect8"
GoSub ONCLICK_TchRect8
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[410]) Then
Owner$ = "TchRect7"
GoSub ONCLICK_TchRect7
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[409]) Then
Owner$ = "TchRect6"
GoSub ONCLICK_TchRect6
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[408]) Then
Owner$ = "TchRect5"
GoSub ONCLICK_TchRect5
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[407]) Then
Owner$ = "TchRect4"
GoSub ONCLICK_TchRect4
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[406]) Then
Owner$ = "TchRect3"
GoSub ONCLICK_TchRect3
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[405]) Then
Owner$ = "TchRect2"
GoSub ONCLICK_TchRect2
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[404]) Then
Owner$ = "TchRect1"
% GoSub ONCLICK_TchRect1
Ft = 1
End If
If Ft = 0 & ScreenIndex = 5 & GR_COLLISION(Ftch, Screen5[403]) Then
Owner$ = "Bitmap14"
% GoSub ONCLICK_Bitmap14
Ft = 1
End If
If Ft = 0 & ScreenIndex = 4 & GR_COLLISION(Ftch, Screen4[400]) Then
Owner$ = "Btn35"
GoSub ONCLICK_Btn35
Ft = 1
End If
If Ft = 0 & ScreenIndex = 4 & GR_COLLISION(Ftch, Screen4[397]) Then
Owner$ = "Btn34"
GoSub ONCLICK_Btn34
Ft = 1
End If
If Ft = 0 & ScreenIndex = 4 & GR_COLLISION(Ftch, Screen4[394]) Then
Owner$ = "Btn33"
GoSub ONCLICK_Btn33
Ft = 1
End If
If Ft = 0 & ScreenIndex = 4 & GR_COLLISION(Ftch, Screen4[391]) Then
Owner$ = "Btn32"
GoSub ONCLICK_Btn32
Ft = 1
End If
If Ft = 0 & ScreenIndex = 4 & GR_COLLISION(Ftch, Screen4[388]) Then
Owner$ = "Btn31"
GoSub ONCLICK_Btn31
Ft = 1
End If
If Ft = 0 & ScreenIndex = 4 & GR_COLLISION(Ftch, Screen4[385]) Then
Owner$ = "Btn30"
GoSub ONCLICK_Btn30
Ft = 1
End If
If Ft = 0 & ScreenIndex = 4 & GR_COLLISION(Ftch, Screen4[382]) Then
Owner$ = "Btn29"
GoSub ONCLICK_Btn29
Ft = 1
End If
If Ft = 0 & ScreenIndex = 4 & GR_COLLISION(Ftch, Screen4[379]) Then
Owner$ = "Btn28"
GoSub ONCLICK_Btn28
Ft = 1
End If
If Ft = 0 & ScreenIndex = 4 & GR_COLLISION(Ftch, Screen4[378]) Then
Owner$ = "Bitmap13"
% GoSub ONCLICK_Bitmap13
Ft = 1
End If
If Ft = 0 & ScreenIndex = 1 & GR_COLLISION(Ftch, Screen1[377]) Then
Owner$ = "TxtLine5"
% GoSub ONCLICK_TxtLine5
Ft = 1
End If
If Ft = 0 & ScreenIndex = 1 & GR_COLLISION(Ftch, Screen1[376]) Then
Owner$ = "TxtLine4"
% GoSub ONCLICK_TxtLine4
Ft = 1
End If
If Ft = 0 & ScreenIndex = 3 & GR_COLLISION(Ftch, Screen3[373]) Then
Owner$ = "Btn27"
GoSub ONCLICK_Btn27
Ft = 1
End If
If Ft = 0 & ScreenIndex = 3 & GR_COLLISION(Ftch, Screen3[370]) Then
Owner$ = "Btn26"
GoSub ONCLICK_Btn26
Ft = 1
End If
If Ft = 0 & ScreenIndex = 3 & GR_COLLISION(Ftch, Screen3[367]) Then
Owner$ = "Btn25"
GoSub ONCLICK_Btn25
Ft = 1
End If
If Ft = 0 & ScreenIndex = 3 & GR_COLLISION(Ftch, Screen3[364]) Then
Owner$ = "Btn24"
GoSub ONCLICK_Btn24
Ft = 1
End If
If Ft = 0 & ScreenIndex = 3 & GR_COLLISION(Ftch, Screen3[361]) Then
Owner$ = "Btn23"
GoSub ONCLICK_Btn23
Ft = 1
End If
If Ft = 0 & ScreenIndex = 3 & GR_COLLISION(Ftch, Screen3[358]) Then
Owner$ = "Btn22"
GoSub ONCLICK_Btn22
Ft = 1
End If
If Ft = 0 & ScreenIndex = 3 & GR_COLLISION(Ftch, Screen3[355]) Then
Owner$ = "Btn21"
GoSub ONCLICK_Btn21
Ft = 1
End If
If Ft = 0 & ScreenIndex = 3 & GR_COLLISION(Ftch, Screen3[352]) Then
Owner$ = "Btn20"
GoSub ONCLICK_Btn20
Ft = 1
End If
If Ft = 0 & ScreenIndex = 3 & GR_COLLISION(Ftch, Screen3[349]) Then
Owner$ = "Btn19"
GoSub ONCLICK_Btn19
Ft = 1
End If
If Ft = 0 & ScreenIndex = 3 & GR_COLLISION(Ftch, Screen3[346]) Then
Owner$ = "Btn18"
GoSub ONCLICK_Btn18
Ft = 1
End If
If Ft = 0 & ScreenIndex = 3 & GR_COLLISION(Ftch, Screen3[343]) Then
Owner$ = "Btn17"
GoSub ONCLICK_Btn17
Ft = 1
End If
If Ft = 0 & ScreenIndex = 3 & GR_COLLISION(Ftch, Screen3[340]) Then
Owner$ = "Btn16"
GoSub ONCLICK_Btn16
Ft = 1
End If
If Ft = 0 & ScreenIndex = 3 & GR_COLLISION(Ftch, Screen3[337]) Then
Owner$ = "Btn15"
GoSub ONCLICK_Btn15
Ft = 1
End If
If Ft = 0 & ScreenIndex = 3 & GR_COLLISION(Ftch, Screen3[334]) Then
Owner$ = "Btn14"
GoSub ONCLICK_Btn14
Ft = 1
End If
If Ft = 0 & ScreenIndex = 3 & GR_COLLISION(Ftch, Screen3[331]) Then
Owner$ = "Btn13"
GoSub ONCLICK_Btn13
Ft = 1
End If
If Ft = 0 & ScreenIndex = 3 & GR_COLLISION(Ftch, Screen3[328]) Then
Owner$ = "Btn12"
GoSub ONCLICK_Btn12
Ft = 1
End If
If Ft = 0 & ScreenIndex = 3 & GR_COLLISION(Ftch, Screen3[325]) Then
Owner$ = "Btn11"
GoSub ONCLICK_Btn11
Ft = 1
End If
If Ft = 0 & ScreenIndex = 3 & GR_COLLISION(Ftch, Screen3[322]) Then
Owner$ = "Btn10"
GoSub ONCLICK_Btn10
Ft = 1
End If
If Ft = 0 & ScreenIndex = 2 & GR_COLLISION(Ftch, Screen2[321]) Then
Owner$ = "Bitmap11"
% GoSub ONCLICK_Bitmap11
Ft = 1
End If
If Ft = 0 & ScreenIndex = 2 & GR_COLLISION(Ftch, Screen2[320]) Then
Owner$ = "Bitmap9"
GoSub ONCLICK_Bitmap9
Ft = 1
End If
If Ft = 0 & ScreenIndex = 2 & GR_COLLISION(Ftch, Screen2[319]) Then
Owner$ = "Bitmap8"
GoSub ONCLICK_Bitmap8
Ft = 1
End If
If Ft = 0 & ScreenIndex = 2 & GR_COLLISION(Ftch, Screen2[318]) Then
Owner$ = "Bitmap7"
GoSub ONCLICK_Bitmap7
Ft = 1
End If
If Ft = 0 & ScreenIndex = 2 & GR_COLLISION(Ftch, Screen2[317]) Then
Owner$ = "Bitmap6"
GoSub ONCLICK_Bitmap6
Ft = 1
End If
If Ft = 0 & ScreenIndex = 2 & GR_COLLISION(Ftch, Screen2[316]) Then
Owner$ = "Bitmap5"
GoSub ONCLICK_Bitmap5
Ft = 1
End If
If Ft = 0 & ScreenIndex = 2 & GR_COLLISION(Ftch, Screen2[315]) Then
Owner$ = "Bitmap4"
GoSub ONCLICK_Bitmap4
Ft = 1
End If
If Ft = 0 & ScreenIndex = 2 & GR_COLLISION(Ftch, Screen2[314]) Then
Owner$ = "Bitmap3"
GoSub ONCLICK_Bitmap3
Ft = 1
End If
If Ft = 0 & ScreenIndex = 2 & GR_COLLISION(Ftch, Screen2[313]) Then
Owner$ = "Bitmap2"
GoSub ONCLICK_Bitmap2
Ft = 1
End If
If Ft = 0 & ScreenIndex = 2 & GR_COLLISION(Ftch, Screen2[310]) Then
Owner$ = "Btn9"
% GoSub ONCLICK_Btn9
Ft = 1
End If
If Ft = 0 & ScreenIndex = 2 & GR_COLLISION(Ftch, Screen2[307]) Then
Owner$ = "Btn8"
% GoSub ONCLICK_Btn8
Ft = 1
End If
If Ft = 0 & ScreenIndex = 2 & GR_COLLISION(Ftch, Screen2[304]) Then
Owner$ = "Btn7"
% GoSub ONCLICK_Btn7
Ft = 1
End If
If Ft = 0 & ScreenIndex = 2 & GR_COLLISION(Ftch, Screen2[301]) Then
Owner$ = "Btn6"
% GoSub ONCLICK_Btn6
Ft = 1
End If
If Ft = 0 & ScreenIndex = 2 & GR_COLLISION(Ftch, Screen2[298]) Then
Owner$ = "Btn5"
% GoSub ONCLICK_Btn5
Ft = 1
End If
If Ft = 0 & ScreenIndex = 1 & GR_COLLISION(Ftch, Screen1[295]) Then
Owner$ = "Btn4"
GoSub ONCLICK_Btn4
Ft = 1
End If
If Ft = 0 & ScreenIndex = 1 & GR_COLLISION(Ftch, Screen1[292]) Then
Owner$ = "Btn3"
GoSub ONCLICK_Btn3
Ft = 1
End If
If Ft = 0 & ScreenIndex = 1 & GR_COLLISION(Ftch, Screen1[291]) Then
Owner$ = "Bitmap1"
% GoSub ONCLICK_Bitmap1
Ft = 1
End If
If Ft = 0 & ScreenIndex = 1 & GR_COLLISION(Ftch, Screen1[290]) Then
Owner$ = "TxtLine2"
% GoSub ONCLICK_TxtLine2
Ft = 1
End If
If Ft = 0 & ScreenIndex = 1 & GR_COLLISION(Ftch, Screen1[289]) Then
Owner$ = "TxtLine1"
% GoSub ONCLICK_TxtLine1
Ft = 1
End If
If Ft = 0 & ScreenIndex = 1 & GR_COLLISION(Ftch, Screen1[273]) Then
Owner$ = "RndBtn18"
GoSub ONCLICK_RndBtn18
Ft = 1
End If
If Ft = 0 & ScreenIndex = 1 & GR_COLLISION(Ftch, Screen1[257]) Then
Owner$ = "RndBtn17"
GoSub ONCLICK_RndBtn17
Ft = 1
End If
If Ft = 0 & ScreenIndex = 1 & GR_COLLISION(Ftch, Screen1[241]) Then
Owner$ = "RndBtn16"
GoSub ONCLICK_RndBtn16
Ft = 1
End If
If Ft = 0 & ScreenIndex = 1 & GR_COLLISION(Ftch, Screen1[225]) Then
Owner$ = "RndBtn15"
GoSub ONCLICK_RndBtn15
Ft = 1
End If
If Ft = 0 & ScreenIndex = 1 & GR_COLLISION(Ftch, Screen1[209]) Then
Owner$ = "RndBtn14"
GoSub ONCLICK_RndBtn14
Ft = 1
End If
If Ft = 0 & ScreenIndex = 1 & GR_COLLISION(Ftch, Screen1[193]) Then
Owner$ = "RndBtn13"
GoSub ONCLICK_RndBtn13
Ft = 1
End If
If Ft = 0 & ScreenIndex = 1 & GR_COLLISION(Ftch, Screen1[177]) Then
Owner$ = "RndBtn12"
GoSub ONCLICK_RndBtn12
Ft = 1
End If
If Ft = 0 & ScreenIndex = 1 & GR_COLLISION(Ftch, Screen1[161]) Then
Owner$ = "RndBtn11"
GoSub ONCLICK_RndBtn11
Ft = 1
End If
If Ft = 0 & ScreenIndex = 1 & GR_COLLISION(Ftch, Screen1[145]) Then
Owner$ = "RndBtn10"
GoSub ONCLICK_RndBtn10
Ft = 1
End If
If Ft = 0 & ScreenIndex = 1 & GR_COLLISION(Ftch, Screen1[129]) Then
Owner$ = "RndBtn9"
GoSub ONCLICK_RndBtn9
Ft = 1
End If
If Ft = 0 & ScreenIndex = 1 & GR_COLLISION(Ftch, Screen1[113]) Then
Owner$ = "RndBtn8"
GoSub ONCLICK_RndBtn8
Ft = 1
End If
If Ft = 0 & ScreenIndex = 1 & GR_COLLISION(Ftch, Screen1[97]) Then
Owner$ = "RndBtn7"
GoSub ONCLICK_RndBtn7
Ft = 1
End If
If Ft = 0 & ScreenIndex = 1 & GR_COLLISION(Ftch, Screen1[81]) Then
Owner$ = "RndBtn6"
GoSub ONCLICK_RndBtn6
Ft = 1
End If
If Ft = 0 & ScreenIndex = 1 & GR_COLLISION(Ftch, Screen1[65]) Then
Owner$ = "RndBtn5"
GoSub ONCLICK_RndBtn5
Ft = 1
End If
If Ft = 0 & ScreenIndex = 1 & GR_COLLISION(Ftch, Screen1[49]) Then
Owner$ = "RndBtn4"
GoSub ONCLICK_RndBtn4
Ft = 1
End If
If Ft = 0 & ScreenIndex = 1 & GR_COLLISION(Ftch, Screen1[33]) Then
Owner$ = "RndBtn3"
GoSub ONCLICK_RndBtn3
Ft = 1
End If
If Ft = 0 & ScreenIndex = 1 & GR_COLLISION(Ftch, Screen1[17]) Then
Owner$ = "RndBtn2"
GoSub ONCLICK_RndBtn2
Ft = 1
End If
If Ft = 0 & ScreenIndex = 1 & GR_COLLISION(Ftch, Screen1[1]) Then
Owner$ = "RndBtn1"
GoSub ONCLICK_RndBtn1
Ft = 1
End If
RETURN


   
INCFILES:
! INCLUDE "IncludeFile.bas"
! Include files to be in the source directory
! This label can be empty but must be present
RETURN
   
GLOBALCODE:
! When adding additional objects
! MaxArray = MaxArray + NumXtraObjs
! This label can be empty but must be present
GR.COLOR 255, 255, 0, 0, 1
  GR.PAINT.GET clRed
GR.COLOR 255, 0, 255, 0, 1
  GR.PAINT.GET clGreen
  GR.COLOR 255, 255, 255, 255, 1
  GR.PAINT.GET clWhite
RETURN
   
INITGRAPHICS:
GR.OPEN 255, 0, 0, 0, StatusB
RETURN
   
SHOWSCREEN:
GR.NEWDL Screen1[]
If StatusB Then
For i = 1 to LastItm
GR.MOVE Screen1[i], 0, StatusH/ScaleH
Next
End If
GR.RENDER
ScreenIndex = 1
RETURN
   
INITCODE:


pause 500
BT.OPEN
BT.CONNECT




let BToff = 0
let BTon = 0
let SDcntr = 0

let ClmpIn1 = 0
let ClmpIn2 = 0
let ClmpIn3 = 0
let PdIn1 = 0
let PdIn2 = 0
let PdIn3 = 0
let MndAdv1 = 0
let MndAdv2 = 0
let MndAdv3 = 0
let ClmpOut1 = 0
let ClmpOut2 = 0
let ClmpOut3 = 0
let PdOut1 = 0
let PdOut2 = 0
let PdOut3 = 0
let MndRet1 = 0
let MndRet2 = 0
let MndRet3 = 0
let BT1shot = 0
let BTcnt = 0
let Keyb$ = ""
let Cntr = 1
let Filecnt = 0
let Flistptr = 1
let Delconf = 0
let Fext$ = ".BND"

let Dpath$ = "../data/"
File.exists i, Dirpath$
If i = 0 Then
File.mkdir Dirpath$

Endif

DIM Flist$ [1000]
NoProg$ = "NO PROGRAM LOADED"
Filenme$ = NoProg$
GR.MODIFY Screen1[TxtBtn37], "text", Filenme$


Block = 20
DIM BendAngle [Block]
DIM d3 [Block]
DIM d2 [Block]
DIM d1 [Block]
DIM d0 [Block]

GoSub ClrDat

RETURN
   
CUSTOMOWNER:
! If ScreenIndex = 1 & nx > 1 & nx < 100 & ny > 1 & ny < 100 Then
! End If
! This label can be empty but must be present
RETURN
   
CUSTOMGRAPHICS:
! Drawing here, the Screen1[...] format to be followed
! This label can be empty but must be present
RETURN
   
INTERRUPTTOUCH:
! Code to do while in the touches loop
! This label can be empty but must be present
GoSub BThnd
RETURN
   
CUSTOMTOUCHES:
! Some special conditions when Tched
! This label can be empty but must be present
RETURN
   
WAITTOUCHUP:
GR.RENDER
WHILE Tched
GoSub BThnd
GR.TOUCH Tched, nnx, nny
REPEAT
RETURN
     
BtnCl:
if Base
GR.MODIFY Screen1[Base-14], "paint", Bkgrnd
GR.MODIFY Screen1[Base-13], "paint", Bkgrnd
GR.MODIFY Screen1[Base-12], "paint", Bkgrnd
GR.MODIFY Screen1[Base-11], "paint", Bkgrnd
GR.MODIFY Screen1[Base-10], "paint", Bkgrnd
GR.MODIFY Screen1[Base-9], "paint", Bkgrnd
endif
RETURN



ONCLICK_RndBtn1:
If ClmpIn1 = 0 Then
ClmpIn1 = 1 : Base = TxtRndBtn1 : Bkgrnd = clGreen
GoSub BtnCl
ClmpIn2 = 0 : Base = TxtRndBtn4 : Bkgrnd = clWhite
GoSub BtnCl
ClmpIn3 = 0 : Base = TxtRndBtn7 : Bkgrnd = clWhite
GoSub BtnCl
Endif
GoSub WAITTOUCHUP
RETURN

ONCLICK_RndBtn4:
If ClmpIn2 = 0 Then
ClmpIn1 = 0 : Base = TxtRndBtn1 : Bkgrnd = clWhite
GoSub BtnCl
ClmpIn2 = 1 : Base = TxtRndBtn4 : Bkgrnd = clGreen
GoSub BtnCl
ClmpIn3 = 0 : Base = TxtRndBtn7 : Bkgrnd = clWhite
GoSub BtnCl
Endif
GoSub WAITTOUCHUP
RETURN

ONCLICK_RndBtn7:
If ClmpIn3 = 0 Then
ClmpIn1 = 0 : Base = TxtRndBtn1 : Bkgrnd = clWhite
GoSub BtnCl
ClmpIn2 = 0 : Base = TxtRndBtn4 : Bkgrnd = clWhite
GoSub BtnCl
ClmpIn3 = 1 : Base = TxtRndBtn7 : Bkgrnd = clGreen
GoSub BtnCl
Endif
GoSub WAITTOUCHUP
RETURN

ONCLICK_RndBtn2:
If PdIn1 = 0 Then
PdIn1 = 1 : Base = TxtRndBtn2 : Bkgrnd = clGreen
GoSub BtnCl
PdIn2 = 0 : Base = TxtRndBtn5 : Bkgrnd = clWhite
GoSub BtnCl
PdIn3 = 0 : Base = TxtRndBtn8 : Bkgrnd = clWhite
GoSub BtnCl
Endif
GoSub WAITTOUCHUP
RETURN

ONCLICK_RndBtn5:
If PdIn2 = 0 Then
PdIn1 = 0 : Base = TxtRndBtn2 : Bkgrnd = clWhite
GoSub BtnCl
PdIn2 = 1 : Base = TxtRndBtn5 : Bkgrnd = clGreen
GoSub BtnCl
PdIn3 = 0 : Base = TxtRndBtn8 : Bkgrnd = clWhite
GoSub BtnCl
Endif
GoSub WAITTOUCHUP
RETURN

ONCLICK_RndBtn8:
If PdIn3 = 0 Then
PdIn1 = 0 : Base = TxtRndBtn2 : Bkgrnd = clWhite
GoSub BtnCl
PdIn2 = 0 : Base = TxtRndBtn5 : Bkgrnd = clWhite
GoSub BtnCl
PdIn3 = 1 : Base = TxtRndBtn8 : Bkgrnd = clGreen
GoSub BtnCl
Endif
GoSub WAITTOUCHUP
RETURN

ONCLICK_RndBtn3:
If MndAdv1 = 0 Then
MndAdv1 = 1 : Base = TxtRndBtn3 : Bkgrnd = clGreen
GoSub BtnCl
MndAdv2 = 0 : Base = TxtRndBtn6 : Bkgrnd = clWhite
GoSub BtnCl
MndAdv3 = 0 : Base = TxtRndBtn9 : Bkgrnd = clWhite
GoSub BtnCl
Endif
GoSub WAITTOUCHUP
RETURN

ONCLICK_RndBtn6:
If MndAdv2 = 0 Then
MndAdv1 = 0 : Base = TxtRndBtn3 : Bkgrnd = clWhite
GoSub BtnCl
MndAdv2 = 1 : Base = TxtRndBtn6 : Bkgrnd = clGreen
GoSub BtnCl
MndAdv3 = 0 : Base = TxtRndBtn9 : Bkgrnd = clWhite
GoSub BtnCl
Endif
GoSub WAITTOUCHUP
RETURN

ONCLICK_RndBtn9:
If MndAdv3 = 0 Then
MndAdv1 = 0 : Base = TxtRndBtn3 : Bkgrnd = clWhite
GoSub BtnCl
MndAdv2 = 0 : Base = TxtRndBtn6 : Bkgrnd = clWhite
GoSub BtnCl
MndAdv3 = 1 : Base = TxtRndBtn9 : Bkgrnd = clGreen
GoSub BtnCl
Endif
GoSub WAITTOUCHUP
RETURN

ONCLICK_RndBtn10:
If ClmpOut1 = 0 Then
ClmpOut1 = 1 : Base = TxtRndBtn10 : Bkgrnd = clGreen
GoSub BtnCl
ClmpOut2 = 0 : Base = TxtRndBtn13 : Bkgrnd = clWhite
GoSub BtnCl
ClmpOut3 = 0 : Base = TxtRndBtn16 : Bkgrnd = clWhite
GoSub BtnCl
Endif
GoSub WAITTOUCHUP
RETURN

ONCLICK_RndBtn13:
If ClmpOut2 = 0 Then
ClmpOut1 = 0 : Base = TxtRndBtn10 : Bkgrnd = clWhite
GoSub BtnCl
ClmpOut2 = 1 : Base = TxtRndBtn13 : Bkgrnd = clGreen
GoSub BtnCl
ClmpOut3 = 0 : Base = TxtRndBtn16 : Bkgrnd = clWhite
GoSub BtnCl
Endif
GoSub WAITTOUCHUP
RETURN

ONCLICK_RndBtn16:
If ClmpOut3 = 0 Then
ClmpOut1 = 0 : Base = TxtRndBtn10 : Bkgrnd = clWhite
GoSub BtnCl
ClmpOut2 = 0 : Base = TxtRndBtn13 : Bkgrnd = clWhite
GoSub BtnCl
ClmpOut3 = 1 : Base = TxtRndBtn16 : Bkgrnd = clGreen
GoSub BtnCl
Endif
GoSub WAITTOUCHUP
RETURN

ONCLICK_RndBtn11:
If PdOut1 = 0 Then
PdOut1 = 1 : Base = TxtRndBtn11 : Bkgrnd = clGreen
GoSub BtnCl
PdOut2 = 0 : Base = TxtRndBtn14 : Bkgrnd = clWhite
GoSub BtnCl
PdOut3 = 0 : Base = TxtRndBtn17 : Bkgrnd = clWhite
GoSub BtnCl
Endif

GoSub WAITTOUCHUP
RETURN

ONCLICK_RndBtn14:
If PdOut2 = 0 Then
PdOut1 = 0 : Base = TxtRndBtn11 : Bkgrnd = clWhite
GoSub BtnCl
PdOut2 = 1 : Base = TxtRndBtn14 : Bkgrnd = clGreen
GoSub BtnCl
PdOut3 = 0 : Base = TxtRndBtn17 : Bkgrnd = clWhite
GoSub BtnCl
Endif
GoSub WAITTOUCHUP
RETURN

ONCLICK_RndBtn17:
If PdOut3 = 0 Then
PdOut1 = 0 : Base = TxtRndBtn11 : Bkgrnd = clWhite
GoSub BtnCl
PdOut2 = 0 : Base = TxtRndBtn14 : Bkgrnd = clWhite
GoSub BtnCl
PdOut3 = 1 : Base = TxtRndBtn17 : Bkgrnd = clGreen
GoSub BtnCl
Endif
GoSub WAITTOUCHUP
RETURN

ONCLICK_RndBtn12:
If MndRet1 = 0 Then
MndRet1 = 1 : Base = TxtRndBtn12 : Bkgrnd = clGreen
GoSub BtnCl
MndRet2 = 0 : Base = TxtRndBtn15 : Bkgrnd = clWhite
GoSub BtnCl
MndRet3 = 0 : Base = TxtRndBtn18 : Bkgrnd = clWhite
GoSub BtnCl
Endif
GoSub WAITTOUCHUP
RETURN

ONCLICK_RndBtn15:
If MndRet2 = 0 Then
MndRet1 = 0 : Base = TxtRndBtn12 : Bkgrnd = clWhite
GoSub BtnCl
MndRet2 = 1 : Base = TxtRndBtn15 : Bkgrnd = clGreen
GoSub BtnCl
MndRet3 = 0 : Base = TxtRndBtn18 : Bkgrnd = clWhite
GoSub BtnCl
Endif
GoSub WAITTOUCHUP
RETURN

ONCLICK_RndBtn18:
If MndRet3 = 0 Then
MndRet1 = 0 : Base = TxtRndBtn12 : Bkgrnd = clWhite
GoSub BtnCl
MndRet2 = 0 : Base = TxtRndBtn15 : Bkgrnd = clWhite
GoSub BtnCl
MndRet3 = 1 : Base = TxtRndBtn18 : Bkgrnd = clGreen
GoSub BtnCl
Endif
GoSub WAITTOUCHUP
RETURN
   

BThnd:

BT.status s
If s = 3 Then
If BTon = 0
BTon = 1
Gr.hide PtrBitmap1
Gr.hide PtrBitmap11
Gr.Render
EndIf

bt.read.ready rr
if rr
accum$=""

do
bt.read.bytes resp$
accum$ = accum$ + resp$
bt.read.ready rr
until rr = 0

datlen = len(accum$)

for i = 1 to datlen

Sw.begin mid$(accum$,i,1)

Sw.case chr$(10)
GoSub Assign
Sw.break
Sw.case chr$(13)
gosub Assign
Sw.break
Sw.case "P"
slct = 1
Sw.break
Sw.case "I"
slct = 2
Sw.break
Sw.case "O"
slct = 3
Sw.break
Sw.case "-"
target$ = "-"
Sw.break
Sw.case "0"
target$ = target$ + "0"
Sw.break
Sw.case "1"
target$ = target$ + "1"
Sw.break
Sw.case "2"
target$ = target$ + "2"
Sw.break
Sw.case "3"
target$ = target$ + "3"
Sw.break
Sw.case "4"
target$ = target$ + "4"
Sw.break
Sw.case "5"
target$ = target$ + "5"
Sw.break
Sw.case "6"
target$ = target$ + "6"
Sw.break
Sw.case "7"
target$ = target$ + "7"
Sw.break
Sw.case "8"
target$ = target$ + "8"
Sw.break
Sw.case "9"
target$ = target$ + "9"
Sw.break
Sw.case "?"
slct = 100
Sw.break
Sw.case ":"
slct = 101
Sw.break

Sw.default

Sw.end

next
Else
Gosub SendData
EndIf
Else

BTcnt = BTcnt + 1
If BTcnt = 500
BTcnt = 0
BTon = 0
Gr.show.toggle PtrBitmap1
Gr.show.toggle PtrBitmap11
Gr.Render
EndIf

EndIf
RETURN

ONCLICK_Btn4:
GR.GET.VALUE Screen1[TxtBtn4], "text", Display$
lngth = Len(Display$)
GR.MODIFY Screen2[TxtBtn5], "text", "0"
GR.MODIFY Screen2[TxtBtn7], "text", "0"
GR.MODIFY Screen2[TxtBtn8], "text", "0"
GR.MODIFY Screen2[TxtBtn9], "text", "0"

GR.MODIFY Screen2[TxtBtn5], "text", Mid$(Display$, lngth, 1)
GR.MODIFY Screen2[TxtBtn7], "text", Mid$(Display$, lngth-2, 1)


If lngth > 3 Then
GR.MODIFY Screen2[TxtBtn8], "text", Mid$(Display$, lngth-3, 1)
Endif

If lngth > 4 Then
GR.MODIFY Screen2[TxtBtn9], "text", Mid$(Display$, lngth-4, 1)
Endif

Gr.NewDL Screen2[]
ScreenIndex = 2
GoSub WAITTOUCHUP
RETURN

ONCLICK_RndBtn28:
Gr.NewDL Screen1[]
ScreenIndex = 1
GoSub WAITTOUCHUP
RETURN

ONCLICK_Bitmap10:
Gr.NewDL Screen1[]
ScreenIndex = 1
GoSub WAITTOUCHUP
RETURN

ONCLICK_Bitmap3:
GR.GET.VALUE Screen2[TxtBtn8], "text", Display$
d2 [Block] = Val(Display$) + 1
If d2 [Block] > 9 Then d2 [Block] = 0
BendAngle [Block] = (d3 [Block] *100) + (d2 [Block] *10) + d1 [Block] + (d0 [Block] * 0.1)
GR.MODIFY Screen2[TxtBtn8], "text", Int$(d2 [Block])
GR.MODIFY Screen1[TxtBtn4], "text", Int$(BendAngle [Block]) + "." + Int$(d0 [Block])
dmc$="BA"+Str$(BendAngle [Block])+"BL"+str$(Block)
GoSub WAITTOUCHUP
RETURN

ONCLICK_Bitmap7:
GR.GET.VALUE Screen2[TxtBtn8], "text", Display$
d2 [Block] = Val(Display$) - 1
If d2 [Block] < 0 Then d2 [Block] = 9
BendAngle [Block] = (d3 [Block] *100) + (d2 [Block] *10) + d1 [Block] + (d0 [Block] * 0.1)
GR.MODIFY Screen2[TxtBtn8], "text", Int$(d2 [Block])
GR.MODIFY Screen1[TxtBtn4], "text", Int$(BendAngle [Block]) + "." + Int$(d0 [Block])
dmc$="BA"+Str$(BendAngle [Block])+"BL"+str$(Block)
GoSub WAITTOUCHUP
RETURN

ONCLICK_Bitmap2:
GR.GET.VALUE Screen2[TxtBtn9], "text", Display$
d3 [Block] = Val(Display$) + 1
If d3 [Block] > 1 Then d3 [Block] = 0
BendAngle [Block] = (d3 [Block] *100) + (d2 [Block] *10) + d1 [Block] + (d0 [Block] * 0.1)
GR.MODIFY Screen2[TxtBtn9], "text", Int$(d3 [Block])
GR.MODIFY Screen1[TxtBtn4], "text", Int$(BendAngle [Block]) + "." + Int$(d0 [Block])
dmc$="BA"+Str$(BendAngle [Block])+"BL"+str$(Block)
GoSub WAITTOUCHUP
RETURN

ONCLICK_Bitmap6:
GR.GET.VALUE Screen2[TxtBtn9], "text", Display$
d3 [Block] = Val(Display$) - 1
If d3 [Block] < 0 Then d3 [Block] = 1
BendAngle [Block] = (d3 [Block] *100) + (d2 [Block] *10) + d1 [Block] + (d0 [Block] * 0.1)
GR.MODIFY Screen2[TxtBtn9], "text", Int$(d3 [Block])
GR.MODIFY Screen1[TxtBtn4], "text", Int$(BendAngle [Block]) + "." + Int$(d0 [Block])
dmc$="BA"+Str$(BendAngle [Block])+"BL"+str$(Block)
GoSub WAITTOUCHUP
RETURN

ONCLICK_Bitmap5:
GR.GET.VALUE Screen2[TxtBtn5], "text", Display$
d0 [Block] = Val(Display$) + 1
If d0 [Block] > 9 Then d0 [Block] = 0
BendAngle [Block] = (d3 [Block] *100) + (d2 [Block] *10) + d1 [Block] + (d0 [Block] * 0.1)
GR.MODIFY Screen2[TxtBtn5], "text", Int$(d0 [Block])
GR.MODIFY Screen1[TxtBtn4], "text", Int$(BendAngle [Block]) + "." + Int$(d0 [Block])
dmc$="BA"+Str$(BendAngle [Block])+"BL"+str$(Block)
GoSub WAITTOUCHUP
RETURN

ONCLICK_Bitmap9:
GR.GET.VALUE Screen2[TxtBtn5], "text", Display$
d0 [Block] = Val(Display$) - 1
If d0 [Block] < 0 Then d0 [Block] = 9
BendAngle [Block] = (d3 [Block] *100) + (d2 [Block] *10) + d1 [Block] + (d0 [Block] * 0.1)
GR.MODIFY Screen2[TxtBtn5], "text", Int$(d0 [Block])
GR.MODIFY Screen1[TxtBtn4], "text", Int$(BendAngle [Block]) + "." + Int$(d0 [Block])
dmc$="BA"+Str$(BendAngle [Block])+"BL"+str$(Block)
GoSub WAITTOUCHUP
RETURN


ONCLICK_Bitmap4:
GR.GET.VALUE Screen2[TxtBtn7], "text", Display$
d1 [Block] = Val(Display$) + 1
If d1 [Block] > 9 Then d1 [Block] = 0
BendAngle [Block] = (d3 [Block] *100) + (d2 [Block] *10) + d1 [Block] + (d0 [Block] * 0.1)
GR.MODIFY Screen2[TxtBtn7], "text", Int$(d1 [Block])
GR.MODIFY Screen1[TxtBtn4], "text", Int$(BendAngle [Block]) + "." + Int$(d0 [Block])
dmc$="BA"+Str$(BendAngle [Block])+"BL"+str$(Block)
GoSub WAITTOUCHUP
RETURN

ONCLICK_Bitmap8:
GR.GET.VALUE Screen2[TxtBtn7], "text", Display$
d1 [Block] = Val(Display$) - 1
If d1 [Block] < 0 Then d1 [Block] = 9
BendAngle [Block] = (d3 [Block] *100) + (d2 [Block] *10) + d1 [Block] + (d0 [Block] * 0.1)
GR.MODIFY Screen2[TxtBtn7], "text", Int$(d1 [Block])
GR.MODIFY Screen1[TxtBtn4], "text", Int$(BendAngle [Block]) + "." + Int$(d0 [Block])
dmc$="BA"+Str$(BendAngle [Block])+"BL"+str$(Block)
GoSub WAITTOUCHUP
RETURN

ONCLICK_Btn3:
! GR.GET.VALUE Screen1[TxtBtn4], "text", Display$
! lngth = Len(Display$)
! GR.MODIFY Screen1[TxtBtn3], "text", Int$(lngth)
! GoSub WAITTOUCHUP
Gr.NewDL Screen3[]
ScreenIndex = 3
GoSub WAITTOUCHUP
RETURN

ONCLICK_Bitmap12:
Gr.NewDL Screen1[]
ScreenIndex = 1
GoSub WAITTOUCHUP
RETURN

ONCLICK_Btn10:
Block = 1
GR.MODIFY Screen1[TxtBtn3], "text", Int$(Block)
GR.MODIFY Screen1[TxtBtn4], "text", Str$(BendAngle [Block])
Gr.NewDL Screen1[]
ScreenIndex = 1
GoSub WAITTOUCHUP
RETURN

ONCLICK_Btn11:
Block = 2
GR.MODIFY Screen1[TxtBtn3], "text", Int$(Block)
GR.MODIFY Screen1[TxtBtn4], "text", Str$(BendAngle [Block])
Gr.NewDL Screen1[]
ScreenIndex = 1
GoSub WAITTOUCHUP
RETURN

ONCLICK_Btn12:
Block = 3
GR.MODIFY Screen1[TxtBtn3], "text", Int$(Block)
GR.MODIFY Screen1[TxtBtn4], "text", Str$(BendAngle [Block])
Gr.NewDL Screen1[]
ScreenIndex = 1
GoSub WAITTOUCHUP
RETURN

ONCLICK_Btn13:
Block = 4
GR.MODIFY Screen1[TxtBtn3], "text", Int$(Block)
GR.MODIFY Screen1[TxtBtn4], "text", Str$(BendAngle [Block])
Gr.NewDL Screen1[]
ScreenIndex = 1
GoSub WAITTOUCHUP
RETURN

ONCLICK_Btn14:
Block = 5
GR.MODIFY Screen1[TxtBtn3], "text", Int$(Block)
GR.MODIFY Screen1[TxtBtn4], "text", Str$(BendAngle [Block])
Gr.NewDL Screen1[]
ScreenIndex = 1
GoSub WAITTOUCHUP
RETURN

ONCLICK_Btn15:
Block = 6
GR.MODIFY Screen1[TxtBtn3], "text", Int$(Block)
GR.MODIFY Screen1[TxtBtn4], "text", Str$(BendAngle [Block])
Gr.NewDL Screen1[]
ScreenIndex = 1
GoSub WAITTOUCHUP
RETURN

ONCLICK_Btn16:
Block = 7
GR.MODIFY Screen1[TxtBtn3], "text", Int$(Block)
GR.MODIFY Screen1[TxtBtn4], "text", Str$(BendAngle [Block])
Gr.NewDL Screen1[]
ScreenIndex = 1
GoSub WAITTOUCHUP
RETURN

ONCLICK_Btn17:
Block = 8
GR.MODIFY Screen1[TxtBtn3], "text", Int$(Block)
GR.MODIFY Screen1[TxtBtn4], "text", Str$(BendAngle [Block])
Gr.NewDL Screen1[]
ScreenIndex = 1
GoSub WAITTOUCHUP
RETURN

ONCLICK_Btn18:
Block = 9
GR.MODIFY Screen1[TxtBtn3], "text", Int$(Block)
GR.MODIFY Screen1[TxtBtn4], "text", Str$(BendAngle [Block])
Gr.NewDL Screen1[]
ScreenIndex = 1
GoSub WAITTOUCHUP
RETURN

ONCLICK_Btn19:
Block = 10
GR.MODIFY Screen1[TxtBtn3], "text", Int$(Block)
GR.MODIFY Screen1[TxtBtn4], "text", Str$(BendAngle [Block])
Gr.NewDL Screen1[]
ScreenIndex = 1
GoSub WAITTOUCHUP
RETURN

ONCLICK_Btn20:
Block = 11
GR.MODIFY Screen1[TxtBtn3], "text", Int$(Block)
GR.MODIFY Screen1[TxtBtn4], "text", Str$(BendAngle [Block])
Gr.NewDL Screen1[]
ScreenIndex = 1
GoSub WAITTOUCHUP
RETURN

ONCLICK_Btn21:
Block = 12
GR.MODIFY Screen1[TxtBtn3], "text", Int$(Block)
GR.MODIFY Screen1[TxtBtn4], "text", Str$(BendAngle [Block])
Gr.NewDL Screen1[]
ScreenIndex = 1
GoSub WAITTOUCHUP
RETURN

ONCLICK_Btn22:
Block = 13
GR.MODIFY Screen1[TxtBtn3], "text", Int$(Block)
GR.MODIFY Screen1[TxtBtn4], "text", Str$(BendAngle [Block])
Gr.NewDL Screen1[]
ScreenIndex = 1
GoSub WAITTOUCHUP
RETURN

ONCLICK_Btn23:
Block = 14
GR.MODIFY Screen1[TxtBtn3], "text", Int$(Block)
GR.MODIFY Screen1[TxtBtn4], "text", Str$(BendAngle [Block])
Gr.NewDL Screen1[]
ScreenIndex = 1
GoSub WAITTOUCHUP
RETURN

ONCLICK_Btn24:
Block = 15
GR.MODIFY Screen1[TxtBtn3], "text", Int$(Block)
GR.MODIFY Screen1[TxtBtn4], "text", Str$(BendAngle [Block])
Gr.NewDL Screen1[]
ScreenIndex = 1
GoSub WAITTOUCHUP
RETURN

ONCLICK_Btn25:
Block = 16
GR.MODIFY Screen1[TxtBtn3], "text", Int$(Block)
GR.MODIFY Screen1[TxtBtn4], "text", Str$(BendAngle [Block])
Gr.NewDL Screen1[]
ScreenIndex = 1
GoSub WAITTOUCHUP
RETURN

ONCLICK_Btn26:
Block = 17
GR.MODIFY Screen1[TxtBtn3], "text", Int$(Block)
GR.MODIFY Screen1[TxtBtn4], "text", Str$(BendAngle [Block])
Gr.NewDL Screen1[]
ScreenIndex = 1
GoSub WAITTOUCHUP
RETURN

ONCLICK_Btn27:
Block = 18
GR.MODIFY Screen1[TxtBtn3], "text", Int$(Block)
GR.MODIFY Screen1[TxtBtn4], "text", Str$(BendAngle [Block])
Gr.NewDL Screen1[]
ScreenIndex = 1
GoSub WAITTOUCHUP
RETURN

ONCLICK_RndBtn29:

GoSub WAITTOUCHUP
RETURN

ONCLICK_RndBtn30:
! File Load
TEXT.OPEN r, file_number, "HY_Bend.txt"

For i = 1 to 18
Text.readln file_number, tmp$
BendAngle [i] = Val(Right$(tmp$,5))
Next

Text.readln file_number, tmp$
Block = Val(Right$(tmp$,3))

TEXT.CLOSE file_number
GR.MODIFY Screen1[TxtBtn3], "text", Int$(Block)
GR.MODIFY Screen1[TxtBtn4], "text", Str$(BendAngle [Block])
Gr.NewDL Screen4[]
ScreenIndex = 4
GoSub WAITTOUCHUP
RETURN



ONCLICK_Btn28:
If Len(Flist$[Flistptr]) > 0 Then
Filenme$ = Flist$[Flistptr]
Gosub Loadfile
GR.MODIFY Screen1[TxtBtn37], "text", Filenme$
GR.MODIFY Screen5[TxtBtn36], "text", Filenme$
Gr.NewDL Screen1[]
ScreenIndex = 1
Endif
GoSub WAITTOUCHUP
RETURN


ONCLICK_TchRect47:
Gr.NewDL Screen1[]
ScreenIndex = 1
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect2:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "1"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect3:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "2"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect4:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "3"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect5:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "4"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect6:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "5"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect7:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "6"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect8:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "7"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect9:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "8"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect10:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "9"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect11:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "0"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect12:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "-"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect14:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "Q"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect15:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "W"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect16:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "E"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect17:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "R"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect18:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "T"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect19:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "Y"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect20:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "U"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect21:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "I"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect22:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "O"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect23:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "P"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect27:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "A"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect28:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "S"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect29:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "D"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect30:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "F"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect31:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "G"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect32:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "H"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect33:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "J"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect34:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "K"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect35:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "L"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect37:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "Z"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect38:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "X"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect39:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "C"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect40:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "V"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect41:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "B"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect42:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "N"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect43:
If Len(Keyb$) < 16 Then Keyb$ = Keyb$ + "M"
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect45:

If Keyb$ = NoProg$ Then Keyb$ = ""
If Len(Keyb$) > 0 Then
Keyb$ = Left$ (Keyb$,-1)
Endif
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect44:
If Len(Keyb$) > 0 Then
Filenme$ = Keyb$
GoSub Savefile
Endif
GR.MODIFY Screen1[TxtBtn37], "text", Filenme$
Gr.NewDL Screen1[]
ScreenIndex = 1
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect46:
If Len(Keyb$) > 0 Then
Keyb$ = Keyb$ + " "
GR.MODIFY Screen5[TxtBtn36], "text", Keyb$
Endif
GoSub WAITTOUCHUP
RETURN

ONCLICK_Btn37:
Delconf = 0
Gr.NewDL Screen6[]
ScreenIndex = 6
Gr.hide Screen6[TxtBtn38]
Gr.hide  Screen6[TxtBtn38-1]
GR.MODIFY Screen6[TxtTxtLine14], "text", "Active: " + Filenme$
GoSub WAITTOUCHUP
RETURN

ONCLICK_Bitmap17:
Gr.NewDL Screen1[]
ScreenIndex = 1
GoSub WAITTOUCHUP
RETURN

ONCLICK_Bitmap16:
Gr.NewDL Screen1[]
ScreenIndex = 1
GoSub WAITTOUCHUP
RETURN

ONCLICK_Bitmap18:
Gr.NewDL Screen1[]
ScreenIndex = 1
GoSub WAITTOUCHUP
RETURN

ONCLICK_Bitmap22:
Gr.NewDL Screen1[]
ScreenIndex = 1
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect48:
Delconf = 0
Gr.NewDL Screen1[]
ScreenIndex = 1
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect49:
Delconf = 0
File.dir Dirpath$, Tmplist$[]
Array.length Filecnt, Tmplist$[]
Cntr = 1
For i = 1 to Filecnt
Tmp$ = Tmplist$[i]
If Right$(Tmp$,4) = Fext$ Then
Tmp$ = Left$(Tmp$,-4)
Flist$[Cntr] = Tmp$
Cntr = Cntr + 1
Endif
Next
If Cntr < 1000 Then
For i = Cntr to 1000
Flist$[i] = ""
Next
Endif

Gosub ShowFiles

Gr.NewDL Screen4[]
ScreenIndex = 4
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect50:
Delconf = 0
Keyb$ = Filenme$
GR.MODIFY Screen5[TxtBtn36], "text", Filenme$
Gr.NewDL Screen5[]
ScreenIndex = 5
GoSub WAITTOUCHUP
RETURN
   
ShowFiles:

GR.MODIFY Screen4[TxtBtn28], "text", Flist$[Flistptr]
GR.MODIFY Screen4[TxtBtn29], "text", Flist$[Flistptr+1]
GR.MODIFY Screen4[TxtBtn30], "text", Flist$[Flistptr+2]
GR.MODIFY Screen4[TxtBtn31], "text", Flist$[Flistptr+3]
GR.MODIFY Screen4[TxtBtn32], "text", Flist$[Flistptr+4]
GR.MODIFY Screen4[TxtBtn33], "text", Flist$[Flistptr+5]
GR.MODIFY Screen4[TxtBtn34], "text", Flist$[Flistptr+6]
GR.MODIFY Screen4[TxtBtn35], "text", Flist$[Flistptr+7]
Return



ONCLICK_TchRect51:
If Filenme$ = NoProg$ Then
For i = 1 to 4
Gr.show.toggle Screen6[TxtTxtLine14]
Gr.render
Pause 250
Next
Elseif Delconf = 0
Gr.show Screen6[TxtBtn38]
Gr.show  Screen6[TxtBtn38-1]
Delconf = 1
Else
GoSub Deletefile
Filenme$ = NoProg$
Delconf = 0
GR.MODIFY Screen6[TxtTxtLine14], "text", "Active: " + Filenme$
Gr.hide Screen6[TxtBtn38]
Gr.hide  Screen6[TxtBtn38-1]
GoSub ClrDat
GR.MODIFY Screen1[TxtBtn4], "text", Int$(BendAngle [Block]) + "." + Int$(d0 [Block])
GR.MODIFY Screen1[TxtBtn3], "text", Int$(Block)
Endif
GoSub WAITTOUCHUP
RETURN

ClrDat:
Block = 20
For i = 1 to Block
BendAngle [i] = 0
d3 [i] = 0
d2 [i] = 0
d1 [i] = 0
d0 [i] = 0
Next
Block = 1
RETURN

Deletefile:
File.delete exist, Dpath$ + Filenme$ + Fext$
RETURN

Loadfile:
! File Load
gosub Clrdat
TEXT.OPEN r, file_number, Dpath$ + Filenme$ + Fext$

For i = 1 to 18
Text.readln file_number, tmp$
BendAngle [i] = Val(Right$(tmp$,5))
Next

Text.readln file_number, tmp$
Block = Val(Right$(tmp$,3))

!Read Sequence

Text.readln file_number, tmp$
ClmpIn1 = Val(Right$(tmp$,3))
Text.readln file_number, tmp$
ClmpIn2 = Val(Right$(tmp$,3))
Text.readln file_number, tmp$
ClmpIn3 = Val(Right$(tmp$,3))
Text.readln file_number, tmp$
PdIn1 = Val(Right$(tmp$,3))
Text.readln file_number, tmp$
PdIn2 = Val(Right$(tmp$,3))
Text.readln file_number, tmp$
PdIn3 = Val(Right$(tmp$,3))
Text.readln file_number, tmp$
MndAdv1 = Val(Right$(tmp$,3))
Text.readln file_number, tmp$
MndAdv2 = Val(Right$(tmp$,3))
Text.readln file_number, tmp$
MndAdv3 = Val(Right$(tmp$,3))

Text.readln file_number, tmp$
ClmpOut1 = Val(Right$(tmp$,3))
Text.readln file_number, tmp$
ClmpOut2 = Val(Right$(tmp$,3))
Text.readln file_number, tmp$
ClmpOut3 = Val(Right$(tmp$,3))
Text.readln file_number, tmp$
PdOut1 = Val(Right$(tmp$,3))
Text.readln file_number, tmp$
PdOut2 = Val(Right$(tmp$,3))
Text.readln file_number, tmp$
PdOut3 = Val(Right$(tmp$,3))
Text.readln file_number, tmp$
MndRet1 = Val(Right$(tmp$,3))
Text.readln file_number, tmp$
MndRet2 = Val(Right$(tmp$,3))
Text.readln file_number, tmp$
MndRet3 = Val(Right$(tmp$,3))

TEXT.CLOSE file_number

Gosub UpDateSeq


GR.MODIFY Screen1[TxtBtn3], "text", Int$(Block)
GR.MODIFY Screen1[TxtBtn4], "text", Str$(BendAngle [Block])
Gr.NewDL Screen4[]
ScreenIndex = 4
RETURN

Savefile:
! File Save
TEXT.OPEN w, file_number, Dpath$ + Filenme$ + Fext$

For i = 1 to 18
Text.writeln file_number, "Bend# " + Int$(i) + "    " + Str$(BendAngle [i])
Next

Text.writeln file_number, "Last Active Bend# " + "    "+ Int$(Block)

Text.writeln file_number, "Clamp In #1 " + "    "+ Int$(ClmpIn1)
Text.writeln file_number, "Clamp In #2 " + "    "+ Int$(ClmpIn2)
Text.writeln file_number, "Clamp In #3 " + "    "+ Int$(ClmpIn3)

Text.writeln file_number, "Pdie In #1 " + "    "+ Int$(PdIn1)
Text.writeln file_number, "Pdie In #2 " + "    "+ Int$(PdIn2)
Text.writeln file_number, "Pdie In #3 " + "    "+ Int$(PdIn3)

Text.writeln file_number, "Mand Adv #1 " + "    "+ Int$(MndAdv1)
Text.writeln file_number, "Mand Adv #2 " + "    "+ Int$(MndAdv2)
Text.writeln file_number, "Mand Adv #3 " + "    "+ Int$(MndAdv3)

Text.writeln file_number, "Clamp Out #1 " + "    "+ Int$(ClmpOut1)
Text.writeln file_number, "Clamp Out #2 " + "    "+ Int$(ClmpOut2)
Text.writeln file_number, "Clamp Out #3 " + "    "+ Int$(ClmpOut3)

Text.writeln file_number, "Pdie Out #1 " + "    "+ Int$(PdOut1)
Text.writeln file_number, "Pdie Out #2 " + "    "+ Int$(PdOut2)
Text.writeln file_number, "Pdie Out #3 " + "    "+ Int$(PdOut3)

Text.writeln file_number, "Mand Ret #1 " + "    "+ Int$(MndRet1)
Text.writeln file_number, "Mand Ret #2 " + "    "+ Int$(MndRet2)
Text.writeln file_number, "Mand Ret #3 " + "    "+ Int$(MndRet3)


TEXT.CLOSE file_number


RETURN


ONCLICK_Btn29:
If Len(Flist$[Flistptr+1]) > 0 Then
Filenme$ = Flist$[Flistptr+1]
Gosub Loadfile
GR.MODIFY Screen1[TxtBtn37], "text", Filenme$
GR.MODIFY Screen5[TxtBtn36], "text", Filenme$
Gr.NewDL Screen1[]
ScreenIndex = 1
Endif
GoSub WAITTOUCHUP
RETURN

ONCLICK_Btn30:
If Len(Flist$[Flistptr+2]) > 0 Then
Filenme$ = Flist$[Flistptr+2]
Gosub Loadfile
GR.MODIFY Screen1[TxtBtn37], "text", Filenme$
GR.MODIFY Screen5[TxtBtn36], "text", Filenme$
Gr.NewDL Screen1[]
ScreenIndex = 1
Endif
GoSub WAITTOUCHUP
RETURN

ONCLICK_Btn31:
If Len(Flist$[Flistptr+3]) > 0 Then
Filenme$ = Flist$[Flistptr+3]
Gosub Loadfile
GR.MODIFY Screen1[TxtBtn37], "text", Filenme$
GR.MODIFY Screen5[TxtBtn36], "text", Filenme$
Gr.NewDL Screen1[]
ScreenIndex = 1
Endif
GoSub WAITTOUCHUP
RETURN

ONCLICK_Btn32:
If Len(Flist$[Flistptr+4]) > 0 Then
Filenme$ = Flist$[Flistptr+4]
Gosub Loadfile
GR.MODIFY Screen1[TxtBtn37], "text", Filenme$
GR.MODIFY Screen5[TxtBtn36], "text", Filenme$
Gr.NewDL Screen1[]
ScreenIndex = 1
Endif
GoSub WAITTOUCHUP
RETURN

ONCLICK_Btn33:
If Len(Flist$[Flistptr+5]) > 0 Then
Filenme$ = Flist$[Flistptr+5]
Gosub Loadfile
GR.MODIFY Screen1[TxtBtn37], "text", Filenme$
GR.MODIFY Screen5[TxtBtn36], "text", Filenme$
Gr.NewDL Screen1[]
ScreenIndex = 1
Endif
GoSub WAITTOUCHUP
RETURN

ONCLICK_Btn34:
If Len(Flist$[Flistptr+6]) > 0 Then
Filenme$ = Flist$[Flistptr+6]
Gosub Loadfile
GR.MODIFY Screen1[TxtBtn37], "text", Filenme$
GR.MODIFY Screen5[TxtBtn36], "text", Filenme$
Gr.NewDL Screen1[]
ScreenIndex = 1
Endif
GoSub WAITTOUCHUP
RETURN

ONCLICK_Btn35:
If Len(Flist$[Flistptr+7]) > 0 Then
Filenme$ = Flist$[Flistptr+7]
Gosub Loadfile
GR.MODIFY Screen1[TxtBtn37], "text", Filenme$
GR.MODIFY Screen5[TxtBtn36], "text", Filenme$
Gr.NewDL Screen1[]
ScreenIndex = 1
Endif
GoSub WAITTOUCHUP
RETURN

ONCLICK_TchRect52:
BT.Close
Pause 200
Exit
GoSub WAITTOUCHUP
RETURN
   
Assign:
If Len(target$)
Sw.begin slct
Sw.case 1
pos$ = target$
sw.break

Sw.case 2
ins$ = target$
sw.break

Sw.case 3
outs$ = target$
sw.break

Sw.end

Endif
rem gr.modify Screen1[TxtBtn37], "text", pos$ + " " + ins$ + " " + outs$
rem GR.RENDER
target$ = ""
slct = 0
return

SendData:
! SDcntr = SDcntr + 1
! If SDcntr = 400 Then
! dmc$="y"
! bt.write dmc$ + chr$(13)
! SDcntr = 0
! EndIf
if len(dmc$) then
bt.write dmc$ + chr$(13)
dmc$=""
endif
return


ONCLICK_Bitmap23:
Gr.NewDL Screen6[]
ScreenIndex = 6
GoSub WAITTOUCHUP
RETURN

ONCLICK_Bitmap24:
! Jog Button
! GR.MODIFY Screen1[...], "text", Display$
GoSub WAITTOUCHUP
RETURN
   
UpDateSeq:
Bkgrnd = clWhite
Base = TxtRndBtn1 : Gosub BtnCl
Base = TxtRndBtn2 : Gosub BtnCl
Base = TxtRndBtn3 : Gosub BtnCl
Base = TxtRndBtn4 : Gosub BtnCl
Base = TxtRndBtn5 : Gosub BtnCl
Base = TxtRndBtn6 : Gosub BtnCl
Base = TxtRndBtn7 : Gosub BtnCl
Base = TxtRndBtn8 : Gosub BtnCl
Base = TxtRndBtn9 : Gosub BtnCl
Base = TxtRndBtn10 : Gosub BtnCl
Base = TxtRndBtn11 : Gosub BtnCl
Base = TxtRndBtn12 : Gosub BtnCl
Base = TxtRndBtn13 : Gosub BtnCl
Base = TxtRndBtn14 : Gosub BtnCl
Base = TxtRndBtn15 : Gosub BtnCl
Base = TxtRndBtn16 : Gosub BtnCl
Base = TxtRndBtn17 : Gosub BtnCl
Base = TxtRndBtn18 : Gosub BtnCl

Bkgrnd = clGreen : Base = 0

If ClmpIn1
Base = TxtRndBtn1
elseif ClmpIn2
Base = TxtRndBtn4
elseif ClmpIn3
Base = TxtRndBtn7
endif
if Base then Gosub BtnCl

If PdIn1
Base = TxtRndBtn2
elseif PdIn2
Base = TxtRndBtn5
elseif PdIn3
Base = TxtRndBtn8
endif
if Base then Gosub BtnCl

If MndAdv1
Base = TxtRndBtn3
elseif MndAdv2
Base = TxtRndBtn6
elseif MndAdv3
Base = TxtRndBtn9
endif
if Base then Gosub BtnCl

If ClmpOut1
Base = TxtRndBtn10
elseif ClmpOut2
Base = TxtRndBtn13
elseif ClmpOut3
Base = TxtRndBtn16
endif
if Base then Gosub BtnCl

If PdOut1
Base = TxtRndBtn11
elseif PdOut2
Base = TxtRndBtn14
elseif PdOut3
Base = TxtRndBtn17
endif
if Base then Gosub BtnCl

If MndRet1
Base = TxtRndBtn12
elseif MndRet2
Base = TxtRndBtn15
elseif MndRet3
Base = TxtRndBtn18
endif
if Base then Gosub BtnCl


RETURN



   
 
CaptainBoing

Guru

Joined: 07/09/2016
Location: United Kingdom
Posts: 2170
Posted: 12:59pm 07 Sep 2021
Copy link to clipboard 
Print this post

very interesting. I have often thought about using these cheapie android tabs (sub 50GBP) for an interface but not the first clue where to start. I did an app using the MIT app factory which is the block-based visually "written" stuff. It works well but gives little flexibility beyond what modules are available.

can you recommend a tutorial? Not the language so much (that's easy from a reference) but how you actually get the code on the thing and run-able/editable. As I understand it you can either use an actual device or some kind of emulator(?)

How do you interface between the tab and the hardware? Bluetooth? Do you leave the tablet with the power lead in the USB? So many questions... can you post some pix - after you are done coz if you need to be there with a sleeping bag you haven't got time to babysit me  

I've got an ancient Google Nexus 7 which is gathering dust I could play with.

cheers

h
.
Edited 2021-09-07 23:01 by CaptainBoing
 
Tinine
Guru

Joined: 30/03/2016
Location: United Kingdom
Posts: 1646
Posted: 01:24pm 07 Sep 2021
Copy link to clipboard 
Print this post

  CaptainBoing said  very interesting. I have often thought about using these cheapie android tabs (sub 50GBP) for an interface but not the first clue where to start. I did an app using the MIT app factory which is the block-based visually "written" stuff. It works well but gives little flexibility beyond what modules are available.

can you recommend a tutorial? Not the language so much (that's easy from a reference) but how you actually get the code on the thing and run-able/editable. As I understand it you can either use an actual device or some kind of emulator(?)

How do you interface between the tab and the hardware? Bluetooth? Do you leave the tablet with the power lead in the USB? So many questions... can you post some pix - after you are done coz if you need to be there with a sleeping bag you haven't got time to babysit me  

I've got an ancient Google Nexus 7 which is gathering dust I could play with.

cheers

h
.


No problem to get you up and running painlessly. I'll list everything this evening when I get too tired to code  

Heck, do I need to shorten that code listing? I am accustomed to another forum where the "Code" window is a fixed size and independently scroll-able.
 
lizby
Guru

Joined: 17/05/2016
Location: United States
Posts: 3378
Posted: 03:13pm 07 Sep 2021
Copy link to clipboard 
Print this post

I was inspired. I pulled out an ancient Android 4.4 "Neutab" 7" tablet, installed Basic! from the Google Play Store, figured out how to get the above code into the tablet, double-tapped on it, and Basic! came up with the error message "Invalid Bitmap Pointer", "gr.bitmap.scalebmpptr1,tmpptr,45,45,1". (I'm not looking for debugging aid--just playing.)

So Basic! is running. Now I can try to figure out what to do with it. Next after some issues which went away upon retrying, I installed it on an Android 9 10" tablet, and got the same error message.

Thanks for posting--good luck with your project. It's been 48 years since I took my sleeping bag to a work site (IBM 370 Model 125, only available after work hours), though I have done over-nighters since then.

~
Edited 2021-09-08 01:21 by lizby
PicoMite, Armmite F4, SensorKits, MMBasic Hardware, Games, etc. on fruitoftheshed
 
Tinine
Guru

Joined: 30/03/2016
Location: United Kingdom
Posts: 1646
Posted: 04:46pm 07 Sep 2021
Copy link to clipboard 
Print this post

@lizby

Ah, that would be because you don't have the bitmaps. I'll attach them. They simply need to go in the "data" folder.

I use this suite of utilities to edit on the PC

The "launcher" needs to be installed on the device and the device needs to be on the same WiFi as the PC.
You edit the code on the PC and shift-F5 transfers it to the device and usually runs the code. I have just buggered something-up (I think by not ending/exiting my app correctly) and I had to launch the app from BASIC! on the device (the file transferred but didn't run). Seems OK now.

I use Bluetooth and in most cases, the tablet remains powered-up at the machine.

Some users simply use the tablet to load-up the Micromite with program data and then take it back to their desk, once the machine is making parts.
The app will auto-size for any device and so some prefer to use their Android phones.

In the code above, you can find "BT.OPEN" and "BT.CONNECT" and that's all you need.
From there, you check "BT.STATUS" and proceed as you wish.

This is when your device is talking to a BT slave. I prefer configuring the MM's Bluetooth device as the Master and with Auto-connect because then it just connects without the pop-up BT selection; go out-of and back in-to range and the communication is re-established, just like a BT headset.

I am using a RN41 BT Click module for the first time. In the past, I have used a Click RS232 and an off-the-shelf 232/Bluetooth adapter.

In the above code, I draw a lot of buttons, etc. but I won't do this again because I prefer to paint my entire UI and load as a complete bitmap (png).

Although this is an interpreter, screen-switching is instant.

It's possible to create an "apk" for distribution but this is only the interpreter bundled with other resources and your code. Doing an unzip on this apk will reveal everything.

The above code doesn't do too much:

-Touch the "No program Loaded" box to go to the files page
-Touch the "Bend#" button to select which bend
-Touch the "Angle" button to edit the angle. This is a bit flaky, sometimes. Think I've just fixed it.

-When using "Save", you will probably need to Backspace to clear the field before typing.

In my case (cheap Argos tablet), I had to install a 3rd-party file manager in order to get to the "data" folder to store the bitmaps.

Some people use Android emulators on Windows but they are quite resource hungry. I prefer running on the actual device.


Bitmaps_for_data_folder.zip


Edit: Might want to REM BT.CONNECT to run the code
Edited 2021-09-08 02:57 by Tinine
 
lizby
Guru

Joined: 17/05/2016
Location: United States
Posts: 3378
Posted: 10:32pm 07 Sep 2021
Copy link to clipboard 
Print this post

Thanks for the tips. I've downloaded the zip file, but I can't figure out how to get the files into the Basic! data directory. When I tap to unzip the files, it wants to unzip them to another app, and doesn't give me any choices.

I installed a zipper/unzipper app, and while it doesn't now try to send them to a different app, it doesn't evidently allow me to specify where the files are to go. What app would you use to unzip to a specified location. (I have to say, the Android folder layout has always been confusing to me--apps rarely tell you where they are putting stuff.)
PicoMite, Armmite F4, SensorKits, MMBasic Hardware, Games, etc. on fruitoftheshed
 
TassyJim

Guru

Joined: 07/08/2011
Location: Australia
Posts: 6283
Posted: 11:54pm 07 Sep 2021
Copy link to clipboard 
Print this post

  lizby said  Thanks for the tips. I've downloaded the zip file, but I can't figure out how to get the files into the Basic! data directory. When I tap to unzip the files, it wants to unzip them to another app, and doesn't give me any choices.

I usually connect my device to the PC and use Windows Explorer to browse the device file structure.
There was a period when Android security blocked you out of some areas but I thing that's fixed now.

I adapted MMEdit to use with Basic! a while ago but don't use the phone/tablets much. I find I need a bigger screen now.

Jim
VK7JH
MMedit
 
lizby
Guru

Joined: 17/05/2016
Location: United States
Posts: 3378
Posted: 01:07pm 08 Sep 2021
Copy link to clipboard 
Print this post

Thanks, Jim--that helps a lot. Still somewhat baffled because I could see a folder for the Basic! source on the phone, but couldn't see it on the PC. But when I managed to copy the .bas file on the phone into the source folder, that folder then showed up in Explorer on the PC. Also couldn't copy files from within a zip file in Explorer to the phone storage in Explorer--had to unzip first and then I could.

So got everything in the right place, and Tinine's program runs. It couldn't find a bluetooth device because I didn't have one set up, but got lots of pretty buttons.

Thanks for sharing this, Tinine--hope your project is advancing well.
PicoMite, Armmite F4, SensorKits, MMBasic Hardware, Games, etc. on fruitoftheshed
 
Tinine
Guru

Joined: 30/03/2016
Location: United Kingdom
Posts: 1646
Posted: 03:36pm 08 Sep 2021
Copy link to clipboard 
Print this post

@lizby

Many thanks

For Android file management, these are my favourites:





 
Tinine
Guru

Joined: 30/03/2016
Location: United Kingdom
Posts: 1646
Posted: 05:16pm 08 Sep 2021
Copy link to clipboard 
Print this post

A few graphic controls that can be loaded into Paint to build a UI. Then load into BASIC!




Graphic controls.zip
 
Print this page


To reply to this topic, you need to log in.

The Back Shed's forum code is written, and hosted, in Australia.
© JAQ Software 2025