program$="TAplot 2.85"  (C) Copyright D M Price  January 26 2006 (: +2fore=15:back=0:warn%=:learn%=0:Unew%=5 <18:fore:back+128:0,fore: F chr 8 EP C%(1E3),D$(25),A(25),B(25),M%(1E3),Z(100,100),T$(4),S$(30),a(7) Z I%=0 23:"KEY"+(I%): ,d I%=0 25:D$(I%)="channel "+(I%+65): #n I%=0 30:S$(I%)=30,(32)): xA$=255," "):B$=" ":C$=B$:F$=B$:O$="":X$=A$:Y$=A$:Xlast$=D$(0):file$="":path$="":mask$="*.*":T1$=" ":T2$=T1$:M%(0)=27 +N%=1:D%=1:X%=0:Y1%=1:Y2%=-1:T1%=0:T2%=0 ,XL=-1:XU=1:XI=0.2:Y1L=-1:Y1U=1.2:Y1I=0.2 Xlog%=:Y1log%=:Y2log%= =changed_flag%=:show%=:step%=0:filter%=0:learn%=0:ann%= _x_axis:_y1_axis : 5 26,28,0,29,79,28,12,29,240;150;24,0;0;800;800; U%=Unew%:Nmax%=6E4/(U%+3): ':" ";program$;67);" f8 "; <'" Array size: x ";Nmax%;67)" accept "; & 14,1);:Unew%=number(U%+1,)-1 " (Unew%>0 Unew%<26) A=152  U%=Unew%  D(U%,Nmax%),E(Nmax%) ( I%=0 1: S%=0 1:D(S%,I%)=0:: : " txA ,: 6 show%=:D^A 3@26,28,0,29,79,28,12,29,240;150;24,0;0;800;800; cJ" f1 f2 f3 f4 f5 f6 f7 ";: learn%=0:" f8 "; dT'" file edit rescale replot modify annotate analysis ";: learn%=0:" macro "; ^z%=get: z%>144:z%=z%-96 h z%>64:z%=z%-8 r (z%=32 (z%>48 z%<65)) v|:z%=z%+48*show%: ann% ((z%>0 z%<6) z%=12): (abort("WARNING: Annotations/results may be erased!")):tPA  z% file,edit,rescale,plot,modify,annotate,analysis,macro,null,null,null,draw_graph,null,null,null,null,null show%=show  z%=-1 3  :  error handling @%=&90A:#0:*FX15 3,4,7:normal:0,0:*ESC ON 7'"Exit or Reset?": A$=upper(): A$="E" A$="R"  A$="R":  :3::" at line ";' "Type *BYE to exit"  : ݤget & learn%=1:m%=m%+1:q%=M%(m%):DDB &*ESC OFF 0q%= !: learn%=-1:m%=m%+1:M%(m%)=q% D q%=27:learn%=0 N*FX15 X*ESC ON b=q% l: vݤget$:=(get) : null: : 4ݤshow: show%:learn%=learn%*3 learn%=learn%/3 =(show%) : settings K:" f1 f2 f3 "'" warnings filter reset "; = A$=get$: A$=(27) A$="" A$="" A$="" A$=""  E A$="":warn%=alarm(warn%) A$="":filter A$="":reset  : ݤalarm(warn%) , 2);"Warnings ";: warn%:"OFF" "ON" =0: >100:=(warn%)  : *filter G4 ann%: (abort("WARNING: Annotations/results may be erased!")): > :2);"Plot: "; H filter%=-1:invert #R"RIGHT to LEFT";:normal:" "; \ filter%=0:invert "f"RIGHT & LEFT";:normal:" "; p filter%=1:invert z"LEFT to RIGHT";:normal * A=get: A=13 A=27 A=136 A=137 Sfilter%=filter%+(A=136)-(A=137): filter%<-1:filter%=1 filter%>1:filter%=-1  A=13 A=27 draw_graph  : macro % learn%=-1 learn%=1:learn%=0: :" f1 f2 "; '" record play "; + A$=get$: A$="" A$="" A$=(27)  A$="":learn%=-1:m%=-1  A$="":learn%=1:m%=-1  : ݤget_name(T$,N$,i%) $d%= . d%=:N$=read_filename *8:63,0);" f7 ";: i%:;" f8 "; (B63,1);" path ";: i%:;" dir "; .L2,0);T$;"? ";path$;:N$=text_input(N$,) &V a=151:path:a=0: d%=:dir() !` a=152 i%:dir():d%=:a=0 )j (a>135 a<140) d%=:move_cursor t a=13 a=27 ~=N$ : ݤread_filename (26,31,(2+C%*20),(R%+1):A$="":A%=&87 6 I%=1 15:A$=A$+(((&FFF4) &FF00) 256):9: &invert:2+C%*20,R%+1);A$:normal 28,0,29,79,28 =A$ : path 3:0,0);" Path? ";:path$=text_input(path$,1)  : dir(t%) ?  t%::" Template? ";:mask$=text_input(mask$,): a=27: <R%=0:C%=0:26,12:("."+path$+mask$+" /w"):28,0,29,79,28  (: 2move_cursor <26:2+C%*20,R%+1);N$ DFC%=C%+(a=136 C%>0)-(a=137 C%<3):R%=R%+(a=139 R%>0)-(a=138) P Z: dݤupper(A$) PnB$="": I%=1 (A$):J%=(A$,I%,1)):J%=J%+32*(J%>96 J%<123):B$=B$+(J%): x=B$ : ݤtext_input(a$,caps%) @invert:a$+40," "),40+20*(caps%=-1)+10*(caps%=1));:a=get =text : ݤtext 4 I%=1 40+20*(caps%=-1)+10*(caps%=1):8,32,8: ; a=13 a=27 (a>135 a<140) (a>150 a<156):TlF )l=(a$): a=8 l>0:a$=a$,l-1):l=l-1  a<>8:a$="":l=0 ' -(caps%): a>96 a<123:a=a-32  (a>31 a<127) (a>127 a<138) (a>139 a<152) a>155: l<40+20*(caps%=-1)+10*(caps%=1): caps%=0 a<>32:a$=a$+(a):l=l+1 a$; 2 a=get: a=8 l>0:a$=a$,l-1):l=l-1:8,32,8  a<>8  l>0: I%=1 l:8: ," a=13 a=138 a=139 (a>150 a<156) ,normal: a=155:a$=file$ 6a$+40," "),40); @=a$ J: Tinvert:back:fore+128: ^: hnormal:fore:back+128: r: |ݤnumeric_input(pi%) &a$="":l=0: A=155:Z(0,0);:=Z(0,0) N (A>47 A<58) ((A>42 A<47) pi%=) A=69: l<11:a$=a$+(A):l=l+1 a$; 2 A=get: A=8 l>0:a$=a$,l-1):l=l-1:8,32,8  A<>8  A=101:A=69  l>0: I%=1 l:8: $ A=13 (A>129 A<140) A>150 =(a$) : ݤnumber(N,pi%) -@%=&01000606:invert:12," ")+(N),11); ^ A=get: A=13 A=27 (A>47 A<58) ((A>42 A<47) pi%=) (A>129 A<140) A=152  l=1 11:8,32,8: C (A>47 A<58) ((A>42 A<47) pi%=):N=numeric_input(pi%) 'normal:(N)+12," "),11);:@%=&90 &=N 0: :file MD :" f1 f2 f3 f4 "'" new open save exit "; =N Z$=get$: Z$="" Z$="" Z$="" Z$="" Z$=(27) X Z$="":new b Z$="":open l Z$="":save v Z$="":exit  Z$<>"0"  : save 5:" f1 f2 "'" ASCII binary "; + A$=get$: A$=(27) A$="" A$=""  A$=(27):Z$="0": L%=select_limits file_out draw_graph  : open X changed_flag%=: (abort("WARNING: Existing data has not been saved!")):Z$="0":  Dlast%=D%:learn%=learn%*3 ) file$=get_name("Filename",file$,) 2 F%=0: a<>27:F%=(path$+file$): F%=0:file$="" * F%<>0 a=27 :4learn%=learn%/3: a=27:Z$="0":D%=Dlast%:file$="":#0: *>: #F%<26:binary_load ascii_load #H A$=(27) O$=(27):#0:TVH R D%=0:one_channel ~\changed_flag%=:X%=0:Y1%=-1:Y2%=-1:T1%=0:T2%=0:T1$=" ":T2$=T1$:Xlast$=" ": D%-1:F%=(path$+file$):d@H  : one_channel . I%=0 N%:D(1,I%)=D(0,I%):D(0,I%)=I%+1: 7D$(1)=D$(0):D$(0)="data point":D%=1:changed_flag%=   :  ݤover_add $$ Dlast%=U% D%U%:d%=U% j O$="":d%=Dlast% t O$="":d%=U%-Dlast% ,~ S%=0 D%:B(S%)=(S%<=d%)::e%=d%:Q%=D% & :" Select channels to load:"; ! S%=0 D%: B(S%)=:invert $ 27+S%*2,0);(65+S%);:normal: K ((e%"") e%=d%):67,0);" f8 ";67,1);" accept "; 7 A=(upper(get$)): A>64 A<91:B(A-65)=(B(A-65)) # e%=-1: S%=0 D%:e%=e%-B(S%): 2 (A=152 ((e%"") e%=d%)) A=27 0 A=27 O$<>"0":TnI A=27:O$=(27):=N% @ changed_flag%=(O$="" O$="0"):d%=-1: O$="":D%=Dlast%:=N% % O$="":d%=Dlast%:D%=Dlast%+e%+1  O$="":D%=e% @ s%=d%: S%=0 Q%: B(S%):s%=s%+1:D$(s%)="channel "+(65+S%)   =-1  :  binary_load ;( #F%=0:speed%=:#F%,D%:N%=over_add:s%=d%: O$=(27): 92 S%=0 Q%:#F%,A$: N%=-1: B(S%):s%=s%+1:D$(s%)=A$ < &F start%=#F%: N%=-1:signal_titles AP L%=select_limits:" Filename: ";path$+file$'" Loading..."; ;Z binary_get_data: N%<0 L%>-1:F%=(path$+file$):DPJ d n : x binary_get_data  O%=-1:#F%=start%:*ESC OFF  S%=0 Q%:#F%,A(S%): ' L%>-1: A(L%)LU:dHJ 9 N%=N%+1:O%=O%+1:s%=d%: (O% step%)<>0:N%=N%-1:dHJ . S%=0 Q%: B(S%):s%=s%+1:D(s%,N%)=A(S%)   N%=Nmax%:compact_data  #F% (0)=27 step%<1  #F%:*FX15 *ESC ON   :  setup_titles 9 S$(1)="time (hr)":S$(2)="time (min)":S$(3)="time (s)" M S$(4)="temperature (C)":S$(5)="temperature (K)":S$(6)="temperature (F)" 2 S$(7)="heat flow (mW)":S$(8)="heat flow (W/g)" +" S$(9)="weight (mg)":S$(10)="weight (%)" <, S$(11)="length (m)":S$(12)="length (mm)":S$(13)="tan " <6 S$(14)="E' (GPa)":S$(15)="E' (MPa)":S$(16)="log[E'(Pa)]" ?@ S$(17)="E"" (MPa)":S$(18)="E"" (kPa)":S$(19)="log[E""(Pa)]" 4J S$(20)="frequency (Hz)":S$(21)="frequency (kHz)" ?T S$(22)="e'":S$(23)="log[e']":S$(24)="e""":S$(25)="log[e""]" P^ S$(26)="wavelength (nm)":S$(27)="wavelength (m)":S$(28)="wavenumber (cm-1)" h r : | signal_titles 8 setup_titles::67);" f8 "'67)" accept "; $ 26,28,13,(15+D%/2),73,(12-D%/2)  "";53,"");"" 5 S%=0 D%:D$(S%)=D$(S%),40):A$=" "+(S%+1),2) + " Channel ";A$;": ";D$(S%);54);"":  "";53,"");"":S%=0 invert . 14,S%+1);D$(S%)+40," "),40);14,S%+1); D$(S%)=signal_title(D$(S%)) $ 14,S%+1);D$(S%)+40," "),40); ' S%=S%+(a=139 S%>0)-(a=13 a=138)  S%>D% a=152  28,0,29,79,28,12   :  ݤsignal_title(a$) !& S$(0)=a$:c%=0:caps%=:invert 0 a$=S$(c%) : a$+40," "),40); /D a=get:c%=c%+(a=132 c%>0)-(a=133 c%<30) N I%=1 40:8: AX a=8 a=13 (a>31 a<127) a=138 a=139 a=152 a>223 5b a<>13 a<>138 a<>139 a<>152:(40);:=text l normal: c%=0 a=152:=a$ v delete_title(c%)  I%=0:A$=a$,a$,"[")+1,2) D I%=I%+1:B$=S$(I%),S$(I%),"[")+1,2): A$=B$:delete_title(I%) I%=30  =a$  :  delete_title(c%) , J%=c%+1 30:S$(J%-1)=S$(J%)::I%=I%-1   :  ݤauto_start I%=0:P%=0 4 #F%=P%:#F%,A$: numerics_only(A$): 1=1:=P%  A$,1)=(10):A$=A$,2)  P%=#F%:I%=I%+1   :  ݤnumerics_only(A$) (* p1%=:p2%=: A$,1)=(10):A$=A$,2) "4 J%=1 (A$):A%=(A$,J%,1)) &> A%>58 (A%<>69 A%<>101):p1%= H A%>47 A%<59:p2%= R \ =p1%= p2%= f : p ݤmanual_start z I%=0:E(I%)=0 #F%=E(I%):#F%,A$:2);A$ ' A%=get: A%=13 A%=138 A%=139  A%=138:I%=I%+1:E(I%)=#F%  A%=139 I%>0:I%=I%-1  #F% A%=13 :=E(I%)  :  ݤselect_limits + :67);" f8 "'67);" accept "; " L%=-1:inc=0:26,28,13,20,73,11 C "";53,"");""'" Select limits: ";54);""'"";53,"");"" invert > 17,1);: L%=-1:"none";(33); D$(L%)+40," "),37); 3I%=get:L%=L%+(I%=132 L%>-1)-(I%=133 L%D%:L%=D% L%<-1:L%=-1  I%=13 I%=152 !$normal:17,1);(37);17,1); . L%=-1:"none":tHN -8D$(L%): D$(L%)=Xlast$:LL=XL:LU=XU:DLN -BLU=1E36:LL=-1E36: Z$="":channel_limits )L0,2)"";(53);""'"";;53,"");"" 6V@%=&01000606:2,2);"Between: ";LL;31,2)"&: ";LU; +`11,2);:LL=number(LL,): A=152:DtN +j34,2);:LU=number(LU,): A=136:D`N $t@%=&90: LL>LU:LS=LL:LL=LU:LU=LS ~ Z$="":inc=increment  Z$="":step%=sample_rate 26,28,0,29,79,28,12 =L% : channel_limits E I%=0 N%: D(L%,I%)>LU:LU=D(L%,I%) D(L%,I%)0,3)"";(53);""'"";;53,"");"";2,3);"Increment: "; =(number(0,)) :  ݤsample_rate \0,2-(L%<>-1))"";(53);""'"";;53,"");"";2,2-(L%<>-1));"Data reduction factor: "; =1+number(0,) (: 2ݤnumber_of_channels(A$) < A$,1)=(10):A$=A$,2) FA$=(32)+A$:C%=-1 4P I%=2 (A$):A%=(A$,I%-1,1)):B%=(A$,I%,1)) MZ A%=9 A%=32 A%=44 A%=58: B%<>9 B%<>32 B%<>44 B%<>58:C%=C%+1 d n=C% x: ascii_get_data *ESC OFF #F%=start%:O%=-1 1 O%=O%+1:#F%,A$: (O% step%)=0:read_data  #F% (0)=27 step%<1 *FX15 #F%:*ESC ON  : read_data read_line(A$): S%<>Q%: # L%>-1: A(L%)LU: N%=N%+1:s%=d% . S%=0 Q%: B(S%):s%=s%+1:D(s%,N%)=A(S%)   N%=Nmax%:compact_data " ,: 6read_line(A$) @ A$,1)=(10):A$=A$,2) +JA$=upper((32)+A$):I%=1:S%=-1:C%=(A$) T S%=S%+1 ^ I%=I%+1 %hA%=(A$,I%-1,1)):B%=(A$,I%,1)) Br I%>C% (A%>58 A%<>69) (A%<32 A%<>9): 1=1:S%=99:tPP I| (A%=9 A%=32 A%=44 A%=58) (B%<>9 B%<>32 B%<>44 B%<>58) A(S%)=(A$,I%)):I%=I%+1  S%>=Q%  : compact_data L step%<2: (abort("WARNING: Data overflow! Compress?")):step%=0:dVP ; I%=0 N% 2: S%=0 D%:D(S%,(I% 2))=D(S%,I%):: N%=N%/2:step%=step%*2  : new V changed_flag%=: (abort("WARNING: Existing data has not been saved!")):Z$="0" 2 :" Number of channels? ";:D%=number(2,)  D%>1 D%1 N%<10001 20N%=N%-1: R%=0 N%: C%=0 D%:D(C%,R%)=0:: :editor D N: Xfile_out Pblearn%=learn%*3:file$=get_name("Filename",file$,):learn%=learn%/3: a=27: VlF%=(path$+file$):#F%: F%<>0:: (abort("WARNING: File exists! Overwrite?")): 0v:" Filename: ";path$+file$'" Saving..."; 7F%=(path$+file$):changed_flag%=: L%>-1:target=LL ' A$="":binary_save ascii_save #F%  : ascii_save 4write(D$(0)): S%=1 D%:write((44)+D$(S%)): #F%,13:#F%,10 start%=#F%:speed%= 9 I%=0 N%: L%>-1: D(L%,I%)LU:TBR 5 S%=0 D%:A(S%)=D(S%,I%):: inc>0:interpolate 8write((A(0))): S%=1 D%:write((44)+(A(S%))): #F%,13:#F%,10    :  write(A$) &* J%=1 (A$):#F%,(A$,J%,1)): 4 >: Hbinary_save .Rspeed%=:#F%,D%: S%=0 D%:#F%,D$(S%): \start%=#F% 9f I%=0 N%: L%>-1: D(L%,I%)LU tDR 5p S%=0 D%:A(S%)=D(S%,I%):: inc>0:interpolate z S%=0 D%:#F%,A(S%):   : interpolate ' I%=I%+1: target=D(L%,I%) I%=0 J D(L%,I%+1)<>D(L%,I%):S=(target-D(L%,I%))/(D(L%,I%+1)-D(L%,I%)) S=0 8 S%=0 D%:A(S%)=D(S%,I%)+(D(S%,I%+1)-D(S%,I%))*S: target=target+inc  : edit I:" f1 f2 f3 "'" data titles settings "; 4 A$=get$: A$=(27) A$="" A$="" A$=""  A$=(27):  A$="":settings: Q$ changed_flag%=: (abort("WARNING: Existing data has not been saved!")): . A$="":editor: '8 A$="":signal_titles:draw_graph B L: Veditor `26,12 Pjnum_row%=25:num_col%=5:top_row%=0:end_row%=0:l_col%=0:r_col%=5:row%=0:col%=0 t ~ num_row%>N%:num_row%=N%  num_row%>25:num_row%=25 / top_row%>N%-num_row%:top_row%=N%-num_row%  top_row%<0:top_row%=0 ) end_row%N%:end_row%=N%  num_col%>D%:num_col%=D%  num_col%>5:num_col%=5 + l_col%>D%-num_col%:l_col%=N%-num_col%  l_col%<0:l_col%=0 % r_col%D%:r_col%=D% @%=&01000606 :1,0);"";num_col%,11,"")+"");11,"");"";(16);   line%=top_row% end_row% 1,line%-top_row%+1);"";  series%=l_col% r_col% -(number$=(D(series%,line%))+20," "),11) 62(series%-l_col%)*12+2,line%-top_row%+1);number$; <;""; F P;(12); Z Dd1,num_row%+2);"";num_col%,11,"")+"");11,"");"";(79-) n <28:0,);(79):DnT Jx1,28);"Row: ";" "+(row%+1),5);1,29);"Column: ";D$(col%);(40); , (col%-l_col%)*12+2,row%-top_row%+1); (D(col%,row%)=number(D(col%,row%),)  A=27 (A>129 A<140) h A=134 A=135:invert:(col%-l_col%)*12+2,row%-top_row%+1);(D(col%,row%))+20," "),11);:normal  A=134:insert_data  A=135:delete_data  A=130:row%=0  A=131:row%=N% col%=col%-(A=137)+(A=136)  col%<0:col%=0  col%>D%:col%=D% 2 col%r_col%:r_col%=col%:l_col%=col%-num_col% 3row%=row%-(A=138)+(A=139)-26*(A=133)+26*(A=132)  row%<0:row%=0  row%>N%:row%=N% 8" row%end_row%:end_row%=row%:top_row%=row%-num_row% 6 A=27 E@@%=&90:X%=0:Y1%=-1:Y2%=-1:T1%=0:T2%=0:T1$=" ":T2$=T1$:XL=XU Jplot T ^: hinsert_data r D%=U% N%=Nmax%: %| D%=U% N%0:A$="":dPV  D%>1 N%=0:A$="":dPV 0,28);(79)'(79); ;1,28);" f1 f2 ";1,29);" row column "; + A$=get$: A$=(27) A$="" A$="" 8 A$="":row_delete(row%) A$="":column_delete 0,28);(79)'(79);  : row_delete(R1%) 0,28);(79)'(79); @ 1,28);"Row: ";R1%+1;17,28);"to: ";:R2%=number(R1%+1,)-1 1 R1%>R2%:R%=R2%:R2%=R1%:R1%=R%: R1%<0:R1%=0 # A=135:R1%=R2%-R1%+1: R1%>=N%: !* R2%>=N%:N%=N%-R1%:row%=N%: 94 R%=R2%+1 N%: C%=0 D%:D(C%,R%-R1%)=D(C%,R%):: >N%=N%-R1% H R: \column_delete f col%=D%:D%=D%-1:col%=D%: 6p C%=col%+1 D%: R%=0 N%:D(C%-1,R%)=D(C%,R%): 7z D$(C%)="channel "+(C%+1):D$(C%)="channel "+(C%) D$(C%-1)=D$(C%): D%=D%-1  : plot 26,28,10,15,74,11 ?"";51,"");"";7,"");""'" x-axis : ";52)" type: " X" y-axis : ";: Y1%=-1 "not defined"; Y1log%:"log[";D$(Y1%);"]"; D$(Y1%); 52)"";T1$;"" X" y'-axis: ";: Y2%=-1 "none "; Y2log%:"log[";D$(Y2%);"]"; D$(Y2%); 52)"";T2$;"" """;51,"");"";7,"");""; .select_axis(X%,-1,1,Xlog%):X%=A%:Xlog%=T% 2select_axis(Y1%,-1,2,Y1log%):Y1%=A%:Y1log%=T%  I%=139:d|W 3T%=T1%:T$=T1$:select_type(Y1%,2):T1%=T%:T1$=T$ $ I%=136:TFX . D%=1:D`X 38select_axis(Y2%,Y1%,3,Y2log%):Y2%=A%:Y2log%=T% B I%=139:TFX 3LT%=T2%:T$=T2$:select_type(Y2%,3):T2%=T%:T2$=T$ #V I%=136:TxX I%=139:TZX ,` Xlast$<>D$(X%):XU=0:XL=0:Xlast$=D$(X%) jscale:draw_graph t ~: select_axis(x%,y%,c%,t%) invert:I%=0  c%<3 x%<0:x%=0  c%>1: x%=X%:x%=x%+1  c%=3: x%=y%:x%=x%+1:tfX  x%>D%:x%=-1:dvX  c%=3:A$="none" + x%>-1:A$=D$(x%): t%:A$="log["+A$+"]" 11,c%);A$+40," "),40); I%=get: I%=9:t%=(t%) )x%=x%+(I%=132)-(I%=133): x%<-1:x%=-1 8 I%=13 (I%=137 c%>1) I%=138 (I%=139 c%>1) 0normal:11,c%);A$;(40-(A$));:A%=x%:T%=t%   : select_type(x%,c%) ,(invert: x%=-1:T$=" ":T%=-1:DdY 2 h< T%=1:T$=" " T%=2:T$=" ----- " T%=3:T$=" ooooo " T%=4:T$=" xxxxx " T$=" " F53,c%);T$ CPI%=get:T%=T%+(I%=132)-(I%=133):T%=0-T%*(T%>-1 T%<5)-4*(T%<0) 8Z I%=13 I%=136 (I%=138 c%=2) (I%=139 c%=3) dnormal:53,c%);T$ n x: scale  XL<>XU:t~Y XL=1E30:XU=-1E30 ) I%=0 N%: D(X%,I%)XU:XU=D(X%,I%)  )Y1L=1E30:Y1U=-1E30:Y2L=1E30:Y2U=-1E30 1 I%=0 N%: D(X%,I%)XU:TDZ ! D(Y1%,I%)Y1U:Y1U=D(Y1%,I%)  Y2%=-1:TDZ ! D(Y2%,I%)Y2U:Y2U=D(Y2%,I%)  1 XL=XU:XL=XL*.9:XU=XU*1.1: XL=XU:XL=-1:XU=1 .XI=inc(XU,XL): Xlog%: XL<1E-30:XL=1E-30 ;" Y1L=Y1U:Y1L=Y1L*.9:Y1U=Y1U*1.1: Y1L=Y1U:Y1L=-1:Y1U=1 ,Y1I=inc(Y1U,Y1L) 96 (Y1log%):Y1L=(Y1L/Y1I)*Y1I:Y1U=((Y1U/Y1I)+1)*Y1I "@ Y1log%: Y1L<1E-30:Y1L=1E-30 J Y2%=-1: $T Y2L=Y2U:Y2L=Y2L*.9:Y2U=Y2U*1.1 ^ Y2L=Y2U:Y2L=-1:Y2U=1 hY2I=inc(Y2U,Y2L) 9r (Y2log%):Y2L=(Y2L/Y2I)*Y2I:Y2U=((Y2U/Y2I)+1)*Y2I "| Y2log%: Y2L<1E-30:Y2L=1E-30  : to_log " Xlog%:XL=(XL):XU=(XU):XI=1 ( Y1log%:Y1L=(Y1L):Y1U=(Y1U):Y1I=1 1 Y2%>-1: Y2log%:Y2L=(Y2L):Y2U=(Y2U):Y2I=1  : from_log , Xlog%:XL=10^XL:XU=10^XU:XI=inc(XU,XL) 4 Y1log%:Y1L=10^Y1L:Y1U=10^Y1U:Y1I=inc(Y1U,Y1L) = Y2%>-1: Y2log%:Y2L=10^Y2L:Y2U=10^Y2U:Y21=inc(Y2U,Y2L)  : draw_graph to_log &ann%= )0_x_axis:_y1_axis: Y2%>-1:_y2_axis 5:draw_curve(XL,XU,Y1L,Y1U,X%,Y1%,Y1log%,0,N%,T1%) >D Y2%>-1:draw_curve(XL,XU,Y2L,Y2U,X%,Y2%,Y2log%,0,N%,T2%) Nfrom_log:28,0,29,79,28 X b: l_x_axis v26,12,5,29,240;150; $0,0:0,800:800,800:800,0:0,0 XS=800/(XU-XL):@%=&01000606  x=(XL/XI)*XI XU XI #X=(x-XL)*XS: X<0 X>800:dP[ X,0:1,0,-8 X$=(x): Xlog%:X$=(10^x) B (Xlog%) (Xlog% (x>-2 x<3)):X-((X$)*7),-20:X$:dP[ "X-28,-20:"10":X+4,-12:(x)  (Xlog%):TB\  i%=1 9 X=(x-XL+(i%))*XS ! (X<0 X>800):X,0:1,0,-4   6 X=400-(D$(X%))*7:_print_horizontal(D$(X%),X,-50) 4   *: 4_y1_axis >26,5,29,240;150; &HY1S=800/(Y1U-Y1L):@%=&01000606:x=0 "R y=(Y1L/Y1I)*Y1I Y1U Y1I \ (y)800:tl\ p0,Y:1,-8,0 zY$=(y): Y1log%:Y$=(10^y) X=-20-(Y$)*16: X-2 y<3)):X,Y+7:Y$:tl\ X=16*(y>0 y<10)-16*(y<-9) #-84-X,Y:"10":-52-X,Y+7:(y)  (Y1log%):d^\  i%=1 9 Y=(y-Y1L+(i%))*Y1S ! (Y<0 Y>800):0,Y:1,-4,0   6Y$=D$(Y1%): Y2%>-1: T1$<>T2$:Y$=T1$,2,3)+" "+Y$ -Y=400-(Y$)*8:_print_sideways(Y$,x-30,Y) @%=&90:4  : _y2_axis $26,5,29,240;150; (.Y2S=800/(Y2U-Y2L):@%=&01000606:x=800 "8 y=(Y2L/Y2I)*Y2I Y2U Y2I B (y)800:tz] V800,Y:1,8,0 `Y$=(y): Y2log%:Y$=(10^y) jX=820+(Y$)*16: X>x:x=X -2 y<3)):820,Y+7:Y$:tH] ~820,Y:"10":852,Y+7:(y)  (Y2log%):tz]  i%=1 9 Y=(y-Y2L+(i%))*Y2S " (Y<0 Y>800):800,Y:1,4,0   -Y$=D$(Y2%): T1$<>T2$:Y$=T2$,2,3)+" "+Y$ -Y=400-(Y$)*8:_print_sideways(Y$,x+22,Y) @%=&90A:4  : _print_horizontal(a$,X,Y)  i%=1 (a$) & ?chr=(a$,i%,1)): ?chr<128:tB^ 23,128,0,0,0,0,0,0,0,0 0 ?chr=224:23,128,0,0,118,220,200,220,118,0 4( ?chr=225:23,128,0,120,204,248,204,248,192,192 22 ?chr=227:23,128,0,254,108,108,108,108,108,0 3< ?chr=230:23,128,0,102,102,102,102,124,96,192 2F ?chr=233:23,128,56,108,198,254,198,108,56,0 3P ?chr=234:23,128,56,108,198,198,108,108,238,0 1Z ?chr=235:23,128,28,48,24,124,204,204,120,0 0d ?chr=238:23,128,56,96,192,248,192,96,56,0 .n ?chr=241:23,128,48,48,252,48,48,0,252,0 -x ?chr=248:23,128,56,108,108,56,0,0,0,0 &X,Y: ?chr<128:(?chr) (128) X=X+16   : _print_sideways(a$,X,Y) Xtemp%=X%:Ytemp%=Y% A%=&A X%=chr 256 Y%=chr 256  i%=1 (a$) ?chr=(a$,i%,1))  ?chr>127:D^_  &FFF1  j=0 7 a(j)=0 " k=1 8 ,,a(j)=a(j)-2^(8-k)*((chr?k 2^j)<=chr?k) 6 @ 3J23,128,a(0),a(1),a(2),a(3),a(4),a(5),a(6),a(7) TdV_ ^23,128,0,0,0,0,0,0,0,0 &h ?chr=196:23,128,8,8,8,8,8,8,8,8 -r ?chr=224:23,128,0,34,54,28,54,34,62,28 .| ?chr=225:23,128,0,0,40,124,84,84,127,63 1 ?chr=227:23,128,0,64,126,126,64,126,126,64 . ?chr=230:23,128,0,120,124,4,4,126,127,1 2 ?chr=233:23,128,0,56,124,214,146,214,124,56 2 ?chr=234:23,128,0,50,126,206,128,206,126,50 0 ?chr=235:23,128,0,156,190,242,82,18,30,12 1 ?chr=238:23,128,0,0,146,146,146,214,124,56 . ?chr=241:23,128,0,0,34,34,250,250,34,34 . ?chr=248:23,128,0,0,96,240,144,240,96,0 X,Y:;(128) Y=Y+16  X%=Xtemp%:Y%=Ytemp%   : 2 draw_curve(XL,XU,YL,YU,X%,Y%,Ylog%,A%,B%,T%) " 26,29,240;150;24,0;0;800;800; & p%=0 0 I%=A%+1 B% -: x0=D(X%,I%-1): Xlog%: x0>1E-30:x0=(x0) +D x1=D(X%,I%): Xlog%: x1>1E-30:x1=(x1) -N y0=D(Y%,I%-1): Ylog%: y0>1E-30:y0=(y0) +X y1=D(Y%,I%): Ylog%: y1>1E-30:y1=(y1) 1b x0=(x0-XL)*800/(XU-XL):x1=(x1-XL)*800/(XU-XL) -l (x0<0 x0>800) (x1<0 x1>800):tT` 1v y0=(y0-YL)*800/(YU-YL):y1=(y1-YL)*800/(YU-YL) - (y0<0 y0>800) (y1<0 y1>800):tT` y T%=1:_solid_line(x0,y0,x1,y1) T%=2:_broken_line(x0,y0,x1,y1) T%=3:_circle(x0,y0): T%=4:_cross(x0,y0)  2 T%=3:_circle(x1,y1): T%=4:_cross(x1,y1)   :  _solid_line(x0,y0,x1,y1) # (x0-x1)=filter% (x0<>x1):  x0,y0:x1,y1   :  _broken_line(x0,y0,x1,y1) $ (x0-x1)=filter% (x0<>x1): !l=((x1-x0)^2+(y1-y0)^2) ! l=0: ! n=0 l  !x=x0+n/l*(x1-x0) *!y=y0+n/l*(y1-y0) 4! (p% 16)<8:69,x,y >!p%=p%+1 H! R! \!: f!_circle(x,y) )p!x-6,y-2:1,0,4:1,4,4:1,4,0:1,4,-4 $z!1,0,-4:1,-4,-4:1,-4,0:1,-4,4 ! !: !_cross(x,y) !x-4,y-4:x+4,y+4 !x-4,y+4:x+4,y-4 ! !: !ݤinc(U,L) !O=((U-L)):I=10^((O)-1)*2 ! O-(O)>(2):I=I*2 ! O-(O)>(5):I=I*2.5 !=(U-L)*I !: "ݤcursor(c%,e%,s%) "@%=&01000606 %" c%>0:C%=C%(c%-1)-(C%(c%-1)<>N%) B$" c%=0:L%=X%:inc=0:I%=N%/2:target=(XL+XU)/2:interpolate:C%=I% ." e%=0:2);"Cursor:"; 98" e%>0:(c% 2)*40+2,(c%>1)*-1);"Cursor ";c%+1;":"; !B"4,fore:invert:to_log:*FX15 )L" X=D(X%,C%): X>1E-30 Xlog%:X=(X) V"draw_cursor(s%) `"a$=12," ")+(D(X%,C%)),11) 8j" e%=0:10,0);a$; (c% 2)*40+12,(c%>1)*-1);a$; t"A=get ~"draw_cursor(s%) -"C%=C%+(A=136)-(A=137)+5*(A=128)-5*(A=129) " C%<0:C%=0 C%>N%:C%=N% +" A=13 (A=45 (A>47 A<58)) A=155 " e%>0 A<>13:find_point " S%=0 D%:A(S%)=D(S%,C%): !" e%=0 A<>13:return_values "0,fore:normal A" e%>0:(c% 2)*40+12,(c%>1)*-1);(D(X%,C%))+12," "),11); "@%=&90: c%=3: "=C% ": "draw_cursor(s%) .# s%=-1:4,(X-XL)/(XU-XL)*800,0:1,0,800:  #Y=D(Y%,C%): Ylog%:Y=(Y) -#x=(X-XL)/(XU-XL)*800:y=(Y-YL)/(YU-YL)*800 >#4,x,y-16:1,0,32:4,x-4,y-4:1,8,0:1,0,8:1,-8,0:1,0,-8 (# s%=0: 2#Y=D(Y2%,C%): Y2log%:Y=(Y) 0<#x=(X-XL)/(XU-XL)*800:y=(Y-Y2L)*800/(Y2U-Y2L) :F#4,x,y-16:1,0,32:4,x-4,y-4:1,8,8:4,x-4,y+4:1,8,-8 P# Z#: d#return_values 4n#10,0);(11);10,0);:target=numeric_input(pi%) "x#inc=0:L%=X%:I%=C%:interpolate # #: #find_point A#(c% 2)*40+12,(c%>1)*-1);(11);(c% 2)*40+12,(c%>1)*-1); *#target=numeric_input(pi%):error=XU-XL <# I%=0 N%:B=(D(X%,I%)-target): B-1: Y1log%=Y2log%:27,0);"f3 ";22,1);"y & y' equal "; I# changed_flag% file$<>"":67,0);" f8 ";67,1);" update "; $ A$=get$ $ A$=(27) A$="" A$="" (A$="" Y2%>-1 Y1log%=Y2log%) A$="" ((A$="" A$="") changed_flag% file$<>"") $ "$ A$=(27): ,$ A$="":cursor_rescale 6$ A$="":manual_rescale @$ A$="":set_y_axes_equal J$ A$="":XL=XU:scale T$ A$="":update ^$ A$="":auto_update: h$draw_graph r$ |$: $cursor_rescale C$ J%=0 1:C%(J%)=cursor(J%,1,):X=D(X%,C%(J%)): Xlog%:X=(X) .$(X-XL)/(XU-XL)*800,0:2,0,800:from_log: 9$XL=D(X%,C%(0)):XU=D(X%,C%(1)): XU-1:A(6)=Y2L:A(7)=Y2U:A(8)=Y2I -$J%=0:67);" f8 "'67)" accept "; $ 26,28,15,17,75,11 8$ I%=0 8 3:A(I%+2)=(A(I%+2))*(A(I%+1)-A(I%)): $@%=&01000606 9%"Ŀ" 9%" axis minimum maximum increment " 9%" x " 9&%" y " 90%" y' " ::%""; +D% I%=0 8:(I% 3)*14+9,(I% 3)+2); 1N% I%>5 Y2%=-1:" none" ;(A(I%)),12) X% b%(J% 3)*14+9,(J% 3)+2); Pl% (J% 3)<2:A(J%)=number(A(J%),): A(J%)=number(inc(A(J%-1),A(J%-2)),) *v% A=13 (A=137 (J% 3)<>2):J%=J%+1 !% A=136: (J% 3)<>0:J%=J%-1 7% A=138: (J%<6 Y2%>-1) (J%<3 Y2%=-1):J%=J%+3 % A=139 J%>2:J%=J%-3 $% J%=9 (J%=6 Y2%=-1) A=152 %@%=&90 Z%XL=A(0):XU=A(1):XI=A(2):Y1L=A(3):Y1U=A(4):Y1I=A(5): Y2%>-1:Y2L=A(6):Y2U=A(7):Y2I=A(8) 1% I%=0 N%: D(X%,I%)XU:dPe !% A%>I%:A%=I% B%Y2L:Y1L=Y2L  &Y1I=inc(Y1U,Y1L) 9& (Y1log%):Y1L=(Y1L/Y1I)*Y1I:Y1U=((Y1U/Y1I)+1)*Y1I  &Y2U=Y1U:Y2L=Y1L:Y2I=Y1I *& 4&: >&update ,H&L%=X%:LL=XL:LU=XU:N%=-1:" Updating..." /R& F%=(path$+file$): step%>1:step%=step%-1 /\& speed%:binary_get_data ascii_get_data f&L%=-1 p& N%>-1 z&scale & &: &auto_update /&:" Refresh rate: ";:delay%=number(10,) &old_warn%=warn%:warn%= &:" Updating..."; & N%=-1 & F%=(path$+file$) /& speed%:binary_get_data ascii_get_data &*ESC OFF & N%>0 $&N%=N%-1:XL=XU:scale:draw_graph &" Updating..."; '*ESC OFF 'q%=(delay%*1E2) '*FX15 $'*ESC ON .' q%=27 8'warn%=old_warn% B' L': V'annotate K`':" f1 f2 f3 f4 "'" text point line box "; =j' A$=get$: A$=(27) A$="" A$="" A$="" A$="" t' A$=(27): /~'x=400:y=400:p=0:s=1: I%=0 4:T$(I%)=" ": .' A$="":edit_result:display_result(x,y) ' A$="":mark_point ' A$="":mark_line ' A$="":mark_box '0,fore ' ': 'edit_result ':J%=0:H%=0 /' 67,0);" f8 ";67,1);" accept "; <'2,H%);"Line #";J%+1;": ";:T$(J%)=text_input(T$(J%),) +'I%=(a=139 J%>0)-(a=138 J%<4)-(a=13) *(J%=J%+I%: I%<>0:H%=-1*(I%=1):(11-H%)  ( a=152 (a=13 J%>4) ( (: ((display_result(x,y) E2(:" f1 f2 f3 "'" accept reject edit "; <(5:4,fore:x=x-4*(T$(0)) F( *FX15 5P( I%=0 4:_print_horizontal(T$(I%),x,y-16*I%): Z(B$=get$:J%=(B$) 5d( I%=0 4:_print_horizontal(T$(I%),x,y-16*I%): Yn(x=x+4*(J%=136 J%=130 J%=131)-4*(J%=137 J%=132 J%=133)+16*(J%=128)-16*(J%=129) Ax(y=y+4*(J%=138 J%=131 J%=133)-4*(J%=139 J%=130 J%=132) ( J%=13:x=400:y=400 ( B$="" B$="" B$="" ( B$="":4: "( B$="":4:edit_result:Trh G(0,fore: I%=0 4:_print_horizontal(T$(I%),x,y-16*I%)::4:ann%= ( (: (mark_point X(cursor:T$(0)=" x: "+(A(X%)):T$(1)=" y: "+(A(Y1%)): Y2%>-1:T$(2)="y': "+(A(Y2%)) :(draw_cross(x,y):display_result(x,y):draw_cross(x,y) ( (: (cursor ,)@%=&01000606::4,fore:to_log:p=1:*FX15 %) 4,x,0:1,0,800:4,0,y:1,800,0 3)A(X%)=(x*(XU-XL))/800+XL: Xlog%:A(X%)=10^A(X%) :")A(Y1%)=(y*(Y1U-Y1L))/800+Y1L: Y1log%:A(Y1%)=10^A(Y1%) C,) Y2%>-1:A(Y2%)=(y*(Y2U-Y2L))/800+Y2L: Y2log%:A(Y2%)=10^A(Y2%) 66):13,0);"x:";29,0);"y:": Y2%>-1:45,0);"y':"; @) p=1:invert *J)16,0);12," ")+(A(X%)),11):normal T) p=2:invert +^)32,0);12," ")+(A(Y1%)),11):normal h) p=3:invert 4r) Y2%>-1:49,0);12," ")+(A(Y2%)),11):normal )|)A=get: A=9:p=p+1: p>2-(Y2%>-1):p=1 #)4,x,0:1,0,800:4,0,y:1,800,0 /) A=45 (A>47 A<58) A=155:find_point2 7)x=x+(A=136 A=130 A=131)-(A=137 A=132 A=133) 7)y=y+(A=138 A=131 A=133)-(A=139 A=130 A=132) ) A=13 )from_log ) ): )find_point2 1)invert:16*p-(p=3),0);(11);16*p-(p=3),0); i) p=1:A(X%)=numeric_input(pi%) p=2:A(Y1%)=numeric_input(pi%) p=3:A(Y2%)=numeric_input(pi%) ) Xlog%:A(X%)=(A(X%)) ) Y1log%:A(Y1%)=(A(Y1%)) &* Y2%>-1: Y2log%:A(Y2%)=(A(Y2%)) \*x=(A(X%)-XL)*800/(XU-XL):y=(A(Y1%)-Y1L)*800/(Y1U-Y1L): p=3:y=(A(Y2%)-Y2L)*800/(Y2U-Y2L) *normal:A=0 &* 0*: :*draw_cross(x,y) %D*4,x-8,y:1,16,0:4,x,y-8:1,0,16 N* X*: b*mark_line Zl*cursor:x1=x:y1=y:draw_cross(x1,y1):Z(0,1)=A(X%):Z(0,2)=A(Y1%): Y2%>-1:Z(0,3)=A(Y2%) Zv*cursor:x2=x:y2=y:draw_cross(x2,y2):Z(1,1)=A(X%):Z(1,2)=A(Y1%): Y2%>-1:Z(1,3)=A(Y2%) r*T$(0)=" dx: "+((Z(0,1)-Z(1,1))):T$(1)=" dy: "+((Z(0,2)-Z(1,2))): Y2%>-1:T$(2)="dy': "+((Z(0,3)-Z(1,3))) j*x1,y1:x2,y2:display_result((x1+x2)/2,(y1+y2)/2):x1,y1:x2,y2:draw_cross(x1,y1):draw_cross(x2,y2) * *: *mark_box X*cursor:x1=x:y1=y:draw_cross(x,y):Z(0,1)=A(X%):Z(0,2)=A(Y1%): Y2%>-1:Z(0,3)=A(Y2%) Z*cursor:x2=x:y2=y:draw_cross(x1,y1):Z(1,1)=A(X%):Z(1,2)=A(Y1%): Y2%>-1:Z(1,3)=A(Y2%) &*x1,y1:x2,y1:x2,y2:x1,y2:x1,y1 D* I%=1 3: Z(0,I%)>Z(1,I%):d=Z(0,I%):Z(0,I%)=Z(1,I%):Z(1,I%)=d * m*T$(0)=(Z(0,1))+"-1:T$(2)=(Z(0,3))+"+ B$="":Y%=Y2%:YL=Y2L:YU=Y2U:Ylog%=Y2log% .H+ B$="":Y%=Y1%:YL=Y1L:YU=Y1U:Ylog%=Y1log% cR+:" f1 f2 ";: (Ylog%) (Xlog%):" f3 f4 f5 f6 f7 "; b\+'" point peak ";: (Ylog%) (Xlog%):" onset area change step polynomial "; f+ A$=get$: A$=(27) A$="" A$="" ((A$="" A$="" A$="" A$="" A$="" A$="" A$="") ((Ylog%) (Xlog%))) p+ A$=(27) Y2%>-1:TVk z+ A$=(27) Y2%: 7+E%=1: A$<>"" A$<>"" A$<>"" A$<>"" d|k #+ A$="":tlk A$="":dJk E+:" f1 f2 "'" two point four point "; +dTk B+:" f1 f2 ";: Y2%=-1 D%"") (C$="" (A$="" (A$="" Y2%=-1 D%C%(K%):C%=C%(K%-1):C%(K%-1)=C%(K%):C%(K%)=C% j,: (t, E%=3:C%=C%(1):C%(1)=C%(3):C%(3)=C% (~, E%=5:C%=C%(1):C%(1)=C%(5):C%(5)=C% 0,to_log:@%=&0100050A: I%=0 4:T$(I%)=" ": , A$="":point , A$="":peak , A$="":onset , A$="":area , A$="":change , A$="":step , A$="":polynomial #, A$="":x%=X%:X%=0:area:X%=x% , A$="":step2 ?, J%=0 E%: A$<>"":A(X%)=D(X%,C%(J%)):A(Y%)=D(Y%,C%(J%)) ,X=A(X%): Xlog%:X=(X) -Y=A(Y%): Ylog%:Y=(Y) 4 -(X-XL)/(XU-XL)*800,(Y-YL)/(YU-YL)*800-8:1,0,16 - -from_log:0,fore:@%=&90A (- 2-: <-point -F-x=(X-XL)/(XU-XL)*800:y=(Y-YL)/(YU-YL)*800 (P- B$="":T$(1)=" y: " T$(1)="y': " ;Z-T$(0)=" x: "+(A(X%)):T$(1)=T$(1)+(A(Y%)):Z(0,0)=A(Y%) :d-draw_cross(x,y):display_result(x,y):draw_cross(x,y) n- x-: -peak /-D1=0:Z%=C%(0):Z=(D(Y%,C%(0))+D(Y%,C%(1)))/2 0-:" Smoothing fraction? ";:W%=number(0,) +- I%=C%(0) C%(1):A(X%)=0:A(Y%)=0:n%=0 J- J%=I%-W% I%+W%:A(X%)=A(X%)+D(X%,J%):A(Y%)=A(Y%)+D(Y%,J%):n%=n%+1: S-A(X%)=A(X%)/n%:A(Y%)=A(Y%)/n%:D2=(A(Y%)-Z): D2>D1:D1=D2:X=A(X%):Y=A(Y%):K%=I% - 3-target=X:inc=0:L%=X%:I%=K%:interpolate:Y=A(Y%) 8-T$(0)=" peak : "+(X):T$(1)="value : "+(Y):Z(0,0)=X - Xlog%:X=(X) - Ylog%:Y=(Y) .-draw_peak:display_result(x,y):draw_peak - .: .draw_peak >.x=(X-XL)/(XU-XL)*800:y=(Y-YL)/(YU-YL)*800:draw_cross(x,y) ". ,.: 6.onset @.Z%=Y% >J. E%=1:M1=slope(C%(0)-3,7) M1=slope(C%(0),C%(3)-C%(0)) T.C1=sumy/n-M1*sumx/n >^. E%=1:M2=slope(C%(1)-3,7) M2=slope(C%(2),C%(1)-C%(2)) )h.C2=sumy/n-M2*sumx/n:D=(C2-C1)/(M1-M2) "r.T$(0)="onset : "+(D):Z(0,0)=D |.T$(1)="value :"+(M1*D+C1) 0.draw_onset:display_result(x,y):draw_onset . .: .draw_onset 5.x=(D-XL)/(XU-XL)*800:y=((M1*D+C1)-YL)/(YU-YL)*800 .y=((M1*D+C1)-YL)/(YU-YL)*800 D.(D(X%,C%(0))-XL)/(XU-XL)*800,(M1*D(X%,C%(0))+C1-YL)/(YU-YL)*800 .x,y D.(D(X%,C%(1))-XL)/(XU-XL)*800,(M2*D(X%,C%(1))+C2-YL)/(YU-YL)*800 . .: .area .cum%=(C$="") /select_baseline G/D=0:Ylast=D(Y%,C%(0)): C$="":Ylast=D(Y%,C%(1)) C$="":Ylast=0 /draw_area &/ I%=C%(0) C%(1)-1 50/D=D+(D(Y%,I%)+D(Y%,I%+1))*(D(X%,I%+1)-D(X%,I%))/2 =:/Y=baseline:D=D-(Ylast+Y)*(D(X%,I%+1)-D(X%,I%))/2:Ylast=Y D/ cum%:D(D%+1,I%)=D N/ E%=3 I%0 C$=get$: C$="" C$="" C$="" H0 C$="":C$="" R0 C$="":C$="" \0 C$="":C$="" f0 p0: z0tangental_baseline E0:" f1 f2 "'" from left from right "; 0 C$=get$: C$="" C$="" 0 C$="":C$="" 0 C$="":C$="" 0 0: 0cubic_baseline '0c=1/d:y1=D(Y%,C%(0)):y2=D(Y%,C%(1)) 0 I%=C%(0) C%(1) 0x1=D(X%,I%)-D(X%,C%(0)) 0x2=D(X%,I%)-D(X%,C%(1)) Y0E(I%)=y1*c^2*x2^2*(1+2*c*x1)+y2*c^2*x1^2*(1-2*c*x2)+s1/d*c^2*x1*x2^2+s2/d*c^2*x1^2*x2 0 1 1: 1integral_baseline $$1D=0:Ylast=D(Y%,C%(0)):E(C%(0))=0 .1 I%=C%(0) C%(1)-1 581D=D+(D(Y%,I%)+D(Y%,I%+1))*(D(X%,I%+1)-D(X%,I%))/2 B1t=(D(X%,I%+1)-D(X%,C%(0)))/d L1Y=D(Y%,C%(0))+s0*t 1V1D=D-(Ylast+Y)*(D(X%,I%+1)-D(X%,I%))/2:Ylast=Y `1E(I%+1)=D j1 &t1 I%=C%(0) C%(1):E(I%)=E(I%)/D: ~1 1: 1ݤbaseline 1 C$="":=D(Y%,C%(0)) 1 C$="":=D(Y%,C%(1)) 1 C$="":=0 1t=(D(X%,I%)-D(X%,C%(0)))/d 1 C$="":=D(Y%,C%(0))+s0*t 1 C$="":=D(Y%,C%(0))+s1*t "1 C$="":=D(Y%,C%(1))-s2*(1-t) 1 C$="":=E(I%) I1 C$="":=(D(Y%,C%(0))+s1*t)*(1-E(I%))+(D(Y%,C%(1))-s2*(1-t))*(E(I%)) 1: 2draw_area 0 2x=(D(X%,C%(0))+D(X%,C%(1))-2*XL)/(XU-XL)*400 02y=(D(Y%,C%(0))+D(Y%,C%(1))-2*YL)/(YU-YL)*400 2 E%=3:C%=C%(3) C%=C%(0) 8(2(D(X%,C%)-XL)/(XU-XL)*800,(D(Y%,C%)-YL)/(YU-YL)*800 22 C%(1)-C%(0)<2:Dxr <2 I%=C%(0) C%(1) &F2 E%=3: I%C%(2):Ddr P2Y=baseline 1Z2(D(X%,I%)-XL)/(XU-XL)*800,(Y-YL)/(YU-YL)*800 d2 n2 E%=3:C%=C%(2) C%=C%(1) 8x2(D(X%,C%)-XL)/(XU-XL)*800,(D(Y%,C%)-YL)/(YU-YL)*800 2 2: 2cummulative_area *2D%=D%+1:D$(D%)="area (%)":Y2%=D%:T2%=1 2 I%=0 C%(0):D(D%,I%)=0: 2 I%=C%(1) N%:D(D%,I%)=D: )2 I%=0 N%:D(D%,I%)=D(D%,I%)*100/D: (2draw_area:Y2log%=:scale:_y2_axis 72draw_curve(XL,XU,Y2L,Y2U,X%,Y2%,0,C%(0),C%(1),T2%) 2 2: 2change >2Z(0,0)=D(Y%,C%(1))-D(Y%,C%(0)):T$(0)="change : "+(Z(0,0)) 23draw_change:display_result(x,y):draw_change 3 3: "3draw_change 0,3x=(D(X%,C%(0))+D(X%,C%(1))-2*XL)/(XU-XL)*400 063y=(D(Y%,C%(0))+D(Y%,C%(1))-2*YL)/(YU-YL)*400 C@3x1=(D(X%,C%(0))-XL)/(XU-XL)*800:y1=(D(Y%,C%(0))-YL)/(YU-YL)*800 CJ3x2=(D(X%,C%(1))-XL)/(XU-XL)*800:y2=(D(Y%,C%(1))-YL)/(YU-YL)*800 T3x1,y1:x2,y1:x2-8,y1+8*((y1>y2)-(y2>y1)):x2,y1:x2+8,y1+8*((y1>y2)-(y2>y1)):x2,y1:x2,y2:x2-8,y2+8*((y10:T$(0)=T$(0)+" "+(merror) D4T$(1)="intercept : "+(c): cerror>0:T$(1)=T$(1)+" "+(cerror) .&4draw_line:display_result(x,y):draw_line 04 B$="": I:4:" f1 f2 "'" continue read point(s) "; D4 A$=get$: A$="" A$="" N4 A$="":read_points X4 b4: l4draw_line 0v4x=(D(X%,C%(0))+D(X%,C%(1))-2*XL)/(XU-XL)*400 84y=(m*D(X%,C%(0))+m*D(X%,C%(1))-2*YL+2*c)/(YU-YL)*400 B4(D(X%,C%(0))-XL)/(XU-XL)*800,(m*D(X%,C%(0))-YL+c)/(YU-YL)*800 B4(D(X%,C%(1))-XL)/(XU-XL)*800,(m*D(X%,C%(1))-YL+c)/(YU-YL)*800 4 4: 4read_points $4p=1: C$=" y:": Y%=Y2%:C$="y':" 4@%=&01000606::4,fore:*FX15 7461,0);" f7 f8 ";61,1);" mark exit "; <4 4,x,y-16:1,0,32:4,x-4,y-4:1,8,8:4,x-4,y+4:1,8,-8 54A(X%)=(x*(XU-XL))/800+XL:A(Y%)=(y*(YU-YL))/800+YL 413,0);"x:";29,0);C$; 4 p=1:invert *516,0);12," ")+(A(X%)),11):normal  5 p=2:invert *533,0);12," ")+(A(Y%)),11):normal 5A=get: A=9:p=p+1: p>2:p=1 :*54,x,y-16:1,0,32:4,x-4,y-4:1,8,8:4,x-4,y+4:1,8,-8 /45 A=45 (A>47 A<58) A=155:find_point3 >5x=x+((A=136)-(A=137)) /H5y=(m*((x*(XU-XL))/800+XL)-YL+c)/(YU-YL)*800 R5 A=151 A=152 5\5 A=151:X=A(X%):Y=A(Y%):B$=(145-(Y2%=Y%)):point f5 A=152 p5 z5: 5find_point3 15invert:16*p-(p=2),0);(11);16*p-(p=2),0); W5 p=1:A(X%)=numeric_input(pi%) p=2:A(Y%)=numeric_input(pi%):A(X%)=(A(Y%)-c)/m (5x=(A(X%)-XL)*800/(XU-XL):A=0:normal 5 5: 5step 5Z%=Y% >5 E%=1:M1=slope(C%(0)-3,7) M1=slope(C%(0),C%(5)-C%(0)) 5C1=sumy/n-M1*sumx/n >5 E%=1:M2=slope(C%(1)-3,7) M2=slope(C%(4),C%(1)-C%(4)) 5C2=sumy/n-M2*sumx/n 5M3=0:C3=0 96 I%=C%(0) C%(1):M=slope(I%-2,5):C=sumy/n-M*sumx/n %6 (M)>(M3):M3=M:C3=C:I=D(X%,I%) 6 ;$6 E%=5:M3=slope(C%(2),C%(3)-C%(2)):C3=sumy/n-M3*sumx/n G.6A=(C3-C1)/(M1-M3):B=(C2-C3)/(M3-M2):C=(A+B)/2:D=(M2*C+C2)-(M1*C+C1) &86T$(0)=" onset: "+(A):Z(0,0)=I =B6 CL6 C>=I:T$(1)="inflection: "+(I):T$(2)=" midpoint: "+(C) 7V6T$(3)=" endset: "+(B):T$(4)=" change: "+(D) .`6draw_step:display_result(x,y):draw_step j6 t6: ~6draw_step 56x=(C-XL)/(XU-XL)*800:y=((M3*C+C3)-YL)/(YU-YL)*800 D6(D(X%,C%(0))-XL)/(XU-XL)*800,(M1*D(X%,C%(0))+C1-YL)/(YU-YL)*800 06(A-XL)/(XU-XL)*800,(M1*A+C1-YL)/(YU-YL)*800 06(B-XL)/(XU-XL)*800,(M2*B+C2-YL)/(YU-YL)*800 D6(D(X%,C%(1))-XL)/(XU-XL)*800,(M2*D(X%,C%(1))+C2-YL)/(YU-YL)*800 6 6: 6step2 D6Z%=Y%: E%=1:M1=slope(C%(0)-3,7) M1=slope(C%(0),C%(3)-C%(0)) R6C1=sumy/n-M1*sumx/n: E%=1:M2=slope(C%(1)-3,7) M2=slope(C%(2),C%(1)-C%(2)) 6C2=sumy/n-M2*sumx/n:A=0:Y=0 16 I%=C%(0)+1 C%(1):Ylast=Y:Y=M1*D(X%,I%)+C1 ?7A=A+(D(X%,I%)-D(X%,I%-1))*(D(Y%,I%)+D(Y%,I%-1)-Y-Ylast)/2: I 7step=(D(X%,C%(1))-D(X%,C%(0)))/10:F=D(X%,C%(1)):C=F:D=M2*C+C2-M1*C-C1 R7 F=F-step:E=M2*F+C2-M1*F-C1:B=(C-F)*(E+D)/2: (A)<(B):F=F+step:step=step/10 7 step<0.001 #(7T$(0)="fictive: "+(F):Z(0,0)=F 027draw_step2:display_result(x,y):draw_step2 <7 F7: P7draw_step2 EZ7x=(F-XL)/(XU-XL)*800:y=(D(Y%,C%(0)+D(Y%,C%(1))/2)-YL)/(YU-YL)*800 Dd7(D(X%,C%(0))-XL)/(XU-XL)*800,(M1*D(X%,C%(0))+C1-YL)/(YU-YL)*800 0n7(F-XL)/(XU-XL)*800,(M1*F+C1-YL)/(YU-YL)*800 0x7(F-XL)/(XU-XL)*800,(M2*F+C2-YL)/(YU-YL)*800 D7(D(X%,C%(1))-XL)/(XU-XL)*800,(M2*D(X%,C%(1))+C2-YL)/(YU-YL)*800 7 7: 7mean 67n%=0:t=0: I%=C%(0) C%(1):n%=n%+1:t=t+D(Y%,I%): 67m=t/n%:t=0: I%=C%(0) C%(1):t=t+(D(Y%,I%)-m)^2: H7@%=&90A:T$(0)="mean : "+(m):Z(0,0)=m:T$(1)=" s.d : "+(t^.5/(n%-1)) .7draw_mean:display_result(x,y):draw_mean 7 7: 7draw_mean E7x=(D(X%,C%(0))+D(X%,C%(1))-2*XL)/(XU-XL)*400:y=(m-YL)/(YU-YL)*800 C7(D(X%,C%(0))-XL)/(XU-XL)*800,y:(D(X%,C%(1))-XL)/(XU-XL)*800,y 8 8: 8curve "8t=1E-30:E(0)=0:n=0:o1%=o%+2 8,8 I%=C%(0) C%(1):E(0)=E(0)+D(Y%,I%):n=n+1::A(0)=n 68 J%=1 o%:D=0 1@8 I%=C%(0) C%(1):D=D+D(Y%,I%)*D(X%,I%)^J%: J8E(J%)=D: T8 J%=1 2*o%:A=0 (^8 I%=C%(0) C%(1):A=A+D(X%,I%)^J%: h8A(J%)=A: 1r8 J%=0 o%: K%=0 o%:Z(J%,K%)=A(J%+K%):: "|8 I%=0 o%:Z(I%,o1%)=E(I%): 8 I%=0 o%:D=0 28 J%=I% o%:E=Z(J%,I%):F=(E): F>D:D=E:G%=J% 8 8 F=0:T$(J%)=T$(J%)+"+" v9T$(J%)=T$(J%)+(A(I%))+"x" "9 I%>1:T$(J%)=T$(J%)+"^"+(I%) 9 9sumy2=0:sumz2=0:sumyz=0 79 I%=C%(0) C%(1):Y=E(I%)-sumy/n:Z=D(Y%,I%)-sumz/n 59sumy2=sumy2+Y^2:sumz2=sumz2+Z^2:sumyz=sumyz+Y*Z: D9 J%<4:T$(J%+1)=" corr. coeff.: "+(sumyz/(sumy2^0.5*sumz2^0.5)) )9display_result(x,y):draw_polynomial 9 9: 9draw_polynomial A9 X=D(X%,C%(0)) D(X%,C%(1)) (D(X%,C%(1))-D(X%,C%(0)))/800 $9Y=0: J%=0 o%:Y=Y+A(J%)*X^J%: -9x=(X-XL)/(XU-XL)*800:y=(Y-YL)/(YU-YL)*800 : X=D(X%,C%(0)):x,y x,y  : :  :: *:modify 4:cum%=Y2% 8>::" f1 f2 ";: Y2%<>-1:" f3 "; 'H:51);" f6 f7 f8 "; 7R:'" x-axis y-axis ";: Y2%<>-1:" y'-axis "; '\:51);" keep remove smooth "; f: A$=get$ Yp: A$=(27) A$="" A$="" (A$="" Y2%<>-1) A$="" A$="" A$="" A$="" z: A$=(27): X: A$="" A$="" A$="" A$="":Z%=X%:YL=Y1L:YU=Y1U:Ylog%=Y1log%: A$="":A$="x" 5: A$="":A$="y":Z%=Y1%:YL=Y1L:YU=Y1U:Ylog%=Y1log% 6: A$="":A$="y'":Z%=Y2%:YL=Y2L:YU=Y2U:Ylog%=Y2log% : A$="":edit_points(-1): : A$="":edit_points(0): : A$="":edit_points(1): : A$="":smooth: ,::" f1 f2 f3 f4 "; A: A$="y" A$="y'":" f5 f6 "; " f5 "; 5: (A$="y" Y2%=-1 D%0: (D(X%,I%))-start>limit:n%=-n%:Tb} &= S%=0 D%:A(S%)=A(S%)+D(S%,I%): "=n%=n%+1:I%=I%+1: I%>N%:n%=-n% "= (n%=W% limit=0) n%<0 I,=n%=(n%): (n%0):J%=J%+1: S%=0 D%:D(S%,J%)=A(S%)/n%: 6= I%>=N% @=N%=J% J= T=: ^=edit_points(k%) 3h= (abort("WARNING: Data will be deleted!")): )r=A$="x":get_boundaries():J%=N%:N%=-1 |= I%=0 J% )= k%=-1 (I%C%(1)):tn} *= k%=0 (I%>=C%(0) I%<=C%(1)):tn} (= k%=1 (I%>C%(0) I% E$=get$: E$=(27) E$="" E$="" E$="" > E$=(27): >:" Sorting..."' &> E$="":reverse_order: 70>1,28);"Sorting data...":T%=(N%+1)/(2):T%=2^T%-1 &:>: J%=0 N%-T%: I%=J% 0 -T% (D> E$="": D(X%,I%)>D(X%,I%+1):swop (N> E$="": D(X%,I%): b>T%=T%/2: T%=0 l> v>: >swop => S%=0 D%:D=D(S%,I%+1):D(S%,I%+1)=D(S%,I%):D(S%,I%)=D: > >: >reverse_order > I%=0 N%/2: S%=0 D% 1>D=D(S%,I%):D(S%,I%)=D(S%,N%-I%):D(S%,N%-I%)=D >: > >: >equation '> A$="x":E$="":equation_1:E$=B$: `>: A$="y":" f1 f2 ";: Y2%>-1:" f3 f4 f5 "; _? A$="y":'" y=a(y+b)/c+d y=ay+bx+c ";: Y2%>-1:" y=ay+by' y=ay/by' y=ay*by' "; ? A$="y'":" f1 f2 f3 f4 f5 "'" y'=a(y'+b)/c+d y'=ay'+bx+c y'=ay'+by y'=ay'/by y'=ay'*by "; ? E$=get$ H ? E$="" E$="" ((E$="" E$="" E$="") Y2%>-1) E$=(27) )*? E$="":equation_1: B$=(27):dx~ )4? E$="":equation_2: B$=(27):dx~ >? E$="":equation_3 H? E$="":equation_4("/") R? E$="":equation_4("*") \? f?: p?equation_1 #z?get_boundaries(): B$=(27): ? F$="":learn%=learn%*3 ?A(0)=1:A(1)=0:A(2)=1:A(3)=0 c?:2);A$;4);" = ";A(0);17);"(";A$;20);"+";21);A(1);32);")/";34);A(2);45);"+";46);A(3); ?6,0);:A(0)=number(A(0),) !?21,0);:A(1)=number(A(1),) ? A=136:tb !?34,0);:A(2)=number(A(2),) ? A=136:tl !?46,0);:A(3)=number(A(3),) ? A=136:d@ @? I%=C%(0) C%(1):D(Z%,I%)=A(0)*(D(Z%,I%)+A(1))/A(2)+A(3): D? A$="x":XL=A(0)*(XL+A(1))/A(2)+A(3):XU=A(0)*(XU+A(1))/A(2)+A(3) ? XL>XU:X=XU:XU=XL:XL=X @ F$="":learn%=learn%/3 @ B$="" A$="x":XL=XU @ $@: .@equation_2 #8@get_boundaries(): B$=(27): B@ F$="":learn%=learn%*3 L@A(0)=1:A(1)=0:A(2)=0 BV@:2);A$;4);" = ";A(0);18);A$;20);"+";A(1);32);"x+";A(2); `@6,0);:A(0)=number(A(0),) !j@21,0);:A(1)=number(A(1),) t@ A=136:@`@ !~@34,0);:A(2)=number(A(2),) @ A=136:@j@ B@ I%=C%(0) C%(1):D(Z%,I%)=A(0)*D(Z%,I%)+A(1)*D(X%,I%)+A(2): @ F$="":learn%=learn%/3 @ @: @equation_3 @ F$="":learn%=learn%*3 @A(0)=1:A(1)=0 8@:2);A$;4);" = ";A(0);18);A$;20);"+";A(1);32); @ A$="y":"y'" "y" @6,0);:A(0)=number(A(0),) !@21,0);:A(1)=number(A(1),) A A=136:`l@  A A$="y":Y%=Y2% Y%=Y1% AV%=Z%: D%-1:s%=1 JB Ylog%:YL=(YL):YU=(YU) &TB J%=0 1:C%(J%)=cursor(J%,2,s%) ^B Xlog%:A(X%)=(A(X%)) hB Y1log%:A(Y1%)=(A(Y1%)) &rB Y2%>-1: Y2log%:A(Y2%)=(A(Y2%)) P|B A$="x" A$="y":(A(X%)-XL)/(XU-XL)*800,(A(Y1%)-Y1L)/(Y1U-Y1L)*800:1,0,16 \B (A$="x" A$="y'") Y2%>-1:(A(X%)-XL)/(XU-XL)*800,(A(Y2%)-Y2L)/(Y2U-Y2L)*800:1,0,16 Bfrom_log: /B C%(0)>C%(1):C%=C%(0):C%(0)=C%(1):C%(1)=C% B B: Blog /B I%=0 N%: D(Z%,I%)<1E-30:D(Z%,I%)=1E-30 BD(Z%,I%)=(D(Z%,I%)) B BBD$(Z%)="log["+D$(Z%)+"]": A$="x" XL>1E-30:XL=(XL):XU=(XU) B B: Bantilog )C I%=0 N%:D(Z%,I%)=10^(D(Z%,I%)): ;CD$(Z%)="10^["+D$(Z%)+"]": A$="x":XL=10^(XL):XU=10^(XU) C &C: 0Cpower ":C:" ";A$;"^";:n=number(1,) 3DC I%=0 N%: D(Z%,I%)<>0:D(Z%,I%)=(D(Z%,I%))^n NC XC A$="x":XL=XL^n:XU=XU^n bC XL>XU:X=XU:XU=XL:XL=X lCD$(Z%)="["+D$(Z%)+"]^"+(n) vC C: Cderivative 0C" d";A$;"/dx";23,0);"derivative width? "; %CW%=number(5,):V%=Z%: W%<1:W%=5 N%:K%=N% Dx=D(X%,K%):y=D(Z%,K%):n=n+1 ; Dsumx=sumx+x:sumx2=sumx2+x^2:sumy=sumy+y:sumxy=sumxy+x*y D  D n=1 (n*sumx2=sumx^2):=0 )*D=(n*sumxy-sumx*sumy)/(n*sumx2-sumx^2) 4D: >Dintegral ?HD" Integral of ";A$;" (dx)";23,0);"integration factor? "; 5RDm=number(1,):58,0);"offset? ";:c=number(0,) \DD=0:V%=Z%: m=0:m=1 Z%:X%=X%-1 D Y1%>Z%:Y1%=Y1%-1 D E: Eexit KE changed_flag%:A$="": A$="WARNING: Existing data has not been saved!" $Ez%=abort(A$) .E 8E: BEreset RLE (changed_flag%): (abort("WARNING: Existing data has not been saved!")): @VE abort("WARNING: All settings will revert to start up!"): `E jE: tEݤabort(M$) *~E (warn%) (learn%=-1 learn%=1):= @E:" f1 f2 "'" continue cancel ";M$; ,E Q$=get$: Q$="" Q$=""::=(Q$="")