Home » Archimedes archive » Acorn User » AU 1997-04 A.adf » Features1 » StarInfo/Goodliffe/!GraphPlus/!RunImage
StarInfo/Goodliffe/!GraphPlus/!RunImage
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Acorn User » AU 1997-04 A.adf » Features1 |
Filename: | StarInfo/Goodliffe/!GraphPlus/!RunImage |
Read OK: | ✔ |
File size: | 1CDAD bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10REM ++----------------------++ 20REM || GraphPlus (RunImage) || 30REM || by Pete Goodliffe || 40REM || LEN Trax Software 1995 || 50REM || v3.08 10-Jan-95 || 60REM ++----------------------++ 70: 80ONERROR ERROR0,"Startup error; "+REPORT$+" "+STR$~(ERL) 90SYS"Hourglass_On" 100PROCinit_init:PROCinit_prog:PROCinit_wimp:PROCinit_template 110ONERROR PROCerror 120SYS"Hourglass_Off" 130PROCinit_firstwindow 140mask%=1 150: 160REPEAT 170SYS"Wimp_Poll",mask%,poll%TOevent% 180CASEevent%OF 190 WHEN1 :PROCwindow_requestRedraw 200 WHEN2 :PROCwindow_requestOpen 210 WHEN3 :PROCwindow_requestClose 220 WHEN6 :PROCmouse_click 230 WHEN7 :PROCdrag_userdragbox 240 WHEN8 :PROCkeypressed 250 WHEN9 :PROCmenu_selection 260 WHEN17:PROCmessage_process 270 WHEN18:PROCmessage_process 280ENDCASE 290UNTILFALSE 300: 310REM ********** Initialise ********** 320: 330DEFPROCinit_init 340DIMblock%&1000,poll%256,mess%256,data%100 350ENDPROC 360: 370DEFPROCinit_prog 380graph_window%=FALSE 390: 400DIM font_list%10280,font_path%256 410font_counter%=0:font_c%=0 420DIM file_temp%256:$file_temp%="Template":file_status%=0 430DIM file_graph%256:$file_graph%="GraphFile" 440DIM group_map%28,group_data%251,pie_palette% 64 450flag_fiddled%=FALSE 460: 470REM Graph info 480graph_xdiv=1 490graph_ydiv=1 500graph_xsdiv=.5 510graph_ysdiv=.5 520graph_title%=1:graph_xaxis%=1:graph_yaxis%=1 530DIMs_title%40,s_xaxis%40,s_yaxis%40 540graph_xg%=1:graph_yg%=2:graph_xcal%=1:graph_ycal%=1 550graph_exp%=1:graph_es%=1:graph_ef%=1 560DIM text% 40 570text_titlec=0 580graph_titlec=0 590text_titlex=20 600text_titley=25 610text_axisc=0 620graph_axisc=0 630text_axisx=10 640text_axisy=10 650text_keyc=0 660graph_keyc=0 670text_keyx=10 680text_keyy=10 690graph_best%=2 700DIMdata_back%3,graph_back%3 710?graph_back%=0:graph_back%?1=&80:graph_back%?2=&80:graph_back%?3=&F0 720!data_back%=!graph_back% 730graph_box%=TRUE 740graph_key%=FALSE 750graph_3D%=FALSE 760graph_outline%=0 770graph_groupsize=0 780graph_barwidth=0 790graph_barsize=0 800graph_bartype%=0 810graph_barmargin%=0 820graph_type%=1:handle_format%=0 830graph_xmin=0:graph_ymin=0 840graph_xmax=0:graph_ymax=0 850graph_xscale=0:graph_yscale=0 860graph_overlay%=FALSE 870: 880REM Data file info 890data_length%=9 900data_width%=4 910data_xmin=0 920data_ymin=0 930data_xmax=7 940data_ymax=6 950: 960update_faster%=FALSE 970DIMmenu_fontlist%6172 980PROCfont_dothebusiness 990ENDPROC 1000: 1010DEFPROCinit_wimp 1020menu_current%=0 1030SYS"Wimp_Initialise",200,&4B534154,"GraphPlus"TOversion%,task% 1040!block%=-1:block%!4=0:block%!8=0:block%!12=68:block%!16=68:block%!20=&301A:$(block%+24)="!GraphPlus":SYS"Wimp_CreateIcon",,block%TOI% 1041$block%="<GraphPlus$Dir>.Sprites":SYS"OS_ReadModeVariable",-1,5TO,,N:IFN<2:$block%+="22" 1050N=OPENIN$block% 1060M=EXT#N:CLOSE#N 1070DIM sprites% M+20:!sprites%=M+20 1080SYS"OS_SpriteOp",10+256,sprites%,block% 1090PROCinit_windows:PROCinit_menus 1100SYS"XOS_SWINumberFromString",,"DragASprite_Start" TO dstart%; N 1110IF(N AND 1) dstart%=0 1120ENDPROC 1130: 1140: 1150DEFPROCinit_windows 1160DIM ind_inf%139,ind_dp%260,ind_sa%269,ind_sg%269,ind_fnt%173,ind_map%99,ind_lab%69,ind_bck%91,ind_grp%289,ind_frm%92,ind_pn%995,ind_upd%86 1170$block%="<Obey$Dir>.Templates":SYS"Wimp_OpenTemplate",,block% 1180$poll%="Info" 1190SYS"Wimp_LoadTemplate",,block%,ind_inf%,ind_inf%+139,-1,poll%,0 1200block%!64=sprites% 1210SYS"Wimp_CreateWindow",,block%TOhandle_info% 1220$poll%="Group" 1230SYS"Wimp_LoadTemplate",,block%,ind_grp%,ind_grp%+289,-1,poll%,0 1240block%!64=sprites% 1250SYS"Wimp_CreateWindow",,block%TOhandle_group% 1260$poll%="Format" 1270SYS"Wimp_LoadTemplate",,block%,ind_frm%,ind_frm%+92,-1,poll%,0 1280block%!64=sprites% 1290SYS"Wimp_CreateWindow",,block%TOhandle_format% 1300$poll%="Pane" 1310SYS"Wimp_LoadTemplate",,block%,ind_pn%,ind_pn%+995,-1,poll%,0 1320block%!64=sprites% 1330SYS"Wimp_CreateWindow",,block%TOhandle_pane% 1340$poll%="Map" 1350SYS"Wimp_LoadTemplate",,block%,ind_map%,ind_map%+99,-1,poll%,0 1360block%!64=sprites% 1370SYS"Wimp_CreateWindow",,block%TOhandle_map% 1380$poll%="Back" 1390SYS"Wimp_LoadTemplate",,block%,ind_bck%,ind_bck%+91,-1,poll%,0 1400block%!64=sprites% 1410SYS"Wimp_CreateWindow",,block%TOhandle_back% 1420$poll%="Font" 1430SYS"Wimp_LoadTemplate",,block%,ind_fnt%,ind_fnt%+173,-1,poll%,0 1440block%!64=sprites% 1450SYS"Wimp_CreateWindow",,block%TOhandle_font% 1460$poll%="SaveAs" 1470SYS"Wimp_LoadTemplate",,block%,ind_sa%,ind_sa%+269,-1,poll%,0 1480SYS"Wimp_CreateWindow",,block%TOhandle_save% 1490$poll%="SaveGraph" 1500SYS"Wimp_LoadTemplate",,block%,ind_sg%,ind_sg%+269,-1,poll%,0 1510SYS"Wimp_CreateWindow",,block%TOhandle_create% 1520$poll%="Label" 1530SYS"Wimp_LoadTemplate",,block%,ind_lab%,ind_lab%+69,-1,poll%,0 1540block%!64=sprites% 1550SYS"Wimp_CreateWindow",,block%TOhandle_label% 1560$poll%="Datapath" 1570SYS"Wimp_LoadTemplate",,block%,ind_dp%,ind_dp%+260,-1,poll%,0 1580SYS"Wimp_CreateWindow",,block%TOhandle_datapath% 1590$poll%="Update" 1600SYS"Wimp_LoadTemplate",,block%,ind_upd%,ind_upd%+86,-1,poll%,0 1610block%!64=sprites% 1620SYS"Wimp_CreateWindow",,block%TOhandle_update% 1630SYS"Wimp_CloseTemplate" 1640ENDPROC 1650: 1660DEFPROCinit_menus:DIMmenu_bar%244,menu_win%196,menu_style%196,menu_groups%76,menu_group%172,menu_map%196,menu_best%76,menu_font%100,menu_file%100,menu_palette%412,menu_task%48 1670$menu_bar%="GraphPlus" 1680menu_bar%?12=7:menu_bar%?13=2:menu_bar%?14=7:menu_bar%?15=0:menu_bar%!16=124:menu_bar%!20=44:menu_bar%!24=0 1690PROCmenu_additem(0,menu_bar%,0,handle_info%,&7009021,"Info") 1700PROCmenu_additem(1,menu_bar%,0,menu_style%,&7009021,"Style") 1710PROCmenu_additem(2,menu_bar%,0,menu_groups%,&7009021,"Groups") 1720PROCmenu_additem(3,menu_bar%,2,menu_file%,&7009021,"File") 1730PROCmenu_additem(4,menu_bar%,1,-1,&7009021,"Line") 1740PROCmenu_additem(5,menu_bar%,0,-1,&7009021,"Bar") 1750PROCmenu_additem(6,menu_bar%,0,-1,&7009021,"Pie") 1760PROCmenu_additem(7,menu_bar%,2,-1,&7009021,"Table") 1770PROCmenu_additem(8,menu_bar%,128,-1,&7009021,"Quit") 1780$menu_win%="Format" 1790menu_win%?12=7:menu_win%?13=2:menu_win%?14=7:menu_win%?15=0:menu_win%!16=170:menu_win%!20=44:menu_win%!24=0 1800PROCmenu_additem(0,menu_win%,0,menu_style%,&7009021,"Style") 1810PROCmenu_additem(1,menu_win%,0,menu_groups%,&7009021,"Groups") 1820PROCmenu_additem(2,menu_win%,2,menu_file%,&7009021,"File") 1830PROCmenu_additem(3,menu_win%,1,-1,&7009021,"Line") 1840PROCmenu_additem(4,menu_win%,0,-1,&7009021,"Bar") 1850PROCmenu_additem(5,menu_win%,0,-1,&7009021,"Pie") 1860PROCmenu_additem(6,menu_win%,128,-1,&7009021,"Table") 1870$menu_style%="Style" 1880menu_style%?12=7:menu_style%?13=2:menu_style%?14=7:menu_style%?15=0:menu_style%!16=170:menu_style%!20=44:menu_style%!24=0 1890PROCmenu_additem(0,menu_style%,0,-1,&7009021,"Key") 1900PROCmenu_additem(1,menu_style%,9,handle_back%,&7009021,"Background") 1910PROCmenu_additem(2,menu_style%,0,menu_font%,&7009021,"Fonts") 1920PROCmenu_additem(3,menu_style%,0,menu_best%,&7009021,"Best fit") 1930PROCmenu_additem(4,menu_style%,0,menu_palette%,&7009021,"Palette") 1940PROCmenu_additem(5,menu_style%,0,-1,&7009021,"3D graphs") 1950PROCmenu_additem(6,menu_style%,129,-1,&7009021,"Outline") 1960$menu_font%="Fonts" 1970menu_font%?12=7:menu_font%?13=2:menu_font%?14=7:menu_font%?15=0:menu_font%!16=108:menu_font%!20=44:menu_font%!24=0 1980PROCmenu_additem(0,menu_font%,8,handle_font%,&7009021,"Title") 1990PROCmenu_additem(1,menu_font%,8,handle_font%,&7009021,"Axis") 2000PROCmenu_additem(2,menu_font%,136,handle_font%,&7009021,"Key") 2010$menu_best%="Best fit" 2020menu_best%?12=7:menu_best%?13=2:menu_best%?14=7:menu_best%?15=0:menu_best%!16=108:menu_best%!20=44:menu_best%!24=0 2030PROCmenu_additem(0,menu_best%,0,-1,&7009021,"X on Y") 2040PROCmenu_additem(1,menu_best%,129,-1,&7009021,"Y on X") 2050$menu_file%="File" 2060menu_file%?12=7:menu_file%?13=2:menu_file%?14=7:menu_file%?15=0:menu_file%!16=140:menu_file%!20=44:menu_file%!24=0 2070PROCmenu_additem(0,menu_file%,8,handle_save%,&7009021,"Save") 2080PROCmenu_additem(1,menu_file%,8,handle_datapath%,&7009021,"Datapath") 2090PROCmenu_additem(2,menu_file%,128,-1,&7009021,"Default") 2100$menu_groups%="Groups" 2110menu_groups%?12=7:menu_groups%?13=2:menu_groups%?14=7:menu_groups%?15=0:menu_groups%!16=170:menu_groups%!20=44:menu_groups%!24=0 2120PROCmenu_additem(0,menu_groups%,0,menu_map%,&7009021,"Map") 2130PROCmenu_additem(1,menu_groups%,128,menu_group%,&7009021,"Style") 2140$menu_group%="Group style" 2150menu_group%?12=7:menu_group%?13=2:menu_group%?14=7:menu_group%?15=0:menu_group%!16=140:menu_group%!20=44:menu_group%!24=0 2160PROCmenu_additem(0,menu_group%,8,handle_group%,&7009021,"Group 1") 2170PROCmenu_additem(1,menu_group%,8,handle_group%,&7009021,"Group 2") 2180PROCmenu_additem(2,menu_group%,8,handle_group%,&7009021,"Group 3") 2190PROCmenu_additem(3,menu_group%,8,handle_group%,&7009021,"Group 4") 2200PROCmenu_additem(4,menu_group%,8,handle_group%,&7009021,"Group 5") 2210PROCmenu_additem(5,menu_group%,136,handle_group%,&7009021,"Group 6") 2220$menu_map%="Map groups" 2230menu_map%?12=7:menu_map%?13=2:menu_map%?14=7:menu_map%?15=0:menu_map%!16=140:menu_map%!20=44:menu_map%!24=0 2240PROCmenu_additem(0,menu_map%,8,handle_map%,&7009021,"Group 1") 2250PROCmenu_additem(1,menu_map%,8,handle_map%,&7009021,"Group 2") 2260PROCmenu_additem(2,menu_map%,8,handle_map%,&7009021,"Group 3") 2270PROCmenu_additem(3,menu_map%,8,handle_map%,&7009021,"Group 4") 2280PROCmenu_additem(4,menu_map%,8,handle_map%,&7009021,"Group 5") 2290PROCmenu_additem(5,menu_map%,8,handle_map%,&7009021,"Group 6") 2300PROCmenu_additem(6,menu_map%,136,handle_label%,&7009021,"Labels") 2310$menu_palette%="Palette" 2320menu_palette%?12=7:menu_palette%?13=2:menu_palette%?14=7:menu_palette%?15=0:menu_palette%!16=108:menu_palette%!20=44:menu_palette%!24=0 2330PROCmenu_additem(0,menu_palette%,8,handle_back%,&7009021,"Pie 1") 2340PROCmenu_additem(1,menu_palette%,8,handle_back%,&7009021,"Pie 2") 2350PROCmenu_additem(2,menu_palette%,8,handle_back%,&7009021,"Pie 3") 2360PROCmenu_additem(3,menu_palette%,8,handle_back%,&7009021,"Pie 4") 2370PROCmenu_additem(4,menu_palette%,8,handle_back%,&7009021,"Pie 5") 2380PROCmenu_additem(5,menu_palette%,8,handle_back%,&7009021,"Pie 6") 2390PROCmenu_additem(6,menu_palette%,8,handle_back%,&7009021,"Pie 7") 2400PROCmenu_additem(7,menu_palette%,8,handle_back%,&7009021,"Pie 8") 2410PROCmenu_additem(8,menu_palette%,8,handle_back%,&7009021,"Pie 9") 2420PROCmenu_additem(9,menu_palette%,8,handle_back%,&7009021,"Pie 10") 2430PROCmenu_additem(10,menu_palette%,8,handle_back%,&7009021,"Pie 11") 2440PROCmenu_additem(11,menu_palette%,8,handle_back%,&7009021,"Pie 12") 2450PROCmenu_additem(12,menu_palette%,8,handle_back%,&7009021,"Pie 13") 2460PROCmenu_additem(13,menu_palette%,8,handle_back%,&7009021,"Pie 14") 2470PROCmenu_additem(14,menu_palette%,8,handle_back%,&7009021,"Pie 15") 2480PROCmenu_additem(15,menu_palette%,136,handle_back%,&7009021,"Pie 16") 2490$menu_fontlist%="Palette" 2500menu_fontlist%?12=7:menu_fontlist%?13=2:menu_fontlist%?14=7:menu_fontlist%?15=0:menu_fontlist%!20=44:menu_fontlist%!24=0 2510$menu_task%="GraphPlus" 2520menu_task%?12=7:menu_task%?13=2:menu_task%?14=7:menu_task%?15=0:menu_task%!16=124:menu_task%!20=44:menu_task%!24=0 2530PROCmenu_additem(0,menu_task%,128,-1,&7009021,"Faster") 2540ENDPROC 2550: 2560DEFPROCmenu_additem(item%,addr%,flag%,pointer%,icon%,item$):addr%!(28+(item%*24))=flag%:addr%!(32+(item%*24))=pointer%:addr%!(36+(item%*24))=icon% 2570IFitem$<>"PommeDeTerre"$(addr%+40+(item%*24))=item$ELSEaddr%!(40+(item%*24))=B%:addr%!(44+(item%*24))=V%:addr%!(48+(item%*24))=L% 2580ENDPROC 2590: 2600DEFPROCmenu_tick(item%,addr%,flag%):addr%!(28+(item%*24))=flag%:ENDPROC 2610: 2620DEFPROCinit_firstwindow 2630SYS"OS_ReadModeVariable",-1,11TO,,J% 2640SYS"OS_ReadModeVariable",-1,12TO,,K% 2650SYS"OS_ReadModeVariable",-1,5TO,,M:K%=K%*(2^M) 2660SYS"OS_ReadModeVariable",-1,4TO,,M:J%=J%*(2^M) 2670J%=J%DIV2-268:K%=K%DIV2+166 2680SYS"Wimp_CreateMenu",,handle_info%,J%,K% 2690ENDPROC 2700: 2710DEFPROCinit_template 2720$block%="<GraphPlus$Dir>.Default" 2730SYS"XOS_Find",&42,block%TOX%;N 2740IF(N AND1)=1ORX%=0:N=FNmessage("GraphPlus is unable to find the default file.",1):ENDPROC 2750PROCload_tempfile 2760SYS"OS_Find",0,X% 2770ENDPROC 2780: 2790: 2800REM ********** Polled routines ********** 2810: 2820REM ********** Key event ********** 2830: 2840REM This could be the start of a beautiful friendship! 2850DEFPROCkeypressed 2860IF!poll%=handle_group%:PROCgroup_return 2870IF!poll%=handle_map%:button%=4:PROCmap_return 2880IF!poll%=handle_label%ANDpoll%!24=13:button%=4:PROClabel_OK 2890IF!poll%=handle_back%:PROCback_return 2900IF!poll%=handle_font%:PROCfont_return 2910IF!poll%=handle_save%ANDpoll%!24=13:PROCsave_tempOK 2920IF!poll%=handle_create%ANDpoll%!24=13:PROCsave_createOK 2930IF!poll%=handle_pane%:PROCpane_return 2940SYS"Wimp_ProcessKey",poll%!24:ENDPROC 2950: 2960: 2970REM ********** Mouse Stuff ********** 2980: 2990DEFPROCmouse_click:LOCALbutton%,handle%,icon% 3000x%=!poll%:y%=poll%!4:button%=poll%!8:handle%=poll%!12:icon%=poll%!16 3010IFbutton%=2ANDhandle%=-2:PROCmenu_iconbar 3020IFbutton%=2AND(handle%=handle_format%ORhandle%=handle_pane%):PROCmenu_format 3030IFbutton%<>2ANDhandle%=handle_group%:PROCmenu_group 3040IFbutton%<>2ANDhandle%=handle_map%:PROCmenu_map 3050IFbutton%<>2ANDhandle%=handle_label%:PROCmenu_label 3060IFbutton%<>2ANDhandle%=handle_back%:PROCmenu_back 3070IFbutton%<>2ANDhandle%=handle_font%:PROCmenu_font 3080IFbutton%=4ANDhandle%=-2ANDgraph_window%:PROCwindow_liftgraph 3090IFbutton%=4ANDhandle%=-2ANDNOTgraph_window%:PROCwindow_opengraph 3100IFicon%=0ANDbutton%=64ANDhandle%=handle_save%:PROCdrag_startsave 3110IFbutton%<>2ANDicon%=2ANDhandle%=handle_save%:PROCsave_tempOK 3120IFicon%=0ANDbutton%=64ANDhandle%=handle_create%:PROCdrag_startcreate 3130IFbutton%<>2ANDicon%=2ANDhandle%=handle_create%:PROCsave_createOK 3140IFbutton%<>2ANDhandle%=handle_format%:PROCformat_select 3150IFbutton%<>2ANDhandle%=handle_pane%:PROCpane_select 3160IFhandle%=handle_pane%ANDicon%<>2ANDicon%<>5ANDicon%<>9ANDicon%<>11ANDicon%<>14ANDicon%<>16ANDicon%<>19ANDicon%<>23ANDicon%<>25ANDicon%<>28ANDicon%<>30ANDicon%<>46ANDicon%<>50ANDbutton%<>2:flag_fiddled%=TRUE 3170ENDPROC 3180: 3190: 3200REM ********** Menu stuff ********** 3210: 3220DEFPROCmenu_iconbar:SYS"Wimp_CreateMenu",,menu_bar%,x%-64,540:menu_current%=1:ENDPROC 3230: 3240DEFPROCmenu_format:SYS"Wimp_CreateMenu",,menu_win%,x%-32,y%:menu_current%=2:ENDPROC 3250: 3260DEFPROCmenu_opengroup 3270group%=poll%!40 3280PROCgroup_calculate 3290SYS"Wimp_CreateSubMenu",,handle_group%,poll%!24,poll%!28 3300ENDPROC 3310: 3320DEFPROCmenu_reopengroup 3330PROCgroup_calculate 3340SYS"Wimp_ForceRedraw",handle_group%,0,-1024,1279,0 3350ENDPROC 3360: 3370DEFPROCmenu_openmap 3380group%=poll%!40 3390PROCmap_calculate 3400SYS"Wimp_CreateSubMenu",,handle_map%,poll%!24,poll%!28 3410ENDPROC 3420: 3430DEFPROCmenu_reopenmap 3440PROCmap_calculate 3450SYS"Wimp_ForceRedraw",handle_map%,0,-1024,1279,0 3460ENDPROC 3470: 3480DEFPROCmenu_openlabel 3490group%=6:$(ind_lab%+38)=STR$(group_map%!24) 3500SYS"Wimp_CreateSubMenu",,handle_label%,poll%!24,poll%!28 3510ENDPROC 3520: 3530DEFPROCmenu_reopenlabel 3540group%=6:$(ind_lab%+38)=STR$(group_map%!24) 3550SYS"Wimp_ForceRedraw",handle_label%,0,-1024,1279,0 3560ENDPROC 3570: 3580DEFPROCmenu_openback 3590group%=255:PROCback_calculate 3600SYS"Wimp_CreateSubMenu",,handle_back%,poll%!24,poll%!28 3610PROCcaret_setpos(handle_back%,5,FNlen(ind_bck%+20)) 3620ENDPROC 3630: 3640DEFPROCmenu_reopenback 3650PROCback_calculate 3660SYS"Wimp_ForceRedraw",handle_back%,0,-1024,1279,0 3670PROCcaret_setpos(handle_back%,5,FNlen(ind_bck%+20)) 3680ENDPROC 3690: 3700DEFPROCmenu_openpalette 3710group%=poll%!40 3720PROCback_calculate 3730SYS"Wimp_CreateSubMenu",,handle_back%,poll%!24,poll%!28 3740ENDPROC 3750: 3760DEFPROCmenu_openfont 3770group%=poll%!40 3780PROCfont_calculate 3790SYS"Wimp_CreateSubMenu",,handle_font%,poll%!24,poll%!28 3800ENDPROC 3810: 3820DEFPROCmenu_reopenfont 3830PROCfont_calculate 3840SYS"Wimp_ForceRedraw",handle_font%,0,-1024,1279,0 3850ENDPROC 3860: 3870DEFPROCmenu_opensave 3880$(ind_sa%)=$file_temp% 3890SYS"Wimp_CreateSubMenu",,handle_save%,poll%!24,poll%!28 3900ENDPROC 3910: 3920: 3930DEFPROCgroup_calculate 3940ind_grp%?13=group%+49 3950ind_grp%?21=49+group_data%?(group%*42) 3960ind_grp%?26=48+group_data%?(group%*42+1) 3970$(ind_grp%+31)=STR$group_data%?(group%*42+2) 3980PROCgroup_bar(15,group_data%?(group%*42+2)) 3990$(ind_grp%+44)=STR$group_data%?(group%*42+3) 4000PROCgroup_bar(21,group_data%?(group%*42+3)) 4010$(ind_grp%+57)=STR$group_data%?(group%*42+4) 4020PROCgroup_bar(27,group_data%?(group%*42+4)) 4030$(ind_grp%+74)=STR$(group_data%!(group%*42+5)/640) 4040ind_grp%?134=48+group_data%?(group%*42+9) 4050N=group_data%?(group%*42+10) 4060!block%=handle_group%:block%!12=&200000 4070block%!4=63:IF(N AND 1)=1:block%!8=&200000 ELSE block%!8=0 4080SYS"Wimp_SetIconState",,block% 4090block%!4=64:IF(N AND 2)=2:block%!8=&200000 ELSE block%!8=0 4100SYS"Wimp_SetIconState",,block% 4110block%!4=65::IF(N AND 4)=4:block%!8=&200000 ELSE block%!8=0 4120SYS"Wimp_SetIconState",,block% 4130ENDPROC 4140: 4150DEFPROCmap_calculate 4160$(ind_map%+24)=STR$(group%+1) 4170$(ind_map%+33)=STR$(group_map%!(group%*4)) 4180$(ind_map%+49)=$(group_data%+group%*42+11) 4190ENDPROC 4200: 4210DEFPROCback_calculate 4220IFgroup%=255THEN 4230 PROCback_bar(6,data_back%?1):PROCback_bar(12,data_back%?2):PROCback_bar(18,data_back%?3):$(ind_bck%+11)=STR$(data_back%?1) 4240 $(ind_bck%+24)=STR$(data_back%?2):$(ind_bck%+37)=STR$(data_back%?3) 4250 $ind_bck%="Background" 4260ELSE 4270 PROCback_bar(6,pie_palette%?(group%*4+1)):PROCback_bar(12,pie_palette%?(group%*4+2)):PROCback_bar(18,pie_palette%?(group%*4+3)) 4280 $(ind_bck%+11)=STR$(pie_palette%?(group%*4+1)):$(ind_bck%+24)=STR$(pie_palette%?(group%*4+2)):$(ind_bck%+37)=STR$(pie_palette%?(group%*4+3)) 4290 $ind_bck%="Pie "+STR$(group%+1) 4300ENDIF 4310ENDPROC 4320: 4330DEFPROCfont_calculate 4340CASEgroup%OF 4350 WHEN0:$ind_fnt%="Title font":$(ind_fnt%+43)=$(font_list%+text_titlec*40):$(ind_fnt%+131)=STR$text_titlex:$(ind_fnt%+144)=STR$text_titley:font_c%=text_titlec:$menu_fontlist%="Title font":PROCfont_ticklist 4360 WHEN1:$ind_fnt%="Axis font":$(ind_fnt%+43)=$(font_list%+text_axisc*40):$(ind_fnt%+131)=STR$text_axisx:$(ind_fnt%+144)=STR$text_axisy:font_c%=text_axisc:$menu_fontlist%="Axis font":PROCfont_ticklist 4370 WHEN2:$ind_fnt%="Key font":$(ind_fnt%+43)=$(font_list%+text_keyc*40):$(ind_fnt%+131)=STR$text_keyx:$(ind_fnt%+144)=STR$text_keyy:font_c%=text_keyc:$menu_fontlist%="Key font":PROCfont_ticklist 4380ENDCASE 4390ENDPROC 4400: 4410DEFPROCfont_ticklist 4420FORN=0TOfont_counter%:menu_fontlist%!(28+N*24)=0:NEXT:menu_fontlist%!(28+font_counter%*24)=128 4430menu_fontlist%!(28+font_c%*24)+=1 4440ENDPROC 4450: 4460DEFPROCpane_calculate 4470!block%=handle_pane% 4480block%!4=1:block%!12=&200000:IFgraph_title%:block%!8=&200000:ELSEblock%!8=0 4490SYS"Wimp_SetIconState",,block% 4500$(ind_pn%+24)=$s_title% 4510block%!4=4:IFgraph_xaxis%:block%!8=&200000:ELSEblock%!8=0 4520SYS"Wimp_SetIconState",,block% 4530$(ind_pn%+98)=$s_xaxis% 4540block%!4=6:IFgraph_xg%=1:block%!8=&200000:ELSEblock%!8=0 4550SYS"Wimp_SetIconState",,block% 4560block%!4=7:IFgraph_xg%=2:block%!8=&200000:ELSEblock%!8=0 4570SYS"Wimp_SetIconState",,block% 4580$(ind_pn%+212)=STR$graph_xdiv 4590$(ind_pn%+244)=STR$graph_xsdiv 4600block%!4=12:IFgraph_xcal%:block%!8=&200000:ELSEblock%!8=0 4610SYS"Wimp_SetIconState",,block% 4620$(ind_pn%+299)=STR$data_xmin 4630$(ind_pn%+318)=STR$data_xmax 4640block%!4=18:IFgraph_yaxis%:block%!8=&200000:ELSEblock%!8=0 4650SYS"Wimp_SetIconState",,block% 4660$(ind_pn%+368)=$s_yaxis% 4670block%!4=20:IFgraph_yg%=1:block%!8=&200000:ELSEblock%!8=0 4680SYS"Wimp_SetIconState",,block% 4690block%!4=21:IFgraph_yg%=2:block%!8=&200000:ELSEblock%!8=0 4700SYS"Wimp_SetIconState",,block% 4710$(ind_pn%+482)=STR$graph_ydiv 4720$(ind_pn%+514)=STR$graph_ysdiv 4730block%!4=26:IFgraph_ycal%:block%!8=&200000:ELSEblock%!8=0 4740SYS"Wimp_SetIconState",,block% 4750$(ind_pn%+569)=STR$data_ymin 4760$(ind_pn%+588)=STR$data_ymax 4770block%!8=0:FORblock%!4=33TO37:SYS"Wimp_SetIconState",,block%:NEXT 4780block%!4=32+graph_bartype%MOD10:block%!8=&200000:SYS"Wimp_SetIconState",,block% 4790block%!4=38:IF(graph_barmargin%AND1)=1:block%!8=&200000:ELSEblock%!8=0 4800SYS"Wimp_SetIconState",,block% 4810block%!4=39:IF(graph_barmargin%AND128)=128:block%!8=&200000:ELSEblock%!8=0 4820SYS"Wimp_SetIconState",,block% 4830block%!4=40:IFgraph_bartype%<10:block%!8=&200000:ELSEblock%!8=0 4840SYS"Wimp_SetIconState",,block% 4850block%!4=41:IFgraph_bartype%>10:block%!8=&200000:ELSEblock%!8=0 4860SYS"Wimp_SetIconState",,block% 4870block%!4=43:IFgraph_exp%:block%!8=&200000:ELSEblock%!8=0 4880SYS"Wimp_SetIconState",,block% 4890$(ind_pn%+971)=STR$graph_es% 4900$(ind_pn%+983)=STR$graph_ef% 4910flag_fiddled%=FALSE 4920block%!8=0:block%!4=2:SYS"Wimp_SetIconState",,block% 4930block%!4=5:SYS"Wimp_SetIconState",,block% 4940block%!4=9:SYS"Wimp_SetIconState",,block% 4950block%!4=11:SYS"Wimp_SetIconState",,block% 4960block%!4=14:SYS"Wimp_SetIconState",,block% 4970block%!4=16:SYS"Wimp_SetIconState",,block% 4980block%!4=19:SYS"Wimp_SetIconState",,block% 4990block%!4=23:SYS"Wimp_SetIconState",,block% 5000block%!4=25:SYS"Wimp_SetIconState",,block% 5010block%!4=28:SYS"Wimp_SetIconState",,block% 5020block%!4=30:SYS"Wimp_SetIconState",,block% 5030block%!4=46:SYS"Wimp_SetIconState",,block% 5040block%!4=50:SYS"Wimp_SetIconState",,block% 5050ENDPROC 5060: 5070DEFPROCmenu_selection 5080CASEmenu_current%OF 5090 WHEN1:PROCmenu_selecticon 5100 WHEN2:PROCmenu_winselection 5110ENDCASE 5120ENDPROC 5130: 5140DEFPROCmenu_selecticon 5150CASEpoll%!0OF 5160 WHEN1:PROCmenu_selectstyle 5170 WHEN3:PROCmenu_selectfile 5180 WHEN4:PROCgraph_select(1) 5190 WHEN5:PROCgraph_select(2) 5200 WHEN6:PROCgraph_select(3) 5210 WHEN7:PROCgraph_select(4) 5220 WHEN8:PROCbyebye_shutdown 5230ENDCASE 5240SYS"Wimp_GetPointerInfo",,block%:IFblock%!8=1:PROCmenu_iconbar 5250ENDPROC 5260: 5270DEFPROCmenu_winselection 5280CASEpoll%!0OF 5290 WHEN0:PROCmenu_selectstyle 5300 WHEN2:PROCmenu_selectfile 5310 WHEN3:PROCgraph_select(1) 5320 WHEN4:PROCgraph_select(2) 5330 WHEN5:PROCgraph_select(3) 5340 WHEN6:PROCgraph_select(4) 5350ENDCASE 5360SYS"Wimp_GetPointerInfo",,block%:IFblock%!8=1:PROCmenu_format 5370ENDPROC 5380: 5390DEFPROCmenu_selectstyle 5400CASEpoll%!4OF 5410 WHEN0:PROCstyle_key 5420 WHEN1:PROCstyle_box 5430 WHEN2:PROCstyle_fontselect 5440 WHEN3:PROCbest_select 5450 WHEN5:PROCstyle_3D 5460 WHEN6:PROCstyle_outline 5470ENDCASE 5480ENDPROC 5490: 5500DEFPROCmenu_selectfile 5510CASEpoll%!4OF 5520 WHEN0:PROCsave_tempOK 5530 WHEN2:PROCfile_default 5540ENDCASE 5550ENDPROC 5560: 5570DEFPROCmenu_group 5580N%=1:IFbutton%=1N%=-1 5590IFicon%=5:PROCgroup_po(-N%) 5600IFicon%=7:PROCgroup_po(N%) 5610IFicon%=9:PROCgroup_si(-N%) 5620IFicon%=11:PROCgroup_si(N%) 5630IFicon%=12:PROCgroup_r(-N%) 5640IFicon%=13:PROCgroup_r(N%) 5650IFicon%=18:PROCgroup_g(-N%) 5660IFicon%=19:PROCgroup_g(N%) 5670IFicon%=24:PROCgroup_b(-N%) 5680IFicon%=25:PROCgroup_b(N%) 5690IFicon%=16:PROCgroup_rclick 5700IFicon%=22:PROCgroup_bclick 5710IFicon%=28:PROCgroup_gclick 5720IFicon%>=30ANDicon%<=45:PROCgroup_cl(icon%-30) 5730IFicon%=49:PROCgroup_t(0) 5740IFicon%=50:PROCgroup_t(.25) 5750IFicon%=51:PROCgroup_t(.5) 5760IFicon%=52:PROCgroup_t(1) 5770IFicon%=53:PROCgroup_t(2) 5780IFicon%=54:PROCgroup_t(4) 5790IFicon%>=58ANDicon%<=61:PROCgroup_ln(icon%-57) 5800IFicon%=66:PROCmenu_reopengroup:IFbutton%=4:SYS"Wimp_CreateMenu",,-1 5810IFicon%=67:PROCgroup_OK 5820ENDPROC 5830: 5840DEFPROCmenu_map 5850N%=1:IFbutton%=1N%=-1 5860IFicon%=6:PROCmap_gr(-N%) 5870IFicon%=8:PROCmap_gr(N%) 5880IFicon%=12:PROCmenu_reopenmap:IFbutton%=4:SYS"Wimp_CreateMenu",-1 5890IFicon%=13:PROCmap_OK 5900ENDPROC 5910: 5920DEFPROCmenu_label 5930N%=1:IFbutton%=1N%=-1 5940IFicon%=6:PROClabel_gr(-N%) 5950IFicon%=8:PROClabel_gr(N%) 5960IFicon%=9:PROCmenu_reopenlabel:IFbutton%=4:SYS"Wimp_CreateMenu",-1 5970IFicon%=10:PROClabel_OK 5980ENDPROC 5990: 6000DEFPROCmenu_back 6010N%=1:IFbutton%=1N%=-1 6020IFicon%=3:PROCback_r(-N%) 6030IFicon%=4:PROCback_r(N%) 6040IFicon%=7:PROCback_rclick 6050IFicon%=13:PROCback_bclick 6060IFicon%=19:PROCback_gclick 6070IFicon%=9:PROCback_g(-N%) 6080IFicon%=10:PROCback_g(N%) 6090IFicon%=15:PROCback_b(-N%) 6100IFicon%=16:PROCback_b(N%) 6110IFicon%>=21ANDicon%<=36:PROCback_cl(icon%-21) 6120IFicon%=37:PROCmenu_reopenback:IFbutton%=4:SYS"Wimp_CreateMenu",,-1 6130IFicon%=38:PROCback_OK 6140ENDPROC 6150: 6160DEFPROCmenu_font 6170N%=1:IFbutton%=1N%=-1 6180IFicon%=5:PROCfont_list 6190IFicon%=8:PROCfont_w(8):PROCfont_h(8) 6200IFicon%=9:PROCfont_w(10):PROCfont_h(10) 6210IFicon%=10:PROCfont_w(12):PROCfont_h(12) 6220IFicon%=11:PROCfont_w(14):PROCfont_h(14) 6230IFicon%=13:PROCfont_wi(-N%) 6240IFicon%=15:PROCfont_wi(N%) 6250IFicon%=17:PROCfont_hi(-N%) 6260IFicon%=19:PROCfont_hi(N%) 6270IFicon%=20:PROCmenu_reopenfont:IFbutton%=4:SYS"Wimp_CreateMenu",,-1 6280IFicon%=21:PROCfont_OK 6290ENDPROC 6300: 6310DEFPROCfile_default 6320N=FNmessage("Click on OK to reset the current Template. Warning: This cannot be retrieved if has not been saved.",3):IFN<>1:ENDPROC 6330PROCinit_template 6340PROCpane_calculate:SYS"Wimp_ForceRedraw",handle_pane%,0,-1023,1279,0 6350ENDPROC 6360: 6370DEFPROCformat_select 6380IFicon%=4:PROCgraph_savebox 6390IFicon%=5:PROCpane_calculate 6400IFicon%=6:PROCpane_OK 6410ENDPROC 6420: 6430DEFPROCpane_select 6440N%=1:IFbutton%=1N%=-1 6450IFicon%=45:PROCpane_s(-N%) 6460IFicon%=47:PROCpane_s(N%) 6470IFicon%=49:PROCpane_f(-N%) 6480IFicon%=51:PROCpane_f(N%) 6490ENDPROC 6500: 6510DEFPROCpie_select 6520N%=1:IFbutton%=1N%=-1 6530IFicon%=8:PROCpie_s(-N%) 6540IFicon%=10:PROCpie_s(N%) 6550IFicon%=12:PROCpie_f(-N%) 6560IFicon%=14:PROCpie_f(N%) 6570ENDPROC 6580: 6590DEFPROCgroup_po(N) 6600M=ind_grp%?21-49 6610IFM+N<0ORM+N>7:ENDPROC 6620M+=N 6630ind_grp%?21=M+49 6640!block%=handle_group%:block%!4=6:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block% 6650ENDPROC 6660: 6670DEFPROCgroup_si(N) 6680M=ind_grp%?26-49 6690IFM+N<0ORM+N>8:ENDPROC 6700M+=N 6710ind_grp%?26=M+49 6720!block%=handle_group%:block%!4=10:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block% 6730ENDPROC 6740: 6750DEFPROCgroup_r(N) 6760M=VAL$(ind_grp%+31) 6770IFM+N<0ORM+N>255:ENDPROC 6780M+=N 6790$(ind_grp%+31)=STR$M 6800!block%=handle_group%:block%!4=14:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block% 6810PROCgroup_bar(15,M) 6820PROCgroup_colour 6830ENDPROC 6840: 6850DEFPROCgroup_rclick 6860!block%=handle_group%:SYS"Wimp_GetWindowState",,block% 6870M=!poll%-block%!4-190 6880$(ind_grp%+31)=STR$M 6890poll%!4=14:PROCgroup_pro(31) 6900ENDPROC 6910: 6920DEFPROCgroup_g(N) 6930M=VAL$(ind_grp%+44) 6940IFM+N<0ORM+N>255:ENDPROC 6950M+=N 6960$(ind_grp%+44)=STR$M 6970!block%=handle_group%:block%!4=20:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block% 6980PROCgroup_bar(21,M) 6990PROCgroup_colour 7000ENDPROC 7010: 7020DEFPROCgroup_bclick 7030!block%=handle_group%:SYS"Wimp_GetWindowState",,block% 7040M=!poll%-block%!4-190 7050$(ind_grp%+44)=STR$M 7060poll%!4=20:PROCgroup_pro(44) 7070ENDPROC 7080: 7090DEFPROCgroup_b(N) 7100M=VAL$(ind_grp%+57) 7110IFM+N<0ORM+N>255:ENDPROC 7120M+=N 7130$(ind_grp%+57)=STR$M 7140!block%=handle_group%:block%!4=26:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block% 7150PROCgroup_bar(27,M) 7160PROCgroup_colour 7170ENDPROC 7180: 7190DEFPROCgroup_gclick 7200!block%=handle_group%:SYS"Wimp_GetWindowState",,block% 7210M=!poll%-block%!4-190 7220$(ind_grp%+57)=STR$M 7230poll%!4=26:PROCgroup_pro(57) 7240ENDPROC 7250: 7260DEFPROCgroup_cl(N) 7270SYS"Wimp_ReadPalette",,block% 7280$(ind_grp%+31)=STR$block%?(N*4+1) 7290$(ind_grp%+44)=STR$block%?(N*4+2) 7300$(ind_grp%+57)=STR$block%?(N*4+3) 7310!block%=handle_group%:block%!4=14:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block% 7320block%!4=20:SYS"Wimp_SetIconState",,block% 7330block%!4=26:SYS"Wimp_SetIconState",,block% 7340PROCgroup_bar(15,VAL$(ind_grp%+31)) 7350PROCgroup_bar(21,VAL$(ind_grp%+44)) 7360PROCgroup_bar(27,VAL$(ind_grp%+57)) 7370PROCgroup_colour 7380ENDPROC 7390: 7400DEFPROCgroup_bar(N,M) 7410!block%=handle_group%:block%!4=N:SYS"Wimp_GetIconState",,block%:SYS"Wimp_DeleteIcon",,block% 7420block%!4=handle_group%:block%!16=196+M:SYS"Wimp_CreateIcon",,block%+4 7430!block%=handle_group%:block%!8=0:block%!12=0 7440block%!4=N:SYS"Wimp_SetIconState",,block% 7450block%!4=(N-9)DIV6-1:SYS"Wimp_SetIconState",,block% 7460ENDPROC 7470: 7480DEFPROCgroup_colour 7490!block%=handle_group% 7500SYS"Wimp_GetWindowInfo",,block% 7510!block%=((VAL$(ind_grp%+57))<<24)+((VAL$(ind_grp%+44))<<16)+((VAL$(ind_grp%+31))<<8) 7520SYS"ColourTrans_SetGCOL",!block%,,,0,0 7530RECTANGLEFILLblock%!4+456,block%!8+228,164,28 7540ENDPROC 7550: 7560DEFPROCgroup_t(N) 7570$(ind_grp%+74)=STR$N 7580!block%=handle_group%:block%!4=48:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block% 7590ENDPROC 7600: 7610DEFPROCgroup_ln(N) 7620ind_grp%?134=N+48 7630!block%=handle_group%:block%!4=57:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block% 7640ENDPROC 7650: 7660DEFPROCgroup_return 7670N%=0:IFpoll%!24=13ORpoll%!24=&18E:N%=1 7680IFpoll%!24=&18F:N%=-1 7690IFpoll%!4=20ANDN%=-1:PROCgroup_pro(44):PROCcaret_setpos(handle_group%,14,FNlen(ind_grp%+31)) 7700IFpoll%!4=14ANDN%=1:PROCgroup_pro(31):PROCcaret_setpos(handle_group%,20,FNlen(ind_grp%+44)) 7710IFpoll%!4=20ANDN%=1:PROCgroup_pro(44):PROCcaret_setpos(handle_group%,26,FNlen(ind_grp%+57)) 7720IFpoll%!4=26ANDN%=1:PROCgroup_pro(57):PROCcaret_setpos(handle_group%,48,FNlen(ind_grp%+74)) 7730IFpoll%!4=26ANDN%=-1:PROCgroup_pro(57):PROCcaret_setpos(handle_group%,20,FNlen(ind_grp%+44)) 7740IFpoll%!4=48ANDN%=-1:PROCcaret_setpos(handle_group%,26,FNlen(ind_grp%+57)) 7750IFpoll%!4=48ANDpoll%!24=13:button%=4:PROCok_click(handle_group%,67):PROCgroup_OK:PROCok_click(handle_group%,67) 7760ENDPROC 7770: 7780DEFPROCgroup_OK 7790group_data%?(group%*42)=ind_grp%?21-49 7800group_data%?(group%*42+1)=ind_grp%?26-48 7810group_data%?(group%*42+2)=VAL$(ind_grp%+31) 7820group_data%?(group%*42+3)=VAL$(ind_grp%+44) 7830group_data%?(group%*42+4)=VAL$(ind_grp%+57) 7840group_data%!(group%*42+5)=(VAL$(ind_grp%+74))*640 7850group_data%?(group%*42+9)=ind_grp%?134-48 7860N=0:!block%=handle_group% 7870block%!4=63:SYS"Wimp_GetIconState",,block% 7880IF((block%!24) AND &200000)>0:N+=1 7890block%!4=64:SYS"Wimp_GetIconState",,block% 7900IF((block%!24) AND &200000)>0:N+=2 7910block%!4=65:SYS"Wimp_GetIconState",,block% 7920IF((block%!24) AND &200000)>0:N+=4 7930group_data%?(group%*42+10)=N 7940IFbutton%=4:SYS"Wimp_CreateMenu",,-1 7950ENDPROC 7960: 7970DEFPROCgroup_pro(N) 7980M=VAL$(ind_grp%+N):IFM>255:M=255 7990$(ind_grp%+N)=STR$M 8000!block%=handle_group%:block%!4=poll%!4:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block% 8010PROCgroup_bar(poll%!4+1,M) 8020PROCgroup_colour 8030ENDPROC 8040: 8050DEFPROCmap_gr(N) 8060M=VAL$(ind_map%+33) 8070IFM+N<0ORM+N>999:ENDPROC 8080M+=N 8090$(ind_map%+33)=STR$M 8100!block%=handle_map%:block%!4=7:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block% 8110SYS"Wimp_GetCaretPosition",,block% 8120IFblock%!4<>7:ENDPROC 8130SYS"Wimp_SetCaretPosition",handle_map%,7,-1,-1,-1,LENSTR$M 8140ENDPROC 8150: 8160DEFPROCmap_return 8170N%=0:IFpoll%!24=13ORpoll%!24=&18E:N%=1 8180IFpoll%!24=&18F:N%=-1 8190IFpoll%!4=11ANDN%=-1:PROCcaret_setpos(handle_map%,7,FNlen(ind_map%+36)) 8200IFpoll%!4=7ANDN%=1:PROCcaret_setpos(handle_map%,11,FNlen(ind_map%+49)) 8210IFpoll%!4=11ANDpoll%!24=13:button%=4:PROCok_click(handle_map%,13):PROCmap_OK:PROCok_click(handle_map%,13) 8220ENDPROC 8230: 8240DEFPROCmap_OK 8250group_map%!(group%*4)=VAL$(ind_map%+33) 8260$(group_data%+group%*42+11)=$(ind_map%+49) 8270IFbutton%=4:SYS"Wimp_CreateMenu",,-1 8280ENDPROC 8290: 8300DEFPROClabel_gr(N) 8310M=VAL$(ind_lab%+38) 8320IFM+N<0ORM+N>999:ENDPROC 8330M+=N 8340$(ind_lab%+38)=STR$M 8350!block%=handle_label%:block%!4=7:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block% 8360SYS"Wimp_GetCaretPosition",,block% 8370IFblock%!4<>7:ENDPROC 8380SYS"Wimp_SetCaretPosition",handle_label%,7,-1,-1,-1,LENSTR$M 8390ENDPROC 8400: 8410DEFPROClabel_OK 8420group_map%!24=VAL$(ind_lab%+38) 8430IFbutton%=4:SYS"Wimp_CreateMenu",,-1 8440ENDPROC 8450: 8460DEFPROCbest_select 8470N=poll%!8:graph_best%=N+1 8480IFN=1:menu_best%?28=0:menu_best%?52=129::ELSEmenu_best%?28=1:menu_best%?52=128 8490ENDPROC 8500: 8510DEFPROCback_r(N) 8520M=VAL$(ind_bck%+11) 8530IFM+N<0ORM+N>255:ENDPROC 8540M+=N 8550$(ind_bck%+11)=STR$M 8560!block%=handle_back%:block%!4=5:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block% 8570PROCback_bar(6,M) 8580PROCback_colour 8590ENDPROC 8600: 8610DEFPROCback_rclick 8620!block%=handle_back%:SYS"Wimp_GetWindowState",,block% 8630M=!poll%-block%!4-190 8640$(ind_bck%+11)=STR$M 8650poll%!4=5:PROCback_pro(11) 8660ENDPROC 8670: 8680DEFPROCback_g(N) 8690M=VAL$(ind_bck%+24) 8700IFM+N<0ORM+N>255:ENDPROC 8710M+=N 8720$(ind_bck%+24)=STR$M 8730!block%=handle_back%:block%!4=11:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block% 8740PROCback_bar(12,M) 8750PROCback_colour 8760ENDPROC 8770: 8780DEFPROCback_bclick 8790!block%=handle_back%:SYS"Wimp_GetWindowState",,block% 8800M=!poll%-block%!4-190 8810$(ind_bck%+24)=STR$M 8820poll%!4=11:PROCback_pro(24) 8830ENDPROC 8840: 8850DEFPROCback_b(N) 8860M=VAL$(ind_bck%+37) 8870IFM+N<0ORM+N>255:ENDPROC 8880M+=N 8890$(ind_bck%+37)=STR$M 8900!block%=handle_back%:block%!4=17:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block% 8910PROCback_bar(18,M) 8920PROCback_colour 8930ENDPROC 8940: 8950DEFPROCback_gclick 8960!block%=handle_back%:SYS"Wimp_GetWindowState",,block% 8970M=!poll%-block%!4-190 8980$(ind_bck%+37)=STR$M 8990poll%!4=17:PROCback_pro(37) 9000ENDPROC 9010: 9020DEFPROCback_cl(N) 9030SYS"Wimp_ReadPalette",,block% 9040$(ind_bck%+11)=STR$block%?(N*4+1) 9050$(ind_bck%+24)=STR$block%?(N*4+2) 9060$(ind_bck%+37)=STR$block%?(N*4+3) 9070!block%=handle_back%:block%!4=5:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block% 9080block%!4=11:SYS"Wimp_SetIconState",,block% 9090block%!4=17:SYS"Wimp_SetIconState",,block% 9100PROCback_bar(6,VAL$(ind_bck%+11)) 9110PROCback_bar(12,VAL$(ind_bck%+24)) 9120PROCback_bar(18,VAL$(ind_bck%+37)) 9130PROCback_colour 9140ENDPROC 9150: 9160DEFPROCback_bar(N,M) 9170!block%=handle_back%:block%!4=N:SYS"Wimp_GetIconState",,block%:SYS"Wimp_DeleteIcon",,block% 9180block%!4=handle_back%:block%!16=196+M:SYS"Wimp_CreateIcon",,block%+4 9190!block%=handle_back%:block%!4=N-1:block%!8=0:block%!12=0 9200block%!4=(N)DIV6-1:SYS"Wimp_SetIconState",,block% 9210ENDPROC 9220: 9230DEFPROCback_colour 9240!block%=handle_back% 9250SYS"Wimp_GetWindowInfo",,block% 9260!block%=(VAL$(ind_bck%+37)<<24)+(VAL$(ind_bck%+24)<<16)+(VAL$(ind_bck%+11)<<8) 9270SYS"ColourTrans_SetGCOL",!block%,,,0,0 9280RECTANGLEFILLblock%!4+454,block%!8+248,164,28 9290ENDPROC 9300: 9310DEFPROCback_return 9320N%=0:IFpoll%!24=13ORpoll%!24=&18E:N%=1 9330IFpoll%!24=&18F:N%=-1 9340IFpoll%!4=11ANDN%=-1:PROCback_pro(24):PROCcaret_setpos(handle_back%,5,FNlen(ind_bck%+20)) 9350IFpoll%!4=5ANDN%=1:PROCback_pro(11):PROCcaret_setpos(handle_back%,11,FNlen(ind_bck%+24)) 9360IFpoll%!4=17ANDN%=-1:PROCback_pro(37):PROCcaret_setpos(handle_back%,11,FNlen(ind_bck%+24)) 9370IFpoll%!4=11ANDN%=1:PROCback_pro(24):PROCcaret_setpos(handle_back%,17,FNlen(ind_bck%+37)) 9380IFpoll%!4=17ANDpoll%!24=13:PROCback_pro(37):button%=4:PROCok_click(handle_back%,38):PROCback_OK:PROCok_click(handle_back%,38) 9390ENDPROC 9400: 9410DEFPROCback_OK 9420IFgroup%=255THEN 9430 data_back%?1=VAL$(ind_bck%+11) 9440 data_back%?2=VAL$(ind_bck%+24) 9450 data_back%?3=VAL$(ind_bck%+37) 9460ELSE 9470 pie_palette%?(group%*4+1)=VAL$(ind_bck%+11) 9480 pie_palette%?(group%*4+2)=VAL$(ind_bck%+24) 9490 pie_palette%?(group%*4+3)=VAL$(ind_bck%+37) 9500ENDIF 9510IFbutton%=4:SYS"Wimp_CreateMenu",,-1 9520ENDPROC 9530: 9540DEFPROCback_pro(N) 9550IFN>1000:N-=1000:N%=FALSE:ELSEN%=TRUE 9560M=VAL$(ind_bck%+N):IFM>255:M=255 9570$(ind_bck%+N)=STR$M 9580!block%=handle_back%:block%!4=poll%!4:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block% 9590PROCback_bar(poll%!4+1,M) 9600IFN%PROCback_colour 9610ENDPROC 9620: 9630DEFPROCstyle_key 9640IFgraph_key%:graph_key%=FALSE:menu_style%?28=0:ENDPROC 9650graph_key%=TRUE:menu_style%?28=1:ENDPROC 9660: 9670DEFPROCstyle_box 9680IFgraph_box%:graph_box%=FALSE:menu_style%?52=8:ENDPROC 9690graph_box%=TRUE:menu_style%?52=9:ENDPROC 9700: 9710DEFPROCstyle_3D 9720IFgraph_3D%:graph_3D%=FALSE:menu_style%?148=8:ENDPROC 9730graph_3D%=TRUE:menu_style%?148=9:ENDPROC 9740: 9750DEFPROCstyle_outline 9760IFgraph_outline%=0:graph_outline%=-1:menu_style%?172=128:ENDPROC 9770graph_outline%=0:menu_style%?172=129:ENDPROC 9780: 9790DEFPROCfont_list 9800PROCfont_ticklist 9810SYS"Wimp_GetPointerInfo",,block% 9820SYS"Wimp_CreateSubMenu",,menu_fontlist%,!block%,block%!4 9830ENDPROC 9840: 9850DEFPROCstyle_fontselect 9860font_c%=poll%!16 9870$(ind_fnt%+43)=$(font_list%+font_c%*40) 9880!block%=handle_font%:block%!4=4:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block% 9890CASEmenu_current%OF 9900 WHEN1:SYS"Wimp_CreateMenu",,menu_bar% 9910 WHEN2:SYS"Wimp_CreateMenu",,menu_win% 9920ENDCASE 9930ENDPROC 9940: 9950DEFPROCfont_wi(N) 9960M=VAL$(ind_fnt%+131) 9970IFM+N<=0:ENDPROC 9980PROCfont_w(M+N) 9990ENDPROC 10000: 10010DEFPROCfont_hi(N) 10020M=VAL$(ind_fnt%+144) 10030IFM+N<=0:ENDPROC 10040PROCfont_h(M+N) 10050ENDPROC 10060: 10070DEFPROCfont_w(N) 10080$(ind_fnt%+131)=STR$N 10090!block%=handle_font%:block%!4=14:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block% 10100SYS"Wimp_GetCaretPosition",,block% 10110IF!block%=handle_font%ANDblock%!4=14:SYS"Wimp_SetCaretPosition",handle_font%,14,0,0,-1,FNlen(ind_fnt%+131) 10120ENDPROC 10130: 10140DEFPROCfont_h(N) 10150$(ind_fnt%+144)=STR$N 10160!block%=handle_font%:block%!4=18:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block% 10170SYS"Wimp_GetCaretPosition",,block% 10180IF!block%=handle_font%ANDblock%!4=18:SYS"Wimp_SetCaretPosition",handle_font%,18,0,0,-1,FNlen(ind_fnt%+144) 10190ENDPROC 10200: 10210DEFPROCfont_return 10220N%=0:IFpoll%!24=13ORpoll%!24=&18E:N%=1 10230IFpoll%!24=&18F:N%=-1 10240IFpoll%!4=18ANDN%=-1:PROCcaret_setpos(handle_font%,14,FNlen(ind_fnt%+131)) 10250IFpoll%!4=14ANDN%=1:PROCcaret_setpos(handle_font%,18,FNlen(ind_fnt%+144)) 10260IFpoll%!4=18ANDpoll%!24=13:button%=4:PROCok_click(handle_font%,21):PROCfont_OK:PROCok_click(handle_font%,21) 10270ENDPROC 10280: 10290DEFPROCfont_OK 10300CASEgroup%OF 10310 WHEN0:text_titlec=font_c%:text_titlex=VAL$(ind_fnt%+131):text_titley=VAL$(ind_fnt%+144) 10320 WHEN1:text_axisc=font_c%:text_axisx=VAL$(ind_fnt%+131):text_axisy=VAL$(ind_fnt%+144) 10330 WHEN2:text_keyc=font_c%:text_keyx=VAL$(ind_fnt%+131):text_keyy=VAL$(ind_fnt%+144) 10340ENDCASE 10350IFbutton%=4:SYS"Wimp_CreateMenu",,-1 10360ENDPROC 10370: 10380DEFPROCpane_s(N) 10390M=VAL$(ind_pn%+971) 10400IFM+N<1ORM+N>999:ENDPROC 10410M+=N 10420$(ind_pn%+971)=STR$M 10430!block%=handle_pane%:block%!4=46:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block% 10440SYS"Wimp_GetCaretPosition",,block% 10450IF!block%<>handle_pane%ORblock%!4<>46:ENDPROC 10460SYS"Wimp_SetCaretPosition",handle_pane%,46,-1,-1,-1,LENSTR$M 10470ENDPROC 10480: 10490DEFPROCpane_f(N) 10500M=VAL$(ind_pn%+983) 10510IFM+N<1ORM+N>999:ENDPROC 10520M+=N 10530$(ind_pn%+983)=STR$M 10540!block%=handle_pane%:block%!4=50:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block% 10550SYS"Wimp_GetCaretPosition",,block% 10560IF!block%<>handle_pane%ORblock%!4<>50:ENDPROC 10570SYS"Wimp_SetCaretPosition",handle_pane%,50,-1,-1,-1,LENSTR$M 10580ENDPROC 10590: 10600DEFPROCpane_OK 10610!block%=handle_pane% 10620block%!4=1:SYS"Wimp_GetIconState",,block% 10630IFblock%!24AND&200000:graph_title%=TRUE:ELSEgraph_title%=FALSE 10640$s_title%=$(ind_pn%+24) 10650block%!4=4:SYS"Wimp_GetIconState",,block% 10660IFblock%!24AND&200000:graph_xaxis%=TRUE:ELSEgraph_xaxis%=FALSE 10670$s_xaxis%=$(ind_pn%+98) 10680graph_xg%=0 10690block%!4=6:SYS"Wimp_GetIconState",,block%:IFblock%!24AND&200000:graph_xg%=1 10700block%!4=7:SYS"Wimp_GetIconState",,block%:IFblock%!24AND&200000:graph_xg%=2 10710graph_xdiv=VAL$(ind_pn%+212) 10720graph_xsdiv=VAL$(ind_pn%+244) 10730block%!4=12:SYS"Wimp_GetIconState",,block% 10740IFblock%!24AND&200000:graph_xcal%=TRUE:ELSEgraph_xcal%=FALSE 10750data_xmin=VAL$(ind_pn%+299) 10760data_xmax=VAL$(ind_pn%+318) 10770block%!4=18:SYS"Wimp_GetIconState",,block% 10780IFblock%!24AND&200000:graph_yaxis%=TRUE:ELSEgraph_yaxis%=FALSE 10790$s_yaxis%=$(ind_pn%+368) 10800graph_yg%=0 10810block%!4=20:SYS"Wimp_GetIconState",,block%:IFblock%!24AND&200000:graph_yg%=1 10820block%!4=21:SYS"Wimp_GetIconState",,block%:IFblock%!24AND&200000:graph_yg%=2 10830graph_ydiv=VAL$(ind_pn%+482) 10840graph_ysdiv=VAL$(ind_pn%+514) 10850block%!4=26:SYS"Wimp_GetIconState",,block% 10860IFblock%!24AND&200000:graph_ycal%=TRUE:ELSEgraph_ycal%=FALSE 10870data_ymin=VAL$(ind_pn%+569) 10880data_ymax=VAL$(ind_pn%+588) 10890graph_bartype%=0 10900FORblock%!4=33TO37:SYS"Wimp_GetIconState",,block% 10910IFblock%!24AND&200000:graph_bartype%+=block%!4-32 10920NEXT 10930graph_barmargin%=0 10940block%!4=38:SYS"Wimp_GetIconState",,block% 10950IFblock%!24AND&200000:graph_barmargin%+=1 10960block%!4=39:SYS"Wimp_GetIconState",,block% 10970IFblock%!24AND&200000:graph_barmargin%+=128 10980block%!4=41:SYS"Wimp_GetIconState",,block% 10990IFblock%!24AND&200000:graph_bartype%+=10 11000block%!4=43:SYS"Wimp_GetIconState",,block% 11010IFblock%!24AND&200000:graph_exp%=TRUE:ELSEgraph_exp%=FALSE 11020graph_es%=VAL$(ind_pn%+971) 11030graph_ef%=VAL$(ind_pn%+983) 11040PROCpane_calculate:SYS"Wimp_ForceRedraw",handle_pane%,0,-1023,1279,0 11050flag_fiddled%=FALSE 11060ENDPROC 11070: 11080DEFPROCpane_return 11090N%=0:IFpoll%!24=13ORpoll%!24=&18E:N%=1 11100IFpoll%!24=&18F:N%=-1 11110IFpoll%!4=5ANDN%=-1:PROCcaret_setpos(handle_pane%,2,FNlen(ind_pn%+24)) 11120IFpoll%!4=2ANDN%=1ORpoll%!4=9ANDN%=-1:PROCcaret_setpos(handle_pane%,5,FNlen(ind_pn%+98)) 11130IFpoll%!4=5ANDN%=1ORpoll%!4=11ANDN%=-1:PROCcaret_setpos(handle_pane%,9,FNlen(ind_pn%+212)) 11140IFpoll%!4=9ANDN%=1ORpoll%!4=14ANDN%=-1:PROCcaret_setpos(handle_pane%,11,FNlen(ind_pn%+244)) 11150IFpoll%!4=11ANDN%=1ORpoll%!4=16ANDN%=-1:PROCcaret_setpos(handle_pane%,14,FNlen(ind_pn%+299)) 11160IFpoll%!4=14ANDN%=1ORpoll%!4=19ANDN%=-1:PROCcaret_setpos(handle_pane%,16,FNlen(ind_pn%+318)) 11170IFpoll%!4=16ANDN%=1ORpoll%!4=23ANDN%=-1:PROCcaret_setpos(handle_pane%,19,FNlen(ind_pn%+368)) 11180IFpoll%!4=19ANDN%=1ORpoll%!4=25ANDN%=-1:PROCcaret_setpos(handle_pane%,23,FNlen(ind_pn%+482)) 11190IFpoll%!4=23ANDN%=1ORpoll%!4=28ANDN%=-1:PROCcaret_setpos(handle_pane%,25,FNlen(ind_pn%+514)) 11200IFpoll%!4=25ANDN%=1ORpoll%!4=30ANDN%=-1:PROCcaret_setpos(handle_pane%,28,FNlen(ind_pn%+569)) 11210IFpoll%!4=28ANDN%=1ORpoll%!4=46ANDN%=-1:PROCcaret_setpos(handle_pane%,30,FNlen(ind_pn%+588)) 11220IFpoll%!4=30ANDN%=1ORpoll%!4=50ANDN%=-1:PROCcaret_setpos(handle_pane%,46,FNlen(ind_pn%+971)) 11230IFpoll%!4=46ANDN%=1:PROCcaret_setpos(handle_pane%,50,FNlen(ind_pn%+983)) 11240IFpoll%!4=50ANDpoll%!24=13:button%=4:PROCok_click(handle_format%,6):PROCpane_OK:PROCok_click(handle_format%,6) 11250ENDPROC 11260: 11270DEFPROCok_click(!block%,block%!4):block%!8=&200000:block%!12=0:SYS"Wimp_SetIconState",,block%:ENDPROC 11280: 11290: 11300REM ********** Some mature graph selection type stuff ********** 11310: 11320DEFPROCgraph_select(N) 11330CASE N OF 11340 WHEN1:PROCgraph_selectline 11350 WHEN2:PROCgraph_selectbar 11360 WHEN3:PROCgraph_selectpie 11370 WHEN4:PROCgraph_selecttable 11380ENDCASE 11390ind_frm%?43=48+graph_type% 11400IFgraph_window%:!block%=handle_format%:block%!4=2:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block%:block%!4=3:SYS"Wimp_SetIconState",,block% 11410ENDPROC 11420: 11430DEFPROCgraph_selectline 11440graph_type%=1 11450menu_bar%?124=1:menu_bar%?148=0:menu_bar%?172=0:menu_bar%?196=2 11460menu_win%?100=1:menu_win%?124=0:menu_win%?148=0:menu_win%?172=128 11470$(ind_frm%+48)="Line graph" 11480ENDPROC 11490: 11500DEFPROCgraph_selectbar 11510graph_type%=2 11520menu_bar%?124=0:menu_bar%?148=1:menu_bar%?172=0:menu_bar%?196=2 11530menu_win%?100=0:menu_win%?124=1:menu_win%?148=0:menu_win%?172=128 11540$(ind_frm%+48)="Bar chart" 11550ENDPROC 11560: 11570DEFPROCgraph_selectpie 11580graph_type%=3 11590menu_bar%?124=0:menu_bar%?148=0:menu_bar%?172=1:menu_bar%?196=2 11600menu_win%?100=0:menu_win%?124=0:menu_win%?148=1:menu_win%?172=128 11610$(ind_frm%+48)="Pie chart" 11620ENDPROC 11630: 11640DEFPROCgraph_selecttable 11650graph_type%=4 11660menu_bar%?124=0:menu_bar%?148=0:menu_bar%?172=0:menu_bar%?196=3 11670menu_win%?100=0:menu_win%?124=0:menu_win%?148=0:menu_win%?172=129 11680$(ind_frm%+48)="Table" 11690ENDPROC 11700: 11710: 11720REM ********** Some stuff with a caret ********** 11730: 11740DEFPROCcaret_setpos(handle%,icon%,X%) 11750SYS"Wimp_SetCaretPosition",handle%,icon%,0,0,-1,X% 11760ENDPROC 11770: 11780DEFFNlen(N) 11790M%=-1:REPEATM%+=1:UNTILN?M%=0ORN?M%=10ORN?M%=13 11800=M% 11810: 11820: 11830REM ********** Fun with fonts ********** 11840: 11850DEFPROCfont_check 11860$block%="<Font$Prefix> and <Font$Path>" 11870SYS"OS_GSTrans",block%,block%+100,255 TO ,,N 11880block%?(100+N)=13 11890IF$(block%+100)<>$font_path%:PROCfont_dothebusiness 11900ENDPROC 11910: 11920DEFPROCfont_dothebusiness 11930SYS"Hourglass_On" 11940$block%="<Font$Prefix> and <Font$Path>" 11950SYS"OS_GSTrans",block%,block%+100,255 TO ,,N 11960block%?(100+N)=13 11970$font_path%=$(block%+100) 11980font_counter%=0:$(font_list%)="System Font":Y=11 11990menu_fontlist%!28=1:menu_fontlist%!32=-1:menu_fontlist%!36=&7009121:menu_fontlist%!40=font_list%:menu_fontlist%!44=-1:menu_fontlist%!48=40 12000SYS"XOS_ReadVarVal","Font$Path",block%,256,0,3TO;N:IF(N AND1):SYS"Hourglass_Off":ENDPROC 12010$block%=$(font_list%+text_titlec*40):$(block%+41)=$(font_list%+text_axisc*40):$(block%+82)=$(font_list%+text_keyc*40) 12020: 12030N=0:REPEAT 12040font_counter%+=1:SYS"Font_ListFonts",,font_list%+(font_counter%*40),N,-1 TO ,,N 12050M=FNlen(font_list%+((font_counter%-1)*40)):IFM>Y:Y=M 12060M=28+24*font_counter%:menu_fontlist%!M=0:menu_fontlist%!(M+4)=0:menu_fontlist%!(M+8)=&7009121:menu_fontlist%!(M+12)=font_list%+(font_counter%*40):menu_fontlist%!(M+16)=-1:menu_fontlist%!(M+20)=40 12070UNTILN=-1ORfont_counter%=256 12080IFfont_counter%=256:N=FNmessage("GraphPlus has reached its maximum font handling capacity.",0) 12090: 12100font_counter%-=1:menu_fontlist%!(28+24*font_counter%)=128:menu_fontlist%!16=16+16*Y 12110SYS"Hourglass_Off" 12120text_titlec=FNfont_search(block%) 12130text_axisc=FNfont_search(block%+41) 12140text_keyc=FNfont_search(block%+82) 12150ENDPROC 12160: 12170DEFFNfont_search(N) 12180M=-1:REPEATM+=1:UNTIL$N=$(font_list%+M*40)ORM=font_counter%+1 12190IFM=font_counter%+1ANDfont_counter%<>0:N=FNmessage("Font "+$N+" cannot be found. Replacing with System Font.",0):=0 12200=M 12210: 12220DEFFNfont_recognise 12230FORN=0TO39:block%?N=BGET#X%:NEXT 12240=FNfont_search(block%) 12250: 12260: 12270REM ********** Window code ********** 12280: 12290DEFPROCwindow_requestRedraw 12300SYS"Wimp_RedrawWindow",,poll% TO N 12310WHILE N 12320SYS"Wimp_GetRectangle",,poll% TO N 12330IF!poll%=handle_group%:PROCgroup_colour 12340IF!poll%=handle_back%:PROCback_colour 12350ENDWHILE 12360ENDPROC 12370: 12380DEFPROCwindow_requestOpen 12390IF!poll%=handle_update%:ENDPROC 12400IF!poll%<>handle_format%:SYS"Wimp_OpenWindow",,poll%:ENDPROC 12410FORN=0TO256STEP4:block%!(200+N)=poll%!N:NEXT 12420!block%=handle_pane%:SYS"Wimp_GetWindowState",,block% 12430!poll%=handle_pane%:poll%!4+=52:poll%!8+=100:poll%!16-=80:poll%!20=block%!20:poll%!24=block%!24 12440SYS"Wimp_OpenWindow",,poll% 12450block%!228=handle_pane%:SYS"Wimp_OpenWindow",,block%+200 12460ENDPROC 12470: 12480DEFPROCwindow_requestClose 12490SYS"Wimp_CloseWindow",,poll% 12500IF!poll%=handle_format%:graph_window%=FALSE:!block%=handle_pane%:SYS"Wimp_CloseWindow",,block%:!block%=handle_create%:SYS"Wimp_CloseWindow",,block% 12510ENDPROC 12520: 12530DEFPROCwindow_opengraph 12540PROCpane_calculate 12550!block%=handle_pane%:block%!4=252:block%!8=288:block%!12=1280:block%!16=660:block%!20=0:block%!24=0:block%!28=-1:SYS"Wimp_OpenWindow",,block% 12560!block%=handle_format%:block%!4=200:block%!8=0:block%!12=1280:block%!16=740:block%!20=0:block%!24=0:block%!28=handle_pane%:SYS"Wimp_OpenWindow",,block% 12570graph_window%=TRUE 12580ENDPROC 12590: 12600DEFPROCwindow_liftgraph 12610!poll%=handle_format%:SYS"Wimp_GetWindowState",,poll% 12620poll%!28=-1:PROCwindow_requestOpen 12630ENDPROC 12640: 12650DEFPROCwindow_opendatapath 12660$block%="GraphPlusData$Path" 12670SYS"XOS_ReadVarVal",block%,ind_dp%+4,256,0,3TO,,M;N 12680ind_dp%?(4+M)=10 12690IF(N AND1)=1:N=FNmessage("Error when reading data path.",0):ENDPROC 12700SYS"Wimp_CreateSubMenu",,handle_datapath%,poll%!24,poll%!28 12710ENDPROC 12720: 12730: 12740REM ********** What a drag ********** 12750: 12760DEFPROCdrag_startsave 12770!block%=handle_save%:block%!4=0:SYS"Wimp_GetIconState",,block% 12780block%!100=handle_save%:SYS"Wimp_GetWindowInfo",,block%+100 12790!poll%=handle_save%:poll%!4=5 12800poll%!8=block%!104+block%!8 12810poll%!12=block%!116+block%!12 12820poll%!16=block%!104+block%!16 12830poll%!20=block%!116+block%!20 12840poll%!24=0:poll%!28=0 12850poll%!32=-1:poll%!36=-1 12860IFdstart%:SYS dstart%,%11000101,1,"file_0f0",poll%+8,poll%+24 ELSE SYS"Wimp_DragBox",,poll% 12870file_status%=1 12880ENDPROC 12890: 12900DEFPROCdrag_startcreate 12910!block%=handle_create%:block%!4=0:SYS"Wimp_GetIconState",,block% 12920block%!100=handle_create%:SYS"Wimp_GetWindowInfo",,block%+100 12930!poll%=handle_create%:poll%!4=5 12940poll%!8=block%!104+block%!8 12950poll%!12=block%!116+block%!12 12960poll%!16=block%!104+block%!16 12970poll%!20=block%!116+block%!20 12980poll%!24=0:poll%!28=0 12990poll%!32=-1:poll%!36=-1 13000IFdstart%:SYS dstart%,%11000101,1,"file_aff",poll%+8,poll%+24 ELSE SYS"Wimp_DragBox",,poll% 13010file_status%=10 13020ENDPROC 13030: 13040DEFPROCdrag_userdragbox 13050SYS"Wimp_GetPointerInfo",,poll% 13060!block%=256:block%!12=0:block%!16=1 13070block%!20=poll%!12:block%!24=poll%!16:block%!28=!poll%:block%!32=poll%!4:block%!36=543:block%!40=&0f0 13080IFfile_status%=1:PROCsave_leaf(ind_sa%,block%+44) 13090IFfile_status%=10:PROCsave_leaf(ind_sg%,block%+44) 13100SYS"Wimp_SendMessage",18,block%,poll%!12 13110file_status%+=1:ENDPROC 13120: 13130: 13140REM ********** Saving, it helps ********* 13150: 13160DEFPROCsave_tempOK 13170N=-1:REPEATN+=1:UNTILind_sa%?N=46ORind_sa%?N=0ORind_sa%?N=10ORind_sa%?N=13 13180IFind_sa%?N<>46:N=FNmessage("To save, drag the template icon to a filer window.",0):ENDPROC 13190$(poll%+44)=$ind_sa% 13200PROCsave_template 13210SYS"Wimp_CreateMenu",,-1 13220ENDPROC 13230: 13240DEFPROCsave_createOK 13250N=-1:REPEATN+=1:UNTILind_sg%?N=46ORind_sg%?N=0ORind_sg%?N=10ORind_sg%?N=13 13260IFind_sg%?N<>46:N=FNmessage("To save, drag the drawfile icon to a filer window.",0):ENDPROC 13270$file_graph%=$ind_sg% 13280PROCgraph_create 13290ENDPROC 13300: 13310DEFPROCsave_leaf(N%,N) 13320M=FNlen(N%) 13330REPEAT:M-=1:UNTILN%?M=46ORM=0 13340IFN%?M=46:M+=1 13350$N=$(N%+M) 13360ENDPROC 13370: 13380DEFPROCsave_ack 13390IFpoll%!36=-1:N=FNmessage("Unsafe to save "+$(poll%+44),0):file_status%=0:ENDPROC 13400Z%=1 13410IFfile_status%=2:PROCsave_template 13420IFfile_status%=11:PROCsave_creategraph 13430IFZ%<>0:poll%!16=3:SYS"Wimp_SendMessage",18,poll%,poll%!20 13440SYS"Wimp_CreateMenu",,-1 13450ENDPROC 13460: 13470DEFPROCsave_template:LOCALERROR 13480$file_temp%=$(poll%+44) 13490$ind_sa%=$(poll%+44) 13500SYS"XOS_Find",&82,poll%+44TOX%;N 13510IF(N AND1)=1ORX%=0:N=FNmessage("Format template not saved.",0):Z%=0:ENDPROC 13520ONERRORLOCALM=FNmessage("GraphPlus has encountered an error when saving template. If possible quit GraphPlus and reload.",0):SYS"OS_Find",0,X%:ENDPROC 13530PROCdfile_put("GraphPlus Template"):PROCdfile_bput(0) 13540PROCdfile_bput(graph_type%) 13550FORM=0TO27:PROCdfile_bput(group_map%?M):NEXT 13560FORM=0TO251:PROCdfile_bput(group_data%?M):NEXT 13570PROCdfile_sputl(font_list%+text_titlec*40,40):PROCdfile_wput(text_titlex*1000):PROCdfile_wput(text_titley*1000) 13580PROCdfile_sputl(font_list%+text_axisc*40,40):PROCdfile_wput(text_axisx*1000):PROCdfile_wput(text_axisy*1000) 13590PROCdfile_sputl(font_list%+text_keyc*40,40):PROCdfile_wput(text_keyx*1000):PROCdfile_wput(text_keyy*1000) 13600IFgraph_key%:PROCdfile_bput(1)ELSEPROCdfile_bput(0) 13610IFgraph_back%:PROCdfile_bput(1)ELSEPROCdfile_bput(0) 13620IFgraph_3D%:PROCdfile_bput(1)ELSEPROCdfile_bput(0) 13630IFgraph_outline%=0:PROCdfile_bput(1)ELSEPROCdfile_bput(0) 13640PROCdfile_bput(data_back%?1):PROCdfile_bput(data_back%?2):PROCdfile_bput(data_back%?3) 13650PROCdfile_bput(graph_best%) 13660FORM=0TO63:BPUT#X%,pie_palette%?M:NEXT 13670IFgraph_title%:PROCdfile_bput(1):ELSEPROCdfile_bput(0) 13680PROCdfile_sputl(s_title%,40) 13690IFgraph_xaxis%:PROCdfile_bput(1):ELSEPROCdfile_bput(0) 13700PROCdfile_sputl(s_xaxis%,40) 13710PROCdfile_bput(graph_xg%) 13720IFgraph_xcal%:PROCdfile_bput(1):ELSEPROCdfile_bput(0) 13730PROCdfile_wput(graph_xdiv*1000) 13740PROCdfile_wput(graph_xsdiv*1000) 13750PROCdfile_wput(data_xmin*1000) 13760PROCdfile_wput(data_xmax*1000) 13770IFgraph_yaxis%:PROCdfile_bput(1):ELSEPROCdfile_bput(0) 13780PROCdfile_sputl(s_yaxis%,40) 13790PROCdfile_bput(graph_yg%) 13800IFgraph_ycal%:PROCdfile_bput(1):ELSEPROCdfile_bput(0) 13810PROCdfile_wput(graph_ydiv*1000) 13820PROCdfile_wput(graph_ysdiv*1000) 13830PROCdfile_wput(data_ymin*1000) 13840PROCdfile_wput(data_ymax*1000) 13850PROCdfile_bput(graph_bartype%) 13860PROCdfile_bput(graph_barmargin%) 13870IFgraph_exp%:PROCdfile_bput(1):ELSEPROCdfile_bput(0) 13880PROCdfile_wput(graph_es%) 13890PROCdfile_wput(graph_ef%) 13900SYS"OS_Find",0,X% 13910SYS"OS_File",18,ind_sa%,&0f0 13920ENDPROC 13930: 13940DEFPROCsave_creategraph 13950$file_graph%=$(poll%+44) 13960$ind_sg%=$(poll%+44) 13970PROCgraph_create 13980ENDPROC 13990: 14000: 14010REM ********** Well, a load is just as good ********** 14020: 14030DEFPROCload_message 14040IFpoll%!40=&0f0:PROCload_template:ENDPROC 14050IFpoll%!40<>&dfe:N=FNmessage("Not a CSV file. Are you sure you want to use it?",3):IFN=2:ENDPROC 14060PROCload_setdatapath 14070ENDPROC 14080: 14090DEFPROCload_template 14100X%=OPENIN$(poll%+44) 14110poll%!12=poll%!8:poll%!16=4 14120SYS"Wimp_SendMessage",17,poll%,poll%!20 14130PROCload_tempfile 14140CLOSE#X% 14150PROCpane_calculate 14160SYS"Wimp_ForceRedraw",handle_pane%,0,-1023,1279,0 14170ENDPROC 14180: 14190DEFPROCload_tempfile:LOCALERROR 14200ONERRORLOCALM=FNmessage("GraphPlus template loading error. The current template may be corrupted.",0):ENDPROC 14210PTR#X%=19:graph_type%=BGET#X% 14220PROCgraph_select(graph_type%) 14230FORM=0TO27:group_map%?M=BGET#X%:NEXT 14240FORM=0TO251:group_data%?M=BGET#X%:NEXT 14250text_titlec=FNfont_recognise:PROCfile_wget(block%):text_titlex=!block%/1000:PROCfile_wget(block%):text_titley=!block%/1000 14260text_axisc=FNfont_recognise:PROCfile_wget(block%):text_axisx=!block%/1000:PROCfile_wget(block%):text_axisy=!block%/1000 14270text_keyc=FNfont_recognise:PROCfile_wget(block%):text_keyx=!block%/1000:PROCfile_wget(block%):text_keyy=!block%/1000 14280N=BGET#X%:IFN=1:graph_key%=TRUE:menu_style%?28=1:ELSEgraph_key%=FALSE:menu_style%?28=0 14290N=BGET#X%:IFN=1:graph_box%=TRUE:menu_style%?52=9:ELSEgraph_box%=FALSE:menu_style%?52=8 14300N=BGET#X%:IFN=1:graph_3D%=TRUE:menu_style%?148=1:ELSEgraph_3D%=FALSE:menu_style%?148=0 14310N=BGET#X%:IFN=1:graph_outline%=0:menu_style%?172=129:ELSEgraph_outline%=-1:menu_style%?172=128 14320data_back%?1=BGET#X%:data_back%?2=BGET#X%:data_back%?3=BGET#X% 14330graph_best%=BGET#X%:IFgraph_best%=2:menu_best%?28=0:menu_best%?52=129:ELSEmenu_best%?28=1:menu_best%?52=128 14340FORM=0TO63:pie_palette%?M=BGET#X%:NEXT 14350N=BGET#X%:IFN=1:graph_title%=TRUE:ELSEgraph_title%=FALSE 14360FORN=0TO39:s_title%?N=BGET#X%:NEXT 14370N=BGET#X%:IFN=1:graph_xaxis%=TRUE:ELSEgraph_xaxis%=FALSE 14380FORN=0TO39:s_xaxis%?N=BGET#X%:NEXT 14390graph_xg%=BGET#X% 14400N=BGET#X%:IFN=1:graph_xcal%=TRUE:ELSEgraph_xcal%=FALSE 14410PROCfile_wget(poll%):graph_xdiv=!poll%/1000 14420PROCfile_wget(poll%):graph_xsdiv=!poll%/1000 14430PROCfile_wget(poll%):data_xmin=!poll%/1000 14440PROCfile_wget(poll%):data_xmax=!poll%/1000 14450N=BGET#X%:IFN=1:graph_yaxis%=TRUE:ELSEgraph_yaxis%=FALSE 14460FORN=0TO39:s_yaxis%?N=BGET#X%:NEXT 14470graph_yg%=BGET#X% 14480N=BGET#X%:IFN=1:graph_ycal%=TRUE:ELSEgraph_ycal%=FALSE 14490PROCfile_wget(poll%):graph_ydiv=!poll%/1000 14500PROCfile_wget(poll%):graph_ysdiv=!poll%/1000 14510PROCfile_wget(poll%):data_ymin=!poll%/1000 14520PROCfile_wget(poll%):data_ymax=!poll%/1000 14530graph_bartype%=BGET#X% 14540graph_barmargin%=BGET#X% 14550N=BGET#X%:IFN=1:graph_exp%=TRUE:ELSEgraph_exp%=FALSE 14560PROCfile_wget(poll%):graph_es%=!poll% 14570PROCfile_wget(poll%):graph_ef%=!poll% 14580PROCgraph_select(graph_type%) 14590ENDPROC 14600: 14610DEFPROCload_dataopen 14620IFpoll%!40=&0f0:PROCload_message 14630ENDPROC 14640: 14650DEFPROCload_setdatapath 14660OSCLI("Set GraphPlusData$Path "+$(poll%+44)) 14670ENDPROC 14680: 14690: 14700REM ********** Those darn messages ********** 14710: 14720DEFPROCmessage_process 14730CASEpoll%!16OF 14740 WHEN0 :PROCbyebye_shutdown 14750 WHEN2 :PROCsave_ack 14760 WHEN3 :PROCload_message 14770 WHEN5 :PROCload_dataopen 14780 WHEN&400C0:PROCmessage_menuwarning 14790ENDCASE:ENDPROC 14800: 14810DEFPROCmessage_menuwarning 14820CASEmenu_current%OF 14830 WHEN1:PROCmessage_menubar 14840 WHEN2:PROCmessage_winbar 14850ENDCASE 14860ENDPROC 14870: 14880DEFPROCmessage_menubar 14890IFpoll%!32=1ANDpoll%!36=1:PROCmenu_openback 14900IFpoll%!32=1ANDpoll%!36=2:PROCfont_check:PROCmenu_openfont 14910IFpoll%!32=1ANDpoll%!36=4:PROCmenu_openpalette 14920IFpoll%!32=3ANDpoll%!36=0:PROCmenu_opensave 14930IFpoll%!32=3ANDpoll%!36=1:PROCwindow_opendatapath 14940IFpoll%!32=2ANDpoll%!36=0ANDpoll%!40<>6:PROCmenu_openmap 14950IFpoll%!32=2ANDpoll%!36=0ANDpoll%!40=6:PROCmenu_openlabel 14960IFpoll%!32=2ANDpoll%!36=1:PROCmenu_opengroup 14970ENDPROC 14980: 14990DEFPROCmessage_winbar 15000IFpoll%!32=0ANDpoll%!36=1:PROCmenu_openback 15010IFpoll%!32=0ANDpoll%!36=2:PROCfont_check:PROCmenu_openfont 15020IFpoll%!32=0ANDpoll%!36=4:PROCmenu_openpalette 15030IFpoll%!32=2ANDpoll%!36=0:PROCmenu_opensave 15040IFpoll%!32=2ANDpoll%!36=1:PROCwindow_opendatapath 15050IFpoll%!32=1ANDpoll%!36=0ANDpoll%!40<>6:PROCmenu_openmap 15060IFpoll%!32=1ANDpoll%!36=0ANDpoll%!40=6:PROCmenu_openlabel 15070IFpoll%!32=1ANDpoll%!36=1:PROCmenu_opengroup 15080ENDPROC 15090: 15100: 15110REM ********** Things at the end ********** 15120: 15130DEFPROCbyebye_shutdown 15140SYS"Wimp_CloseDown",task%,&4B534154 15150SYS"OS_Exit" 15160REM Good Ridance 15170END 15180: 15190DEFFNmessage($(mess%+20),flag%):mess%!16=0:$mess%="GraphPlus":SYS"Wimp_ReportError",mess%+16,flag%,mess%TO,N:=N 15200: 15210DEFPROCerror 15220ONERROROFF 15230N=FNmessage("Serious internal error &"+STR$~(ERL)+": must exit. Click on OK to dump current template in GraphPlus directory as 'TempDump'.",3):IFN=1:PROCerror_dump 15240PROCbyebye_shutdown 15250FISH 15260: 15270DEFPROCerror_dump 15280$block%="GraphPlus$Dir":block%?256=0 15290SYS"XOS_ReadVarVal",block%,poll%+44,256,0,3TO,,M;N 15300IF(N AND1)=1:N=FNmessage("Format template not saved; directory variable deleted.",0):ENDPROC 15310$(poll%+44+M)=".TempDump" 15320PROCsave_template 15330ENDPROC 15340: 15350: 15360REM ********** Lets make some graph ********** 15370: 15380: 15390DEFPROCgraph_savebox 15400X=!poll%:Y=poll%!4 15410$block%="GraphPlusData$Path" 15420SYS"XOS_ReadVarVal",block%,block%+100,256,0,3TO;N 15430IF(N AND1)=1:N=FNmessage("The data path variable has been deleted. Unable to create graph.",0):ENDPROC 15440N=99:REPEATN+=1:UNTILblock%?N=46ORblock%?N=0 15450IFblock%?N=0:N=FNmessage("GraphPlus has not seen any data. Unable to create graph.",0):ENDPROC 15460IF$(ind_pn%+24)<>$s_title%OR$(ind_pn%+98)<>$s_xaxis%OR$(ind_pn%+368)<>$s_yaxis%:flag_fiddled%=TRUE 15470IFgraph_xdiv<>VAL$(ind_pn%+212)ORgraph_xsdiv<>VAL$(ind_pn%+244)ORdata_xmin<>VAL$(ind_pn%+299)ORdata_xmax<>VAL$(ind_pn%+318):flag_fiddled%=TRUE 15480IFgraph_ydiv<>VAL$(ind_pn%+482)ORgraph_ysdiv<>VAL$(ind_pn%+514)ORdata_ymin<>VAL$(ind_pn%+569)ORdata_ymax<>VAL$(ind_pn%+588):flag_fiddled%=TRUE 15490IFgraph_es%<>VAL$(ind_pn%+971)ORgraph_ef%<>VAL$(ind_pn%+983):flag_fiddled%=TRUE 15500IFflag_fiddled%:N=FNmessage("The graph format window has been altered. Do you want to create a graph with the stored template, or cancel this operation?",3):IFN=2:ENDPROC 15510$ind_sg%=$file_graph% 15520!block%=handle_create% 15530block%!4=X-64:block%!8=-500:block%!12=X+500:block%!16=Y+48 15540block%!20=0:block%!24=0 15550block%!28=-1 15560SYS"Wimp_OpenWindow",,block% 15570SYS"Wimp_SetCaretPosition",handle_create%,1,0,0,-1,FNlen(file_graph%) 15580ENDPROC 15590: 15600DEFPROCgraph_create:LOCALERROR 15610update_faster%=FALSE 15620$text%="Loading datafile":PROCupdate_start 15630ONERRORLOCAL PROCerror 15640IFgraph_box%:!graph_back%=!data_back%ELSE!graph_back%=-1 15650graph_titlec=0:graph_axisc=0:graph_keyc=0 15660: 15670SYS"Wimp_SlotSize",-1,-1TOZ% 15680$block%="<GraphPlusData$Path>" 15690SYS"XOS_File",17,block%TO,,,,V%;N 15700IF(N AND1)=1:N=FNmessage("Data file not loaded: couldn't read file size. Unable to create graph",0):Z%=0:PROCupdate_smash:ENDPROC 15710SYS"XWimp_SlotSize",Z%+V%,-1TO;N 15720IF(N AND1)=1:N=FNmessage("Not enough memory to load data file. Unable to create graph.",0):Z%=0:PROCupdate_smash:ENDPROC 15730SYS"XOS_File",16,block%,Z%+&8001TO;N 15740IF(N AND1)=1:N=FNmessage("Data file not loaded. Unable to create graph",0):SYS"Wimp_SlotSize",Z%,-1:Z%=0:PROCupdate_smash:ENDPROC 15750M%=0:FORgroup%=0TO5:IFgroup_map%!(group%*4)>0:M%+=1 15760NEXT 15770IFM%=0:N=FNmessage("Graph error. There is no specified data. Unable to create graph.",0):SYS"Wimp_SlotSize",Z%,-1:Z%=0:PROCupdate_smash:ENDPROC 15780N=FNlen(file_graph%):M%=N+1:REPEATN-=1:UNTILfile_graph%?N=46:M=0:REPEATblock%?(100+M)=file_graph%?M:M+=1:UNTILM=N+1:block%?(100+M)=13:N+=1:M=0:REPEATblock%?M=file_graph%?N:N+=1:M+=1:UNTILN=M%:block%?M=13 15790SYS"XOS_File",13,block%,,,block%+100TOX% 15800IFX%=2:N=FNmessage("A directory already exists with this pathname.",0):SYS"Wimp_SlotSize",Z%,-1:Z%=0:PROCupdate_smash:ENDPROC 15810graph_overlay%=FALSE:IFX%=1:N=FNmessage("This file already exists. Click OK to overlay this graph or Cancel to overwrite file.",3):IFN=1:graph_overlay%=TRUE 15820IFNOTgraph_overlay%:SYS"OS_Find",&82,file_graph%TOX% 15830IFgraph_overlay%:SYS"OS_Find",&C2,file_graph%TOX%:IFX%<>0:SYS"OS_Args",2,X%TO,,M:SYS"OS_Args",1,X%,M 15840IFX%=0:N=FNmessage("Save error. Unable to create graph.",0):SYS"Wimp_SlotSize",Z%,-1:Z%=0:PROCupdate_smash:ENDPROC 15850: 15860ONERRORLOCAL SYS"OS_Find",0,X%:PROCerror 15870PROCupdate_start 15880: 15890IFNOTgraph_overlay%:PROCgraph_header 15900IFNOTgraph_overlay%:IFtext_titlec<>0ORtext_axisc<>0ORtext_keyc<>0:PROCgraph_fonttable 15910CASEgraph_type%OF 15920 WHEN1:PROCgraph_datascaleLine 15930 WHEN2:PROCgraph_datascaleBar 15940ENDCASE 15950: 15960$text%="Page layout":PROCupdate_top 15970IFNOTgraph_overlay%:IFgraph_box%ANDgraph_type%<>4:PROCgraph_box 15980IFNOTgraph_overlay%:IFgraph_type%=1ORgraph_type%=2:PROCgraph_paper 15990!block%=handle_format%:block%!4=3:SYS"Wimp_GetIconState",,block% 16000IFNOTgraph_overlay%:IFgraph_title%ANDgraph_type%<>4:PROCgraph_title(223000) 16010IFNOTgraph_overlay%:IFgraph_key%ANDgraph_type%<>3ANDgraph_type%<>4:PROCgraph_key 16020: 16030CASEgraph_type%OF 16040 WHEN1:PROCgraph_createline 16050 WHEN2:PROCgraph_createbar 16060 WHEN3:PROCgraph_createpie 16070 WHEN4:PROCgraph_createtable 16080ENDCASE 16090: 16100SYS"OS_Find",0,X% 16110SYS"OS_File",18,file_graph%,&aff 16120SYS"Wimp_SlotSize",Z%,-1TO;N 16130: 16140PROCupdate_smash 16150PROCpane_calculate:SYS"Wimp_ForceRedraw",handle_pane%,0,-1023,1279,0 16160ENDPROC 16170: 16180DEFPROCgraph_createline 16190R%=0:FORgroup%=0TO5:IFgroup_map%!(group%*4)>0:R%+=15000 16200NEXT:R%-=15000 16210IFNOTgraph_3D%:R%=0 16220FORgroup%=5TO0STEP-1 16230$text%="Drawing group: "+STR$(group%+1):PROCupdate_top 16240IFgroup_map%!(group%*4)>0 THEN 16250N%=group_data%?(group%*42+10) 16260 IF(N%AND4)=4:PROCgraph_bestfit 16270 IF(N%AND2)=2ANDNOTgraph_3D%:PROCgraph_lineunder 16280 IF(N%AND1)=1ANDNOTgraph_3D%:PROCgraph_pointline 16290 IF((N%AND1)=1OR(N%AND2)=2)ANDgraph_3D%:PROCgraph_pointline3D 16300 IF(N%AND2)=2ANDgraph_3D%:PROCgraph_lineunder 16310 PROCgraph_points 16320 IFgraph_3D%:R%-=15000 16330ENDIF 16340NEXT 16350ENDPROC 16360: 16370DEFPROCgraph_createbar 16380CASEgraph_bartype%OF 16390 WHEN5 :PROCgraph_barOvr 16400 WHEN15:PROCgraph_barOvr 16410 OTHERWISE:PROCgraph_bar 16420ENDCASE 16430N=group_map%!24:IFN>0ANDN<=data_width%:PROCbar_labels 16440ENDPROC 16450: 16460DEFPROCgraph_createpie 16470PROCgraph_datapara 16480M=0:FORgroup%=0TO5:IFgroup_map%!(group%*4)>0:M+=1 16490NEXT:IFM=0:ENDPROC 16500IFgroup_map%!24>0ANDM>1:PROCgraph_key 16510M=0:FORgroup%=0TO5:IFgroup_map%!(group%*4)>0:M+=1 16520NEXT:CASE M OF 16530 WHEN1:R%=90000 16540 WHEN2:R%=63500 16550 WHEN3:R%=40000 16560 WHEN4:R%=40000 16570 WHEN5:R%=40000 16580 WHEN6:R%=40000 16590ENDCASE 16600IFgraph_3D%:R%-=10000 16610FORgroup%=5TO0STEP-1 16620 X=0:FORN=0TO5:IFgroup_map%!(N*4)>0:X+=1 16630 NEXT 16640 Y=X DIV2 16650 A%=0:FORN=0TOgroup%:IFgroup_map%!(N*4)>0:A%+=1 16660 NEXT 16670 IFX<=2:Y=X 16680 X-=1:Y-=1:A%-=1 16690 $text%="Creating chart: "+STR$(group%+1):PROCupdate_top 16700 IFgroup_map%!(group%*4)>0 THEN 16710 PROCgraph_piedraw 16720 ENDIF 16730NEXT 16740ENDPROC 16750: 16760DEFPROCgraph_createtable 16770PROCgraph_datapara 16780$text%="Creating table":PROCupdate_top 16790Y=640*text_axisy:IFtext_axisc=0:Y=1000*text_axisy 16800IF group_map%!24>0THEN 16810 $text%="Labels":PROCupdate_bottom 16820 x=0 16830 FORA%=1TOdata_length% 16840 PROCdata_sget(group_map%!24,A%) 16850 O=FNlen(block%) 16860 O+=4-(O MOD4) 16870 IFtext_axisc<>0 THEN 16880 SYS"Font_FindFont",,font_list%+text_axisc*40,text_axisx*16,text_axisy*16,0,0 TO N 16890 SYS"Font_StringWidth",,block%,300000,200000,-1,block%+FNlen(block%)TO,,X 16900 SYS"Font_LoseFont",N 16910 ELSE 16920 X=text_axisx*1000*FNlen(block%) 16930 ENDIF 16940 X=X*640/1000 16950 IFX>x:x=X 16960 NEXT 16970 x+=10000 16980 FORA%=1TOdata_length% 16990 PROCdata_sget(group_map%!24,A%) 17000 O=FNlen(block%) 17010 O+=4-(O MOD4) 17020 IFgraph_box%:PROCtable_box(0,Y*data_length%-A%*Y,x,Y*data_length%-(A%-1)*Y) 17030 PROCdfile_wput(1):PROCdfile_wput(24+28+O):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000) 17040 PROCdfile_wput(0):PROCdfile_bput(?graph_back%):PROCdfile_bput(graph_back%?1):PROCdfile_bput(graph_back%?2):PROCdfile_bput(graph_back%?3) 17050 PROCdfile_wput(graph_axisc):PROCdfile_wput(640*text_axisx):PROCdfile_wput(640*text_axisy):PROCdfile_wput(5000):PROCdfile_wput(Y*data_length%-(A%-.25)*Y):PROCdfile_sput(block%) 17060 PROCpoll_minorloop 17070 NEXT 17080 B%=x 17090ENDIF 17100FORgroup%=0TO5 17110IFgroup_map%!(group%*4)>0THEN 17120 $text%="Group "+STR$(group%+1):PROCupdate_bottom 17130 x=0 17140 FORA%=1TOdata_length% 17150 PROCdata_sget(group_map%!(group%*4),A%) 17160 O=FNlen(block%) 17170 O+=4-(O MOD4) 17180 IFtext_axisc<>0 THEN 17190 SYS"Font_FindFont",,font_list%+text_axisc*40,text_axisx*16,text_axisy*16,0,0 TO N 17200 SYS"Font_StringWidth",,block%,300000,200000,-1,block%+FNlen(block%)TO,,X 17210 SYS"Font_LoseFont",N 17220 ELSE 17230 X=text_axisx*1000*FNlen(block%) 17240 ENDIF 17250 X=X*640/1000 17260 IFX>x:x=X 17270 NEXT 17280 IFgraph_key%THEN 17290 $block%=$(group_data%+group%*42+11) 17300 O=FNlen(block%) 17310 O+=4-(O MOD4) 17320 IFtext_axisc<>0 THEN 17330 SYS"Font_FindFont",,font_list%+text_axisc*40,text_axisx*16,text_axisy*16,0,0 TO N 17340 SYS"Font_StringWidth",,block%,300000,200000,-1,block%+FNlen(block%)TO,,X 17350 SYS"Font_LoseFont",N 17360 ELSE 17370 X=text_axisx*1000*FNlen(block%) 17380 ENDIF 17390 X=X*640/1000 17400 IFX>x:x=X 17410 ENDIF 17420 x+=10000 17430 FORA%=1TOdata_length% 17440 PROCdata_sget(group_map%!(group%*4),A%) 17450 O=FNlen(block%) 17460 O+=4-(O MOD4) 17470 IFgraph_box%:PROCtable_box(B%,Y*data_length%-A%*Y,B%+x,Y*data_length%-(A%-1)*Y) 17480 PROCdfile_wput(1):PROCdfile_wput(24+28+O):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000) 17490 PROCdfile_wput(0):PROCdfile_bput(?graph_back%):PROCdfile_bput(graph_back%?1):PROCdfile_bput(graph_back%?2):PROCdfile_bput(graph_back%?3) 17500 PROCdfile_wput(graph_axisc):PROCdfile_wput(640*text_axisx):PROCdfile_wput(640*text_axisy):PROCdfile_wput(B%+5000):PROCdfile_wput(Y*data_length%-(A%-.25)*Y):PROCdfile_sput(block%) 17510 PROCpoll_minorloop 17520 NEXT 17530 IFgraph_key%THEN 17540 $block%=$(group_data%+group%*42+11) 17550 O=FNlen(block%) 17560 O+=4-(O MOD4) 17570 IFgraph_box%:PROCtable_box(B%,Y*data_length%,B%+x,Y*(data_length%+1)) 17580 PROCdfile_wput(1):PROCdfile_wput(24+28+O):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000) 17590 PROCdfile_wput(0):PROCdfile_bput(?graph_back%):PROCdfile_bput(graph_back%?1):PROCdfile_bput(graph_back%?2):PROCdfile_bput(graph_back%?3) 17600 PROCdfile_wput(graph_axisc):PROCdfile_wput(640*text_axisx):PROCdfile_wput(640*text_axisy):PROCdfile_wput(B%+5000):PROCdfile_wput(Y*(data_length%+.25)):PROCdfile_sput(block%) 17610 ENDIF 17620 B%+=x 17630ENDIF 17640NEXT 17650IFgraph_title%ANDgraph_key%:PROCgraph_title(Y*(data_length%+1)+3000) 17660IFgraph_title%ANDNOTgraph_key%:PROCgraph_title(Y*data_length%+3000) 17670ENDPROC 17680: 17690DEFPROCtable_box(x,y,X,Y) 17700REM OH: A box 17710PROCdfile_wput(2):PROCdfile_wput(24+16+12*5+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(320000):PROCdfile_wput(220000) 17720PROCdfile_bput(?graph_back%):PROCdfile_bput(graph_back%?1):PROCdfile_bput(graph_back%?2):PROCdfile_bput(graph_back%?3):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(0) 17730PROCdfile_wput(2):PROCdfile_wput(x):PROCdfile_wput(y) 17740PROCdfile_wput(8):PROCdfile_wput(X):PROCdfile_wput(y) 17750PROCdfile_wput(8):PROCdfile_wput(X):PROCdfile_wput(Y) 17760PROCdfile_wput(8):PROCdfile_wput(x):PROCdfile_wput(Y) 17770PROCdfile_wput(8):PROCdfile_wput(x):PROCdfile_wput(y) 17780PROCdfile_wput(0) 17790ENDPROC 17800: 17810DEFPROCgraph_piedraw 17820IFX<=1:PROCgraph_piekey(160000+(R%*2.75*(A%-Y/2)),110000-R%*(1.2+X*.2)):PROCgraph_pie(160000+(R%*2.75*(A%-Y/2)),110000,R%):ENDPROC 17830IFgraph_3D%:N=10000:ELSEN=0 17840IFX>=2:IFY>=A%:PROCgraph_piekey(160000+(R%*2.75*(A%-Y/2)),110000+N+R%*2.5):PROCgraph_pie(160000+(R%*2.75*(A%-Y/2)),110000+R%*1.3,R%):ENDPROC 17850IFgraph_3D%:N=-5000:ELSEN=0 17860IFX>=2:IFY<A%:PROCgraph_piekey(160000+(R%*2.75*((A%-Y)-(X-Y+1)/2)),110000+N-R%*2.5):PROCgraph_pie(160000+(R%*2.75*((A%-Y)-(X-Y+1)/2)),110000-R%*1.3,R%):ENDPROC 17870STOP 17880: 17890DEFPROCgraph_paper 17900PROCgraph_axis 17910IFgraph_type%=1:PROCgraph_xdiv 17920IFgraph_type%=2ANDgraph_bartype%>10:PROCgraph_xdiv 17930IFgraph_type%=1ANDgraph_xg%=1:PROCgraph_xdivgrid(0) 17940IFgraph_type%=2ANDgraph_bartype%>10ANDgraph_xg%=1:PROCgraph_xdivgrid(0) 17950IFgraph_type%=1ANDgraph_xg%=2:PROCgraph_xdivgrid(128) 17960IFgraph_type%=2ANDgraph_bartype%>10ANDgraph_xg%=2:PROCgraph_xdivgrid(128) 17970IFgraph_xg%=1:PROCgraph_xedge(0) 17980IFgraph_xg%=2:PROCgraph_xedge(128) 17990IFgraph_type%=1:PROCgraph_ydiv 18000IFgraph_type%=2ANDgraph_bartype%<10:PROCgraph_ydiv 18010IFgraph_type%=1ANDgraph_yg%=1:PROCgraph_ydivgrid(0) 18020IFgraph_type%=2ANDgraph_bartype%<10ANDgraph_yg%=1:PROCgraph_ydivgrid(0) 18030IFgraph_type%=1ANDgraph_yg%=2:PROCgraph_ydivgrid(128) 18040IFgraph_type%=2ANDgraph_bartype%<10ANDgraph_yg%=2:PROCgraph_ydivgrid(128) 18050IFgraph_yg%=1:PROCgraph_yedge(0) 18060IFgraph_yg%=2:PROCgraph_yedge(128) 18070IFgraph_xaxis%:PROCgraph_xlabel 18080IFgraph_yaxis%:PROCgraph_ylabel 18090ENDPROC 18100: 18110: 18120DEFPROCgraph_header 18130$block%="Draw�"+STRING$(7,CHR$0)+STRING$(3,CHR$0)+"GraphPlus":PROCdfile_sputl(block%,24) 18140PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(460000):PROCdfile_wput(250000) 18150ENDPROC 18160: 18170DEFPROCgraph_datascaleLine 18180$text%="Datascalling (Line)":PROCupdate_top 18190PROCgraph_datapara 18200!block%=handle_format% 18210IFgraph_xcal%:PROCgraph_searchminx:PROCgraph_searchmaxx 18220IFdata_xmin=data_xmax:data_xmax+=1 18230IFgraph_ycal%:PROCgraph_searchminy:PROCgraph_searchmaxy 18240IFdata_ymin=data_ymax:data_ymax+=1 18250IFgraph_xdiv=0:graph_xdiv=data_xmax-data_xmin:graph_xsdiv=graph_xdiv 18260IFgraph_xsdiv=0ORgraph_xsdiv>graph_xdiv:graph_xsdiv=graph_xdiv 18270IFgraph_xdiv>data_xmax-data_xmin:graph_xdiv=data_xmax-data_xmin:graph_xsdiv=graph_xdiv 18280IFgraph_xsdiv>data_xmax-data_xmin:graph_xsdiv=graph_xdiv 18290IFgraph_ydiv=0:graph_ydiv=data_ymax-data_ymin:graph_ysdiv=graph_ydiv 18300IFgraph_ysdiv=0ORgraph_ysdiv>graph_ydiv:graph_ysdiv=graph_ydiv 18310IFgraph_ydiv>data_ymax-data_ymin:graph_ydiv=data_ymax-data_ymin:graph_ysdiv=graph_ydiv 18320IFgraph_ysdiv>data_ymax-data_ymin:graph_ysdiv=graph_ydiv 18330: 18340M=0:FORgroup%=0TO5:IFgroup_map%!(group%*4)>0:M+=1 18350NEXT:IFNOTgraph_3D%:M=0 18360M=15000*M 18370graph_xscale=(280000-M) / (data_xmax-data_xmin) 18380graph_yscale=(180000-M) / (data_ymax-data_ymin) 18390ENDPROC 18400: 18410DEFPROCgraph_datascaleBar 18420$text%="Datascalling (Bar)":PROCupdate_top 18430PROCgraph_datapara 18440: 18450IFgraph_xcal%:PROCgraph_searchminx:PROCgraph_searchmaxx 18460IFdata_xmin=data_xmax:data_xmax+=1 18470IFgraph_ycal%:PROCgraph_searchminh:PROCgraph_searchmaxh 18480IFdata_ymin=data_ymax:data_ymax+=1 18490IFgraph_xdiv=0:graph_xdiv=data_xmax-data_xmin:graph_xsdiv=graph_xdiv 18500IFgraph_xsdiv=0ORgraph_xsdiv>graph_xdiv:graph_xsdiv=graph_xdiv 18510IFgraph_xdiv>data_xmax-data_xmin:graph_xdiv=data_xmax-data_xmin:graph_xsdiv=graph_xdiv 18520IFgraph_xsdiv>data_xmax-data_xmin:graph_xsdiv=graph_xdiv 18530IFgraph_ydiv=0:graph_ydiv=data_ymax-data_ymin:graph_ysdiv=graph_ydiv 18540IFgraph_ysdiv=0ORgraph_ysdiv>graph_ydiv:graph_ysdiv=graph_ydiv 18550IFgraph_ydiv>data_ymax-data_ymin:graph_ydiv=data_ymax-data_ymin:graph_ysdiv=graph_ydiv 18560IFgraph_ysdiv>data_ymax-data_ymin:graph_ysdiv=graph_ydiv 18570: 18580N=0:FORgroup%=0TO5:IFgroup_map%!(group%*4)>0:N+=1 18590NEXT 18600IFNOTgraph_3D%:N=0 18610IFgraph_3D%ANDgraph_type%=2ANDgraph_bartype%MOD10<>3:N=1 18620N=15000*N 18630graph_xscale=(280000-N) / (data_xmax-data_xmin) 18640graph_yscale=(180000-N) / (data_ymax-data_ymin) 18650: 18660N=0:FORgroup%=0TO5 18670IFgroup_map%!(group%*4)>0:N+=1 18680NEXT:R%=N 18690IFgraph_3D%ANDgraph_bartype%<>3:R%=1 18700IFNOTgraph_3D%:R%=0 18710M=0:IF(graph_barmargin%AND1)=1:M+=1 18720IF(graph_barmargin%AND128)=128:M+=1 18730IFgraph_bartype%>10:L%=180000-R%*15000:ELSE L%=280000-R%*15000 18740CASEgraph_bartype%MOD10OF 18750 WHEN1 18760 $text%="Graph adjacent:":PROCupdate_top 18770 graph_barsize=L%/(data_length%*N+M) 18780 graph_groupsize=graph_barsize*N 18790 graph_barwidth=graph_barsize 18800 WHEN2 18810 $text%="Graph individual:":PROCupdate_top 18820 graph_barsize=L%/(data_length%*N-.5+M) 18830 graph_groupsize=graph_barsize*N 18840 graph_barwidth=graph_barsize/2 18850 WHEN3 18860 $text%="Graph offset:":PROCupdate_top 18870 IFgraph_3D%THEN 18880 graph_groupsize=L%/(data_length%-1+M) 18890 graph_barwidth=graph_groupsize*.75 18900 graph_barsize=graph_barwidth*.75 18910 ELSE 18920 graph_barwidth=L%/(data_length%*(N+1)-1+M) 18930 graph_groupsize=graph_barwidth*(N+1) 18940 graph_barsize=graph_barwidth*.75 18950 ENDIF 18960 WHEN4 18970 $text%="Graph grouped:":PROCupdate_top 18980 graph_barsize=L%/(data_length%*(N+1)-1+M) 18990 graph_groupsize=graph_barsize*(N+1) 19000 graph_barwidth=graph_barsize 19010 WHEN5 19020 $text%="Graph overlaid:":PROCupdate_top 19030 graph_groupsize=L%/(data_length%-.5+M/2) 19040 graph_barsize=0 19050 graph_barwidth=graph_groupsize/2 19060ENDCASE 19070ENDPROC 19080: 19090DEFPROCgraph_datascalePie 19100FORN=0TO5 19110IFgroup_map%!(N*4)>(data_width%-1):group_map%!(N*4)=0 19120NEXT 19130ENDPROC 19140: 19150DEFPROCgraph_datapara 19160Y%=&8001 19170M=1:REPEAT 19180A=Z%?Y%:Y%+=1 19190IFA=44:M+=1 19200UNTILA=10ORA=13 19210data_width%=M 19220M=1:REPEAT 19230A=Z%?Y%:Y%+=1 19240IFA=10ORA=13:M+=1 19250UNTILY%=&8001+V% 19260data_length%=M 19270IFgraph_type%=1:data_width%-=1 19280FORN=0TO5:IFgroup_map%!(N*4)>data_width%:group_map%!(N*4)=0 19290NEXT:IFgraph_type%=1:data_width%+=1 19300ENDPROC 19310: 19320DEFPROCgraph_searchminx 19330$text%="Minimum x":PROCupdate_bottom 19340M=FNdata_get(!group_map%,1) 19350FORgroup%=0TO5 19360x%=group_map%!(group%*4) 19370IF x%>0 THEN 19380 FORy%=1TOdata_length% 19390 X=FNdata_get(x%,y%):IFX<M:M=X 19400 NEXT 19410ENDIF 19420NEXT 19430data_xmin=M 19440ENDPROC 19450: 19460DEFPROCgraph_searchmaxx 19470$text%="Maximum x":PROCupdate_bottom 19480M=FNdata_get(!group_map%,1) 19490FORgroup%=0TO5 19500x%=group_map%!(group%*4) 19510IF x%>0 THEN 19520 FORy%=1TOdata_length% 19530 Y=FNdata_get(x%,y%):IFY>M:M=Y 19540 NEXT 19550ENDIF 19560NEXT 19570data_xmax=M 19580ENDPROC 19590: 19600DEFPROCgraph_searchminy 19610$text%="Minimum y":PROCupdate_bottom 19620M=FNdata_get(!group_map%+1,1) 19630FORgroup%=0TO5 19640x%=group_map%!(group%*4) 19650IF x%>0 THEN 19660 FORy%=1TOdata_length% 19670 X=FNdata_get(x%+1,y%):IFX<M:M=X 19680 NEXT 19690ENDIF 19700NEXT 19710data_ymin=M 19720ENDPROC 19730: 19740DEFPROCgraph_searchmaxy 19750$text%="Maximum y":PROCupdate_bottom 19760M=FNdata_get(!group_map%+1,1) 19770FORgroup%=0TO5 19780x%=group_map%!(group%*4) 19790IF x%>0 THEN 19800 FORy%=1TOdata_length% 19810 Y=FNdata_get(x%+1,y%):IFY>M:M=Y 19820 NEXT 19830ENDIF 19840NEXT 19850data_ymax=M 19860ENDPROC 19870: 19880DEFPROCgraph_searchminh 19890$text%="Minimum height":PROCupdate_bottom 19900M=FNdata_get(!group_map%,1) 19910FORgroup%=0TO5 19920x%=group_map%!(group%*4) 19930IF x%>0 THEN 19940 FORy%=1TOdata_length% 19950 X=FNdata_get(x%,y%):IFX<M:M=X 19960 NEXT 19970ENDIF 19980NEXT 19990data_ymin=M 20000ENDPROC 20010: 20020DEFPROCgraph_searchmaxh 20030$text%="Maximum height":PROCupdate_bottom 20040M=FNdata_get(!group_map%,1) 20050FORgroup%=0TO5 20060x%=group_map%!(group%*4) 20070IF x%>0 THEN 20080 FORy%=1TOdata_length% 20090 Y=FNdata_get(x%,y%):IFY>M:M=Y 20100 NEXT 20110ENDIF 20120NEXT 20130data_ymax=M 20140ENDPROC 20150: 20160DEFPROCgraph_box 20170REM OH: Bounding box 20180PROCdfile_wput(2):PROCdfile_wput(24+20*4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(320000):PROCdfile_wput(220000) 20190PROCdfile_bput(?graph_back%):PROCdfile_bput(graph_back%?1):PROCdfile_bput(graph_back%?2):PROCdfile_bput(graph_back%?3):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(0) 20200PROCdfile_wput(2):PROCdfile_wput(0):PROCdfile_wput(0) 20210PROCdfile_wput(8):PROCdfile_wput(320000):PROCdfile_wput(0) 20220PROCdfile_wput(8):PROCdfile_wput(320000):PROCdfile_wput(220000) 20230PROCdfile_wput(8):PROCdfile_wput(0):PROCdfile_wput(220000) 20240PROCdfile_wput(8):PROCdfile_wput(0):PROCdfile_wput(0) 20250PROCdfile_wput(0) 20260ENDPROC 20270: 20280DEFPROCgraph_axis 20290$text%="Axis":PROCupdate_bottom 20300M=0:FORN=0TO5:IFgroup_map%!(N*4)>0:M+=1 20310NEXT:IFNOTgraph_3D%:M=0 20320IFgraph_3D%ANDgraph_type%=2ANDgraph_bartype%<>3:M=1 20330FORN=0TOM:X=N*15000 20340REM OH: Axis 20350PROCdfile_wput(2):PROCdfile_wput(24+56):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000) 20360PROCdfile_wput(-1):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(0) 20370PROCdfile_wput(2):PROCdfile_wput(20000+X):PROCdfile_wput(20000+X+(data_ymax-data_ymin)*graph_yscale) 20380PROCdfile_wput(8):PROCdfile_wput(20000+X):PROCdfile_wput(20000+X) 20390PROCdfile_wput(8):PROCdfile_wput(20000+X+(data_xmax-data_xmin)*graph_xscale):PROCdfile_wput(20000+X) 20400PROCdfile_wput(0) 20410NEXT 20420IFNOTgraph_3D%:ENDPROC 20430: 20440PROCdfile_wput(2):PROCdfile_wput(24+16+6*12+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000) 20450PROCdfile_wput(-1):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(0) 20460PROCdfile_wput(2):PROCdfile_wput(20000):PROCdfile_wput(20000+(data_ymax-data_ymin)*graph_yscale) 20470PROCdfile_wput(8):PROCdfile_wput(20000+X):PROCdfile_wput(20000+X+(data_ymax-data_ymin)*graph_yscale) 20480PROCdfile_wput(2):PROCdfile_wput(20000):PROCdfile_wput(20000) 20490PROCdfile_wput(8):PROCdfile_wput(20000+X):PROCdfile_wput(20000+X) 20500PROCdfile_wput(2):PROCdfile_wput(20000+(data_xmax-data_xmin)*graph_xscale):PROCdfile_wput(20000) 20510PROCdfile_wput(8):PROCdfile_wput(20000+X+(data_xmax-data_xmin)*graph_xscale):PROCdfile_wput(20000+X) 20520PROCdfile_wput(0) 20530ENDPROC 20540: 20550DEFPROCgraph_xdiv 20560$text%="X divisions":PROCupdate_bottom 20570REM OH: X divisions 20580A%=(data_xmax-data_xmin) / graph_xdiv 20590B%=graph_xdiv / graph_xsdiv 20600PROCdfile_wput(2):PROCdfile_wput(24+16+((A%+A%*B%)*24)+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000) 20610PROCdfile_wput(-1):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(0) 20620FORM=1TOA% 20630PROCdfile_wput(2):PROCdfile_wput(20000+(M*graph_xdiv*graph_xscale)):PROCdfile_wput(20000) 20640PROCdfile_wput(8):PROCdfile_wput(20000+(M*graph_xdiv*graph_xscale)):PROCdfile_wput(17000) 20650FORO=1TOB% 20660PROCdfile_wput(2):PROCdfile_wput(20000+((M-1)*graph_xdiv*graph_xscale)+(O*graph_xsdiv*graph_xscale)):PROCdfile_wput(20000) 20670PROCdfile_wput(8):PROCdfile_wput(20000+((M-1)*graph_xdiv*graph_xscale)+(O*graph_xsdiv*graph_xscale)):PROCdfile_wput(18000) 20680NEXT 20690NEXT 20700PROCdfile_wput(0) 20710$text%="X division text":PROCupdate_bottom 20720REM OH: X division text 20730FORM=0TOA% 20740$(block%)=STR$(data_xmin+M*graph_xdiv)+STRING$(4,CHR$0) 20750O=0:REPEATO+=1:UNTILblock%?O=0 20760O+=4-(O MOD4) 20770IFtext_axisc<>0 THEN 20780 SYS"Font_FindFont",,font_list%+text_axisc*40,text_axisx*16,text_axisy*16,0,0 TO N 20790 SYS"Font_StringWidth",,block%,300000,200000,-1,block%+FNlen(block%)TO,,X 20800 SYS"Font_LoseFont",N 20810ELSE 20820X=text_axisx*1000*FNlen(block%) 20830ENDIF 20840X=X*320/1000 20850PROCdfile_wput(1):PROCdfile_wput(24+28+O):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000) 20860PROCdfile_wput(0):PROCdfile_bput(?graph_back%):PROCdfile_bput(graph_back%?1):PROCdfile_bput(graph_back%?2):PROCdfile_bput(graph_back%?3) 20870PROCdfile_wput(graph_axisc):PROCdfile_wput(640*text_axisx):PROCdfile_wput(640*text_axisy):PROCdfile_wput(20000+(M*graph_xdiv*graph_xscale)-X):PROCdfile_wput(15000-380*text_axisy):PROCdfile_sput(block%) 20880NEXT 20890ENDPROC 20900: 20910DEFPROCgraph_xdivgrid(N) 20920IFN=0:$text%="X grid (solid)"ELSE$text%="X grid (dotted)" 20930PROCupdate_bottom 20940R%=0:FORgroup%=0TO5 20950IFgroup_map%!(group%*4)>0:R%+=1 20960NEXT 20970IFgraph_3D%ANDgraph_type%=2ANDgraph_bartype%<>3:R%=1 20980IFNOTgraph_3D%:R%=0 20990: 21000REM OH: X divisions grid 21010A%=(data_xmax-data_xmin) / graph_xdiv 21020M=0:IFR%>0:M=1 21030L%=0:IFN=128:L%=16 21040PROCdfile_wput(2):PROCdfile_wput(24+16+L%+(A%*24)+M*12*A%+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000) 21050PROCdfile_wput(-1):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(N) 21060IFN=128:PROCdfile_wput(0):PROCdfile_wput(2):PROCdfile_wput(4000):PROCdfile_wput(3000) 21070FORM=1TOA% 21080PROCdfile_wput(2):PROCdfile_wput(20000+(M*graph_xdiv*graph_xscale)):PROCdfile_wput(20000) 21090IFR%>0:PROCdfile_wput(8):PROCdfile_wput(20000+(M*graph_xdiv*graph_xscale)+R%*15000):PROCdfile_wput(20000+R%*15000) 21100PROCdfile_wput(8):PROCdfile_wput(20000+(M*graph_xdiv*graph_xscale)+R%*15000):PROCdfile_wput(200000) 21110NEXT 21120PROCdfile_wput(0) 21130ENDPROC 21140: 21150DEFPROCgraph_xedge(N) 21160IFN=0:$text%="X edge (solid)"ELSE$text%="X edge (dotted)" 21170PROCupdate_bottom 21180REM OH: X edge 21190L%=0:IFN=128:L%=16 21200PROCdfile_wput(2):PROCdfile_wput(24+16+L%+24+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000) 21210PROCdfile_wput(-1):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(N) 21220IFN=128:PROCdfile_wput(0):PROCdfile_wput(2):PROCdfile_wput(4000):PROCdfile_wput(3000) 21230PROCdfile_wput(2):PROCdfile_wput(300000):PROCdfile_wput(20000+R%*15000) 21240PROCdfile_wput(8):PROCdfile_wput(300000):PROCdfile_wput(200000) 21250PROCdfile_wput(0) 21260ENDPROC 21270: 21280DEFPROCgraph_ydiv 21290$text%="Y divisions":PROCupdate_bottom 21300REM OH: Y divisions 21310A%=(data_ymax-data_ymin) / graph_ydiv 21320B%=graph_ydiv / graph_ysdiv 21330PROCdfile_wput(2):PROCdfile_wput(24+16+((A%+A%*B%)*24)+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000) 21340PROCdfile_wput(-1):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(0) 21350FORM=1TOA% 21360PROCdfile_wput(2):PROCdfile_wput(20000):PROCdfile_wput(20000+(M*graph_ydiv*graph_yscale)) 21370PROCdfile_wput(8):PROCdfile_wput(17000):PROCdfile_wput(20000+(M*graph_ydiv*graph_yscale)) 21380FORO=1TOB% 21390PROCdfile_wput(2):PROCdfile_wput(20000):PROCdfile_wput(20000+((M-1)*graph_ydiv*graph_yscale)+(O*graph_ysdiv*graph_yscale)) 21400PROCdfile_wput(8):PROCdfile_wput(18000):PROCdfile_wput(20000+((M-1)*graph_ydiv*graph_yscale)+(O*graph_ysdiv*graph_yscale)) 21410NEXT 21420NEXT 21430PROCdfile_wput(0) 21440$text%="Y division text":PROCupdate_bottom 21450REM OH: Y division text 21460FORM=0TOA% 21470$(block%)=STR$(data_ymin+M*graph_ydiv)+STRING$(4,CHR$0) 21480O=0:REPEATO+=1:UNTILblock%?O=0 21490O+=4-(O MOD4) 21500IFtext_axisc<>0 THEN 21510 SYS"Font_FindFont",,font_list%+text_axisc*40,text_axisx*16,text_axisy*16,0,0 TO N 21520 SYS"Font_StringWidth",,block%,300000,200000,-1,block%+FNlen(block%)TO,,X 21530 SYS"Font_LoseFont",N 21540ELSE 21550X=text_axisx*1000*FNlen(block%) 21560ENDIF 21570X=X*640/1000 21580PROCdfile_wput(1):PROCdfile_wput(24+28+O):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000) 21590PROCdfile_wput(0):PROCdfile_bput(?graph_back%):PROCdfile_bput(graph_back%?1):PROCdfile_bput(graph_back%?2):PROCdfile_bput(graph_back%?3) 21600PROCdfile_wput(graph_axisc):PROCdfile_wput(640*text_axisx):PROCdfile_wput(640*text_axisy):PROCdfile_wput(16000-X):PROCdfile_wput(20000+(M*graph_ydiv*graph_yscale)-(160*text_axisy)):PROCdfile_sput(block%) 21610NEXT 21620ENDPROC 21630: 21640DEFPROCgraph_ydivgrid(N) 21650IFN=0:$text%="Y grid (solid)"ELSE$text%="Y grid (dotted)" 21660PROCupdate_bottom 21670R%=0:FORgroup%=0TO5 21680IFgroup_map%!(group%*4)>0:R%+=1 21690NEXT 21700IFgraph_3D%ANDgraph_type%=2ANDgraph_bartype%<>3:R%=1 21710IFNOTgraph_3D%:R%=0 21720: 21730REM OH: Y divisions grid 21740A%=(data_ymax-data_ymin) / graph_ydiv 21750M=0:IFR%>0:M=1 21760L%=0:IFN=128:L%=16 21770PROCdfile_wput(2):PROCdfile_wput(24+16+L%+(A%*24)+M*12*A%+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000) 21780PROCdfile_wput(-1):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(N) 21790IFN=128:PROCdfile_wput(0):PROCdfile_wput(2):PROCdfile_wput(4000):PROCdfile_wput(3000) 21800FORM=1TOA% 21810PROCdfile_wput(2):PROCdfile_wput(20000):PROCdfile_wput(20000+(M*graph_ydiv*graph_yscale)) 21820IFR%>0:PROCdfile_wput(8):PROCdfile_wput(20000+R%*15000):PROCdfile_wput(20000+(M*graph_ydiv*graph_yscale)+R%*15000) 21830PROCdfile_wput(8):PROCdfile_wput(300000):PROCdfile_wput(20000+(M*graph_ydiv*graph_yscale)+R%*15000) 21840NEXT 21850PROCdfile_wput(0) 21860ENDPROC 21870: 21880DEFPROCgraph_yedge(N) 21890IFN=0:$text%="Y edge (solid)"ELSE$text%="Y edge (dotted)" 21900PROCupdate_bottom 21910REM OH: X edge 21920L%=0:IFN=128:L%=16 21930PROCdfile_wput(2):PROCdfile_wput(24+16+L%+24+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000) 21940PROCdfile_wput(-1):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(N) 21950IFN=128:PROCdfile_wput(0):PROCdfile_wput(2):PROCdfile_wput(4000):PROCdfile_wput(3000) 21960PROCdfile_wput(2):PROCdfile_wput(20000+R%*15000):PROCdfile_wput(200000) 21970PROCdfile_wput(8):PROCdfile_wput(300000):PROCdfile_wput(200000) 21980PROCdfile_wput(0) 21990ENDPROC 22000: 22010: 22020DEFPROCgraph_pointline 22030$text%="Line":PROCupdate_bottom 22040x%=group_map%!(group%*4):y%=1 22050REM Object header 22060S%=0:L%=0:IFgroup_data%?(group%*42+9)>1:S%=128:L%=16 22070PROCdfile_wput(2):PROCdfile_wput(24+16+L%+(data_length%*12)+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(250000) 22080PROCdfile_wput(-1):PROCdfile_bput(0):PROCdfile_bput(group_data%?(group%*42+2)):PROCdfile_bput(group_data%?(group%*42+3)):PROCdfile_bput(group_data%?(group%*42+4)):PROCdfile_wput(group_data%!(group%*42+5)):PROCdfile_wput(S%) 22090C%=12000DIV(5-group_data%?(group%*42+9)) 22100IFS%=128:PROCdfile_wput(0):PROCdfile_wput(2):PROCdfile_wput(C%):PROCdfile_wput(C%) 22110X=FNdata_get(x%,y%)-data_xmin:Y=FNdata_get(x%+1,y%)-data_ymin 22120PROCdfile_wput(2):PROCdfile_wput(20000+(X*graph_xscale)+R%):PROCdfile_wput(20000+(Y*graph_yscale)+R%) 22130FORy%=2TOdata_length% 22140X=FNdata_get(x%,y%)-data_xmin:Y=FNdata_get(x%+1,y%)-data_ymin 22150PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+Y*graph_yscale+R%) 22160PROCpoll_minorloop 22170NEXT 22180PROCdfile_wput(0) 22190ENDPROC 22200: 22210DEFPROCgraph_pointline3D 22220$text%="3D Line":PROCupdate_bottom 22230x%=group_map%!(group%*4):y%=1 22240X=FNdata_get(x%,y%)-data_xmin:Y=FNdata_get(x%+1,y%)-data_ymin 22250FORy%=2TOdata_length% 22260x=FNdata_get(x%,y%)-data_xmin:y=FNdata_get(x%+1,y%)-data_ymin 22270REM Object header 22280PROCdfile_wput(2):PROCdfile_wput(24+16+(5*12)+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(250000) 22290C%=0:IFx<>X:IF(y-Y)/(x-X)>1:C%=2 22300PROCdfile_bput(0):PROCdfile_bfade(group_data%?(group%*42+2),C%):PROCdfile_bfade(group_data%?(group%*42+3),C%):PROCdfile_bfade(group_data%?(group%*42+4),C%):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0) 22310PROCdfile_wput(2):PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+Y*graph_yscale+R%) 22320PROCdfile_wput(8):PROCdfile_wput(20000+x*graph_xscale+R%):PROCdfile_wput(20000+y*graph_yscale+R%) 22330PROCdfile_wput(8):PROCdfile_wput(35000+x*graph_xscale+R%):PROCdfile_wput(35000+y*graph_yscale+R%) 22340PROCdfile_wput(8):PROCdfile_wput(35000+X*graph_xscale+R%):PROCdfile_wput(35000+Y*graph_yscale+R%) 22350PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+Y*graph_yscale+R%) 22360PROCdfile_wput(0) 22370X=x:Y=y 22380PROCpoll_minorloop 22390NEXT 22400ENDPROC 22410: 22420DEFPROCgraph_lineunder 22430$text%="Area under":PROCupdate_bottom 22440x%=group_map%!(group%*4):y%=1 22450REM OH: Lineunder 22460PROCdfile_wput(2):PROCdfile_wput(24+16+((data_length%+2)*12)+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000) 22470IFgraph_3D%THEN 22480 PROCdfile_bput(0):PROCdfile_bfade(group_data%?(group%*42+2),1):PROCdfile_bfade(group_data%?(group%*42+3),1):PROCdfile_bfade(group_data%?(group%*42+4),1):PROCdfile_wput(graph_outline%) 22490ELSE 22500 PROCdfile_bput(0):PROCdfile_bput(group_data%?(group%*42+2)):PROCdfile_bput(group_data%?(group%*42+3)):PROCdfile_bput(group_data%?(group%*42+4)):PROCdfile_wput(-1) 22510ENDIF 22520PROCdfile_wput(0):PROCdfile_wput(0) 22530X=FNdata_get(x%,y%)-data_xmin:Y=FNdata_get(x%+1,y%)-data_ymin 22540PROCdfile_wput(2):PROCdfile_wput(20000+(X*graph_xscale)+R%):PROCdfile_wput(20000+R%) 22550PROCdfile_wput(8):PROCdfile_wput(20000+(X*graph_xscale)+R%):PROCdfile_wput(20000+(Y*graph_yscale)+R%) 22560FORy%=2TOdata_length% 22570X=FNdata_get(x%,y%)-data_xmin:Y=FNdata_get(x%+1,y%)-data_ymin 22580PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+Y*graph_yscale+R%) 22590PROCpoll_minorloop 22600NEXT 22610PROCdfile_wput(8):PROCdfile_wput(20000+(X*graph_xscale)+R%):PROCdfile_wput(20000+R%) 22620PROCdfile_wput(0) 22630IFNOTgraph_3D%:ENDPROC 22640PROCdfile_wput(2):PROCdfile_wput(24+16+5*12+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000) 22650PROCdfile_bput(0):PROCdfile_bput(group_data%?(group%*42+2)):PROCdfile_bput(group_data%?(group%*42+3)):PROCdfile_bput(group_data%?(group%*42+4)):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0) 22660PROCdfile_wput(2):PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+R%) 22670PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+Y*graph_yscale+R%) 22680PROCdfile_wput(8):PROCdfile_wput(35000+X*graph_xscale+R%):PROCdfile_wput(35000+Y*graph_yscale+R%) 22690PROCdfile_wput(8):PROCdfile_wput(35000+X*graph_xscale+R%):PROCdfile_wput(35000+R%) 22700PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+R%) 22710PROCdfile_wput(0) 22720ENDPROC 22730: 22740DEFPROCgraph_points 22750IFgroup_data%?(group%*42)=0:ENDPROC 22760$text%="Points":PROCupdate_bottom 22770x%=group_map%!(group%*4) 22780FORy%=1TOdata_length% 22790X=FNdata_get(x%,y%)-data_xmin:Y=FNdata_get(x%+1,y%)-data_ymin 22800C%=(group_data%?(group%*42+4)<<24)+(group_data%?(group%*42+3)<<16)+(group_data%?(group%*42+2)<<8) 22810M=group_data%?(group%*42+1) 22820CASEgroup_data%?(group%*42)OF 22830 WHEN1:PROCpoint_cir(M) 22840 WHEN2:PROCpoint_squ(M) 22850 WHEN3:PROCpoint_tri(M) 22860 WHEN4:PROCpoint_dia(M) 22870 WHEN5:PROCpoint_sta(M) 22880 WHEN6:PROCpoint_cross(M) 22890 WHEN7:PROCpoint_x(M) 22900ENDCASE 22910PROCpoll_minorloop 22920NEXT 22930ENDPROC 22940: 22950DEFPROCpoint_cir(N) 22960REM OH: Circle 22970PROCdfile_wput(2):PROCdfile_wput(24+16+(1*12)+(4*28)+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000) 22980PROCdfile_wput(C%):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0) 22990PROCdfile_wput(2):PROCdfile_wput(20000+X*graph_xscale-1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale+R%) 23000PROCdfile_wput(6) 23010 PROCdfile_wput(20000+X*graph_xscale-1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale-500*N+R%) 23020 PROCdfile_wput(20000+X*graph_xscale-500*N+R%):PROCdfile_wput(20000+Y*graph_yscale-1000*N+R%) 23030 PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+Y*graph_yscale-1000*N+R%) 23040PROCdfile_wput(6) 23050PROCdfile_wput(20000+X*graph_xscale+500*N+R%):PROCdfile_wput(20000+Y*graph_yscale-1000*N+R%) 23060PROCdfile_wput(20000+X*graph_xscale+1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale-500*N+R%) 23070PROCdfile_wput(20000+X*graph_xscale+1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale+R%) 23080PROCdfile_wput(6) 23090PROCdfile_wput(20000+X*graph_xscale+1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale+500*N+R%) 23100PROCdfile_wput(20000+X*graph_xscale+500*N+R%):PROCdfile_wput(20000+Y*graph_yscale+1000*N+R%) 23110PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+Y*graph_yscale+1000*N+R%) 23120PROCdfile_wput(6) 23130PROCdfile_wput(20000+X*graph_xscale-500*N+R%):PROCdfile_wput(20000+Y*graph_yscale+1000*N+R%) 23140PROCdfile_wput(20000+X*graph_xscale-1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale+500*N+R%) 23150PROCdfile_wput(20000+X*graph_xscale-1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale+R%) 23160PROCdfile_wput(0) 23170ENDPROC 23180: 23190DEFPROCpoint_squ(N) 23200REM OH: Square 23210PROCdfile_wput(2):PROCdfile_wput(24+16+(5*12)+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000) 23220PROCdfile_wput(C%):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0) 23230PROCdfile_wput(2):PROCdfile_wput(20000+X*graph_xscale-1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale-1000*N+R%) 23240PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale-1000*N+R%) 23250PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale+1000*N+R%) 23260PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale-1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale+1000*N+R%) 23270PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale-1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale-1000*N+R%) 23280PROCdfile_wput(0) 23290ENDPROC 23300: 23310DEFPROCpoint_tri(N) 23320REM OH: Triangle 23330PROCdfile_wput(2):PROCdfile_wput(24+16+(4*12)+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000) 23340PROCdfile_wput(C%):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0) 23350PROCdfile_wput(2):PROCdfile_wput(20000+X*graph_xscale-1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale-1000*N+R%) 23360PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale-1000*N+R%) 23370PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+Y*graph_yscale+1000*N+R%) 23380PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale-1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale-1000*N+R%) 23390PROCdfile_wput(0) 23400ENDPROC 23410: 23420DEFPROCpoint_dia(N) 23430REM OH: Diamond 23440PROCdfile_wput(2):PROCdfile_wput(24+16+(5*12)+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000) 23450PROCdfile_wput(C%):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0) 23460PROCdfile_wput(2):PROCdfile_wput(20000+X*graph_xscale-1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale+R%) 23470PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+Y*graph_yscale-1000*N+R%) 23480PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale+R%) 23490PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+Y*graph_yscale+1000*N+R%) 23500PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale-1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale+R%) 23510PROCdfile_wput(0) 23520ENDPROC 23530: 23540DEFPROCpoint_sta(N) 23550REM OH: Star 23560PROCdfile_wput(2):PROCdfile_wput(24+16+(13*12)+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000) 23570PROCdfile_wput(C%):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0) 23580PROCdfile_wput(2):PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+Y*graph_yscale-1000*N+R%) 23590PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+300*N+R%):PROCdfile_wput(20000+Y*graph_yscale-500*N+R%) 23600PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale-500*N+R%) 23610PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+500*N+R%):PROCdfile_wput(20000+Y*graph_yscale+R%) 23620PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale+500*N+R%) 23630PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+300*N+R%):PROCdfile_wput(20000+Y*graph_yscale+500*N+R%) 23640PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+Y*graph_yscale+1000*N+R%) 23650PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale-300*N+R%):PROCdfile_wput(20000+Y*graph_yscale+500*N+R%) 23660PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale-1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale+500*N+R%) 23670PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale-500*N+R%):PROCdfile_wput(20000+Y*graph_yscale+R%) 23680PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale-1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale-500*N+R%) 23690PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale-300*N+R%):PROCdfile_wput(20000+Y*graph_yscale-500*N+R%) 23700PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+Y*graph_yscale-1000*N+R%) 23710PROCdfile_wput(0) 23720ENDPROC 23730: 23740DEFPROCpoint_cross(N) 23750REM OH: Cross 23760PROCdfile_wput(2):PROCdfile_wput(24+16+(4*12)+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000) 23770PROCdfile_wput(-1):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(0) 23780PROCdfile_wput(2):PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+Y*graph_yscale-1000*N+R%) 23790PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+Y*graph_yscale+1000*N+R%) 23800PROCdfile_wput(2):PROCdfile_wput(20000+X*graph_xscale-1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale+R%) 23810PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale+R%) 23820PROCdfile_wput(0) 23830ENDPROC 23840: 23850DEFPROCpoint_x(N) 23860REM OH: X 23870PROCdfile_wput(2):PROCdfile_wput(24+16+(4*12)+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000) 23880PROCdfile_wput(-1):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(0) 23890PROCdfile_wput(2):PROCdfile_wput(20000+X*graph_xscale-1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale-1000*N+R%) 23900PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale+1000*N+R%) 23910PROCdfile_wput(2):PROCdfile_wput(20000+X*graph_xscale-1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale+1000*N+R%) 23920PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale-1000*N+R%) 23930PROCdfile_wput(0) 23940ENDPROC 23950: 23960DEFPROCgraph_bestfit 23970$text%="Calculating BF":PROCupdate_bottom 23980a=0:b=0:c=0:d=0:e=0 23990x%=group_map%!(group%*4) 24000FORy%=1TOdata_length% 24010X=FNdata_get(x%,y%)-data_xmin:Y=FNdata_get(x%+1,y%)-data_ymin 24020a+=Y:b+=X:c+=X*Y:d+=X*X:e+=Y*Y 24030NEXT 24040IFgraph_best%=1 THEN 24050 A=(b*a-c*data_length%)/(a*b-e*data_length%) 24060 B=(b*e-c*b)/(e*data_length%-a*b) 24070ELSE 24080 A=(a*b-c*data_length%)/(b*b-d*data_length%) 24090 B=(a*d-c*b)/(d*data_length%-b*b) 24100ENDIF 24110$text%="Best fit line":PROCupdate_bottom 24120IFgraph_best%=1 THEN 24130 x=20000+(B*graph_xscale):y=20000 24140 IFx<20000:x=20000:y=20000-B/A*graph_yscale 24150 IFx>20000+(data_xmax-data_xmin)*graph_xscale:x=20000+(data_xmax-data_xmin)*graph_xscale:y=20000+(data_xmax-data_xmin-B)/A*graph_yscale 24160 X=20000+((A*(data_xmax-data_xmin)+B)*graph_xscale):Y=20000+((data_xmax-data_xmin)*graph_yscale) 24170 IFX<20000:X=20000:Y=20000-B/A*graph_yscale 24180 IFX>20000+(data_xmax-data_xmin)*graph_xscale:X=20000+(data_xmax-data_xmin)*graph_xscale:Y=20000+(data_xmax-data_xmin-B)/A*graph_yscale 24190ELSE 24200 x=20000:y=20000+(B*graph_yscale) 24210 IFy<20000:x=20000-B/A*graph_xscale:y=20000 24220 IFy>20000+(data_ymax-data_ymin)*graph_yscale:x=20000+(data_ymax-data_ymin-B)/A*graph_xscale:y=20000+(data_ymax-data_ymin)*graph_yscale 24230 X=20000+((data_xmax-data_xmin)*graph_xscale):Y=20000+((A*(data_xmax-data_xmin)+B)*graph_yscale) 24240 IFY<20000:X=20000-B/A*graph_xscale:Y=20000 24250 IFy>20000+(data_ymax-data_ymin)*graph_yscale:X=20000+(data_ymax-data_ymin-B)/A*graph_xscale:Y=20000+(data_ymax-data_ymin)*graph_yscale 24260ENDIF 24270IFNOTgraph_3D%:PROCgraph_drawbest 24280IFgraph_3D%:PROCgraph_drawbest3D 24290ENDPROC 24300: 24310DEFPROCgraph_drawbest 24320REM OH: Best fit 24330S%=0:IFgroup_data%?(group%*42+9)>1:S%=128 24340L%=0:IFS%=128:L%=16 24350PROCdfile_wput(2):PROCdfile_wput(24+16+L%+(2*12)+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(250000) 24360C%=(group_data%?(group%*42+4)<<24)+(group_data%?(group%*42+3)<<16)+(group_data%?(group%*42+2)<<8) 24370PROCdfile_wput(-1):PROCdfile_wput(C%):PROCdfile_wput(group_data%!(group%*42+5)):PROCdfile_wput(S%) 24380C%=12000DIV(5-group_data%?(group%*42+9)) 24390IFS%=128:PROCdfile_wput(0):PROCdfile_wput(2):PROCdfile_wput(C%):PROCdfile_wput(C%) 24400PROCdfile_wput(2):PROCdfile_wput(x):PROCdfile_wput(y) 24410PROCdfile_wput(8):PROCdfile_wput(X):PROCdfile_wput(Y) 24420PROCdfile_wput(0) 24430ENDPROC 24440: 24450DEFPROCgraph_drawbest3D 24460REM OH: Best fit 24470PROCdfile_wput(2):PROCdfile_wput(24+16+5*12+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(250000) 24480PROCdfile_bput(0):PROCdfile_bput(group_data%?(group%*42+2)):PROCdfile_bput(group_data%?(group%*42+3)):PROCdfile_bput(group_data%?(group%*42+4)):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0) 24490N=group%*15000 24500PROCdfile_wput(2):PROCdfile_wput(x+N):PROCdfile_wput(y+N) 24510PROCdfile_wput(8):PROCdfile_wput(x+N+15000):PROCdfile_wput(y+N+15000) 24520PROCdfile_wput(8):PROCdfile_wput(X+N+15000):PROCdfile_wput(Y+N+15000) 24530PROCdfile_wput(8):PROCdfile_wput(X+N):PROCdfile_wput(Y+N) 24540PROCdfile_wput(8):PROCdfile_wput(x+N):PROCdfile_wput(y+N) 24550PROCdfile_wput(0) 24560ENDPROC 24570: 24580DEFPROCgraph_title(A%) 24590$text%="Title":PROCupdate_bottom 24600REM OH: Title text 24610N=FNlen(s_title%):N+=4-(N MOD 4) 24620PROCdfile_wput(1):PROCdfile_wput(24+28+N):PROCdfile_wput(0):PROCdfile_wput(220000):PROCdfile_wput(300000):PROCdfile_wput(223000+text_titley*640) 24630PROCdfile_wput(0):PROCdfile_bput(0):PROCdfile_bput(255):PROCdfile_bput(255):PROCdfile_bput(255) 24640PROCdfile_wput(graph_titlec):PROCdfile_wput(640*text_titlex):PROCdfile_wput(640*text_titley):PROCdfile_wput(0):PROCdfile_wput(A%) 24650PROCdfile_sput(s_title%) 24660ENDPROC 24670: 24680DEFPROCgraph_xlabel 24690$text%="X label":PROCupdate_bottom 24700REM OH: X label text 24710N=FNlen(s_xaxis%):N+=4-(N MOD 4) 24720IF text_axisc<>0 THEN 24730 SYS"Font_FindFont",,font_list%+text_axisc*40,text_axisx*16,text_axisy*16,0,0 TO M 24740 SYS"Font_StringWidth",,s_xaxis%,300000,200000,-1,s_xaxis%+FNlen(s_xaxis%)TO,,X 24750 SYS"Font_LoseFont",M 24760ELSE 24770X=text_axisx*1000*FNlen(s_xaxis%) 24780ENDIF 24790X=X*640/1000 24800PROCdfile_wput(1):PROCdfile_wput(24+28+N):PROCdfile_wput(0):PROCdfile_wput(220000):PROCdfile_wput(300000):PROCdfile_wput(220000) 24810PROCdfile_wput(0):PROCdfile_bput(?graph_back%):PROCdfile_bput(graph_back%?1):PROCdfile_bput(graph_back%?2):PROCdfile_bput(graph_back%?3) 24820PROCdfile_wput(graph_axisc):PROCdfile_wput(640*text_axisx):PROCdfile_wput(640*text_axisy):PROCdfile_wput(300000-X):PROCdfile_wput(2000) 24830PROCdfile_sput(s_xaxis%) 24840ENDPROC 24850: 24860DEFPROCgraph_ylabel 24870$text%="Y label":PROCupdate_bottom 24880REM OH: Y label text 24890N=FNlen(s_yaxis%):N+=4-(N MOD 4) 24900PROCdfile_wput(1):PROCdfile_wput(24+28+N):PROCdfile_wput(0):PROCdfile_wput(220000):PROCdfile_wput(300000):PROCdfile_wput(220000) 24910PROCdfile_wput(0):PROCdfile_bput(?graph_back%):PROCdfile_bput(graph_back%?1):PROCdfile_bput(graph_back%?2):PROCdfile_bput(graph_back%?3) 24920PROCdfile_wput(graph_axisc):PROCdfile_wput(640*text_axisx):PROCdfile_wput(640*text_axisy):PROCdfile_wput(20000):PROCdfile_wput(205000) 24930PROCdfile_sput(s_yaxis%) 24940ENDPROC 24950: 24960DEFPROCgraph_fonttable 24970$text%="Font table":PROCupdate_top 24980R%=-1 24990IFtext_titlec<>0:PROCgraph_fontt(1,text_titlec):graph_titlec=1 25000IFtext_axisc<>0:PROCgraph_fontt(2,text_axisc):graph_axisc=2 25010IFtext_keyc<>0:PROCgraph_fontt(3,text_keyc):graph_keyc=3 25020R%+=4-(R%MOD4) 25030REM OH: Font table 25040PROCdfile_wput(0):PROCdfile_wput(8+R%) 25050PROCdfile_sputl(block%,R%) 25060ENDPROC 25070: 25080DEFPROCgraph_fontlen(M) 25090$(block%+L%)=CHR$0+$(font_list%+M*40)+CHR$0+CHR$0+CHR$0 25100REPEATL%+=1:UNTILblock%?L%=0 25110ENDPROC 25120: 25130DEFPROCgraph_fontt(N,M) 25140$(block%+R%+1)=CHR$N+$(font_list%+M*40)+CHR$0 25150REPEATR%+=1:UNTILblock%?R%=0 25160ENDPROC 25170: 25180DEFPROCgraph_key 25190$text%="Key":PROCupdate_bottom 25200B=0:X=0 25210IFgraph_type%<>3:A=5:ELSEA=data_length%-1 25220FORgroup%=0TOA 25230N=group_map%?(group%*4) 25240IFN<>0ORgraph_type%=3 THEN 25250 IFgraph_type%<=2:R%=group_data%+group%*42+11:ELSEPROCdata_sget(group_map%!24,group%+1):R%=block% 25260 IF text_keyc<>0 THEN 25270 SYS"Font_FindFont",,font_list%+text_keyc*40,text_keyx*16,text_keyy*16,0,0 TO N% 25280 SYS"Font_StringWidth",,R%,300000,200000,-1,R%+FNlen(R%)TO,,Y 25290 SYS"Font_LoseFont",N% 25300 ELSE 25310 Y=text_keyx*1000*FNlen(R%) 25320 ENDIF 25330 IFY>X:X=Y 25340 B+=1 25350ENDIF 25360NEXT:B+=1:X=X*640/1000 25370REM OH: Key box 25380PROCdfile_wput(2):PROCdfile_wput(24+16+12*5+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(320000):PROCdfile_wput(220000) 25390PROCdfile_bput(?graph_back%):PROCdfile_bput(graph_back%?1):PROCdfile_bput(graph_back%?2):PROCdfile_bput(graph_back%?3):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(0) 25400PROCdfile_wput(2):PROCdfile_wput(330000):PROCdfile_wput(228000-B*18000) 25410PROCdfile_wput(8):PROCdfile_wput(370000+X):PROCdfile_wput(228000-B*18000) 25420PROCdfile_wput(8):PROCdfile_wput(370000+X):PROCdfile_wput(220000) 25430PROCdfile_wput(8):PROCdfile_wput(330000):PROCdfile_wput(220000) 25440PROCdfile_wput(8):PROCdfile_wput(330000):PROCdfile_wput(228000-B*18000) 25450PROCdfile_wput(0) 25460B=0 25470IFgraph_type%<>3:A=5:ELSEA=data_length%-1 25480FORgroup%=0TOA 25490IFgraph_type%<>3:N=group_map%!(group%*4) 25500IFN<>0ORgraph_type%=3 THEN 25510 CASEgraph_type%OF 25520 WHEN 1 25530 REM OH: Item line 25540 S%=0:L%=0:IFgroup_data%?(group%*42+9)>1:S%=128:L%=16 25550 PROCdfile_wput(2):PROCdfile_wput(24+16+L%+2*12+4):PROCdfile_wput(330000):PROCdfile_wput(0):PROCdfile_wput(330000):PROCdfile_wput(220000) 25560 PROCdfile_wput(-1):PROCdfile_bput(0):PROCdfile_bput(group_data%?(group%*42+2)):PROCdfile_bput(group_data%?(group%*42+3)):PROCdfile_bput(group_data%?(group%*42+4)):PROCdfile_wput(group_data%!(group%*42+5)):PROCdfile_wput(S%) 25570 C%=8000DIV(5-group_data%?(group%*42+9)) 25580 IFS%=128:PROCdfile_wput(0):PROCdfile_wput(2):PROCdfile_wput(C%):PROCdfile_wput(C%) 25590 PROCdfile_wput(2):PROCdfile_wput(334000):PROCdfile_wput(207000-18000*B) 25600 PROCdfile_wput(8):PROCdfile_wput(352000):PROCdfile_wput(207000-18000*B) 25610 PROCdfile_wput(0) 25620 REM Item point 25630 X=(343000-20000)/graph_xscale:Y=(207000-20000-18000*B)/graph_yscale 25640 R%=0:C%=(group_data%?(group%*42+4)<<24)+(group_data%?(group%*42+3)<<16)+(group_data%?(group%*42+2)<<8) 25650 M%=group_data%?(group%*42+1) 25660 CASEgroup_data%?(group%*42)OF 25670 WHEN1:PROCpoint_cir(M%) 25680 WHEN2:PROCpoint_squ(M%) 25690 WHEN3:PROCpoint_tri(M%) 25700 WHEN4:PROCpoint_dia(M%) 25710 WHEN5:PROCpoint_sta(M%) 25720 WHEN6:PROCpoint_cross(M%) 25730 WHEN7:PROCpoint_x(M%) 25740 ENDCASE 25750 WHEN2 25760 REM OH: Item box 25770 PROCdfile_wput(2):PROCdfile_wput(24+16+12*5+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(320000):PROCdfile_wput(220000) 25780 PROCdfile_bput(0):PROCdfile_bput(group_data%?(group%*42+2)):PROCdfile_bput(group_data%?(group%*42+3)):PROCdfile_bput(group_data%?(group%*42+4)):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0) 25790 PROCdfile_wput(2):PROCdfile_wput(338000):PROCdfile_wput(212000-18000*B) 25800 PROCdfile_wput(8):PROCdfile_wput(348000):PROCdfile_wput(212000-18000*B) 25810 PROCdfile_wput(8):PROCdfile_wput(348000):PROCdfile_wput(202000-18000*B) 25820 PROCdfile_wput(8):PROCdfile_wput(338000):PROCdfile_wput(202000-18000*B) 25830 PROCdfile_wput(8):PROCdfile_wput(338000):PROCdfile_wput(212000-18000*B) 25840 PROCdfile_wput(0) 25850 WHEN3 25860 REM OH: Item pie 25870 PROCdfile_wput(2):PROCdfile_wput(24+16+12*4+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(320000):PROCdfile_wput(220000) 25880 PROCdfile_bput(pie_palette%?(B*4)):PROCdfile_bput(pie_palette%?(B*4+1)):PROCdfile_bput(pie_palette%?(B*4+2)):PROCdfile_bput(pie_palette%?(B*4+3)) 25890 PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0) 25900 PROCdfile_wput(2):PROCdfile_wput(338000):PROCdfile_wput(212000-18000*B) 25910 PROCdfile_wput(8):PROCdfile_wput(348000):PROCdfile_wput(207000-18000*B) 25920 PROCdfile_wput(8):PROCdfile_wput(338000):PROCdfile_wput(202000-18000*B) 25930 PROCdfile_wput(8):PROCdfile_wput(338000):PROCdfile_wput(212000-18000*B) 25940 PROCdfile_wput(0) 25950 ENDCASE 25960 REM OH: Key text 25970 IFgraph_type%<>3:R%=group_data%+group%*42+11:ELSEPROCdata_sget(group_map%!24,group%+1):R%=block% 25980 N%=FNlen(R%) 25990 N%+=4-(N% MOD 4) 26000 PROCdfile_wput(1):PROCdfile_wput(24+28+N%):PROCdfile_wput(0):PROCdfile_wput(220000):PROCdfile_wput(300000):PROCdfile_wput(220000) 26010 PROCdfile_wput(0):PROCdfile_bput(?graph_back%):PROCdfile_bput(graph_back%?1):PROCdfile_bput(graph_back%?2):PROCdfile_bput(graph_back%?3) 26020 PROCdfile_wput(graph_keyc):PROCdfile_wput(640*text_keyx):PROCdfile_wput(640*text_keyy):PROCdfile_wput(360000):PROCdfile_wput(207000-18000*B-(160*text_keyy)) 26030 PROCdfile_sput(R%) 26040 B+=1 26050ENDIF 26060NEXT 26070ENDPROC 26080: 26090DEFPROCgraph_bar 26100$text%="Bars":PROCupdate_bottom 26110IFgraph_bartype%<10:FORN%=0TOdata_length%-1 26120IFgraph_bartype%>10:FORN%=data_length%-1TO0STEP-1 26130 M%=0:FORgroup%=0TO5:IFgroup_map%!(group%*4)>0:M%+=1 26140 NEXT:M%-=1:R%=M% 26150IFgraph_bartype%<10:A=data_ymin:B=data_ymax 26160IFgraph_bartype%>10:A=data_xmin:B=data_xmax 26170IFA<0:O%=-A:ELSEO%=0 26180IFB<0:O%=A-B 26190M=0 26200IFgraph_3D%ANDgraph_bartype%<10ANDgraph_bartype%<>3:FORgroup%=0TO5 26210IFgraph_3D%ANDgraph_bartype%=3:FORgroup%=5TO0STEP-1:M=M%*15000:R%=M% 26220IFgraph_3D%ANDgraph_bartype%>10ANDgraph_bartype%<>13:FORgroup%=5TO0STEP-1 26230IFgraph_3D%ANDgraph_bartype%=13:FORgroup%=0TO5:M=M%*15000:R%=M% 26240IFNOTgraph_3D%:FORgroup%=0TO5 26250IFgroup_map%!(group%*4)>0ANDgraph_bartype%<10THEN 26260 Y=FNdata_get(group_map%!(group%*4),N%+1) 26270 IFY>data_ymax:Y=data_ymax 26280 IFY<data_ymin:Y=data_ymin 26290 Y-=data_ymin 26300 IFNOTgraph_3D%:PROCgraph_dbar(20000+(graph_barmargin%AND1)*graph_barsize+N%*graph_groupsize+(R%-M%)*graph_barsize+M,20000+M+O%*graph_yscale,graph_barwidth,20000+M+Y*graph_yscale,group%) 26310 IFgraph_3D%:PROCgraph_dbar3Dh(20000+(graph_barmargin%AND1)*graph_barsize+N%*graph_groupsize+(R%-M%)*graph_barsize+M,20000+M+O%*graph_yscale,graph_barwidth,20000+M+Y*graph_yscale,group%) 26320 M%-=1 26330ENDIF 26340IFgroup_map%!(group%*4)>0ANDgraph_bartype%>10THEN 26350 Y=FNdata_get(group_map%!(group%*4),N%+1) 26360 IFY>data_xmax:Y=data_xmax 26370 IFY<data_xmin:Y=data_xmin 26380 Y-=data_xmin 26390 IFNOTgraph_3D%:PROCgraph_dbar(20000+M+O%*graph_xscale,200000-M-(graph_barmargin%AND1)*graph_barsize-N%*graph_groupsize-(R%-M%)*graph_barsize,20000+M+Y*graph_xscale,-graph_barwidth,group%) 26400 IFgraph_3D%:PROCgraph_dbar3Dv(20000+M+O%*graph_xscale,20000+(graph_barmargin%AND128)*graph_barsize/128+(data_length%-N%-1)*graph_groupsize+(R%-M%+1)*graph_barsize-M,20000+M+Y*graph_xscale,-graph_barwidth,group%) 26410 M%-=1 26420ENDIF 26430PROCpoll_minorloop 26440NEXT 26450NEXT 26460ENDPROC 26470: 26480DEFPROCgraph_barOvr 26490$text%="Bars (overlaid)":PROCupdate_bottom 26500FORgroup%=0TO5:block%?group%=0:NEXT 26510IFgraph_bartype%<10:FORN%=0TOdata_length%-1 ELSE FORN%=data_length%-1TO0STEP-1 26520M%=0:FORgroup%=0TO5:IFgroup_map%!(group%*4)>0:block%?M%=group%:M%+=1 26530NEXT:R%=M%-1 26540L%=graph_groupsize/2 26550: 26560FORgroup%=M%-1TO1STEP-1 26570A=0:Y=ABSFNdata_get(group_map%!(?block%*4),N%+1) 26580FORM=1TOgroup%:X=ABSFNdata_get(group_map%!(block%?M*4),N%+1):IFX>Y:Y=X:A=M 26590NEXT 26600SWAPblock%?group%,block%?A 26610NEXT 26620: 26630O=0:B%=0:X=0:Y=0 26640FORgroup%=M%-1TO0STEP-1:M=block%?group% 26650O=FNdata_get(group_map%!(M*4),N%+1) 26660IFA%>Y:Y=A%:X=M 26670NEXT:O-=100000000 26680: 26690IFgraph_bartype%<10:A=data_ymin:B=data_ymax 26700IFgraph_bartype%>10:A=data_xmin:B=data_xmax 26710IFA<0:O%=-A:ELSEO%=0 26720IFB<0:O%=A-B 26730IFgraph_3D% THEN 26740 M=block%?(X-1):Y=FNdata_get(group_map%!(X*4),N%+1) 26750 IFY>B:Y=B 26760 IFY<A:Y=A 26770 Y-=A 26780 IFgraph_bartype%<10:PROCgraph_dbarendh(20000+(graph_barmargin%AND1)*L%+N%*graph_groupsize+B%,20000+O%*graph_yscale,graph_barwidth,20000+Y*graph_yscale,X) 26790 IFgraph_bartype%>10:PROCgraph_dbarendv(20000+O%*graph_xscale,20000+(graph_barmargin%AND128)*L%/128+(data_length%-N%-1)*graph_groupsize+B%+graph_barwidth,20000+Y*graph_xscale,-graph_barwidth,X) 26800ENDIF 26810FORgroup%=M%-1TO0STEP-1:M=block%?group% 26820Y=FNdata_get(group_map%!(M*4),N%+1) 26830IFY>B:Y=B 26840IFY<A:Y=A 26850Y-=A 26860IFY=O THEN 26870 B%+=4000 26880 IFgraph_3D%ANDgraph_bartype%<10:PROCgraph_dbarendh(20000+(graph_barmargin%AND1)*L%+N%*graph_groupsize+B%+graph_barwidth-4000,20000+O%*graph_yscale,4000,20000+Y*graph_yscale,M) 26890 IFgraph_3D%ANDgraph_bartype%>10:PROCgraph_dbarendv(20000+O%*graph_xscale,20000+(graph_barmargin%AND128)*L%/128+(data_length%-N%-1)*graph_groupsize+B%+graph_barwidth,20000+Y*graph_xscale,-4000,M) 26900ENDIF 26910IFgraph_bartype%<10:PROCgraph_dbarOvh(20000+(graph_barmargin%AND1)*L%+N%*graph_groupsize+B%,20000+O%*graph_yscale,graph_barwidth,20000+Y*graph_yscale,M) 26920IFgraph_bartype%>10:PROCgraph_dbarOvv(20000+O%*graph_xscale,20000+(graph_barmargin%AND128)*L%/128+(data_length%-N%-1)*graph_groupsize+B%+graph_barwidth,20000+Y*graph_xscale,-graph_barwidth,M) 26930M%-=1 26940O=Y 26950PROCpoll_minorloop 26960NEXT 26970NEXT 26980ENDPROC 26990: 27000DEFPROCgraph_dbar3Dh(x,y,X,Y,M) 27010PROCgraph_dbarendh(x,y,X,Y,M):PROCgraph_dbar(x,y,X,Y,M):PROCgraph_dbarsideh(x,y,X,Y,M) 27020ENDPROC 27030: 27040DEFPROCgraph_dbar3Dv(x,y,X,Y,M) 27050PROCgraph_dbarendv(x,y,X,Y,M):PROCgraph_dbar(x,y,X,Y,M):PROCgraph_dbarsidev(x,y,X,Y,M) 27060ENDPROC 27070: 27080DEFPROCgraph_dbarOvh(x,y,X,Y,M) 27090PROCgraph_dbar(x,y,X,Y,M):IFgraph_3D%:PROCgraph_dbarsideh(x,y,X,Y,M) 27100ENDPROC 27110: 27120DEFPROCgraph_dbarOvv(x,y,X,Y,M) 27130PROCgraph_dbar(x,y,X,Y,M):IFgraph_3D%:PROCgraph_dbarsidev(x,y,X,Y,M) 27140ENDPROC 27150: 27160DEFPROCgraph_dbar(x,y,X,Y,M) 27170IFgraph_bartype%<10:X+=x ELSE Y+=y 27180REM OH: A bar 27190PROCdfile_wput(2):PROCdfile_wput(24+16+12*5+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(320000):PROCdfile_wput(220000) 27200PROCdfile_bput(0):PROCdfile_bput(group_data%?(M*42+2)):PROCdfile_bput(group_data%?(M*42+3)):PROCdfile_bput(group_data%?(M*42+4)):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0) 27210PROCdfile_wput(2):PROCdfile_wput(x):PROCdfile_wput(y) 27220PROCdfile_wput(8):PROCdfile_wput(X):PROCdfile_wput(y) 27230PROCdfile_wput(8):PROCdfile_wput(X):PROCdfile_wput(Y) 27240PROCdfile_wput(8):PROCdfile_wput(x):PROCdfile_wput(Y) 27250PROCdfile_wput(8):PROCdfile_wput(x):PROCdfile_wput(y) 27260PROCdfile_wput(0) 27270ENDPROC 27280: 27290DEFPROCgraph_dbarendh(x,y,X,Y,M) 27300X+=x 27310IFy>Y:SWAPy,Y 27320REM OH: A top and a bottom 27330PROCdfile_wput(2):PROCdfile_wput(24+16+12*7+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(320000):PROCdfile_wput(220000) 27340PROCdfile_bput(0):PROCdfile_bfade(group_data%?(M*42+2),1):PROCdfile_bfade(group_data%?(M*42+3),1):PROCdfile_bfade(group_data%?(M*42+4),1):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0) 27350PROCdfile_wput(2):PROCdfile_wput(x):PROCdfile_wput(y) 27360PROCdfile_wput(8):PROCdfile_wput(X):PROCdfile_wput(y) 27370PROCdfile_wput(8):PROCdfile_wput(X+15000):PROCdfile_wput(y+15000) 27380PROCdfile_wput(8):PROCdfile_wput(X+15000):PROCdfile_wput(Y+15000) 27390PROCdfile_wput(8):PROCdfile_wput(x+15000):PROCdfile_wput(Y+15000) 27400PROCdfile_wput(8):PROCdfile_wput(x):PROCdfile_wput(Y) 27410PROCdfile_wput(8):PROCdfile_wput(x):PROCdfile_wput(y) 27420PROCdfile_wput(0) 27430ENDPROC 27440: 27450DEFPROCgraph_dbarendv(x,y,X,Y,M) 27460Y+=y 27470IFx>X:SWAPx,X 27480REM OH: A side 27490PROCdfile_wput(2):PROCdfile_wput(24+16+12*7+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(320000):PROCdfile_wput(220000) 27500PROCdfile_bput(0):PROCdfile_bfade(group_data%?(M*42+2),2):PROCdfile_bfade(group_data%?(M*42+3),2):PROCdfile_bfade(group_data%?(M*42+4),2):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0) 27510PROCdfile_wput(2):PROCdfile_wput(x):PROCdfile_wput(Y) 27520PROCdfile_wput(8):PROCdfile_wput(X):PROCdfile_wput(Y) 27530PROCdfile_wput(8):PROCdfile_wput(X+15000):PROCdfile_wput(Y+15000) 27540PROCdfile_wput(8):PROCdfile_wput(X+15000):PROCdfile_wput(y+15000) 27550PROCdfile_wput(8):PROCdfile_wput(x+15000):PROCdfile_wput(y+15000) 27560PROCdfile_wput(8):PROCdfile_wput(x):PROCdfile_wput(y) 27570PROCdfile_wput(8):PROCdfile_wput(x):PROCdfile_wput(Y) 27580PROCdfile_wput(0) 27590ENDPROC 27600: 27610DEFPROCgraph_dbarsideh(x,y,X,Y,M) 27620IFgraph_bartype%<10:X+=x ELSE Y+=y 27630REM OH: A side 27640PROCdfile_wput(2):PROCdfile_wput(24+16+12*5+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(320000):PROCdfile_wput(220000) 27650PROCdfile_bput(0):PROCdfile_bfade(group_data%?(M*42+2),2):PROCdfile_bfade(group_data%?(M*42+3),2):PROCdfile_bfade(group_data%?(M*42+4),2):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0) 27660PROCdfile_wput(2):PROCdfile_wput(X):PROCdfile_wput(y) 27670PROCdfile_wput(8):PROCdfile_wput(X+15000):PROCdfile_wput(y+15000) 27680PROCdfile_wput(8):PROCdfile_wput(X+15000):PROCdfile_wput(Y+15000) 27690PROCdfile_wput(8):PROCdfile_wput(X):PROCdfile_wput(Y) 27700PROCdfile_wput(8):PROCdfile_wput(X):PROCdfile_wput(y) 27710PROCdfile_wput(0) 27720ENDPROC 27730: 27740DEFPROCgraph_dbarsidev(x,y,X,Y,M) 27750Y+=y+graph_barwidth 27760REM OH: A top and a bottom 27770PROCdfile_wput(2):PROCdfile_wput(24+16+12*5+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(320000):PROCdfile_wput(220000) 27780PROCdfile_bput(0):PROCdfile_bfade(group_data%?(M*42+2),1):PROCdfile_bfade(group_data%?(M*42+3),1):PROCdfile_bfade(group_data%?(M*42+4),1):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0) 27790PROCdfile_wput(2):PROCdfile_wput(x):PROCdfile_wput(Y) 27800PROCdfile_wput(8):PROCdfile_wput(X):PROCdfile_wput(Y) 27810PROCdfile_wput(8):PROCdfile_wput(X+15000):PROCdfile_wput(Y+15000) 27820PROCdfile_wput(8):PROCdfile_wput(x+15000):PROCdfile_wput(Y+15000) 27830PROCdfile_wput(8):PROCdfile_wput(x):PROCdfile_wput(Y) 27840PROCdfile_wput(0) 27850ENDPROC 27860: 27870DEFPROCdfile_bfade(N,M) 27880BPUT#X%,ABS(N-M*&10) 27890ENDPROC 27900: 27910: 27920DEFPROCbar_labels 27930$text%="Bar labels":PROCupdate_bottom 27940REM OH: Bar graph labels 27950FORA%=1TOdata_length% 27960PROCdata_sget(group_map%!24,A%) 27970O=0:REPEATO+=1:UNTILblock%?O=0 27980O+=4-(O MOD4) 27990IFtext_axisc<>0 THEN 28000 SYS"Font_FindFont",,font_list%+text_axisc*40,text_axisx*16,text_axisy*16,0,0 TO N 28010 SYS"Font_StringWidth",,block%,300000,200000,-1,block%+FNlen(block%)TO,,X 28020 SYS"Font_LoseFont",N 28030ELSE 28040X=text_axisx*1000*FNlen(block%) 28050ENDIF 28060X=X*320/1000 28070CASEgraph_bartype%OF 28080 WHEN1 :Y%=(A%-.5)*graph_groupsize 28090 WHEN11:Y%=(A%-.5)*graph_groupsize 28100 WHEN2 :Y%=(A%-.5)*graph_groupsize 28110 WHEN12:Y%=(A%-.5)*graph_groupsize 28120 WHEN3 :Y%=(A%-.5)*graph_groupsize-graph_barsize/2 28130 WHEN13:Y%=(A%-.5)*graph_groupsize-graph_barsize/2 28140 WHEN4 :Y%=(A%-.5)*graph_groupsize-graph_barsize/2 28150 WHEN14:Y%=(A%-.5)*graph_groupsize-graph_barsize/2 28160 WHEN5 :Y%=(A%-1)*graph_groupsize+graph_barwidth/2+(graph_barmargin%AND1)*graph_barwidth 28170 WHEN15:Y%=(A%-1)*graph_groupsize+graph_barwidth/2+(graph_barmargin%AND1)*graph_barwidth 28180ENDCASE 28190IFgraph_bartype%<10:Y%-=X:ELSEY%-=190*text_axisy 28200PROCdfile_wput(1):PROCdfile_wput(24+28+O):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000) 28210PROCdfile_wput(0):PROCdfile_bput(?graph_back%):PROCdfile_bput(graph_back%?1):PROCdfile_bput(graph_back%?2):PROCdfile_bput(graph_back%?3) 28220PROCdfile_wput(graph_axisc):PROCdfile_wput(640*text_axisx):PROCdfile_wput(640*text_axisy) 28230IFgraph_bartype%<10:PROCdfile_wput(20000+(graph_barmargin%AND1)*graph_barsize+Y%):PROCdfile_wput(15000-380*text_axisy) 28240IFgraph_bartype%>10:PROCdfile_wput(16000-X*2):PROCdfile_wput(20000+(graph_barmargin%AND1)*graph_barsize+Y%) 28250PROCdfile_sput(block%) 28260NEXT 28270ENDPROC 28280: 28290DEFPROCgraph_pie(X,Y,R%) 28300IFgraph_3D%:Y+=10000 28310O=0:FORN%=1TOdata_length%:O+=FNdata_get(group_map%!(group%*4),N%):NEXT:IFO=0:O=1 28320IFgraph_3D%:PROCgraph_piebase 28330PROCgraph_piecrust 28340N=group_map%!24:IFN>0ANDN<=data_width%:PROCpie_labels 28350ENDPROC 28360: 28370DEFPROCgraph_piecrust 28380A=0:FORN%=1TOdata_length% 28390B=FNdata_get(group_map%!(group%*4),N%) 28400IFgraph_exp%ANDN%>=graph_es%ANDN%<=graph_ef%:N=A+B/2:X+=.1*R%*SIN(N/O*PI*2):Y+=.1*R%*COS(N/O*PI*2) 28410M%=0:N=B:REPEATN-=O/4:M%+=1:UNTILN<=0 28420REM OH: Pie segment 28430PROCdfile_wput(2):PROCdfile_wput(24+16+3*12+(28*M%)+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000) 28440M%=N%-1:M%+=16:REPEATM%-=16:UNTILM%<16 28450PROCdfile_bput(pie_palette%?(M%*4)):PROCdfile_bput(pie_palette%?(M%*4+1)):PROCdfile_bput(pie_palette%?(M%*4+2)):PROCdfile_bput(pie_palette%?(M%*4+3)):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0) 28460PROCdfile_wput(2):PROCdfile_wput(X):PROCdfile_wput(Y) 28470PROCdfile_wput(8):PROCdfile_wput(X+R%*SIN(A/O*PI*2)):PROCdfile_wput(Y+R%*COS((A/O)*PI*2)) 28480N=B:IFB>O/4:N=O/4 28490REPEAT 28500PROCdfile_wput(6) 28510PROCdfile_wput(X+R%*SIN(A/O*PI*2)+R%*N/O*2.25*SIN((A/O+.25)*PI*2)):PROCdfile_wput(Y+R%*COS((A/O)*PI*2)+R%*N/O*2.25*COS((A/O+.25)*PI*2)) 28520A+=N 28530PROCdfile_wput(X+R%*SIN(A/O*PI*2)+R%*N/O*2.25*SIN((A/O-.25)*PI*2)):PROCdfile_wput(Y+R%*COS(A/O*PI*2)+R%*N/O*2.25*COS((A/O-.25)*PI*2)) 28540PROCdfile_wput(X+R%*SIN(A/O*PI*2)):PROCdfile_wput(Y+R%*COS(A/O*PI*2)) 28550IFN=B:A%=TRUE 28560IFN<B:B-=O/4:A%=FALSE:IFN>B:N=B 28570UNTILA% 28580PROCdfile_wput(8):PROCdfile_wput(X):PROCdfile_wput(Y) 28590PROCdfile_wput(0) 28600B=FNdata_get(group_map%!(group%*4),N%) 28610IFgraph_exp%ANDN%>=graph_es%ANDN%<=graph_ef%:N=A-B/2:X-=.1*R%*SIN(N/O*PI*2):Y-=.1*R%*COS(N/O*PI*2) 28620PROCpoll_minorloop 28630NEXT 28640ENDPROC 28650: 28660DEFPROCgraph_piebase 28670Y-=10000 28680A=0:N%=1:B=FNdata_get(group_map%!(group%*4),N%) 28690REPEAT 28700 IFgraph_exp%ANDN%>=graph_es%ANDN%<=graph_ef%:N=A+B/2:X+=.1*R%*SIN(N/O*PI*2):Y+=.1*R%*COS(N/O*PI*2) 28710 M%=0:N=B:REPEATN-=O/4:M%+=1:UNTILN<=0 28720 PROCgraph_steakandkidney 28730 IFgraph_exp%ANDN%>=graph_es%ANDN%<=graph_ef%:N=A-B/2:X-=.1*R%*SIN(N/O*PI*2):Y-=.1*R%*COS(N/O*PI*2) 28740 N%+=1:B=FNdata_get(group_map%!(group%*4),N%) 28750UNTILA+B>O/2:L%=N% 28760A=O:FORN%=data_length%TOL%STEP-1 28770 B=FNdata_get(group_map%!(group%*4),N%):A-=B 28780 IFgraph_exp%ANDN%>=graph_es%ANDN%<=graph_ef%:N=A+B/2:X+=.1*R%*SIN(N/O*PI*2):Y+=.1*R%*COS(N/O*PI*2) 28790 M%=0:N=B:REPEATN-=O/4:M%+=1:UNTILN<=0 28800 PROCgraph_steakandkidney:A-=B 28810 IFgraph_exp%ANDN%>=graph_es%ANDN%<=graph_ef%:N=A+B/2:X-=.1*R%*SIN(N/O*PI*2):Y-=.1*R%*COS(N/O*PI*2) 28820 PROCpoll_minorloop 28830NEXT 28840Y+=10000 28850ENDPROC 28860: 28870DEFPROCgraph_steakandkidney 28880REM OH: Pie segment base 28890PROCdfile_wput(2):PROCdfile_wput(24+16+3*12+(28*M%)+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000) 28900M%=N%-1:M%+=16:REPEATM%-=16:UNTILM%<16 28910PROCdfile_bfade(pie_palette%?(M%*4),2):PROCdfile_bfade(pie_palette%?(M%*4+1),2):PROCdfile_bfade(pie_palette%?(M%*4+2),2):PROCdfile_bfade(pie_palette%?(M%*4+3),2):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0) 28920PROCdfile_wput(2):PROCdfile_wput(X):PROCdfile_wput(Y) 28930PROCdfile_wput(8):PROCdfile_wput(X+R%*SIN(A/O*PI*2)):PROCdfile_wput(Y+R%*COS((A/O)*PI*2)) 28940N=B:IFB>O/4:N=O/4 28950REPEAT 28960PROCdfile_wput(6) 28970PROCdfile_wput(X+R%*SIN(A/O*PI*2)+R%*N/O*2.25*SIN((A/O+.25)*PI*2)):PROCdfile_wput(Y+R%*COS((A/O)*PI*2)+R%*N/O*2.25*COS((A/O+.25)*PI*2)) 28980A+=N 28990PROCdfile_wput(X+R%*SIN(A/O*PI*2)+R%*N/O*2.25*SIN((A/O-.25)*PI*2)):PROCdfile_wput(Y+R%*COS(A/O*PI*2)+R%*N/O*2.25*COS((A/O-.25)*PI*2)) 29000PROCdfile_wput(X+R%*SIN(A/O*PI*2)):PROCdfile_wput(Y+R%*COS(A/O*PI*2)) 29010IFN=B:A%=TRUE 29020IFN<B:B-=O/4:A%=FALSE:IFN>B:N=B 29030UNTILA% 29040IFA>O:A-=O 29050PROCdfile_wput(8):PROCdfile_wput(X):PROCdfile_wput(Y) 29060PROCdfile_wput(0) 29070B=FNdata_get(group_map%!(group%*4),N%):A-=B 29080IFA+B<=O/2THEN 29090 REM OH: Pie segment left wall 29100 PROCdfile_wput(2):PROCdfile_wput(24+16+4*12+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000) 29110 M%=N%-1:M%+=16:REPEATM%-=16:UNTILM%<16 29120 PROCdfile_bfade(pie_palette%?(M%*4),2):PROCdfile_bfade(pie_palette%?(M%*4+1),2):PROCdfile_bfade(pie_palette%?(M%*4+2),2):PROCdfile_bfade(pie_palette%?(M%*4+3),2):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0) 29130 PROCdfile_wput(2):PROCdfile_wput(X):PROCdfile_wput(Y+10000) 29140 PROCdfile_wput(8):PROCdfile_wput(X):PROCdfile_wput(Y) 29150 PROCdfile_wput(8):PROCdfile_wput(X+R%*SIN((A+B)/O*PI*2)):PROCdfile_wput(Y+R%*COS(((A+B)/O)*PI*2)) 29160 PROCdfile_wput(8):PROCdfile_wput(X+R%*SIN((A+B)/O*PI*2)):PROCdfile_wput(Y+R%*COS(((A+B)/O)*PI*2)+10000) 29170 PROCdfile_wput(0) 29180ENDIF 29190IFA<=3*O/4ANDA+B>=O/4 THEN 29200 REM OH: Pie segment curved wall 29210 PROCdfile_wput(2):PROCdfile_wput(24+16+4*12+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000) 29220 M%=N%-1:M%+=16:REPEATM%-=16:UNTILM%<16 29230 PROCdfile_bfade(pie_palette%?(M%*4),2):PROCdfile_bfade(pie_palette%?(M%*4+1),2):PROCdfile_bfade(pie_palette%?(M%*4+2),2):PROCdfile_bfade(pie_palette%?(M%*4+3),2):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0) 29240 PROCdfile_wput(2):PROCdfile_wput(X+R%*SIN(A/O*PI*2)):PROCdfile_wput(Y+R%*COS((A/O)*PI*2)) 29250 PROCdfile_wput(8):PROCdfile_wput(X+R%*SIN(A/O*PI*2)):PROCdfile_wput(Y+R%*COS((A/O)*PI*2)+10000) 29260 PROCdfile_wput(8):PROCdfile_wput(X+R%*SIN((A+B)/O*PI*2)):PROCdfile_wput(Y+R%*COS(((A+B)/O)*PI*2)+10000) 29270 PROCdfile_wput(8):PROCdfile_wput(X+R%*SIN((A+B)/O*PI*2)):PROCdfile_wput(Y+R%*COS(((A+B)/O)*PI*2)) 29280 PROCdfile_wput(0) 29290ENDIF 29300IFA>=O/2THEN 29310 REM OH: Pie segment right wall 29320 PROCdfile_wput(2):PROCdfile_wput(24+16+4*12+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000) 29330 M%=N%-1:M%+=16:REPEATM%-=16:UNTILM%<16 29340 PROCdfile_bfade(pie_palette%?(M%*4),2):PROCdfile_bfade(pie_palette%?(M%*4+1),2):PROCdfile_bfade(pie_palette%?(M%*4+2),2):PROCdfile_bfade(pie_palette%?(M%*4+3),2):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0) 29350 PROCdfile_wput(2):PROCdfile_wput(X):PROCdfile_wput(Y+10000) 29360 PROCdfile_wput(8):PROCdfile_wput(X):PROCdfile_wput(Y) 29370 PROCdfile_wput(8):PROCdfile_wput(X+R%*SIN(A/O*PI*2)):PROCdfile_wput(Y+R%*COS((A/O)*PI*2)) 29380 PROCdfile_wput(8):PROCdfile_wput(X+R%*SIN(A/O*PI*2)):PROCdfile_wput(Y+R%*COS((A/O)*PI*2)+10000) 29390 PROCdfile_wput(0) 29400ENDIF 29410M%=N%-1:M%+=16:REPEATM%-=16:UNTILM%<16 29420IFA<O/4ANDA+B>O/4THEN 29430 REM OH: Right side bit 29440 PROCdfile_wput(2):PROCdfile_wput(24+16+3*12+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000) 29450 PROCdfile_bfade(pie_palette%?(M%*4),2):PROCdfile_bfade(pie_palette%?(M%*4+1),2):PROCdfile_bfade(pie_palette%?(M%*4+2),2):PROCdfile_bfade(pie_palette%?(M%*4+3),2):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0) 29460 PROCdfile_wput(2):PROCdfile_wput(X+R%):PROCdfile_wput(Y) 29470 PROCdfile_wput(8):PROCdfile_wput(X+R%):PROCdfile_wput(Y+10000) 29480 PROCdfile_wput(8):PROCdfile_wput(X):PROCdfile_wput(Y+10000) 29490 PROCdfile_wput(0) 29500ENDIF 29510IFA<O*3/4ANDA+B>O*3/4THEN 29520 REM OH: Left side bit 29530 PROCdfile_wput(2):PROCdfile_wput(24+16+3*12+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000) 29540 PROCdfile_bfade(pie_palette%?(M%*4),2):PROCdfile_bfade(pie_palette%?(M%*4+1),2):PROCdfile_bfade(pie_palette%?(M%*4+2),2):PROCdfile_bfade(pie_palette%?(M%*4+3),2):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0) 29550 PROCdfile_wput(2):PROCdfile_wput(X-R%):PROCdfile_wput(Y) 29560 PROCdfile_wput(8):PROCdfile_wput(X-R%):PROCdfile_wput(Y+10000) 29570 PROCdfile_wput(8):PROCdfile_wput(X):PROCdfile_wput(Y+10000) 29580 PROCdfile_wput(0) 29590ENDIF 29600A+=B 29610ENDPROC 29620: 29630DEFPROCpie_labels 29640IFR%<90000ANDNOTgraph_3D%ORR%<80000ANDgraph_3D%:ENDPROC 29650R%-=5000 29660$text%="Labels":PROCupdate_bottom 29670A=0:FORN%=1TOdata_length% 29680B=FNdata_get(group_map%!(group%*4),N%) 29690IFgraph_exp%ANDN%>=graph_es%ANDN%<=graph_ef%:N=A+B/2:X+=.1*R%*SIN(N/O*PI*2):Y+=.1*R%*COS(N/O*PI*2) 29700PROCdata_sget(group_map%!24,N%) 29710L%=0:REPEATL%+=1:UNTILblock%?L%=0 29720L%+=4-(L% MOD4) 29730IFtext_axisc<>0 THEN 29740 SYS"Font_FindFont",,font_list%+text_axisc*40,text_axisx*16,text_axisy*16,0,0 TO A% 29750 SYS"Font_StringWidth",,block%,300000,200000,-1,block%+FNlen(block%)TO,,N 29760 SYS"Font_LoseFont",A% 29770ELSE 29780N=text_axisx*1000*FNlen(block%) 29790ENDIF 29800A+=B/2 29810M=0:IFA/O>.25ANDA/O<.75:M=(320*text_axisy) 29820IFgraph_3D%ANDA/O>.25ANDA/O<.75:M+=10000 29830N=N*640/1000:IFA<O/2:N=0 29840REM OH: Pie chart labels 29850PROCdfile_wput(1):PROCdfile_wput(24+28+L%):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000) 29860PROCdfile_wput(0):PROCdfile_bput(?graph_back%):PROCdfile_bput(graph_back%?1):PROCdfile_bput(graph_back%?2):PROCdfile_bput(graph_back%?3) 29870PROCdfile_wput(graph_axisc):PROCdfile_wput(640*text_axisx):PROCdfile_wput(640*text_axisy) 29880PROCdfile_wput(X+R%*1.1*SIN(A/O*PI*2)-N):PROCdfile_wput(Y+R%*1.1*COS((A/O)*PI*2)-M) 29890PROCdfile_sput(block%) 29900A+=B/2 29910IFgraph_exp%ANDN%>=graph_es%ANDN%<=graph_ef%:N=A-B/2:X-=.1*R%*SIN(N/O*PI*2):Y-=.1*R%*COS(N/O*PI*2) 29920NEXT 29930ENDPROC 29940: 29950DEFPROCgraph_piekey(x,y):IFNOTgraph_key%:ENDPROC 29960A=group_data%+group%*42+11 29970IFtext_axisc<>0 THEN 29980 SYS"Font_FindFont",,font_list%+text_axisc*40,text_axisx*16,text_axisy*16,0,0 TO M 29990 SYS"Font_StringWidth",,A,300000,200000,-1,A+FNlen(A)TO,,N 30000 SYS"Font_LoseFont",M 30010ELSE 30020N=text_axisx*1000*FNlen(A) 30030ENDIF 30040x-=N*320/1000 30050IFA%>Y:y-=320*text_axisy 30060L%=FNlen(A):L%+=4-(L% MOD4) 30070REM OH: Pie chart keys 30080PROCdfile_wput(1):PROCdfile_wput(24+28+L%):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000) 30090PROCdfile_wput(0):PROCdfile_bput(?graph_back%):PROCdfile_bput(graph_back%?1):PROCdfile_bput(graph_back%?2):PROCdfile_bput(graph_back%?3) 30100PROCdfile_wput(graph_axisc):PROCdfile_wput(640*text_axisx):PROCdfile_wput(640*text_axisy) 30110PROCdfile_wput(x):PROCdfile_wput(y) 30120PROCdfile_sput(A) 30130ENDPROC 30140: 30150: 30160DEFPROCdfile_put($block%) 30170FORN=0TOFNlen(block%)-1 30180BPUT#X%,block%?N 30190NEXT 30200ENDPROC 30210: 30220DEFPROCdfile_sput(X) 30230M%=4 30240E%=0:REPEAT 30250D%=X?E% 30260IFD%=10ORD%=13:D%=0 30270BPUT#X%,D%:M%-=1:IFM%=0:M%=4 30280E%+=1:UNTILD%=0 30290IFM%=4:ENDPROC 30300FORN=1TOM% 30310BPUT#X%,0 30320NEXT 30330ENDPROC 30340: 30350DEFPROCdfile_sputl(X,R%) 30360N%=0:REPEAT 30370BPUT#X%,X?N% 30380N%+=1:UNTILN%=R% 30390ENDPROC 30400: 30410DEFPROCdfile_wput(N):!mess%=N 30420BPUT#X%,?mess%:BPUT#X%,mess%?1:BPUT#X%,mess%?2:BPUT#X%,mess%?3 30430ENDPROC 30440: 30450DEFPROCfile_wget(N) 30460?mess%=BGET#X%:mess%?1=BGET#X%:mess%?2=BGET#X%:mess%?3=BGET#X% 30470!N=!mess% 30480ENDPROC 30490: 30500DEFPROCdfile_bput(N) 30510BPUT#X%,N 30520ENDPROC 30530: 30540DEFFNdata_get(E%,F%) 30550E%-=1:F%-=1 30560Y%=&8001 30570FORC%=0TOE%+F%*data_width% 30580a$="" 30590REPEAT 30600N=Z%?Y%:Y%+=1 30610a$+=CHR$N 30620UNTILN=44ORN=13ORN=10ORN=0 30630NEXT 30640IFN=44:a$=LEFT$(a$,LENa$-1) 30650=VALa$ 30660: 30670DEFPROCdata_sget(E%,F%) 30680E%-=1:F%-=1 30690Y%=&8001 30700FORC%=0TOE%+F%*data_width% 30710M=0 30720REPEAT 30730N=Z%?Y%:Y%+=1 30740block%?M=N:M+=1 30750UNTILN=44ORN=13ORN=10ORN=0ORM=255 30760NEXT:block%?(M-1)=0 30770ENDPROC 30780: 30790REM ********** It's nice to know what's going on ********** 30800: 30810DEFPROCupdate_start 30820graph_window%=FALSE:!block%=handle_pane%:SYS"Wimp_CloseWindow",,block%:!block%=handle_format%:SYS"Wimp_CloseWindow",,block%:!block%=handle_create%:SYS"Wimp_CloseWindow",,block% 30830!block%=-1:block%!4=I%:block%!8=&400000:block%!12=&400000:SYS"Wimp_SetIconState",,block% 30840SYS"OS_ReadModeVariable",-1,11TO,,J% 30850SYS"OS_ReadModeVariable",-1,12TO,,K% 30860SYS"OS_ReadModeVariable",-1,5TO,,M:K%=K%*(2^M) 30870SYS"OS_ReadModeVariable",-1,4TO,,M:J%=J%*(2^M) 30880J%=J%DIV2-272:K%=K%DIV2+88 30890ind_upd%?35=48+graph_type% 30900!block%=handle_update%:block%!4=J%:block%!8=0:block%!12=J%+1200:block%!16=K%:block%!20=0:block%!24=0:block%!28=-1:SYS"Wimp_OpenWindow",,block% 30910ENDPROC 30920: 30930DEFPROCupdate_top 30940$(ind_upd%+40)=$text% 30950!block%=handle_update%:block%!4=3:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block% 30960$text%="���":PROCupdate_bottom 30970PROCpoll_minorloop 30980ENDPROC 30990: 31000DEFPROCupdate_bottom 31010$(ind_upd%+63)=$text% 31020!block%=handle_update%:block%!4=4:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block% 31030PROCpoll_minorloop 31040ENDPROC 31050: 31060DEFPROCupdate_smash 31070!block%=handle_update%:SYS"Wimp_CloseWindow",,block% 31080!block%=-1:block%!4=I%:block%!8=0:block%!12=&400000:SYS"Wimp_SetIconState",,block% 31090ENDPROC 31100: 31110DEFPROCpoll_minorloop:IFupdate_faster%:ENDPROC 31120SYS"Wimp_Poll",&1932,block%TOevent% 31130IFevent%=2:SYS"Wimp_OpenWindow",,block%:ENDPROC 31140IFevent%=17ORevent%=18ORevent%=19:IFblock%!16=8:PROCbyebye_prequit 31150IFevent%=17ORevent%=18ORevent%=19:IFblock%!16=0:CLOSE#X%:PROCbyebye_shutdown 31160IFevent%=6ANDblock%!8=2ANDblock%!12=handle_update%:PROCmenu_update 31170IFevent%=9:PROCupdate_faster 31180ENDPROC 31190: 31200DEFPROCbyebye_prequit 31210N=FNmessage("GraphPlus is creating a graph. Do you want to terminate application?",3) 31220IFN=2:N=block%!4:block%!4=task%:block%!12=block%!8:SYS"Wimp_SendMessage",19,block%,N 31230ENDPROC 31240: 31250DEFPROCmenu_update:SYS"Wimp_CreateMenu",,menu_task%,!block%-64,block%!4:menu_current%=256:ENDPROC 31260: 31270DEFPROCupdate_faster 31280$text%="Single tasking mode":PROCupdate_top 31290$text%="Please wait":PROCupdate_bottom 31300update_faster%=TRUE 31310ENDPROC
� ++----------------------++ � || GraphPlus (RunImage) || � || by Pete Goodliffe || ( � || � Trax Software 1995 || 2 � || v3.08 10-Jan-95 || < � ++----------------------++ F: P(� �0,"Startup error; "+�$+" "+�~(�) Zș"Hourglass_On" d3�init_init:�init_prog:�init_wimp:�init_template n � �error xș"Hourglass_Off" ��init_firstwindow �mask%=1 �: �� �$ș"Wimp_Poll",mask%,poll%�event% � Ȏevent%� � �1 :�window_requestRedraw � �2 :�window_requestOpen � �3 :�window_requestClose � �6 :�mouse_click � �7 :�drag_userdragbox � �8 :�keypressed � �9 :�menu_selection �17:�message_process �18:�message_process � "�� ,: 6&� ********** Initialise ********** @: J��init_init T+�block%&1000,poll%256,mess%256,data%100 ^� h: r��init_prog |graph_window%=� �: �#� font_list%10280,font_path%256 �font_counter%=0:font_c%=0 �9� file_temp%256:$file_temp%="Template":file_status%=0 �-� file_graph%256:$file_graph%="GraphFile" �1� group_map%28,group_data%251,pie_palette% 64 �flag_fiddled%=� �: �� Graph info �graph_xdiv=1 �graph_ydiv=1 �graph_xsdiv=.5 �graph_ysdiv=.5 0graph_title%=1:graph_xaxis%=1:graph_yaxis%=1 %�s_title%40,s_xaxis%40,s_yaxis%40 7graph_xg%=1:graph_yg%=2:graph_xcal%=1:graph_ycal%=1 &(graph_exp%=1:graph_es%=1:graph_ef%=1 0� text% 40 :text_titlec=0 Dgraph_titlec=0 Ntext_titlex=20 Xtext_titley=25 btext_axisc=0 lgraph_axisc=0 vtext_axisx=10 �text_axisy=10 �text_keyc=0 �graph_keyc=0 �text_keyx=10 �text_keyy=10 �graph_best%=2 ��data_back%3,graph_back%3 �H?graph_back%=0:graph_back%?1=&80:graph_back%?2=&80:graph_back%?3=&F0 �!data_back%=!graph_back% �graph_box%=� �graph_key%=� �graph_3D%=� �graph_outline%=0 graph_groupsize=0 graph_barwidth=0 graph_barsize=0 graph_bartype%=0 *graph_barmargin%=0 4"graph_type%=1:handle_format%=0 >graph_xmin=0:graph_ymin=0 Hgraph_xmax=0:graph_ymax=0 R!graph_xscale=0:graph_yscale=0 \graph_overlay%=� f: p� Data file info zdata_length%=9 �data_width%=4 �data_xmin=0 �data_ymin=0 �data_xmax=7 �data_ymax=6 �: �update_faster%=� ��menu_fontlist%6172 ��font_dothebusiness �� �: ���init_wimp �menu_current%=0 @ș"Wimp_Initialise",200,&4B534154,"GraphPlus"�version%,task% �!block%=-1:block%!4=0:block%!8=0:block%!12=68:block%!16=68:block%!20=&301A:$(block%+24)="!GraphPlus":ș"Wimp_CreateIcon",,block%�I% Y$block%="<GraphPlus$Dir>.Sprites":ș"OS_ReadModeVariable",-1,5�,,N:�N<2:$block%+="22" N=�$block% $ M=�#N:�#N ."� sprites% M+20:!sprites%=M+20 8*ș"OS_SpriteOp",10+256,sprites%,block% B�init_windows:�init_menus LAș"XOS_SWINumberFromString",,"DragASprite_Start" � dstart%; N V�(N � 1) dstart%=0 `� j: t: ~��init_windows ��� ind_inf%139,ind_dp%260,ind_sa%269,ind_sg%269,ind_fnt%173,ind_map%99,ind_lab%69,ind_bck%91,ind_grp%289,ind_frm%92,ind_pn%995,ind_upd%86 �@$block%="<Obey$Dir>.Templates":ș"Wimp_OpenTemplate",,block% �$poll%="Info" �Bș"Wimp_LoadTemplate",,block%,ind_inf%,ind_inf%+139,-1,poll%,0 �block%!64=sprites% �.ș"Wimp_CreateWindow",,block%�handle_info% �$poll%="Group" �Bș"Wimp_LoadTemplate",,block%,ind_grp%,ind_grp%+289,-1,poll%,0 �block%!64=sprites% �/ș"Wimp_CreateWindow",,block%�handle_group% �$poll%="Format" �Aș"Wimp_LoadTemplate",,block%,ind_frm%,ind_frm%+92,-1,poll%,0 block%!64=sprites% 0ș"Wimp_CreateWindow",,block%�handle_format% $poll%="Pane" @ș"Wimp_LoadTemplate",,block%,ind_pn%,ind_pn%+995,-1,poll%,0 (block%!64=sprites% 2.ș"Wimp_CreateWindow",,block%�handle_pane% <$poll%="Map" FAș"Wimp_LoadTemplate",,block%,ind_map%,ind_map%+99,-1,poll%,0 Pblock%!64=sprites% Z-ș"Wimp_CreateWindow",,block%�handle_map% d$poll%="Back" nAș"Wimp_LoadTemplate",,block%,ind_bck%,ind_bck%+91,-1,poll%,0 xblock%!64=sprites% �.ș"Wimp_CreateWindow",,block%�handle_back% �$poll%="Font" �Bș"Wimp_LoadTemplate",,block%,ind_fnt%,ind_fnt%+173,-1,poll%,0 �block%!64=sprites% �.ș"Wimp_CreateWindow",,block%�handle_font% �$poll%="SaveAs" �@ș"Wimp_LoadTemplate",,block%,ind_sa%,ind_sa%+269,-1,poll%,0 �.ș"Wimp_CreateWindow",,block%�handle_save% �$poll%="SaveGraph" �@ș"Wimp_LoadTemplate",,block%,ind_sg%,ind_sg%+269,-1,poll%,0 �0ș"Wimp_CreateWindow",,block%�handle_create% �$poll%="Label" �Aș"Wimp_LoadTemplate",,block%,ind_lab%,ind_lab%+69,-1,poll%,0 block%!64=sprites% /ș"Wimp_CreateWindow",,block%�handle_label% $poll%="Datapath" "@ș"Wimp_LoadTemplate",,block%,ind_dp%,ind_dp%+260,-1,poll%,0 ,2ș"Wimp_CreateWindow",,block%�handle_datapath% 6$poll%="Update" @Aș"Wimp_LoadTemplate",,block%,ind_upd%,ind_upd%+86,-1,poll%,0 Jblock%!64=sprites% T0ș"Wimp_CreateWindow",,block%�handle_update% ^ș"Wimp_CloseTemplate" h� r: |���init_menus:�menu_bar%244,menu_win%196,menu_style%196,menu_groups%76,menu_group%172,menu_map%196,menu_best%76,menu_font%100,menu_file%100,menu_palette%412,menu_task%48 �$menu_bar%="GraphPlus" �omenu_bar%?12=7:menu_bar%?13=2:menu_bar%?14=7:menu_bar%?15=0:menu_bar%!16=124:menu_bar%!20=44:menu_bar%!24=0 �=�menu_additem(0,menu_bar%,0,handle_info%,&7009021,"Info") �=�menu_additem(1,menu_bar%,0,menu_style%,&7009021,"Style") �?�menu_additem(2,menu_bar%,0,menu_groups%,&7009021,"Groups") �;�menu_additem(3,menu_bar%,2,menu_file%,&7009021,"File") �3�menu_additem(4,menu_bar%,1,-1,&7009021,"Line") �2�menu_additem(5,menu_bar%,0,-1,&7009021,"Bar") �2�menu_additem(6,menu_bar%,0,-1,&7009021,"Pie") �4�menu_additem(7,menu_bar%,2,-1,&7009021,"Table") �5�menu_additem(8,menu_bar%,128,-1,&7009021,"Quit") �$menu_win%="Format" �omenu_win%?12=7:menu_win%?13=2:menu_win%?14=7:menu_win%?15=0:menu_win%!16=170:menu_win%!20=44:menu_win%!24=0 =�menu_additem(0,menu_win%,0,menu_style%,&7009021,"Style") ?�menu_additem(1,menu_win%,0,menu_groups%,&7009021,"Groups") ;�menu_additem(2,menu_win%,2,menu_file%,&7009021,"File") &3�menu_additem(3,menu_win%,1,-1,&7009021,"Line") 02�menu_additem(4,menu_win%,0,-1,&7009021,"Bar") :2�menu_additem(5,menu_win%,0,-1,&7009021,"Pie") D6�menu_additem(6,menu_win%,128,-1,&7009021,"Table") N$menu_style%="Style" X}menu_style%?12=7:menu_style%?13=2:menu_style%?14=7:menu_style%?15=0:menu_style%!16=170:menu_style%!20=44:menu_style%!24=0 b4�menu_additem(0,menu_style%,0,-1,&7009021,"Key") lE�menu_additem(1,menu_style%,9,handle_back%,&7009021,"Background") v>�menu_additem(2,menu_style%,0,menu_font%,&7009021,"Fonts") �A�menu_additem(3,menu_style%,0,menu_best%,&7009021,"Best fit") �C�menu_additem(4,menu_style%,0,menu_palette%,&7009021,"Palette") �:�menu_additem(5,menu_style%,0,-1,&7009021,"3D graphs") �:�menu_additem(6,menu_style%,129,-1,&7009021,"Outline") �$menu_font%="Fonts" �vmenu_font%?12=7:menu_font%?13=2:menu_font%?14=7:menu_font%?15=0:menu_font%!16=108:menu_font%!20=44:menu_font%!24=0 �?�menu_additem(0,menu_font%,8,handle_font%,&7009021,"Title") �>�menu_additem(1,menu_font%,8,handle_font%,&7009021,"Axis") �?�menu_additem(2,menu_font%,136,handle_font%,&7009021,"Key") �$menu_best%="Best fit" �vmenu_best%?12=7:menu_best%?13=2:menu_best%?14=7:menu_best%?15=0:menu_best%!16=108:menu_best%!20=44:menu_best%!24=0 �6�menu_additem(0,menu_best%,0,-1,&7009021,"X on Y") �8�menu_additem(1,menu_best%,129,-1,&7009021,"Y on X") $menu_file%="File" vmenu_file%?12=7:menu_file%?13=2:menu_file%?14=7:menu_file%?15=0:menu_file%!16=140:menu_file%!20=44:menu_file%!24=0 >�menu_additem(0,menu_file%,8,handle_save%,&7009021,"Save") F�menu_additem(1,menu_file%,8,handle_datapath%,&7009021,"Datapath") *9�menu_additem(2,menu_file%,128,-1,&7009021,"Default") 4$menu_groups%="Groups" >�menu_groups%?12=7:menu_groups%?13=2:menu_groups%?14=7:menu_groups%?15=0:menu_groups%!16=170:menu_groups%!20=44:menu_groups%!24=0 H<�menu_additem(0,menu_groups%,0,menu_map%,&7009021,"Map") RB�menu_additem(1,menu_groups%,128,menu_group%,&7009021,"Style") \$menu_group%="Group style" f}menu_group%?12=7:menu_group%?13=2:menu_group%?14=7:menu_group%?15=0:menu_group%!16=140:menu_group%!20=44:menu_group%!24=0 pC�menu_additem(0,menu_group%,8,handle_group%,&7009021,"Group 1") zC�menu_additem(1,menu_group%,8,handle_group%,&7009021,"Group 2") �C�menu_additem(2,menu_group%,8,handle_group%,&7009021,"Group 3") �C�menu_additem(3,menu_group%,8,handle_group%,&7009021,"Group 4") �C�menu_additem(4,menu_group%,8,handle_group%,&7009021,"Group 5") �E�menu_additem(5,menu_group%,136,handle_group%,&7009021,"Group 6") �$menu_map%="Map groups" �omenu_map%?12=7:menu_map%?13=2:menu_map%?14=7:menu_map%?15=0:menu_map%!16=140:menu_map%!20=44:menu_map%!24=0 �?�menu_additem(0,menu_map%,8,handle_map%,&7009021,"Group 1") �?�menu_additem(1,menu_map%,8,handle_map%,&7009021,"Group 2") �?�menu_additem(2,menu_map%,8,handle_map%,&7009021,"Group 3") �?�menu_additem(3,menu_map%,8,handle_map%,&7009021,"Group 4") �?�menu_additem(4,menu_map%,8,handle_map%,&7009021,"Group 5") �?�menu_additem(5,menu_map%,8,handle_map%,&7009021,"Group 6") �B�menu_additem(6,menu_map%,136,handle_label%,&7009021,"Labels") $menu_palette%="Palette" �menu_palette%?12=7:menu_palette%?13=2:menu_palette%?14=7:menu_palette%?15=0:menu_palette%!16=108:menu_palette%!20=44:menu_palette%!24=0 B�menu_additem(0,menu_palette%,8,handle_back%,&7009021,"Pie 1") $B�menu_additem(1,menu_palette%,8,handle_back%,&7009021,"Pie 2") .B�menu_additem(2,menu_palette%,8,handle_back%,&7009021,"Pie 3") 8B�menu_additem(3,menu_palette%,8,handle_back%,&7009021,"Pie 4") BB�menu_additem(4,menu_palette%,8,handle_back%,&7009021,"Pie 5") LB�menu_additem(5,menu_palette%,8,handle_back%,&7009021,"Pie 6") VB�menu_additem(6,menu_palette%,8,handle_back%,&7009021,"Pie 7") `B�menu_additem(7,menu_palette%,8,handle_back%,&7009021,"Pie 8") jB�menu_additem(8,menu_palette%,8,handle_back%,&7009021,"Pie 9") tC�menu_additem(9,menu_palette%,8,handle_back%,&7009021,"Pie 10") ~D�menu_additem(10,menu_palette%,8,handle_back%,&7009021,"Pie 11") �D�menu_additem(11,menu_palette%,8,handle_back%,&7009021,"Pie 12") �D�menu_additem(12,menu_palette%,8,handle_back%,&7009021,"Pie 13") �D�menu_additem(13,menu_palette%,8,handle_back%,&7009021,"Pie 14") �D�menu_additem(14,menu_palette%,8,handle_back%,&7009021,"Pie 15") �F�menu_additem(15,menu_palette%,136,handle_back%,&7009021,"Pie 16") �$menu_fontlist%="Palette" �|menu_fontlist%?12=7:menu_fontlist%?13=2:menu_fontlist%?14=7:menu_fontlist%?15=0:menu_fontlist%!20=44:menu_fontlist%!24=0 �$menu_task%="GraphPlus" �vmenu_task%?12=7:menu_task%?13=2:menu_task%?14=7:menu_task%?15=0:menu_task%!16=124:menu_task%!20=44:menu_task%!24=0 �8�menu_additem(0,menu_task%,128,-1,&7009021,"Faster") �� �: ���menu_additem(item%,addr%,flag%,pointer%,icon%,item$):addr%!(28+(item%*24))=flag%:addr%!(32+(item%*24))=pointer%:addr%!(36+(item%*24))=icon% ��item$<>"PommeDeTerre"$(addr%+40+(item%*24))=item$�addr%!(40+(item%*24))=B%:addr%!(44+(item%*24))=V%:addr%!(48+(item%*24))=L% � : (@��menu_tick(item%,addr%,flag%):addr%!(28+(item%*24))=flag%:� 2: <��init_firstwindow F&ș"OS_ReadModeVariable",-1,11�,,J% P&ș"OS_ReadModeVariable",-1,12�,,K% Z0ș"OS_ReadModeVariable",-1,5�,,M:K%=K%*(2^M) d0ș"OS_ReadModeVariable",-1,4�,,M:J%=J%*(2^M) nJ%=J%�2-268:K%=K%�2+166 x+ș"Wimp_CreateMenu",,handle_info%,J%,K% �� �: ���init_template �%$block%="<GraphPlus$Dir>.Default" � ș"XOS_Find",&42,block%�X%;N �R�(N �1)=1�X%=0:N=�message("GraphPlus is unable to find the default file.",1):� ��load_tempfile �ș"OS_Find",0,X% �� �: �: �+� ********** Polled routines ********** �: %� ********** Key event ********** : 8� This could be the start of a beautiful friendship! "��keypressed ,'�!poll%=handle_group%:�group_return 6-�!poll%=handle_map%:button%=4:�map_return @9�!poll%=handle_label%�poll%!24=13:button%=4:�label_OK J%�!poll%=handle_back%:�back_return T%�!poll%=handle_font%:�font_return ^1�!poll%=handle_save%�poll%!24=13:�save_tempOK h5�!poll%=handle_create%�poll%!24=13:�save_createOK r%�!poll%=handle_pane%:�pane_return |"ș"Wimp_ProcessKey",poll%!24:� �: �: �'� ********** Mouse Stuff ********** �: �(��mouse_click:�button%,handle%,icon% �Hx%=!poll%:y%=poll%!4:button%=poll%!8:handle%=poll%!12:icon%=poll%!16 �'�button%=2�handle%=-2:�menu_iconbar �I�button%=2�(handle%=handle_format%�handle%=handle_pane%):�menu_format �1�button%<>2�handle%=handle_group%:�menu_group �-�button%<>2�handle%=handle_map%:�menu_map �1�button%<>2�handle%=handle_label%:�menu_label �/�button%<>2�handle%=handle_back%:�menu_back �/�button%<>2�handle%=handle_font%:�menu_font 9�button%=4�handle%=-2�graph_window%:�window_liftgraph :�button%=4�handle%=-2��graph_window%:�window_opengraph <�icon%=0�button%=64�handle%=handle_save%:�drag_startsave &9�button%<>2�icon%=2�handle%=handle_save%:�save_tempOK 0@�icon%=0�button%=64�handle%=handle_create%:�drag_startcreate :=�button%<>2�icon%=2�handle%=handle_create%:�save_createOK D5�button%<>2�handle%=handle_format%:�format_select N1�button%<>2�handle%=handle_pane%:�pane_select X��handle%=handle_pane%�icon%<>2�icon%<>5�icon%<>9�icon%<>11�icon%<>14�icon%<>16�icon%<>19�icon%<>23�icon%<>25�icon%<>28�icon%<>30�icon%<>46�icon%<>50�button%<>2:flag_fiddled%=� b� l: v: �&� ********** Menu stuff ********** �: �M��menu_iconbar:ș"Wimp_CreateMenu",,menu_bar%,x%-64,540:menu_current%=1:� �: �K��menu_format:ș"Wimp_CreateMenu",,menu_win%,x%-32,y%:menu_current%=2:� �: ���menu_opengroup �group%=poll%!40 ��group_calculate �;ș"Wimp_CreateSubMenu",,handle_group%,poll%!24,poll%!28 �� �: ���menu_reopengroup �group_calculate 5ș"Wimp_ForceRedraw",handle_group%,0,-1024,1279,0 � : *��menu_openmap 4group%=poll%!40 >�map_calculate H9ș"Wimp_CreateSubMenu",,handle_map%,poll%!24,poll%!28 R� \: f��menu_reopenmap p�map_calculate z3ș"Wimp_ForceRedraw",handle_map%,0,-1024,1279,0 �� �: ���menu_openlabel �,group%=6:$(ind_lab%+38)=�(group_map%!24) �;ș"Wimp_CreateSubMenu",,handle_label%,poll%!24,poll%!28 �� �: ���menu_reopenlabel �,group%=6:$(ind_lab%+38)=�(group_map%!24) �5ș"Wimp_ForceRedraw",handle_label%,0,-1024,1279,0 �� �: ���menu_openback group%=255:�back_calculate :ș"Wimp_CreateSubMenu",,handle_back%,poll%!24,poll%!28 3�caret_setpos(handle_back%,5,�len(ind_bck%+20)) $� .: 8��menu_reopenback B�back_calculate L4ș"Wimp_ForceRedraw",handle_back%,0,-1024,1279,0 V3�caret_setpos(handle_back%,5,�len(ind_bck%+20)) `� j: t��menu_openpalette ~group%=poll%!40 ��back_calculate �:ș"Wimp_CreateSubMenu",,handle_back%,poll%!24,poll%!28 �� �: ���menu_openfont �group%=poll%!40 ��font_calculate �:ș"Wimp_CreateSubMenu",,handle_font%,poll%!24,poll%!28 �� �: ���menu_reopenfont ��font_calculate 4ș"Wimp_ForceRedraw",handle_font%,0,-1024,1279,0 � : ��menu_opensave ($(ind_sa%)=$file_temp% 2:ș"Wimp_CreateSubMenu",,handle_save%,poll%!24,poll%!28 <� F: P: Z��group_calculate dind_grp%?13=group%+49 n*ind_grp%?21=49+group_data%?(group%*42) x,ind_grp%?26=48+group_data%?(group%*42+1) �-$(ind_grp%+31)=�group_data%?(group%*42+2) �,�group_bar(15,group_data%?(group%*42+2)) �-$(ind_grp%+44)=�group_data%?(group%*42+3) �,�group_bar(21,group_data%?(group%*42+3)) �-$(ind_grp%+57)=�group_data%?(group%*42+4) �,�group_bar(27,group_data%?(group%*42+4)) �3$(ind_grp%+74)=�(group_data%!(group%*42+5)/640) �-ind_grp%?134=48+group_data%?(group%*42+9) � N=group_data%?(group%*42+10) �+!block%=handle_group%:block%!12=&200000 �8block%!4=63:�(N � 1)=1:block%!8=&200000 � block%!8=0 �!ș"Wimp_SetIconState",,block% �8block%!4=64:�(N � 2)=2:block%!8=&200000 � block%!8=0 !ș"Wimp_SetIconState",,block% 9block%!4=65::�(N � 4)=4:block%!8=&200000 � block%!8=0 !ș"Wimp_SetIconState",,block% "� ,: 6��map_calculate @$(ind_map%+24)=�(group%+1) J+$(ind_map%+33)=�(group_map%!(group%*4)) T.$(ind_map%+49)=$(group_data%+group%*42+11) ^� h: r��back_calculate |�group%=255� �s �back_bar(6,data_back%?1):�back_bar(12,data_back%?2):�back_bar(18,data_back%?3):$(ind_bck%+11)=�(data_back%?1) �B $(ind_bck%+24)=�(data_back%?2):$(ind_bck%+37)=�(data_back%?3) � $ind_bck%="Background" �� �{ �back_bar(6,pie_palette%?(group%*4+1)):�back_bar(12,pie_palette%?(group%*4+2)):�back_bar(18,pie_palette%?(group%*4+3)) �� $(ind_bck%+11)=�(pie_palette%?(group%*4+1)):$(ind_bck%+24)=�(pie_palette%?(group%*4+2)):$(ind_bck%+37)=�(pie_palette%?(group%*4+3)) �! $ind_bck%="Pie "+�(group%+1) �� �� �: ���font_calculate � Ȏgroup%� �� �0:$ind_fnt%="Title font":$(ind_fnt%+43)=$(font_list%+text_titlec*40):$(ind_fnt%+131)=�text_titlex:$(ind_fnt%+144)=�text_titley:font_c%=text_titlec:$menu_fontlist%="Title font":�font_ticklist � �1:$ind_fnt%="Axis font":$(ind_fnt%+43)=$(font_list%+text_axisc*40):$(ind_fnt%+131)=�text_axisx:$(ind_fnt%+144)=�text_axisy:font_c%=text_axisc:$menu_fontlist%="Axis font":�font_ticklist � �2:$ind_fnt%="Key font":$(ind_fnt%+43)=$(font_list%+text_keyc*40):$(ind_fnt%+131)=�text_keyx:$(ind_fnt%+144)=�text_keyy:font_c%=text_keyc:$menu_fontlist%="Key font":�font_ticklist � &� 0: :��font_ticklist D\�N=0�font_counter%:menu_fontlist%!(28+N*24)=0:�:menu_fontlist%!(28+font_counter%*24)=128 N%menu_fontlist%!(28+font_c%*24)+=1 X� b: l��pane_calculate v!block%=handle_pane% �Kblock%!4=1:block%!12=&200000:�graph_title%:block%!8=&200000:�block%!8=0 �!ș"Wimp_SetIconState",,block% �$(ind_pn%+24)=$s_title% �9block%!4=4:�graph_xaxis%:block%!8=&200000:�block%!8=0 �!ș"Wimp_SetIconState",,block% �$(ind_pn%+98)=$s_xaxis% �8block%!4=6:�graph_xg%=1:block%!8=&200000:�block%!8=0 �!ș"Wimp_SetIconState",,block% �8block%!4=7:�graph_xg%=2:block%!8=&200000:�block%!8=0 �!ș"Wimp_SetIconState",,block% �$(ind_pn%+212)=�graph_xdiv �$(ind_pn%+244)=�graph_xsdiv �9block%!4=12:�graph_xcal%:block%!8=&200000:�block%!8=0 !ș"Wimp_SetIconState",,block% $(ind_pn%+299)=�data_xmin $(ind_pn%+318)=�data_xmax :block%!4=18:�graph_yaxis%:block%!8=&200000:�block%!8=0 *!ș"Wimp_SetIconState",,block% 4$(ind_pn%+368)=$s_yaxis% >9block%!4=20:�graph_yg%=1:block%!8=&200000:�block%!8=0 H!ș"Wimp_SetIconState",,block% R9block%!4=21:�graph_yg%=2:block%!8=&200000:�block%!8=0 \!ș"Wimp_SetIconState",,block% f$(ind_pn%+482)=�graph_ydiv p$(ind_pn%+514)=�graph_ysdiv z9block%!4=26:�graph_ycal%:block%!8=&200000:�block%!8=0 �!ș"Wimp_SetIconState",,block% �$(ind_pn%+569)=�data_ymin �$(ind_pn%+588)=�data_ymax �>block%!8=0:�block%!4=33�37:ș"Wimp_SetIconState",,block%:� �Pblock%!4=32+graph_bartype%�10:block%!8=&200000:ș"Wimp_SetIconState",,block% �Dblock%!4=38:�(graph_barmargin%�1)=1:block%!8=&200000:�block%!8=0 �!ș"Wimp_SetIconState",,block% �Hblock%!4=39:�(graph_barmargin%�128)=128:block%!8=&200000:�block%!8=0 �!ș"Wimp_SetIconState",,block% �?block%!4=40:�graph_bartype%<10:block%!8=&200000:�block%!8=0 �!ș"Wimp_SetIconState",,block% �?block%!4=41:�graph_bartype%>10:block%!8=&200000:�block%!8=0 �!ș"Wimp_SetIconState",,block% 8block%!4=43:�graph_exp%:block%!8=&200000:�block%!8=0 !ș"Wimp_SetIconState",,block% $(ind_pn%+971)=�graph_es% $$(ind_pn%+983)=�graph_ef% .flag_fiddled%=� 87block%!8=0:block%!4=2:ș"Wimp_SetIconState",,block% B,block%!4=5:ș"Wimp_SetIconState",,block% L,block%!4=9:ș"Wimp_SetIconState",,block% V-block%!4=11:ș"Wimp_SetIconState",,block% `-block%!4=14:ș"Wimp_SetIconState",,block% j-block%!4=16:ș"Wimp_SetIconState",,block% t-block%!4=19:ș"Wimp_SetIconState",,block% ~-block%!4=23:ș"Wimp_SetIconState",,block% �-block%!4=25:ș"Wimp_SetIconState",,block% �-block%!4=28:ș"Wimp_SetIconState",,block% �-block%!4=30:ș"Wimp_SetIconState",,block% �-block%!4=46:ș"Wimp_SetIconState",,block% �-block%!4=50:ș"Wimp_SetIconState",,block% �� �: ���menu_selection �Ȏmenu_current%� � �1:�menu_selecticon � �2:�menu_winselection �� � : ��menu_selecticon Ȏpoll%!0� ( �1:�menu_selectstyle 2 �3:�menu_selectfile < �4:�graph_select(1) F �5:�graph_select(2) P �6:�graph_select(3) Z �7:�graph_select(4) d �8:�byebye_shutdown n� x=ș"Wimp_GetPointerInfo",,block%:�block%!8=1:�menu_iconbar �� �: ���menu_winselection �Ȏpoll%!0� � �0:�menu_selectstyle � �2:�menu_selectfile � �3:�graph_select(1) � �4:�graph_select(2) � �5:�graph_select(3) � �6:�graph_select(4) �� �<ș"Wimp_GetPointerInfo",,block%:�block%!8=1:�menu_format �� : ��menu_selectstyle Ȏpoll%!4� " �0:�style_key , �1:�style_box 6 �2:�style_fontselect @ �3:�best_select J �5:�style_3D T �6:�style_outline ^� h� r: |��menu_selectfile �Ȏpoll%!4� � �0:�save_tempOK � �2:�file_default �� �� �: ���menu_group �N%=1:�button%=1N%=-1 ��icon%=5:�group_po(-N%) ��icon%=7:�group_po(N%) ��icon%=9:�group_si(-N%) ��icon%=11:�group_si(N%) ��icon%=12:�group_r(-N%) �icon%=13:�group_r(N%) �icon%=18:�group_g(-N%) �icon%=19:�group_g(N%) &�icon%=24:�group_b(-N%) 0�icon%=25:�group_b(N%) :�icon%=16:�group_rclick D�icon%=22:�group_bclick N�icon%=28:�group_gclick X,�icon%>=30�icon%<=45:�group_cl(icon%-30) b�icon%=49:�group_t(0) l�icon%=50:�group_t(.25) v�icon%=51:�group_t(.5) ��icon%=52:�group_t(1) ��icon%=53:�group_t(2) ��icon%=54:�group_t(4) �,�icon%>=58�icon%<=61:�group_ln(icon%-57) �B�icon%=66:�menu_reopengroup:�button%=4:ș"Wimp_CreateMenu",,-1 ��icon%=67:�group_OK �� �: ���menu_map �N%=1:�button%=1N%=-1 ��icon%=6:�map_gr(-N%) ��icon%=8:�map_gr(N%) �?�icon%=12:�menu_reopenmap:�button%=4:ș"Wimp_CreateMenu",-1 �icon%=13:�map_OK � : ��menu_label *N%=1:�button%=1N%=-1 4�icon%=6:�label_gr(-N%) >�icon%=8:�label_gr(N%) H@�icon%=9:�menu_reopenlabel:�button%=4:ș"Wimp_CreateMenu",-1 R�icon%=10:�label_OK \� f: p��menu_back zN%=1:�button%=1N%=-1 ��icon%=3:�back_r(-N%) ��icon%=4:�back_r(N%) ��icon%=7:�back_rclick ��icon%=13:�back_bclick ��icon%=19:�back_gclick ��icon%=9:�back_g(-N%) ��icon%=10:�back_g(N%) ��icon%=15:�back_b(-N%) ��icon%=16:�back_b(N%) �+�icon%>=21�icon%<=36:�back_cl(icon%-21) �A�icon%=37:�menu_reopenback:�button%=4:ș"Wimp_CreateMenu",,-1 ��icon%=38:�back_OK �� : ��menu_font N%=1:�button%=1N%=-1 $�icon%=5:�font_list ."�icon%=8:�font_w(8):�font_h(8) 8$�icon%=9:�font_w(10):�font_h(10) B%�icon%=10:�font_w(12):�font_h(12) L%�icon%=11:�font_w(14):�font_h(14) V�icon%=13:�font_wi(-N%) `�icon%=15:�font_wi(N%) j�icon%=17:�font_hi(-N%) t�icon%=19:�font_hi(N%) ~A�icon%=20:�menu_reopenfont:�button%=4:ș"Wimp_CreateMenu",,-1 ��icon%=21:�font_OK �� �: ���file_default �N=�message("Click on OK to reset the current Template. Warning: This cannot be retrieved if has not been saved.",3):�N<>1:� ��init_template �D�pane_calculate:ș"Wimp_ForceRedraw",handle_pane%,0,-1023,1279,0 �� �: ���format_select ��icon%=4:�graph_savebox ��icon%=5:�pane_calculate �icon%=6:�pane_OK � : ��pane_select (N%=1:�button%=1N%=-1 2�icon%=45:�pane_s(-N%) <�icon%=47:�pane_s(N%) F�icon%=49:�pane_f(-N%) P�icon%=51:�pane_f(N%) Z� d: n��pie_select xN%=1:�button%=1N%=-1 ��icon%=8:�pie_s(-N%) ��icon%=10:�pie_s(N%) ��icon%=12:�pie_f(-N%) ��icon%=14:�pie_f(N%) �� �: ���group_po(N) �M=ind_grp%?21-49 ��M+N<0�M+N>7:� �M+=N �ind_grp%?21=M+49 �Y!block%=handle_group%:block%!4=6:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block% �� : ��group_si(N) M=ind_grp%?26-49 "�M+N<0�M+N>8:� ,M+=N 6ind_grp%?26=M+49 @Z!block%=handle_group%:block%!4=10:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block% J� T: ^��group_r(N) hM=�$(ind_grp%+31) r�M+N<0�M+N>255:� |M+=N �$(ind_grp%+31)=�M �Z!block%=handle_group%:block%!4=14:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block% ��group_bar(15,M) ��group_colour �� �: ���group_rclick �9!block%=handle_group%:ș"Wimp_GetWindowState",,block% �M=!poll%-block%!4-190 �$(ind_grp%+31)=�M �poll%!4=14:�group_pro(31) �� �: ��group_g(N) M=�$(ind_grp%+44) �M+N<0�M+N>255:� &M+=N 0$(ind_grp%+44)=�M :Z!block%=handle_group%:block%!4=20:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block% D�group_bar(21,M) N�group_colour X� b: l��group_bclick v9!block%=handle_group%:ș"Wimp_GetWindowState",,block% �M=!poll%-block%!4-190 �$(ind_grp%+44)=�M �poll%!4=20:�group_pro(44) �� �: ���group_b(N) �M=�$(ind_grp%+57) ��M+N<0�M+N>255:� �M+=N �$(ind_grp%+57)=�M �Z!block%=handle_group%:block%!4=26:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block% ��group_bar(27,M) ��group_colour � : ��group_gclick 9!block%=handle_group%:ș"Wimp_GetWindowState",,block% *M=!poll%-block%!4-190 4$(ind_grp%+57)=�M >poll%!4=26:�group_pro(57) H� R: \��group_cl(N) f ș"Wimp_ReadPalette",,block% p"$(ind_grp%+31)=�block%?(N*4+1) z"$(ind_grp%+44)=�block%?(N*4+2) �"$(ind_grp%+57)=�block%?(N*4+3) �Z!block%=handle_group%:block%!4=14:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block% �-block%!4=20:ș"Wimp_SetIconState",,block% �-block%!4=26:ș"Wimp_SetIconState",,block% �"�group_bar(15,�$(ind_grp%+31)) �"�group_bar(21,�$(ind_grp%+44)) �"�group_bar(27,�$(ind_grp%+57)) ��group_colour �� �: ���group_bar(N,M) �^!block%=handle_group%:block%!4=N:ș"Wimp_GetIconState",,block%:ș"Wimp_DeleteIcon",,block% �Hblock%!4=handle_group%:block%!16=196+M:ș"Wimp_CreateIcon",,block%+4 0!block%=handle_group%:block%!8=0:block%!12=0 ,block%!4=N:ș"Wimp_SetIconState",,block% 4block%!4=(N-9)�6-1:ș"Wimp_SetIconState",,block% $� .: 8��group_colour B!block%=handle_group% L"ș"Wimp_GetWindowInfo",,block% VR!block%=((�$(ind_grp%+57))<<24)+((�$(ind_grp%+44))<<16)+((�$(ind_grp%+31))<<8) `)ș"ColourTrans_SetGCOL",!block%,,,0,0 j(ȓȐblock%!4+456,block%!8+228,164,28 t� ~: ���group_t(N) �$(ind_grp%+74)=�N �Z!block%=handle_group%:block%!4=48:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block% �� �: ���group_ln(N) �ind_grp%?134=N+48 �Z!block%=handle_group%:block%!4=57:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block% �� �: ���group_return �(N%=0:�poll%!24=13�poll%!24=&18E:N%=1 �poll%!24=&18F:N%=-1 V�poll%!4=20�N%=-1:�group_pro(44):�caret_setpos(handle_group%,14,�len(ind_grp%+31)) U�poll%!4=14�N%=1:�group_pro(31):�caret_setpos(handle_group%,20,�len(ind_grp%+44)) U�poll%!4=20�N%=1:�group_pro(44):�caret_setpos(handle_group%,26,�len(ind_grp%+57)) (U�poll%!4=26�N%=1:�group_pro(57):�caret_setpos(handle_group%,48,�len(ind_grp%+74)) 2V�poll%!4=26�N%=-1:�group_pro(57):�caret_setpos(handle_group%,20,�len(ind_grp%+44)) <G�poll%!4=48�N%=-1:�caret_setpos(handle_group%,26,�len(ind_grp%+57)) Fg�poll%!4=48�poll%!24=13:button%=4:�ok_click(handle_group%,67):�group_OK:�ok_click(handle_group%,67) P� Z: d��group_OK n*group_data%?(group%*42)=ind_grp%?21-49 x,group_data%?(group%*42+1)=ind_grp%?26-48 �-group_data%?(group%*42+2)=�$(ind_grp%+31) �-group_data%?(group%*42+3)=�$(ind_grp%+44) �-group_data%?(group%*42+4)=�$(ind_grp%+57) �3group_data%!(group%*42+5)=(�$(ind_grp%+74))*640 �-group_data%?(group%*42+9)=ind_grp%?134-48 �N=0:!block%=handle_group% �-block%!4=63:ș"Wimp_GetIconState",,block% �#�((block%!24) � &200000)>0:N+=1 �-block%!4=64:ș"Wimp_GetIconState",,block% �#�((block%!24) � &200000)>0:N+=2 �-block%!4=65:ș"Wimp_GetIconState",,block% �#�((block%!24) � &200000)>0:N+=4 � group_data%?(group%*42+10)=N &�button%=4:ș"Wimp_CreateMenu",,-1 � : "��group_pro(N) ,!M=�$(ind_grp%+N):�M>255:M=255 6$(ind_grp%+N)=�M @_!block%=handle_group%:block%!4=poll%!4:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block% J�group_bar(poll%!4+1,M) T�group_colour ^� h: r��map_gr(N) |M=�$(ind_map%+33) ��M+N<0�M+N>999:� �M+=N �$(ind_map%+33)=�M �W!block%=handle_map%:block%!4=7:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block% �%ș"Wimp_GetCaretPosition",,block% ��block%!4<>7:� �8ș"Wimp_SetCaretPosition",handle_map%,7,-1,-1,-1,��M �� �: ���map_return �(N%=0:�poll%!24=13�poll%!24=&18E:N%=1 ��poll%!24=&18F:N%=-1 �D�poll%!4=11�N%=-1:�caret_setpos(handle_map%,7,�len(ind_map%+36)) C�poll%!4=7�N%=1:�caret_setpos(handle_map%,11,�len(ind_map%+49)) a�poll%!4=11�poll%!24=13:button%=4:�ok_click(handle_map%,13):�map_OK:�ok_click(handle_map%,13) � &: 0��map_OK :)group_map%!(group%*4)=�$(ind_map%+33) D.$(group_data%+group%*42+11)=$(ind_map%+49) N&�button%=4:ș"Wimp_CreateMenu",,-1 X� b: l��label_gr(N) vM=�$(ind_lab%+38) ��M+N<0�M+N>999:� �M+=N �$(ind_lab%+38)=�M �Y!block%=handle_label%:block%!4=7:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block% �%ș"Wimp_GetCaretPosition",,block% ��block%!4<>7:� �:ș"Wimp_SetCaretPosition",handle_label%,7,-1,-1,-1,��M �� �: ���label_OK �!group_map%!24=�$(ind_lab%+38) �&�button%=4:ș"Wimp_CreateMenu",,-1 �� !: !��best_select !N=poll%!8:graph_best%=N+1 ! N�N=1:menu_best%?28=0:menu_best%?52=129::�menu_best%?28=1:menu_best%?52=128 !*� !4: !>��back_r(N) !HM=�$(ind_bck%+11) !R�M+N<0�M+N>255:� !\M+=N !f$(ind_bck%+11)=�M !pX!block%=handle_back%:block%!4=5:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block% !z�back_bar(6,M) !��back_colour !�� !�: !���back_rclick !�8!block%=handle_back%:ș"Wimp_GetWindowState",,block% !�M=!poll%-block%!4-190 !�$(ind_bck%+11)=�M !�poll%!4=5:�back_pro(11) !�� !�: !���back_g(N) !�M=�$(ind_bck%+24) !��M+N<0�M+N>255:� "M+=N "$(ind_bck%+24)=�M "Y!block%=handle_back%:block%!4=11:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block% "$�back_bar(12,M) ".�back_colour "8� "B: "L��back_bclick "V8!block%=handle_back%:ș"Wimp_GetWindowState",,block% "`M=!poll%-block%!4-190 "j$(ind_bck%+24)=�M "tpoll%!4=11:�back_pro(24) "~� "�: "���back_b(N) "�M=�$(ind_bck%+37) "��M+N<0�M+N>255:� "�M+=N "�$(ind_bck%+37)=�M "�Y!block%=handle_back%:block%!4=17:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block% "��back_bar(18,M) "��back_colour "�� "�: "���back_gclick # 8!block%=handle_back%:ș"Wimp_GetWindowState",,block% # M=!poll%-block%!4-190 #$(ind_bck%+37)=�M #poll%!4=17:�back_pro(37) #(� #2: #<��back_cl(N) #F ș"Wimp_ReadPalette",,block% #P"$(ind_bck%+11)=�block%?(N*4+1) #Z"$(ind_bck%+24)=�block%?(N*4+2) #d"$(ind_bck%+37)=�block%?(N*4+3) #nX!block%=handle_back%:block%!4=5:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block% #x-block%!4=11:ș"Wimp_SetIconState",,block% #�-block%!4=17:ș"Wimp_SetIconState",,block% #� �back_bar(6,�$(ind_bck%+11)) #�!�back_bar(12,�$(ind_bck%+24)) #�!�back_bar(18,�$(ind_bck%+37)) #��back_colour #�� #�: #���back_bar(N,M) #�]!block%=handle_back%:block%!4=N:ș"Wimp_GetIconState",,block%:ș"Wimp_DeleteIcon",,block% #�Gblock%!4=handle_back%:block%!16=196+M:ș"Wimp_CreateIcon",,block%+4 #�<!block%=handle_back%:block%!4=N-1:block%!8=0:block%!12=0 #�2block%!4=(N)�6-1:ș"Wimp_SetIconState",,block% #�� $: $��back_colour $!block%=handle_back% $""ș"Wimp_GetWindowInfo",,block% $,L!block%=(�$(ind_bck%+37)<<24)+(�$(ind_bck%+24)<<16)+(�$(ind_bck%+11)<<8) $6)ș"ColourTrans_SetGCOL",!block%,,,0,0 $@(ȓȐblock%!4+454,block%!8+248,164,28 $J� $T: $^��back_return $h(N%=0:�poll%!24=13�poll%!24=&18E:N%=1 $r�poll%!24=&18F:N%=-1 $|S�poll%!4=11�N%=-1:�back_pro(24):�caret_setpos(handle_back%,5,�len(ind_bck%+20)) $�R�poll%!4=5�N%=1:�back_pro(11):�caret_setpos(handle_back%,11,�len(ind_bck%+24)) $�T�poll%!4=17�N%=-1:�back_pro(37):�caret_setpos(handle_back%,11,�len(ind_bck%+24)) $�S�poll%!4=11�N%=1:�back_pro(24):�caret_setpos(handle_back%,17,�len(ind_bck%+37)) $�r�poll%!4=17�poll%!24=13:�back_pro(37):button%=4:�ok_click(handle_back%,38):�back_OK:�ok_click(handle_back%,38) $�� $�: $� ��back_OK $��group%=255� $�! data_back%?1=�$(ind_bck%+11) $�! data_back%?2=�$(ind_bck%+24) $�! data_back%?3=�$(ind_bck%+37) $�� $�. pie_palette%?(group%*4+1)=�$(ind_bck%+11) %. pie_palette%?(group%*4+2)=�$(ind_bck%+24) %. pie_palette%?(group%*4+3)=�$(ind_bck%+37) %� %&&�button%=4:ș"Wimp_CreateMenu",,-1 %0� %:: %D��back_pro(N) %N�N>1000:N-=1000:N%=�:�N%=� %X!M=�$(ind_bck%+N):�M>255:M=255 %b$(ind_bck%+N)=�M %l^!block%=handle_back%:block%!4=poll%!4:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block% %v�back_bar(poll%!4+1,M) %��N%�back_colour %�� %�: %���style_key %�/�graph_key%:graph_key%=�:menu_style%?28=0:� %�#graph_key%=�:menu_style%?28=1:� %�: %���style_box %�/�graph_box%:graph_box%=�:menu_style%?52=8:� %�#graph_box%=�:menu_style%?52=9:� %�: %���style_3D %�.�graph_3D%:graph_3D%=�:menu_style%?148=8:� &#graph_3D%=�:menu_style%?148=9:� &: &��style_outline & =�graph_outline%=0:graph_outline%=-1:menu_style%?172=128:� &**graph_outline%=0:menu_style%?172=129:� &4: &>��font_list &H�font_ticklist &R#ș"Wimp_GetPointerInfo",,block% &\;ș"Wimp_CreateSubMenu",,menu_fontlist%,!block%,block%!4 &f� &p: &z��style_fontselect &�font_c%=poll%!16 &�+$(ind_fnt%+43)=$(font_list%+font_c%*40) &�X!block%=handle_font%:block%!4=4:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block% &�Ȏmenu_current%� &�& �1:ș"Wimp_CreateMenu",,menu_bar% &�& �2:ș"Wimp_CreateMenu",,menu_win% &�� &�� &�: &���font_wi(N) &�M=�$(ind_fnt%+131) &� �M+N<=0:� &��font_w(M+N) '� ': '��font_hi(N) '$M=�$(ind_fnt%+144) '. �M+N<=0:� '8�font_h(M+N) 'B� 'L: 'V��font_w(N) '`$(ind_fnt%+131)=�N 'jY!block%=handle_font%:block%!4=14:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block% 't%ș"Wimp_GetCaretPosition",,block% '~i�!block%=handle_font%�block%!4=14:ș"Wimp_SetCaretPosition",handle_font%,14,0,0,-1,�len(ind_fnt%+131) '�� '�: '���font_h(N) '�$(ind_fnt%+144)=�N '�Y!block%=handle_font%:block%!4=18:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block% '�%ș"Wimp_GetCaretPosition",,block% '�i�!block%=handle_font%�block%!4=18:ș"Wimp_SetCaretPosition",handle_font%,18,0,0,-1,�len(ind_fnt%+144) '�� '�: '���font_return '�(N%=0:�poll%!24=13�poll%!24=&18E:N%=1 '��poll%!24=&18F:N%=-1 ( G�poll%!4=18�N%=-1:�caret_setpos(handle_font%,14,�len(ind_fnt%+131)) ( F�poll%!4=14�N%=1:�caret_setpos(handle_font%,18,�len(ind_fnt%+144)) (d�poll%!4=18�poll%!24=13:button%=4:�ok_click(handle_font%,21):�font_OK:�ok_click(handle_font%,21) (� ((: (2 ��font_OK (< Ȏgroup%� (FU �0:text_titlec=font_c%:text_titlex=�$(ind_fnt%+131):text_titley=�$(ind_fnt%+144) (PR �1:text_axisc=font_c%:text_axisx=�$(ind_fnt%+131):text_axisy=�$(ind_fnt%+144) (ZO �2:text_keyc=font_c%:text_keyx=�$(ind_fnt%+131):text_keyy=�$(ind_fnt%+144) (d� (n&�button%=4:ș"Wimp_CreateMenu",,-1 (x� (�: (���pane_s(N) (�M=�$(ind_pn%+971) (��M+N<1�M+N>999:� (�M+=N (�$(ind_pn%+971)=�M (�Y!block%=handle_pane%:block%!4=46:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block% (�%ș"Wimp_GetCaretPosition",,block% (�)�!block%<>handle_pane%�block%!4<>46:� (�:ș"Wimp_SetCaretPosition",handle_pane%,46,-1,-1,-1,��M (�� (�: (���pane_f(N) )M=�$(ind_pn%+983) )�M+N<1�M+N>999:� )M+=N )"$(ind_pn%+983)=�M ),Y!block%=handle_pane%:block%!4=50:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block% )6%ș"Wimp_GetCaretPosition",,block% )@)�!block%<>handle_pane%�block%!4<>50:� )J:ș"Wimp_SetCaretPosition",handle_pane%,50,-1,-1,-1,��M )T� )^: )h ��pane_OK )r!block%=handle_pane% )|,block%!4=1:ș"Wimp_GetIconState",,block% )�5�block%!24�&200000:graph_title%=�:�graph_title%=� )�$s_title%=$(ind_pn%+24) )�,block%!4=4:ș"Wimp_GetIconState",,block% )�5�block%!24�&200000:graph_xaxis%=�:�graph_xaxis%=� )�$s_xaxis%=$(ind_pn%+98) )�graph_xg%=0 )�Kblock%!4=6:ș"Wimp_GetIconState",,block%:�block%!24�&200000:graph_xg%=1 )�Kblock%!4=7:ș"Wimp_GetIconState",,block%:�block%!24�&200000:graph_xg%=2 )�graph_xdiv=�$(ind_pn%+212) )�graph_xsdiv=�$(ind_pn%+244) )�-block%!4=12:ș"Wimp_GetIconState",,block% )�3�block%!24�&200000:graph_xcal%=�:�graph_xcal%=� )�data_xmin=�$(ind_pn%+299) *data_xmax=�$(ind_pn%+318) *-block%!4=18:ș"Wimp_GetIconState",,block% *5�block%!24�&200000:graph_yaxis%=�:�graph_yaxis%=� *&$s_yaxis%=$(ind_pn%+368) *0graph_yg%=0 *:Lblock%!4=20:ș"Wimp_GetIconState",,block%:�block%!24�&200000:graph_yg%=1 *DLblock%!4=21:ș"Wimp_GetIconState",,block%:�block%!24�&200000:graph_yg%=2 *Ngraph_ydiv=�$(ind_pn%+482) *Xgraph_ysdiv=�$(ind_pn%+514) *b-block%!4=26:ș"Wimp_GetIconState",,block% *l3�block%!24�&200000:graph_ycal%=�:�graph_ycal%=� *vdata_ymin=�$(ind_pn%+569) *�data_ymax=�$(ind_pn%+588) *�graph_bartype%=0 *�1�block%!4=33�37:ș"Wimp_GetIconState",,block% *�2�block%!24�&200000:graph_bartype%+=block%!4-32 *�� *�graph_barmargin%=0 *�-block%!4=38:ș"Wimp_GetIconState",,block% *�*�block%!24�&200000:graph_barmargin%+=1 *�-block%!4=39:ș"Wimp_GetIconState",,block% *�,�block%!24�&200000:graph_barmargin%+=128 *�-block%!4=41:ș"Wimp_GetIconState",,block% *�)�block%!24�&200000:graph_bartype%+=10 *�-block%!4=43:ș"Wimp_GetIconState",,block% +1�block%!24�&200000:graph_exp%=�:�graph_exp%=� +graph_es%=�$(ind_pn%+971) +graph_ef%=�$(ind_pn%+983) + D�pane_calculate:ș"Wimp_ForceRedraw",handle_pane%,0,-1023,1279,0 +*flag_fiddled%=� +4� +>: +H��pane_return +R(N%=0:�poll%!24=13�poll%!24=&18E:N%=1 +\�poll%!24=&18F:N%=-1 +fC�poll%!4=5�N%=-1:�caret_setpos(handle_pane%,2,�len(ind_pn%+24)) +pR�poll%!4=2�N%=1�poll%!4=9�N%=-1:�caret_setpos(handle_pane%,5,�len(ind_pn%+98)) +zT�poll%!4=5�N%=1�poll%!4=11�N%=-1:�caret_setpos(handle_pane%,9,�len(ind_pn%+212)) +�U�poll%!4=9�N%=1�poll%!4=14�N%=-1:�caret_setpos(handle_pane%,11,�len(ind_pn%+244)) +�V�poll%!4=11�N%=1�poll%!4=16�N%=-1:�caret_setpos(handle_pane%,14,�len(ind_pn%+299)) +�V�poll%!4=14�N%=1�poll%!4=19�N%=-1:�caret_setpos(handle_pane%,16,�len(ind_pn%+318)) +�V�poll%!4=16�N%=1�poll%!4=23�N%=-1:�caret_setpos(handle_pane%,19,�len(ind_pn%+368)) +�V�poll%!4=19�N%=1�poll%!4=25�N%=-1:�caret_setpos(handle_pane%,23,�len(ind_pn%+482)) +�V�poll%!4=23�N%=1�poll%!4=28�N%=-1:�caret_setpos(handle_pane%,25,�len(ind_pn%+514)) +�V�poll%!4=25�N%=1�poll%!4=30�N%=-1:�caret_setpos(handle_pane%,28,�len(ind_pn%+569)) +�V�poll%!4=28�N%=1�poll%!4=46�N%=-1:�caret_setpos(handle_pane%,30,�len(ind_pn%+588)) +�V�poll%!4=30�N%=1�poll%!4=50�N%=-1:�caret_setpos(handle_pane%,46,�len(ind_pn%+971)) +�E�poll%!4=46�N%=1:�caret_setpos(handle_pane%,50,�len(ind_pn%+983)) +�f�poll%!4=50�poll%!24=13:button%=4:�ok_click(handle_format%,6):�pane_OK:�ok_click(handle_format%,6) +�� +�: ,]��ok_click(!block%,block%!4):block%!8=&200000:block%!12=0:ș"Wimp_SetIconState",,block%:� ,: ,: ,$B� ********** Some mature graph selection type stuff ********** ,.: ,8��graph_select(N) ,B Ȏ N � ,L �1:�graph_selectline ,V �2:�graph_selectbar ,` �3:�graph_selectpie ,j �4:�graph_selecttable ,t� ,~ind_frm%?43=48+graph_type% ,���graph_window%:!block%=handle_format%:block%!4=2:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block%:block%!4=3:ș"Wimp_SetIconState",,block% ,�� ,�: ,���graph_selectline ,�graph_type%=1 ,�Cmenu_bar%?124=1:menu_bar%?148=0:menu_bar%?172=0:menu_bar%?196=2 ,�Emenu_win%?100=1:menu_win%?124=0:menu_win%?148=0:menu_win%?172=128 ,�$(ind_frm%+48)="Line graph" ,�� ,�: ,���graph_selectbar ,�graph_type%=2 - Cmenu_bar%?124=0:menu_bar%?148=1:menu_bar%?172=0:menu_bar%?196=2 - Emenu_win%?100=0:menu_win%?124=1:menu_win%?148=0:menu_win%?172=128 -$(ind_frm%+48)="Bar chart" -� -(: -2��graph_selectpie -<graph_type%=3 -FCmenu_bar%?124=0:menu_bar%?148=0:menu_bar%?172=1:menu_bar%?196=2 -PEmenu_win%?100=0:menu_win%?124=0:menu_win%?148=1:menu_win%?172=128 -Z$(ind_frm%+48)="Pie chart" -d� -n: -x��graph_selecttable -�graph_type%=4 -�Cmenu_bar%?124=0:menu_bar%?148=0:menu_bar%?172=0:menu_bar%?196=3 -�Emenu_win%?100=0:menu_win%?124=0:menu_win%?148=0:menu_win%?172=129 -�$(ind_frm%+48)="Table" -�� -�: -�: -�3� ********** Some stuff with a caret ********** -�: -�$��caret_setpos(handle%,icon%,X%) -�5ș"Wimp_SetCaretPosition",handle%,icon%,0,0,-1,X% -�� -�: .ݤlen(N) .(M%=-1:�M%+=1:�N?M%=0�N?M%=10�N?M%=13 .=M% .": .,: .6*� ********** Fun with fonts ********** .@: .J��font_check .T+$block%="<Font$Prefix> and <Font$Path>" .^.ș"OS_GSTrans",block%,block%+100,255 � ,,N .hblock%?(100+N)=13 .r3�$(block%+100)<>$font_path%:�font_dothebusiness .|� .�: .���font_dothebusiness .�ș"Hourglass_On" .�+$block%="<Font$Prefix> and <Font$Path>" .�.ș"OS_GSTrans",block%,block%+100,255 � ,,N .�block%?(100+N)=13 .�$font_path%=$(block%+100) .�4font_counter%=0:$(font_list%)="System Font":Y=11 .֎menu_fontlist%!28=1:menu_fontlist%!32=-1:menu_fontlist%!36=&7009121:menu_fontlist%!40=font_list%:menu_fontlist%!44=-1:menu_fontlist%!48=40 .�Pș"XOS_ReadVarVal","Font$Path",block%,256,0,3�;N:�(N �1):ș"Hourglass_Off":� .�y$block%=$(font_list%+text_titlec*40):$(block%+41)=$(font_list%+text_axisc*40):$(block%+82)=$(font_list%+text_keyc*40) .�: .� N=0:� /Qfont_counter%+=1:ș"Font_ListFonts",,font_list%+(font_counter%*40),N,-1 � ,,N /6M=�len(font_list%+((font_counter%-1)*40)):�M>Y:Y=M /�M=28+24*font_counter%:menu_fontlist%!M=0:menu_fontlist%!(M+4)=0:menu_fontlist%!(M+8)=&7009121:menu_fontlist%!(M+12)=font_list%+(font_counter%*40):menu_fontlist%!(M+16)=-1:menu_fontlist%!(M+20)=40 /&�N=-1�font_counter%=256 /0`�font_counter%=256:N=�message("GraphPlus has reached its maximum font handling capacity.",0) /:: /DWfont_counter%-=1:menu_fontlist%!(28+24*font_counter%)=128:menu_fontlist%!16=16+16*Y /Nș"Hourglass_Off" /X$text_titlec=�font_search(block%) /b&text_axisc=�font_search(block%+41) /l%text_keyc=�font_search(block%+82) /v� /�: /�ݤfont_search(N) /�7M=-1:�M+=1:�$N=$(font_list%+M*40)�M=font_counter%+1 /�s�M=font_counter%+1�font_counter%<>0:N=�message("Font "+$N+" cannot be found. Replacing with System Font.",0):=0 /�=M /�: /�ݤfont_recognise /��N=0�39:block%?N=�#X%:� /�=�font_search(block%) /�: /�: /�'� ********** Window code ********** /�: 0��window_requestRedraw 0$ș"Wimp_RedrawWindow",,poll% � N 0ȕ N 0 $ș"Wimp_GetRectangle",,poll% � N 0*'�!poll%=handle_group%:�group_colour 04%�!poll%=handle_back%:�back_colour 0>� 0H� 0R: 0\��window_requestOpen 0f�!poll%=handle_update%:� 0p8�!poll%<>handle_format%:ș"Wimp_OpenWindow",,poll%:� 0z'�N=0�256�4:block%!(200+N)=poll%!N:� 0�8!block%=handle_pane%:ș"Wimp_GetWindowState",,block% 0�c!poll%=handle_pane%:poll%!4+=52:poll%!8+=100:poll%!16-=80:poll%!20=block%!20:poll%!24=block%!24 0�ș"Wimp_OpenWindow",,poll% 0�;block%!228=handle_pane%:ș"Wimp_OpenWindow",,block%+200 0�� 0�: 0���window_requestClose 0�ș"Wimp_CloseWindow",,poll% 0Ԑ�!poll%=handle_format%:graph_window%=�:!block%=handle_pane%:ș"Wimp_CloseWindow",,block%:!block%=handle_create%:ș"Wimp_CloseWindow",,block% 0�� 0�: 0���window_opengraph 0��pane_calculate 1�!block%=handle_pane%:block%!4=252:block%!8=288:block%!12=1280:block%!16=660:block%!20=0:block%!24=0:block%!28=-1:ș"Wimp_OpenWindow",,block% 1�!block%=handle_format%:block%!4=200:block%!8=0:block%!12=1280:block%!16=740:block%!20=0:block%!24=0:block%!28=handle_pane%:ș"Wimp_OpenWindow",,block% 1graph_window%=� 1$� 1.: 18��window_liftgraph 1B8!poll%=handle_format%:ș"Wimp_GetWindowState",,poll% 1L#poll%!28=-1:�window_requestOpen 1V� 1`: 1j��window_opendatapath 1t $block%="GraphPlusData$Path" 1~5ș"XOS_ReadVarVal",block%,ind_dp%+4,256,0,3�,,M;N 1�ind_dp%?(4+M)=10 1�=�(N �1)=1:N=�message("Error when reading data path.",0):� 1�>ș"Wimp_CreateSubMenu",,handle_datapath%,poll%!24,poll%!28 1�� 1�: 1�: 1�'� ********** What a drag ********** 1�: 1���drag_startsave 1�A!block%=handle_save%:block%!4=0:ș"Wimp_GetIconState",,block% 1�>block%!100=handle_save%:ș"Wimp_GetWindowInfo",,block%+100 1�!!poll%=handle_save%:poll%!4=5 2 poll%!8=block%!104+block%!8 2 !poll%!12=block%!116+block%!12 2!poll%!16=block%!104+block%!16 2!poll%!20=block%!116+block%!20 2(poll%!24=0:poll%!28=0 22poll%!32=-1:poll%!36=-1 2<Y�dstart%:ș dstart%,%11000101,1,"file_0f0",poll%+8,poll%+24 � ș"Wimp_DragBox",,poll% 2Ffile_status%=1 2P� 2Z: 2d��drag_startcreate 2nC!block%=handle_create%:block%!4=0:ș"Wimp_GetIconState",,block% 2x@block%!100=handle_create%:ș"Wimp_GetWindowInfo",,block%+100 2�#!poll%=handle_create%:poll%!4=5 2�poll%!8=block%!104+block%!8 2�!poll%!12=block%!116+block%!12 2�!poll%!16=block%!104+block%!16 2�!poll%!20=block%!116+block%!20 2�poll%!24=0:poll%!28=0 2�poll%!32=-1:poll%!36=-1 2�Y�dstart%:ș dstart%,%11000101,1,"file_aff",poll%+8,poll%+24 � ș"Wimp_DragBox",,poll% 2�file_status%=10 2�� 2�: 2���drag_userdragbox 2�"ș"Wimp_GetPointerInfo",,poll% 3'!block%=256:block%!12=0:block%!16=1 3iblock%!20=poll%!12:block%!24=poll%!16:block%!28=!poll%:block%!32=poll%!4:block%!36=543:block%!40=&0f0 31�file_status%=1:�save_leaf(ind_sa%,block%+44) 3"2�file_status%=10:�save_leaf(ind_sg%,block%+44) 3,+ș"Wimp_SendMessage",18,block%,poll%!12 36file_status%+=1:� 3@: 3J: 3T+� ********** Saving, it helps ********* 3^: 3h��save_tempOK 3rBN=-1:�N+=1:�ind_sa%?N=46�ind_sa%?N=0�ind_sa%?N=10�ind_sa%?N=13 3|W�ind_sa%?N<>46:N=�message("To save, drag the template icon to a filer window.",0):� 3�$(poll%+44)=$ind_sa% 3��save_template 3�ș"Wimp_CreateMenu",,-1 3�� 3�: 3���save_createOK 3�BN=-1:�N+=1:�ind_sg%?N=46�ind_sg%?N=0�ind_sg%?N=10�ind_sg%?N=13 3�W�ind_sg%?N<>46:N=�message("To save, drag the drawfile icon to a filer window.",0):� 3�$file_graph%=$ind_sg% 3��graph_create 3�� 3�: 3���save_leaf(N%,N) 4M=�len(N%) 4�:M-=1:�N%?M=46�M=0 4�N%?M=46:M+=1 4&$N=$(N%+M) 40� 4:: 4D��save_ack 4NM�poll%!36=-1:N=�message("Unsafe to save "+$(poll%+44),0):file_status%=0:� 4XZ%=1 4b"�file_status%=2:�save_template 4l&�file_status%=11:�save_creategraph 4v<�Z%<>0:poll%!16=3:ș"Wimp_SendMessage",18,poll%,poll%!20 4�ș"Wimp_CreateMenu",,-1 4�� 4�: 4���save_template:� 4�$file_temp%=$(poll%+44) 4�$ind_sa%=$(poll%+44) 4�"ș"XOS_Find",&82,poll%+44�X%;N 4�D�(N �1)=1�X%=0:N=�message("Format template not saved.",0):Z%=0:� 4Љ��M=�message("GraphPlus has encountered an error when saving template. If possible quit GraphPlus and reload.",0):ș"OS_Find",0,X%:� 4�3�dfile_put("GraphPlus Template"):�dfile_bput(0) 4��dfile_bput(graph_type%) 4�'�M=0�27:�dfile_bput(group_map%?M):� 4�)�M=0�251:�dfile_bput(group_data%?M):� 5j�dfile_sputl(font_list%+text_titlec*40,40):�dfile_wput(text_titlex*1000):�dfile_wput(text_titley*1000) 5g�dfile_sputl(font_list%+text_axisc*40,40):�dfile_wput(text_axisx*1000):�dfile_wput(text_axisy*1000) 5d�dfile_sputl(font_list%+text_keyc*40,40):�dfile_wput(text_keyx*1000):�dfile_wput(text_keyy*1000) 5 -�graph_key%:�dfile_bput(1)��dfile_bput(0) 5*.�graph_back%:�dfile_bput(1)��dfile_bput(0) 54,�graph_3D%:�dfile_bput(1)��dfile_bput(0) 5>3�graph_outline%=0:�dfile_bput(1)��dfile_bput(0) 5HQ�dfile_bput(data_back%?1):�dfile_bput(data_back%?2):�dfile_bput(data_back%?3) 5R�dfile_bput(graph_best%) 5\!�M=0�63:�#X%,pie_palette%?M:� 5f0�graph_title%:�dfile_bput(1):��dfile_bput(0) 5p�dfile_sputl(s_title%,40) 5z0�graph_xaxis%:�dfile_bput(1):��dfile_bput(0) 5��dfile_sputl(s_xaxis%,40) 5��dfile_bput(graph_xg%) 5�/�graph_xcal%:�dfile_bput(1):��dfile_bput(0) 5� �dfile_wput(graph_xdiv*1000) 5�!�dfile_wput(graph_xsdiv*1000) 5��dfile_wput(data_xmin*1000) 5��dfile_wput(data_xmax*1000) 5�0�graph_yaxis%:�dfile_bput(1):��dfile_bput(0) 5��dfile_sputl(s_yaxis%,40) 5��dfile_bput(graph_yg%) 5�/�graph_ycal%:�dfile_bput(1):��dfile_bput(0) 5� �dfile_wput(graph_ydiv*1000) 5�!�dfile_wput(graph_ysdiv*1000) 6�dfile_wput(data_ymin*1000) 6�dfile_wput(data_ymax*1000) 6�dfile_bput(graph_bartype%) 6$!�dfile_bput(graph_barmargin%) 6..�graph_exp%:�dfile_bput(1):��dfile_bput(0) 68�dfile_wput(graph_es%) 6B�dfile_wput(graph_ef%) 6Lș"OS_Find",0,X% 6Vș"OS_File",18,ind_sa%,&0f0 6`� 6j: 6t��save_creategraph 6~$file_graph%=$(poll%+44) 6�$ind_sg%=$(poll%+44) 6��graph_create 6�� 6�: 6�: 6�8� ********** Well, a load is just as good ********** 6�: 6���load_message 6�#�poll%!40=&0f0:�load_template:� 6�[�poll%!40<>&dfe:N=�message("Not a CSV file. Are you sure you want to use it?",3):�N=2:� 6��load_setdatapath 6�� 7 : 7 ��load_template 7X%=�$(poll%+44) 7poll%!12=poll%!8:poll%!16=4 7(*ș"Wimp_SendMessage",17,poll%,poll%!20 72�load_tempfile 7<�#X% 7F�pane_calculate 7P4ș"Wimp_ForceRedraw",handle_pane%,0,-1023,1279,0 7Z� 7d: 7n��load_tempfile:� 7xa��M=�message("GraphPlus template loading error. The current template may be corrupted.",0):� 7��#X%=19:graph_type%=�#X% 7��graph_select(graph_type%) 7��M=0�27:group_map%?M=�#X%:� 7�!�M=0�251:group_data%?M=�#X%:� 7�wtext_titlec=�font_recognise:�file_wget(block%):text_titlex=!block%/1000:�file_wget(block%):text_titley=!block%/1000 7�ttext_axisc=�font_recognise:�file_wget(block%):text_axisx=!block%/1000:�file_wget(block%):text_axisy=!block%/1000 7�qtext_keyc=�font_recognise:�file_wget(block%):text_keyx=!block%/1000:�file_wget(block%):text_keyy=!block%/1000 7�LN=�#X%:�N=1:graph_key%=�:menu_style%?28=1:�graph_key%=�:menu_style%?28=0 7�LN=�#X%:�N=1:graph_box%=�:menu_style%?52=9:�graph_box%=�:menu_style%?52=8 7�LN=�#X%:�N=1:graph_3D%=�:menu_style%?148=1:�graph_3D%=�:menu_style%?148=0 7�[N=�#X%:�N=1:graph_outline%=0:menu_style%?172=129:�graph_outline%=-1:menu_style%?172=128 7�9data_back%?1=�#X%:data_back%?2=�#X%:data_back%?3=�#X% 7�hgraph_best%=�#X%:�graph_best%=2:menu_best%?28=0:menu_best%?52=129:�menu_best%?28=1:menu_best%?52=128 8!�M=0�63:pie_palette%?M=�#X%:� 8.N=�#X%:�N=1:graph_title%=�:�graph_title%=� 8�N=0�39:s_title%?N=�#X%:� 8".N=�#X%:�N=1:graph_xaxis%=�:�graph_xaxis%=� 8,�N=0�39:s_xaxis%?N=�#X%:� 86graph_xg%=�#X% 8@,N=�#X%:�N=1:graph_xcal%=�:�graph_xcal%=� 8J,�file_wget(poll%):graph_xdiv=!poll%/1000 8T-�file_wget(poll%):graph_xsdiv=!poll%/1000 8^+�file_wget(poll%):data_xmin=!poll%/1000 8h+�file_wget(poll%):data_xmax=!poll%/1000 8r.N=�#X%:�N=1:graph_yaxis%=�:�graph_yaxis%=� 8|�N=0�39:s_yaxis%?N=�#X%:� 8�graph_yg%=�#X% 8�,N=�#X%:�N=1:graph_ycal%=�:�graph_ycal%=� 8�,�file_wget(poll%):graph_ydiv=!poll%/1000 8�-�file_wget(poll%):graph_ysdiv=!poll%/1000 8�+�file_wget(poll%):data_ymin=!poll%/1000 8�+�file_wget(poll%):data_ymax=!poll%/1000 8�graph_bartype%=�#X% 8�graph_barmargin%=�#X% 8�*N=�#X%:�N=1:graph_exp%=�:�graph_exp%=� 8�&�file_wget(poll%):graph_es%=!poll% 8�&�file_wget(poll%):graph_ef%=!poll% 8��graph_select(graph_type%) 8�� 9: 9��load_dataopen 9 �poll%!40=&0f0:�load_message 9&� 90: 9:��load_setdatapath 9D,�("Set GraphPlusData$Path "+$(poll%+44)) 9N� 9X: 9b: 9l/� ********** Those darn messages ********** 9v: 9���message_process 9�Ȏpoll%!16� 9� �0 :�byebye_shutdown 9� �2 :�save_ack 9� �3 :�load_message 9� �5 :�load_dataopen 9�! �&400C0:�message_menuwarning 9��:� 9�: 9���message_menuwarning 9�Ȏmenu_current%� 9� �1:�message_menubar 9� �2:�message_winbar :� :� :: : ��message_menubar :*)�poll%!32=1�poll%!36=1:�menu_openback :45�poll%!32=1�poll%!36=2:�font_check:�menu_openfont :>,�poll%!32=1�poll%!36=4:�menu_openpalette :H)�poll%!32=3�poll%!36=0:�menu_opensave :R/�poll%!32=3�poll%!36=1:�window_opendatapath :\4�poll%!32=2�poll%!36=0�poll%!40<>6:�menu_openmap :f5�poll%!32=2�poll%!36=0�poll%!40=6:�menu_openlabel :p*�poll%!32=2�poll%!36=1:�menu_opengroup :z� :�: :���message_winbar :�)�poll%!32=0�poll%!36=1:�menu_openback :�5�poll%!32=0�poll%!36=2:�font_check:�menu_openfont :�,�poll%!32=0�poll%!36=4:�menu_openpalette :�)�poll%!32=2�poll%!36=0:�menu_opensave :�/�poll%!32=2�poll%!36=1:�window_opendatapath :�4�poll%!32=1�poll%!36=0�poll%!40<>6:�menu_openmap :�5�poll%!32=1�poll%!36=0�poll%!40=6:�menu_openlabel :�*�poll%!32=1�poll%!36=1:�menu_opengroup :�� :�: :�: ;-� ********** Things at the end ********** ;: ;��byebye_shutdown ;$&ș"Wimp_CloseDown",task%,&4B534154 ;.ș"OS_Exit" ;8� Good Ridance ;B� ;L: ;Vnݤmessage($(mess%+20),flag%):mess%!16=0:$mess%="GraphPlus":ș"Wimp_ReportError",mess%+16,flag%,mess%�,N:=N ;`: ;j��error ;t ;~�N=�message("Serious internal error &"+�~(�)+": must exit. Click on OK to dump current template in GraphPlus directory as 'TempDump'.",3):�N=1:�error_dump ;��byebye_shutdown ;�FISH ;�: ;���error_dump ;�($block%="GraphPlus$Dir":block%?256=0 ;�4ș"XOS_ReadVarVal",block%,poll%+44,256,0,3�,,M;N ;�V�(N �1)=1:N=�message("Format template not saved; directory variable deleted.",0):� ;�$(poll%+44+M)=".TempDump" ;��save_template ;�� ;�: ;�: <