>2D  menu 12 ( init 2 menu < F: P init Z colours d0:128+7: n@%=&0100040A:N%=0 x? X%(3000),Y%(3000),L1%(2000),L2%(2000),F1%(1000),F2%(1000) 5 DIM XT1%(2000),YT1%(2000),XT2%(2000),YT2%(2000) + iconP$(50),iconposP(50),iconlineP(50) 6 iconx1P(50),icony1P(50), iconx2P(50),icony2P(50) DPHIGH%=0:LHIGH%=0:THETA=0:XOR%=0:YOR%=0:XDEV%=0:YDEV%=0:FHIGH%=0 BXSCAL=1:YSCAL=1:CLOCK%=1:ABX%=640:ABY%=512:ABOX%=640:ABOY%=512 29,ABX%;ABY%;:14  : menu :@%=&0100040A #"Press 'M' to define Matrix" #'"Press 'A' to input Points" "'"Press 'B' to input Lines" $'"Press 'C' to correct point" #'"Press 'D' to correct line" #'"Press 'E' to append point" ""'"Press 'F' to append line" ,"'"Press 'G' to insert data" 6"'"Press 'H' to delete data" @ '"Press 'L' to Load data" J '"Press 'S' to Save data" T '"Press 'P' to List data" ^&'"Press 'I' to Initialise Data" h#'"Press 'X' to Draw Picture" r1'"Press 'Y' to Design Picture Graphically" |'"Press 'Z' to End" A$=  A$="M" matrix  A$="A" inpoint  A$="B" inline  A$="C" corpoint  A$="D" corline  A$="E" apoint  A$="F" aline  A$="G" insert  A$="H" delete  A$="L" load  A$="S" save  A$="P" list  A$="I" N%=0:  A$="X" icon_draw  A$="Y" design &% A$="Z" 0:128+7::14::: 0 menu : D: N inpoint X :'' b N%=PHIGH% l6);"X";14);"Y"' v  N%=N%+1 (N%);" : "; ""X%(N%); 11);:11:14);  ""Y%(N%) PHIGH%=PHIGH%+1   :  inline  :''  N%=LHIGH% 6);"1";14);"2"'   N%=N%+1 (N%);" : ";  ""L1%(N%); *11);:11:14); 4""L2%(N%) >LHIGH%=LHIGH%+1 H R \: f save p:''"Saving..."'' z *DIR $.MYPROG1.2D *. #''"Enter the filename : "FILE$ A=(FILE$) #A,PHIGH%,LHIGH%,FHIGH%  N% = 1 PHIGH% #A,X%(N%),Y%(N%)   N% = 1 LHIGH% #A,L1%(N%),L2%(N%)   N% = 1 FHIGH% #A,F1%(N%),F2%(N%)  #A  : $ load .:''"Loading..."'' 8 *DIR $.MYPROG1.2D B*. L#''"Enter the filename : "FILE$ VA=(FILE$) `#A,PHIGH%,LHIGH%,FHIGH% j N% = 1 PHIGH% t#A,X%(N%),Y%(N%) ~  N% = 1 LHIGH% #A,L1%(N%),L2%(N%)   N% = 1 FHIGH% #A,F1%(N%),F2%(N%)  #A  : transform = CLOCK%=1 a=(THETA):b=(THETA):c=-(THETA):d=(THETA) = CLOCK%=0 a=(THETA):b=-(THETA):c=(THETA):d=(THETA) -X1=X%(L%)-XOR%+XDEV%:Y1=Y%(L%)-YOR%+YDEV%  #XT=(((X1*a)+(Y1*b))+XOR%)*XSCAL #YT=(((X1*c)+(Y1*d))+YOR%)*YSCAL  (: 2 trans2 <= CLOCK%=1 a=(THETA):b=(THETA):c=-(THETA):d=(THETA) F= CLOCK%=0 a=(THETA):b=-(THETA):c=(THETA):d=(THETA) P/X1=F1%(N%)-XOR%+XDEV%:Y1=F2%(N%)-YOR%+YDEV% Z#XT=(((X1*a)+(Y1*b))+XOR%)*XSCAL d#YT=(((X1*c)+(Y1*d))+YOR%)*YSCAL n x:  list  :'' 7)"X";13);"Y"'  N% = 0 PHIGH% ((N%);" : ";7);X%(N%);13);Y%(N%)  ''7)"1";13);"2"'  N% = 1 LHIGH% *(N%);" : ";7);L1%(N%);13);L2%(N%)  ''7)"F1";13);"F2"'  N% = 1 FHIGH% *(N%);" : ";7);F1%(N%);13);F2%(N%)  A$=  ": ,icon_draw 6plot_iconbar @ draw Jselection T DJF ^ h: r draw | ȑ 0,0  0,0 : 0,128+7 0 : 128+7 24,0;144;1279;1023; : ȑ 640,512  69,0,0 65,XOR%,YOR%  N% = 1 LHIGH% L%=L1%(N%) transform  4,XT,YT  XT1%(N%)=XT:YT1%(N%)=YT L%=L2%(N%) transform  5,XT,YT  XT2%(N%)=XT:YT2%(N%)=YT  & FOR N%=1 TO LHIGH% 0. LINE XT1%(N%),YT1%(N%),XT2%(N%),YT2%(N%) : NEXT D FHIGH%=0 DvG N N%= 1 FHIGH% X trans2 b141,XT,YT l v : exec_change  iconumP=1 icon_edit  iconumP=2 XSCAL=1:YSCAL=1:XDEV%=0:YDEV%=0:XOR%=0:YOR%=0:ABX%=640:ABY%=512:29,ABX%;ABY%;:ABOX%=640:ABOY%=512:THETA=0:draw  iconumP=3 replace:draw ' iconumP=5 XSCAL=XSCAL*1.5:draw  iconumP=4 menu ( iconumP=6 XSCAL=XSCAL*0.75:draw ' iconumP=7 YSCAL=YSCAL*1.5:draw ( iconumP=8 YSCAL=YSCAL*0.75:draw 5 iconumP=9 XDEV%=XDEV%-50:YDEV%=YDEV%+50:draw ' iconumP=10 XDEV%=XDEV%-50:draw 6 iconumP=11 XDEV%=XDEV%-50:YDEV%=YDEV%-50:draw ' iconumP=12 YDEV%=YDEV%+50:draw  ' iconumP=13 YDEV%=YDEV%-50:draw 6 iconumP=14 XDEV%=XDEV%+50:YDEV%=YDEV%+50:draw  ' iconumP=15 XDEV%=XDEV%+50:draw *6 iconumP=16 XDEV%=XDEV%+50:YDEV%=YDEV%-50:draw 4, iconumP=17 THETA=THETA-(2*/8):draw >- iconumP=18 THETA=THETA-(2*/32):draw H- iconumP=19 THETA=THETA+(2*/32):draw R, iconumP=20 THETA=THETA+(2*/8):draw \' iconumP=21 XSCAL=(XSCAL):draw f% iconumP=22 YSCAL=-YSCAL:draw p' iconumP=23 YSCAL=(YSCAL):draw z% iconumP=24 XSCAL=-XSCAL:draw ! iconumP=25 CLOCK%=0:draw ! iconumP=26 CLOCK%=1:draw 8 iconumP=27 XSCAL=XSCAL*1.5:YSCAL=YSCAL*1.5:draw : iconumP=28 XSCAL=XSCAL*0.75:YSCAL=YSCAL*0.75:draw  :  matrix :''"Matrix menu."' S'"Press '1' to define absolute (0,0) origin";55);"(";(ABX%);",";(ABY%);")" ['"Press '2' to define absolute origin of rotation";55);"(";(ABOX%);",";(ABOY%);")" Y'"Press '3' to define relative origin of rotation";55);"(";(XOR%);",";(YOR%);")" M'"Press '4' to define X & Y scaling";55);"(";(XSCAL);",";(YSCAL);")" Q'"Press '5' to define X & Y deviations";55);"(";;(XDEV%);",";(YDEV%);")" C'"Press '6' to define Theta";55);"(";((THETA));" Degrees)" 0'"Press 'RETURN' to return to main menu"'' A$= $j A$="1" "Enter absolute (0,0) origin : "ABX%,ABY%:29,ABX%;ABY%;:ABOX%=ABOX%-ABX%:ABOY%=ABOY%-ABY% .g A$="2" "Enter absolute origin of rotation (X,Y) : "ABOX%,ABOY%:XOR%=ABOX%-ABX%:YOR%=ABOY%-ABY% 8e A$="3" "Enter relative origin of rotation (X,Y) : "XOR%,YOR%:ABOX%=XOR%+ABX%:ABOY%=YOR%+ABY% B3 A$="4" "Enter X & Y scaling : "XSCAL,YSCAL L6 A$="5" "Enter X & Y deviations : "XDEV%,YDEV% VJ A$="6" "Enter angle of rotation (Degrees) : "theta:THETA=(theta) ` A$=(13) j' t TZI ~ : apoint :'' A"Enter Number of Point where Appending is to start : "PHIGH% PHIGH%=PHIGH%-1 inpoint  : aline :'' @"Enter Number of Line where Appending is to start : "LHIGH% LHIGH%=LHIGH%-1 inline  : corpoint ( :'' 2/"Enter Number of Point to Correct : "xynum <("Enter Correct Point : "xcor,ycor'' F!X%(xynum)=xcor:Y%(xynum)=ycor P TrJ Z d: n corline x :'' ."Enter Number of Line to Correct : "xynum #"Enter Correct Line : "L1,L2'' L1%(xynum)=L1:L2%(xynum)=L2 tBJ  insert :'' *"Inserting Lines (L) or Points (P) ?" G$=  G$="L" insline  G$="P" inspoint  :  insline 0'"Insert line into which number : "inslinum $'"Enter Correct Line : "L1,L2'' "'"Inserting line..." , N% = LHIGH% inslinum -1 6'L1%(N%+1)=L1%(N%):L2%(N%+1)=L2%(N%) @ JLHIGH%=LHIGH%+1 T%L1%(inslinum)=L1:L2%(inslinum)=L2 ^ h: rinspoint |2'"Insert point into which number : "inspoinum %'"Enter Correct Point : "X1,Y1'' '"Inserting point..." ! N% = PHIGH% inspoinum -1 #X%(N%+1)=X%(N%):Y%(N%+1)=Y%(N%)  PHIGH%=PHIGH%+1 %X%(inspoinum)=X1:Y%(inspoinum)=Y1  : delete :'' )"Deleting Lines (L) or Points (P) ?" G$=  G$="L" delline  G$="P" delpoint  &: 0 delline :*'"Delete which line number : "delinum D N%= delinum LHIGH% N'L1%(N%)=L1%(N%+1):L2%(N%)=L2%(N%+1) X bLHIGH%=LHIGH%-1 l v: delpoint -'"Delete which point number : "delpoinum  N%= delpoinum PHIGH% #X%(N%)=X%(N%+1):Y%(N%)=Y%(N%+1)  PHIGH%=PHIGH%-1  : design 128+14:0::0,0 remind " PHIGH%=0 PHIGH%=1:LHIGH%=1 @%=6 .xmove=X%(PHIGH%-1):ymove=Y%(PHIGH%-1):ch=1  ȗ xnow,ynow,button,time )0,0);xnow,ynow,button,PHIGH%,LHIGH% *- xmove<>xnow ymove<>ynow ch=1 ch=0 4: > button=4 H10,0 : X%(PHIGH%-1),Y%(PHIGH%-1), xnow,ynow R=0:: >=10 \KX%(PHIGH%)=xnow:Y%(PHIGH%)=ynow:L1%(LHIGH%)=PHIGH%-1:L2%(LHIGH%)=PHIGH% fPHIGH%+=1:LHIGH%+=1 p z:  button=2 -X%(PHIGH%)=xnow:Y%(PHIGH%)=ynow:PHIGH%+=1 Ȗ 4,14 : Ȓ xnow,ynow Ȗ 4,14 : Ȓ xnow,ynow =0:: >=10  :  button=1 N%-=1:PHIGH%-=1:LHIGH%-=1 =0,7 : X%(PHIGH%-1),Y%(PHIGH%-1), X%(PHIGH%),Y%(PHIGH%) =0:: >=10  :  button=0 ch=0 $44,14 : X%(PHIGH%-1),Y%(PHIGH%-1), xmove,ymove . 8ȗ xnow,ynow,button,time B& xmove<>xnow ymove<>ynow ch=1 L ch=1 button<>0 V44,14 : X%(PHIGH%-1),Y%(PHIGH%-1), xmove,ymove ` j: t button=0 ch=1 ~Ȗ 24,14 : X%(PHIGH%-1),Y%(PHIGH%-1), xnow,ynow Ȗ 24,14 : X%(PHIGH%-1),Y%(PHIGH%-1), xnow,ynow xmove=xnow:ymove=ynow:ch=0   :  remind  69,0,0 65,XOR%,YOR% nXSCAL=1:YSCAL=1:XDEV%=0:YDEV%=0:XOR%=0:YOR%=0:ABX%=640:ABY%=512:29,ABX%;ABY%;:ABOX%=640:ABOY%=512:THETA=0  N% = 1 LHIGH% L%=L1%(N%)  transform  4,XT,YT L%=L2%(N%) (transform 2 5,XT,YT < F FHIGH%=0 DxO P N%= 1 FHIGH% Z trans2 d141,XT,YT n x :  fill FHIGH%=FHIGH%+1 71,X%(N%),Y%(N%) 141,X%(N%),Y%(N%) 70,X%(N%),Y%(N%) )F1%(FHIGH%)=X%(N%):F2%(FHIGH%)=Y%(N%)  :  replace  L%=1 PHIGH% transform X%(L%)=XT:Y%(L%)=YT   N%=1 FHIGH%  trans2 "F1%(N%)=XT:F2%(N%)=YT , 6nXSCAL=1:YSCAL=1:XDEV%=0:YDEV%=0:XOR%=0:YOR%=0:ABX%=640:ABY%=512:29,ABX%;ABY%;:ABOX%=640:ABOY%=512:THETA=0 @ J: Tplot_iconbar ^ h ȑ0,0 r0,6 : ȓ Ȑ 0,0, 1280,140 |0,0 : 0,140, 1280,140  128,0 : BY 0,140  1125,0 : BY 0,140  0:128+6 11,31);"Magnification"; 27,31);"Movement"; 38,31);"Rotation"; 49,31);"Orientation"; 63,31);"Clock";  0:128+7 0,0 iconhighP=0  drR  iconhighP+=1 ( iconx1P,icony1P,iconright,icondown /iconx1P=iconx1P*16 : iconright=iconright*16 &iconx1P(iconhighP)=iconx1P 0icony1P(iconhighP)=icony1P :(iconx2P(iconhighP)=iconx1P+iconright D'icony2P(iconhighP)=icony1P-icondown N4 icony1P=9999 enddata=1 : DlQ : enddata=0 X50,3 : ȓ Ȑ iconx1P,icony1P, iconright,-icondown b20,12: ȓ iconx1P,icony1P, iconright,-icondown l enddata=1 viconhighP-=1 5  0,12 * iconx1P(1)+6,icony1P(1)-8 : "Edit"; * iconx1P(2)+6,icony1P(2)-8 : "Plot"; . iconx1P(3)+6,icony1P(3)-8 : "Register"; * iconx1P(4)+6,icony1P(4)-8 : "Main"; + iconx1P(4)+6,icony1P(4)-40 : "Menu";  238,128 : "X";  304,128 : "Y"; ȏ Ȑ 1048,80,24 ( iconx1P(5),icony1P(5) : rightleft ( iconx1P(6),icony1P(6) : rightleft % iconx1P(7),icony1P(7) : updown % iconx1P(8),icony1P(8) : updown  % iconx1P(9),icony1P(9) : leftup % iconx1P(10),icony1P(10) : left  ) iconx1P(11),icony1P(11) : leftdown *# iconx1P(12),icony1P(12) : up 4% iconx1P(13),icony1P(13) : down >( iconx1P(14),icony1P(14) : rightup H& iconx1P(15),icony1P(15) : right R* iconx1P(16),icony1P(16) : rightdown \+ iconx1P(17),icony1P(17) : doubleleft f% iconx1P(18),icony1P(18) : left p& iconx1P(19),icony1P(19) : right z, iconx1P(20),icony1P(20) : doubleright & iconx1P(21),icony1P(21) : right % iconx1P(22),icony1P(22) : down # iconx1P(23),icony1P(23) : up % iconx1P(24),icony1P(24) : left % iconx1P(25),icony1P(25) : down % iconx1P(26),icony1P(26) : down ( iconx1P(27)+8,icony1P(27)-4 : "+" ( iconx1P(28)+8,icony1P(28)-4 : "-" 4  :  2,120,4.5,40  2,56,4.5,40  71,130,8.5,40  73,80,4.5,72  Magnification $ 14.5,96,2,32 . 14.5,64,2,32 8 18.5,96,2,32 B 18.5,64,2,32 L Movement V 28,128,2,32 ` 28,96,2,32 j 28,64,2,32 t 30,128,2,32 ~ 30,64,2,32  32,128,2,32  32,96,2,32  32,64,2,32  rotation  38,96,2,32  40,96,2,32  42,96,2,32  44,96,2,32  Orientation  51.5,96,2,32  53.5,128,2,32  53.5,64,2,32  55.5,96,2,32  Clock  62,96,2,32  67,96,2,32 ( Magnification cont.. 2 16.5,96,2,32 < 16.5,64,2,32 F 9999,9999,9999,9999 P: Zrightleft d BY 6,-16 n1 BY 4,8 : BY 0,-16 : BY -4,8 : BY 20,0 x% BY -4,8 : BY 0,-16 : BY 4,8  :  updown  BY 16,-6 2 BY 6,-4 : BY -12,0 : BY 6,4 : BY 0,-18 % BY 6,4 : BY -12,0 : BY 6,-4  : up  BY 16,-6 2 BY 6,-4 : BY -12,0 : BY 6,4 : BY 0,-18  :  down  BY 16,-6 3 BY 0,-18 : BY -6,4 : BY 12,0 : BY -6,-4 " ,: 6 right @ BY 6,-16 J1 BY 20,0 : BY -6,8 : BY 0,-16 : BY 6,8 T ^: h left r BY 6,-16 |1 BY 6,8 : BY 0,-16 : BY -6,8 : BY 20,0  : rightdown  BY 6,-6 2 BY 20,-18 : BY 0,8 : BY -8,-8 : BY 8,0  :  rightup  BY 6,-24 1 BY 20,18 : BY -8,0 : BY 8,-8 : BY 0,8  : leftdown  BY 26,-6 3 BY -20,-18 : BY 0,8 : BY 8,-8 : BY -8,0  &: 0 leftup : BY 26,-24 D2 BY -20,18 : BY 8,0 : BY -8,-8 : BY 0,8 N X: bleftdown l BY 26,-6 v3 BY -20,-18 : BY 0,6 : BY 6,-6 : BY -6,0  : doubleright : BY 6,-10 : BY 20,0 : BY -6,6 : BY 0,-12 : BY 6,6 < BY -20,-10 : BY 20,0 : BY -6,6 : BY 0,-12 : BY 6,6  : doubleleft : BY 6,-10 : BY 6,6 : BY 0,-12 : BY -6,6 : BY 20,0 < BY -20,-10 : BY 6,6 : BY 0,-12 : BY -6,6 : BY 20,0  :  colours  5,6  % 6,240,240,208 : Light Yellow  8,0 : Black  % 9,240,240,208 : Light Yellow * 10,5 : Magenta 4" 11,0,48,128 : Dark Blue > 12,0 : Black H" 13,96,96,96 : Dark Grey R# 14,192,192,192 : Light Grey \ 15,7 : White f p: zselection ȗ  ȑ 0,0 24,0;0;1279;1023;  ȗ xnow,ynow,button,time  iconumP = 1 iconhighP q xnow >= iconx1P(iconumP) xnow <= iconx2P(iconumP) ynow >= icony2P(iconumP) ynow <= icony1P(iconumP)  inverse  noticon  inverse    button<>0  :  inverse $5iconx1=iconx1P(iconumP) : icony1=icony1P(iconumP) .Ciconx2=iconx2P(iconumP)-iconx1 : icony2=icony2P(iconumP)-icony1 84,0 B&ȓ Ȑ iconx1,icony1, iconx2,icony2 L V: ` noticon j tȗ xnow,ynow,button,time ~~ (xnow >= iconx1P(iconumP) xnow <= iconx2P(iconumP) ynow >= icony2P(iconumP) ynow <= icony1P(iconumP)) button=4  button=4 exec_change  ȑ 0,0 24,0;0;1279;1023;