Home » Archimedes archive » Archimedes World » AW-1997-02.adf » !MbookDemo_MathsBook » !MbookDemo/!Runimage

!MbookDemo/!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 » Archimedes World » AW-1997-02.adf » !MbookDemo_MathsBook
Filename: !MbookDemo/!Runimage
Read OK:
File size: 195A0 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM > !Runimage
   20REM Addition and subtraction.
   30REM Version 0.30, 9th Sept 96
   40ON ERROR PROCerror("Maths_task"):PROCend(-1):END
   50
   60PROCinitialise
   70PROCwimp_poll
   80PROCend(-1)
   90END
  100
  110
  120DEF PROCinitialise
  130LOCAL n%
  140DIM block% 3000,block2% 60,results% 44000
  150DIM Prect% 16,Ptrans% 16,Pplot% 8,lev% 48,Hlev% 48
  160DIM dig1$(5),dig2$(4),dig3$(5),answer$(5),carry$(5),car_dig%(5),dig_limQ%(9),dig_limA%(7),handle%(3),dig_name$(4),colname$(4),strike$(6),st_dig%(6),Pdig1$(9,4),Pdig2$(9,4),Pop%(9),Pdec%(9),PlimQ%(9),PlimA%(9),Cdone%(4),STdone%(4),name$(43),message$(2)
  170DIM Alevel%(43),Slevel%(43),Hlevel%(43),MHlevel%(43),auto%(43),autohelp%(43),force%(43),tries%(43),mode%(43),decimal%(43),MenuBuff%(14)
  180DIM operator%(43),no_quest%(43),timelim%(43),Notimer%(43),calc%(43),printer%(43),score%(43),next%(43),stop%(43),colname%(43),estimate%(43),newlevR%(43),newlevW%(43),BothOp%(43),saveR%(43),ownsum%(43),speech%(43)
  190end%=0:drag%=0:double%=0:initx%=0:inity%=0:initnum%=0:dragval%=0:PrevOp%=0
  200quest%=0:try%=0:sesstime%=0:game%=0:start%=-1:drawfont%=0:SCformat%=1:EstVal%=0:marked%=0:Owin%=0:dragx%=0:dragy%=0:ownOp%=0:rubber%=0
  210carry%=0:strike%=0:reduce%=0:Bstep%=0:force5%=0:nextcheck%=0:path$="":Rcnt%=0:Rcnt2%=0:dirpath$="":alter%=0:startOwn%=0
  220nextdig%=0:rubdig%=-1:stopped%=0:anslim%=0:sum%=0:notsavedR%=0:newR%=0
  230CorrectAns%=0:correct%=0:message$()="":nextmess%=0
  240Pcount%=-1:Psave%=0:Pprint%=0:driver%=0
  250CCsum=0:CCnum=0:CCnum$="":CCstart%=0:CCop%=0:CCprev%=0
  260
  270y1%=-296:y2%=y1%-75:y3%=y2%-75:y0%=y1%+92
  280mkx%=FNdigx(0)+110
  290
  300SYS"Wimp_Initialise",200,&4B534154,"Maths_task"
  310IBhandle%=FNicon_bar_icon("!mbookDemo")
  320PROCset_fonts
  321PROCload_sprites
  330PROCcreate_windows
  340PROCicon_menu
  350Thandle%=FNcentre_window(Thandle%,"Y")
  360TLtime%=TIME
  380PROCset_option_variables
  390PROCset_mode_independance
  400ENDPROC
  410
  420
  430DEF PROCicon_menu
  440REM Sets up menu
  450DIM menu% 244,rmenu% 172,mbuff% 115
  460DIM item$(8),data%(8,4)
  470item$()="Info","See options","See/edit group","Load/new group","Save group","Results","Enable printer","Whole screen","Quit"
  480data%()=2,Ihandle%,0,0,0,0,-1,1,0,0,0,-1,1,mbuff%,15,0,-1,0,mbuff%+84,15,0,-1,1,0,0,2,rmenu%,0,0,0,0,-1,0,mbuff%+100,15,0,-1,0,0,0,&80,-1,0,0,0
  490PROCset_up_menu("MathsBook",menu%,8,item$(),data%())
  500
  510item$()="See results","Print results","Print summary","Save results","Auto save results","Wipe results"
  520data%()=0,-1,1,0,0,0,-1,0,mbuff%+35,14,0,-1,0,mbuff%+50,14,0,SVhandle2%,1,0,0,0,-1,0,mbuff%+65,18,&80,-1,0,0,0
  530PROCset_up_menu("Results",rmenu%,5,item$(),data%())
  540ENDPROC
  550
  560
  570DEF PROCcreate_windows
  580REM Load template files
  590DIM Abuff% 500,Sbuff% 500,Ibuff% 150,Cbuff% 800,SCbuff% 250,N2buff% 900,calcbuff% 200,SVbuff% 300,SV2buff% 300,Fbuff% 200,Pbuff% 100,STbuff% 100,Icbuff% 100,Obuff% 200,Smbuff% 100,Lbuff% 400,Drbuff% 100,Ebuff% 100,Rbuff% 100,Edbuff% 100,Dembuff% 150
  600DIM Mbuff% 500,P2buff% 100,font% 255
  610FOR n%=0 TO 255 STEP 4:!(font%+n%)=0:NEXT
  620DIM name% 11
  630
  640SYS"Wimp_OpenTemplate",,"<Maths$Dir>.Templates2"
  650handle%(1)=FNtemp_window(Abuff%,500,name%,"addition",-1)
  660titlebuff1%=block%!72
  670handle%(2)=FNtemp_window(Sbuff%,500,name%,"subtraction",-1)
  680titlebuff2%=block%!72
  690Ihandle%=FNtemp_window(Ibuff%,150,name%,"info",-1)
  710Chandle%=FNtemp_window(Cbuff%,800,name%,"config",-1)
  720level_buffA%=FNicon_buffer(5)
  730level_buffS%=FNicon_buffer(8)
  740Qbuff%=FNicon_buffer(16)
  750Tbuff%=FNicon_buffer(19)
  760Tmbuff%=FNicon_buffer(22)
  770Hbuff%=FNicon_buffer(31)
  780MHbuff%=FNicon_buffer(37)
  790levRbuff%=FNicon_buffer(53)
  800levWbuff%=FNicon_buffer(57)
  810titlebuffC%=block%!72
  820
  830SChandle%=FNtemp_window(SCbuff%,250,name%,"score",font%)
  840Snamebuff%=FNicon_buffer(1)
  850SCtbuff%=FNicon_buffer(2)
  860SCQbuff%=FNicon_buffer(4)
  870SCRbuff%=FNicon_buffer(6)
  880SCWbuff%=FNicon_buffer(8)
  890
  900NGhandle%=FNtemp_window(N2buff%,900,name%,"name2",-1)
  910Ntitlebuff%=block%!72
  920
  930CChandle%=FNtemp_window(calcbuff%,200,name%,"calc",-1)
  940CCbuff%=FNicon_buffer(17)
  950
  960Lhandle%=FNtemp_window(Lbuff%,400,name%,"Loadbox",font%)
  970loadbuff%=FNicon_buffer(2)
  980Mhandle%=FNtemp_window(Mbuff%,500,name%,"DirMenu",-1)
  990FOR n%=0 TO 14:MenuBuff%(n%)=FNicon_buffer(n%):NEXT
 1000
 1010SVhandle%=FNtemp_window(SVbuff%,300,name%,"savebox",-1)
 1020savebuff%=FNicon_buffer(1)
 1030
 1040Drhandle%=FNtemp_window(Drbuff%,100,name%,"dirmess",-1)
 1050Phandle%=FNtemp_window(Pbuff%,100,name%,"printmess",-1)
 1060P2handle%=FNtemp_window(P2buff%,100,name%,"printmess2",-1)
 1070SThandle%=FNtemp_window(STbuff%,100,name%,"stopmess",-1)
 1080Ichandle%=FNtemp_window(Icbuff%,100,name%,"iconmess",-1)
 1090icbuff%=FNicon_buffer(0)
 1100Smhandle%=FNtemp_window(Smbuff%,100,name%,"savemess",-1)
 1110Ehandle%=FNtemp_window(Ebuff%,100,name%,"endsave",-1)
 1120Eicbuff%=FNicon_buffer(1)
 1130Rhandle%=FNtemp_window(Rbuff%,100,name%,"rejectmess",-1)
 1140Ricbuff%=FNicon_buffer(0)
 1150Edhandle%=FNtemp_window(Edbuff%,100,name%,"namemess",-1)
 1160
 1170Dhandle%=FNtemp_window(-1,-1,name%,"dribble",-1)
 1180SVhandle2%=FNtemp_window(SV2buff%,300,name%,"savebox2",-1)
 1190savetextbuff%=FNicon_buffer(1)
 1200
 1210Ohandle%=FNtemp_window(Obuff%,200,name%,"ownsum",font%)
 1220Osum1buff%=FNicon_buffer(3)
 1230Osum2buff%=FNicon_buffer(4)
 1240Osgnbuff%=FNicon_buffer(5)
 1250
 1260Thandle%=FNtemp_window(-1,-1,name%,"title",-1)
 1270
 1280Demhandle%=FNtemp_window(Dembuff%,150,name%,"demo",-1)
 1290DemIc%=FNicon_buffer(1)
 1300
 1310SYS"Wimp_CloseTemplate"
 1320ENDPROC
 1330
 1340
 1350DEF PROCload_sprites
 1360LOCAL mem%
 1370mem%=258000:REM 143124+114796
 1380DIM sarea% mem%
 1390!sarea%=mem%:sarea%!8=16
 1400SYS"OS_SpriteOp",&109,sarea%
 1410SYS"OS_SpriteOp",&10A,sarea%,"<Maths$Dir>.sprites"
 1420ENDPROC
 1430
 1440
 1450DEF PROCset_mode_independance
 1460DIM scale% 16,trans% 255,pal% 64,scale27% 16
 1470PROCsource_mode_factors(12,scale%)
 1480PROCcurrent_mode_factors(scale%)
 1490PROCpalette_block("n0",sarea%,pal%)
 1500PROCtranstable(12,pal%,-1,trans%)
 1510PROCmessage_mode_independance
 1520
 1530PROCsource_mode_factors(27,scale27%)
 1540PROCcurrent_mode_factors(scale27%)
 1550ENDPROC
 1560
 1570
 1580DEF PROCwimp_poll
 1590REPEAT
 1600SYS"Wimp_Poll",0,block% TO reason%
 1610CASE reason% OF
 1620 WHEN 0:PROCnull_event
 1630 WHEN 1:PROCredraw
 1640 WHEN 2:PROCopen_windows
 1650 WHEN 3:PROCclose_windows
 1660 WHEN 6:PROCbutton_clicks
 1670 WHEN 7:IF FNwindow_open(SVhandle%) THEN PROCsave_request(&FFD,savebuff%,72+20*Ncount%)
 1680        IF FNwindow_open(SVhandle2%) THEN PROCsave_request(&FFF,savetextbuff%,Rptr%+1)
 1690 WHEN 8:PROCkeys
 1700 WHEN 9:PROCselect_menu
 1710 WHEN 17,18:PROCmessages
 1720ENDCASE
 1730UNTIL end%=-1
 1740ENDPROC
 1750
 1760
 1770DEF PROCkeys
 1780CASE !block% OF
 1790 WHEN CChandle%:PROCkeys_calc
 1800 WHEN Ohandle%:PROCown_sum_keys
 1810 WHEN NGhandle%:IF create%<0 THEN
 1820                 PROCkeys_name(NameNo%)
 1830                ELSE
 1840                 IF NameNo%=Ncount%+1 THEN PROCkeys_name(Ncount%+1)
 1850                 IF NameNo%>0 AND block%!24=13 THEN PROCkeys_name(NameNo%)
 1860                ENDIF
 1870OTHERWISE
 1880 SYS"Wimp_ProcessKey",block%!24
 1890ENDCASE
 1900ENDPROC
 1910
 1920
 1930DEF PROCmessages
 1940CASE block%!16 OF
 1950 WHEN 0:end%=-1
 1960 WHEN 2:REM IF FNwindow_open(SVhandle%) PROCsave_file(FNstring(block%+44))
 1970        REM IF FNwindow_open(SVhandle2%) PROCresults_text_file(FNstring(block%+44))
 1980        PROCclose_window(Smhandle%)
 1990 WHEN 3:IF block%!40=&FFD THEN PROCdragload_message
 2000 WHEN &400C1:PROCmode_change
 2010 WHEN 5:IF block%!40=&1000 THEN PROCbroadcast_message
 2020ENDCASE
 2030ENDPROC
 2040
 2050
 2060DEF PROCset_up_loadbox
 2070LOCAL item%,file$,n%:item%=0
 2080PROCloadbox_windows(-1):PROCclose_window(Drhandle%)
 2090FOR n%=0 TO 14:$(MenuBuff%(n%))="":NEXT:n%=-1
 2100
 2110$(block%+12)=path$:SYS"OS_GBPB",9,block%+12,block%,1,0,11 TO ,,,,item%
 2120WHILE item%>-1 AND n%<14
 2130 file$=FNstring(block%)
 2140 IF file$<>"results" THEN n%+=1:$(MenuBuff%(n%))=file$
 2150 SYS"OS_GBPB",9,block%+12,block%,1,item%,11 TO ,,,,item%
 2160ENDWHILE
 2170
 2180path$=path$+"."
 2190ENDPROC
 2200
 2210
 2220DEF PROCbroadcast_message
 2230IF RIGHT$(FNstring(block%+44),9)="Mfiles_+-" AND create%<0 THEN
 2240 path$=FNstring(block%+44):dirpath$=path$
 2250 $loadbuff%="":PROCreset_icon(Lhandle%,3)
 2260 PROCshade_icon(Lhandle%,1,0)
 2270 PROCset_up_loadbox
 2280ENDIF
 2290ENDPROC
 2300
 2310
 2320DEF PROCdragload_message
 2330LOCAL file$,leaf$,whandle%
 2340whandle%=block%!20
 2350file$=FNstring(block%+44)
 2360REM IF (notsavedO% OR notsavedR%)=-1 THEN nextfile$=file$:PROCend_save(3):ENDPROC
 2370PROCfile_vars(file$)
 2380PROCload_file(file$)
 2390
 2400IF whandle%=Lhandle% THEN
 2410 PROCreset_icon(Lhandle%,2)
 2420ELSE
 2430 IF whandle%=-2 THEN PROCloadbox_windows(0)
 2440ENDIF
 2450ENDPROC
 2460
 2470
 2480DEF PROCfile_vars(file$)
 2490$savebuff%=file$:$loadbuff%=FNgetleaf(file$,0)
 2500path$=LEFT$(file$,LEN file$-LEN $loadbuff%)
 2510IF INSTR(file$,"Mfiles_+-") THEN $savetextbuff%=path$+"results."+$loadbuff% ELSE $savetextbuff%=path$+"R"+$loadbuff%
 2520ENDPROC
 2530
 2540
 2550DEF PROCmode_change
 2560PROCtranstable(12,pal%,-1,trans%)
 2570PROCcurrent_mode_factors(scale%)
 2580PROCcurrent_mode_factors(scale27%)
 2590PROCmessage_mode_independance
 2600drawfont%=(game%>0 AND SCformat%=2)
 2610PROCset_windows
 2620IF FNwindow_open(Ohandle%) THEN Ohandle%=FNcentre_window(Ohandle%,"Y")
 2630IF FNwindow_open(Lhandle%) THEN PROCloadbox_windows(-1)
 2640IF FNwindow_open(CChandle%) THEN CChandle%=FNcentre_window(CChandle%,"Y")
 2650IF FNwindow_open(Dhandle%) THEN Dhandle%=FNcentre_window(Dhandle%,"")
 2660ENDPROC
 2670
 2680
 2690DEF PROCselect_menu
 2700LOCAL no%,scx%,scy%
 2710CASE !block% OF
 2720 WHEN 1:no%=NameNo%
 2730        PROCset_config_title(no%)
 2740        PROCset_preferences(no%)
 2750        Chandle%=FNcentre_window(Chandle%,"")
 2760 WHEN 2:create%=-1:PROCbuild_name_windowG
 2770 WHEN 3:create%=-2:PROCopen_window(Drhandle%):nextfile$=""
 2780        IF game% THEN PROCclose_window(handle%(game%)):game%=0
 2790        REM IF (notsavedO% OR notsavedR%)=-1 THEN PROCend_save(3)
 2800 WHEN 4:REM PROCsave_file($savebuff%):PROCopen_window(Smhandle%)
 2810        $DemIc%="saves the children's levels."
 2820        Demhandle%=FNcentre_window(Demhandle%,"Y")
 2830 WHEN 5:PROCselect_menu_results
 2840 WHEN 6:REM enprint%=NOT enprint%
 2850        REM PROCsingle_tick(menu%,6,enprint%)
 2860        REM IF NameNo% THEN PROCset_printer(NameNo%)
 2870        $DemIc%="can print out sums.":Demhandle%=FNcentre_window(Demhandle%,"Y")
 2880 WHEN 7:screen%=NOT screen%
 2890        PROCsingle_tick(menu%,7,screen%)
 2900        PROCset_windows
 2910 WHEN 8:REM IF (notsavedO% OR notsavedR%)=-1 AND path$<>"" THEN nextfile$="":PROCend_save(3):end%=1 ELSE end%=-1
 2920        end%=-1
 2930ENDCASE
 2940PROCmenu_adjust(menu%,block%,9)
 2950ENDPROC
 2960
 2970
 2980DEF PROCend_save(file%)
 2990IF notsavedO%=-1 AND (file%=1 OR file%=3) THEN $Eicbuff%="current group file ?"
 3000IF notsavedR%=-1 AND (file%=2 OR file%=3) THEN $Eicbuff%="results file ?"
 3010IF (notsavedO% AND notsavedR%)=-1 AND file%=3 THEN $Eicbuff%="group and results file ?"
 3020PROCopen_window(Ehandle%)
 3030savend%=file%
 3040ENDPROC
 3050
 3060
 3070DEF PROCselect_end_save
 3080IF block%!16=2 THEN
 3090 REM IF notsavedO%-1 AND (savend% AND 1)=1 THEN PROCsave_file($savebuff%)
 3100 IF notsavedR%=-1 AND (savend% AND 2)=2 THEN PROCresults_text_file($savetextbuff%)
 3110 IF savend%=2 THEN PROCreset_results
 3120ENDIF
 3130PROCclose_window(Ehandle%)
 3140end%=(end%=1):notsavedO%=0:notsavedR%=0
 3150IF nextfile$<>"" AND end%=0 THEN PROCfile_vars(nextfile$):PROCload_file(nextfile$)
 3160ENDPROC
 3170
 3180
 3190DEF PROCmenu_adjust(menu%,block%,num%)
 3200SYS"Wimp_GetPointerInfo",,block%
 3210IF block%!8=1 THEN PROCshow_menu(menu%,block%,num%)
 3220ENDPROC
 3230
 3240
 3250DEF PROCselect_menu_results
 3260LOCAL response%
 3270CASE block%!4 OF
 3280 WHEN 0:Dhandle%=FNcentre_window(Dhandle%,"")
 3290 WHEN 1:PROCprintout_results(-1)
 3300 WHEN 2:PROCprintout_results(0)
 3310 WHEN 3:PROCresults_text_file($savetextbuff%):PROCopen_window(Smhandle%)
 3320 WHEN 4:autosaveR%=NOT autosaveR%
 3330        PROCsingle_tick(rmenu%,4,autosaveR%)
 3340 WHEN 5:IF notsavedR% THEN nextfile$="":PROCend_save(2)
 3350ENDCASE
 3360ENDPROC
 3370
 3380
 3390DEF PROCend(f%)
 3400IF f% THEN PROClose_fonts
 3410*POINTER
 3420*SET Maths1$Running <>
 3430SYS"Wimp_CloseDown"
 3440ENDPROC
 3450
 3460
 3470DEF PROCopen_windows
 3480SYS"Wimp_OpenWindow",,block%
 3490IF !block%=handle%(game%) THEN
 3500 IF Owin%=-1 THEN PROCopen_window(Ohandle%)
 3510 IF FNwindow_open(Chandle%) THEN PROCopen_window(Chandle%)
 3520ENDIF
 3530IF !block%=Lhandle% THEN Mhandle%=FNrelative_window(Lhandle%,Mhandle%,358,0)
 3540ENDPROC
 3550
 3560
 3570DEF PROCclose_windows
 3580LOCAL handle%:handle%=!block%
 3590CASE handle% OF
 3600 WHEN handle%(game%):SThandle%=FNrelative_window(handle%(game%),SThandle%,450,556)
 3610 WHEN NGhandle%:create%=0:NameNo%=0:PROCshade_item(menu%,1,1)
 3620 WHEN Lhandle%:PROCclose_window(Mhandle%):create%=-2
 3630ENDCASE
 3640IF handle%<>handle%(game%) THEN PROCclose_window(handle%)
 3650IF end%=1 THEN end%=0
 3660ENDPROC
 3670
 3680
 3690DEF PROCredraw
 3700LOCAL flg%,Handle%:Handle%=!block%
 3710PROCwork_area_origin(!block%,ox%,oy%)
 3720SYS"Wimp_RedrawWindow",,block% TO flg%
 3730WHILE flg%
 3740 CASE Handle% OF
 3750  WHEN handle%(game%):PROCredraw_game
 3760  WHEN NGhandle%:PROCredraw_class_list
 3770  WHEN Dhandle%:PROCset_results_window(ox%,oy%,-1)
 3780 ENDCASE
 3790 SYS"Wimp_GetRectangle",,block% TO flg%
 3800ENDWHILE
 3810ENDPROC
 3820
 3830
 3840DEF PROCredraw_game
 3850LOCAL sc%
 3860PROCgrid
 3870
 3880IF SCformat%=2 OR estimate%(NameNo%)=0 THEN
 3890 PROCsum_parts:PROCsum_numbers
 3900 IF mode%(NameNo%) THEN PROCinput_box(nextdig%)
 3910 IF marked% THEN PROCmark
 3920 IF message$(1)<>"" AND drawfont%=0 THEN SYS"OS_SpriteOp",&134,sarea%,"message",ox%+600,oy%+y3%-25,0,-1,-1
 3930ELSE
 3940 SYS"OS_SpriteOp",&134,sarea%,"estimate",ox%+14,oy%-462,8,scale27%,trans%
 3950 PROCplace_estimate
 3960 PROCsum_numbers_est
 3970ENDIF
 3980
 3990SYS"OS_SpriteOp",&134,sarea%,"backtop1",ox%+150,oy%-146,0,scale%,trans%:REM rub out
 4000IF drag%=-1 AND (dragval%<>10 OR dragval%=10 AND dragy%<-150) THEN
 4001 IF dragval%=10 THEN sc%=scale% ELSE sc%=scale27%
 4010 SYS"OS_SpriteOp",&134,sarea%,"move"+STR$dragval%,ox%+dragx%,oy%+dragy%,8,sc%,trans%
 4011ENDIF
 4020ENDPROC
 4030
 4040
 4050DEF PROCbutton_clicks
 4060LOCAL no%
 4070IF block%!8=2 AND block%!12<>-2 THEN ENDPROC
 4080CASE block%!12 OF
 4090 WHEN -2:IF block%!16=IBhandle% THEN PROCselect_IBicon
 4100 WHEN handle%(game%):IF block%!8=4 THEN PROCicon_selection
 4110 WHEN Chandle%:no%=NameNo%:PROCselect_options(no%)
 4120 WHEN SChandle%:PROCselect_score
 4130 WHEN CChandle%:PROCcalcalator(block%!16)
 4140 WHEN NGhandle%:IF create%=0 THEN PROCselect_nameG ELSE PROCedit_nameG
 4150 WHEN SVhandle%:PROCselect_savebox
 4160 WHEN SVhandle2%:PROCselect_save_text
 4170 WHEN SThandle%:IF block%!16=2 THEN PROCgame_end
 4180                PROCclose_window(SThandle%)
 4190 WHEN Ohandle%:PROCselect_sum_window
 4200 WHEN Lhandle%:PROCselect_loadfile
 4210 WHEN Mhandle%:PROCselect_file_menu(block%!16)
 4220 WHEN Ehandle%:PROCselect_end_save
 4230 WHEN P2handle%:IF block%!16=2 THEN PROCsum_printout
 4240                Pcount%=-1
 4250 WHEN Phandle%,Ichandle%,Smhandle%,Drhandle%,Rhandle%,Edhandle%,Demhandle%:PROCclose_window(block%!12)
 4260ENDCASE
 4270ENDPROC
 4280
 4290
 4300DEF PROCselect_loadfile
 4310LOCAL file%,error%
 4320SYS"Wimp_SetCaretPosition",Lhandle%,2,46,-210,-1,-1
 4330IF block%!16<>3 OR $loadbuff%="" THEN ENDPROC
 4340PROCclose_window(Thandle%)
 4350
 4360$savebuff%=path$+$loadbuff%
 4370IF INSTR(path$,"Mfiles_+-") THEN $savetextbuff%=path$+"results."+$loadbuff% ELSE $savetextbuff%="R"+$savebuff%
 4380
 4390IF create% THEN
 4400 IF FNcheck_file THEN
 4410  PROCload_file($savebuff%)
 4420  PROCbuild_name_windowG
 4430 ELSE
 4440  REM PROCload_file("<Obey$Dir>.default")
 4450  REM PROCsave_file($savebuff%)
 4460  $DemIc%="allows files to be created."
 4470  Demhandle%=FNcentre_window(Demhandle%,"Y")
 4480 ENDIF
 4490ENDIF
 4500PROCloadbox_windows(0)
 4510ENDPROC
 4520
 4530
 4540DEF PROCselect_file_menu(icon%)
 4550IF $MenuBuff%(icon%)="" THEN ENDPROC
 4560create%=-1:path$=dirpath$+"."
 4570PROCclose_window(Ichandle%)
 4580$loadbuff%=$MenuBuff%(icon%)
 4590PROCreset_icon(Lhandle%,2)
 4600ENDPROC
 4610
 4620
 4630DEF FNcheck_file
 4640LOCAL n%,flg%
 4650REPEAT
 4660 IF $loadbuff%=$MenuBuff%(n%) THEN flg%=-1
 4670 n% +=1
 4680UNTIL n%=15 OR flg%=-1
 4690=flg%
 4700
 4710
 4720DEF PROCloadbox_windows(open%)
 4730IF open% THEN
 4740 Lhandle%=FNcentre_window(Lhandle%,"Y")
 4750 Mhandle%=FNrelative_window(Lhandle%,Mhandle%,358,0)
 4760 SYS"Wimp_SetCaretPosition",Lhandle%,2,46,-210,-1,-1
 4770ELSE
 4780 PROCclose_window(Lhandle%)
 4790 PROCclose_window(Mhandle%)
 4800 PROCclose_window(Ichandle%)
 4810ENDIF
 4820ENDPROC
 4830
 4840
 4850DEF PROCselect_IBicon
 4860IF block%!8=2 THEN
 4870 PROCallow_print_results
 4880 PROCshow_menu(menu%,!block%,9)
 4890ELSE
 4900 IF start% THEN
 4910  IF create% THEN
 4920   PROCopen_window(Drhandle%)
 4930  ELSE
 4940   PROCbuild_name_windowG
 4950   PROCloadbox_windows(0)
 4960  ENDIF
 4970 ENDIF
 4980ENDIF
 4990PROCclose_window(Ichandle%)
 5000PROCclose_window(Smhandle%)
 5010PROCclose_window(Ehandle%)
 5020PROCclose_window(Rhandle%)
 5030PROCclose_window(Thandle%)
 5040ENDPROC
 5050
 5060
 5070DEF PROCswitch_window(h%)
 5080LOCAL n%
 5090!block2%=handle%(3-h%):SYS"Wimp_GetWindowState",,block2%
 5100!block%=handle%(h%):SYS"Wimp_GetWindowInfo",,block%
 5110FOR n%=4 TO 24 STEP 4:block%!n%=block2%!n%:NEXT
 5120!block2%=handle%(h%):SYS"Wimp_DeleteWindow",,block2%
 5130SYS"Wimp_CreateWindow",,block%+4 TO handle%(h%)
 5140PROCopen_window(handle%(h%))
 5150ENDPROC
 5160
 5170
 5180DEF PROCselect_options(no%)
 5190LOCAL icon%,help%,reset%,svR%,n%:reset%=0:svR%=saveR%(no%)
 5200help%=Hlevel%(no%):notsavedO%=(path$<>""):icon%=block%!16
 5210IF alter%=0 THEN alter%=(icon%<>68 AND no%=0)
 5220CASE icon% OF
 5230 WHEN 2,3:PROCselect_operators(icon%-1,no%):reset%=(Owin%=0)
 5240 WHEN 6:Alevel%(no%)=FNinc_buffer(Chandle%,5,Alevel%(no%),level_buffA%,1,1,7,0):reset%=1
 5250       IF decimal%(no%)=1 AND Alevel%(no%)=5 THEN PROCset_dec_levels(no%)
 5260 WHEN 7:Alevel%(no%)=FNinc_buffer(Chandle%,5,Alevel%(no%),level_buffA%,1,1,7,-1):reset%=1
 5270 WHEN 9:Slevel%(no%)=FNinc_buffer(Chandle%,8,Slevel%(no%),level_buffS%,1,1,9,0):reset%=1
 5280        IF decimal%(no%)=1 AND Slevel%(no%)=5 THEN PROCset_dec_levels(no%)
 5290 WHEN 10:Slevel%(no%)=FNinc_buffer(Chandle%,8,Slevel%(no%),level_buffS%,1,1,9,-1):reset%=1
 5300 WHEN 17:no_quest%(no%)=FNinc_buffer(Chandle%,16,no_quest%(no%),Qbuff%,1,1,99,0)
 5310 WHEN 18:no_quest%(no%)=FNinc_buffer(Chandle%,16,no_quest%(no%),Qbuff%,1,1,99,-1)
 5320 WHEN 20:tries%(no%)=FNinc_buffer(Chandle%,19,tries%(no%),Tbuff%,1,1,3,0)
 5330 WHEN 21:tries%(no%)=FNinc_buffer(Chandle%,19,tries%(no%),Tbuff%,1,1,3,-1)
 5340 WHEN 23:timelim%(no%)=FNinc_buffer(Chandle%,22,timelim%(no%),Tmbuff%,1,1,30,0)
 5350 WHEN 24:timelim%(no%)=FNinc_buffer(Chandle%,22,timelim%(no%),Tmbuff%,1,1,30,-1)
 5360 WHEN 25:Notimer%(no%)=-FNicon_selected(Chandle%,25)
 5370         PROCshade_3icons(Chandle%,22,Notimer%(no%))
 5380 WHEN 32:Hlevel%(no%)=FNinc_buffer(Chandle%,31,Hlevel%(no%),Hbuff%,1,0,5,0)
 5390         PROCreset_help_level(no%)
 5400         IF force5%=0 THEN Helplev%=Hlevel%(no%)
 5410         IF Hlevel%(no%)=0 THEN PROCset_top_icon(2,0)
 5420 WHEN 33:Hlevel%(no%)=FNinc_buffer(Chandle%,31,Hlevel%(no%),Hbuff%,1,0,5,-1)
 5430         PROCreset_help_level(no%)
 5440         IF force5%=0 THEN Helplev%=Hlevel%(no%)
 5450         IF Hlevel%(no%)=1 THEN PROCset_top_icon(2,-1)
 5460 WHEN 34:force%(no%)=-FNicon_selected(Chandle%,34)
 5470 WHEN 38:MHlevel%(no%)=FNinc_buffer(Chandle%,37,MHlevel%(no%),MHbuff%,1,0,5,0)
 5480         PROCreset_help_level(no%)
 5490 WHEN 39:MHlevel%(NameNo%)=FNinc_buffer(Chandle%,37,MHlevel%(no%),MHbuff%,1,0,5,-1)
 5500         PROCreset_help_level(no%)
 5510 WHEN 28,29:mode%(no%)=icon%-28:PROCadjust_for_mode(no%):reset%=1
 5520 WHEN 42:calc%(no%)=-FNicon_selected(Chandle%,42)
 5530         PROCset_delete_icon(no%)
 5540         IF calc%(no%)=0 THEN PROCclose_window(CChandle%)
 5550 WHEN 43:REM PROCset_printer(no%)
 5560         PROCselect_icon(Chandle%,43,0)
 5570         $DemIc%="can print out sums."
 5580         Demhandle%=FNcentre_window(Demhandle%,"Y")
 5590 WHEN 44:score%(no%)=-FNselect_display(44,-score%(no%),4)
 5600 WHEN 46:PROCset_next(no%)
 5610 WHEN 47:stop%(no%)=-FNselect_display(47,-stop%(no%),6)
 5620 WHEN 48:colname%(no%)=-FNicon_selected(Chandle%,48)
 5630 WHEN 45:PROCset_estimate(no%)
 5640 WHEN 61:PROCset_keep_results(no%)
 5650 WHEN 49:PROCset_auto(no%)
 5660 WHEN 50:autohelp%(no%)=-FNicon_selected(Chandle%,50)
 5670         PROCset_autohelp(no%)
 5680 WHEN 51:PROCclose_window(Chandle%)
 5690         startOwn%=(startOwn%=1 AND game%>0):reset%=startOwn%
 5691         nextmess%=(Helplev%=5 AND game%>0)
 5700 WHEN 54:newlevR%(no%)=FNinc_buffer(Chandle%,53,newlevR%(no%),levRbuff%,1,1,10,0)
 5710 WHEN 55:newlevR%(no%)=FNinc_buffer(Chandle%,53,newlevR%(no%),levRbuff%,1,1,10,-1)
 5720 WHEN 58:newlevW%(no%)=-FNinc_buffer(Chandle%,57,-newlevW%(no%),levWbuff%,1,1,10,0)
 5730 WHEN 59:newlevW%(no%)=-FNinc_buffer(Chandle%,57,-newlevW%(no%),levWbuff%,1,1,10,-1)
 5740 WHEN 62:PROCset_decimal:reset%=(Owin%=0)
 5750 WHEN 63:ownsum%(no%)=-FNicon_selected(Chandle%,63)
 5760         PROCset_own_sum(no%):startOwn%=-(ownsum%(no%)=1 AND game%>0)
 5770         IF ownsum%(no%)=0 THEN PROCclose_window(Ohandle%):Owin%=0
 5780 WHEN 64:FOR n%=1 TO Ncount%:PROCset_new_name_levels(n%,0):NEXT
 5790         PROCclose_window(Chandle%)
 5800 WHEN 65:PROCset_new_name_levels(no%,0)
 5810         PROCset_preferences(no%)
 5820 WHEN 66:PROCclose_window(Chandle%)
 5830 WHEN 67:PROCselect_icon(Chandle%,67,0)
 5840         $DemIc%="includes speech."
 5850         Demhandle%=FNcentre_window(Demhandle%,"Y")
 5860 WHEN 68:IF alter% THEN PROCset_new_name_levels(0,43)
 5870         PROCclose_window(Chandle%)
 5880ENDCASE
 5890IF game%>0 AND icon%<>51 AND icon%<63 OR startOwn%=-1 THEN
 5900 IF reset% THEN
 5910  IF ownsum%(NameNo%)=0 THEN PROCset_sum ELSE PROCset_up_sum_window
 5920 ENDIF
 5930
 5940 IF (icon%=32 OR icon%=33) AND mode%(no%)=1 THEN
 5950  PROCchange_help_display(help%)
 5960  IF game%>0 THEN PROCremove_message
 5970 ENDIF
 5980
 5990 IF (icon%=45 OR icon%=48) AND Owin%=0 THEN SYS"Wimp_ForceRedraw",handle%(game%),0,-844,1280,-150
 6000ENDIF
 6010ENDPROC
 6020
 6030
 6040DEF PROCset_delete_icon(no%)
 6050LOCAL n%
 6060FOR n%=1 TO 2:PROCdelete_icon(handle%(n%),3,(calc%(no%)=0)):NEXT
 6070IF game% THEN SYS"Wimp_ForceRedraw",handle%(game%),450,-150,600,0
 6080ENDPROC
 6090
 6100
 6110DEF PROCset_next(no%)
 6120next%(no%)=-FNicon_selected(Chandle%,46)
 6130PROCset_top_icon(5,(next%(no%)=1 AND try%>0))
 6140IF marked%=-1 AND next%(no%)=0 THEN
 6150 correct%=0
 6160 IF quest%<no_quest%(no%) THEN PROCset_sum ELSE PROCgame_end
 6170ENDIF
 6180ENDPROC
 6190
 6200
 6210DEF PROCset_keep_results(no%)
 6220saveR%(no%)=-FNicon_selected(Chandle%,61)
 6230IF svR%=saveR%(no%) THEN ENDPROC
 6240IF saveR%(no%)=0 AND newR%=0 THEN PROCend_levels
 6250newR%=saveR%(no%)
 6260ENDPROC
 6270
 6280
 6290DEF PROCset_estimate(no%)
 6300estimate%(no%)=-FNicon_selected(Chandle%,45)
 6310IF estimate%(no%)=0 AND SCformat%=1 THEN sum%=0:Estval%=0:dig3$()=""
 6320IF sum%=0 AND force5%=0 THEN SCformat%=2-estimate%(no%):message$(1)=""
 6330IF game%>0 THEN PROCshade_icon(handle%(game%),2,(SCformat%=1))
 6340ENDPROC
 6350
 6360
 6370DEF PROCset_decimal
 6380decimal%(no%)=-FNicon_selected(Chandle%,62)
 6390IF decimal%(no%) THEN PROCset_dec_levels(no%)
 6400IF FNwindow_open(Ohandle%) THEN
 6410 $Osum1buff%=FNset_dec($Osum1buff%):$Osum2buff%=FNset_dec($Osum2buff%)
 6420 PROCreset_icon(Ohandle%,3):PROCreset_icon(Ohandle%,4)
 6430ENDIF
 6440ENDPROC
 6450
 6460
 6470DEF PROCset_printer(no%)
 6480printer%(no%)=-FNselect_display(43,-printer%(no%),7)
 6490PROCshade_icon(SChandle%,11,(printer%(no%)=0 OR driver%=0 OR enprint%=0))
 6500PROCset_top_icon(7,(printer%(no%)=1 AND driver%=-1 AND enprint%=-1))
 6510ENDPROC
 6520
 6530
 6540DEF PROCshade_3icons(whandle%,ihandle%,sh%)
 6550LOCAL n%
 6560FOR n%=ihandle% TO ihandle%+2
 6570 PROCshade_icon(whandle%,n%,sh%)
 6580NEXT
 6590ENDPROC
 6600
 6610
 6620DEF PROCset_auto(no%)
 6630LOCAL n%
 6640auto%(no%)=-FNicon_selected(Chandle%,49)
 6650PROCshade_3icons(Chandle%,53,(auto%(no%)=0))
 6660PROCshade_3icons(Chandle%,57,(auto%(no%)=0))
 6670ENDPROC
 6680
 6690
 6700DEF PROCset_autohelp(no%)
 6710LOCAL n%
 6720PROCshade_3icons(Chandle%,37,(mode%(no%)=0 OR autohelp%(no%)=0))
 6730PROCreset_help_level(no%)
 6740ENDPROC
 6750
 6760
 6770DEF PROCreset_help_level(no%)
 6780IF autohelp%(no%) THEN
 6790 IF Hlevel%(no%)<MHlevel%(no%) THEN
 6800  Hlevel%(no%)=MHlevel%(no%):$Hbuff%=STR$MHlevel%(no%)
 6810  Helplev%=Hlevel%(no%)
 6820  PROCreset_icon(Chandle%,31)
 6830 ENDIF
 6840ELSE
 6850 MHlevel%(no%)=Hlevel%(no%):$MHbuff%=STR$Hlevel%(no%)
 6860ENDIF
 6870ENDPROC
 6880
 6890
 6900DEF FNselect_display(icon%,var%,topicon%)
 6910var%=FNicon_selected(Chandle%,icon%)
 6920PROCset_top_icon(topicon%,var%)
 6930=var%
 6940
 6950
 6960DEF PROCselect_operators(icon%,no%)
 6970LOCAL PrevOp%:PrevOp%=operator%(no%)
 6980operator%(no%)=-FNicon_selected(Chandle%,2)-2*FNicon_selected(Chandle%,3)
 6990IF operator%(no%)=0 THEN PROCselect_icon(Chandle%,2,1)
 7000BothOp%(no%)=(operator%(no%)=3)
 7010
 7020IF BothOp%(no%)=-1 OR operator%(no%)=0 THEN
 7030 IF ownsum%(no%)=0 THEN operator%(no%)=1 ELSE operator%(no%)=PrevOp%
 7040ENDIF
 7050IF ownsum%(no%)=0 THEN PROCshade_op_levels(no%) ELSE PROCset_own_sum_operators(no%)
 7060PROCset_carry_variableY
 7070
 7080IF FNwindow_open(Ohandle%) THEN
 7090 IF operator%(no%)=1 THEN sgn$="+" ELSE sgn$="-"
 7100 $Osgnbuff%=sgn$:PROCreset_icon(Ohandle%,5)
 7110ENDIF
 7120
 7130IF game%>0 THEN
 7140 PROCclose_window(handle%(game%))
 7150 IF game%>0 THEN game%=operator%(no%)
 7160 IF Owin%=0 OR PrevOp%=operator%(no%) THEN PROCopen_window(handle%(game%))
 7170 IF FNwindow_open(Ohandle%) THEN PROCopen_window(Ohandle%)
 7180 IF FNwindow_open(Chandle%) THEN PROCopen_window(Chandle%)
 7190ENDIF
 7200ENDPROC
 7210
 7220
 7230DEF PROCset_own_sum_operators(no%)
 7240PROCshade_icon(Ohandle%,7+operator%(no%),0)
 7250PROCshade_icon(Ohandle%,10-operator%(no%),(BothOp%(no%)=0))
 7260PROCselect_icon(Ohandle%,10-operator%(no%),0)
 7270PROCselect_icon(Ohandle%,7+operator%(no%),-1)
 7280ownOp%=operator%(no%)
 7290ENDPROC
 7300
 7310
 7320DEF PROCadjust_for_mode(no%)
 7330LOCAL n%
 7340PROCshade_3icons(Chandle%,31,(mode%(no%)=0))
 7350PROCshade_3icons(Chandle%,37,(mode%(no%)=0 OR autohelp%(no%)=0))
 7360PROCshade_icon(Chandle%,50,(mode%(no%)=0))
 7370PROCshade_icon(Chandle%,34,(mode%(no%)=0))
 7380IF mode%(no%)=0 THEN
 7390 autohelp%(no%)=0:PROCselect_icon(Chandle%,50,0)
 7400 force%(no%)=0:PROCselect_icon(Chandle%,34,0)
 7410 message$()=""
 7420ENDIF
 7430ENDPROC
 7440
 7450
 7460DEF PROCreset_game
 7470LOCAL n%,m%
 7480quest%=0:try%=0:CorrectAns%=0:sesstime%=TIME:stopped%=0:Pcount%=-1:AnumRW%=0:SnumRW%=0:force5%=0
 7490IF ownsum%(NameNo%)=0 THEN
 7500 PROCset_sum
 7510ELSE
 7520 IF decimal%(NameNo%)=0 THEN $Osum1buff%="1000":$Osum2buff%="100" ELSE $Osum1buff%="10.00":$Osum2buff%="1.00"
 7530 PROCset_up_sum_window
 7540ENDIF
 7550ENDPROC
 7560
 7570
 7580DEF PROCset_sum
 7590dig1$()="":dig2$()="":dig3$()="":carry$()="":car_dig%()=(operator%(NameNo%)=2):strike$()="":nextdig%=0:rubdig%=-1:message$()="":initx%=0:inity%=0:initnum%=0:nexterr%=anslim%:Cdone%()=0:STdone%()=0:correct%=0
 7600sum%=0:drag%=0:rubber%=0:marked%=0:double%=0:Psave%=0:nextcheck%=0
 7610carry%=0:strike%=0:reduce%=0:Bstep%=0:SCformat%=2-estimate%(NameNo%)
 7620IF force5%=-1 THEN SCformat%=2 ELSE try%=0
 7630nextmess%=-(Helplev%=5 AND mode%(NameNo%)=1 AND SCformat%=2)
 7640PROCset_top_icon(0,0)
 7650PROCset_top_icon(1,-1)
 7660PROCshade_item(menu%,2,1)
 7670
 7680IF force5%<>-1 THEN
 7690 IF BothOp%(NameNo%) THEN
 7700  IF ownsum%(NameNo%)=0 THEN
 7710   PrevOp%=operator%(NameNo%)
 7720   operator%(NameNo%)=2+(quest%+1<=no_quest%(NameNo%)/2+.5)
 7730  ENDIF
 7740  game%=operator%(NameNo%):Helplev%=Hlevel%(NameNo%)
 7750  PROCset_carry_variableY
 7760  IF PrevOp%<>game% THEN
 7770   PROCclose_window(handle%(PrevOp%))
 7780   PROCswitch_window(game%)
 7790   IF FNwindow_open(Chandle%) THEN PROCopen_window(Chandle%)
 7800  ENDIF
 7810 ENDIF
 7820 IF ownsum%(NameNo%)=0 THEN
 7830  IF game%=1 THEN PROCmake_add(Alevel%(NameNo%)) ELSE PROCmake_sub(Slevel%(NameNo%))
 7840 ENDIF
 7850ENDIF
 7860
 7870PROCdigits(num1%,dig1$())
 7880PROCdigits(num2%,dig2$())
 7890PROCdigits(ans%,answer$())
 7900PROCcarry_positions:PrevOp%=0
 7910PROCset_top_icon(5,0)
 7920PROCset_top_icon(2,(SCformat%=2 AND mode%(NameNo%)=1 AND Helplev%>0))
 7930PROCclose_window(P2handle%)
 7940SYS"Wimp_ForceRedraw",handle%(game%),0,-675,1280,-150
 7950ENDPROC
 7960
 7970
 7980DEF PROCset_carry_variableY
 7990IF operator%(NameNo%)=1 THEN ycar%=y3%-44 ELSE ycar%=y1%+48
 8000ENDPROC
 8010
 8020
 8030DEF PROCplace_estimate
 8040LOCAL sumx1%,sumx2%,st2%,x%,y%,symbol$,power%:y%=-596
 8050IF operator%(NameNo%)=1 THEN symbol$="plus" ELSE symbol$="minus"
 8060st2%=825-75*LEN STR$ num2%:symb%=st2%-75
 8070sumx1%=symb%-373:sumx2%=452
 8080SYS"Wimp_SetColour",7
 8090FOR pos%=0 TO 4
 8100 x1%=FNprintdigx(sumx1%,pos%)
 8110 x2%=FNprintdigx(sumx2%,pos%)
 8120 IF dig1$(pos%)<>"" THEN SYS"OS_SpriteOp",&134,sarea%,"n"+dig1$(pos%),ox%+x1%,oy%+y%,0,scale27%,trans%
 8130 IF dig2$(pos%)<>"" THEN SYS"OS_SpriteOp",&134,sarea%,"n"+dig2$(pos%),ox%+x2%,oy%+y%,0,scale27%,trans%
 8140
 8150 IF colname%(NameNo%) THEN
 8160  x%=FNprintdigx(902,pos%)+19+14*(pos%=4 AND decimal%(NameNo%)=0)
 8170  power%=pos%+2*(decimal%(NameNo%)=1)
 8180  SYS"OS_SpriteOp",&134,sarea%,"dig"+STR$power%,ox%+x%,oy%+y%+88,0,scale%,trans%
 8190 ENDIF
 8200NEXT
 8210IF decimal%(NameNo%) THEN
 8220 SYS"OS_SpriteOp",&134,sarea%,"decpoint",ox%+FNprintdigx(sumx1%,2),oy%+y%,8,scale%,trans%
 8230 SYS"OS_SpriteOp",&134,sarea%,"decpoint",ox%+FNprintdigx(sumx2%,2),oy%+y%,8,scale%,trans%
 8240 SYS"OS_SpriteOp",&134,sarea%,"decpoint",ox%+FNprintdigx(902,2),oy%+y%,8,scale%,trans%
 8250ENDIF
 8260SYS"OS_SpriteOp",&134,sarea%,symbol$,ox%+symb%+2,oy%+y%,0,scale%,trans%
 8270SYS"OS_SpriteOp",&134,sarea%,"equals",ox%+827,oy%+y%,0,scale%,trans%
 8280SYS"OS_SpriteOp",&134,sarea%,"equals2",ox%+1052,oy%+y%+150,0,scale%,trans%
 8290RECTANGLE FILL ox%+900,oy%+y%-12,375,8
 8300ENDPROC
 8310
 8320
 8330DEF PROCset_format2
 8340EstVal%=sum%:sum%=0:dig3$()="":SCformat%=2
 8350PROCshade_icon(handle%(game%),2,0)
 8360IF Helplev%=5 THEN nextmess%=-1
 8370SYS"Wimp_ForceRedraw",handle%(game%),0,-675,1280,-150
 8380ENDPROC
 8390
 8400
 8410DEF PROCicon_selection
 8420LOCAL icon%:icon%=block%!16
 8430IF Owin%=-1 AND icon%<>6 THEN ENDPROC
 8440CASE icon% OF
 8450 WHEN 0:IF SCformat%=1 THEN PROCset_format2 ELSE IF correct%=0 AND nextcheck%=0 THEN PROCcheck_sum
 8460 WHEN 1:IF rubber%=0 THEN PROCset_up_rub_out ELSE PROCreplace_number(10):rubber%=0:*POINTER 1
 8470 WHEN 2:PROCmessage("?")
 8480 WHEN 3:IF FNwindow_open(Chandle%)=0 THEN $CCbuff%="0":CCsum=0:CCnum=0:CCop%=0:CCprev%=0:PROCreset_icon(CChandle%,17)
 8490        CChandle%=FNcentre_window(CChandle%,"Y")
 8500        SYS"Wimp_SetCaretPosition",CChandle%,-1,0,0,0,-1
 8510 WHEN 4:PROCshow_score("")
 8520 WHEN 5:IF printer%(NameNo%)=1 AND driver%=-1 AND correct%=0 AND Psave%=0 THEN PROCsave_sum("S")
 8530        force5%=0
 8540        IF marked%=0 THEN quest% +=1
 8550        IF quest%<no_quest%(NameNo%) THEN
 8560         IF auto%(NameNo%)=1 AND ownsum%(NameNo%)=0 THEN PROCnew_auto_level(correct%)
 8570         IF ownsum%(NameNo%)=0 THEN PROCset_sum ELSE PROCset_up_sum_window
 8580        ELSE
 8590         PROCgame_end
 8600        ENDIF
 8610 WHEN 6:SThandle%=FNrelative_window(handle%(game%),SThandle%,450,556)
 8620 WHEN 7:IF printer%(NameNo%)=1 AND Psave%=0 THEN PROCsave_sum("S"):Phandle%=FNrelative_window(handle%(game%),Phandle%,900,406)
 8630 WHEN 8,9,10,11,12,13,14,15,16,17,38:IF double%=-1 THEN
 8640                        IF mode%(NameNo%)=1 THEN PROCplace_double_click
 8650                       ELSE
 8660                        IF drag% AND initnum%=icon%-8 THEN PROCreplace_number(icon%-8) ELSE PROCselect_digit(icon%-8)
 8670                       ENDIF
 8680 WHEN 18,19,20,21,22,28,29,30,31,32:IF drag% THEN
 8690                      IF rubber%=0 THEN PROCplace_number(icon%) ELSE PROCrub_out(icon%)
 8700                     ELSE
 8710                      PROCremove_digit(icon%)
 8720                     ENDIF
 8730 WHEN 23,24,25,26:IF operator%(NameNo%)=1 THEN PROCcarry_pos(icon%-22) ELSE PROCstrike_through(icon%-22)
 8740 WHEN 33,34,35,36,37:IF operator%(NameNo%)=2 THEN PROCcarry_pos(icon%-33)
 8750 WHEN 27:IF SCformat%=1 THEN PROCset_format2
 8760ENDCASE
 8770ENDPROC
 8780
 8790
 8800DEF PROCcarry_pos(icon%)
 8810IF dragval%=30 OR SCformat%=1 THEN ENDPROC
 8820IF drag% THEN
 8830 IF rubber%=0 THEN PROCplace_carry(icon%) ELSE PROCrub_out_carry(icon%)
 8840ELSE
 8850 PROCremove_carry(icon%)
 8860ENDIF
 8870ENDPROC
 8880
 8890
 8900DEF PROCstrike_through(icon%)
 8910IF drag% THEN
 8920 IF double%=0 AND strike$(icon%)="" AND rubber%=0 THEN PROCplace_strike(icon%) ELSE IF rubber% THEN PROCrub_out_strike(icon%)
 8930ELSE
 8940 PROCremove_strike(icon%)
 8950ENDIF
 8960ENDPROC
 8970
 8980
 8990DEF PROCselect_digit(num%)
 9000LOCAL x%,y%
 9010IF rubber% THEN rubber%=0:*POINTER
 9020IF mode%(NameNo%) THEN double%=-1
 9030IF drag% THEN SYS"Wimp_ForceRedraw",handle%(game%),dragx%,dragy%,dragx%+75,dragy%+75
 9040dragval%=num%:nextcheck%=0
 9050PROCpick_up_number
 9060ENDPROC
 9070
 9080
 9090DEF PROCremove_digit(icon%)
 9100LOCAL x%,Y3%,Mode%,flg%,dig%:rubber%=0
 9110Mode%=-(mode%(NameNo%)=1 AND SCformat%=2)
 9120
 9130IF SCformat%=2 THEN
 9140 dig%=icon%-18:Y3%=y3%
 9150 x%=FNdigx(dig%):flg%=(icon%>26)
 9160ELSE
 9170 dig%=icon%-28:Y3%=-596:flg%=(icon%<28)
 9180 x%=FNprintdigx(902,dig%)
 9190ENDIF
 9200IF flg% THEN ENDPROC
 9210
 9220IF dig3$(dig%)="" THEN ENDPROC
 9230dragval%=VAL dig3$(dig%):dig3$(dig%)=""
 9240sum% -=dragval%*10^dig%
 9250SYS"Wimp_ForceRedraw",handle%(game%),x%,Y3%,x%+75,Y3%+75
 9260IF Mode%=1 AND dig%<nextdig% THEN PROCdelete_current_box(dig%)
 9270PROCpick_up_number
 9280IF message$(0)<>"" THEN PROCremove_message
 9290nextmess%=-(Helplev%=5 AND Mode%=1)
 9300IF sum%=0 THEN PROCset_top_icon(0,0)
 9310ENDPROC
 9320
 9330
 9340DEF PROCdelete_current_box(dig%)
 9350LOCAL x%,Y3%,h%,olddig%
 9360REM Clears box in next position.
 9370IF rubdig%>-1 AND dig%<rubdig% THEN olddig%=rubdig% ELSE IF rubdig%=-1 THEN  olddig%=nextdig%
 9380IF olddig%=0 THEN ENDPROC
 9390
 9400IF operator%(NameNo%)=2 AND carry%=-1 AND olddig%<>rubdig% AND Helplev%>2 THEN
 9410 IF strike%=0 THEN
 9420  PROCcarry_redraw(olddig%,Bstep%)
 9430 ELSE
 9440  PROCstrike_redraw(olddig%,Bstep%)
 9450 ENDIF
 9460ELSE
 9470 IF operator%(NameNo%)=1 THEN PROCdig_carry_redraw(olddig%) ELSE PROCdigit_redraw(olddig%)
 9480ENDIF
 9490rubdig%=dig%
 9500ENDPROC
 9510
 9520
 9530DEF PROCpick_up_number
 9540LOCAL w%,h%
 9550IF rubber%=0 THEN w%=18-3*(dragval%=30):h%=22 ELSE w%=6:h%=12
 9560x%=!block%-w%:y%=block%!4-h%
 9570PROCwork_area_origin(handle%(game%),ox%,oy%)
 9580dragx%=x%+4-ox%:dragy%=y%+8-oy%:drag%=-1
 9590initx%=dragx%:inity%=dragy%:initnum%=dragval%
 9600PROCmove_number
 9610ENDPROC
 9620
 9630
 9640DEF PROCrub_out_strike(dig%)
 9650LOCAL x%,y%
 9660IF strike$(dig%)="" THEN ENDPROC
 9670strike$(dig%)=""
 9680PROCstrike_redraw(dig%,0)
 9690ENDPROC
 9700
 9710
 9720DEF PROCremove_strike(dig%)
 9730IF strike$(dig%)="" THEN ENDPROC
 9740PROCrub_out_strike(dig%)
 9750dragval%=30
 9760PROCpick_up_number
 9770ENDPROC
 9780
 9790
 9800DEF PROCset_up_rub_out
 9810IF drag% THEN SYS"Wimp_ForceRedraw",handle%(game%),dragx%,dragy%,dragx%+75,dragy%+75
 9820dragval%=10:rubber%=-1
 9830*POINTER 0
 9840PROCpick_up_number
 9850ENDPROC
 9860
 9870
 9880DEF PROCrub_out(icon%)
 9890LOCAL x%,Y3%,Mode%,flg%,dig%
 9900Mode%=-(mode%(NameNo%)=1 AND SCformat%=2)
 9910
 9920IF SCformat%=2 THEN
 9930 dig%=icon%-18:flg%=(icon%>26)
 9940 Y3%=y3%:x%=FNdigx(dig%)
 9950ELSE
 9960 dig%=icon%-28:flg%=(icon%<28)
 9970 Y3%=-596:x%=FNprintdigx(902,dig%)
 9980ENDIF
 9990IF flg% THEN ENDPROC
10000IF dig3$(dig%)="" THEN ENDPROC
10010
10020sum% -=VALdig3$(dig%)*10^dig%
10030dig3$(dig%)="":nextmess%=-(Helplev%=5 AND Mode%=-1)
10040SYS"Wimp_ForceRedraw",handle%(game%),x%,Y3%,x%+75,Y3%+75
10050IF Mode%=1 AND dig%<nextdig% THEN PROCdelete_current_box(dig%)
10060IF sum%=0 THEN PROCset_top_icon(0,0)
10070IF message$(0)<>"" THEN PROCremove_message
10080nextmess%=-(Helplev%=5 AND Mode%=1)
10090ENDPROC
10100
10110
10120DEF FNcheck_rubout
10130LOCAL n%:n%=rubdig%
10140REPEAT
10150 n% +=1
10160UNTIL dig3$(n%)="" OR n%=nextdig% OR n%=anslim%
10170IF dig3$(n%)="" AND n%<nextdig% THEN =n% ELSE =-1
10180
10190
10200DEF PROCplace_carry(pos%)
10210LOCAL x%,x2%,h%,valid%,digcase%:double%=0:digcase%=0
10220
10230valid%=(pos%=nextdig%+Bstep% AND carry%=-1 AND strike%=0 OR Cdone%(pos%)=-1 OR Helplev%<=2 AND pos%<=anslim% OR try%>0)
10240IF mode%(NameNo%)=1 AND valid%=0 THEN PROCmessage("pl"):ENDPROC
10250IF mode%(NameNo%)=1 AND Helplev%=5 AND FNcheck_dig_val(pos%,"c")=0 THEN PROCmessage("ck"):ENDPROC
10260IF mode%(NameNo%)=0 AND (pos%>anslim% AND operator%(NameNo%)=1 OR pos%>FNquest_limit AND operator%(NameNo%)=2) THEN ENDPROC
10270
10280IF message$(1)<>"" AND mode%(NameNo%)=1 AND NOT(Helplev%=5 AND Cdone%(pos%)=-1) THEN PROCremove_message
10290nextmess%=-(Helplev%=5 AND nextdig%<=anslim% AND mode%(NameNo%)=1 AND (Cdone%(pos%)=0 OR Cdone%(pos%)=-1 AND FNcarry_2dig(pos%)=-1))
10300
10310SYS"Wimp_ForceRedraw",handle%(game%),dragx%,dragy%,dragx%+75,dragy%+75
10320
10330IF operator%(NameNo%)=2 AND LEN carry$(pos%)=1 AND dragval%=1 AND FNcarry_2dig(pos%)=-1 THEN
10340 carry$(pos%)="1"+carry$(pos%)
10350 IF Cdone%(pos%)=-1 AND pos%=nextdig%+Bstep% THEN Cdone%(pos%)=0
10360ELSE
10370 carry$(pos%)=STR$dragval%
10380ENDIF
10390
10400drag%=0
10410PROCcarry_redraw(pos%,0)
10420IF Helplev%=2 AND st_dig%(pos%)=1 AND strike$(pos%)="" OR Cdone%(pos%)=-1 THEN ENDPROC
10430Cdone%(pos%)=-1
10440
10450IF mode%(NameNo%)=1 AND operator%(NameNo%)=2 THEN
10460 IF pos%=nextdig% THEN reduce%=0:carry%=0:REM Triggers next digit
10470 IF FNcarry_2dig(pos%)=-1 AND LENcarry$(pos%)=1 AND Helplev%=2 AND pos%=nextdig% THEN
10480  IF strike$(pos%+1)="/" THEN digcase%=-1 ELSE PROCcount_steps:pos%=nextdig%+Bstep%+1
10490  Bstep% +=1:reduce%=-1
10500 ENDIF
10510ENDIF
10520
10530IF mode%(NameNo%)=1 AND pos%=nextdig%+Bstep% THEN
10540 REM Cdone%(pos%)=-1
10550 IF operator%(NameNo%)=1 THEN
10560  IF Helplev%>2 THEN PROCdig_carry_redraw(nextdig%)
10570  IF pos%=nextdig% THEN carry%=0
10580 ELSE
10590  IF reduce%=-1 THEN
10600   reduce%=digcase%:Bstep% -=1
10610   IF strike$(nextdig%+Bstep%)="" AND st_dig%(nextdig%+Bstep%)=1 THEN
10620    strike%=-1:carry%=-1
10630    IF Helplev%>2 THEN PROCstrike_redraw(nextdig%,Bstep%)
10640   ELSE
10650    reduce%=0
10660    IF Bstep%=0 AND VALcarry$(nextdig%)=car_dig%(nextdig%) THEN
10670     IF Helplev%>2 THEN PROCdigit_redraw(nextdig%):carry%=0
10680    ELSE
10690     IF Helplev%>2 THEN PROCcarry_redraw(nextdig%,Bstep%)
10700    ENDIF
10710   ENDIF
10720  ELSE
10730   IF Helplev%>2 THEN PROCdigit_redraw(nextdig%)
10740   carry%=0:reduce%=0:Bstep%=0
10750  ENDIF
10760 ENDIF
10770ENDIF
10780ENDPROC
10790
10800
10810DEF FNcarry_2dig(pos%)=car_dig%(pos%)>9 AND car_dig%(pos%) MOD 10<>VAL dig1$(pos%)
10820
10830
10840DEF PROCcarry_posx(pos%,RETURN x%,RETURN h%)
10850IF operator%(NameNo%)=1 THEN
10860 x%=FNdigx(pos%)+37:h%=26
10870ELSE
10880 x%=FNdigx(pos%)-14:h%=35
10890ENDIF
10900ENDPROC
10910
10920
10930DEF PROCremove_carry(pos%)
10940LOCAL x%,h%
10950IF carry$(pos%)="" THEN ENDPROC
10960PROCsplit_carry(pos%,dragval%)
10970PROCcarry_redraw(pos%,0)
10980rubber%=0
10990SYS"Wimp_GetPointerInfo",,block%
11000PROCpick_up_number
11010PROCmove_number
11020ENDPROC
11030
11040
11050DEF PROCsplit_carry(pos%,RETURN lift%)
11060LOCAL xco%,l$,r$:xco%=!block%
11070IF LEN carry$(pos%)>1 THEN
11080 PROCwork_area_origin(handle%(game%),ox%,oy%)
11090 l$=LEFT$(carry$(pos%),1):r$=RIGHT$(carry$(pos%),1)
11100 IF xco%-ox%<FNdigx(pos%)+14 THEN carry$(pos%)=r$:lift%=VALl$ ELSE carry$(pos%)=l$:lift%=VALr$
11110ELSE
11120 lift%=VALcarry$(pos%)
11130 carry$(pos%)=""
11140ENDIF
11150ENDPROC
11160
11170
11180DEF PROCrub_out_carry(pos%)
11190LOCAL x%,h%,xco%,l%:xco%=!block%
11200IF carry$(pos%)="" THEN ENDPROC
11210PROCsplit_carry(pos%,l%)
11220PROCcarry_posx(pos%,x%,h%)
11230SYS"Wimp_ForceRedraw",handle%(game%),x%,ycar%,x%+42,ycar%+h%
11240ENDPROC
11250
11260
11270DEF PROCgrid
11280LOCAL x%,y%
11290SYS"Wimp_SetColour",15
11300FOR x%=0 TO 1275 STEP 75
11310 MOVE ox%+x%,oy%-900:DRAW ox%+x%,oy%-150
11320NEXT
11330FOR y%=-900 TO -150 STEP 75
11340 MOVE ox%,oy%+y%:DRAW ox%+1275,oy%+y%
11350NEXT
11360MOVE ox%,oy%:DRAW ox%+1275,oy%
11370
11380SYS"OS_SpriteOp",&134,sarea%,"numbers",ox%+75,oy%-825,0,scale27%,trans%
11390IF operator%(NameNo%)=2 THEN SYS"OS_SpriteOp",&134,sarea%,"strike",ox%+900,oy%-825,0,scale27%,trans%
11400ENDPROC
11410
11420
11430DEF PROCsum_parts
11440LOCAL x%,d%,dig$,shift%,x1%,symbol%,limQ%,lim%,level%
11450anslim%=FNanswer_limit:limQ%=FNquest_limit
11460symbol%=FNdigx(limQ%)-75
11470
11480SYS"Wimp_SetColour",7
11490IF operator%(NameNo%)=1 THEN x%=FNdigx(anslim%) ELSE x%=FNdigx(limQ%)
11500RECTANGLE FILL ox%+x%,oy%+y3%+63,450-x%,8
11510RECTANGLE FILL ox%+x%,oy%+y3%-12,450-x%,8
11520
11530IF operator%(NameNo%)=1 THEN
11540 SYS"OS_SpriteOp",&134,sarea%,"plus",ox%+symbol%,oy%+y2%,0,scale%,trans%
11550ELSE
11560 SYS"OS_SpriteOp",&134,sarea%,"minus",ox%+symbol%,oy%+y2%,0,scale%,trans%
11570ENDIF
11580
11590IF colname%(NameNo%) THEN
11600 IF operator%(NameNo%)=1 THEN lim%=anslim% ELSE lim%=limQ%
11610 FOR d%=0 TO lim%
11620  x%=FNdigx(d%)+19+14*(d%=4 AND decimal%(NameNo%)=0)
11630  power%=d%+2*(decimal%(NameNo%)=1)
11640  SYS"OS_SpriteOp",&134,sarea%,"dig"+STR$power%,ox%+x%,oy%+y0%,0,scale%,trans%
11650 NEXT
11660ENDIF
11670
11680ENDPROC
11690
11700
11710DEF FNdigx(d%)=77+75*(4-d%)
11720
11730
11740DEF PROCsum_numbers
11750LOCAL d%,x%,y%
11760FOR d%=0 TO 4
11770 x%=FNdigx(d%)
11780 IF dig1$(d%)<>"" THEN SYS"OS_SpriteOp",&134,sarea%,"n"+dig1$(d%),ox%+x%+2,oy%+y1%,0,scale27%,trans%
11790 IF dig2$(d%)<>"" THEN SYS"OS_SpriteOp",&134,sarea%,"n"+dig2$(d%),ox%+x%+2,oy%+y2%,0,scale27%,trans%
11800 IF dig3$(d%)<>"" THEN SYS"OS_SpriteOp",&134,sarea%,"move"+dig3$(d%),ox%+x%+19,oy%+y3%+12,8,scale27%,trans%
11810
11820 IF operator%(NameNo%)=1 THEN
11830  IF carry$(d%)<>"" THEN SYS"OS_SpriteOp",&134,sarea%,"carry"+carry$(d%),ox%+x%+37,oy%+ycar%,0,scale%,trans%
11840 ELSE
11850  IF strike$(d%)="/" THEN SYS"OS_SpriteOp",&134,sarea%,"move30",ox%+x%+16,oy%+y1%+15,8,scale27%,trans%
11860  IF d%>0 THEN
11870    IF carry$(d%-1)<>"" THEN PROCprint_carry_dig(FNdigx(d%-1),d%-1)
11880    IF d%=4 AND carry$(d%)<>"" THEN PROCprint_carry_dig(FNdigx(d%),d%)
11890  ENDIF
11900 ENDIF
11910NEXT
11920
11930IF decimal%(NameNo%) THEN
11940 FOR y%=y1% TO y3% STEP -75
11950 SYS"OS_SpriteOp",&134,sarea%,"decpoint",ox%+FNdigx(2)+4,oy%+y%,8,scale%,trans%
11960 NEXT
11970ENDIF
11980ENDPROC
11990
12000
12010DEF PROCsum_numbers_est
12020LOCAL d%,x%
12030FOR d%=0 TO 4
12040 x%=FNprintdigx(902,d%)
12050 IF dig3$(d%)<>"" THEN SYS"OS_SpriteOp",&134,sarea%,"move"+dig3$(d%),ox%+x%+19,oy%-584,8,scale27%,trans%
12060NEXT
12070ENDPROC
12080
12090
12100DEF PROCprint_carry_dig(x%,d%)
12110LOCAL n$
12120IF LEN carry$(d%)=1 THEN
12130 SYS"OS_SpriteOp",&134,sarea%,"carry"+carry$(d%),ox%+x%-5,oy%+ycar%+4,8,scale%,trans%
12140ELSE
12150 n$=RIGHT$(carry$(d%),1)
12160 SYS"OS_SpriteOp",&134,sarea%,"carry1",ox%+x%-12,oy%+ycar%+4,8,scale%,trans%
12170 SYS"OS_SpriteOp",&134,sarea%,"carry"+n$,ox%+x%,oy%+ycar%+4,8,scale%,trans%
12180ENDIF
12190ENDPROC
12200
12210
12220DEF PROCmake_add(level%)
12230LOCAL f%,s%
12240CASE level% OF
12250 WHEN 1:REPEAT
12260         f%=RND(80)+10:s%=RND(10)-1
12270        UNTIL f%+s%<INT((f%+10)/10)*10
12280 WHEN 2:REPEAT
12290         f%=RND(80)+10:s%=RND(80)+10
12300        UNTIL ((INT((f%+10)/10)*10)+(INT(s%/10)*10)>(f%+s%)) AND (f%+s%)<100
12310 WHEN 3:f%=RND(80)+10:s%=RND(9)
12320 WHEN 4:REPEAT
12330         f%=RND(80)+10:s%=RND(80)+10
12340        UNTIL f%+s%<100
12350 WHEN 5:f%=RND(80)+10:s%=RND(80)+10
12360 WHEN 6:f%=RND(800)+100:s%=RND(800)+100
12370 WHEN 7:f%=RND(8000)+100:s%=RND(8000)+100
12380ENDCASE
12390IF s%=0 THEN
12400 s%=1
12410 IF f% MOD 10=9 THEN f% -=1
12420ENDIF
12430num1%=f%:num2%=s%:ans%=f%+s%
12440ENDPROC
12450
12460
12470DEF PROCresults_sum
12480LOCAL st$,op$,down%,num1$,num2$,ans$,fill$,fill2$
12490down%=1-(newR%=1):Rcnt% +=down%:notsavedR%=-1:newR%=0
12500IF decimal%(NameNo%) THEN
12510 num1$=FNinsert_point(STR$num1%)
12520 num2$=FNinsert_point(STR$num2%)
12530 ans$=FNinsert_point(STR$ans%)
12540ELSE
12550 num1$=STR$num1%:num2$=STR$num2%:ans$=STR$ans%
12560ENDIF
12570
12580fill$=STRING$(12-(LEN(num1$+num2$))," ")
12590fill2$=STRING$(6-LEN ans$," ")
12600IF game%=1 THEN op$=" + " ELSE op$=" - "
12610st$=" ("+STR$(quest%+1)+") "+num1$+op$+num2$+fill$+" = ("+ans$+")"+fill2$
12620Rptr%=FNadd_string(Rptr%,st$,down%)
12630ENDPROC
12640
12650
12660DEF FNinsert_point(num$)
12670LOCAL split%,left$,right$
12680IF LEN num$>2 THEN
12690 split%=LEN num$-2
12700 left$=LEFT$(num$,split%):right$=RIGHT$(num$,2)
12710ELSE
12720 left$="0":right$=STRING$(2-LENnum$,"0")+num$
12730ENDIF
12740=left$+"."+right$
12750
12760
12770DEF PROCmake_sub(level%)
12780LOCAL f%,s%,a%,x%,f$,s$
12790REPEAT
12800 CASE level% OF
12810  WHEN 1:REPEAT
12820          f%=RND(80)+10:s%=RND(10)-1
12830         UNTIL f%-s%>(INT(f%/10)*10)
12840  WHEN 2,3:f$="":s$=""
12850           FOR x%=1 TO level%
12860            REPEAT
12870             f%=RND(10)-1:s%=RND(10)-1
12880            UNTIL f%>s%
12890            f$=f$+STR$f%:s$=s$+STR$s%
12900           NEXT
12910           f%=VAL(f$):s%=VAL(s$)
12920  WHEN 4:PROCsubsub(3,1,0)
12930  WHEN 5:PROCsubsub(3,2,0)
12940  WHEN 6:PROCsubsub(4,3,0)
12950  WHEN 7:PROCsubsub(4,3,1)
12960  WHEN 8:PROCsubsub(4,3,2)
12970  WHEN 9:PROCsubsub(5,4,3)
12980  WHEN 10:f%=RND(80)+10:s%=RND(9)
12990 ENDCASE
13000UNTIL s%>0
13010num1%=f%:num2%=s%:ans%=f%-s%
13020ENDPROC
13030
13040
13050DEF PROCsubsub(len%,dec%,zeros%)
13060LOCAL x%
13070f$="":s$="":z%=0
13080FOR x%=1 TO len%
13090 f%=RND(10)-1:s%=RND(10)-1
13100 IF x%>dec% REPEAT:f%=RND(10)-1:s%=RND(10)-1:UNTIL f%>s%
13110 IF x%=dec%+1 REPEAT:f%=RND(10)-1:s%=RND(10)-1:UNTIL f%>s%+1
13120 IF x%<len% THEN IF RND(6)<zeros% f%=0
13130 IF f%=0 AND x%>1 THEN
13140  z% +=1
13150  IF z%>zeros% f%=RND(9)
13160 ENDIF
13170 f$=STR$f%+f$:s$=STR$s%+s$
13180NEXT
13190f%=VAL(f$):s%=VAL(s$)
13200ENDPROC
13210
13220
13230DEF PROCdigits(num%,dig$())
13240LOCAL d%
13250FOR d%=0 TO 4
13260 IF num%>0 THEN dig$(d%)=STR$(num% MOD 10) ELSE dig$(d%)=""
13270 num%=num% DIV 10
13280NEXT
13290IF decimal%(NameNo%)=1 AND dig$(2)="" THEN dig$(2)="0"
13300ENDPROC
13310
13320
13330DEF PROCfind_error
13340LOCAL x%
13350IF nexterr%>=nextdig% THEN ENDPROC
13360REPEAT
13370nexterr% +=1
13380UNTIL dig3$(nexterr%)<>answer$(nexterr%) OR nexterr%=nextdig%
13390
13400IF nexterr%<nextdig% THEN
13410 IF rubdig%>-1 THEN x%=FNdigx(rubdig%)+10
13420 SYS"Wimp_ForceRedraw",handle%(game%),x%,y3%,x%+75,y3%+75
13430 rubdig%=nexterr%:x%=FNdigx(rubdig%)+10
13440 SYS"Wimp_ForceRedraw",handle%(game%),x%,y3%,x%+75,y3%+75
13450ENDIF
13460ENDPROC
13470
13480
13490DEF PROCnull_event
13500IF drag% THEN PROCmove_number
13510IF TIME-sesstime%>timelim%(NameNo%)*6000 AND Notimer%(NameNo%)=0 AND game%>0 THEN
13520 message$(1)="Time's up":message$(2)="":VDU7:PROCfont_to_screen
13530 PROCpause(400):PROCgame_end
13540ENDIF
13550IF drawfont% THEN PROCfont_to_screen:PROCmessage_sprite_back:drawfont%=0
13560IF nextmess% THEN PROCpause(100*(nextmess%-1)):PROCmessage("pr"):nextmess%=0
13570IF printer%(NameNo%)=1 AND driver%=0 AND enprint%=-1 THEN
13580 driver%=FNensure_Pdriver
13590 IF driver% THEN PROCset_top_icon(7,-1):PROCshade_icon(SChandle%,11,0)
13600ENDIF
13610IF FNwindow_open(Lhandle%)=-1 AND create%=-2 THEN PROCloadbox_windows(-1):create%=-1
13620IF TIME-TLtime%>1000 THEN PROCclose_window(Thandle%):TLtime%=1E7
13630ENDPROC
13640
13650
13660DEF PROCmove_number
13670LOCAL x%,y%,x1%,x2%,y1%,y2%,w%,h%,flg%
13680SYS"Wimp_GetPointerInfo",,block%
13690
13700IF rubber% THEN
13710 w%=75:h%=75:x%=!block%-6:y%=block%!4-12
13720ELSE
13730 w%=36-6*(dragval%=30):h%=44:x%=!block%-w%/2:y%=block%!4-h%/2
13740ENDIF
13750
13760PROCwork_area_origin(handle%(game%),ox%,oy%)
13770x% -=ox%:y% -=oy%
13780
13790IF rubber%=-1 AND (y%>-266 OR dragy%>-266) THEN
13800  SYS"OS_SpriteOp",&13C,sarea%,"backtop1",1 TO r0%,r1%,r2%,r3%
13810  SYS"OS_SpriteOp",&134,sarea%,"top1",0,0,0,-1,-1
13820  SYS"OS_SpriteOp",&134,sarea%,"move10",x%-150,844+y%-694,8,-1,-1
13830  SYS"OS_SpriteOp",r0%,r1%,r2%,r3%:flg%=-1:VDU26
13840ENDIF
13850IF ABS(x%-dragx%)<4 AND ABS(y%-dragy%)<8 THEN ENDPROC
13860
13870IF x%>dragx% THEN x2%=x%+w%:x1%=dragx% ELSE x2%=dragx%+w%:x1%=x%
13880IF y%>dragy% THEN y2%=y%+h%:y1%=dragy% ELSE y2%=dragy%+h%:y1%=y%
13890dragx%=x%:dragy%=y%
13900IF ABS(initx%-dragx%)>12 OR ABS(inity%-dragy%)>12 THEN double%=0
13910
13920IF rubber% THEN
13930 cond%=-((x2%<170 OR x1%>285) AND y1%>-165)
13940 IF x%<0 OR x%>1276 OR y%<-844 OR y%>0 THEN cond%=1
13950 OSCLI "POINTER "+STR$ cond%
13960ENDIF
13970
13980IF y2%>-150 THEN
13990 IF y1%>-150 THEN y1%=-150
14000 IF y2%>-150 THEN y2%=-150
14010ENDIF
14020IF NOT(y1%=-150 AND y2%=-150) THEN SYS"Wimp_ForceRedraw",handle%(game%),x1%,y1%,x2%,y2%
14030
14040IF flg% THEN
14050 PROCwork_area_origin(handle%(game%),ox%,oy%)
14060 flg%=FNupdate_window(handle%(game%),152,-150,300,0)
14070 WHILE flg%
14080  SYS"OS_SpriteOp",&134,sarea%,"backtop1",ox%+150,oy%-146,0,scale%,trans%
14090  SYS"Wimp_GetRectangle",,block% TO flg%
14100 ENDWHILE
14110 IF y1%<-146 THEN SYS"Wimp_ForceRedraw",handle%(game%),x1%,y1%,x2%,-146
14120ENDIF
14130ENDPROC
14140
14150
14160DEF PROCplace_number(ICdrag%)
14170LOCAL x%,y%,Y3%,dig%,Mode%,flg%,valid%,range%,Dig%:valid%=-1
14180IF game%=1 THEN range%=anslim% ELSE range%=FNquest_limit
14190Mode%=(mode%(NameNo%)=1 AND SCformat%=2)
14200IF dragval%=30 THEN ENDPROC
14210check%=-1:double%=0
14220SYS"Wimp_ForceRedraw",handle%(game%),dragx%,dragy%,dragx%+75,dragy%+75
14230IF message$(1)<>"" AND Helplev%<5 THEN PROCremove_message
14240PROCwork_area_origin(handle%(game%),ox%,oy%)
14250
14260IF SCformat%=2 THEN
14270 dig%=ICdrag%-18:Y3%=y3%
14280 x%=FNdigx(dig%):flg%=(ICdrag%>26)
14290ELSE
14300 dig%=ICdrag%-28:Y3%=-596
14310 x%=FNprintdigx(902,dig%):flg%=(ICdrag%<28)
14320ENDIF
14330IF flg% THEN ENDPROC
14340
14350IF Mode%=-1 AND SCformat%=2 THEN valid%=((dig%<=nextdig% OR game%=1 AND Helplev%=0 AND dig%<=range% OR game%=2 AND nextdig%=anslim%+1 AND dig%<=range%) AND (carry%=0 OR carry%=-1 AND (Helplev%<3 OR rubdig%>-1)))
14360IF valid%=0 THEN PROCmessage("pl"):ENDPROC
14370IF Mode%=0 AND SCformat%=2 AND dig%>range% THEN ENDPROC
14380
14390IF Mode%=-1 AND Helplev%=5 AND FNcheck_dig_val(dig%,"ans")=0 THEN
14400 IF rubdig%=-1 THEN Dig%=nextdig% ELSE Dig%=rubdig%
14410 IF dig%=Dig% THEN PROCmessage("ck") ELSE PROCmessage("pr")
14420 flg%=-1
14430ENDIF
14440IF flg% THEN ENDPROC
14450
14460IF Mode%=-1 AND Helplev%>0 AND FNcheck_sum_type(dig%)<>0 THEN PROCmessage("sum"):ENDPROC
14470
14480dragx%=0:dragy%=-825:drag%=0
14490
14500IF dig3$(dig%)<>"" THEN sum% -=VALdig3$(dig%)*10^dig%
14510dig3$(dig%)=STR$dragval%
14520sum% +=dragval%*10^dig%
14530
14540 SYS"Wimp_ForceRedraw",handle%(game%),x%,Y3%,x%+75,Y3%+75:REM Current digit
14550 IF dig%<nextdig% AND rubdig%=-1 THEN ENDPROC
14560
14570IF Mode%=-1 THEN
14580 IF dig%=nextdig% THEN nextdig% -=(nextdig%<=anslim%)
14590 IF car_dig%(nextdig%)=(operator%(NameNo%)=2) AND nextdig%<=anslim% THEN Cdone%(nextdig%)=-1
14600 IF st_dig%(nextdig%)=0 AND operator%(NameNo%)=2 AND nextdig%<=anslim% THEN STdone%(nextdig%)=-1
14610 IF operator%(NameNo%)=1 AND Helplev%=0 THEN PROCskip_over
14620
14630 IF rubdig%=-1 THEN
14640  IF operator%(NameNo%)=2 THEN PROCcount_steps
14650  IF car_dig%(nextdig%+Bstep%)>1-operator%(NameNo%) AND carry$(nextdig%+Bstep%)="" THEN carry%=-1 ELSE carry%=0
14660 ENDIF
14670
14680 IF dig%=rubdig% THEN
14690  rubdig%=FNcheck_rubout
14700 ENDIF
14710 IF try%>0 AND rubdig%=-1 THEN PROCfind_error
14720
14730 PROCredraw_box_position(nextdig%,Helplev%)
14740ENDIF
14750nextmess%=-(Helplev%=5 AND (nextdig%<=anslim% OR rubdig%>-1) AND Mode%=-1)
14760IF (try%<tries%(NameNo%) OR force5%=-1) AND SCformat%=2 THEN PROCset_top_icon(0,-1)
14770ENDPROC
14780
14790
14800DEF PROCskip_over
14810REM Addition level 0
14820WHILE dig3$(nextdig%)<>"" AND nextdig%<=anslim%
14830nextdig% +=1
14840ENDWHILE
14850ENDPROC
14860
14870
14880DEF PROCredraw_box_position(pos%,help%)
14890IF operator%(NameNo%)=1 THEN
14900 PROCdig_carry_redraw(pos%)
14910ELSE
14920 IF carry%=-1 AND rubdig%=-1 AND help%>2 THEN
14930
14940  IF strike% THEN
14950   PROCstrike_redraw(pos%,Bstep%)
14960  ELSE
14970   PROCcarry_redraw(pos%,Bstep%)
14980  ENDIF
14990
15000 ELSE
15010  PROCdigit_redraw(pos%)
15020 ENDIF
15030ENDIF
15040ENDPROC
15050
15060
15070DEF PROCdig_carry_redraw(dig%)
15080REM Addition
15090IF rubdig%>-1 THEN x%=FNdigx(rubdig%)+10 ELSE x%=FNdigx(dig%)+10
15100SYS"Wimp_ForceRedraw",handle%(game%),x%,ycar%,x%+75,ycar%+106:REM Next digit or carry
15110ENDPROC
15120
15130
15140DEF PROCdigit_redraw(dig%)
15150REM Subtraction
15160IF rubdig%>-1 THEN x%=FNdigx(rubdig%)+10 ELSE x%=FNdigx(dig%)+10
15170SYS"Wimp_ForceRedraw",handle%(game%),x%,y3%,x%+75,y3%+75:REM Next digit
15180ENDPROC
15190
15200
15210DEF PROCcarry_redraw(dig%,shift%)
15220LOCAL x%,h%
15230PROCcarry_posx(dig%+shift%,x%,h%)
15240SYS"Wimp_ForceRedraw",handle%(game%),x%,ycar%,x%+42,ycar%+h%+4:REM Next carry
15250ENDPROC
15260
15270
15280DEF PROCstrike_redraw(dig%,shift%)
15290x%=FNdigx(dig%+shift%)+10
15300SYS"Wimp_ForceRedraw",handle%(game%),x%,y1%,x%+75,y1%+75:REM Next strike
15310ENDPROC
15320
15330
15340DEF PROCcount_steps
15350LOCAL flg%
15360Bstep%=0
15370IF Helplev%=2 AND NOT(st_dig%(nextdig%+1)=1 AND strike$(nextdig%+1)="") THEN
15380 IF strike$(nextdig%)="" AND st_dig%(nextdig%)=1 THEN strike%=-1:carry%=-1:flg%=-1
15390 IF strike$(nextdig%)="/" AND carry$(nextdig%)="" THEN reduce%=-1:carry%=-1:flg%=-1
15400ENDIF
15410IF flg% THEN ENDPROC
15420
15430IF st_dig%(nextdig%+1)=1 AND strike$(nextdig%+1)="" THEN Bstep%=1 ELSE ENDPROC
15440strike%=-1:carry%=-1
15450WHILE dig1$(nextdig%+Bstep%)="0" AND strike$(nextdig%+Bstep%)=""
15460 Bstep% +=1
15470ENDWHILE
15480ENDPROC
15490
15500
15510DEF PROCplace_strike(dig%)
15520LOCAL x%,h%,diglim%,flg%
15530IF SCformat%=1 THEN ENDPROC
15540IF operator%(NameNo%)=2 THEN diglim%=FNquest_limit ELSE diglim%=anslim%
15550IF mode%(NameNo%)=1 AND st_dig%(dig%)=1 AND strike$(dig%)="" AND dig%>=nextdig% AND Helplev%<=2 THEN Bstep%=dig%-nextdig%:carry%=-1
15560IF mode%(NameNo%)=1 AND Helplev%>2 AND dig%<>nextdig%+Bstep% AND STdone%(dig%)=0 AND try%=0 OR Helplev%<=2 AND dig%>diglim% THEN PROCmessage("pl"):ENDPROC
15570IF mode%(NameNo%)=0 AND dig%>diglim% THEN ENDPROC
15580IF dragval%<30 THEN
15590 IF Helplev%=5 THEN PROCmessage("ck")
15600 flg%=-1
15610ENDIF
15620IF flg% THEN ENDPROC
15630IF message$(1)<>"" AND mode%(NameNo%)=1 AND NOT(Helplev%=5 AND STdone%(dig%)=-1) THEN PROCremove_message
15640SYS"Wimp_ForceRedraw",handle%(game%),dragx%,dragy%,dragx%+75,dragy%+75
15650PROCwork_area_origin(handle%(game%),ox%,oy%)
15660strike$(dig%)="/":drag%=0:double%=0:dragval%=0
15670nextmess%=-(Helplev%=5 AND nextdig%<=anslim% AND mode%(NameNo%)=1 AND Helplev%=5 AND STdone%(dig%)=0)
15680PROCstrike_redraw(dig%,0)
15690IF st_dig%(dig%)=0 THEN ENDPROC
15700STdone%(dig%)=-1
15710
15720IF mode%(NameNo%)=1 AND dig%=nextdig%+Bstep% AND carry%=-1 THEN
15730 REM STdone%(dig%)=-1
15740 IF Bstep%>0 OR carry$(nextdig%+Bstep%)="" THEN
15750  reduce%=(carry$(nextdig%+Bstep%)=""):strike%=0
15760  IF reduce%=0 THEN Bstep% -=1
15770  IF Helplev%>2 THEN PROCcarry_redraw(nextdig%,Bstep%)
15780 ELSE
15790  IF Helplev%>2 THEN PROCdigit_redraw(nextdig%)
15800  strike%=0:carry%=0
15810 ENDIF
15820ENDIF
15830ENDPROC
15840
15850
15860DEF FNcheck_dig_val(dig%,source$)
15870LOCAL num%,d%,dig1%
15880d%=dig%
15890IF operator%(NameNo%)=1 THEN
15900 IF source$="ans" THEN num%=(VAL dig1$(d%)+VAL dig2$(d%)+car_dig%(d%)) MOD 10 ELSE num%=car_dig%(d%)
15910ELSE
15920 IF source$="ans" THEN
15930  IF car_dig%(d%)>0 THEN dig1%=car_dig%(d%) ELSE dig1%=VAL dig1$(d%)
15940  num%=dig1%-VAL dig2$(d%)
15950 ELSE
15960  units%=car_dig%(d%) MOD 10
15970  IF FNcarry_2dig(d%) THEN
15980   IF carry$(d%)="" THEN num%=units% ELSE num%=1
15990  ELSE
16000   IF car_dig%(d%)>9 THEN num%=1 ELSE num%=units%
16010   ENDIF
16020 ENDIF
16030ENDIF
16040=(num%=dragval%)
16050
16060
16070DEF FNcheck_sum_type(dig%)
16080LOCAL d1%,d2%
16090d1%=VALdig1$(dig%):d2%=VALdig2$(dig%)
16100IF operator%(NameNo%)=1 THEN =FNcheck_sum_typeA ELSE =FNcheck_sum_typeS(dig%)
16110
16120DEF FNcheck_sum_typeS(dig%)
16130IF dragval%=VALanswer$(dig%) THEN =0
16140IF d2%-d1%=dragval% AND d1%<>d2% THEN =1
16150IF (d1%+d2%) MOD 10=dragval% THEN =2
16160=0
16170
16180DEF FNcheck_sum_typeA
16190IF dragval%=VALanswer$(dig%) THEN =0
16200IF (d1%-d2%)=dragval% THEN =1
16210=0
16220
16230
16240DEF PROCplace_double_click
16250LOCAL pos%,step%
16260step%=-Bstep%*(Helplev%>2)
16270IF nextdig%>anslim% AND car_dig%(anslim%+1)=0 AND rubdig%=-1 OR mode%(NameNo%)=0 OR dragval%=30 AND strike%=0 THEN ENDPROC
16280
16290IF rubdig%>-1 THEN pos%=rubdig% ELSE pos%=nextdig%+step%
16300
16310IF carry%=0 OR rubdig%>-1 OR Helplev%<3 THEN
16320 PROCplace_number(pos%+18)
16330ELSE
16340 IF strike% THEN PROCplace_strike(pos%) ELSE PROCplace_carry(pos%)
16350ENDIF
16360ENDPROC
16370
16380
16390DEF PROCreplace_number(num%)
16400LOCAL r0%,r1%,r2%,r3%
16410IF initnum%<>num% THEN ENDPROC
16420drag%=0:double%=0:dragval%=0
16430IF num%=10 THEN
16440 SYS"OS_SpriteOp",&13C,sarea%,"backtop1",1 TO r0%,r1%,r2%,r3%
16450 SYS"OS_SpriteOp",&134,sarea%,"top1",0,0,0,-1,-1
16460 SYS"OS_SpriteOp",r0%,r1%,r2%,r3%:VDU26
16470ENDIF
16480SYS"Wimp_ForceRedraw",handle%(game%),dragx%,dragy%,dragx%+75,dragy%+75
16490ENDPROC
16500
16510
16520DEF PROCgame_end
16530LOCAL r%
16540IF game%=0 THEN ENDPROC
16550PROCshade_item(menu%,2,0)
16560PROCclose_window(handle%(game%)):game%=0:drag%=0:startOwn%=0
16570PROCclose_window(CChandle%)
16580PROCclose_window(Ohandle%):Owin%=0
16590PROCclose_window(Phandle%):PROCclose_window(P2handle%)
16600IF marked%=-1 AND auto%(NameNo%)=1 AND ownsum%(NameNo%)=0 THEN PROCnew_auto_level(correct%)
16610IF saveR%(NameNo%)=1 AND quest%>0 THEN PROCend_levels
16620REM IF notsavedO% THEN PROCsave_file($savebuff%)
16630IF autosaveR%=-1 AND saveR%(NameNo%)=1 AND notsavedR%=-1 THEN
16640 PROCresults_text_file($savetextbuff%)
16650ENDIF
16660PROCshow_score("E")
16670ENDPROC
16680
16690
16700DEF PROCend_levels
16710LOCAL st$,perc$,Alev$,Slev$,auto$
16720Rcnt% +=2:Rcnt2% +=2
16730IF ownsum%(NameNo%)=0 THEN Alev$=STR$ Alevel%(NameNo%):Slev$=STR$ Slevel%(NameNo%) ELSE Alev$=" -":Slev$=" -"
16740IF quest% THEN perc$=STR$(INT(100*CorrectAns%/quest%+.5))+"%" ELSE perc$="0%"
16750IF autohelp%(NameNo%)=1 THEN auto$="Y" ELSE auto$="N"
16760st$=" End levels: add:"+Alev$+" sub:"+Slev$+", auto help:"+auto$+"  "+perc$
16770Rptr%=FNadd_string(Rptr%,st$,2)
16780ENDPROC
16790
16800
16810DEF FNsum_filled
16820LOCAL n%,flg%:flg%=-1
16830FOR n%=0 TO anslim%
16840 IF dig3$(n%)="" AND NOT(n%=anslim% AND answer$(n%)="0") THEN flg%=0
16850NEXT
16860=flg%
16870
16880
16890DEF PROCcheck_to_results
16900IF newR%=1 AND try%=1 THEN PROCresults_next_name
16910IF try%=1 THEN PROCresults_sum
16920IF decimal%(NameNo%) THEN sum$=FNinsert_point(STR$sum%) ELSE sum$=STR$sum%
16930sum$=sum$+STRING$(6-LEN sum$," ")
16940IF newR%=0 THEN Rptr%=FNadd_string(Rptr%," "+sum$,0)
16950
16960IF estimate%(NameNo%)=1 AND correct%=-1 THEN
16970 IF decimal%(NameNo%) THEN sum$=FNinsert_point(STR$ EstVal%) ELSE sum$=STR$ EstVal%
16980 sum$="Est "+sum$
16990 IF newR%=0 THEN Rptr%=FNadd_string(Rptr%," "+sum$,0)
17000ENDIF
17010ENDPROC
17020
17030
17040DEF PROCcheck_sum
17050LOCAL n%,Correct%
17060correct%=(sum%=ans% AND FNsum_filled=-1):nextcheck%=-1:Correct%=correct%
17070CorrectAns% -=(correct%=-1 AND force5%=0):try% -=(force5%=0)
17080IF saveR%(NameNo%)=1 AND force5%=0 THEN PROCcheck_to_results
17090IF message$(1)<>"" AND mode%(NameNo%)=1 THEN PROCremove_message:message$(1)=""
17100
17110PROCwork_area_origin(handle%(game%),ox%,oy%)
17120flg%=FNupdate_window(handle%(game%),mkx%,y3%,mkx%+75,y3%+75)
17130WHILE flg%
17140 PROCmark
17150 SYS"Wimp_GetRectangle",,block% TO flg%
17160ENDWHILE
17170
17180IF (force%(NameNo%)=1 OR force5%=-1) AND try%>=tries%(NameNo%) AND (correct%=0 OR force5%=-1) THEN PROCforce_right_ans:IF force5%=-1 THEN ENDPROC
17190
17200IF estimate%(NameNo%)=1 AND correct%=-1 AND force5%=0 THEN PROCestimate_message
17210
17220IF correct%=-1 OR try%>=tries%(NameNo%) THEN
17230 REM Next question
17240 IF next%(NameNo%) THEN PROCset_top_icon(5,-1)
17250 IF printer%(NameNo%)=1 AND driver%=-1 AND (correct%=0 OR force5%=1) AND Psave%=0 THEN PROCsave_sum("S")
17260 FOR n%=0 TO 2:PROCset_top_icon(n%,0):NEXT
17270
17280 quest% +=1
17290 IF next%(NameNo%)=0 THEN
17300  PROCpause(200):force5%=0
17310  IF auto%(NameNo%)=1 AND ownsum%(NameNo%)=0 THEN PROCnew_auto_level(correct%)
17320  IF quest%<no_quest%(NameNo%) THEN
17330   IF ownsum%(NameNo%)=0 THEN PROCset_sum ELSE PROCset_up_sum_window
17340  ELSE
17350   PROCgame_end
17360  ENDIF
17370 ELSE
17380  IF correct%=0 AND try%>=tries%(NameNo%) AND force5%=0 THEN message$(1)="No more tries.":message$(2)="":PROCfont_to_screen:PROCmessage_sprite_back
17390  marked%=(next%(NameNo%)=1 OR ownsum%(NameNo%)=1)
17400 ENDIF
17410ELSE
17420 IF next%(NameNo%)=1 AND try%=1 THEN PROCshade_icon(handle%(game%),5,0)
17430 IF nextdig%=anslim%+1 THEN nexterr%=-1:PROCfind_error
17440 IF tries%(NameNo%)>1 THEN
17450  IF try%<tries%(NameNo%)-1 THEN message$(1)="Try again." ELSE message$(1)="One more try."
17460  message$(2)=""
17470  PROCfont_to_screen
17480  PROCmessage_sprite_back
17490 ENDIF
17500 PROCpause(200)
17510 SYS"Wimp_ForceRedraw",handle%(game%),mkx%,y3%,mkx%+75,y3%+75
17520ENDIF
17530IF autohelp%(NameNo%)=1 AND force5%=0 THEN PROCchange_help_level(Correct%)
17540nextmess%=-3*(Helplev%=5 AND mode%(NameNo%)=1 AND force5%=0 AND try%<tries%(NameNo%))
17550ENDPROC
17560
17570
17580DEF PROCforce_right_ans
17590IF force5%=0 THEN
17600 PROCpause(300)
17610 IF autohelp%(NameNo%)=1 THEN PROCchange_help_level(0)
17620 Helplev%=5:force5%=-1
17630 PROCset_sum
17640ELSE
17650 Helplev%=Hlevel%(NameNo%):force5%=1
17660ENDIF
17670ENDPROC
17680
17690
17700DEF PROCestimate_message
17710LOCAL est:est=EstVal%
17720IF decimal%(NameNo%) THEN est=est/100
17730message$(1)="You estimated "+STR$ est:message$(2)=""
17740
17750PROCfont_to_screen
17760PROCmessage_sprite_back
17770ENDPROC
17780
17790
17800DEF PROCnew_auto_level(correct%)
17810LOCAL level%,Lrange%,Hrange%:notsavedO%=-1
17820IF operator%(NameNo%)=1 THEN
17830 level%=Alevel%(NameNo%):Hrange%=7:numRW%=AnumRW%
17840ELSE
17850 level%=Slevel%(NameNo%):Hrange%=9:numRW%=SnumRW%
17860ENDIF
17870IF decimal%(NameNo%) THEN Lrange%=6 ELSE Lrange%=1
17880
17890IF correct% THEN
17900 IF numRW%>=0 THEN numRW% +=1
17910 IF numRW%<0 THEN numRW%=1
17920 IF newlevR%(NameNo%)<=numRW% THEN level% -=(level%<Hrange%):numRW%=0
17930ELSE
17940 IF numRW%<=0 THEN numRW% -=1
17950 IF numRW%>0 THEN numRW%=-1
17960 IF newlevW%(NameNo%)>=numRW% THEN level% +=(level%>Lrange%):numRW%=0
17970ENDIF
17980
17990IF operator%(NameNo%)=1 THEN
18000 Alevel%(NameNo%)=level%:$level_buffA%=STR$ Alevel%(NameNo%)
18010 AnumRW%=numRW%
18020 PROCreset_icon(Chandle%,5)
18030ELSE
18040 Slevel%(NameNo%)=level%:$level_buffS%=STR$ Slevel%(NameNo%)
18050 SnumRW%=numRW%
18060 PROCreset_icon(Chandle%,8)
18070ENDIF
18080
18090ENDPROC
18100
18110
18120DEF PROCchange_help_level(correct%)
18130IF correct% THEN
18140 Hlevel%(NameNo%) +=(Hlevel%(NameNo%)>MHlevel%(NameNo%))
18150ELSE
18160 Hlevel%(NameNo%) -=(Hlevel%(NameNo%)<5)
18170 IF try%<tries%(NameNo%) AND game%>0 THEN PROCchange_help_display(Hlevel%(NameNo%))
18180ENDIF
18190Helplev%=Hlevel%(NameNo%)
18200$Hbuff%=STR$ Hlevel%(NameNo%)
18210PROCreset_icon(Chandle%,31)
18220ENDPROC
18230
18240
18250DEF PROCchange_help_display(help%)
18260IF help%<3 AND Helplev%>=3 OR help%>=3 AND Helplev%<3 THEN
18270 PROCredraw_box_position(nextdig%,help%)
18280 PROCredraw_box_position(nextdig%,Helplev%)
18290ENDIF
18300IF FNwindow_open(Chandle%)=0 THEN nextmess%=-(Helplev%=5)
18310IF help%=5 AND Helplev%<5 THEN message$()="":SYS"Wimp_ForceRedraw",handle%(game%),600,y3%-24,1280,y3%+145
18320ENDPROC
18330
18340
18350DEF PROCshow_score(when$)
18360LOCAL off%,to_go%:off%=-(when$="E")
18370start%=off%
18380
18390PROCdelete_icon(SChandle%,9,off%)
18400PROCdelete_icon(SChandle%,10,1-off%)
18410PROCdelete_icon(SChandle%,11,1-off%)
18420PROCdelete_icon(SChandle%,12,1-off%)
18430PROCshade_icon(SChandle%,11,(printer%(NameNo%)=0 OR driver%=0 OR enprint%=0))
18440
18450$SCRbuff%=STR$ CorrectAns%
18460$SCQbuff%=STR$ quest%
18470$SCWbuff%=STR$ (quest%-CorrectAns%)
18480$Snamebuff%="Name : "+name$(NameNo%)
18490
18500IF when$="E" THEN
18510 $SCtbuff%="Time limit : "+STR$ timelim%(NameNo%)+" minute"
18520 IF timelim%(NameNo%)<>1 THEN $SCtbuff%=$SCtbuff%+"s"
18530ELSE
18540 to_go%=(6000*timelim%(NameNo%)-TIME+sesstime%+3000)/6000
18550 $SCtbuff%="You have "+STR$ to_go%+" minute"
18560 IF timelim%(NameNo%)<>1 THEN $SCtbuff%=$SCtbuff%+"s"
18570 $SCtbuff%=$SCtbuff%+" to go."
18580ENDIF
18590IF Notimer%(NameNo%) THEN $SCtbuff%="Time limit : None"
18600
18610SChandle%=FNcentre_window(SChandle%,"Y")
18620ENDPROC
18630
18640
18650DEF PROCmark
18660LOCAL sp$
18670IF correct%=-1 THEN sp$="tick" ELSE sp$="cross"
18680SYS"OS_SpriteOp",&134,sarea%,sp$,ox%+mkx%,oy%+y3%,8,scale%,trans%
18690ENDPROC
18700
18710
18720DEF PROCinput_box(dig%)
18730LOCAL x%,h%
18740PROCwork_area_origin(handle%(game%),ox%,oy%)
18750SYS"Wimp_SetColour",11
18760IF carry%=0 OR rubdig%>-1 OR Helplev%<=2 THEN
18770 IF rubdig%>-1 THEN dig%=rubdig%
18780 IF dig%<=anslim% THEN
18790  x%=FNdigx(dig%)+10
18800  RECTANGLE ox%+x%,oy%+y3%+4,52,52
18810 ENDIF
18820ELSE
18830 IF strike%=0 THEN
18840  PROCcarry_posx(dig%+Bstep%,x%,h%)
18850  RECTANGLE ox%+x%,oy%+ycar%,35,h%
18860 ELSE
18870  x%=FNdigx(dig%+Bstep%)+10
18880  RECTANGLE ox%+x%,oy%+y1%+4,52,52
18890 ENDIF
18900ENDIF
18910ENDPROC
18920
18930
18940DEF PROCcarry_positions
18950LOCAL dig%,flg%():DIM flg%(4)
18960st_dig%()=0
18970IF operator%(NameNo%)=1 THEN
18980 FOR dig%=0 TO 3
18990  IF VAL dig1$(dig%)+VAL dig2$(dig%)+car_dig%(dig%)>9 THEN car_dig%(dig%+1)=1
19000 NEXT
19010ELSE
19020 FOR dig%=0 TO 4:car_dig%(dig%)=VAL dig1$(dig%):NEXT
19030
19040 FOR dig%=0 TO 4
19050  IF car_dig%(dig%)-VAL dig2$(dig%)<0 THEN
19060   car_dig%(dig%) +=10:car_dig%(dig%+1) -=1
19070   st_dig%(dig%+1)=1:flg%(dig%)=-1:flg%(dig%+1)=-1
19080  ENDIF
19090 NEXT
19100
19110 FOR dig%=0 TO 4
19120  IF flg%(dig%)=0 THEN car_dig%(dig%)=-1
19130 NEXT
19140 IF mode%(NameNo%) THEN
19150  carry%=(car_dig%(0)>0):strike%=(st_dig%(1)>0)
19160  IF strike% THEN PROCcount_steps ELSE Bstep%=0
19170  IF car_dig%(0)=-1 THEN Cdone%(0)=-1
19180 ENDIF
19190ENDIF
19200ENDPROC
19210
19220
19230DEF FNanswer_limit
19240LOCAL ans$,len%
19250ans$=STR$ ans%:len%=LENans$-1
19260IF decimal%(NameNo%)=1 AND len%=1 THEN len%=2
19270=len%
19280
19290
19300DEF FNquest_limit
19310LOCAL n1$,n2$
19320n1%=LEN STR$ num1%-1:n2%=LEN STR$ num2%-1
19330IF n1%>n2% THEN =n1% ELSE =n2%
19340
19350
19360DEF FNmessage_plus(dig%)
19370LOCAL mess$,valid%
19380valid%=(VALcarry$(dig%)=1 AND car_dig%(dig%)=1 OR carry$(dig%)="" AND car_dig%(dig%)=0)
19390IF valid%=0 THEN mess$="You need to add " ELSE mess$="Add "
19400IF dig1$(dig%)="" AND dig2$(dig%)="" THEN =mess$+"1."
19410IF dig2$(dig%)<>"" THEN mess$=mess$+dig2$(dig%) ELSE mess$=mess$+"0"
19420IF dig1$(dig%)<>"" THEN mess$=mess$+" and "+dig1$(dig%) ELSE mess$=mess$+" and "+"0"
19430IF car_dig%(dig%)>0 THEN mess$=mess$+" + 1"
19440=mess$+"."
19450
19460
19470DEF FNmessage_minus(dig%)
19480LOCAL mess$,dig$,units%,valid%,d2$
19490units%=car_dig%(dig%) MOD 10
19500IF car_dig%(dig%)>-1 THEN dig$=STR$ car_dig%(dig%) ELSE dig$=dig1$(dig%)
19510IF dig2$(dig%)="" THEN d2$="0" ELSE d2$=dig2$(dig%)
19520valid%=(units%=VALdig1$(dig%) AND carry$(dig%)="1" OR units%<>VALdig1$(dig%) AND VALcarry$(dig%)=car_dig%(dig%) OR car_dig%(dig%)=-1 AND carry$(dig%)="")
19530IF valid%=0 THEN mess$="You need to subtract " ELSE mess$="Subtract "
19540mess$=mess$+d2$+" from "+dig$
19550=mess$+"."
19560
19570
19580DEF PROCmessage(source$)
19590LOCAL dig%,st%,c%,r%
19600IF rubdig%>-1 THEN dig%=rubdig%:st%=0:c%=0:r%=0 ELSE dig%=nextdig%:st%=strike%:c%=carry%:r%=reduce%
19610IF source$="sum" THEN dig%=ICdrag%-18
19620IF dig%>anslim% AND source$<>"sum" OR Helplev%=5 AND source$="?" OR correct%=-1 THEN ENDPROC
19630IF Helplev%=5 AND source$="pl" THEN source$="pr"
19640message$()=""
19650PROCwork_area_origin(handle%(game%),ox%,oy%)
19660
19670CASE source$ OF
19680 WHEN "?":IF Helplev%>0 THEN PROCmess_column(dig%,st%,c%,r%)
19690          IF Helplev%>1 THEN
19700           IF Helplev%=4 AND c%=0 THEN PROCmess_sum(message$(2),dig%) ELSE PROCmess_DecomCarry(message$(2),dig%,st%,c%,r%)
19710          ENDIF
19720 WHEN "pl":IF Helplev%>0 THEN PROCmess_column(dig%,st%,c%,r%)
19730 WHEN "ck":PROCwrong_number(dig%,st%,c%,r%)
19740 WHEN "pr":PROCmess_column(dig%,st%,c%,r%)
19750           IF c%=0 THEN PROCmess_sum(message$(2),dig%) ELSE PROCmess_DecomCarry(message$(2),dig%,st%,c%,r%)
19760 WHEN "sum":PROCwrong_calc_message(dig%)
19770ENDCASE
19780IF message$(1)="" THEN message$(1)=message$(2):message$(2)=""
19790
19800PROCfont_to_screen
19810PROCmessage_sprite_back
19820ENDPROC
19830
19840
19850DEF PROCwrong_calc_message(dig%)
19860LOCAL val%:val%=FNcheck_sum_type(dig%)
19870IF operator%(NameNo%)=2 THEN
19880 IF val%=1 THEN message$(1)="You're taking top from bottom." ELSE message$(1)="You are adding !"
19890 message$(2)="Take bottom from top."
19900ELSE
19910 IF val% THEN message$(1)="You are subtracting."
19920ENDIF
19930ENDPROC
19940
19950
19960DEF PROCwrong_number(dig%,st%,c%,r%)
19970IF Helplev%=5 THEN
19980 IF FNcheck_sum_type(dig%)=-1 AND st%=0 THEN PROCwrong_calc_message(dig%) ELSE message$(1)="No; that's not it."
19990 IF c%=0 THEN PROCmess_sum(message$(2),dig%) ELSE PROCmess_DecomCarry(message$(2),dig%,st%,c%,r%)
20000ENDIF
20010ENDPROC
20020
20030
20040DEF PROCmess_column(dig%,st%,c%,r%)
20050LOCAL var$
20060IF c%=0 OR Helplev%=1 THEN
20070 PROCcolumn_name
20080 IF dig%=0 THEN var$=" first." ELSE var$=" next."
20090 message$(1)="Do the "+dig_name$(dig%)+var$
20100ELSE
20110 IF source$="pl" THEN
20120  IF operator%(NameNo%)=1 THEN message$(1)="You need to carry." ELSE message$(1)="You need to decompose."
20130 ENDIF
20140ENDIF
20150ENDPROC
20160
20170
20180DEF PROCcolumn_name
20190IF decimal%(NameNo%) THEN
20200 dig_name$()="hundredths","tenths","units","tens","hundreds"
20210ELSE
20220 dig_name$()="units","tens","hundreds","thousands","ten thousands"
20230ENDIF
20240ENDPROC
20250
20260
20270DEF PROCmess_sum(RETURN mess$,dig%)
20280IF operator%(NameNo%)=1 THEN mess$=FNmessage_plus(dig%) ELSE mess$=FNmessage_minus(dig%)
20290ENDPROC
20300
20310
20320DEF PROCmess_DecomCarry(RETURN mess$,dig%,st%,c%,r%)
20330LOCAL units%,mess2$
20340IF c%=0 THEN ENDPROC
20350IF Helplev%=2 AND operator%(NameNo%)=2 THEN mess$="Do the decomposition.":ENDPROC
20360
20370IF operator%(NameNo%)=1 THEN
20380 mess$="You need to carry"
20390 IF Helplev%>2 THEN mess$=mess$+" "+STR$ car_dig%(dig%)+"." ELSE mess$=mess$+"."
20400ELSE
20410 IF st% THEN
20420  mess$="Strike through the "+dig1$(dig%+Bstep%)+"."
20430 ELSE
20440  mess$="You need to add "
20450  mess2$="Replace the "+dig1$(dig%+Bstep%)+" with "
20460  IF r% THEN
20470   units%=car_dig%(dig%+Bstep%) MOD 10
20480   IF carry$(dig%+Bstep%)="" THEN mess2$=mess2$+STR$units% ELSE mess$=mess$+"10."
20490  ELSE
20500   units%=car_dig%(dig%+Bstep%) MOD 10
20510   IF car_dig%(dig%+Bstep%)>9 THEN mess$=mess$+"10." ELSE mess2$=mess2$+STR$ units%
20520  ENDIF
20530  IF LEN mess2$=20 THEN mess$=mess2$+"."
20540 ENDIF
20550ENDIF
20560ENDPROC
20570
20580
20590DEF PROCremove_message
20600message$()=""
20610SYS"Wimp_ForceRedraw",handle%(game%),600,y3%-24,1280,y3%+145
20620ENDPROC
20630
20640
20650DEF PROCfont_to_screen
20660SYS"Wimp_SetFontColours",,0,11
20670SYS"Font_FindFont",,"Jarman",290,320 TO Fmess%
20680SYS"Font_SetFont",Fmess%
20690PROCwork_area_origin(handle%(game%),ox%,oy%)
20700
20710SYS"OS_SpriteOp",&13C,sarea%,"message",1 TO r0%,r1%,r2%,r3%
20720PROCmess_sprite_lines
20730SYS"OS_SpriteOp",r0%,r1%,r2%,r3%
20740
20750flg%=FNupdate_window(handle%(game%),600,y3%-24,1280,y3%+145)
20760WHILE flg%
20770 SYS"OS_SpriteOp",&134,sarea%,"message",ox%+600,oy%+y3%-25,0,-1,-1
20780 IF message$(2)="" THEN
20790  SYS"Font_Paint",,message$(1),16,ox%+600,oy%+y3%
20800 ELSE
20810  SYS"Font_Paint",,message$(1),16,ox%+600,oy%+y3%+75
20820  SYS"Font_Paint",,message$(2),16,ox%+600,oy%+y3%
20830 ENDIF
20840 SYS"Wimp_GetRectangle",,block% TO flg%
20850ENDWHILE
20860ENDPROC
20870
20880
20890DEF PROCmessage_sprite_back
20900LOCAL r0%,r1%,r2%,r3%
20910SYS"Font_SetFont",Fmess%
20920SYS"OS_SpriteOp",&13C,sarea%,"message",1 TO r0%,r1%,r2%,r3%
20930PROCmess_sprite_lines
20940
20950SYS"Wimp_SetFontColours",,0,11
20960IF message$(2)="" THEN
20970 SYS"Font_Paint",,message$(1),16,0,24
20980ELSE
20990 SYS"Font_Paint",,message$(1),16,0,103
21000 SYS"Font_Paint",,message$(2),16,0,24
21010ENDIF
21020SYS"OS_SpriteOp",r0%,r1%,r2%,r3%
21030SYS"Font_LoseFont",Fmess%
21040ENDPROC
21050
21060
21070DEF PROCmess_sprite_lines
21080SYS"Wimp_SetColour",0:RECTANGLE FILL 0,0,680,168
21090SYS"Wimp_SetColour",15
21100FOR x%=0 TO 675 STEP 75:MOVE x%,0:DRAW x%,168:NEXT
21110FOR y%=25 TO 175 STEP 75:MOVE 0,y%-1.5:DRAW 680,y%-1.5:NEXT
21120ENDPROC
21130
21140
21150DEF PROCmessage_mode_independance
21160LOCAL wOS%,hOS%,wP%,hP%,r0%,r1%,r2%,r3%:wOS%=680:hOS%=168
21170PROCos_to_pixels(wOS%,hOS%,wP%,hP%)
21180SYS"OS_SpriteOp",&10F,sarea%,"message",1,wP%,hP%,MODE
21190ENDPROC
21200
21210
21220DEF PROCsave_sum(source$)
21230LOCAL d%,resp%
21240Pcount% +=1:Psave%=-1:Pop%(Pcount%)=operator%(NameNo%):Pdec%(Pcount%)=decimal%(NameNo%)
21250PlimQ%(Pcount%)=FNquest_limit
21260PlimA%(Pcount%)=FNanswer_limit
21270
21280FOR d%=0 TO 4
21290 Pdig1$(Pcount%,d%)=dig1$(d%):Pdig2$(Pcount%,d%)=dig2$(d%)
21300NEXT
21310
21320IF Pcount%=9 THEN
21330 IF source$="S" THEN P2handle%=FNrelative_window(handle%(game%),P2handle%,900,406)
21340 IF source$="P" THEN PROCsum_printout
21350ENDIF
21360ENDPROC
21370
21380
21390DEF PROCprint_out_sums
21400LOCAL start%:start%=Pcount%
21410car_dig%()=0
21420IF Pcount%=9 THEN PROCsum_printout:ENDPROC
21430REPEAT
21440 IF BothOp%(NameNo%)=-1 THEN operator%(NameNo%)=2+(Pcount%-start%<=(8-start%)/2)
21450 IF operator%(NameNo%)=1 THEN PROCmake_add(Alevel%(NameNo%)) ELSE PROCmake_sub(Slevel%(NameNo%))
21460
21470 PROCdigits(num1%,dig1$())
21480 PROCdigits(num2%,dig2$())
21490 PROCsave_sum("P")
21500UNTIL Pcount%=9
21510ENDPROC
21520
21530
21540DEF PROCset_up_printout(RETURN ch%,height%)
21550LOCAL left%,top%
21560SYS"Hourglass_On"
21570ch%=OPENOUT("printer:")
21580SYS"PDriver_SelectJob",ch%,"print_job"
21590SYS"PDriver_PageSize" TO ,,,left%,,,top%
21600!Prect%=0:Prect%!4=height%:Prect%!8=1280:Prect%!12=0
21610!Ptrans%=1<<16:Ptrans%!4=0:Ptrans%!8=0:Ptrans%!12=1<<16
21620!Pplot%=left%+36000:Pplot%!4=top%+height%*400
21630SYS"PDriver_GiveRectangle",0,Prect%,Ptrans%,Pplot%,&FFFFFF00
21640ENDPROC
21650
21660
21670DEF PROCend_printout(ch%)
21680SYS"PDriver_EndJob",ch%
21690SYS"Hourglass_Off"
21700CLOSE#ch%
21710ENDPROC
21720
21730
21740DEF PROCsum_printout
21750LOCAL flg%,ch%
21760LOCAL ERROR
21770ON ERROR LOCAL:RESTORE ERROR:SYS"PDriver_AbortJob",ch%:CLOSE#ch%:SYS"Hourglass_Off":PROCerror("Maths_task"):ENDPROC
21780
21790PROCset_up_printout(ch%,FNheight(Pcount%))
21800
21810SYS"PDriver_DrawPage",1,block%,0,0 TO flg%
21820WHILE flg%
21830 PROCprintout_sum
21840 SYS"PDriver_GetRectangle",,block% TO flg%
21850ENDWHILE
21860PROCend_printout(ch%)
21870RESTORE ERROR
21880ENDPROC
21890
21900
21910DEF FNprintdigx(x%,d%)=x%+75*(4-d%)
21920
21930DEF FNsumY(pos%)
21940IF pos%>4 THEN pos% -=5
21950=y2%-300*pos%
21960
21970DEF FNsumX(pos%)=77-675*(pos%>4)
21980
21990DEF FNheight(no%)
22000IF no%>4 THEN no%=4
22010=-600-300*no%
22020
22030
22040DEF PROCprintout_sum
22050LOCAL x%,d%,symb%,symb$,colx%,limQ%,Y2%,Y%,Y0%,sum%
22060SYS"ColourTrans_SetGCOL",&33333300
22070REM Grid
22080FOR x%=0 TO 1200 STEP 75
22090 MOVE x%,150*(x%>0 AND x%<1200):DRAW x%,-1725
22100NEXT
22110FOR y%=0 TO -1725 STEP -75
22120 RECTANGLE FILL 0,y%-1,1200,1
22130NEXT
22140
22150SYS"ColourTrans_SetGCOL",0
22160SYS"ColourTrans_SetFontColours",,&FFFFFF00,0,6
22170SYS"Font_SetFont",Fhead%
22180
22190SYS"Font_Paint",," "+name$(NameNo%),16,0,-75
22200SYS"Font_Paint",," "+$loadbuff%,16,0,-150
22210SYS"Font_Paint",,FNdate,16,870,-75
22220
22230FOR sum%=0 TO Pcount%
22240 IF Pop%(sum%)=1 THEN symb$="+" ELSE symb$="-"
22250 Y1%=FNsumY(sum%):Y2%=Y1%-75:Y3%=Y1%-150:Y0%=Y1%+92
22260 X1%=FNsumX(sum%)
22270 anslim%=PlimA%(sum%):limQ%=PlimQ%(sum%):symb%=FNprintdigx(X1%,limQ%)
22280
22290 IF Pdig1$(sum%,limQ%)<>"" OR Pdig2$(sum%,limQ%)<>"" THEN symb% -=75
22300 IF Pdig1$(sum%,limQ%)="" AND Pdig2$(sum%,limQ%)="" THEN limQ% -=1
22310
22320 SYS"Font_SetFont",Fsum%
22330 SYS"Font_Paint",,symb$,16,symb%+18,Y2%+4:REM Plus/minus symbol
22340
22350 REM Equals lines
22360 IF Pop%(sum%)=1 THEN x%=FNprintdigx(X1%,anslim%) ELSE x%=FNprintdigx(X1%,limQ%)
22370 IF x%>450 THEN EQw%=1125-x% ELSE EQw%=450-x%
22380 RECTANGLE FILL x%,Y3%+63,EQw%,8
22390 RECTANGLE FILL x%,Y3%-12,EQw%,8
22400
22410 FOR d%=0 TO 4
22420  x%=FNprintdigx(X1%,d%)+18
22430  SYS"Font_Paint",,Pdig1$(sum%,d%),16,x%,Y1%
22440  SYS"Font_Paint",,Pdig2$(sum%,d%),16,x%,Y2%
22450 NEXT
22460
22470 IF Pdec%(sum%) THEN
22480  x%=FNprintdigx(X1%,1)-4
22490  SYS"Font_Paint",,".",16,x%,Y1%+28
22500  SYS"Font_Paint",,".",16,x%,Y2%+28
22510 ENDIF
22520
22530 IF (sum%=0 OR sum%=5 OR Pdec%(sum%)<>Pdec%(sum%+(sum%>0))) AND colname%(NameNo%)=1 THEN
22540  REM Column names
22550  IF Pdec%(sum%)=0 THEN colname$()="u","t","h","th","t th" ELSE colname$()="/100","/10","u","t","h"
22560  FOR d%=0 TO 4
22570   IF colname$(d%)="/100" OR colname$(d%)="/10" THEN SYS"Font_SetFont",Fcol2% ELSE SYS"Font_SetFont",Fcol1%
22580   colx%=FNprintdigx(X1%,d%)+(75-18*LEN colname$(d%))/2-2
22590   IF colname%(NameNo%)=1 THEN SYS"Font_Paint",,colname$(d%),16,colx%,Y0%
22600  NEXT
22610 ENDIF
22620
22630NEXT
22640ENDPROC
22650
22660
22670DEF PROCset_fonts
22680LOCAL resp%:LOCAL ERROR
22690ON ERROR LOCAL:RESTORE ERROR:resp%=FNerror_message("Fonts not seen, click on directory !Fonts","MathsBook",1):PROCend(0):END
22700SYS"Font_FindFont",,"Primary.Bold",330,300 TO Fhead%
22710SYS"Font_FindFont",,"Primary.Bold",450,450 TO Fsum%
22720SYS"Font_FindFont",,"Primary.Bold",258,245 TO Fcol1%
22730SYS"Font_FindFont",,"Primary.Bold",200,240 TO Fcol2%
22731RESTORE ERROR
22740ENDPROC
22750
22760
22770DEF PROClose_fonts
22780SYS"Font_LoseFont",Fhead%
22790SYS"Font_LoseFont",Fsum%
22800SYS"Font_LoseFont",Fcol1%
22810SYS"Font_LoseFont",Fcol2%
22820PROClose_icon_fonts(font%)
22830ENDPROC
22840
22850
22860DEF PROCsave_file(file$)
22870LOCAL ch%,resp%:LOCAL ERROR:notsavedO%=0
22880ON ERROR LOCAL:RESTORE ERROR:resp%=FNerror_message(REPORT$,"Maths_task",0):CLOSE#ch%:ENDPROC
22890$savebuff%=file$:PROCreset_icon(SVhandle%,1)
22900$loadbuff%=FNgetleaf(file$,0)
22910ch%=OPENOUT file$
22920PRINT#ch%,"groupAS",autosaveR%,enprint%,screen%
22930
22940FOR n%=0 TO Ncount%
22950 PRINT#ch%,name$(n%)
22960 BPUT#ch%,Alevel%(n%):BPUT#ch%,Slevel%(n%):BPUT#ch%,MHlevel%(n%):BPUT#ch%,decimal%(n%)
22970 BPUT#ch%,auto%(n%):BPUT#ch%,autohelp%(n%):BPUT#ch%,force%(n%):BPUT#ch%,mode%(n%):BPUT#ch%,tries%(n%)
22980
22990 IF BothOp%(n%) THEN operator%(n%)=3
23000 BPUT#ch%,operator%(n%):BPUT#ch%,no_quest%(n%):BPUT#ch%,Notimer%(n%):BPUT#ch%,timelim%(n%):BPUT#ch%,calc%(n%):BPUT#ch%,printer%(n%):BPUT#ch%,score%(n%):BPUT#ch%,next%(n%):BPUT#ch%,stop%(n%):BPUT#ch%,colname%(n%):BPUT#ch%,estimate%(n%):BPUT#ch%,saveR%(n%):BPUT#ch%,speech%(n%)
23010 BPUT#ch%,newlevR%(n%):BPUT#ch%,-newlevW%(n%):BPUT#ch%,ownsum%(n%)
23020 IF BothOp%(n%) THEN operator%(n%)=1
23030NEXT
23040CLOSE#ch%
23041RESTORE ERROR
23050ENDPROC
23060
23070
23080DEF PROCselect_savebox
23090CASE block%!16 OF
23100 WHEN 0:IF block%!8=64 THEN PROCdrag_icon(SVhandle%,0,5)
23110 WHEN 2:PROCsave_file($savebuff%):PROCclose_window(SVhandle%)
23120        PROCopen_window(Smhandle%)
23130ENDCASE
23140ENDPROC
23150
23160
23170DEF PROCselect_save_text
23180CASE block%!16 OF
23190 WHEN 0:IF block%!8=64 THEN PROCdrag_icon(SVhandle2%,0,5)
23200 WHEN 2:PROCresults_text_file($savetextbuff%):PROCclose_window(SVhandle2%)
23210        PROCopen_window(Smhandle%)
23220ENDCASE
23230ENDPROC
23240
23250
23260DEF PROCset_option_variables
23270LOCAL n%,error%
23280screen%=0:start%=-1
23290NameNo%=0:Ncount%=0:caretx%=0:create%=-2:name$()=""
23300notsavedO%=0:screen%=0:autosaveR%=0
23310$savebuff%="default"
23320PROCload_part("<Obey$Dir>.default",error%)
23330PROCsingle_tick(menu%,7,0):PROCset_windows
23340PROCset_config_title(0)
23350PROCset_preferences(0)
23360PROCclear_windows
23370ENDPROC
23380
23390
23400DEF PROCload_part(file$,RETURN error%)
23410LOCAL ch%:LOCAL ERROR:error%=0
23420ON ERROR:RESTORE ERROR:CLOSE#ch%:$Ricbuff%="Wrong file.":PROCopen_window(Rhandle%):error%=-1:ENDPROC
23430ch%=OPENIN file$
23440INPUT#ch%,header$,autosaveR%,enprint%,screen%
23450IF header$<>"groupAS" THEN CLOSE#ch%:$Ricbuff%="Wrong file.":PROCopen_window(Rhandle%):error%=-1:ENDPROC
23460
23470Ncount%=-1
23480REPEAT
23490 Ncount% +=1
23500 INPUT#ch%,name$(Ncount%)
23510 Alevel%(Ncount%)=BGET#ch%:Slevel%(Ncount%)=BGET#ch%:MHlevel%(Ncount%)=BGET#ch%:Hlevel%(Ncount%)=MHlevel%(Ncount%):decimal%(Ncount%)=BGET#ch%
23520 auto%(Ncount%)=BGET#ch%:autohelp%(Ncount%)=BGET#ch%:force%(Ncount%)=BGET#ch%:mode%(Ncount%)=BGET#ch%:tries%(Ncount%)=BGET#ch%
23530
23540operator%(Ncount%)=BGET#ch%:no_quest%(Ncount%)=BGET#ch%:Notimer%(Ncount%)=BGET#ch%:timelim%(Ncount%)=BGET#ch%:calc%(Ncount%)=BGET#ch%:printer%(Ncount%)=BGET#ch%:score%(Ncount%)=BGET#ch%:next%(Ncount%)=BGET#ch%:stop%(Ncount%)=BGET#ch%:colname%(Ncount%)=BGET#ch%
23550estimate%(Ncount%)=BGET#ch%:saveR%(Ncount%)=BGET#ch%:speech%(Ncount%)=BGET#ch%
23560newlevR%(Ncount%)=BGET#ch%:newlevW%(Ncount%)=-BGET#ch%:ownsum%(Ncount%)=BGET#ch%
23570IF operator%(Ncount%)=3 THEN operator%(Ncount%)=1:BothOp%(Ncount%)=-1
23580UNTIL EOF#ch%=-1
23590CLOSE#ch%
23591RESTORE ERROR
23600ENDPROC
23610
23620
23630DEF PROCload_file(file$)
23640LOCAL ch%,header$,i$,error%,default%:NameNo%=0:notsavedO%=0
23650default%=(FNgetleaf(file$,0)="default" AND $loadbuff%<>"")
23660start%=(default%=0)
23670name$()="":nextfile$=""
23680PROCreset_icon(SVhandle%,1)
23690
23700PROCload_part(file$,error%)
23710IF error% THEN PROCshade_item(rmenu%,3,-1):PROCshade_item(menu%,4,-1):ENDPROC
23720
23730create%=(default%=-1)
23740PROCsingle_tick(rmenu%,4,autosaveR%)
23750PROCsingle_tick(menu%,6,enprint%)
23760PROCsingle_tick(menu%,7,screen%)
23770PROCshade_item(menu%,2,0):PROCshade_item(menu%,4,0)
23780PROCshade_item(menu%,1,-(default%=0))
23790PROCreset_results
23800PROCset_windows
23810PROCclear_windows
23820
23830$icbuff%=FNgetleaf(file$,0)+" is loaded"
23840IF default%=0 THEN PROCopen_window(Ichandle%)
23850ENDPROC
23860
23870
23880DEF PROCreset_results
23890Rcnt%=2:Rcnt2%=2:Rptr%=0:notsavedR%=0:newR%=1
23900FOR n%=0 TO 999 STEP 4:results%!n%=0:NEXT
23910file$=FNgetleaf($savebuff%,0)
23920date$=FNdate
23930st$=" Group file name: "+file$+"  Date: "+date$
23940Rptr%=FNadd_string(Rptr%,st$,0)
23950
23960FOR n%=0 TO 3:PROCshade_item(rmenu%,n%,1):NEXT
23970PROCsingle_tick(rmenu%,4,autosaveR%)
23980ENDPROC
23990
24000DEF FNdate=MID$(TIME$,5,11)
24010
24020DEF FNadd_string(ptr%,st$,down%)
24030LOCAL len%
24040IF down% THEN ?(results%+ptr%)=10
24050IF down%=2 THEN ?(results%+ptr%+1)=10
24060$(results%+ptr%+down%)=st$:len%=LEN st$
24070ptr% +=len%+down%:?(results%+ptr%)=32
24080=ptr%
24090
24100
24110DEF PROCclear_windows
24120IF game%>0 THEN PROCclose_window(handle%(game%))
24130game%=0
24140PROCclose_window(NGhandle%)
24150PROCclose_window(SChandle%)
24160PROCclose_window(Rhandle%)
24170ENDPROC
24180
24190
24200DEF PROCset_preferences(no%)
24210LOCAL n%
24220PROCset_diff_levels(no%)
24230PROCshade_op_levels(no%)
24240$Hbuff%=STR$Hlevel%(no%):PROCreset_icon(Chandle%,31)
24250$MHbuff%=STR$MHlevel%(no%):PROCreset_icon(Chandle%,37)
24260IF force5%=0 THEN Helplev%=Hlevel%(no%)
24270PROCselect_icon(Chandle%,50,autohelp%(no%))
24280PROCset_autohelp(no%)
24290PROCselect_icon(Chandle%,29,(mode%(no%)=1))
24300PROCselect_icon(Chandle%,28,(mode%(no%)=0))
24310PROCadjust_for_mode(no%)
24320PROCselect_icon(Chandle%,34,force%(no%))
24330PROCselect_icon(Chandle%,49,auto%(no%))
24340PROCset_auto(no%)
24350
24360PROCselect_icon(Chandle%,2,(operator%(no%)=1 OR BothOp%(no%)=-1))
24370PROCselect_icon(Chandle%,3,(operator%(no%)=2 OR BothOp%(no%)=-1))
24380PROCset_carry_variableY
24390
24400$Qbuff%=STR$ no_quest%(no%):PROCreset_icon(Chandle%,16)
24410$Tbuff%=STR$ tries%(no%):PROCreset_icon(Chandle%,19)
24420
24430$Tmbuff%=STR$ timelim%(no%):PROCreset_icon(Chandle%,22)
24440PROCselect_icon(Chandle%,25,Notimer%(no%))
24450PROCshade_3icons(Chandle%,22,Notimer%(no%))
24460
24470PROCselect_icon(Chandle%,42,calc%(no%)):PROCset_delete_icon(no%)
24480PROCselect_icon(Chandle%,43,printer%(no%)):PROCset_top_icon(7,(printer%(no%)=1 AND driver%=-1 AND enprint%=-1))
24490PROCselect_icon(Chandle%,44,score%(no%)):PROCset_top_icon(4,-score%(no%))
24500PROCselect_icon(Chandle%,46,next%(no%))
24510PROCselect_icon(Chandle%,47,stop%(no%)):PROCset_top_icon(6,-stop%(no%))
24520PROCselect_icon(Chandle%,48,colname%(no%))
24530PROCselect_icon(Chandle%,45,estimate%(no%))
24540PROCselect_icon(Chandle%,61,saveR%(no%))
24550PROCselect_icon(Chandle%,62,decimal%(no%))
24560IF decimal%(no%) THEN PROCset_dec_levels(no%)
24570
24580$levRbuff%=STR$ newlevR%(no%):PROCreset_icon(Chandle%,53)
24590$levWbuff%=STR$ -newlevW%(no%):PROCreset_icon(Chandle%,59)
24600
24610PROCset_own_sum(no%)
24620PROCselect_icon(Chandle%,67,speech%(no%))
24630PROCshade_icon(Chandle%,64,(game%>0))
24640ENDPROC
24650
24660
24670DEF PROCset_own_sum(no%)
24680PROCselect_icon(Chandle%,63,ownsum%(no%))
24690PROCshade_3icons(Chandle%,5,(ownsum%(no%)=1 OR operator%(no%)=2 AND BothOp%(no%)=0))
24700PROCshade_3icons(Chandle%,8,(ownsum%(no%)=1 OR operator%(no%)=1 AND BothOp%(no%)=0))
24710PROCshade_3icons(Chandle%,53,(ownsum%(no%)=1 OR auto%(no%)=0))
24720PROCshade_3icons(Chandle%,57,(ownsum%(no%)=1 OR auto%(no%)=0))
24730PROCshade_icon(Chandle%,49,ownsum%(no%))
24740
24750IF ownsum%(no%)=0 AND game%=0 THEN start%=-1
24760IF ownsum%(no%)=0 AND game%>0 THEN IF FNwindow_open(handle%(game%))=0 THEN PROCopen_window(handle%(game%))
24770ENDPROC
24780
24790
24800DEF PROCallow_print_results
24810IF driver%=0 THEN IF FNensure_Pdriver THEN driver%=-1
24820FOR n%=1 TO 2:PROCshade_item(rmenu%,n%,NOT(driver%=-1 AND Rcnt%>=4)):NEXT
24830ENDPROC
24840
24850
24860DEF PROCset_diff_levels(no%)
24870$level_buffA%=STR$ Alevel%(no%):PROCreset_icon(Chandle%,5)
24880$level_buffS%=STR$ Slevel%(no%):PROCreset_icon(Chandle%,8)
24890ENDPROC
24900
24910
24920DEF PROCshade_op_levels(no%)
24930PROCshade_3icons(Chandle%,5,(operator%(no%)=2 AND BothOp%(no%)=0))
24940PROCshade_3icons(Chandle%,8,(operator%(no%)=1 AND BothOp%(no%)=0))
24950ENDPROC
24960
24970
24980DEF PROCset_dec_levels(no%)
24990IF Alevel%(no%)<6 THEN Alevel%(no%)=6
25000IF Slevel%(no%)<6 THEN Slevel%(no%)=6
25010PROCset_diff_levels(no%)
25020ENDPROC
25030
25040
25050DEF PROCset_top_icon(icon%,var%)
25060LOCAL n%
25070FOR n%=1 TO 2
25080 PROCshade_icon(handle%(n%),icon%,NOTvar%)
25090NEXT
25100ENDPROC
25110
25120
25130DEF PROCselect_score
25140LOCAL icon%,r%:icon%=block%!16
25150IF icon%=9 OR icon%=10 OR icon%=12 THEN PROCclose_window(SChandle%)
25160IF icon%=10 THEN PROCbuild_name_windowG
25170IF icon%=11 THEN PROCprint_out_sums
25180ENDPROC
25190
25200
25210DEF PROCcalcalator(icon%)
25220LOCAL flg%
25230IF CCprev%=-1 AND icon%>10 AND icon%<16 THEN CCop%=icon%:flg%=(icon%>11)
25240IF flg% THEN ENDPROC
25250IF icon%<=10 THEN
25260 IF CCop%=0 THEN CCsum=0:CCstart%=0
25270 IF icon%<10 AND LEN CCnum$<8 THEN CCnum$=CCnum$+STR$icon%
25280 IF icon%=10 THEN CCnum$=CCnum$+"."
25290 CCnum=VAL CCnum$:CCprev%=0
25300 PROCcalc_display(CCnum$,"1")
25310ELSE
25320 CCnum$="":CCprev%=(icon%<>11)
25330 IF icon%=16 THEN CCop%=16
25340 IF CCstart%=0 THEN
25350  IF CCop%=16 THEN
25360   CCsum=0:CCop%=0:PROCcalc_display(STR$ CCsum,"2")
25370  ELSE
25380   CCop%=icon%:CCstart%=-1:CCsum=CCnum
25390  ENDIF
25400 ELSE
25410  CASE CCop% OF
25420   WHEN 12:CCsum +=CCnum
25430   WHEN 13:CCsum -=CCnum
25440   WHEN 14:CCsum=CCsum*CCnum
25450   WHEN 15:IF CCnum<>0 THEN CCsum=CCsum/CCnum ELSE CCsum=1E9
25460   WHEN 16:CCsum=0
25470  ENDCASE
25471  IF CCop%=12 OR CCop%=13 THEN CCsum +=2E-8*SGN CCsum
25480  PROCcalc_display(STR$ CCsum,"2")
25490  IF icon%>11 AND icon%<16 THEN CCop%=icon% ELSE CCop%=0
25500 ENDIF
25510ENDIF
25520ENDPROC
25530
25540
25550DEF PROCcalc_display(var$,source$)
25560IF ABS VALvar$<1E9 THEN
25570 IF ABS VALvar$<1E-8 AND ABS VALvar$>0 THEN var$="0"
25580 IF INSTR(var$,"E") THEN var$=FNremove_exp(var$)
25590 var$=LEFT$(var$,8)
25600 IF RIGHT$(var$,1)="0" AND INSTR(var$,".")>0 AND source$="2" THEN var$=FNremove_zeros(var$)
25610 $CCbuff%=var$
25620ELSE
25630 IF VAL var$>0 THEN $CCbuff%="Too big" ELSE $CCbuff%="Too small"
25640 CCsum=0:icon%=16
25650ENDIF
25660PROCreset_icon(CChandle%,17)
25670ENDPROC
25680
25690
25700DEF FNremove_exp(var$)
25710LOCAL p%,sgn%
25720p%=VAL RIGHT$(var$,1):sgn%=SGN VALvar$
25730var$=LEFT$(var$,LENvar$-3)
25740IF sgn%<0 THEN var$=RIGHT$(var$,LENvar$-1)
25750IF MID$(var$,2,1)="." THEN var$=LEFT$(var$,1)+RIGHT$(var$,LENvar$-2)
25760var$="."+STRING$(p%-1,"0")+var$
25770IF sgn%<0 THEN var$="-"+var$
25780=var$
25790
25800DEF FNremove_zeros(var$)
25810WHILE RIGHT$(var$,1)="0"
25820 var$=LEFT$(var$,LENvar$-1)
25830ENDWHILE
25840=var$
25850
25860
25870DEF PROCkeys_calc
25880LOCAL icon%:icon%=-1
25890char%=block%!24
25900IF char%>=48 AND char%<=57 THEN icon%=char%-48
25910IF !block%=CChandle% THEN
25920 CASE char% OF
25930  WHEN 43:icon%=12
25940  WHEN 45:icon%=13
25950  WHEN 42:icon%=14
25960  WHEN 47:icon%=15
25970  WHEN 35,67,99,127,&1B:icon%=16
25980  WHEN 46:icon%=10
25990  WHEN 13,61:icon%=11
26000 ENDCASE
26010ENDIF
26020IF icon%>-1 THEN PROCcalcalator(icon%) ELSE SYS"Wimp_ProcessKey",char%
26030ENDPROC
26040
26050
26060DEF PROCbuild_name_windowG
26070LOCAL icon%,y%
26080PROCdelete_icon(NGhandle%,49,(create%<0)):REM message
26090PROCdelete_icon(NGhandle%,50,(create%=0)):REM message
26100PROCdelete_icon(NGhandle%,51,(create%=0))
26110PROCdelete_icon(NGhandle%,52,(create%=0))
26120PROCdelete_icon(NGhandle%,46,(create%=0))
26130PROCdelete_icon(NGhandle%,47,(create%=0))
26140PROCdelete_icon(NGhandle%,54,(create%<0))
26150PROCshade_item(menu%,1,1)
26160IF Ncount% THEN PROCclear_spaces
26170NameNo%=-(Ncount%=0)
26180PROCset_new_name_levels(Ncount%+1,0)
26190FOR icon%=1 TO 42
26200 PROCselect_icon(NGhandle%,icon%,0)
26210 PROCdelete_icon(NGhandle%,icon%,(icon%>Ncount%-(Ncount%<42)))
26220NEXT
26230IF Ncount%<42 THEN IF Ncount%=0 THEN PROCselect_icon(NGhandle%,Ncount%+1,1)
26240IF create% THEN $Ntitlebuff%=$loadbuff%+" editing screen" ELSE $Ntitlebuff%=$loadbuff%+" name input"
26250NGhandle%=FNcentre_window(NGhandle%,"")
26260PROCclose_window(Chandle%)
26270PROCloadbox_windows(0)
26280IF Ncount%=0 THEN PROCplace_name_caret(Ncount%+1,0)
26290ENDPROC
26300
26310
26320DEF PROCclear_spaces
26330LOCAL newpos%,oldpos%
26340newpos%=0:oldpos%=0
26350REPEAT
26360 newpos% +=1:oldpos% +=1
26370 WHILE name$(oldpos%)="" AND oldpos%<Ncount%
26380  oldpos% +=1
26390 ENDWHILE
26400 IF name$(oldpos%)<>"" THEN
26410  name$(newpos%)=name$(oldpos%)
26420  Alevel%(newpos%)=Alevel%(oldpos%):Slevel%(newpos%)=Slevel%(oldpos%)
26430  MHlevel%(newpos%)=MHlevel%(oldpos%):Hlevel%(newpos%)=Hlevel%(oldpos%)
26440  tries%(newpos%)=tries%(oldpos%):mode%(newpos%)=mode%(oldpos%)
26450  force%(newpos%)=force%(oldpos%):auto%(newpos%)=auto%(oldpos%)
26460  autohelp%(newpos%)=autohelp%(oldpos%):operator%(newpos%)=operator%(oldpos%)
26470  no_quest%(newpos%)=no_quest%(oldpos%):timelim%(newpos%)=timelim%(oldpos%)
26480  Notimer%(newpos%)=Notimer%(oldpos%):calc%(newpos%)=calc%(oldpos%)
26490  score%(newpos%)=score%(oldpos%):next%(newpos%)=next%(oldpos%)
26500  stop%(newpos%)=stop%(oldpos%):colname%(newpos%)=colname%(oldpos%)
26510  estimate%(newpos%)=estimate%(oldpos%):BothOp%(newpos%)=BothOp%(oldpos%)
26520  newlevR%(newpos%)=newlevR%(oldpos%):newlevW%(newpos%)=newlevW%(oldpos%)
26530  saveR%(newpos%)=saveR%(oldpos%):decimal%(newpos%)=decimal%(oldpos%)
26540  ownsum%(newpos%)=ownsum%(oldpos%):speech%(newpos%)=speech%(oldpos%)
26550 ELSE
26560  newpos% -=1
26570 ENDIF
26580UNTIL oldpos%=Ncount%
26590Ncount%=newpos%:name$(Ncount%+1)=""
26600ENDPROC
26610
26620
26630DEF PROCplace_name_caret(pos%,redraw%)
26640caretx%=FNcaretx(pos%):y%=FNnameposy(pos%)-28
26650SYS"Wimp_SetCaretPosition",NGhandle%,-1,caretx%,y%,32
26660IF redraw% THEN PROCredraw_name(pos%)
26670ENDPROC
26680
26690
26700DEF PROCplace_char_caret(pos%)
26710x%=FNnameposx(pos%)-6:y%=FNnameposy(pos%)-28
26720caretx%=FNcaretx(pos%)
26730SYS"Wimp_SetCaretPosition",NGhandle%,-1,caretx%,y%,32
26740SYS"Wimp_ForceRedraw",NGhandle%,x%,y%,x%+298,y%+32
26750ENDPROC
26760
26770
26780DEF PROCredraw_name(pos%)
26790x%=FNnameposx(pos%)-6:y%=FNnameposy(pos%)-32
26800SYS"Wimp_ForceRedraw",NGhandle%,x%,y%,x%+306,y%+44
26810ENDPROC
26820
26830
26840DEF PROCname_input_area(pos%)
26850x%=FNnameposx(pos%)-6:y%=FNnameposy(pos%)-32
26860SYS"Wimp_SetColour",0:RECTANGLE FILL ox%+x%,oy%+y%,304,40
26870SYS"Wimp_SetColour",7:RECTANGLE ox%+x%,oy%+y%,304,40
26880ENDPROC
26890
26900
26910DEF FNnameposx(n%)=110-384*(n%>14)-384*(n%>28)
26920DEF FNcaretx(n%)=FNnameposx(n%)+16*LENname$(n%)
26930DEF FNnameposy(n%)=-196-48*n%-672*(n%>14)-672*(n%>28)
26940
26950
26960DEF PROCredraw_class_list
26970LOCAL x%,y%,n%
26980IF (create%<0 OR NameNo%=Ncount%+1) AND FNicon_selected(NGhandle%,NameNo%)=-1 THEN PROCname_input_area(NameNo%)
26990
27000FOR n%=1 TO Ncount%+1
27010 IF n%<=42 THEN
27020  x%=FNnameposx(n%):y%=FNnameposy(n%)
27030  MOVE ox%+x%,oy%+y%:PRINTname$(n%)
27040 ENDIF
27050NEXT
27060
27070IF Ncount%<42 THEN
27080 IF name$(Ncount%+1)="" AND FNicon_selected(NGhandle%,Ncount%+1)=0 THEN
27090  x%=FNnameposx(Ncount%+1):y%=FNnameposy(Ncount%+1)
27100  SYS"Wimp_SetColour",11
27110  MOVE ox%+x%,oy%+y%:PRINT "I'm new"
27120 ENDIF
27130ENDIF
27140ENDPROC
27150
27160
27170DEF PROCkeys_name(pos%)
27180LOCAL ch%,valid%,len%,x%,y%,flg%:ch%=block%!24
27190valid%=((ch%>=65 AND ch%<=90 OR ch%>=97 AND ch%<=122 OR ch%=32) AND LENname$(pos%)<18 OR (ch%=127 OR ch%=13 OR ch%=8 OR ch%=&18C) AND name$(pos%)<>"" AND NameNo%>0)
27200IF ch%=13 THEN flg%=FNcheck_name
27210IF flg%=-1 THEN ENDPROC
27220IF valid%=0 THEN SYS"Wimp_ProcessKey",ch%:ENDPROC
27230
27240IF ch%=13 AND Ncount%<42 THEN
27250 IF create% THEN
27260  IF pos%<Ncount%+1 THEN
27270   PROCselect_icon(NGhandle%,pos%,0)
27280   PROCselect_icon(NGhandle%,pos%+1,1)
27290   block%!16=pos%+1:PROCedit_nameG
27300  ELSE
27310   IF pos%=Ncount%+1 AND name$(Ncount%+1)<>"" THEN
27320   REM PROCnew_name(-1)
27330   PROCredraw_name(Ncount%)
27340   ENDIF
27350  ENDIF
27360 ELSE
27370  block%!16=50:PROCselect_nameG
27380 ENDIF
27390ENDIF
27400IF ch%=13 THEN ENDPROC
27410
27420IF pos%=Ncount%+1 THEN $DemIc%="can track up to 42 children.":Demhandle%=FNcentre_window(Demhandle%,"Y"):ENDPROC
27430
27440IF (ch%<>127 AND ch%<>8 AND ch%<>&18C) THEN
27450 name$(pos%)=name$(pos%)+CHR$ch%
27460ELSE
27470 len%=LEN name$(pos%)-1
27480 name$(pos%)=LEFT$(name$(pos%),len%)
27490ENDIF
27500
27510PROCplace_char_caret(pos%)
27520ENDPROC
27530
27540
27550DEF PROCset_new_name_levels(no%,no2%)
27560Alevel%(no%)=Alevel%(no2%):Slevel%(no%)=Slevel%(no2%)
27570MHlevel%(no%)=MHlevel%(no2%):Hlevel%(no%)=Hlevel%(no2%)
27580tries%(no%)=tries%(no2%)
27590mode%(no%)=mode%(no2%):force%(no%)=force%(no2%):auto%(no%)=auto%(no2%):autohelp%(no%)=autohelp%(no2%)
27600operator%(no%)=operator%(no2%):no_quest%(no%)=no_quest%(no2%):timelim%(no%)=timelim%(no2%):Notimer%(no%)=Notimer%(no2%):calc%(no%)=calc%(no2%):score%(no%)=score%(no2%)
27610next%(no%)=next%(no2%):stop%(no%)=stop%(no2%):colname%(no%)=colname%(no2%):printer%(no%)=printer%(no2%)
27620estimate%(no%)=estimate%(no2%):newlevR%(no%)=newlevR%(no2%):newlevW%(no%)=newlevW%(no2%):BothOp%(no%)=BothOp%(no2%):saveR%(no%)=saveR%(no2%):decimal%(no%)=decimal%(no2%):ownsum%(no%)=ownsum%(no2%):speech%(no%)=speech%(no2%)
27630PROCset_preferences(no%)
27640ENDPROC
27650
27660
27670DEF PROCstore_name_levels
27680Alevel%(43)=Alevel%(0):Slevel%(43)=Slevel%(0)
27690MHlevel%(43)=MHlevel%(0):Hlevel%(43)=Hlevel%(0)
27700tries%(43)=tries%(0)
27710mode%(43)=mode%(0):force%(43)=force%(0):auto%(43)=auto%(0):autohelp%(43)=autohelp%(0)
27720operator%(43)=operator%(0):no_quest%(43)=no_quest%(0):timelim%(43)=timelim%(0):Notimer%(43)=Notimer%(0):calc%(43)=calc%(0):score%(43)=score%(0)
27730next%(43)=next%(0):stop%(43)=stop%(0):colname%(43)=colname%(0):printer%(43)=printer%(0)
27740estimate%(43)=estimate%(0):newlevR%(43)=newlevR%(0):newlevW%(43)=newlevW%(0):BothOp%(43)=BothOp%(0):saveR%(43)=saveR%(0):decimal%(43)=decimal%(0):ownsum%(43)=ownsum%(0):speech%(43)=speech%(0)
27750ENDPROC
27760
27770
27780DEF PROCdefault_options
27790PROCselect_icon(NGhandle%,NameNo%,0)
27800SYS"Wimp_SetCaretPosition",NGhandle%
27810IF NameNo% THEN SYS"Wimp_ForceRedraw",NGhandle%,0,-976,1180,-170
27820NameNo%=0
27830PROCset_config_title(0)
27840PROCset_preferences(0)
27850PROCopen_window(Chandle%)
27860ENDPROC
27870
27880
27890DEF PROCnew_name(redraw%)
27900IF Ncount%<41 THEN PROCselect_icon(NGhandle%,NameNo%,0)
27910Ncount% -=(Ncount%<42):NameNo%=Ncount%-(Ncount%<42)
27920IF Ncount%=42 THEN ENDPROC
27930PROCdelete_icon(NGhandle%,Ncount%+1,0)
27940PROCselect_icon(NGhandle%,Ncount%+1,1)
27950PROCset_new_name_levels(Ncount%+1,0)
27960IF redraw% THEN PROCplace_name_caret(Ncount%+1,redraw%)
27970PROCset_config_title(Ncount%+1)
27980ENDPROC
27990
28000
28010DEF PROCset_config_title(no%)
28020IF no%=0 THEN
28030 $titlebuffC%="Group '"+FNgetleaf($savebuff%,0)+"' defaults"
28040ELSE
28050 $titlebuffC%="Options "+name$(no%)
28060ENDIF
28070PROCdelete_icon(Chandle%,64,(no%>0))
28080PROCdelete_icon(Chandle%,66,(no%>0))
28090PROCdelete_icon(Chandle%,68,(no%>0))
28100PROCdelete_icon(Chandle%,65,(no%=0))
28110PROCdelete_icon(Chandle%,51,(no%=0))
28120PROCshade_icon(Chandle%,65,(game%>0))
28130IF no%=0 THEN PROCstore_name_levels:alter%=0
28140IF FNwindow_open(Chandle%) THEN
28150 PROCclose_window(Chandle%)
28160 PROCopen_window(Chandle%)
28170ENDIF
28180ENDPROC
28190
28200
28210DEF PROCedit_nameG
28220LOCAL invalid%,icon%,flg%
28230icon%=block%!16:notsavedO%=-1
28240IF icon%>=1 AND icon%<=42 OR icon%>=50 THEN flg%=FNcheck_name
28250IF flg%=-1 AND icon%>=50 THEN ENDPROC
28260IF icon%=Ncount%+1 THEN $DemIc%="can track up to 42 children.":Demhandle%=FNcentre_window(Demhandle%,"Y")
28270
28280IF icon%>=1 AND icon%<=42 THEN
28290 IF NameNo%=Ncount%+1 AND name$(NameNo%)<>"" AND Ncount%<41 THEN
28300  REM Ncount% +=1
28310  REM PROCdelete_icon(NGhandle%,Ncount%+1,0)
28320  REM PROCset_new_name_levels(Ncount%+1,0)
28330  REM PROCredraw_name(Ncount%+1)
28340 ENDIF
28350
28360 IF NameNo% THEN PROCredraw_name(NameNo%)
28370 NameNo%=icon%:PROCplace_name_caret(NameNo%,-1)
28380 PROCset_config_title(NameNo%)
28390 IF NameNo%=Ncount%+1 THEN PROCset_new_name_levels(NameNo%,0) ELSE PROCset_preferences(NameNo%)
28400ENDIF
28410
28420CASE icon% OF
28430 WHEN -1:IF NameNo% THEN PROCplace_name_caret(NameNo%,-1)
28440 WHEN 50:IF Ncount%<42 THEN IF name$(Ncount%+1)<>"" THEN PROCnew_name(-1)
28450         REM PROCsave_file($savebuff%)
28460         PROCclose_window(NGhandle%):PROCclose_window(Chandle%)
28470         create%=0:NameNo%=0:PROCclose_window(Edhandle%)
28480 WHEN 51:PROCdefault_options
28490 WHEN 52:IF NameNo% THEN
28500          PROCset_config_title(NameNo%):PROCset_preferences(NameNo%)
28510          PROCopen_window(Chandle%)
28520         ENDIF
28530ENDCASE
28540PROCshade_item(menu%,1,-(NameNo%=0))
28550ENDPROC
28560
28570
28580DEF FNcheck_name
28590LOCAL n%,flg%:n%=0:flg%=0
28600REPEAT
28610 n% +=1
28620 IF name$(n%)=name$(NameNo%) AND n%<>NameNo% AND name$(NameNo%)<>"" THEN flg%=-1
28630UNTIL flg%=-1 OR n%=Ncount%+1
28640IF flg% THEN
28650 name$(NameNo%)="":Edhandle%=FNcentre_window(Edhandle%,"Y")
28660 PROCplace_name_caret(NameNo%,-1)
28670ELSE
28680 PROCclose_window(Edhandle%)
28690ENDIF
28700=flg%
28710
28720
28730DEF PROCresults_next_name
28740LOCAL n%,lev$,Alev$,Slev$,help$,st$:Rcnt% +=2:Rcnt2% +=2
28750
28760IF mode%(NameNo%) THEN lev$=STR$Helplev% ELSE lev$="None"
28770IF ownsum%(NameNo%)=0 THEN Alev$=STR$ Alevel%(NameNo%):Slev$=STR$ Slevel%(NameNo%) ELSE Alev$=" -":Slev$=" -"
28780IF autohelp%(NameNo%) THEN help$=" Min help:" ELSE help$=" Help level:"
28790
28800st$=" Name: "+name$(NameNo%)+"  Start levels: add:"+Alev$+" sub:"+Slev$+help$+lev$
28810Rptr%=FNadd_string(Rptr%,st$,2)
28820PROCshade_item(rmenu%,0,0)
28830PROCshade_item(rmenu%,3,0)
28840ENDPROC
28850
28860
28870DEF PROCselect_nameG
28880LOCAL invalid%,icon%,flg%,flg2%:icon%=block%!16
28890flg2%=FNcheck_name
28900IF flg2%=-1 AND icon%=54 THEN ENDPROC
28910IF icon%>=1 AND icon%<=42 THEN
28920 IF NameNo%=Ncount%+1 THEN PROCredraw_name(NameNo%)
28930 IF icon%=Ncount%+1 THEN $DemIc%="can track up to 42 children.":Demhandle%=FNcentre_window(Demhandle%,"Y")
28940 NameNo%=icon%:flg%=-1
28950 PROCset_config_title(NameNo%)
28960 PROCset_preferences(NameNo%)
28970 IF icon%=Ncount%+1 THEN
28980  PROCplace_name_caret(NameNo%,-1)
28990 ELSE
29000  SYS"Wimp_SetCaretPosition",NGhandle%
29010 ENDIF
29020 IF Rptr%+90+42*no_quest%(NameNo%)>44000 AND saveR%(NameNo%)=1 THEN resp%=FNerror_message("The results file is now full, please tell your teacher","MathsBook",17)
29030 PROCshade_item(menu%,1,-(NameNo%=0))
29040ENDIF
29050IF flg% THEN ENDPROC
29060
29070IF Ncount%<42 THEN IF icon%=-1 AND FNicon_selected(NGhandle%,Ncount%+1)=-1 THEN PROCplace_name_caret(NameNo%,-1):ENDPROC
29080IF Ncount%<42 THEN IF icon%=54 AND (NameNo%=Ncount%+1 OR NameNo%=0) AND name$(Ncount%+1)="" THEN ENDPROC
29090IF icon%=54 THEN
29100 PROCclose_window(NGhandle%)
29110 REM IF NameNo%=Ncount%+1 AND name$(NameNo%)<>"" THEN PROCnew_name(0):NameNo%=Ncount%:notsavedO%=-1
29120 $titlebuff1%="Addition "+name$(NameNo%)
29130 $titlebuff2%="Subtraction "+name$(NameNo%)
29140 $titlebuffC%="Options "+name$(NameNo%)
29150 start%=0
29160 IF ownsum%(NameNo%)=0 THEN game%=operator%(NameNo%)
29170 IF saveR%(NameNo%) THEN
29180  IF Rptr%+90+42*no_quest%(NameNo%)>44000 THEN PROCreset_results
29190 ENDIF
29200 PROCclose_window(Edhandle%)
29210 IF ownsum%(NameNo%)=0 THEN PROCopen_window(handle%(game%))
29220 PROCreset_game:newR%=saveR%(NameNo%)
29230ENDIF
29240ENDPROC
29250
29260
29270DEF PROCprintout_results(all%)
29280LOCAL flg%,height%,ch%
29290IF all% THEN height%=Rcnt% ELSE height%=Rcnt2%
29300height%=-32*height%
29310LOCAL ERROR
29320ON ERROR LOCAL:RESTORE ERROR:SYS"PDriver_AbortJob",ch%:CLOSE#ch%:SYS"Hourglass_Off":PROCerror("Maths_Task"):ENDPROC
29330
29340PROCset_up_printout(ch%,height%)
29350
29360SYS"ColourTrans_SetGCOL",0
29370SYS"PDriver_DrawPage",1,block%,0,0 TO flg%
29380WHILE flg%
29390 PROCset_results_window(0,0,all%)
29400 SYS"PDriver_GetRectangle",,block% TO flg%
29410ENDWHILE
29420
29430PROCend_printout(ch%)
29440RESTORE ERROR
29450ENDPROC
29460
29470
29480DEF PROCresults_text_file(file$)
29490LOCAL ch%:notsavedR%=0
29500ch%=OPENOUT file$
29510FOR n%=0 TO Rptr%
29520 BPUT#ch%,?(results%+n%)
29530NEXT
29540CLOSE#ch%
29550OSCLI "SetType "+file$+" FFF"
29560$savetextbuff%=file$:PROCreset_icon(SVhandle2%,1)
29570ENDPROC
29580
29590
29600DEF PROCset_results_window(ox%,oy%,all%)
29610LOCAL x%,y%,ptr%,ch%,ch$,X%
29620y%=-32:ptr%=-1:X%=-1
29630REPEAT
29640 ptr% +=1
29650 ch%=?(results%+ptr%):ch$=CHR$ch%
29660
29670 IF ch$="(" AND all%=0 THEN
29680  WHILE ch%<>10 AND ptr%<Rptr%
29690   ptr% +=1:ch%=?(results%+ptr%)
29700  ENDWHILE
29710  IF ?(results%+ptr%+1)=10 THEN ptr% +=1:X%=-1
29720 ELSE
29730  IF ch%<>10 THEN
29740   IF y%+oy%>=block%!32 AND y%+oy%<=block%!40+32 OR ox%=0 AND oy%=0 THEN X% +=1:MOVE ox%,oy%+y%:PRINTTAB(X%);ch$
29750  ELSE
29760   y% -=32:X%=-1
29770  ENDIF
29780 ENDIF
29790UNTIL ptr%=Rptr%
29800ENDPROC
29810
29820
29830DEF PROCset_windows
29840LOCAL n%,x1%,x2%,y1%,y2%
29850IF screen% THEN
29860 FOR n%=1 TO 2
29870  handle%(n%)=FNwhole_screen_window(handle%(n%))
29880 NEXT
29890 NGhandle%=FNwhole_screen_window(NGhandle%)
29900 SChandle%=FNwhole_screen_window(SChandle%)
29910ELSE
29920 FOR n%=1 TO 2
29930  handle%(n%)=FNordinary_window(handle%(n%),1276,844,"",&EF000002)
29940 NEXT
29950 NGhandle%=FNordinary_window(NGhandle%,1192,916,"",&BF001002)
29960 SChandle%=FNordinary_window(SChandle%,748,856,"Y",&87000012)
29970ENDIF
29980ENDPROC
29990
30000
30010DEF PROCset_up_sum_window
30020PROCset_own_sum_operators(NameNo%):startOwn%=0
30030IF decimal%(NameNo%) THEN $Osum1buff%="0.00":$Osum2buff%="0.00" ELSE $Osum1buff%="0":$Osum2buff%="0"
30040PROCreset_icon(Ohandle%,3):PROCreset_icon(Ohandle%,4)
30050IF BothOp%(NameNo%) THEN PrevOp%=operator%(NameNo%)
30060IF ownOp%=1 THEN $Osgnbuff%="+" ELSE $Osgnbuff%="-"
30070Ohandle%=FNcentre_window(Ohandle%,"Y"):Owin%=-1
30080IF game%>0 THEN drag%=0:SYS"Wimp_ForceRedraw",handle%(game%),dragx%,dragy%,dragx%+75,dragy%+75
30090SYS"Wimp_SetCaretPosition",Ohandle%,3,88,-232,-1,-1
30100ENDPROC
30110
30120
30130DEF PROCselect_sum_window
30140LOCAL icon%:icon%=block%!16
30150CASE icon% OF
30160 WHEN -1:SYS"Wimp_SetCaretPosition",Ohandle%,3,88,-232,-1,-1
30170 WHEN 6:PROCset_up_own_sum
30180 WHEN 8,9:ownOp%=icon%-7
30190          IF ownOp%=1 THEN $Osgnbuff%="+" ELSE $Osgnbuff%="-"
30200          PROCreset_icon(Ohandle%,5)
30210 WHEN 7:PROCmake_one_for_me
30220ENDCASE
30230ENDPROC
30240
30250
30260DEF PROCmake_one_for_me
30270LOCAL num1,num2
30280IF ownOp%=1 THEN PROCmake_add(Alevel%(NameNo%)) ELSE PROCmake_sub(Slevel%(NameNo%))
30290IF decimal%(NameNo%)=0 THEN
30300 $Osum1buff%=STR$num1%:$Osum2buff%=STR$num2%
30310ELSE
30320 $Osum1buff%=FNset_dec(STR$(num1%/100)):$Osum2buff%=FNset_dec(STR$(num2%/100))
30330ENDIF
30340PROCreset_icon(Ohandle%,3):PROCreset_icon(Ohandle%,4)
30350ENDPROC
30360
30370
30380DEF PROCown_sum_keys
30390CASE block%!24 OF
30400 WHEN &18F:SYS"Wimp_SetCaretPosition",Ohandle%,3,88,-232,-1,-1
30410 WHEN &18E:SYS"Wimp_SetCaretPosition",Ohandle%,4,88,-304,-1,-1
30420OTHERWISE
30430 SYS"Wimp_ProcessKey",block%!24
30440ENDCASE
30450ENDPROC
30460
30470
30480DEF PROCset_up_own_sum
30490LOCAL buff$,flg%,osum$:flg%=0:correct%=0
30500buff$=FNset_dec($Osum1buff%)
30510IF buff$<>$Osum1buff% THEN $Osum1buff%=buff$:PROCreset_icon(Ohandle%,3):flg%=-1
30520buff$=FNset_dec($Osum2buff%)
30530IF buff$<>$Osum2buff% THEN $Osum2buff%=buff$:PROCreset_icon(Ohandle%,4):flg%=-1
30540IF decimal%(NameNo%) AND (VAL $Osum1buff%<1 OR VAL $Osum2buff%<1) THEN flg%=-1
30550IF flg%=-1 THEN ENDPROC
30560
30570IF decimal%(NameNo%) THEN num1%=FNdec_val($Osum1buff%):num2%=FNdec_val($Osum2buff%) ELSE num1%=VAL $Osum1buff%:num2%=VAL $Osum2buff%
30580
30590IF num1%=0 OR num2%=0 OR ownOp%=2 AND num2%>=num1% THEN ENDPROC
30600
30610IF ownOp%=1 THEN ans%=num1%+num2% ELSE ans%=num1%-num2%
30620
30630PROCclose_window(Ohandle%)
30640PrevOp%=operator%(NameNo%):operator%(NameNo%)=ownOp%
30650game%=operator%(NameNo%):Owin%=0
30660PROCopen_window(handle%(game%)):PROCset_sum
30670ENDPROC
30680
30690
30700DEF FNdec_val(var$)=VAL(LEFT$(var$,LEN var$-3)+RIGHT$(var$,2))
30710
30720
30730DEF FNset_dec(st$)
30740LOCAL pt%,len%,cut%,maxlen%
30750pt%=INSTR(st$,"."):len%=LEN st$:cut%=len%-pt%-2
30760maxlen%=6+(ownOp%=1)+(decimal%(NameNo%)=0)
30770IF decimal%(NameNo%) THEN
30780 IF pt% THEN
30790  IF cut%>0 THEN st$=LEFT$(st$,len%-cut%)
30800  IF cut%=-1 THEN st$=st$+"0"
30810  IF cut%=-2 THEN st$=st$+"00"
30820 ELSE
30830  st$=st$+".00"
30840 ENDIF
30850ELSE
30860 IF pt% THEN st$=LEFT$(st$,pt%-1)
30870ENDIF
30880len%=LEN st$
30890IF len%>maxlen% THEN st$=RIGHT$(st$,maxlen%)
30900=st$
30910
30920
30930REM *******************************
30940REM ***WIMP AND DESKTOP ROUTINES***
30950REM *******************************
30960
30970REM Icons
30980
30990DEF FNicon(whandle%,x%,y%,w%,h%,flg%,name$,ptr1%,ptr2%,ptr3%)
31000REM General purpose icon creation procedure.
31010LOCAL handle%
31020!block%=whandle%
31030block%!4=x%:block%!8=y%:block%!12=w%+x%:block%!16=h%+y%
31040block%!20=flg%
31050
31060IF ptr1%=0 THEN
31070 $(block%+24)=name$
31080ELSE
31090 REM Indirected.
31100 $ptr1%=name$
31110 block%!24=ptr1%:block%!28=ptr2%:block%!32=ptr3%
31120ENDIF
31130
31140SYS"Wimp_CreateIcon",,block% TO handle%
31150=handle%
31160
31170
31180DEF FNicon_bar_icon(sprite$)
31190=FNicon(-1,0,0,68,68,&3002,sprite$,0,0,0)
31200
31210
31220REM Address of buffer of an indirected icon in window definition.
31230DEF FNicon_buffer(num%)=block%!(108+32*num%)
31240
31250
31260DEF FNincrement_buffer(whandle%,ihandle%,var%,ptr%,inc%,range%)
31270REM Increments an icon
31280IF var%=range% THEN =var%
31290var%=VAL $ptr%:var% +=inc%
31300$ptr%=STR$var%
31310PROCreset_icon(whandle%,ihandle%)
31320=var%
31330
31340
31350DEF FNinc_buffer(whandle%,ihandle%,var%,ptr%,inc%,lowR%,highR%,up%)
31360IF up% THEN up%=(block%!8=4) ELSE up%=(block%!8=1)
31370IF up% THEN
31380 var%=FNincrement_buffer(whandle%,ihandle%,var%,ptr%,inc%,highR%)
31390ELSE
31400 var%=FNincrement_buffer(whandle%,ihandle%,var%,ptr%,-inc%,lowR%)
31410ENDIF
31420=var%
31430
31440
31450
31460DEF PROCreset_icon(whandle%,ihandle%)
31470REM For auto_redraw windows. Resets icon where a buffer is altered.
31480!block%=whandle%:block%!4=ihandle%
31490block%!8=0:block%!12=0
31500SYS"Wimp_SetIconState",,block%
31510ENDPROC
31520
31530
31540DEF FNicon_selected(whandle%,ihandle%)
31550REM Tests if radio icon is in selected state
31560!block%=whandle%:block%!4=ihandle%
31570SYS"Wimp_GetIconState",,block%
31580=((block%?26 AND 32)=32)
31590
31600
31610DEF PROCset_icon_flag(whandle%,ihandle%,bit%,set%)
31620REM Alters an icon flag. If set% is set then sets flag else unsets it.
31630!block%=whandle%:block%!4=ihandle%
31640IF set% THEN block%!8=1<<bit%:block%!12=1<<bit% ELSE block%!8=0:block%!12=1<<bit%
31650SYS"Wimp_SetIconState",,block%
31660ENDPROC
31670
31680
31690DEF PROCalter_button_type(whandle%,ihandle%,type%)
31700REM Alters button type of an icon
31710LOCAL N%,P%
31720FOR N%=0 TO 3
31730 P%=(type% AND (2^N%))
31740 PROCset_icon_flag(whandle%,ihandle%,12+N%,P%)
31750NEXT
31760ENDPROC
31770
31780
31790DEF PROCselect_icon(whandle%,ihandle%,set%)
31800PROCset_icon_flag(whandle%,ihandle%,21,set%)
31810ENDPROC
31820
31830
31840DEF PROCshade_icon(whandle%,ihandle%,set%)
31850PROCset_icon_flag(whandle%,ihandle%,22,set%)
31860ENDPROC
31870
31880
31890DEF PROCdelete_icon(whandle%,ihandle%,set%)
31900PROCset_icon_flag(whandle%,ihandle%,23,set%)
31910ENDPROC
31920
31930**************************************************************************
31940
31950REM Windows
31960
31970DEF FNtemp_window(buff%,len%,name%,name$,font%)
31980REM Loads window from template file
31990LOCAL handle%:$name%=name$
32000SYS"Wimp_LoadTemplate",,block%,buff%,buff%+len%,font%,name%,0
32010block%!64=sarea%
32020SYS"Wimp_CreateWindow",,block% TO handle%
32030=handle%
32040
32050
32060DEF FNwhole_screen_window(handle%)
32070LOCAL w%,h%,xshift%,yshift%,open%,prev%:prev%=handle%
32080IF FNwindow_open(handle%) THEN open%=-1
32090!block%=handle%:SYS"Wimp_GetWindowInfo",,block%
32100PROCmode_dimensions(w%,h%)
32110block%!4=0:block%!8=0:block%!12=w%:block%!16=h%
32120xshift%=(w%-(block%!52-block%!44))/2
32130yshift%=(h%-(block%!56-block%!48))/2
32140block%!20 -=xshift%:block%!24 +=yshift%
32150block%!44 -=xshift%:block%!52 +=xshift%
32160block%!56 +=yshift%:block%!48 -=yshift%
32170block%!32=(block%!32 AND &80FFFFFF)
32180SYS"Wimp_CreateWindow",,block%+4 TO handle%
32190IF open% THEN PROCopen_window(handle%)
32200!block%=prev%:SYS"Wimp_DeleteWindow",,block%
32210=handle%
32220
32230
32240DEF FNordinary_window(handle%,w%,h%,cy$,flgs%)
32250LOCAL open%,prev%,Vbar%,Hbar%:prev%=handle%
32260IF (flgs% AND &10000000) THEN Vbar%=44
32270IF (flgs% AND &40000000) THEN Hbar%=44
32280PROCmode_dimensions(SCw%,SCh%)
32290IF FNwindow_open(handle%) THEN open%=-1
32300!block%=handle%:SYS"Wimp_GetWindowInfo",,block%
32310block%!4=(SCw%-w%-Vbar%)/2
32320IF cy$="Y" THEN block%!8=(SCh%-h%-Hbar%)/2 ELSE block%!8=0
32330block%!12=block%!4+w%:block%!16=block%!8+h%
32340block%!20=0:block%!24=0
32350block%!44=0:block%!48=-h%:block%!52=w%:block%!56=0
32360block%!32=flgs%
32370SYS"Wimp_CreateWindow",,block%+4 TO handle%
32380IF open% THEN PROCopen_window(handle%)
32390!block%=prev%:SYS"Wimp_DeleteWindow",,block%
32400=handle%
32410
32420
32430DEF FNplace_window(handle%,x%,y%)
32440LOCAL w%,h%,prev%
32450prev%=handle%
32460!block%=handle%:SYS"Wimp_GetWindowInfo",,block%
32470w%=block%!12-block%!4:h%=block%!16-block%!8
32480block%!4=x%:block%!8=y%:block%!12=x%+w%:block%!16=y%+h%
32490SYS"Wimp_CreateWindow",,block%+4 TO handle%
32500PROCopen_window(handle%)
32510!block%=prev%:SYS"Wimp_DeleteWindow",,block%
32520=handle%
32530
32540
32550DEF FNrelative_window(Mhandle%,Thandle%,x%,y%)
32560LOCAL Mx%,My%
32570!block%=Mhandle%:SYS"Wimp_GetWindowInfo",,block%
32580Mx%=block%!4:My%=block%!8
32590=FNplace_window(Thandle%,Mx%+x%,My%+y%)
32600
32610
32620DEF FNcentre_window(handle%,cy$)
32630LOCAL SCw%,SCh%,w%,h%,prev%,flgs%,Hbar%,Vbar%
32640prev%=handle%
32650PROCmode_dimensions(SCw%,SCh%)
32660!block%=handle%:SYS"Wimp_GetWindowInfo",,block%
32670flgs%=block%!32
32680IF (flgs% AND &10000000) THEN Vbar%=44
32690IF (flgs% AND &40000000) THEN Hbar%=44
32700w%=block%!12-block%!4:h%=block%!16-block%!8
32710IF cy$="Y" THEN block%!8=(SCh%-h%-Hbar%)/2 ELSE block%!8=0
32720block%!4=(SCw%-w%-Vbar%)/2
32730block%!12=block%!4+w%:block%!16=block%!8+h%
32740SYS"Wimp_CreateWindow",,block%+4 TO handle%
32750PROCopen_window(handle%)
32760!block%=prev%:SYS"Wimp_DeleteWindow",,block%
32770=handle%
32780
32790
32800DEF PROCmode_dimensions(RETURN w%,RETURN h%)
32810LOCAL rx%,ry%,ex%,ey%
32820SYS"OS_ReadModeVariable",-1,11 TO ,,rx%
32830SYS"OS_ReadModeVariable",-1,4 TO ,,ex%
32840SYS"OS_ReadModeVariable",-1,12 TO ,,ry%
32850 SYS"OS_ReadModeVariable",-1,5 TO ,,ey%
32860w%=(rx%+1)*2^ex%:h%=(ry%+1)*2^ey%
32870ENDPROC
32880
32890
32900DEF PROCopen_window(whandle%)
32910REM Opens window given handle.
32920!block%=whandle%
32930SYS"Wimp_GetWindowState",,block%
32940block%!28=-1
32950SYS"Wimp_OpenWindow",,block%
32960ENDPROC
32970
32980
32990DEF PROCclose_window(whandle%)
33000REM Closes window given handle.
33010!block%=whandle%
33020SYS"Wimp_GetWindowState",,block%
33030SYS"Wimp_CloseWindow",,block%
33040ENDPROC
33050
33060
33070DEF FNtop_window(whandle%)=FNwindow_flags(whandle%,2)
33080DEF FNwindow_open(whandle%)=FNwindow_flags(whandle%,1)
33090DEF FNwindow_full_size(whandle%)=FNwindow_flags(whandle%,4)
33100
33110DEF FNwindow_flags(whandle%,bit%)
33120!block%=whandle%
33130SYS"Wimp_GetWindowState",,block%
33140=((block%?34 AND bit%)=bit%)
33150
33160
33170DEF FNupdate_window(whandle%,x1%,y1%,x2%,y2%)
33180LOCAL flag%
33190!block%=whandle%
33200block%!4=x1%:block%!8=y1%:block%!12=x2%:block%!16=y2%
33210SYS"Wimp_UpdateWindow",,block% TO flag%
33220=flag%
33230
33240
33250DEF PROCwork_area_origin(whandle%,RETURN ox%,RETURN oy%)
33260!block%=whandle%
33270SYS"Wimp_GetWindowState",,block%
33280ox%=block%!4-block%!20
33290oy%=block%!16-block%!24
33300ENDPROC
33310
33320
33330**************************************************************************
33340
33350REM Menus
33360
33370DEF PROCset_up_menu(title$,address%,num%,item$(),data%())
33380REM Sets up menu block.Item data is read from data list.
33390REM Data subscripts - 0 menu flags,1 subpointer,2 shade,3 buffer,4 buffer length
33400
33410LOCAL ptr%,item%
33420$address%=title$:width%=LEN title$ -3
33430address%!12=&70207:address%!20=44:address%!24=0
33440ptr%=address%+28
33450
33460FOR item%=0 TO num%
33470 ptr%!0=data%(item%,0):ptr%!4=data%(item%,1):ptr%!8=&7000021
33480 IF data%(item%,2) THEN ptr%!8=(ptr%!8 OR &400000)
33490
33500 IF data%(item%,3) THEN
33510  REM Indirected (length>12)
33520  ptr%!8=(ptr%!8 OR &100)
33530  $(data%(item%,3))=item$(item%)
33540  ptr%!12=data%(item%,3):ptr%!16=-1:ptr%!20=data%(item%,4)
33550 ELSE
33560  $(ptr%+12)=item$(item%)
33570 ENDIF
33580
33590ptr%=ptr%+24
33600IF LEN item$(item%)>width% THEN width%=LEN item$(item%):REM Width set from longest item.
33610NEXT
33620
33630address%!16=(width%+1)*16
33640ENDPROC
33650
33660
33670DEF PROCshow_menu(mblock%,x%,num%)
33680REM For showing a standard menu from the icon bar.
33690LOCAL y%
33700x% -=64:y%=140+44*num%
33710SYS"Wimp_CreateMenu",,mblock%,x%,y%
33720ENDPROC
33730
33740
33750DEF PROCalter_tick(menu%,item%,num%)
33760REM Sets tick bit for item position item% unsets it for others.
33770LOCAL add%,n%
33780FOR n%=0 TO num%
33790 add%=menu%+28+24*n%
33800 IF n%=item% THEN ?add%=(?add% OR 1) ELSE ?add%=(?add% AND 254)
33810NEXT
33820ENDPROC
33830
33840
33850DEF PROCsingle_tick(menu%,item%,set%)
33860LOCAL add%
33870add%=menu%+28+24*item%
33880IF set% THEN ?add%=(?add% OR 1) ELSE ?add%=(?add% AND 254)
33890ENDPROC
33900
33910
33920DEF PROCshade_item(menu%,item%,set%)
33930LOCAL ptr%
33940ptr%=menu%+28+24*item%
33950IF set% THEN ptr%!8=(ptr%!8 OR &400000) ELSE ptr%!8=(ptr%!8 AND &FFBFFFFF)
33960ENDPROC
33970
33980**************************************************************************
33990
34000REM Mode independence
34010
34020DEF PROCpalette_block(sprite$,sarea%,pal%)
34030REM Takes sprite palette and puts it into a block for making the transcolour table.
34040LOCAL ptr%,c%,address%
34050SYS"OS_SpriteOp",&118,sarea%,sprite$ TO ,,address%
34060ptr%=address%+44
34070FOR c%=0 TO 15
34080 pal%!(c%*4)=!ptr%
34090 ptr%=ptr%+8
34100NEXT
34110ENDPROC
34120
34130
34140DEF PROCsource_mode_factors(mode%,scale%)
34150REM Calcalate the scale factors for the sprites source mode
34160SYS"OS_ReadModeVariable",mode%,4 TO ,,xeig%
34170SYS"OS_ReadModeVariable",mode%,5 TO ,,yeig%
34180scale%!0=1<<xeig%:scale%!4=1<<yeig%
34190ENDPROC
34200
34210
34220DEF PROCcurrent_mode_factors(scale%)
34230REM Produce the scale factors for the current mode
34240SYS"OS_ReadModeVariable",-1,4 TO ,,xeig%
34250SYS"OS_ReadModeVariable",-1,5 TO ,,yeig%
34260scale%!8=1<<xeig%:scale%!12=1<<yeig%
34270ENDPROC
34280
34290
34300DEF PROCos_to_pixels(wOS%,hOS%,RETURN wP%,RETURN hP%)
34310REM Converts os units to pixels for mode
34320SYS"OS_ReadModeVariable",-1,4 TO ,,xeig%
34330SYS"OS_ReadModeVariable",-1,5 TO ,,yeig%
34340wP%=wOS%/2^xeig%:hP%=hOS%/2^yeig%
34350ENDPROC
34360
34370
34380DEF PROCtranstable(mode%,Spal%,Dpal%,transtable%)
34390REM Produce colour translation table for the current mode
34400SYS"ColourTrans_SelectTable",mode%,Spal%,-1,Dpal%,transtable%
34410ENDPROC
34420
34430
34440DEF PROCset_GCOL(col%,pal%)
34450LOCAL back%
34460IF col%>=128 THEN col% -=128:back%=128 ELSE back%=0
34470SYS"ColourTrans_SetGCOL",pal%!(4*col%),back%,0
34480ENDPROC
34490
34500
34510DEF PROCpalfile_to_block(file$,pal%)
34520LOCAL x%,col%,N%
34530x%=OPENIN file$
34540FOR col%=0 TO 15
34550 FOR N%=0 TO 2
34560  PTR#x%=6*col%+3+N%
34570  pal%?(4*col%+N%+1)=BGET#x%
34580 NEXT
34590NEXT
34600CLOSE#x%
34610ENDPROC
34620
34630
34640DEFFNnumber_of_colours
34650REM Gives number of colours in a mode.
34660LOCAL numcol%
34670SYS"OS_ReadModeVariable",-1,3 TO ,,numcol%
34680=numcol%+1
34690
34700
34710DEFPROCscale_text(sx%,sy%,scale%)
34720REM Keeps text mode independent.
34730LOCAL xsc,ysc
34740xsc=scale%!0/scale%!8:sx%=sx%*xsc
34750ysc=scale%!4/scale%!12:sy%=sy%*ysc
34760VDU23,17,7,6,sx%;sy%;0;
34770ENDPROC
34780
34790
34800**************************************************************************
34810
34820REM Error routines
34830
34840DEFPROCerror(task$)
34850REM Displays error message from operating system.
34860!block%=255
34870a$=REPORT$+" "+STR$ERL
34880$(block%+4)=a$+CHR$0
34890SYS"Wimp_ReportError",block%,1,task$
34900ENDPROC
34910
34920
34930DEF FNerror_message(message$,task$,flags%)
34940REM Displays personal error message
34950!block%=255:$(block%+4)=message$+CHR$0
34960SYS"Wimp_ReportError",block%,flags%,task$ TO ,response%
34970=response%
34980
34990
35000DEFPROCtest(var$)
35010REM Displays value of string variable.Debugging aid.
35020!block%=255
35030$(block%+4)=var$+CHR$0
35040SYS"Wimp_ReportError",block%,1,"print_text"
35050ENDPROC
35060
35070
35080DEF FNensure_Pdriver
35090REM Checks that printer driver is loaded
35100LOCAL P%,printer%:printer%=0
35110LOCAL ERROR
35120ON ERROR LOCAL:RESTORE ERROR:CLOSE#P%:=printer%
35130P%=OPENOUT("printer:")
35140SYS"PDriver_SelectJob",P%,"print_job"
35150SYS"PDriver_AbortJob",P%
35160printer%=-1
35170CLOSE#P%
35171RESTORE ERROR
35180=printer%
35190
35200**************************************************************************
35210
35220Drag operations
35230
35240DEF PROCdrag_box(type%,x%,y%,width%,height%)
35250block%!4=type%
35260block%!8=x%:block%!12=y%:block%!16=x%+width%:block%!20=y%+height%
35270block%!24=0:block%!28=0:block%!32=1280:block%!36=1024
35280SYS"Wimp_DragBox",,block%
35290ENDPROC
35300
35310**************************************************************************
35320
35330REM Fonts
35340
35350DEF PROClose_icon_fonts(f%)
35360LOCAL n%,m%
35370FOR n%=1 TO 255
35380 IF ?(f%+n%)>0 THEN
35390  num%=?(f%+n%)
35400  FOR m%=1 TO num%
35410   SYS"Font_LoseFont",n%
35420  NEXT
35430 ENDIF
35440NEXT
35450ENDPROC
35460
35470**************************************************************************
35480
35490REM Loading and saving
35500
35510DEF PROCdrag_icon(whandle%,ihandle%,type%)
35520LOCAL w%,h%,ox%,oy%
35530PROCwork_area_origin(whandle%,ox%,oy%)
35540!block%=whandle%:block%!4=ihandle%
35550SYS"Wimp_GetIconState",,block%
35560block%!8=ox%+block%!8:block%!12=oy%+block%!12
35570block%!16=ox%+block%!16:block%!20=oy%+block%!20
35580w%=block%!16-block%!8:h%=block%!20-block%!12
35590PROCdrag_box(type%,block%!8,block%!12,w%,h%)
35600ENDPROC
35610
35620
35630DEF PROCsave_request(type%,namebuff%,size%)
35640SYS"Wimp_GetPointerInfo",,block%
35650block%!20=block%!12:block%!24=block%!16
35660block%!28=!block%:block%!32=block%!16
35670block%!36=size%:!block%=64:block%!12=0
35680block%!16=1:block%!40=type%
35690$(block%+44)=FNgetleaf($namebuff%,-1)
35700SYS"Wimp_SendMessage",18,block%,block%!20,block%!24
35710ENDPROC
35720
35730
35740DEF FNgetleaf(a$,zero%)
35750WHILE INSTR(a$,".")
35760a$=MID$(a$,INSTR(a$,".")+1)
35770ENDWHILE
35780IF zero% THEN a$=a$+CHR$0
35790=a$
35800
35810
35820DEF FNstring(ptr%)
35830LOCAL name%:name%=ptr%
35840WHILE ?ptr%<>0
35850 ptr% +=1
35860ENDWHILE
35870?ptr%=13
35880=$name%
35890
35900**************************************************************************
35910
35920REM Miscelaneous
35930
35940DEF PROCpause(time%)
35950time% +=TIME
35960WHILE time%>TIME
35970ENDWHILE
35980ENDPROC

� > !Runimage
� Addition and subtraction.
� Version 0.30, 9th Sept 96
('� � �error("Maths_task"):�end(-1):�
2
<�initialise
F�wimp_poll
P�end(-1)
Z�
d
n
x� �initialise
�� n%
�+� block% 3000,block2% 60,results% 44000
�4� Prect% 16,Ptrans% 16,Pplot% 8,lev% 48,Hlev% 48
��� dig1$(5),dig2$(4),dig3$(5),answer$(5),carry$(5),car_dig%(5),dig_limQ%(9),dig_limA%(7),handle%(3),dig_name$(4),colname$(4),strike$(6),st_dig%(6),Pdig1$(9,4),Pdig2$(9,4),Pop%(9),Pdec%(9),PlimQ%(9),PlimA%(9),Cdone%(4),STdone%(4),name$(43),message$(2)
��� Alevel%(43),Slevel%(43),Hlevel%(43),MHlevel%(43),auto%(43),autohelp%(43),force%(43),tries%(43),mode%(43),decimal%(43),MenuBuff%(14)
��� operator%(43),no_quest%(43),timelim%(43),Notimer%(43),calc%(43),printer%(43),score%(43),next%(43),stop%(43),colname%(43),estimate%(43),newlevR%(43),newlevW%(43),BothOp%(43),saveR%(43),ownsum%(43),speech%(43)
�Nend%=0:drag%=0:double%=0:initx%=0:inity%=0:initnum%=0:dragval%=0:PrevOp%=0
Ȋquest%=0:try%=0:sesstime%=0:game%=0:start%=-1:drawfont%=0:SCformat%=1:EstVal%=0:marked%=0:Owin%=0:dragx%=0:dragy%=0:ownOp%=0:rubber%=0
�{carry%=0:strike%=0:reduce%=0:Bstep%=0:force5%=0:nextcheck%=0:path$="":Rcnt%=0:Rcnt2%=0:dirpath$="":alter%=0:startOwn%=0
�Jnextdig%=0:rubdig%=-1:stopped%=0:anslim%=0:sum%=0:notsavedR%=0:newR%=0
�6CorrectAns%=0:correct%=0:message$()="":nextmess%=0
�+Pcount%=-1:Psave%=0:Pprint%=0:driver%=0
�:CCsum=0:CCnum=0:CCnum$="":CCstart%=0:CCop%=0:CCprev%=0

-y1%=-296:y2%=y1%-75:y3%=y2%-75:y0%=y1%+92
mkx%=�digx(0)+110
"
,2ș"Wimp_Initialise",200,&4B534154,"Maths_task"
6*IBhandle%=�icon_bar_icon("!mbookDemo")
@�set_fonts
A�load_sprites
J�create_windows
T�icon_menu
^)Thandle%=�centre_window(Thandle%,"Y")
h
TLtime%=�
|�set_option_variables
��set_mode_independance
��
�
�
�� �icon_menu
�� Sets up menu
�%� menu% 244,rmenu% 172,mbuff% 115
�� item$(8),data%(8,4)
րitem$()="Info","See options","See/edit group","Load/new group","Save group","Results","Enable printer","Whole screen","Quit"
�data%()=2,Ihandle%,0,0,0,0,-1,1,0,0,0,-1,1,mbuff%,15,0,-1,0,mbuff%+84,15,0,-1,1,0,0,2,rmenu%,0,0,0,0,-1,0,mbuff%+100,15,0,-1,0,0,0,&80,-1,0,0,0
�5�set_up_menu("MathsBook",menu%,8,item$(),data%())
�
�kitem$()="See results","Print results","Print summary","Save results","Auto save results","Wipe results"
rdata%()=0,-1,1,0,0,0,-1,0,mbuff%+35,14,0,-1,0,mbuff%+50,14,0,SVhandle2%,1,0,0,0,-1,0,mbuff%+65,18,&80,-1,0,0,0
4�set_up_menu("Results",rmenu%,5,item$(),data%())
�
&
0
:� �create_windows
D� Load template files
N�� Abuff% 500,Sbuff% 500,Ibuff% 150,Cbuff% 800,SCbuff% 250,N2buff% 900,calcbuff% 200,SVbuff% 300,SV2buff% 300,Fbuff% 200,Pbuff% 100,STbuff% 100,Icbuff% 100,Obuff% 200,Smbuff% 100,Lbuff% 400,Drbuff% 100,Ebuff% 100,Rbuff% 100,Edbuff% 100,Dembuff% 150
X&� Mbuff% 500,P2buff% 100,font% 255
b$� n%=0 � 255 � 4:!(font%+n%)=0:�
l� name% 11
v
�3ș"Wimp_OpenTemplate",,"<Maths$Dir>.Templates2"
�;handle%(1)=�temp_window(Abuff%,500,name%,"addition",-1)
�titlebuff1%=block%!72
�>handle%(2)=�temp_window(Sbuff%,500,name%,"subtraction",-1)
�titlebuff2%=block%!72
�5Ihandle%=�temp_window(Ibuff%,150,name%,"info",-1)
�7Chandle%=�temp_window(Cbuff%,800,name%,"config",-1)
� level_buffA%=�icon_buffer(5)
� level_buffS%=�icon_buffer(8)
�Qbuff%=�icon_buffer(16)
�Tbuff%=�icon_buffer(19)
�Tmbuff%=�icon_buffer(22)
Hbuff%=�icon_buffer(31)
MHbuff%=�icon_buffer(37)
levRbuff%=�icon_buffer(53)
 levWbuff%=�icon_buffer(57)
*titlebuffC%=block%!72
4
>;SChandle%=�temp_window(SCbuff%,250,name%,"score",font%)
HSnamebuff%=�icon_buffer(1)
RSCtbuff%=�icon_buffer(2)
\SCQbuff%=�icon_buffer(4)
fSCRbuff%=�icon_buffer(6)
pSCWbuff%=�icon_buffer(8)
z
�8NGhandle%=�temp_window(N2buff%,900,name%,"name2",-1)
�Ntitlebuff%=block%!72
�
�9CChandle%=�temp_window(calcbuff%,200,name%,"calc",-1)
�CCbuff%=�icon_buffer(17)
�
�;Lhandle%=�temp_window(Lbuff%,400,name%,"Loadbox",font%)
�loadbuff%=�icon_buffer(2)
�8Mhandle%=�temp_window(Mbuff%,500,name%,"DirMenu",-1)
�0� n%=0 � 14:MenuBuff%(n%)=�icon_buffer(n%):�
�
�:SVhandle%=�temp_window(SVbuff%,300,name%,"savebox",-1)
�savebuff%=�icon_buffer(1)

:Drhandle%=�temp_window(Drbuff%,100,name%,"dirmess",-1)
:Phandle%=�temp_window(Pbuff%,100,name%,"printmess",-1)
$=P2handle%=�temp_window(P2buff%,100,name%,"printmess2",-1)
.;SThandle%=�temp_window(STbuff%,100,name%,"stopmess",-1)
8;Ichandle%=�temp_window(Icbuff%,100,name%,"iconmess",-1)
Bicbuff%=�icon_buffer(0)
L;Smhandle%=�temp_window(Smbuff%,100,name%,"savemess",-1)
V8Ehandle%=�temp_window(Ebuff%,100,name%,"endsave",-1)
`Eicbuff%=�icon_buffer(1)
j;Rhandle%=�temp_window(Rbuff%,100,name%,"rejectmess",-1)
tRicbuff%=�icon_buffer(0)
~;Edhandle%=�temp_window(Edbuff%,100,name%,"namemess",-1)
�
�3Dhandle%=�temp_window(-1,-1,name%,"dribble",-1)
�=SVhandle2%=�temp_window(SV2buff%,300,name%,"savebox2",-1)
�!savetextbuff%=�icon_buffer(1)
�
�:Ohandle%=�temp_window(Obuff%,200,name%,"ownsum",font%)
�Osum1buff%=�icon_buffer(3)
�Osum2buff%=�icon_buffer(4)
�Osgnbuff%=�icon_buffer(5)
�
�1Thandle%=�temp_window(-1,-1,name%,"title",-1)
�
9Demhandle%=�temp_window(Dembuff%,150,name%,"demo",-1)

DemIc%=�icon_buffer(1)

ș"Wimp_CloseTemplate"
(�
2
<
F� �load_sprites
P
� mem%
Zmem%=258000:� 143124+114796
d� sarea% mem%
n!sarea%=mem%:sarea%!8=16
xș"OS_SpriteOp",&109,sarea%
�5ș"OS_SpriteOp",&10A,sarea%,"<Maths$Dir>.sprites"
��
�
�
�� �set_mode_independance
�.� scale% 16,trans% 255,pal% 64,scale27% 16
�#�source_mode_factors(12,scale%)
�!�current_mode_factors(scale%)
�$�palette_block("n0",sarea%,pal%)
�"�transtable(12,pal%,-1,trans%)
��message_mode_independance
�
�%�source_mode_factors(27,scale27%)
#�current_mode_factors(scale27%)
�

"
,� �wimp_poll
6�
@$ș"Wimp_Poll",0,block% � reason%
JȎ reason% �
T � 0:�null_event
^ � 1:�redraw
h � 2:�open_windows
r � 3:�close_windows
| � 6:�button_clicks
�P � 7:� �window_open(SVhandle%) � �save_request(&FFD,savebuff%,72+20*Ncount%)
�R        � �window_open(SVhandle2%) � �save_request(&FFF,savetextbuff%,Rptr%+1)
� � 8:�keys
� � 9:�select_menu
� � 17,18:�messages
��
�
� end%=-1
��
�
�
�� �keys
�Ȏ !block% �
� � CChandle%:�keys_calc
 � Ohandle%:�own_sum_keys
 � NGhandle%:� create%<0 �
(                 �keys_name(NameNo%)
&                �
0@                 � NameNo%=Ncount%+1 � �keys_name(Ncount%+1)
:E                 � NameNo%>0 � block%!24=13 � �keys_name(NameNo%)
D                �
N
X" ș"Wimp_ProcessKey",block%!24
b�
l�
v
�
�� �messages
�Ȏ block%!16 �
� � 0:end%=-1
�I � 2:� IF FNwindow_open(SVhandle%) PROCsave_file(FNstring(block%+44))
�U        � IF FNwindow_open(SVhandle2%) PROCresults_text_file(FNstring(block%+44))
�$        �close_window(Smhandle%)
�- � 3:� block%!40=&FFD � �dragload_message
� � &400C1:�mode_change
�/ � 5:� block%!40=&1000 � �broadcast_message
��
��
�

� �set_up_loadbox
� item%,file$,n%:item%=0
 1�loadbox_windows(-1):�close_window(Drhandle%)
*+� n%=0 � 14:$(MenuBuff%(n%))="":�:n%=-1
4
>H$(block%+12)=path$:ș"OS_GBPB",9,block%+12,block%,1,0,11 � ,,,,item%
Hȕ item%>-1 � n%<14
R file$=�string(block%)
\6 � file$<>"results" � n%+=1:$(MenuBuff%(n%))=file$
f: ș"OS_GBPB",9,block%+12,block%,1,item%,11 � ,,,,item%
p�
z
�path$=path$+"."
��
�
�
�� �broadcast_message
�6� ¤string(block%+44),9)="Mfiles_+-" � create%<0 �
�, path$=�string(block%+44):dirpath$=path$
�* $loadbuff%="":�reset_icon(Lhandle%,3)
� �shade_icon(Lhandle%,1,0)
� �set_up_loadbox
��
��
�
	
	� �dragload_message
	� file$,leaf$,whandle%
	$whandle%=block%!20
	.file$=�string(block%+44)
	8S� IF (notsavedO% OR notsavedR%)=-1 THEN nextfile$=file$:PROCend_save(3):ENDPROC
	B�file_vars(file$)
	L�load_file(file$)
	V
	`� whandle%=Lhandle% �
	j �reset_icon(Lhandle%,2)
	t�
	~( � whandle%=-2 � �loadbox_windows(0)
	��
	��
	�
	�
	�� �file_vars(file$)
	�1$savebuff%=file$:$loadbuff%=�getleaf(file$,0)
	�&path$=�file$,� file$-� $loadbuff%)
	�l� �file$,"Mfiles_+-") � $savetextbuff%=path$+"results."+$loadbuff% � $savetextbuff%=path$+"R"+$loadbuff%
	��
	�
	�
	�� �mode_change
"�transtable(12,pal%,-1,trans%)

!�current_mode_factors(scale%)
#�current_mode_factors(scale27%)
�message_mode_independance
(%drawfont%=(game%>0 � SCformat%=2)
2�set_windows
<D� �window_open(Ohandle%) � Ohandle%=�centre_window(Ohandle%,"Y")
F3� �window_open(Lhandle%) � �loadbox_windows(-1)
PG� �window_open(CChandle%) � CChandle%=�centre_window(CChandle%,"Y")
ZC� �window_open(Dhandle%) � Dhandle%=�centre_window(Dhandle%,"")
d�
n
x
�� �select_menu
�� no%,scx%,scy%
�Ȏ !block% �
� � 1:no%=NameNo%
�"        �set_config_title(no%)
�!        �set_preferences(no%)
�0        Chandle%=�centre_window(Chandle%,"")
�' � 2:create%=-1:�build_name_windowG
�8 � 3:create%=-2:�open_window(Drhandle%):nextfile$=""
�;        � game% � �close_window(handle%(game%)):game%=0
�C        � IF (notsavedO% OR notsavedR%)=-1 THEN PROCend_save(3)
�? � 4:� PROCsave_file($savebuff%):PROCopen_window(Smhandle%)
�2        $DemIc%="saves the children's levels."
5        Demhandle%=�centre_window(Demhandle%,"Y")
 � 5:�select_menu_results
  � 6:� enprint%=NOT enprint%
"/        � PROCsingle_tick(menu%,6,enprint%)
,6        � IF NameNo% THEN PROCset_printer(NameNo%)
6S        $DemIc%="can print out sums.":Demhandle%=�centre_window(Demhandle%,"Y")
@ � 7:screen%=� screen%
J)        �single_tick(menu%,7,screen%)
T        �set_windows
^o � 8:� IF (notsavedO% OR notsavedR%)=-1 AND path$<>"" THEN nextfile$="":PROCend_save(3):end%=1 ELSE end%=-1
h        end%=-1
r�
| �menu_adjust(menu%,block%,9)
��
�
�
�� �end_save(file%)
�L� notsavedO%=-1 � (file%=1 � file%=3) � $Eicbuff%="current group file ?"
�F� notsavedR%=-1 � (file%=2 � file%=3) � $Eicbuff%="results file ?"
�S� (notsavedO% � notsavedR%)=-1 � file%=3 � $Eicbuff%="group and results file ?"
��open_window(Ehandle%)
�savend%=file%
��
�
�
�� �select_end_save
� block%!16=2 �
K � IF notsavedO%-1 AND (savend% AND 1)=1 THEN PROCsave_file($savebuff%)
K � notsavedR%=-1 � (savend% � 2)=2 � �results_text_file($savetextbuff%)
&! � savend%=2 � �reset_results
0�
:�close_window(Ehandle%)
D+end%=(end%=1):notsavedO%=0:notsavedR%=0
NJ� nextfile$<>"" � end%=0 � �file_vars(nextfile$):�load_file(nextfile$)
X�
b
l
v%� �menu_adjust(menu%,block%,num%)
�#ș"Wimp_GetPointerInfo",,block%
�0� block%!8=1 � �show_menu(menu%,block%,num%)
��
�
�
�� �select_menu_results
�� response%
�Ȏ block%!4 �
�- � 0:Dhandle%=�centre_window(Dhandle%,"")
� � 1:�printout_results(-1)
� � 2:�printout_results(0)
�C � 3:�results_text_file($savetextbuff%):�open_window(Smhandle%)
�  � 4:autosaveR%=� autosaveR%

-        �single_tick(rmenu%,4,autosaveR%)

1 � 5:� notsavedR% � nextfile$="":�end_save(2)

�

 �

*

4

>� �end(f%)

H� f% � �lose_fonts

R*POINTER

\*SET Maths1$Running <>

fș"Wimp_CloseDown"

p�

z

�

�� �open_windows

�ș"Wimp_OpenWindow",,block%

�� !block%=handle%(game%) �

�( � Owin%=-1 � �open_window(Ohandle%)

�6 � �window_open(Chandle%) � �open_window(Chandle%)

��

�K� !block%=Lhandle% � Mhandle%=�relative_window(Lhandle%,Mhandle%,358,0)

��

�

�

�� �close_windows

�� handle%:handle%=!block%
Ȏ handle% �
R � handle%(game%):SThandle%=�relative_window(handle%(game%),SThandle%,450,556)
; � NGhandle%:create%=0:NameNo%=0:�shade_item(menu%,1,1)
$2 � Lhandle%:�close_window(Mhandle%):create%=-2
.�
86� handle%<>handle%(game%) � �close_window(handle%)
B� end%=1 � end%=0
L�
V
`
j
� �redraw
t"� flg%,Handle%:Handle%=!block%
~&�work_area_origin(!block%,ox%,oy%)
�(ș"Wimp_RedrawWindow",,block% � flg%
�ȕ flg%
� Ȏ Handle% �
�#  � handle%(game%):�redraw_game
�$  � NGhandle%:�redraw_class_list
�0  � Dhandle%:�set_results_window(ox%,oy%,-1)
� �
�) ș"Wimp_GetRectangle",,block% � flg%
��
��
�
�
� �redraw_game

	� sc%
	�grid

(*� SCformat%=2 � estimate%(NameNo%)=0 �
2 �sum_parts:�sum_numbers
<, � mode%(NameNo%) � �input_box(nextdig%)
F � marked% � �mark
Pg � message$(1)<>"" � drawfont%=0 � ș"OS_SpriteOp",&134,sarea%,"message",ox%+600,oy%+y3%-25,0,-1,-1
Z�
dL ș"OS_SpriteOp",&134,sarea%,"estimate",ox%+14,oy%-462,8,scale27%,trans%
n �place_estimate
x �sum_numbers_est
��
�
�Tș"OS_SpriteOp",&134,sarea%,"backtop1",ox%+150,oy%-146,0,scale%,trans%:� rub out
�=� drag%=-1 � (dragval%<>10 � dragval%=10 � dragy%<-150) �
�. � dragval%=10 � sc%=scale% � sc%=scale27%
�T ș"OS_SpriteOp",&134,sarea%,"move"+�dragval%,ox%+dragx%,oy%+dragy%,8,sc%,trans%
��
��
�
�
�� �button_clicks
�	� no%
�$� block%!8=2 � block%!12<>-2 � �
�Ȏ block%!12 �
�0 � -2:� block%!16=IBhandle% � �select_IBicon
4 � handle%(game%):� block%!8=4 � �icon_selection
0 � Chandle%:no%=NameNo%:�select_options(no%)
 � SChandle%:�select_score
"' � CChandle%:�calcalator(block%!16)
,: � NGhandle%:� create%=0 � �select_nameG � �edit_nameG
6  � SVhandle%:�select_savebox
@# � SVhandle2%:�select_save_text
J* � SThandle%:� block%!16=2 � �game_end
T,                �close_window(SThandle%)
^" � Ohandle%:�select_sum_window
h  � Lhandle%:�select_loadfile
r, � Mhandle%:�select_file_menu(block%!16)
|  � Ehandle%:�select_end_save
�. � P2handle%:� block%!16=2 � �sum_printout
�                Pcount%=-1
�d � Phandle%,Ichandle%,Smhandle%,Drhandle%,Rhandle%,Edhandle%,Demhandle%:�close_window(block%!12)
��
��
�
�
�� �select_loadfile
�� file%,error%
�6ș"Wimp_SetCaretPosition",Lhandle%,2,46,-210,-1,-1
�&� block%!16<>3 � $loadbuff%="" � �
��close_window(Thandle%)
�
$savebuff%=path$+$loadbuff%
f� �path$,"Mfiles_+-") � $savetextbuff%=path$+"results."+$loadbuff% � $savetextbuff%="R"+$savebuff%

&� create% �
0 � �check_file �
:  �load_file($savebuff%)
D  �build_name_windowG
N �
X+  � PROCload_file("<Obey$Dir>.default")
b!  � PROCsave_file($savebuff%)
l+  $DemIc%="allows files to be created."
v/  Demhandle%=�centre_window(Demhandle%,"Y")
� �
��
��loadbox_windows(0)
��
�
�
�� �select_file_menu(icon%)
�� $MenuBuff%(icon%)="" � �
�!create%=-1:path$=dirpath$+"."
��close_window(Ichandle%)
� $loadbuff%=$MenuBuff%(icon%)
��reset_icon(Lhandle%,2)
��


� �check_file
 
� n%,flg%
*�
4* � $loadbuff%=$MenuBuff%(n%) � flg%=-1
> n% +=1
H� n%=15 � flg%=-1
R	=flg%
\
f
p� �loadbox_windows(open%)
z
� open% �
�* Lhandle%=�centre_window(Lhandle%,"Y")
�7 Mhandle%=�relative_window(Lhandle%,Mhandle%,358,0)
�7 ș"Wimp_SetCaretPosition",Lhandle%,2,46,-210,-1,-1
��
� �close_window(Lhandle%)
� �close_window(Mhandle%)
� �close_window(Ichandle%)
��
��
�
�
�� �select_IBicon
�� block%!8=2 �
 �allow_print_results
  �show_menu(menu%,!block%,9)
�
$ � start% �
.  � create% �
8   �open_window(Drhandle%)
B  �
L   �build_name_windowG
V   �loadbox_windows(0)
`  �
j �
t�
~�close_window(Ichandle%)
��close_window(Smhandle%)
��close_window(Ehandle%)
��close_window(Rhandle%)
��close_window(Thandle%)
��
�
�
�� �switch_window(h%)
�� n%
�;!block2%=handle%(3-h%):ș"Wimp_GetWindowState",,block2%
�6!block%=handle%(h%):ș"Wimp_GetWindowInfo",,block%
�*� n%=4 � 24 � 4:block%!n%=block2%!n%:�
7!block2%=handle%(h%):ș"Wimp_DeleteWindow",,block2%

1ș"Wimp_CreateWindow",,block%+4 � handle%(h%)
�open_window(handle%(h%))
�
(
2
<� �select_options(no%)
F:� icon%,help%,reset%,svR%,n%:reset%=0:svR%=saveR%(no%)
P=help%=Hlevel%(no%):notsavedO%=(path$<>""):icon%=block%!16
Z+� alter%=0 � alter%=(icon%<>68 � no%=0)
dȎ icon% �
n: � 2,3:�select_operators(icon%-1,no%):reset%=(Owin%=0)
xX � 6:Alevel%(no%)=�inc_buffer(Chandle%,5,Alevel%(no%),level_buffA%,1,1,7,0):reset%=1
�D       � decimal%(no%)=1 � Alevel%(no%)=5 � �set_dec_levels(no%)
�Y � 7:Alevel%(no%)=�inc_buffer(Chandle%,5,Alevel%(no%),level_buffA%,1,1,7,-1):reset%=1
�X � 9:Slevel%(no%)=�inc_buffer(Chandle%,8,Slevel%(no%),level_buffS%,1,1,9,0):reset%=1
�E        � decimal%(no%)=1 � Slevel%(no%)=5 � �set_dec_levels(no%)
�Z � 10:Slevel%(no%)=�inc_buffer(Chandle%,8,Slevel%(no%),level_buffS%,1,1,9,-1):reset%=1
�P � 17:no_quest%(no%)=�inc_buffer(Chandle%,16,no_quest%(no%),Qbuff%,1,1,99,0)
�Q � 18:no_quest%(no%)=�inc_buffer(Chandle%,16,no_quest%(no%),Qbuff%,1,1,99,-1)
�I � 20:tries%(no%)=�inc_buffer(Chandle%,19,tries%(no%),Tbuff%,1,1,3,0)
�J � 21:tries%(no%)=�inc_buffer(Chandle%,19,tries%(no%),Tbuff%,1,1,3,-1)
�O � 23:timelim%(no%)=�inc_buffer(Chandle%,22,timelim%(no%),Tmbuff%,1,1,30,0)
�P � 24:timelim%(no%)=�inc_buffer(Chandle%,22,timelim%(no%),Tmbuff%,1,1,30,-1)
�4 � 25:Notimer%(no%)=-�icon_selected(Chandle%,25)
�5         �shade_3icons(Chandle%,22,Notimer%(no%))
K � 32:Hlevel%(no%)=�inc_buffer(Chandle%,31,Hlevel%(no%),Hbuff%,1,0,5,0)
#         �reset_help_level(no%)
0         � force5%=0 � Helplev%=Hlevel%(no%)
"2         � Hlevel%(no%)=0 � �set_top_icon(2,0)
,L � 33:Hlevel%(no%)=�inc_buffer(Chandle%,31,Hlevel%(no%),Hbuff%,1,0,5,-1)
6#         �reset_help_level(no%)
@0         � force5%=0 � Helplev%=Hlevel%(no%)
J3         � Hlevel%(no%)=1 � �set_top_icon(2,-1)
T2 � 34:force%(no%)=-�icon_selected(Chandle%,34)
^N � 38:MHlevel%(no%)=�inc_buffer(Chandle%,37,MHlevel%(no%),MHbuff%,1,0,5,0)
h#         �reset_help_level(no%)
rS � 39:MHlevel%(NameNo%)=�inc_buffer(Chandle%,37,MHlevel%(no%),MHbuff%,1,0,5,-1)
|#         �reset_help_level(no%)
�? � 28,29:mode%(no%)=icon%-28:�adjust_for_mode(no%):reset%=1
�1 � 42:calc%(no%)=-�icon_selected(Chandle%,42)
�"         �set_delete_icon(no%)
�6         � calc%(no%)=0 � �close_window(CChandle%)
�  � 43:� PROCset_printer(no%)
�(         �select_icon(Chandle%,43,0)
�*         $DemIc%="can print out sums."
�6         Demhandle%=�centre_window(Demhandle%,"Y")
�9 � 44:score%(no%)=-�select_display(44,-score%(no%),4)
� � 46:�set_next(no%)
�7 � 47:stop%(no%)=-�select_display(47,-stop%(no%),6)
�4 � 48:colname%(no%)=-�icon_selected(Chandle%,48)
� � 45:�set_estimate(no%)
  � 61:�set_keep_results(no%)
 � 49:�set_auto(no%)
5 � 50:autohelp%(no%)=-�icon_selected(Chandle%,50)
&         �set_autohelp(no%)
0! � 51:�close_window(Chandle%)
:?         startOwn%=(startOwn%=1 � game%>0):reset%=startOwn%
;-         nextmess%=(Helplev%=5 � game%>0)
DQ � 54:newlevR%(no%)=�inc_buffer(Chandle%,53,newlevR%(no%),levRbuff%,1,1,10,0)
NR � 55:newlevR%(no%)=�inc_buffer(Chandle%,53,newlevR%(no%),levRbuff%,1,1,10,-1)
XS � 58:newlevW%(no%)=-�inc_buffer(Chandle%,57,-newlevW%(no%),levWbuff%,1,1,10,0)
bT � 59:newlevW%(no%)=-�inc_buffer(Chandle%,57,-newlevW%(no%),levWbuff%,1,1,10,-1)
l' � 62:�set_decimal:reset%=(Owin%=0)
v3 � 63:ownsum%(no%)=-�icon_selected(Chandle%,63)
�D         �set_own_sum(no%):startOwn%=-(ownsum%(no%)=1 � game%>0)
�?         � ownsum%(no%)=0 � �close_window(Ohandle%):Owin%=0
�7 � 64:� n%=1 � Ncount%:�set_new_name_levels(n%,0):�
�$         �close_window(Chandle%)
�% � 65:�set_new_name_levels(no%,0)
�"         �set_preferences(no%)
�! � 66:�close_window(Chandle%)
�% � 67:�select_icon(Chandle%,67,0)
�'         $DemIc%="includes speech."
�6         Demhandle%=�centre_window(Demhandle%,"Y")
�/ � 68:� alter% � �set_new_name_levels(0,43)
�$         �close_window(Chandle%)
��
5� game%>0 � icon%<>51 � icon%<63 � startOwn%=-1 �
 � reset% �
:  � ownsum%(NameNo%)=0 � �set_sum � �set_up_sum_window
  �
*
4- � (icon%=32 � icon%=33) � mode%(no%)=1 �
>!  �change_help_display(help%)
H!  � game%>0 � �remove_message
R �
\
f] � (icon%=45 � icon%=48) � Owin%=0 � ș"Wimp_ForceRedraw",handle%(game%),0,-844,1280,-150
p�
z�
�
�
�� �set_delete_icon(no%)
�� n%
�;� n%=1 � 2:�delete_icon(handle%(n%),3,(calc%(no%)=0)):�
�@� game% � ș"Wimp_ForceRedraw",handle%(game%),450,-150,600,0
��
�
�
�� �set_next(no%)
�+next%(no%)=-�icon_selected(Chandle%,46)
�,�set_top_icon(5,(next%(no%)=1 � try%>0))
�!� marked%=-1 � next%(no%)=0 �
 correct%=0
3 � quest%<no_quest%(no%) � �set_sum � �game_end
�
$�
.
8
B� �set_keep_results(no%)
L,saveR%(no%)=-�icon_selected(Chandle%,61)
V� svR%=saveR%(no%) � �
`+� saveR%(no%)=0 � newR%=0 � �end_levels
jnewR%=saveR%(no%)
t�
~
�
�� �set_estimate(no%)
�/estimate%(no%)=-�icon_selected(Chandle%,45)
�B� estimate%(no%)=0 � SCformat%=1 � sum%=0:Estval%=0:dig3$()=""
�D� sum%=0 � force5%=0 � SCformat%=2-estimate%(no%):message$(1)=""
�;� game%>0 � �shade_icon(handle%(game%),2,(SCformat%=1))
��
�
�
�� �set_decimal
�.decimal%(no%)=-�icon_selected(Chandle%,62)
�*� decimal%(no%) � �set_dec_levels(no%)
� �window_open(Ohandle%) �

H $Osum1buff%=�set_dec($Osum1buff%):$Osum2buff%=�set_dec($Osum2buff%)
4 �reset_icon(Ohandle%,3):�reset_icon(Ohandle%,4)
�
(�
2
<
F� �set_printer(no%)
P7printer%(no%)=-�select_display(43,-printer%(no%),7)
ZH�shade_icon(SChandle%,11,(printer%(no%)=0 � driver%=0 � enprint%=0))
dA�set_top_icon(7,(printer%(no%)=1 � driver%=-1 � enprint%=-1))
n�
x
�
�*� �shade_3icons(whandle%,ihandle%,sh%)
�� n%
�� n%=ihandle% � ihandle%+2
�! �shade_icon(whandle%,n%,sh%)
��
��
�
�
�� �set_auto(no%)
�� n%
�+auto%(no%)=-�icon_selected(Chandle%,49)
�-�shade_3icons(Chandle%,53,(auto%(no%)=0))
-�shade_3icons(Chandle%,57,(auto%(no%)=0))
�

"
,� �set_autohelp(no%)
6� n%
@@�shade_3icons(Chandle%,37,(mode%(no%)=0 � autohelp%(no%)=0))
J�reset_help_level(no%)
T�
^
h
r� �reset_help_level(no%)
|� autohelp%(no%) �
�# � Hlevel%(no%)<MHlevel%(no%) �
�7  Hlevel%(no%)=MHlevel%(no%):$Hbuff%=�MHlevel%(no%)
�  Helplev%=Hlevel%(no%)
�  �reset_icon(Chandle%,31)
� �
��
�6 MHlevel%(no%)=Hlevel%(no%):$MHbuff%=�Hlevel%(no%)
��
��
�
�
�*� �select_display(icon%,var%,topicon%)
�'var%=�icon_selected(Chandle%,icon%)
 �set_top_icon(topicon%,var%)
	=var%

&
0"� �select_operators(icon%,no%)
:$� PrevOp%:PrevOp%=operator%(no%)
DKoperator%(no%)=-�icon_selected(Chandle%,2)-2*�icon_selected(Chandle%,3)
N3� operator%(no%)=0 � �select_icon(Chandle%,2,1)
X#BothOp%(no%)=(operator%(no%)=3)
b
l*� BothOp%(no%)=-1 � operator%(no%)=0 �
vA � ownsum%(no%)=0 � operator%(no%)=1 � operator%(no%)=PrevOp%
��
�J� ownsum%(no%)=0 � �shade_op_levels(no%) � �set_own_sum_operators(no%)
��set_carry_variableY
�
�� �window_open(Ohandle%) �
�- � operator%(no%)=1 � sgn$="+" � sgn$="-"
�, $Osgnbuff%=sgn$:�reset_icon(Ohandle%,5)
��
�
�� game%>0 �
�" �close_window(handle%(game%))
�% � game%>0 � game%=operator%(no%)
�F � Owin%=0 � PrevOp%=operator%(no%) � �open_window(handle%(game%))
6 � �window_open(Ohandle%) � �open_window(Ohandle%)
6 � �window_open(Chandle%) � �open_window(Chandle%)
�
 �
*
4
>!� �set_own_sum_operators(no%)
H,�shade_icon(Ohandle%,7+operator%(no%),0)
R<�shade_icon(Ohandle%,10-operator%(no%),(BothOp%(no%)=0))
\.�select_icon(Ohandle%,10-operator%(no%),0)
f.�select_icon(Ohandle%,7+operator%(no%),-1)
pownOp%=operator%(no%)
z�
�
�
�� �adjust_for_mode(no%)
�� n%
�-�shade_3icons(Chandle%,31,(mode%(no%)=0))
�@�shade_3icons(Chandle%,37,(mode%(no%)=0 � autohelp%(no%)=0))
�+�shade_icon(Chandle%,50,(mode%(no%)=0))
�+�shade_icon(Chandle%,34,(mode%(no%)=0))
�� mode%(no%)=0 �
�1 autohelp%(no%)=0:�select_icon(Chandle%,50,0)
�. force%(no%)=0:�select_icon(Chandle%,34,0)
� message$()=""
��
�


$� �reset_game
.� n%,m%
8aquest%=0:try%=0:CorrectAns%=0:sesstime%=�:stopped%=0:Pcount%=-1:AnumRW%=0:SnumRW%=0:force5%=0
B� ownsum%(NameNo%)=0 �
L
 �set_sum
V�
`j � decimal%(NameNo%)=0 � $Osum1buff%="1000":$Osum2buff%="100" � $Osum1buff%="10.00":$Osum2buff%="1.00"
j �set_up_sum_window
t�
~�
�
�
�� �set_sum
��dig1$()="":dig2$()="":dig3$()="":carry$()="":car_dig%()=(operator%(NameNo%)=2):strike$()="":nextdig%=0:rubdig%=-1:message$()="":initx%=0:inity%=0:initnum%=0:nexterr%=anslim%:Cdone%()=0:STdone%()=0:correct%=0
�Fsum%=0:drag%=0:rubber%=0:marked%=0:double%=0:Psave%=0:nextcheck%=0
�Hcarry%=0:strike%=0:reduce%=0:Bstep%=0:SCformat%=2-estimate%(NameNo%)
�'� force5%=-1 � SCformat%=2 � try%=0
�<nextmess%=-(Helplev%=5 � mode%(NameNo%)=1 � SCformat%=2)
��set_top_icon(0,0)
��set_top_icon(1,-1)
��shade_item(menu%,2,1)
�
� force5%<>-1 �

 � BothOp%(NameNo%) �
  � ownsum%(NameNo%)=0 �
!   PrevOp%=operator%(NameNo%)
(?   operator%(NameNo%)=2+(quest%+1<=no_quest%(NameNo%)/2+.5)
2  �
<8  game%=operator%(NameNo%):Helplev%=Hlevel%(NameNo%)
F  �set_carry_variableY
P  � PrevOp%<>game% �
Z&   �close_window(handle%(PrevOp%))
d   �switch_window(game%)
n8   � �window_open(Chandle%) � �open_window(Chandle%)
x  �
� �
� � ownsum%(NameNo%)=0 �
�K  � game%=1 � �make_add(Alevel%(NameNo%)) � �make_sub(Slevel%(NameNo%))
� �
��
�
��digits(num1%,dig1$())
��digits(num2%,dig2$())
��digits(ans%,answer$())
��carry_positions:PrevOp%=0
��set_top_icon(5,0)
�B�set_top_icon(2,(SCformat%=2 � mode%(NameNo%)=1 � Helplev%>0))
��close_window(P2handle%)
8ș"Wimp_ForceRedraw",handle%(game%),0,-675,1280,-150
�

"
,� �set_carry_variableY
68� operator%(NameNo%)=1 � ycar%=y3%-44 � ycar%=y1%+48
@�
J
T
^� �place_estimate
h5� sumx1%,sumx2%,st2%,x%,y%,symbol$,power%:y%=-596
r=� operator%(NameNo%)=1 � symbol$="plus" � symbol$="minus"
|'st2%=825-75*� � num2%:symb%=st2%-75
�sumx1%=symb%-373:sumx2%=452
�ș"Wimp_SetColour",7
�� pos%=0 � 4
�  x1%=�printdigx(sumx1%,pos%)
�  x2%=�printdigx(sumx2%,pos%)
�e � dig1$(pos%)<>"" � ș"OS_SpriteOp",&134,sarea%,"n"+dig1$(pos%),ox%+x1%,oy%+y%,0,scale27%,trans%
�e � dig2$(pos%)<>"" � ș"OS_SpriteOp",&134,sarea%,"n"+dig2$(pos%),ox%+x2%,oy%+y%,0,scale27%,trans%
�
� � colname%(NameNo%) �
�B  x%=�printdigx(902,pos%)+19+14*(pos%=4 � decimal%(NameNo%)=0)
�)  power%=pos%+2*(decimal%(NameNo%)=1)
�P  ș"OS_SpriteOp",&134,sarea%,"dig"+�power%,ox%+x%,oy%+y%+88,0,scale%,trans%
� �
 �
 � decimal%(NameNo%) �
 [ ș"OS_SpriteOp",&134,sarea%,"decpoint",ox%+�printdigx(sumx1%,2),oy%+y%,8,scale%,trans%
 &[ ș"OS_SpriteOp",&134,sarea%,"decpoint",ox%+�printdigx(sumx2%,2),oy%+y%,8,scale%,trans%
 0X ș"OS_SpriteOp",&134,sarea%,"decpoint",ox%+�printdigx(902,2),oy%+y%,8,scale%,trans%
 :�
 DJș"OS_SpriteOp",&134,sarea%,symbol$,ox%+symb%+2,oy%+y%,0,scale%,trans%
 NGș"OS_SpriteOp",&134,sarea%,"equals",ox%+827,oy%+y%,0,scale%,trans%
 XMș"OS_SpriteOp",&134,sarea%,"equals2",ox%+1052,oy%+y%+150,0,scale%,trans%
 b!ȓ Ȑ ox%+900,oy%+y%-12,375,8
 l�
 v
 �
 �� �set_format2
 �.EstVal%=sum%:sum%=0:dig3$()="":SCformat%=2
 �#�shade_icon(handle%(game%),2,0)
 �� Helplev%=5 � nextmess%=-1
 �8ș"Wimp_ForceRedraw",handle%(game%),0,-675,1280,-150
 ��
 �
 �
 �� �icon_selection
 �� icon%:icon%=block%!16
 �� Owin%=-1 � icon%<>6 � �
 �Ȏ icon% �
!P � 0:� SCformat%=1 � �set_format2 � � correct%=0 � nextcheck%=0 � �check_sum
!Q � 1:� rubber%=0 � �set_up_rub_out � �replace_number(10):rubber%=0:*POINTER 1
! � 2:�message("?")
! n � 3:� �window_open(Chandle%)=0 � $CCbuff%="0":CCsum=0:CCnum=0:CCop%=0:CCprev%=0:�reset_icon(CChandle%,17)
!*3        CChandle%=�centre_window(CChandle%,"Y")
!4;        ș"Wimp_SetCaretPosition",CChandle%,-1,0,0,0,-1
!> � 4:�show_score("")
!HT � 5:� printer%(NameNo%)=1 � driver%=-1 � correct%=0 � Psave%=0 � �save_sum("S")
!R        force5%=0
!\$        � marked%=0 � quest% +=1
!f)        � quest%<no_quest%(NameNo%) �
!pP         � auto%(NameNo%)=1 � ownsum%(NameNo%)=0 � �new_auto_level(correct%)
!zA         � ownsum%(NameNo%)=0 � �set_sum � �set_up_sum_window
!�
        �
!�         �game_end
!�
        �
!�E � 6:SThandle%=�relative_window(handle%(game%),SThandle%,450,556)
!�u � 7:� printer%(NameNo%)=1 � Psave%=0 � �save_sum("S"):Phandle%=�relative_window(handle%(game%),Phandle%,900,406)
!�4 � 8,9,10,11,12,13,14,15,16,17,38:� double%=-1 �
!�D                        � mode%(NameNo%)=1 � �place_double_click
!�                       �
!�j                        � drag% � initnum%=icon%-8 � �replace_number(icon%-8) � �select_digit(icon%-8)
!�                       �
!�. � 18,19,20,21,22,28,29,30,31,32:� drag% �
!�N                      � rubber%=0 � �place_number(icon%) � �rub_out(icon%)
!�                     �
".                      �remove_digit(icon%)
"                     �
"\ � 23,24,25,26:� operator%(NameNo%)=1 � �carry_pos(icon%-22) � �strike_through(icon%-22)
"$C � 33,34,35,36,37:� operator%(NameNo%)=2 � �carry_pos(icon%-33)
".& � 27:� SCformat%=1 � �set_format2
"8�
"B�
"L
"V
"`� �carry_pos(icon%)
"j#� dragval%=30 � SCformat%=1 � �
"t
� drag% �
"~> � rubber%=0 � �place_carry(icon%) � �rub_out_carry(icon%)
"��
"� �remove_carry(icon%)
"��
"��
"�
"�
"�� �strike_through(icon%)
"�
� drag% �
"�l � double%=0 � strike$(icon%)="" � rubber%=0 � �place_strike(icon%) � � rubber% � �rub_out_strike(icon%)
"��
"� �remove_strike(icon%)
"��
#�
#

#
#� �select_digit(num%)
#(� x%,y%
#2"� rubber% � rubber%=0:*POINTER
#<!� mode%(NameNo%) � double%=-1
#FS� drag% � ș"Wimp_ForceRedraw",handle%(game%),dragx%,dragy%,dragx%+75,dragy%+75
#Pdragval%=num%:nextcheck%=0
#Z�pick_up_number
#d�
#n
#x
#�� �remove_digit(icon%)
#�&� x%,Y3%,Mode%,flg%,dig%:rubber%=0
#�+Mode%=-(mode%(NameNo%)=1 � SCformat%=2)
#�
#�� SCformat%=2 �
#� dig%=icon%-18:Y3%=y3%
#�# x%=�digx(dig%):flg%=(icon%>26)
#��
#�+ dig%=icon%-28:Y3%=-596:flg%=(icon%<28)
#� x%=�printdigx(902,dig%)
#��
#�� flg% � �
#�
$� dig3$(dig%)="" � �
$)dragval%=� dig3$(dig%):dig3$(dig%)=""
$sum% -=dragval%*10^dig%
$";ș"Wimp_ForceRedraw",handle%(game%),x%,Y3%,x%+75,Y3%+75
$,9� Mode%=1 � dig%<nextdig% � �delete_current_box(dig%)
$6�pick_up_number
$@'� message$(0)<>"" � �remove_message
$J%nextmess%=-(Helplev%=5 � Mode%=1)
$T!� sum%=0 � �set_top_icon(0,0)
$^�
$h
$r
$|� �delete_current_box(dig%)
$�� x%,Y3%,h%,olddig%
$�"� Clears box in next position.
$�T� rubdig%>-1 � dig%<rubdig% � olddig%=rubdig% � � rubdig%=-1 �  olddig%=nextdig%
$�� olddig%=0 � �
$�
$�H� operator%(NameNo%)=2 � carry%=-1 � olddig%<>rubdig% � Helplev%>2 �
$� � strike%=0 �
$�#  �carry_redraw(olddig%,Bstep%)
$� �
$�$  �strike_redraw(olddig%,Bstep%)
$� �
$��
$�Q � operator%(NameNo%)=1 � �dig_carry_redraw(olddig%) � �digit_redraw(olddig%)
%�
%rubdig%=dig%
%�
%&
%0
%:� �pick_up_number
%D� w%,h%
%N:� rubber%=0 � w%=18-3*(dragval%=30):h%=22 � w%=6:h%=12
%X x%=!block%-w%:y%=block%!4-h%
%b-�work_area_origin(handle%(game%),ox%,oy%)
%l,dragx%=x%+4-ox%:dragy%=y%+8-oy%:drag%=-1
%v1initx%=dragx%:inity%=dragy%:initnum%=dragval%
%��move_number
%��
%�
%�
%�� �rub_out_strike(dig%)
%�� x%,y%
%�� strike$(dig%)="" � �
%�strike$(dig%)=""
%��strike_redraw(dig%,0)
%��
%�
%�
%�� �remove_strike(dig%)
&� strike$(dig%)="" � �
&�rub_out_strike(dig%)
&dragval%=30
& �pick_up_number
&*�
&4
&>
&H� �set_up_rub_out
&RS� drag% � ș"Wimp_ForceRedraw",handle%(game%),dragx%,dragy%,dragx%+75,dragy%+75
&\dragval%=10:rubber%=-1
&f*POINTER 0
&p�pick_up_number
&z�
&�
&�
&�� �rub_out(icon%)
&�� x%,Y3%,Mode%,flg%,dig%
&�+Mode%=-(mode%(NameNo%)=1 � SCformat%=2)
&�
&�� SCformat%=2 �
&�" dig%=icon%-18:flg%=(icon%>26)
&� Y3%=y3%:x%=�digx(dig%)
&��
&�" dig%=icon%-28:flg%=(icon%<28)
&�% Y3%=-596:x%=�printdigx(902,dig%)
&��
'� flg% � �
'� dig3$(dig%)="" � �
'
'$sum% -=�dig3$(dig%)*10^dig%
'.5dig3$(dig%)="":nextmess%=-(Helplev%=5 � Mode%=-1)
'8;ș"Wimp_ForceRedraw",handle%(game%),x%,Y3%,x%+75,Y3%+75
'B9� Mode%=1 � dig%<nextdig% � �delete_current_box(dig%)
'L!� sum%=0 � �set_top_icon(0,0)
'V'� message$(0)<>"" � �remove_message
'`%nextmess%=-(Helplev%=5 � Mode%=1)
'j�
't
'~
'�� �check_rubout
'�� n%:n%=rubdig%
'��
'� n% +=1
'�-� dig3$(n%)="" � n%=nextdig% � n%=anslim%
'�,� dig3$(n%)="" � n%<nextdig% � =n% � =-1
'�
'�
'�� �place_carry(pos%)
'�4� x%,x2%,h%,valid%,digcase%:double%=0:digcase%=0
'�
'�rvalid%=(pos%=nextdig%+Bstep% � carry%=-1 � strike%=0 � Cdone%(pos%)=-1 � Helplev%<=2 � pos%<=anslim% � try%>0)
(4� mode%(NameNo%)=1 � valid%=0 � �message("pl"):�
(
S� mode%(NameNo%)=1 � Helplev%=5 � �check_dig_val(pos%,"c")=0 � �message("ck"):�
(m� mode%(NameNo%)=0 � (pos%>anslim% � operator%(NameNo%)=1 � pos%>�quest_limit � operator%(NameNo%)=2) � �
(
((\� message$(1)<>"" � mode%(NameNo%)=1 � �(Helplev%=5 � Cdone%(pos%)=-1) � �remove_message
(2~nextmess%=-(Helplev%=5 � nextdig%<=anslim% � mode%(NameNo%)=1 � (Cdone%(pos%)=0 � Cdone%(pos%)=-1 � �carry_2dig(pos%)=-1))
(<
(FIș"Wimp_ForceRedraw",handle%(game%),dragx%,dragy%,dragx%+75,dragy%+75
(P
(ZS� operator%(NameNo%)=2 � � carry$(pos%)=1 � dragval%=1 � �carry_2dig(pos%)=-1 �
(d" carry$(pos%)="1"+carry$(pos%)
(n> � Cdone%(pos%)=-1 � pos%=nextdig%+Bstep% � Cdone%(pos%)=0
(x�
(� carry$(pos%)=�dragval%
(��
(�
(�drag%=0
(��carry_redraw(pos%,0)
(�K� Helplev%=2 � st_dig%(pos%)=1 � strike$(pos%)="" � Cdone%(pos%)=-1 � �
(�Cdone%(pos%)=-1
(�
(�/� mode%(NameNo%)=1 � operator%(NameNo%)=2 �
(�? � pos%=nextdig% � reduce%=0:carry%=0:� Triggers next digit
(�L � �carry_2dig(pos%)=-1 � �carry$(pos%)=1 � Helplev%=2 � pos%=nextdig% �
(�O  � strike$(pos%+1)="/" � digcase%=-1 � �count_steps:pos%=nextdig%+Bstep%+1
(�  Bstep% +=1:reduce%=-1
) �
)�
)
)"/� mode%(NameNo%)=1 � pos%=nextdig%+Bstep% �
), � Cdone%(pos%)=-1
)6 � operator%(NameNo%)=1 �
)@0  � Helplev%>2 � �dig_carry_redraw(nextdig%)
)J   � pos%=nextdig% � carry%=0
)T �
)^  � reduce%=-1 �
)h"   reduce%=digcase%:Bstep% -=1
)rC   � strike$(nextdig%+Bstep%)="" � st_dig%(nextdig%+Bstep%)=1 �
)|    strike%=-1:carry%=-1
)�6    � Helplev%>2 � �strike_redraw(nextdig%,Bstep%)
)�   �
)�    reduce%=0
)�;    � Bstep%=0 � �carry$(nextdig%)=car_dig%(nextdig%) �
)�8     � Helplev%>2 � �digit_redraw(nextdig%):carry%=0
)�	    �
)�6     � Helplev%>2 � �carry_redraw(nextdig%,Bstep%)
)�	    �
)�   �
)�  �
)�-   � Helplev%>2 � �digit_redraw(nextdig%)
)�"   carry%=0:reduce%=0:Bstep%=0
)�  �
* �
*�
*�
*&
*0
*:M� �carry_2dig(pos%)=car_dig%(pos%)>9 � car_dig%(pos%) � 10<>� dig1$(pos%)
*D
*N
*X!� �carry_posx(pos%,� x%,� h%)
*b� operator%(NameNo%)=1 �
*l x%=�digx(pos%)+37:h%=26
*v�
*� x%=�digx(pos%)-14:h%=35
*��
*��
*�
*�
*�� �remove_carry(pos%)
*�� x%,h%
*�� carry$(pos%)="" � �
*��split_carry(pos%,dragval%)
*��carry_redraw(pos%,0)
*�
rubber%=0
*�#ș"Wimp_GetPointerInfo",,block%
*��pick_up_number
+�move_number
+�
+
+ 
+* � �split_carry(pos%,� lift%)
+4� xco%,l$,r$:xco%=!block%
+>� � carry$(pos%)>1 �
+H. �work_area_origin(handle%(game%),ox%,oy%)
+R, l$=�carry$(pos%),1):r$=�carry$(pos%),1)
+\V � xco%-ox%<�digx(pos%)+14 � carry$(pos%)=r$:lift%=�l$ � carry$(pos%)=l$:lift%=�r$
+f�
+p lift%=�carry$(pos%)
+z carry$(pos%)=""
+��
+��
+�
+�
+�� �rub_out_carry(pos%)
+� � x%,h%,xco%,l%:xco%=!block%
+�� carry$(pos%)="" � �
+��split_carry(pos%,l%)
+��carry_posx(pos%,x%,h%)
+�?ș"Wimp_ForceRedraw",handle%(game%),x%,ycar%,x%+42,ycar%+h%
+��
+�
+�
,� �grid
,� x%,y%
,ș"Wimp_SetColour",15
,$� x%=0 � 1275 � 75
,.& � ox%+x%,oy%-900:� ox%+x%,oy%-150
,8�
,B� y%=-900 � -150 � 75
,L# � ox%,oy%+y%:� ox%+1275,oy%+y%
,V�
,`� ox%,oy%:� ox%+1275,oy%
,j
,tJș"OS_SpriteOp",&134,sarea%,"numbers",ox%+75,oy%-825,0,scale27%,trans%
,~c� operator%(NameNo%)=2 � ș"OS_SpriteOp",&134,sarea%,"strike",ox%+900,oy%-825,0,scale27%,trans%
,��
,�
,�
,�� �sum_parts
,�5� x%,d%,dig$,shift%,x1%,symbol%,limQ%,lim%,level%
,�,anslim%=�answer_limit:limQ%=�quest_limit
,�symbol%=�digx(limQ%)-75
,�
,�ș"Wimp_SetColour",7
,�@� operator%(NameNo%)=1 � x%=�digx(anslim%) � x%=�digx(limQ%)
,�$ȓ Ȑ ox%+x%,oy%+y3%+63,450-x%,8
,�$ȓ Ȑ ox%+x%,oy%+y3%-12,450-x%,8
-
-
� operator%(NameNo%)=1 �
-K ș"OS_SpriteOp",&134,sarea%,"plus",ox%+symbol%,oy%+y2%,0,scale%,trans%
-�
-(L ș"OS_SpriteOp",&134,sarea%,"minus",ox%+symbol%,oy%+y2%,0,scale%,trans%
-2�
-<
-F� colname%(NameNo%) �
-P7 � operator%(NameNo%)=1 � lim%=anslim% � lim%=limQ%
-Z � d%=0 � lim%
-d5  x%=�digx(d%)+19+14*(d%=4 � decimal%(NameNo%)=0)
-n'  power%=d%+2*(decimal%(NameNo%)=1)
-xN  ș"OS_SpriteOp",&134,sarea%,"dig"+�power%,ox%+x%,oy%+y0%,0,scale%,trans%
-� �
-��
-�
-��
-�
-�
-�� �digx(d%)=77+75*(4-d%)
-�
-�
-�� �sum_numbers
-�� d%,x%,y%
-�� d%=0 � 4
-� x%=�digx(d%)
.c � dig1$(d%)<>"" � ș"OS_SpriteOp",&134,sarea%,"n"+dig1$(d%),ox%+x%+2,oy%+y1%,0,scale27%,trans%
.c � dig2$(d%)<>"" � ș"OS_SpriteOp",&134,sarea%,"n"+dig2$(d%),ox%+x%+2,oy%+y2%,0,scale27%,trans%
.j � dig3$(d%)<>"" � ș"OS_SpriteOp",&134,sarea%,"move"+dig3$(d%),ox%+x%+19,oy%+y3%+12,8,scale27%,trans%
."
., � operator%(NameNo%)=1 �
.6k  � carry$(d%)<>"" � ș"OS_SpriteOp",&134,sarea%,"carry"+carry$(d%),ox%+x%+37,oy%+ycar%,0,scale%,trans%
.@ �
.Je  � strike$(d%)="/" � ș"OS_SpriteOp",&134,sarea%,"move30",ox%+x%+16,oy%+y1%+15,8,scale27%,trans%
.T  � d%>0 �
.^?    � carry$(d%-1)<>"" � �print_carry_dig(�digx(d%-1),d%-1)
.h@    � d%=4 � carry$(d%)<>"" � �print_carry_dig(�digx(d%),d%)
.r  �
.| �
.��
.�
.�� decimal%(NameNo%) �
.� � y%=y1% � y3% � -75
.�Q ș"OS_SpriteOp",&134,sarea%,"decpoint",ox%+�digx(2)+4,oy%+y%,8,scale%,trans%
.� �
.��
.��
.�
.�
.�� �sum_numbers_est
.�� d%,x%
.�� d%=0 � 4
/ x%=�printdigx(902,d%)
/g � dig3$(d%)<>"" � ș"OS_SpriteOp",&134,sarea%,"move"+dig3$(d%),ox%+x%+19,oy%-584,8,scale27%,trans%
/�
/&�
/0
/:
/D� �print_carry_dig(x%,d%)
/N� n$
/X� � carry$(d%)=1 �
/bX ș"OS_SpriteOp",&134,sarea%,"carry"+carry$(d%),ox%+x%-5,oy%+ycar%+4,8,scale%,trans%
/l�
/v n$=�carry$(d%),1)
/�O ș"OS_SpriteOp",&134,sarea%,"carry1",ox%+x%-12,oy%+ycar%+4,8,scale%,trans%
/�N ș"OS_SpriteOp",&134,sarea%,"carry"+n$,ox%+x%,oy%+ycar%+4,8,scale%,trans%
/��
/��
/�
/�
/�� �make_add(level%)
/�� f%,s%
/�Ȏ level% �
/�
 � 1:�
/�#         f%=�(80)+10:s%=�(10)-1
/�$        � f%+s%<�((f%+10)/10)*10
/�
 � 2:�
0$         f%=�(80)+10:s%=�(80)+10
0F        � ((�((f%+10)/10)*10)+(�(s%/10)*10)>(f%+s%)) � (f%+s%)<100
0 � 3:f%=�(80)+10:s%=�(9)
0 
 � 4:�
0*$         f%=�(80)+10:s%=�(80)+10
04        � f%+s%<100
0>  � 5:f%=�(80)+10:s%=�(80)+10
0H$ � 6:f%=�(800)+100:s%=�(800)+100
0R& � 7:f%=�(8000)+100:s%=�(8000)+100
0\�
0f� s%=0 �
0p	 s%=1
0z � f% � 10=9 � f% -=1
0��
0� num1%=f%:num2%=s%:ans%=f%+s%
0��
0�
0�
0�� �results_sum
0�1� st$,op$,down%,num1$,num2$,ans$,fill$,fill2$
0�9down%=1-(newR%=1):Rcnt% +=down%:notsavedR%=-1:newR%=0
0�� decimal%(NameNo%) �
0�  num1$=�insert_point(�num1%)
0�  num2$=�insert_point(�num2%)
0� ans$=�insert_point(�ans%)
0��
1) num1$=�num1%:num2$=�num2%:ans$=�ans%
1�
1
1$#fill$=�12-(�(num1$+num2$))," ")
1.fill2$=�6-� ans$," ")
18%� game%=1 � op$=" + " � op$=" - "
1BJst$=" ("+�(quest%+1)+") "+num1$+op$+num2$+fill$+" = ("+ans$+")"+fill2$
1L&Rptr%=�add_string(Rptr%,st$,down%)
1V�
1`
1j
1t� �insert_point(num$)
1~� split%,left$,right$
1�� � num$>2 �
1� split%=� num$-2
1�( left$=�num$,split%):right$=�num$,2)
1��
1�( left$="0":right$=�2-�num$,"0")+num$
1��
1�=left$+"."+right$
1�
1�
1�� �make_sub(level%)
1�� f%,s%,a%,x%,f$,s$
1��
2 Ȏ level% �
2
  � 1:�
2$          f%=�(80)+10:s%=�(10)-1
2"         � f%-s%>(�(f%/10)*10)
2(  � 2,3:f$="":s$=""
22           � x%=1 � level%
2<            �
2F&             f%=�(10)-1:s%=�(10)-1
2P            � f%>s%
2Z#            f$=f$+�f%:s$=s$+�s%
2d           �
2n            f%=�(f$):s%=�(s$)
2x  � 4:�subsub(3,1,0)
2�  � 5:�subsub(3,2,0)
2�  � 6:�subsub(4,3,0)
2�  � 7:�subsub(4,3,1)
2�  � 8:�subsub(4,3,2)
2�  � 9:�subsub(5,4,3)
2�  � 10:f%=�(80)+10:s%=�(9)
2� �
2�
� s%>0
2� num1%=f%:num2%=s%:ans%=f%-s%
2��
2�
2�
2�� �subsub(len%,dec%,zeros%)
3� x%
3f$="":s$="":z%=0
3� x%=1 � len%
3" f%=�(10)-1:s%=�(10)-1
3,. � x%>dec% �:f%=�(10)-1:s%=�(10)-1:� f%>s%
362 � x%=dec%+1 �:f%=�(10)-1:s%=�(10)-1:� f%>s%+1
3@# � x%<len% � � �(6)<zeros% f%=0
3J � f%=0 � x%>1 �
3T  z% +=1
3^  � z%>zeros% f%=�(9)
3h �
3r f$=�f%+f$:s$=�s%+s$
3|�
3�f%=�(f$):s%=�(s$)
3��
3�
3�
3�� �digits(num%,dig$())
3�� d%
3�� d%=0 � 4
3�3 � num%>0 � dig$(d%)=�(num% � 10) � dig$(d%)=""
3� num%=num% � 10
3��
3�4� decimal%(NameNo%)=1 � dig$(2)="" � dig$(2)="0"
3��
3�
4
4� �find_error
4� x%
4&� nexterr%>=nextdig% � �
40�
4:nexterr% +=1
4D<� dig3$(nexterr%)<>answer$(nexterr%) � nexterr%=nextdig%
4N
4X� nexterr%<nextdig% �
4b( � rubdig%>-1 � x%=�digx(rubdig%)+10
4l< ș"Wimp_ForceRedraw",handle%(game%),x%,y3%,x%+75,y3%+75
4v* rubdig%=nexterr%:x%=�digx(rubdig%)+10
4�< ș"Wimp_ForceRedraw",handle%(game%),x%,y3%,x%+75,y3%+75
4��
4��
4�
4�
4�� �null_event
4�� drag% � �move_number
4�J� �-sesstime%>timelim%(NameNo%)*6000 � Notimer%(NameNo%)=0 � game%>0 �
4�> message$(1)="Time's up":message$(2)="":�7:�font_to_screen
4� �pause(400):�game_end
4��
4�B� drawfont% � �font_to_screen:�message_sprite_back:drawfont%=0
4�F� nextmess% � �pause(100*(nextmess%-1)):�message("pr"):nextmess%=0
55� printer%(NameNo%)=1 � driver%=0 � enprint%=-1 �
5 driver%=�ensure_Pdriver
5@ � driver% � �set_top_icon(7,-1):�shade_icon(SChandle%,11,0)
5 �
5*N� �window_open(Lhandle%)=-1 � create%=-2 � �loadbox_windows(-1):create%=-1
54:� �-TLtime%>1000 � �close_window(Thandle%):TLtime%=1E7
5>�
5H
5R
5\� �move_number
5f&� x%,y%,x1%,x2%,y1%,y2%,w%,h%,flg%
5p#ș"Wimp_GetPointerInfo",,block%
5z
5�� rubber% �
5�, w%=75:h%=75:x%=!block%-6:y%=block%!4-12
5��
5�A w%=36-6*(dragval%=30):h%=44:x%=!block%-w%/2:y%=block%!4-h%/2
5��
5�
5�-�work_area_origin(handle%(game%),ox%,oy%)
5�x% -=ox%:y% -=oy%
5�
5�,� rubber%=-1 � (y%>-266 � dragy%>-266) �
5�@  ș"OS_SpriteOp",&13C,sarea%,"backtop1",1 � r0%,r1%,r2%,r3%
5�4  ș"OS_SpriteOp",&134,sarea%,"top1",0,0,0,-1,-1
5�D  ș"OS_SpriteOp",&134,sarea%,"move10",x%-150,844+y%-694,8,-1,-1
61  ș"OS_SpriteOp",r0%,r1%,r2%,r3%:flg%=-1:�26
6�
6)� �(x%-dragx%)<4 � �(y%-dragy%)<8 � �
6$
6.=� x%>dragx% � x2%=x%+w%:x1%=dragx% � x2%=dragx%+w%:x1%=x%
68=� y%>dragy% � y2%=y%+h%:y1%=dragy% � y2%=dragy%+h%:y1%=y%
6Bdragx%=x%:dragy%=y%
6L;� �(initx%-dragx%)>12 � �(inity%-dragy%)>12 � double%=0
6V
6`� rubber% �
6j, cond%=-((x2%<170 � x1%>285) � y1%>-165)
6t0 � x%<0 � x%>1276 � y%<-844 � y%>0 � cond%=1
6~ � "POINTER "+� cond%
6��
6�
6�� y2%>-150 �
6� � y1%>-150 � y1%=-150
6� � y2%>-150 � y2%=-150
6��
6�R� �(y1%=-150 � y2%=-150) � ș"Wimp_ForceRedraw",handle%(game%),x1%,y1%,x2%,y2%
6�
6�� flg% �
6�. �work_area_origin(handle%(game%),ox%,oy%)
6�7 flg%=�update_window(handle%(game%),152,-150,300,0)
6� ȕ flg%
7L  ș"OS_SpriteOp",&134,sarea%,"backtop1",ox%+150,oy%-146,0,scale%,trans%
7
*  ș"Wimp_GetRectangle",,block% � flg%
7 �
7F � y1%<-146 � ș"Wimp_ForceRedraw",handle%(game%),x1%,y1%,x2%,-146
7(�
72�
7<
7F
7P� �place_number(ICdrag%)
7Z<� x%,y%,Y3%,dig%,Mode%,flg%,valid%,range%,Dig%:valid%=-1
7d4� game%=1 � range%=anslim% � range%=�quest_limit
7n*Mode%=(mode%(NameNo%)=1 � SCformat%=2)
7x� dragval%=30 � �
7�check%=-1:double%=0
7�Iș"Wimp_ForceRedraw",handle%(game%),dragx%,dragy%,dragx%+75,dragy%+75
7�4� message$(1)<>"" � Helplev%<5 � �remove_message
7�-�work_area_origin(handle%(game%),ox%,oy%)
7�
7�� SCformat%=2 �
7� dig%=ICdrag%-18:Y3%=y3%
7�% x%=�digx(dig%):flg%=(ICdrag%>26)
7��
7� dig%=ICdrag%-28:Y3%=-596
7�. x%=�printdigx(902,dig%):flg%=(ICdrag%<28)
7��
7�� flg% � �
8
8�� Mode%=-1 � SCformat%=2 � valid%=((dig%<=nextdig% � game%=1 � Helplev%=0 � dig%<=range% � game%=2 � nextdig%=anslim%+1 � dig%<=range%) � (carry%=0 � carry%=-1 � (Helplev%<3 � rubdig%>-1)))
8!� valid%=0 � �message("pl"):�
8"-� Mode%=0 � SCformat%=2 � dig%>range% � �
8,
86<� Mode%=-1 � Helplev%=5 � �check_dig_val(dig%,"ans")=0 �
8@0 � rubdig%=-1 � Dig%=nextdig% � Dig%=rubdig%
8J2 � dig%=Dig% � �message("ck") � �message("pr")
8T flg%=-1
8^�
8h� flg% � �
8r
8|J� Mode%=-1 � Helplev%>0 � �check_sum_type(dig%)<>0 � �message("sum"):�
8�
8� dragx%=0:dragy%=-825:drag%=0
8�
8�3� dig3$(dig%)<>"" � sum% -=�dig3$(dig%)*10^dig%
8�dig3$(dig%)=�dragval%
8�sum% +=dragval%*10^dig%
8�
8�L ș"Wimp_ForceRedraw",handle%(game%),x%,Y3%,x%+75,Y3%+75:� Current digit
8�% � dig%<nextdig% � rubdig%=-1 � �
8�
8�� Mode%=-1 �
8�5 � dig%=nextdig% � nextdig% -=(nextdig%<=anslim%)
8�Z � car_dig%(nextdig%)=(operator%(NameNo%)=2) � nextdig%<=anslim% � Cdone%(nextdig%)=-1
9\ � st_dig%(nextdig%)=0 � operator%(NameNo%)=2 � nextdig%<=anslim% � STdone%(nextdig%)=-1
95 � operator%(NameNo%)=1 � Helplev%=0 � �skip_over
9
9& � rubdig%=-1 �
90+  � operator%(NameNo%)=2 � �count_steps
9:j  � car_dig%(nextdig%+Bstep%)>1-operator%(NameNo%) � carry$(nextdig%+Bstep%)="" � carry%=-1 � carry%=0
9D �
9N
9X � dig%=rubdig% �
9b  rubdig%=�check_rubout
9l �
9v( � try%>0 � rubdig%=-1 � �find_error
9�
9�, �redraw_box_position(nextdig%,Helplev%)
9��
9�Inextmess%=-(Helplev%=5 � (nextdig%<=anslim% � rubdig%>-1) � Mode%=-1)
9�M� (try%<tries%(NameNo%) � force5%=-1) � SCformat%=2 � �set_top_icon(0,-1)
9��
9�
9�
9�� �skip_over
9�� Addition level 0
9�.ȕ dig3$(nextdig%)<>"" � nextdig%<=anslim%
9�nextdig% +=1
9��
:�
:
:
: &� �redraw_box_position(pos%,help%)
:*� operator%(NameNo%)=1 �
:4 �dig_carry_redraw(pos%)
:>�
:H) � carry%=-1 � rubdig%=-1 � help%>2 �
:R
:\  � strike% �
:f"   �strike_redraw(pos%,Bstep%)
:p  �
:z!   �carry_redraw(pos%,Bstep%)
:�  �
:�
:� �
:�  �digit_redraw(pos%)
:� �
:��
:��
:�
:�
:�� �dig_carry_redraw(dig%)
:�� Addition
:�;� rubdig%>-1 � x%=�digx(rubdig%)+10 � x%=�digx(dig%)+10
:�Vș"Wimp_ForceRedraw",handle%(game%),x%,ycar%,x%+75,ycar%+106:� Next digit or carry
;�
;
;
;$� �digit_redraw(dig%)
;.� Subtraction
;8;� rubdig%>-1 � x%=�digx(rubdig%)+10 � x%=�digx(dig%)+10
;BHș"Wimp_ForceRedraw",handle%(game%),x%,y3%,x%+75,y3%+75:� Next digit
;L�
;V
;`
;j � �carry_redraw(dig%,shift%)
;t� x%,h%
;~"�carry_posx(dig%+shift%,x%,h%)
;�Nș"Wimp_ForceRedraw",handle%(game%),x%,ycar%,x%+42,ycar%+h%+4:� Next carry
;��
;�
;�
;�!� �strike_redraw(dig%,shift%)
;�x%=�digx(dig%+shift%)+10
;�Iș"Wimp_ForceRedraw",handle%(game%),x%,y1%,x%+75,y1%+75:� Next strike
;��
;�
;�
;�� �count_steps
;�
� flg%
<Bstep%=0
<
F� Helplev%=2 � �(st_dig%(nextdig%+1)=1 � strike$(nextdig%+1)="") �
<P � strike$(nextdig%)="" � st_dig%(nextdig%)=1 � strike%=-1:carry%=-1:flg%=-1
<Q � strike$(nextdig%)="/" � carry$(nextdig%)="" � reduce%=-1:carry%=-1:flg%=-1
<(�
<2� flg% � �
<<
<FC� st_dig%(nextdig%+1)=1 � strike$(nextdig%+1)="" � Bstep%=1 � �
<Pstrike%=-1:carry%=-1
<Z?ȕ dig1$(nextdig%+Bstep%)="0" � strike$(nextdig%+Bstep%)=""
<d Bstep% +=1
<n�
<x�
<�
<�
<�� �place_strike(dig%)
<�� x%,h%,diglim%,flg%
<�� SCformat%=1 � �
<�C� operator%(NameNo%)=2 � diglim%=�quest_limit � diglim%=anslim%
<�{� mode%(NameNo%)=1 � st_dig%(dig%)=1 � strike$(dig%)="" � dig%>=nextdig% � Helplev%<=2 � Bstep%=dig%-nextdig%:carry%=-1
<Ȇ� mode%(NameNo%)=1 � Helplev%>2 � dig%<>nextdig%+Bstep% � STdone%(dig%)=0 � try%=0 � Helplev%<=2 � dig%>diglim% � �message("pl"):�
<�)� mode%(NameNo%)=0 � dig%>diglim% � �
<�� dragval%<30 �
<�" � Helplev%=5 � �message("ck")
<� flg%=-1
<��
=� flg% � �
=]� message$(1)<>"" � mode%(NameNo%)=1 � �(Helplev%=5 � STdone%(dig%)=-1) � �remove_message
=Iș"Wimp_ForceRedraw",handle%(game%),dragx%,dragy%,dragx%+75,dragy%+75
="-�work_area_origin(handle%(game%),ox%,oy%)
=,2strike$(dig%)="/":drag%=0:double%=0:dragval%=0
=6anextmess%=-(Helplev%=5 � nextdig%<=anslim% � mode%(NameNo%)=1 � Helplev%=5 � STdone%(dig%)=0)
=@�strike_redraw(dig%,0)
=J� st_dig%(dig%)=0 � �
=TSTdone%(dig%)=-1
=^
=h;� mode%(NameNo%)=1 � dig%=nextdig%+Bstep% � carry%=-1 �
=r � STdone%(dig%)=-1
=|. � Bstep%>0 � carry$(nextdig%+Bstep%)="" �
=�4  reduce%=(carry$(nextdig%+Bstep%)=""):strike%=0
=�  � reduce%=0 � Bstep% -=1
=�3  � Helplev%>2 � �carry_redraw(nextdig%,Bstep%)
=� �
=�,  � Helplev%>2 � �digit_redraw(nextdig%)
=�  strike%=0:carry%=0
=� �
=��
=��
=�
=�
=�"� �check_dig_val(dig%,source$)
=�� num%,d%,dig1%
>d%=dig%
>� operator%(NameNo%)=1 �
>[ � source$="ans" � num%=(� dig1$(d%)+� dig2$(d%)+car_dig%(d%)) � 10 � num%=car_dig%(d%)
>&�
>0 � source$="ans" �
>:?  � car_dig%(d%)>0 � dig1%=car_dig%(d%) � dig1%=� dig1$(d%)
>D  num%=dig1%-� dig2$(d%)
>N �
>X  units%=car_dig%(d%) � 10
>b  � �carry_2dig(d%) �
>l-   � carry$(d%)="" � num%=units% � num%=1
>v  �
>�.   � car_dig%(d%)>9 � num%=1 � num%=units%
>�   �
>� �
>��
>�=(num%=dragval%)
>�
>�
>�� �check_sum_type(dig%)
>�
� d1%,d2%
>�%d1%=�dig1$(dig%):d2%=�dig2$(dig%)
>�H� operator%(NameNo%)=1 � =�check_sum_typeA � =�check_sum_typeS(dig%)
>�
>�� �check_sum_typeS(dig%)
?"� dragval%=�answer$(dig%) � =0
?&� d2%-d1%=dragval% � d1%<>d2% � =1
?"� (d1%+d2%) � 10=dragval% � =2
? =0
?*
?4� �check_sum_typeA
?>"� dragval%=�answer$(dig%) � =0
?H� (d1%-d2%)=dragval% � =1
?R=0
?\
?f
?p� �place_double_click
?z� pos%,step%
?�step%=-Bstep%*(Helplev%>2)
?�l� nextdig%>anslim% � car_dig%(anslim%+1)=0 � rubdig%=-1 � mode%(NameNo%)=0 � dragval%=30 � strike%=0 � �
?�
?�5� rubdig%>-1 � pos%=rubdig% � pos%=nextdig%+step%
?�
?�*� carry%=0 � rubdig%>-1 � Helplev%<3 �
?� �place_number(pos%+18)
?��
?�9 � strike% � �place_strike(pos%) � �place_carry(pos%)
?��
?��
?�
?�
@� �replace_number(num%)
@� r0%,r1%,r2%,r3%
@� initnum%<>num% � �
@$ drag%=0:double%=0:dragval%=0
@.� num%=10 �
@8? ș"OS_SpriteOp",&13C,sarea%,"backtop1",1 � r0%,r1%,r2%,r3%
@B3 ș"OS_SpriteOp",&134,sarea%,"top1",0,0,0,-1,-1
@L( ș"OS_SpriteOp",r0%,r1%,r2%,r3%:�26
@V�
@`Iș"Wimp_ForceRedraw",handle%(game%),dragx%,dragy%,dragx%+75,dragy%+75
@j�
@t
@~
@�� �game_end
@�� r%
@�� game%=0 � �
@��shade_item(menu%,2,0)
@�=�close_window(handle%(game%)):game%=0:drag%=0:startOwn%=0
@��close_window(CChandle%)
@�#�close_window(Ohandle%):Owin%=0
@�4�close_window(Phandle%):�close_window(P2handle%)
@�T� marked%=-1 � auto%(NameNo%)=1 � ownsum%(NameNo%)=0 � �new_auto_level(correct%)
@�0� saveR%(NameNo%)=1 � quest%>0 � �end_levels
@�2� IF notsavedO% THEN PROCsave_file($savebuff%)
@�9� autosaveR%=-1 � saveR%(NameNo%)=1 � notsavedR%=-1 �
A' �results_text_file($savetextbuff%)
A
�
A�show_score("E")
A�
A(
A2
A<� �end_levels
AF!� st$,perc$,Alev$,Slev$,auto$
APRcnt% +=2:Rcnt2% +=2
AZd� ownsum%(NameNo%)=0 � Alev$=� Alevel%(NameNo%):Slev$=� Slevel%(NameNo%) � Alev$=" -":Slev$=" -"
AdE� quest% � perc$=�(�(100*CorrectAns%/quest%+.5))+"%" � perc$="0%"
An2� autohelp%(NameNo%)=1 � auto$="Y" � auto$="N"
AxOst$=" End levels: add:"+Alev$+" sub:"+Slev$+", auto help:"+auto$+"  "+perc$
A�"Rptr%=�add_string(Rptr%,st$,2)
A��
A�
A�
A�� �sum_filled
A�� n%,flg%:flg%=-1
A�� n%=0 � anslim%
A�> � dig3$(n%)="" � �(n%=anslim% � answer$(n%)="0") � flg%=0
A��
A�	=flg%
A�
A�
A�� �check_to_results
B+� newR%=1 � try%=1 � �results_next_name
B� try%=1 � �results_sum
B@� decimal%(NameNo%) � sum$=�insert_point(�sum%) � sum$=�sum%
B"sum$=sum$+�6-� sum$," ")
B,3� newR%=0 � Rptr%=�add_string(Rptr%," "+sum$,0)
B6
B@*� estimate%(NameNo%)=1 � correct%=-1 �
BJI � decimal%(NameNo%) � sum$=�insert_point(� EstVal%) � sum$=� EstVal%
BT sum$="Est "+sum$
B^4 � newR%=0 � Rptr%=�add_string(Rptr%," "+sum$,0)
Bh�
Br�
B|
B�
B�� �check_sum
B�� n%,Correct%
B�Icorrect%=(sum%=ans% � �sum_filled=-1):nextcheck%=-1:Correct%=correct%
B�>CorrectAns% -=(correct%=-1 � force5%=0):try% -=(force5%=0)
B�7� saveR%(NameNo%)=1 � force5%=0 � �check_to_results
B�I� message$(1)<>"" � mode%(NameNo%)=1 � �remove_message:message$(1)=""
B�
B�-�work_area_origin(handle%(game%),ox%,oy%)
B�?flg%=�update_window(handle%(game%),mkx%,y3%,mkx%+75,y3%+75)
B�ȕ flg%
B�
 �mark
B�) ș"Wimp_GetRectangle",,block% � flg%
C�
C
C~� (force%(NameNo%)=1 � force5%=-1) � try%>=tries%(NameNo%) � (correct%=0 � force5%=-1) � �force_right_ans:� force5%=-1 � �
C&
C0H� estimate%(NameNo%)=1 � correct%=-1 � force5%=0 � �estimate_message
C:
CD+� correct%=-1 � try%>=tries%(NameNo%) �
CN � Next question
CX+ � next%(NameNo%) � �set_top_icon(5,-1)
Cb^ � printer%(NameNo%)=1 � driver%=-1 � (correct%=0 � force5%=1) � Psave%=0 � �save_sum("S")
Cl% � n%=0 � 2:�set_top_icon(n%,0):�
Cv
C� quest% +=1
C� � next%(NameNo%)=0 �
C�  �pause(200):force5%=0
C�I  � auto%(NameNo%)=1 � ownsum%(NameNo%)=0 � �new_auto_level(correct%)
C�#  � quest%<no_quest%(NameNo%) �
C�;   � ownsum%(NameNo%)=0 � �set_sum � �set_up_sum_window
C�  �
C�   �game_end
C�  �
C� �
C�  � correct%=0 � try%>=tries%(NameNo%) � force5%=0 � message$(1)="No more tries.":message$(2)="":�font_to_screen:�message_sprite_back
C�5  marked%=(next%(NameNo%)=1 � ownsum%(NameNo%)=1)
C� �
D�
DB � next%(NameNo%)=1 � try%=1 � �shade_icon(handle%(game%),5,0)
D3 � nextdig%=anslim%+1 � nexterr%=-1:�find_error
D  � tries%(NameNo%)>1 �
D*W  � try%<tries%(NameNo%)-1 � message$(1)="Try again." � message$(1)="One more try."
D4  message$(2)=""
D>  �font_to_screen
DH  �message_sprite_back
DR �
D\ �pause(200)
Df@ ș"Wimp_ForceRedraw",handle%(game%),mkx%,y3%,mkx%+75,y3%+75
Dp�
DzE� autohelp%(NameNo%)=1 � force5%=0 � �change_help_level(Correct%)
D�Snextmess%=-3*(Helplev%=5 � mode%(NameNo%)=1 � force5%=0 � try%<tries%(NameNo%))
D��
D�
D�
D�� �force_right_ans
D�� force5%=0 �
D� �pause(300)
D�3 � autohelp%(NameNo%)=1 � �change_help_level(0)
D� Helplev%=5:force5%=-1
D�
 �set_sum
D��
D�( Helplev%=Hlevel%(NameNo%):force5%=1
D��
E�
E
E
E$� �estimate_message
E.� est:est=EstVal%
E8%� decimal%(NameNo%) � est=est/100
EB5message$(1)="You estimated "+� est:message$(2)=""
EL
EV�font_to_screen
E`�message_sprite_back
Ej�
Et
E~
E�� �new_auto_level(correct%)
E�*� level%,Lrange%,Hrange%:notsavedO%=-1
E�� operator%(NameNo%)=1 �
E�5 level%=Alevel%(NameNo%):Hrange%=7:numRW%=AnumRW%
E��
E�5 level%=Slevel%(NameNo%):Hrange%=9:numRW%=SnumRW%
E��
E�/� decimal%(NameNo%) � Lrange%=6 � Lrange%=1
E�
E�� correct% �
E� � numRW%>=0 � numRW% +=1
E� � numRW%<0 � numRW%=1
FE � newlevR%(NameNo%)<=numRW% � level% -=(level%<Hrange%):numRW%=0
F
�
F � numRW%<=0 � numRW% -=1
F � numRW%>0 � numRW%=-1
F(E � newlevW%(NameNo%)>=numRW% � level% +=(level%>Lrange%):numRW%=0
F2�
F<
FF� operator%(NameNo%)=1 �
FP= Alevel%(NameNo%)=level%:$level_buffA%=� Alevel%(NameNo%)
FZ AnumRW%=numRW%
Fd �reset_icon(Chandle%,5)
Fn�
Fx= Slevel%(NameNo%)=level%:$level_buffS%=� Slevel%(NameNo%)
F� SnumRW%=numRW%
F� �reset_icon(Chandle%,8)
F��
F�
F��
F�
F�
F�"� �change_help_level(correct%)
F�� correct% �
F�< Hlevel%(NameNo%) +=(Hlevel%(NameNo%)>MHlevel%(NameNo%))
F��
F�, Hlevel%(NameNo%) -=(Hlevel%(NameNo%)<5)
F�N � try%<tries%(NameNo%) � game%>0 � �change_help_display(Hlevel%(NameNo%))
G�
GHelplev%=Hlevel%(NameNo%)
G$Hbuff%=� Hlevel%(NameNo%)
G"�reset_icon(Chandle%,31)
G,�
G6
G@
GJ!� �change_help_display(help%)
GT5� help%<3 � Helplev%>=3 � help%>=3 � Helplev%<3 �
G^) �redraw_box_position(nextdig%,help%)
Gh, �redraw_box_position(nextdig%,Helplev%)
Gr�
G|8� �window_open(Chandle%)=0 � nextmess%=-(Helplev%=5)
G�f� help%=5 � Helplev%<5 � message$()="":ș"Wimp_ForceRedraw",handle%(game%),600,y3%-24,1280,y3%+145
G��
G�
G�
G�� �show_score(when$)
G�#� off%,to_go%:off%=-(when$="E")
G�start%=off%
G�
G�"�delete_icon(SChandle%,9,off%)
G�%�delete_icon(SChandle%,10,1-off%)
G�%�delete_icon(SChandle%,11,1-off%)
G�%�delete_icon(SChandle%,12,1-off%)
G�L�shade_icon(SChandle%,11,(printer%(NameNo%)=0 � driver%=0 � enprint%=0))
H
H$SCRbuff%=� CorrectAns%
H$SCQbuff%=� quest%
H&$$SCWbuff%=� (quest%-CorrectAns%)
H0($Snamebuff%="Name : "+name$(NameNo%)
H:
HD� when$="E" �
HN< $SCtbuff%="Time limit : "+� timelim%(NameNo%)+" minute"
HX5 � timelim%(NameNo%)<>1 � $SCtbuff%=$SCtbuff%+"s"
Hb�
Hl: to_go%=(6000*timelim%(NameNo%)-�+sesstime%+3000)/6000
Hv- $SCtbuff%="You have "+� to_go%+" minute"
H�5 � timelim%(NameNo%)<>1 � $SCtbuff%=$SCtbuff%+"s"
H�" $SCtbuff%=$SCtbuff%+" to go."
H��
H�7� Notimer%(NameNo%) � $SCtbuff%="Time limit : None"
H�
H�+SChandle%=�centre_window(SChandle%,"Y")
H��
H�
H�
H�� �mark
H�	� sp$
H�,� correct%=-1 � sp$="tick" � sp$="cross"
H�Dș"OS_SpriteOp",&134,sarea%,sp$,ox%+mkx%,oy%+y3%,8,scale%,trans%
I�
I
I
I � �input_box(dig%)
I*� x%,h%
I4-�work_area_origin(handle%(game%),ox%,oy%)
I>ș"Wimp_SetColour",11
IH+� carry%=0 � rubdig%>-1 � Helplev%<=2 �
IR  � rubdig%>-1 � dig%=rubdig%
I\ � dig%<=anslim% �
If  x%=�digx(dig%)+10
Ip  ȓ ox%+x%,oy%+y3%+4,52,52
Iz �
I��
I� � strike%=0 �
I�$  �carry_posx(dig%+Bstep%,x%,h%)
I�  ȓ ox%+x%,oy%+ycar%,35,h%
I� �
I�  x%=�digx(dig%+Bstep%)+10
I�  ȓ ox%+x%,oy%+y1%+4,52,52
I� �
I��
I��
I�
I�
I�� �carry_positions
J� dig%,flg%():� flg%(4)
Jst_dig%()=0
J� operator%(NameNo%)=1 �
J$ � dig%=0 � 3
J.I  � � dig1$(dig%)+� dig2$(dig%)+car_dig%(dig%)>9 � car_dig%(dig%+1)=1
J8 �
JB�
JL0 � dig%=0 � 4:car_dig%(dig%)=� dig1$(dig%):�
JV
J` � dig%=0 � 4
Jj(  � car_dig%(dig%)-� dig2$(dig%)<0 �
Jt/   car_dig%(dig%) +=10:car_dig%(dig%+1) -=1
J~6   st_dig%(dig%+1)=1:flg%(dig%)=-1:flg%(dig%+1)=-1
J�  �
J� �
J�
J� � dig%=0 � 4
J�(  � flg%(dig%)=0 � car_dig%(dig%)=-1
J� �
J� � mode%(NameNo%) �
J�3  carry%=(car_dig%(0)>0):strike%=(st_dig%(1)>0)
J�)  � strike% � �count_steps � Bstep%=0
J�%  � car_dig%(0)=-1 � Cdone%(0)=-1
J� �
J��
K�
K

K
K� �answer_limit
K(� ans$,len%
K2ans$=� ans%:len%=�ans$-1
K<+� decimal%(NameNo%)=1 � len%=1 � len%=2
KF	=len%
KP
KZ
Kd� �quest_limit
Kn
� n1$,n2$
Kx#n1%=� � num1%-1:n2%=� � num2%-1
K�� n1%>n2% � =n1% � =n2%
K�
K�
K�� �message_plus(dig%)
K�� mess$,valid%
K�Tvalid%=(�carry$(dig%)=1 � car_dig%(dig%)=1 � carry$(dig%)="" � car_dig%(dig%)=0)
K�8� valid%=0 � mess$="You need to add " � mess$="Add "
K�3� dig1$(dig%)="" � dig2$(dig%)="" � =mess$+"1."
K�A� dig2$(dig%)<>"" � mess$=mess$+dig2$(dig%) � mess$=mess$+"0"
K�Q� dig1$(dig%)<>"" � mess$=mess$+" and "+dig1$(dig%) � mess$=mess$+" and "+"0"
K�+� car_dig%(dig%)>0 � mess$=mess$+" + 1"
K�=mess$+"."
K�
L
L� �message_minus(dig%)
L"� mess$,dig$,units%,valid%,d2$
L"units%=car_dig%(dig%) � 10
L,B� car_dig%(dig%)>-1 � dig$=� car_dig%(dig%) � dig$=dig1$(dig%)
L60� dig2$(dig%)="" � d2$="0" � d2$=dig2$(dig%)
L@�valid%=(units%=�dig1$(dig%) � carry$(dig%)="1" � units%<>�dig1$(dig%) � �carry$(dig%)=car_dig%(dig%) � car_dig%(dig%)=-1 � carry$(dig%)="")
LJB� valid%=0 � mess$="You need to subtract " � mess$="Subtract "
LT!mess$=mess$+d2$+" from "+dig$
L^=mess$+"."
Lh
Lr
L|� �message(source$)
L�� dig%,st%,c%,r%
L�`� rubdig%>-1 � dig%=rubdig%:st%=0:c%=0:r%=0 � dig%=nextdig%:st%=strike%:c%=carry%:r%=reduce%
L�%� source$="sum" � dig%=ICdrag%-18
L�P� dig%>anslim% � source$<>"sum" � Helplev%=5 � source$="?" � correct%=-1 � �
L�.� Helplev%=5 � source$="pl" � source$="pr"
L�message$()=""
L�-�work_area_origin(handle%(game%),ox%,oy%)
L�
L�Ȏ source$ �
L�6 � "?":� Helplev%>0 � �mess_column(dig%,st%,c%,r%)
L�          � Helplev%>1 �
L�o           � Helplev%=4 � c%=0 � �mess_sum(message$(2),dig%) � �mess_DecomCarry(message$(2),dig%,st%,c%,r%)
L�          �
M7 � "pl":� Helplev%>0 � �mess_column(dig%,st%,c%,r%)
M) � "ck":�wrong_number(dig%,st%,c%,r%)
M( � "pr":�mess_column(dig%,st%,c%,r%)
M&b           � c%=0 � �mess_sum(message$(2),dig%) � �mess_DecomCarry(message$(2),dig%,st%,c%,r%)
M0& � "sum":�wrong_calc_message(dig%)
M:�
MD=� message$(1)="" � message$(1)=message$(2):message$(2)=""
MN
MX�font_to_screen
Mb�message_sprite_back
Ml�
Mv
M�
M�� �wrong_calc_message(dig%)
M�%� val%:val%=�check_sum_type(dig%)
M�� operator%(NameNo%)=2 �
M�] � val%=1 � message$(1)="You're taking top from bottom." � message$(1)="You are adding !"
M�( message$(2)="Take bottom from top."
M��
M�0 � val% � message$(1)="You are subtracting."
M��
M��
M�
M�
M�#� �wrong_number(dig%,st%,c%,r%)
N� Helplev%=5 �
Nf � �check_sum_type(dig%)=-1 � st%=0 � �wrong_calc_message(dig%) � message$(1)="No; that's not it."
NX � c%=0 � �mess_sum(message$(2),dig%) � �mess_DecomCarry(message$(2),dig%,st%,c%,r%)
N �
N*�
N4
N>
NH"� �mess_column(dig%,st%,c%,r%)
NR
� var$
N\� c%=0 � Helplev%=1 �
Nf �column_name
Np. � dig%=0 � var$=" first." � var$=" next."
Nz/ message$(1)="Do the "+dig_name$(dig%)+var$
N��
N� � source$="pl" �
N�f  � operator%(NameNo%)=1 � message$(1)="You need to carry." � message$(1)="You need to decompose."
N� �
N��
N��
N�
N�
N�� �column_name
N�� decimal%(NameNo%) �
N�@ dig_name$()="hundredths","tenths","units","tens","hundreds"
N��
N�F dig_name$()="units","tens","hundreds","thousands","ten thousands"
O�
O�
O
O$
O.� �mess_sum(� mess$,dig%)
O8S� operator%(NameNo%)=1 � mess$=�message_plus(dig%) � mess$=�message_minus(dig%)
OB�
OL
OV
O`.� �mess_DecomCarry(� mess$,dig%,st%,c%,r%)
Oj� units%,mess2$
Ot� c%=0 � �
O~I� Helplev%=2 � operator%(NameNo%)=2 � mess$="Do the decomposition.":�
O�
O�� operator%(NameNo%)=1 �
O� mess$="You need to carry"
O�J � Helplev%>2 � mess$=mess$+" "+� car_dig%(dig%)+"." � mess$=mess$+"."
O��
O� � st% �
O�8  mess$="Strike through the "+dig1$(dig%+Bstep%)+"."
O� �
O�  mess$="You need to add "
O�7  mess2$="Replace the "+dig1$(dig%+Bstep%)+" with "
O�  � r% �
O�(   units%=car_dig%(dig%+Bstep%) � 10
PK   � carry$(dig%+Bstep%)="" � mess2$=mess2$+�units% � mess$=mess$+"10."
P
  �
P(   units%=car_dig%(dig%+Bstep%) � 10
PM   � car_dig%(dig%+Bstep%)>9 � mess$=mess$+"10." � mess2$=mess2$+� units%
P(  �
P2&  � � mess2$=20 � mess$=mess2$+"."
P< �
PF�
PP�
PZ
Pd
Pn� �remove_message
Pxmessage$()=""
P�?ș"Wimp_ForceRedraw",handle%(game%),600,y3%-24,1280,y3%+145
P��
P�
P�
P�� �font_to_screen
P�!ș"Wimp_SetFontColours",,0,11
P�0ș"Font_FindFont",,"Jarman",290,320 � Fmess%
P�ș"Font_SetFont",Fmess%
P�-�work_area_origin(handle%(game%),ox%,oy%)
P�
P�=ș"OS_SpriteOp",&13C,sarea%,"message",1 � r0%,r1%,r2%,r3%
P��mess_sprite_lines
P�#ș"OS_SpriteOp",r0%,r1%,r2%,r3%
Q
Q?flg%=�update_window(handle%(game%),600,y3%-24,1280,y3%+145)
Qȕ flg%
Q"E ș"OS_SpriteOp",&134,sarea%,"message",ox%+600,oy%+y3%-25,0,-1,-1
Q, � message$(2)="" �
Q64  ș"Font_Paint",,message$(1),16,ox%+600,oy%+y3%
Q@ �
QJ7  ș"Font_Paint",,message$(1),16,ox%+600,oy%+y3%+75
QT4  ș"Font_Paint",,message$(2),16,ox%+600,oy%+y3%
Q^ �
Qh) ș"Wimp_GetRectangle",,block% � flg%
Qr�
Q|�
Q�
Q�
Q�� �message_sprite_back
Q�� r0%,r1%,r2%,r3%
Q�ș"Font_SetFont",Fmess%
Q�=ș"OS_SpriteOp",&13C,sarea%,"message",1 � r0%,r1%,r2%,r3%
Q��mess_sprite_lines
Q�
Q�!ș"Wimp_SetFontColours",,0,11
Q�� message$(2)="" �
Q�( ș"Font_Paint",,message$(1),16,0,24
Q��
Q�) ș"Font_Paint",,message$(1),16,0,103
R( ș"Font_Paint",,message$(2),16,0,24
R�
R#ș"OS_SpriteOp",r0%,r1%,r2%,r3%
R&ș"Font_LoseFont",Fmess%
R0�
R:
RD
RN� �mess_sprite_lines
RX*ș"Wimp_SetColour",0:ȓ Ȑ 0,0,680,168
Rbș"Wimp_SetColour",15
Rl'� x%=0 � 675 � 75:� x%,0:� x%,168:�
Rv0� y%=25 � 175 � 75:� 0,y%-1.5:� 680,y%-1.5:�
R��
R�
R�
R� � �message_mode_independance
R�9� wOS%,hOS%,wP%,hP%,r0%,r1%,r2%,r3%:wOS%=680:hOS%=168
R�$�os_to_pixels(wOS%,hOS%,wP%,hP%)
R�5ș"OS_SpriteOp",&10F,sarea%,"message",1,wP%,hP%,�
R��
R�
R�
R�� �save_sum(source$)
R�� d%,resp%
R�[Pcount% +=1:Psave%=-1:Pop%(Pcount%)=operator%(NameNo%):Pdec%(Pcount%)=decimal%(NameNo%)
S PlimQ%(Pcount%)=�quest_limit
S!PlimA%(Pcount%)=�answer_limit
S
S � d%=0 � 4
S*> Pdig1$(Pcount%,d%)=dig1$(d%):Pdig2$(Pcount%,d%)=dig2$(d%)
S4�
S>
SH� Pcount%=9 �
SRQ � source$="S" � P2handle%=�relative_window(handle%(game%),P2handle%,900,406)
S\" � source$="P" � �sum_printout
Sf�
Sp�
Sz
S�
S�� �print_out_sums
S�� start%:start%=Pcount%
S�car_dig%()=0
S�!� Pcount%=9 � �sum_printout:�
S��
S�P � BothOp%(NameNo%)=-1 � operator%(NameNo%)=2+(Pcount%-start%<=(8-start%)/2)
S�W � operator%(NameNo%)=1 � �make_add(Alevel%(NameNo%)) � �make_sub(Slevel%(NameNo%))
S�
S� �digits(num1%,dig1$())
S� �digits(num2%,dig2$())
S� �save_sum("P")
S�� Pcount%=9
T�
T
T
T$%� �set_up_printout(� ch%,height%)
T.� left%,top%
T8ș"Hourglass_On"
TBch%=�("printer:")
TL)ș"PDriver_SelectJob",ch%,"print_job"
TV*ș"PDriver_PageSize" � ,,,left%,,,top%
T`8!Prect%=0:Prect%!4=height%:Prect%!8=1280:Prect%!12=0
Tj;!Ptrans%=1<<16:Ptrans%!4=0:Ptrans%!8=0:Ptrans%!12=1<<16
Tt1!Pplot%=left%+36000:Pplot%!4=top%+height%*400
T~?ș"PDriver_GiveRectangle",0,Prect%,Ptrans%,Pplot%,&FFFFFF00
T��
T�
T�
T�� �end_printout(ch%)
T�ș"PDriver_EndJob",ch%
T�ș"Hourglass_Off"
T�	�#ch%
T��
T�
T�
T�� �sum_printout
T�� flg%,ch%
U� �
U
U� � �:� �:ș"PDriver_AbortJob",ch%:�#ch%:ș"Hourglass_Off":�error("Maths_task"):�
U
U*�set_up_printout(ch%,�height(Pcount%))
U(
U2,ș"PDriver_DrawPage",1,block%,0,0 � flg%
U<ȕ flg%
UF �printout_sum
UP, ș"PDriver_GetRectangle",,block% � flg%
UZ�
Ud�end_printout(ch%)
Un� �
Ux�
U�
U�
U�$� �printdigx(x%,d%)=x%+75*(4-d%)
U�
U�� �sumY(pos%)
U�� pos%>4 � pos% -=5
U�=y2%-300*pos%
U�
U�!� �sumX(pos%)=77-675*(pos%>4)
U�
U�� �height(no%)
U�� no%>4 � no%=4
U�=-600-300*no%
V
V
V� �printout_sum
V"3� x%,d%,symb%,symb$,colx%,limQ%,Y2%,Y%,Y0%,sum%
V,%ș"ColourTrans_SetGCOL",&33333300
V6
� Grid
V@� x%=0 � 1200 � 75
VJ) � x%,150*(x%>0 � x%<1200):� x%,-1725
VT�
V^� y%=0 � -1725 � -75
Vh ȓ Ȑ 0,y%-1,1200,1
Vr�
V|
V�ș"ColourTrans_SetGCOL",0
V�1ș"ColourTrans_SetFontColours",,&FFFFFF00,0,6
V�ș"Font_SetFont",Fhead%
V�
V�/ș"Font_Paint",," "+name$(NameNo%),16,0,-75
V�,ș"Font_Paint",," "+$loadbuff%,16,0,-150
V�$ș"Font_Paint",,�date,16,870,-75
V�
V�� sum%=0 � Pcount%
V�+ � Pop%(sum%)=1 � symb$="+" � symb$="-"
V�6 Y1%=�sumY(sum%):Y2%=Y1%-75:Y3%=Y1%-150:Y0%=Y1%+92
V� X1%=�sumX(sum%)
V�H anslim%=PlimA%(sum%):limQ%=PlimQ%(sum%):symb%=�printdigx(X1%,limQ%)
W
WC � Pdig1$(sum%,limQ%)<>"" � Pdig2$(sum%,limQ%)<>"" � symb% -=75
W@ � Pdig1$(sum%,limQ%)="" � Pdig2$(sum%,limQ%)="" � limQ% -=1
W&
W0 ș"Font_SetFont",Fsum%
W:@ ș"Font_Paint",,symb$,16,symb%+18,Y2%+4:� Plus/minus symbol
WD
WN � Equals lines
WXK � Pop%(sum%)=1 � x%=�printdigx(X1%,anslim%) � x%=�printdigx(X1%,limQ%)
Wb* � x%>450 � EQw%=1125-x% � EQw%=450-x%
Wl ȓ Ȑ x%,Y3%+63,EQw%,8
Wv ȓ Ȑ x%,Y3%-12,EQw%,8
W�
W� � d%=0 � 4
W�  x%=�printdigx(X1%,d%)+18
W�/  ș"Font_Paint",,Pdig1$(sum%,d%),16,x%,Y1%
W�/  ș"Font_Paint",,Pdig2$(sum%,d%),16,x%,Y2%
W� �
W�
W� � Pdec%(sum%) �
W�  x%=�printdigx(X1%,1)-4
W�&  ș"Font_Paint",,".",16,x%,Y1%+28
W�&  ș"Font_Paint",,".",16,x%,Y2%+28
W� �
W�
XT � (sum%=0 � sum%=5 � Pdec%(sum%)<>Pdec%(sum%+(sum%>0))) � colname%(NameNo%)=1 �
X  � Column names
X`  � Pdec%(sum%)=0 � colname$()="u","t","h","th","t th" � colname$()="/100","/10","u","t","h"
X   � d%=0 � 4
X*e   � colname$(d%)="/100" � colname$(d%)="/10" � ș"Font_SetFont",Fcol2% � ș"Font_SetFont",Fcol1%
X4:   colx%=�printdigx(X1%,d%)+(75-18*� colname$(d%))/2-2
X>H   � colname%(NameNo%)=1 � ș"Font_Paint",,colname$(d%),16,colx%,Y0%
XH  �
XR �
X\
Xf�
Xp�
Xz
X�
X�� �set_fonts
X�� resp%:� �
X�g� � �:� �:resp%=�error_message("Fonts not seen, click on directory !Fonts","MathsBook",1):�end(0):�
X�6ș"Font_FindFont",,"Primary.Bold",330,300 � Fhead%
X�5ș"Font_FindFont",,"Primary.Bold",450,450 � Fsum%
X�6ș"Font_FindFont",,"Primary.Bold",258,245 � Fcol1%
X�6ș"Font_FindFont",,"Primary.Bold",200,240 � Fcol2%
X�� �
X��
X�
X�
X�� �lose_fonts
X�ș"Font_LoseFont",Fhead%
Yș"Font_LoseFont",Fsum%
Yș"Font_LoseFont",Fcol1%
Yș"Font_LoseFont",Fcol2%
Y$�lose_icon_fonts(font%)
Y.�
Y8
YB
YL� �save_file(file$)
YV � ch%,resp%:� �:notsavedO%=0
Y`=� � �:� �:resp%=�error_message(�$,"Maths_task",0):�#ch%:�
Yj-$savebuff%=file$:�reset_icon(SVhandle%,1)
Yt $loadbuff%=�getleaf(file$,0)
Y~ch%=� file$
Y�/�#ch%,"groupAS",autosaveR%,enprint%,screen%
Y�
Y�� n%=0 � Ncount%
Y� �#ch%,name$(n%)
Y�N �#ch%,Alevel%(n%):�#ch%,Slevel%(n%):�#ch%,MHlevel%(n%):�#ch%,decimal%(n%)
Y�Z �#ch%,auto%(n%):�#ch%,autohelp%(n%):�#ch%,force%(n%):�#ch%,mode%(n%):�#ch%,tries%(n%)
Y�
Y�$ � BothOp%(n%) � operator%(n%)=3
Y�� �#ch%,operator%(n%):�#ch%,no_quest%(n%):�#ch%,Notimer%(n%):�#ch%,timelim%(n%):�#ch%,calc%(n%):�#ch%,printer%(n%):�#ch%,score%(n%):�#ch%,next%(n%):�#ch%,stop%(n%):�#ch%,colname%(n%):�#ch%,estimate%(n%):�#ch%,saveR%(n%):�#ch%,speech%(n%)
Y�= �#ch%,newlevR%(n%):�#ch%,-newlevW%(n%):�#ch%,ownsum%(n%)
Y�$ � BothOp%(n%) � operator%(n%)=1
Y��
Z	�#ch%
Z� �
Z
�
Z
Z
Z(� �select_savebox
Z2Ȏ block%!16 �
Z<2 � 0:� block%!8=64 � �drag_icon(SVhandle%,0,5)
ZF8 � 2:�save_file($savebuff%):�close_window(SVhandle%)
ZP#        �open_window(Smhandle%)
ZZ�
Zd�
Zn
Zx
Z�� �select_save_text
Z�Ȏ block%!16 �
Z�3 � 0:� block%!8=64 � �drag_icon(SVhandle2%,0,5)
Z�E � 2:�results_text_file($savetextbuff%):�close_window(SVhandle2%)
Z�#        �open_window(Smhandle%)
Z��
Z��
Z�
Z�
Z�� �set_option_variables
Z�� n%,error%
Z�screen%=0:start%=-1
Z�7NameNo%=0:Ncount%=0:caretx%=0:create%=-2:name$()=""
['notsavedO%=0:screen%=0:autosaveR%=0
[$savebuff%="default"
[+�load_part("<Obey$Dir>.default",error%)
["(�single_tick(menu%,7,0):�set_windows
[,�set_config_title(0)
[6�set_preferences(0)
[@�clear_windows
[J�
[T
[^
[h � �load_part(file$,� error%)
[r� ch%:� �:error%=0
[|L� �:� �:�#ch%:$Ricbuff%="Wrong file.":�open_window(Rhandle%):error%=-1:�
[�ch%=� file$
[�-�#ch%,header$,autosaveR%,enprint%,screen%
[�[� header$<>"groupAS" � �#ch%:$Ricbuff%="Wrong file.":�open_window(Rhandle%):error%=-1:�
[�
[�Ncount%=-1
[��
[� Ncount% +=1
[� �#ch%,name$(Ncount%)
[օ Alevel%(Ncount%)=�#ch%:Slevel%(Ncount%)=�#ch%:MHlevel%(Ncount%)=�#ch%:Hlevel%(Ncount%)=MHlevel%(Ncount%):decimal%(Ncount%)=�#ch%
[�s auto%(Ncount%)=�#ch%:autohelp%(Ncount%)=�#ch%:force%(Ncount%)=�#ch%:mode%(Ncount%)=�#ch%:tries%(Ncount%)=�#ch%
[�
[��operator%(Ncount%)=�#ch%:no_quest%(Ncount%)=�#ch%:Notimer%(Ncount%)=�#ch%:timelim%(Ncount%)=�#ch%:calc%(Ncount%)=�#ch%:printer%(Ncount%)=�#ch%:score%(Ncount%)=�#ch%:next%(Ncount%)=�#ch%:stop%(Ncount%)=�#ch%:colname%(Ncount%)=�#ch%
[�Iestimate%(Ncount%)=�#ch%:saveR%(Ncount%)=�#ch%:speech%(Ncount%)=�#ch%
\KnewlevR%(Ncount%)=�#ch%:newlevW%(Ncount%)=-�#ch%:ownsum%(Ncount%)=�#ch%
\E� operator%(Ncount%)=3 � operator%(Ncount%)=1:BothOp%(Ncount%)=-1
\� �#ch%=-1
\&	�#ch%
\'� �
\0�
\:
\D
\N� �load_file(file$)
\X;� ch%,header$,i$,error%,default%:NameNo%=0:notsavedO%=0
\b;default%=(�getleaf(file$,0)="default" � $loadbuff%<>"")
\lstart%=(default%=0)
\vname$()="":nextfile$=""
\��reset_icon(SVhandle%,1)
\�
\��load_part(file$,error%)
\�A� error% � �shade_item(rmenu%,3,-1):�shade_item(menu%,4,-1):�
\�
\�create%=(default%=-1)
\�%�single_tick(rmenu%,4,autosaveR%)
\�"�single_tick(menu%,6,enprint%)
\�!�single_tick(menu%,7,screen%)
\�1�shade_item(menu%,2,0):�shade_item(menu%,4,0)
\�&�shade_item(menu%,1,-(default%=0))
\��reset_results
\��set_windows
]�clear_windows
]
]+$icbuff%=�getleaf(file$,0)+" is loaded"
] *� default%=0 � �open_window(Ichandle%)
]*�
]4
]>
]H� �reset_results
]R1Rcnt%=2:Rcnt2%=2:Rptr%=0:notsavedR%=0:newR%=1
]\$� n%=0 � 999 � 4:results%!n%=0:�
]f file$=�getleaf($savebuff%,0)
]pdate$=�date
]z3st$=" Group file name: "+file$+"  Date: "+date$
]�"Rptr%=�add_string(Rptr%,st$,0)
]�
]�)� n%=0 � 3:�shade_item(rmenu%,n%,1):�
]�%�single_tick(rmenu%,4,autosaveR%)
]��
]�
]�� �date=��$,5,11)
]�
]�!� �add_string(ptr%,st$,down%)
]�
� len%
]�!� down% � ?(results%+ptr%)=10
]�%� down%=2 � ?(results%+ptr%+1)=10
]�)$(results%+ptr%+down%)=st$:len%=� st$
^)ptr% +=len%+down%:?(results%+ptr%)=32
^	=ptr%
^
^$
^.� �clear_windows
^8-� game%>0 � �close_window(handle%(game%))
^Bgame%=0
^L�close_window(NGhandle%)
^V�close_window(SChandle%)
^`�close_window(Rhandle%)
^j�
^t
^~
^�� �set_preferences(no%)
^�� n%
^��set_diff_levels(no%)
^��shade_op_levels(no%)
^�2$Hbuff%=�Hlevel%(no%):�reset_icon(Chandle%,31)
^�4$MHbuff%=�MHlevel%(no%):�reset_icon(Chandle%,37)
^�'� force5%=0 � Helplev%=Hlevel%(no%)
^�,�select_icon(Chandle%,50,autohelp%(no%))
^��set_autohelp(no%)
^�,�select_icon(Chandle%,29,(mode%(no%)=1))
^�,�select_icon(Chandle%,28,(mode%(no%)=0))
^��adjust_for_mode(no%)
_)�select_icon(Chandle%,34,force%(no%))
_
(�select_icon(Chandle%,49,auto%(no%))
_�set_auto(no%)
_
_(A�select_icon(Chandle%,2,(operator%(no%)=1 � BothOp%(no%)=-1))
_2A�select_icon(Chandle%,3,(operator%(no%)=2 � BothOp%(no%)=-1))
_<�set_carry_variableY
_F
_P5$Qbuff%=� no_quest%(no%):�reset_icon(Chandle%,16)
_Z2$Tbuff%=� tries%(no%):�reset_icon(Chandle%,19)
_d
_n5$Tmbuff%=� timelim%(no%):�reset_icon(Chandle%,22)
_x+�select_icon(Chandle%,25,Notimer%(no%))
_�,�shade_3icons(Chandle%,22,Notimer%(no%))
_�
_�>�select_icon(Chandle%,42,calc%(no%)):�set_delete_icon(no%)
_�i�select_icon(Chandle%,43,printer%(no%)):�set_top_icon(7,(printer%(no%)=1 � driver%=-1 � enprint%=-1))
_�G�select_icon(Chandle%,44,score%(no%)):�set_top_icon(4,-score%(no%))
_�(�select_icon(Chandle%,46,next%(no%))
_�E�select_icon(Chandle%,47,stop%(no%)):�set_top_icon(6,-stop%(no%))
_�+�select_icon(Chandle%,48,colname%(no%))
_�,�select_icon(Chandle%,45,estimate%(no%))
_�)�select_icon(Chandle%,61,saveR%(no%))
_�+�select_icon(Chandle%,62,decimal%(no%))
_�*� decimal%(no%) � �set_dec_levels(no%)
_�
`7$levRbuff%=� newlevR%(no%):�reset_icon(Chandle%,53)
`8$levWbuff%=� -newlevW%(no%):�reset_icon(Chandle%,59)
`
`"�set_own_sum(no%)
`,*�select_icon(Chandle%,67,speech%(no%))
`6&�shade_icon(Chandle%,64,(game%>0))
`@�
`J
`T
`^� �set_own_sum(no%)
`h*�select_icon(Chandle%,63,ownsum%(no%))
`rR�shade_3icons(Chandle%,5,(ownsum%(no%)=1 � operator%(no%)=2 � BothOp%(no%)=0))
`|R�shade_3icons(Chandle%,8,(ownsum%(no%)=1 � operator%(no%)=1 � BothOp%(no%)=0))
`�>�shade_3icons(Chandle%,53,(ownsum%(no%)=1 � auto%(no%)=0))
`�>�shade_3icons(Chandle%,57,(ownsum%(no%)=1 � auto%(no%)=0))
`�)�shade_icon(Chandle%,49,ownsum%(no%))
`�
`�*� ownsum%(no%)=0 � game%=0 � start%=-1
`�`� ownsum%(no%)=0 � game%>0 � � �window_open(handle%(game%))=0 � �open_window(handle%(game%))
`��
`�
`�
`�� �allow_print_results
`�0� driver%=0 � � �ensure_Pdriver � driver%=-1
`�@� n%=1 � 2:�shade_item(rmenu%,n%,�(driver%=-1 � Rcnt%>=4)):�
`��
a
a
a� �set_diff_levels(no%)
a&8$level_buffA%=� Alevel%(no%):�reset_icon(Chandle%,5)
a08$level_buffS%=� Slevel%(no%):�reset_icon(Chandle%,8)
a:�
aD
aN
aX� �shade_op_levels(no%)
abA�shade_3icons(Chandle%,5,(operator%(no%)=2 � BothOp%(no%)=0))
alA�shade_3icons(Chandle%,8,(operator%(no%)=1 � BothOp%(no%)=0))
av�
a�
a�
a�� �set_dec_levels(no%)
a�%� Alevel%(no%)<6 � Alevel%(no%)=6
a�%� Slevel%(no%)<6 � Slevel%(no%)=6
a��set_diff_levels(no%)
a��
a�
a�
a�� �set_top_icon(icon%,var%)
a�� n%
a�� n%=1 � 2
a�) �shade_icon(handle%(n%),icon%,�var%)
b�
b�
b
b 
b*� �select_score
b4� icon%,r%:icon%=block%!16
b>>� icon%=9 � icon%=10 � icon%=12 � �close_window(SChandle%)
bH$� icon%=10 � �build_name_windowG
bR � icon%=11 � �print_out_sums
b\�
bf
bp
bz� �calcalator(icon%)
b�
� flg%
b�D� CCprev%=-1 � icon%>10 � icon%<16 � CCop%=icon%:flg%=(icon%>11)
b�� flg% � �
b�� icon%<=10 �
b�# � CCop%=0 � CCsum=0:CCstart%=0
b�3 � icon%<10 � � CCnum$<8 � CCnum$=CCnum$+�icon%
b�# � icon%=10 � CCnum$=CCnum$+"."
b� CCnum=� CCnum$:CCprev%=0
b� �calc_display(CCnum$,"1")
b��
b�" CCnum$="":CCprev%=(icon%<>11)
b� � icon%=16 � CCop%=16
b� � CCstart%=0 �
c  � CCop%=16 �
c1   CCsum=0:CCop%=0:�calc_display(� CCsum,"2")
c  �
c$*   CCop%=icon%:CCstart%=-1:CCsum=CCnum
c.  �
c8 �
cB  Ȏ CCop% �
cL   � 12:CCsum +=CCnum
cV   � 13:CCsum -=CCnum
c`   � 14:CCsum=CCsum*CCnum
cj6   � 15:� CCnum<>0 � CCsum=CCsum/CCnum � CCsum=1E9
ct   � 16:CCsum=0
c~  �
c2  � CCop%=12 � CCop%=13 � CCsum +=2E-8*� CCsum
c�   �calc_display(� CCsum,"2")
c�3  � icon%>11 � icon%<16 � CCop%=icon% � CCop%=0
c� �
c��
c��
c�
c�
c�!� �calc_display(var$,source$)
c�� � �var$<1E9 �
c�* � � �var$<1E-8 � � �var$>0 � var$="0"
c�* � �var$,"E") � var$=�remove_exp(var$)
c� var$=�var$,8)
dK � �var$,1)="0" � �var$,".")>0 � source$="2" � var$=�remove_zeros(var$)
d
 $CCbuff%=var$
d�
d; � � var$>0 � $CCbuff%="Too big" � $CCbuff%="Too small"
d( CCsum=0:icon%=16
d2�
d<�reset_icon(CChandle%,17)
dF�
dP
dZ
dd� �remove_exp(var$)
dn
� p%,sgn%
dxp%=� �var$,1):sgn%=� �var$
d�var$=�var$,�var$-3)
d�"� sgn%<0 � var$=�var$,�var$-1)
d�3� �var$,2,1)="." � var$=�var$,1)+�var$,�var$-2)
d�var$="."+�p%-1,"0")+var$
d�� sgn%<0 � var$="-"+var$
d�	=var$
d�
d�� �remove_zeros(var$)
d�ȕ �var$,1)="0"
d� var$=�var$,�var$-1)
d��
d�	=var$
d�
e
e� �keys_calc
e� icon%:icon%=-1
e"char%=block%!24
e,,� char%>=48 � char%<=57 � icon%=char%-48
e6� !block%=CChandle% �
e@ Ȏ char% �
eJ  � 43:icon%=12
eT  � 45:icon%=13
e^  � 42:icon%=14
eh  � 47:icon%=15
er!  � 35,67,99,127,&1B:icon%=16
e|  � 46:icon%=10
e�  � 13,61:icon%=11
e� �
e��
e�?� icon%>-1 � �calcalator(icon%) � ș"Wimp_ProcessKey",char%
e��
e�
e�
e�� �build_name_windowG
e�� icon%,y%
e�4�delete_icon(NGhandle%,49,(create%<0)):� message
e�4�delete_icon(NGhandle%,50,(create%=0)):� message
e�*�delete_icon(NGhandle%,51,(create%=0))
e�*�delete_icon(NGhandle%,52,(create%=0))
f*�delete_icon(NGhandle%,46,(create%=0))
f*�delete_icon(NGhandle%,47,(create%=0))
f*�delete_icon(NGhandle%,54,(create%<0))
f&�shade_item(menu%,1,1)
f0� Ncount% � �clear_spaces
f:NameNo%=-(Ncount%=0)
fD%�set_new_name_levels(Ncount%+1,0)
fN� icon%=1 � 42
fX$ �select_icon(NGhandle%,icon%,0)
fb? �delete_icon(NGhandle%,icon%,(icon%>Ncount%-(Ncount%<42)))
fl�
fvD� Ncount%<42 � � Ncount%=0 � �select_icon(NGhandle%,Ncount%+1,1)
f�a� create% � $Ntitlebuff%=$loadbuff%+" editing screen" � $Ntitlebuff%=$loadbuff%+" name input"
f�*NGhandle%=�centre_window(NGhandle%,"")
f��close_window(Chandle%)
f��loadbox_windows(0)
f�0� Ncount%=0 � �place_name_caret(Ncount%+1,0)
f��
f�
f�
f�� �clear_spaces
f�� newpos%,oldpos%
f�newpos%=0:oldpos%=0
f��
f� newpos% +=1:oldpos% +=1
g+ ȕ name$(oldpos%)="" � oldpos%<Ncount%
g  oldpos% +=1
g �
g  � name$(oldpos%)<>"" �
g*#  name$(newpos%)=name$(oldpos%)
g4I  Alevel%(newpos%)=Alevel%(oldpos%):Slevel%(newpos%)=Slevel%(oldpos%)
g>K  MHlevel%(newpos%)=MHlevel%(oldpos%):Hlevel%(newpos%)=Hlevel%(oldpos%)
gHC  tries%(newpos%)=tries%(oldpos%):mode%(newpos%)=mode%(oldpos%)
gRC  force%(newpos%)=force%(oldpos%):auto%(newpos%)=auto%(oldpos%)
g\Q  autohelp%(newpos%)=autohelp%(oldpos%):operator%(newpos%)=operator%(oldpos%)
gfO  no_quest%(newpos%)=no_quest%(oldpos%):timelim%(newpos%)=timelim%(oldpos%)
gpG  Notimer%(newpos%)=Notimer%(oldpos%):calc%(newpos%)=calc%(oldpos%)
gzC  score%(newpos%)=score%(oldpos%):next%(newpos%)=next%(oldpos%)
g�G  stop%(newpos%)=stop%(oldpos%):colname%(newpos%)=colname%(oldpos%)
g�M  estimate%(newpos%)=estimate%(oldpos%):BothOp%(newpos%)=BothOp%(oldpos%)
g�M  newlevR%(newpos%)=newlevR%(oldpos%):newlevW%(newpos%)=newlevW%(oldpos%)
g�I  saveR%(newpos%)=saveR%(oldpos%):decimal%(newpos%)=decimal%(oldpos%)
g�I  ownsum%(newpos%)=ownsum%(oldpos%):speech%(newpos%)=speech%(oldpos%)
g� �
g�  newpos% -=1
g� �
g�� oldpos%=Ncount%
g�'Ncount%=newpos%:name$(Ncount%+1)=""
g��
g�
g�
h%� �place_name_caret(pos%,redraw%)
h/caretx%=�caretx(pos%):y%=�nameposy(pos%)-28
h8ș"Wimp_SetCaretPosition",NGhandle%,-1,caretx%,y%,32
h$"� redraw% � �redraw_name(pos%)
h.�
h8
hB
hL� �place_char_caret(pos%)
hV.x%=�nameposx(pos%)-6:y%=�nameposy(pos%)-28
h`caretx%=�caretx(pos%)
hj8ș"Wimp_SetCaretPosition",NGhandle%,-1,caretx%,y%,32
ht5ș"Wimp_ForceRedraw",NGhandle%,x%,y%,x%+298,y%+32
h~�
h�
h�
h�� �redraw_name(pos%)
h�.x%=�nameposx(pos%)-6:y%=�nameposy(pos%)-32
h�5ș"Wimp_ForceRedraw",NGhandle%,x%,y%,x%+306,y%+44
h��
h�
h�
h�� �name_input_area(pos%)
h�.x%=�nameposx(pos%)-6:y%=�nameposy(pos%)-32
h�3ș"Wimp_SetColour",0:ȓ Ȑ ox%+x%,oy%+y%,304,40
h�0ș"Wimp_SetColour",7:ȓ ox%+x%,oy%+y%,304,40
i�
i

i
i/� �nameposx(n%)=110-384*(n%>14)-384*(n%>28)
i(-� �caretx(n%)=�nameposx(n%)+16*�name$(n%)
i26� �nameposy(n%)=-196-48*n%-672*(n%>14)-672*(n%>28)
i<
iF
iP� �redraw_class_list
iZ� x%,y%,n%
idh� (create%<0 � NameNo%=Ncount%+1) � �icon_selected(NGhandle%,NameNo%)=-1 � �name_input_area(NameNo%)
in
ix� n%=1 � Ncount%+1
i� � n%<=42 �
i�'  x%=�nameposx(n%):y%=�nameposy(n%)
i�   � ox%+x%,oy%+y%:�name$(n%)
i� �
i��
i�
i�� Ncount%<42 �
i�D � name$(Ncount%+1)="" � �icon_selected(NGhandle%,Ncount%+1)=0 �
i�5  x%=�nameposx(Ncount%+1):y%=�nameposy(Ncount%+1)
i�  ș"Wimp_SetColour",11
i�!  � ox%+x%,oy%+y%:� "I'm new"
i� �
i��
j�
j
j
j"� �keys_name(pos%)
j,.� ch%,valid%,len%,x%,y%,flg%:ch%=block%!24
j6�valid%=((ch%>=65 � ch%<=90 � ch%>=97 � ch%<=122 � ch%=32) � �name$(pos%)<18 � (ch%=127 � ch%=13 � ch%=8 � ch%=&18C) � name$(pos%)<>"" � NameNo%>0)
j@� ch%=13 � flg%=�check_name
jJ� flg%=-1 � �
jT*� valid%=0 � ș"Wimp_ProcessKey",ch%:�
j^
jh� ch%=13 � Ncount%<42 �
jr � create% �
j|  � pos%<Ncount%+1 �
j�%   �select_icon(NGhandle%,pos%,0)
j�'   �select_icon(NGhandle%,pos%+1,1)
j�#   block%!16=pos%+1:�edit_nameG
j�  �
j�0   � pos%=Ncount%+1 � name$(Ncount%+1)<>"" �
j�   � PROCnew_name(-1)
j�   �redraw_name(Ncount%)
j�   �
j�  �
j� �
j�   block%!16=50:�select_nameG
j� �
j��
k� ch%=13 � �
k
ki� pos%=Ncount%+1 � $DemIc%="can track up to 42 children.":Demhandle%=�centre_window(Demhandle%,"Y"):�
k&
k0'� (ch%<>127 � ch%<>8 � ch%<>&18C) �
k:! name$(pos%)=name$(pos%)+�ch%
kD�
kN len%=� name$(pos%)-1
kX# name$(pos%)=�name$(pos%),len%)
kb�
kl
kv�place_char_caret(pos%)
k��
k�
k�
k�$� �set_new_name_levels(no%,no2%)
k�9Alevel%(no%)=Alevel%(no2%):Slevel%(no%)=Slevel%(no2%)
k�;MHlevel%(no%)=MHlevel%(no2%):Hlevel%(no%)=Hlevel%(no2%)
k�tries%(no%)=tries%(no2%)
k�imode%(no%)=mode%(no2%):force%(no%)=force%(no2%):auto%(no%)=auto%(no2%):autohelp%(no%)=autohelp%(no2%)
kЫoperator%(no%)=operator%(no2%):no_quest%(no%)=no_quest%(no2%):timelim%(no%)=timelim%(no2%):Notimer%(no%)=Notimer%(no2%):calc%(no%)=calc%(no2%):score%(no%)=score%(no2%)
k�knext%(no%)=next%(no2%):stop%(no%)=stop%(no2%):colname%(no%)=colname%(no2%):printer%(no%)=printer%(no2%)
k��estimate%(no%)=estimate%(no2%):newlevR%(no%)=newlevR%(no2%):newlevW%(no%)=newlevW%(no2%):BothOp%(no%)=BothOp%(no2%):saveR%(no%)=saveR%(no2%):decimal%(no%)=decimal%(no2%):ownsum%(no%)=ownsum%(no2%):speech%(no%)=speech%(no2%)
k��set_preferences(no%)
k��
l
l
l� �store_name_levels
l 1Alevel%(43)=Alevel%(0):Slevel%(43)=Slevel%(0)
l*3MHlevel%(43)=MHlevel%(0):Hlevel%(43)=Hlevel%(0)
l4tries%(43)=tries%(0)
l>Ymode%(43)=mode%(0):force%(43)=force%(0):auto%(43)=auto%(0):autohelp%(43)=autohelp%(0)
lH�operator%(43)=operator%(0):no_quest%(43)=no_quest%(0):timelim%(43)=timelim%(0):Notimer%(43)=Notimer%(0):calc%(43)=calc%(0):score%(43)=score%(0)
lR[next%(43)=next%(0):stop%(43)=stop%(0):colname%(43)=colname%(0):printer%(43)=printer%(0)
l\�estimate%(43)=estimate%(0):newlevR%(43)=newlevR%(0):newlevW%(43)=newlevW%(0):BothOp%(43)=BothOp%(0):saveR%(43)=saveR%(0):decimal%(43)=decimal%(0):ownsum%(43)=ownsum%(0):speech%(43)=speech%(0)
lf�
lp
lz
l�� �default_options
l�%�select_icon(NGhandle%,NameNo%,0)
l�'ș"Wimp_SetCaretPosition",NGhandle%
l�?� NameNo% � ș"Wimp_ForceRedraw",NGhandle%,0,-976,1180,-170
l�
NameNo%=0
l��set_config_title(0)
l��set_preferences(0)
l��open_window(Chandle%)
l��
l�
l�
l�� �new_name(redraw%)
l�4� Ncount%<41 � �select_icon(NGhandle%,NameNo%,0)
m7Ncount% -=(Ncount%<42):NameNo%=Ncount%-(Ncount%<42)
m� Ncount%=42 � �
m'�delete_icon(NGhandle%,Ncount%+1,0)
m$'�select_icon(NGhandle%,Ncount%+1,1)
m.%�set_new_name_levels(Ncount%+1,0)
m84� redraw% � �place_name_caret(Ncount%+1,redraw%)
mB �set_config_title(Ncount%+1)
mL�
mV
m`
mj� �set_config_title(no%)
mt
� no%=0 �
m~? $titlebuffC%="Group '"+�getleaf($savebuff%,0)+"' defaults"
m��
m�' $titlebuffC%="Options "+name$(no%)
m��
m�%�delete_icon(Chandle%,64,(no%>0))
m�%�delete_icon(Chandle%,66,(no%>0))
m�%�delete_icon(Chandle%,68,(no%>0))
m�%�delete_icon(Chandle%,65,(no%=0))
m�%�delete_icon(Chandle%,51,(no%=0))
m�&�shade_icon(Chandle%,65,(game%>0))
m�)� no%=0 � �store_name_levels:alter%=0
m�� �window_open(Chandle%) �
m� �close_window(Chandle%)
n �open_window(Chandle%)
n
�
n�
n
n(
n2� �edit_nameG
n<� invalid%,icon%,flg%
nF!icon%=block%!16:notsavedO%=-1
nP9� icon%>=1 � icon%<=42 � icon%>=50 � flg%=�check_name
nZ� flg%=-1 � icon%>=50 � �
ndh� icon%=Ncount%+1 � $DemIc%="can track up to 42 children.":Demhandle%=�centre_window(Demhandle%,"Y")
nn
nx� icon%>=1 � icon%<=42 �
n�< � NameNo%=Ncount%+1 � name$(NameNo%)<>"" � Ncount%<41 �
n�  � Ncount% +=1
n�.  � PROCdelete_icon(NGhandle%,Ncount%+1,0)
n�,  � PROCset_new_name_levels(Ncount%+1,0)
n�"  � PROCredraw_name(Ncount%+1)
n� �
n�
n�& � NameNo% � �redraw_name(NameNo%)
n�0 NameNo%=icon%:�place_name_caret(NameNo%,-1)
n� �set_config_title(NameNo%)
n�V � NameNo%=Ncount%+1 � �set_new_name_levels(NameNo%,0) � �set_preferences(NameNo%)
n��
n�
oȎ icon% �
o3 � -1:� NameNo% � �place_name_caret(NameNo%,-1)
o? � 50:� Ncount%<42 � � name$(Ncount%+1)<>"" � �new_name(-1)
o"(         � PROCsave_file($savebuff%)
o,=         �close_window(NGhandle%):�close_window(Chandle%)
o69         create%=0:NameNo%=0:�close_window(Edhandle%)
o@ � 51:�default_options
oJ � 52:� NameNo% �
oTB          �set_config_title(NameNo%):�set_preferences(NameNo%)
o^$          �open_window(Chandle%)
oh         �
or�
o|%�shade_item(menu%,1,-(NameNo%=0))
o��
o�
o�
o�� �check_name
o�� n%,flg%:n%=0:flg%=0
o��
o� n% +=1
o�L � name$(n%)=name$(NameNo%) � n%<>NameNo% � name$(NameNo%)<>"" � flg%=-1
o�� flg%=-1 � n%=Ncount%+1
o�� flg% �
o�> name$(NameNo%)="":Edhandle%=�centre_window(Edhandle%,"Y")
o�" �place_name_caret(NameNo%,-1)
o��
p �close_window(Edhandle%)
p�
p	=flg%
p&
p0
p:� �results_next_name
pD8� n%,lev$,Alev$,Slev$,help$,st$:Rcnt% +=2:Rcnt2% +=2
pN
pX3� mode%(NameNo%) � lev$=�Helplev% � lev$="None"
pbd� ownsum%(NameNo%)=0 � Alev$=� Alevel%(NameNo%):Slev$=� Slevel%(NameNo%) � Alev$=" -":Slev$=" -"
plD� autohelp%(NameNo%) � help$=" Min help:" � help$=" Help level:"
pv
p�Vst$=" Name: "+name$(NameNo%)+"  Start levels: add:"+Alev$+" sub:"+Slev$+help$+lev$
p�"Rptr%=�add_string(Rptr%,st$,2)
p��shade_item(rmenu%,0,0)
p��shade_item(rmenu%,3,0)
p��
p�
p�
p�� �select_nameG
p�/� invalid%,icon%,flg%,flg2%:icon%=block%!16
p�flg2%=�check_name
p�� flg2%=-1 � icon%=54 � �
p�� icon%>=1 � icon%<=42 �
p�0 � NameNo%=Ncount%+1 � �redraw_name(NameNo%)
qi � icon%=Ncount%+1 � $DemIc%="can track up to 42 children.":Demhandle%=�centre_window(Demhandle%,"Y")
q NameNo%=icon%:flg%=-1
q �set_config_title(NameNo%)
q  �set_preferences(NameNo%)
q* � icon%=Ncount%+1 �
q4#  �place_name_caret(NameNo%,-1)
q> �
qH)  ș"Wimp_SetCaretPosition",NGhandle%
qR �
q\� � Rptr%+90+42*no_quest%(NameNo%)>44000 � saveR%(NameNo%)=1 � resp%=�error_message("The results file is now full, please tell your teacher","MathsBook",17)
qf& �shade_item(menu%,1,-(NameNo%=0))
qp�
qz� flg% � �
q�
q�h� Ncount%<42 � � icon%=-1 � �icon_selected(NGhandle%,Ncount%+1)=-1 � �place_name_caret(NameNo%,-1):�
q�Y� Ncount%<42 � � icon%=54 � (NameNo%=Ncount%+1 � NameNo%=0) � name$(Ncount%+1)="" � �
q�� icon%=54 �
q� �close_window(NGhandle%)
q�e � IF NameNo%=Ncount%+1 AND name$(NameNo%)<>"" THEN PROCnew_name(0):NameNo%=Ncount%:notsavedO%=-1
q�, $titlebuff1%="Addition "+name$(NameNo%)
q�/ $titlebuff2%="Subtraction "+name$(NameNo%)
q�+ $titlebuffC%="Options "+name$(NameNo%)
q�
 start%=0
q�4 � ownsum%(NameNo%)=0 � game%=operator%(NameNo%)
q� � saveR%(NameNo%) �
q�=  � Rptr%+90+42*no_quest%(NameNo%)>44000 � �reset_results
r �
r �close_window(Edhandle%)
r8 � ownsum%(NameNo%)=0 � �open_window(handle%(game%))
r$& �reset_game:newR%=saveR%(NameNo%)
r.�
r8�
rB
rL
rV� �printout_results(all%)
r`� flg%,height%,ch%
rj+� all% � height%=Rcnt% � height%=Rcnt2%
rtheight%=-32*height%
r~� �
r�U� � �:� �:ș"PDriver_AbortJob",ch%:�#ch%:ș"Hourglass_Off":�error("Maths_Task"):�
r�
r�!�set_up_printout(ch%,height%)
r�
r�ș"ColourTrans_SetGCOL",0
r�,ș"PDriver_DrawPage",1,block%,0,0 � flg%
r�ȕ flg%
r�" �set_results_window(0,0,all%)
r�, ș"PDriver_GetRectangle",,block% � flg%
r��
r�
r��end_printout(ch%)
s� �
s
�
s
s
s(� �results_text_file(file$)
s2� ch%:notsavedR%=0
s<ch%=� file$
sF� n%=0 � Rptr%
sP �#ch%,?(results%+n%)
sZ�
sd	�#ch%
sn� "SetType "+file$+" FFF"
sx2$savetextbuff%=file$:�reset_icon(SVhandle2%,1)
s��
s�
s�
s�'� �set_results_window(ox%,oy%,all%)
s�� x%,y%,ptr%,ch%,ch$,X%
s�y%=-32:ptr%=-1:X%=-1
s��
s�
 ptr% +=1
s�" ch%=?(results%+ptr%):ch$=�ch%
s�
s� � ch$="(" � all%=0 �
s�  ȕ ch%<>10 � ptr%<Rptr%
s�$   ptr% +=1:ch%=?(results%+ptr%)
t  �
t.  � ?(results%+ptr%+1)=10 � ptr% +=1:X%=-1
t �
t"  � ch%<>10 �
t,a   � y%+oy%>=block%!32 � y%+oy%<=block%!40+32 � ox%=0 � oy%=0 � X% +=1:� ox%,oy%+y%:�X%);ch$
t6  �
t@   y% -=32:X%=-1
tJ  �
tT �
t^� ptr%=Rptr%
th�
tr
t|
t�� �set_windows
t�� n%,x1%,x2%,y1%,y2%
t�� screen% �
t� � n%=1 � 2
t�3  handle%(n%)=�whole_screen_window(handle%(n%))
t� �
t�. NGhandle%=�whole_screen_window(NGhandle%)
t�. SChandle%=�whole_screen_window(SChandle%)
t��
t� � n%=1 � 2
t�E  handle%(n%)=�ordinary_window(handle%(n%),1276,844,"",&EF000002)
t� �
t�@ NGhandle%=�ordinary_window(NGhandle%,1192,916,"",&BF001002)
u@ SChandle%=�ordinary_window(SChandle%,748,856,"Y",&87000012)
u�
u�
u&
u0
u:� �set_up_sum_window
uD/�set_own_sum_operators(NameNo%):startOwn%=0
uNa� decimal%(NameNo%) � $Osum1buff%="0.00":$Osum2buff%="0.00" � $Osum1buff%="0":$Osum2buff%="0"
uX3�reset_icon(Ohandle%,3):�reset_icon(Ohandle%,4)
ub3� BothOp%(NameNo%) � PrevOp%=operator%(NameNo%)
ul0� ownOp%=1 � $Osgnbuff%="+" � $Osgnbuff%="-"
uv2Ohandle%=�centre_window(Ohandle%,"Y"):Owin%=-1
u�]� game%>0 � drag%=0:ș"Wimp_ForceRedraw",handle%(game%),dragx%,dragy%,dragx%+75,dragy%+75
u�6ș"Wimp_SetCaretPosition",Ohandle%,3,88,-232,-1,-1
u��
u�
u�
u�� �select_sum_window
u�� icon%:icon%=block%!16
u�Ȏ icon% �
u�< � -1:ș"Wimp_SetCaretPosition",Ohandle%,3,88,-232,-1,-1
u� � 6:�set_up_own_sum
u� � 8,9:ownOp%=icon%-7
u�:          � ownOp%=1 � $Osgnbuff%="+" � $Osgnbuff%="-"
u�%          �reset_icon(Ohandle%,5)
v � 7:�make_one_for_me
v�
v�
v 
v*
v4� �make_one_for_me
v>� num1,num2
vHJ� ownOp%=1 � �make_add(Alevel%(NameNo%)) � �make_sub(Slevel%(NameNo%))
vR� decimal%(NameNo%)=0 �
v\* $Osum1buff%=�num1%:$Osum2buff%=�num2%
vf�
vpJ $Osum1buff%=�set_dec(�(num1%/100)):$Osum2buff%=�set_dec(�(num2%/100))
vz�
v�3�reset_icon(Ohandle%,3):�reset_icon(Ohandle%,4)
v��
v�
v�
v�� �own_sum_keys
v�Ȏ block%!24 �
v�> � &18F:ș"Wimp_SetCaretPosition",Ohandle%,3,88,-232,-1,-1
v�> � &18E:ș"Wimp_SetCaretPosition",Ohandle%,4,88,-304,-1,-1
v�
v�" ș"Wimp_ProcessKey",block%!24
v��
v��
v�
w
w� �set_up_own_sum
w(� buff$,flg%,osum$:flg%=0:correct%=0
w$buff$=�set_dec($Osum1buff%)
w.L� buff$<>$Osum1buff% � $Osum1buff%=buff$:�reset_icon(Ohandle%,3):flg%=-1
w8buff$=�set_dec($Osum2buff%)
wBL� buff$<>$Osum2buff% � $Osum2buff%=buff$:�reset_icon(Ohandle%,4):flg%=-1
wLG� decimal%(NameNo%) � (� $Osum1buff%<1 � � $Osum2buff%<1) � flg%=-1
wV� flg%=-1 � �
w`
wj{� decimal%(NameNo%) � num1%=�dec_val($Osum1buff%):num2%=�dec_val($Osum2buff%) � num1%=� $Osum1buff%:num2%=� $Osum2buff%
wt
w~5� num1%=0 � num2%=0 � ownOp%=2 � num2%>=num1% � �
w�
w�4� ownOp%=1 � ans%=num1%+num2% � ans%=num1%-num2%
w�
w��close_window(Ohandle%)
w�8PrevOp%=operator%(NameNo%):operator%(NameNo%)=ownOp%
w�$game%=operator%(NameNo%):Owin%=0
w�)�open_window(handle%(game%)):�set_sum
w��
w�
w�
w�0� �dec_val(var$)=�(�var$,� var$-3)+�var$,2))
w�
x
x
� �set_dec(st$)
x� pt%,len%,cut%,maxlen%
x,pt%=�st$,"."):len%=� st$:cut%=len%-pt%-2
x(.maxlen%=6+(ownOp%=1)+(decimal%(NameNo%)=0)
x2� decimal%(NameNo%) �
x< � pt% �
xF$  � cut%>0 � st$=�st$,len%-cut%)
xP  � cut%=-1 � st$=st$+"0"
xZ  � cut%=-2 � st$=st$+"00"
xd �
xn  st$=st$+".00"
xx �
x��
x� � pt% � st$=�st$,pt%-1)
x��
x�len%=� st$
x�&� len%>maxlen% � st$=�st$,maxlen%)
x�=st$
x�
x�
x�%� *******************************
x�%� ***WIMP AND DESKTOP ROUTINES***
x�%� *******************************
x�
x�� Icons
y
y>� �icon(whandle%,x%,y%,w%,h%,flg%,name$,ptr1%,ptr2%,ptr3%)
y.� General purpose icon creation procedure.
y"
� handle%
y,!block%=whandle%
y6;block%!4=x%:block%!8=y%:block%!12=w%+x%:block%!16=h%+y%
y@block%!20=flg%
yJ
yT� ptr1%=0 �
y^ $(block%+24)=name$
yh�
yr � Indirected.
y| $ptr1%=name$
y�4 block%!24=ptr1%:block%!28=ptr2%:block%!32=ptr3%
y��
y�
y�)ș"Wimp_CreateIcon",,block% � handle%
y�=handle%
y�
y�
y�� �icon_bar_icon(sprite$)
y�,=�icon(-1,0,0,68,68,&3002,sprite$,0,0,0)
y�
y�
y�C� Address of buffer of an indirected icon in window definition.
y�-� �icon_buffer(num%)=block%!(108+32*num%)
z
z
z@� �increment_buffer(whandle%,ihandle%,var%,ptr%,inc%,range%)
z&� Increments an icon
z0� var%=range% � =var%
z:var%=� $ptr%:var% +=inc%
zD$ptr%=�var%
zN"�reset_icon(whandle%,ihandle%)
zX	=var%
zb
zl
zvD� �inc_buffer(whandle%,ihandle%,var%,ptr%,inc%,lowR%,highR%,up%)
z�/� up% � up%=(block%!8=4) � up%=(block%!8=1)
z�� up% �
z�D var%=�increment_buffer(whandle%,ihandle%,var%,ptr%,inc%,highR%)
z��
z�D var%=�increment_buffer(whandle%,ihandle%,var%,ptr%,-inc%,lowR%)
z��
z�	=var%
z�
z�
z�
z�$� �reset_icon(whandle%,ihandle%)
z�E� For auto_redraw windows. Resets icon where a buffer is altered.
z�&!block%=whandle%:block%!4=ihandle%
{block%!8=0:block%!12=0
{!ș"Wimp_SetIconState",,block%
{�
{ 
{*
{4'� �icon_selected(whandle%,ihandle%)
{>.� Tests if radio icon is in selected state
{H&!block%=whandle%:block%!4=ihandle%
{R!ș"Wimp_GetIconState",,block%
{\=((block%?26 � 32)=32)
{f
{p
{z1� �set_icon_flag(whandle%,ihandle%,bit%,set%)
{�H� Alters an icon flag. If set% is set then sets flag else unsets it.
{�&!block%=whandle%:block%!4=ihandle%
{�N� set% � block%!8=1<<bit%:block%!12=1<<bit% � block%!8=0:block%!12=1<<bit%
{�!ș"Wimp_SetIconState",,block%
{��
{�
{�
{�1� �alter_button_type(whandle%,ihandle%,type%)
{�#� Alters button type of an icon
{�� N%,P%
{�� N%=0 � 3
{� P%=(type% � (2^N%))
{�/ �set_icon_flag(whandle%,ihandle%,12+N%,P%)
|�
|�
|
|$
|.*� �select_icon(whandle%,ihandle%,set%)
|8-�set_icon_flag(whandle%,ihandle%,21,set%)
|B�
|L
|V
|`)� �shade_icon(whandle%,ihandle%,set%)
|j-�set_icon_flag(whandle%,ihandle%,22,set%)
|t�
|~
|�
|�*� �delete_icon(whandle%,ihandle%,set%)
|�-�set_icon_flag(whandle%,ihandle%,23,set%)
|��
|�
|�N**************************************************************************
|�
|�
� Windows
|�
|�0� �temp_window(buff%,len%,name%,name$,font%)
|�%� Loads window from template file
|�� handle%:$name%=name$
}@ș"Wimp_LoadTemplate",,block%,buff%,buff%+len%,font%,name%,0
}
block%!64=sarea%
}+ș"Wimp_CreateWindow",,block% � handle%
}=handle%
}(
}2
}<#� �whole_screen_window(handle%)
}F5� w%,h%,xshift%,yshift%,open%,prev%:prev%=handle%
}P&� �window_open(handle%) � open%=-1
}Z2!block%=handle%:ș"Wimp_GetWindowInfo",,block%
}d�mode_dimensions(w%,h%)
}n3block%!4=0:block%!8=0:block%!12=w%:block%!16=h%
}x(xshift%=(w%-(block%!52-block%!44))/2
}�(yshift%=(h%-(block%!56-block%!48))/2
}�+block%!20 -=xshift%:block%!24 +=yshift%
}�+block%!44 -=xshift%:block%!52 +=xshift%
}�+block%!56 +=yshift%:block%!48 -=yshift%
}�%block%!32=(block%!32 � &80FFFFFF)
}�-ș"Wimp_CreateWindow",,block%+4 � handle%
}�#� open% � �open_window(handle%)
}�/!block%=prev%:ș"Wimp_DeleteWindow",,block%
}�=handle%
}�
}�
}�/� �ordinary_window(handle%,w%,h%,cy$,flgs%)
}�+� open%,prev%,Vbar%,Hbar%:prev%=handle%
~$� (flgs% � &10000000) � Vbar%=44
~$� (flgs% � &40000000) � Hbar%=44
~�mode_dimensions(SCw%,SCh%)
~"&� �window_open(handle%) � open%=-1
~,2!block%=handle%:ș"Wimp_GetWindowInfo",,block%
~6block%!4=(SCw%-w%-Vbar%)/2
~@7� cy$="Y" � block%!8=(SCh%-h%-Hbar%)/2 � block%!8=0
~J/block%!12=block%!4+w%:block%!16=block%!8+h%
~Tblock%!20=0:block%!24=0
~^6block%!44=0:block%!48=-h%:block%!52=w%:block%!56=0
~hblock%!32=flgs%
~r-ș"Wimp_CreateWindow",,block%+4 � handle%
~|#� open% � �open_window(handle%)
~�/!block%=prev%:ș"Wimp_DeleteWindow",,block%
~�=handle%
~�
~�
~�"� �place_window(handle%,x%,y%)
~�� w%,h%,prev%
~�prev%=handle%
~�2!block%=handle%:ș"Wimp_GetWindowInfo",,block%
~�/w%=block%!12-block%!4:h%=block%!16-block%!8
~�;block%!4=x%:block%!8=y%:block%!12=x%+w%:block%!16=y%+h%
~�-ș"Wimp_CreateWindow",,block%+4 � handle%
~��open_window(handle%)
~�/!block%=prev%:ș"Wimp_DeleteWindow",,block%
=handle%


&/� �relative_window(Mhandle%,Thandle%,x%,y%)
0
� Mx%,My%
:3!block%=Mhandle%:ș"Wimp_GetWindowInfo",,block%
DMx%=block%!4:My%=block%!8
N*=�place_window(Thandle%,Mx%+x%,My%+y%)
X
b
l!� �centre_window(handle%,cy$)
v-� SCw%,SCh%,w%,h%,prev%,flgs%,Hbar%,Vbar%
�prev%=handle%
��mode_dimensions(SCw%,SCh%)
�2!block%=handle%:ș"Wimp_GetWindowInfo",,block%
�flgs%=block%!32
�$� (flgs% � &10000000) � Vbar%=44
�$� (flgs% � &40000000) � Hbar%=44
�/w%=block%!12-block%!4:h%=block%!16-block%!8
�7� cy$="Y" � block%!8=(SCh%-h%-Hbar%)/2 � block%!8=0
�block%!4=(SCw%-w%-Vbar%)/2
�/block%!12=block%!4+w%:block%!16=block%!8+h%
�-ș"Wimp_CreateWindow",,block%+4 � handle%
��open_window(handle%)
�/!block%=prev%:ș"Wimp_DeleteWindow",,block%
�=handle%
�
�
� !� �mode_dimensions(� w%,� h%)
�*� rx%,ry%,ex%,ey%
�4)ș"OS_ReadModeVariable",-1,11 � ,,rx%
�>(ș"OS_ReadModeVariable",-1,4 � ,,ex%
�H)ș"OS_ReadModeVariable",-1,12 � ,,ry%
�R) ș"OS_ReadModeVariable",-1,5 � ,,ey%
�\%w%=(rx%+1)*2^ex%:h%=(ry%+1)*2^ey%
�f�
�p
�z
��� �open_window(whandle%)
�� � Opens window given handle.
��!block%=whandle%
��#ș"Wimp_GetWindowState",,block%
��block%!28=-1
��ș"Wimp_OpenWindow",,block%
���
��
��
��� �close_window(whandle%)
��!� Closes window given handle.
��!block%=whandle%
��#ș"Wimp_GetWindowState",,block%
� ș"Wimp_CloseWindow",,block%
��
�
�$
�.5� �top_window(whandle%)=�window_flags(whandle%,2)
�86� �window_open(whandle%)=�window_flags(whandle%,1)
�B;� �window_full_size(whandle%)=�window_flags(whandle%,4)
�L
�V"� �window_flags(whandle%,bit%)
�`!block%=whandle%
�j#ș"Wimp_GetWindowState",,block%
�t=((block%?34 � bit%)=bit%)
�~
��
��.� �update_window(whandle%,x1%,y1%,x2%,y2%)
��� flag%
��!block%=whandle%
��9block%!4=x1%:block%!8=y1%:block%!12=x2%:block%!16=y2%
��)ș"Wimp_UpdateWindow",,block% � flag%
��
=flag%
��
��
��-� �work_area_origin(whandle%,� ox%,� oy%)
��!block%=whandle%
��#ș"Wimp_GetWindowState",,block%
�ox%=block%!4-block%!20
�
oy%=block%!16-block%!24
��
�
�(
�2N**************************************************************************
�<
�F� Menus
�P
�Z8� �set_up_menu(title$,address%,num%,item$(),data%())
�d:� Sets up menu block.Item data is read from data list.
�nR� Data subscripts - 0 menu flags,1 subpointer,2 shade,3 buffer,4 buffer length
�x
��� ptr%,item%
��'$address%=title$:width%=� title$ -3
��3address%!12=&70207:address%!20=44:address%!24=0
��ptr%=address%+28
��
��� item%=0 � num%
��@ ptr%!0=data%(item%,0):ptr%!4=data%(item%,1):ptr%!8=&7000021
��1 � data%(item%,2) � ptr%!8=(ptr%!8 � &400000)
��
�� � data%(item%,3) �
��  � Indirected (length>12)
��  ptr%!8=(ptr%!8 � &100)
��$  $(data%(item%,3))=item$(item%)
�>  ptr%!12=data%(item%,3):ptr%!16=-1:ptr%!20=data%(item%,4)
� �
�  $(ptr%+12)=item$(item%)
�" �
�,
�6ptr%=ptr%+24
�@R� � item$(item%)>width% � width%=� item$(item%):� Width set from longest item.
�J�
�T
�^address%!16=(width%+1)*16
�h�
�r
�|
��!� �show_menu(mblock%,x%,num%)
��4� For showing a standard menu from the icon bar.
��� y%
��x% -=64:y%=140+44*num%
��&ș"Wimp_CreateMenu",,mblock%,x%,y%
���
��
��
��#� �alter_tick(menu%,item%,num%)
��A� Sets tick bit for item position item% unsets it for others.
��
� add%,n%
��� n%=0 � num%
�� add%=menu%+28+24*n%
�9 � n%=item% � ?add%=(?add% � 1) � ?add%=(?add% � 254)
��
��
�&
�0
�:$� �single_tick(menu%,item%,set%)
�D
� add%
�Nadd%=menu%+28+24*item%
�X4� set% � ?add%=(?add% � 1) � ?add%=(?add% � 254)
�b�
�l
�v
��#� �shade_item(menu%,item%,set%)
��
� ptr%
��ptr%=menu%+28+24*item%
��D� set% � ptr%!8=(ptr%!8 � &400000) � ptr%!8=(ptr%!8 � &FFBFFFFF)
���
��
��N**************************************************************************
��
��� Mode independence
��
��)� �palette_block(sprite$,sarea%,pal%)
��U� Takes sprite palette and puts it into a block for making the transcolour table.
��� ptr%,c%,address%
�4ș"OS_SpriteOp",&118,sarea%,sprite$ � ,,address%
�ptr%=address%+44
�� c%=0 � 15
�  pal%!(c%*4)=!ptr%
�* ptr%=ptr%+8
�4�
�>�
�H
�R
�\(� �source_mode_factors(mode%,scale%)
�f=� Calcalate the scale factors for the sprites source mode
�p-ș"OS_ReadModeVariable",mode%,4 � ,,xeig%
�z-ș"OS_ReadModeVariable",mode%,5 � ,,yeig%
��'scale%!0=1<<xeig%:scale%!4=1<<yeig%
���
��
��
��#� �current_mode_factors(scale%)
��4� Produce the scale factors for the current mode
��*ș"OS_ReadModeVariable",-1,4 � ,,xeig%
��*ș"OS_ReadModeVariable",-1,5 � ,,yeig%
��(scale%!8=1<<xeig%:scale%!12=1<<yeig%
���
��
��
��*� �os_to_pixels(wOS%,hOS%,� wP%,� hP%)
�*� Converts os units to pixels for mode
�*ș"OS_ReadModeVariable",-1,4 � ,,xeig%
�*ș"OS_ReadModeVariable",-1,5 � ,,yeig%
�$%wP%=wOS%/2^xeig%:hP%=hOS%/2^yeig%
�.�
�8
�B
�L0� �transtable(mode%,Spal%,Dpal%,transtable%)
�V;� Produce colour translation table for the current mode
�`@ș"ColourTrans_SelectTable",mode%,Spal%,-1,Dpal%,transtable%
�j�
�t
�~
��� �set_GCOL(col%,pal%)
��� back%
��0� col%>=128 � col% -=128:back%=128 � back%=0
��1ș"ColourTrans_SetGCOL",pal%!(4*col%),back%,0
���
��
��
��#� �palfile_to_block(file$,pal%)
��� x%,col%,N%
��x%=� file$
��� col%=0 � 15
�� � N%=0 � 2
�  �#x%=6*col%+3+N%
�
  pal%?(4*col%+N%+1)=�#x%
� �
��
�(�#x%
�2�
�<
�F
�Pݤnumber_of_colours
�Z(� Gives number of colours in a mode.
�d
� numcol%
�n,ș"OS_ReadModeVariable",-1,3 � ,,numcol%
�x=numcol%+1
��
��
�� ��scale_text(sx%,sy%,scale%)
��"� Keeps text mode independent.
��
� xsc,ysc
��%xsc=scale%!0/scale%!8:sx%=sx%*xsc
��&ysc=scale%!4/scale%!12:sy%=sy%*ysc
���23,17,7,6,sx%;sy%;0;
���
��
��
��N**************************************************************************
��
�� Error routines
�
���error(task$)
�"3� Displays error message from operating system.
�,!block%=255
�6a$=�$+" "+Þ
�@$(block%+4)=a$+�0
�J'ș"Wimp_ReportError",block%,1,task$
�T�
�^
�h
�r+� �error_message(message$,task$,flags%)
�|%� Displays personal error message
��'!block%=255:$(block%+4)=message$+�0
��9ș"Wimp_ReportError",block%,flags%,task$ � ,response%
��=response%
��
��
����test(var$)
��6� Displays value of string variable.Debugging aid.
��!block%=255
��$(block%+4)=var$+�0
��.ș"Wimp_ReportError",block%,1,"print_text"
���
��
��
�� �ensure_Pdriver
�*� Checks that printer driver is loaded
�� P%,printer%:printer%=0
�&� �
�0� � �:� �:�#P%:=printer%
�:P%=�("printer:")
�D(ș"PDriver_SelectJob",P%,"print_job"
�Nș"PDriver_AbortJob",P%
�Xprinter%=-1
�b�#P%
�c� �
�l
=printer%
�v
��N**************************************************************************
��
��Drag operations
��
��+� �drag_box(type%,x%,y%,width%,height%)
��block%!4=type%
��Eblock%!8=x%:block%!12=y%:block%!16=x%+width%:block%!20=y%+height%
��9block%!24=0:block%!28=0:block%!32=1280:block%!36=1024
��ș"Wimp_DragBox",,block%
���
��
��N**************************************************************************
��
�� Fonts
�
�� �lose_icon_fonts(f%)
� � n%,m%
�*� n%=1 � 255
�4 � ?(f%+n%)>0 �
�>  num%=?(f%+n%)
�H  � m%=1 � num%
�R   ș"Font_LoseFont",n%
�\  �
�f �
�p�
�z�
��
��N**************************************************************************
��
��� Loading and saving
��
��)� �drag_icon(whandle%,ihandle%,type%)
��� w%,h%,ox%,oy%
��'�work_area_origin(whandle%,ox%,oy%)
��&!block%=whandle%:block%!4=ihandle%
��!ș"Wimp_GetIconState",,block%
��1block%!8=ox%+block%!8:block%!12=oy%+block%!12
��3block%!16=ox%+block%!16:block%!20=oy%+block%!20
��0w%=block%!16-block%!8:h%=block%!20-block%!12
�-�drag_box(type%,block%!8,block%!12,w%,h%)
��
�
�$
�.*� �save_request(type%,namebuff%,size%)
�8#ș"Wimp_GetPointerInfo",,block%
�B+block%!20=block%!12:block%!24=block%!16
�L)block%!28=!block%:block%!32=block%!16
�V*block%!36=size%:!block%=64:block%!12=0
�`block%!16=1:block%!40=type%
�j($(block%+44)=�getleaf($namebuff%,-1)
�t6ș"Wimp_SendMessage",18,block%,block%!20,block%!24
�~�
��
��
��� �getleaf(a$,zero%)
��ȕ �a$,".")
��a$=�a$,�a$,".")+1)
���
��� zero% � a$=a$+�0
��=a$
��
��
��� �string(ptr%)
��� name%:name%=ptr%
�ȕ ?ptr%<>0
�

 ptr% +=1
��
�?ptr%=13
�(=$name%
�2
�<N**************************************************************************
�F
�P� Miscelaneous
�Z
�d� �pause(time%)
�n
time% +=�
�xȕ time%>�
���
���
�
00000000  0d 00 0a 11 f4 20 3e 20  21 52 75 6e 69 6d 61 67  |..... > !Runimag|
00000010  65 0d 00 14 1f f4 20 41  64 64 69 74 69 6f 6e 20  |e..... Addition |
00000020  61 6e 64 20 73 75 62 74  72 61 63 74 69 6f 6e 2e  |and subtraction.|
00000030  0d 00 1e 1f f4 20 56 65  72 73 69 6f 6e 20 30 2e  |..... Version 0.|
00000040  33 30 2c 20 39 74 68 20  53 65 70 74 20 39 36 0d  |30, 9th Sept 96.|
00000050  00 28 27 ee 20 85 20 f2  65 72 72 6f 72 28 22 4d  |.('. . .error("M|
00000060  61 74 68 73 5f 74 61 73  6b 22 29 3a f2 65 6e 64  |aths_task"):.end|
00000070  28 2d 31 29 3a e0 0d 00  32 04 0d 00 3c 0f f2 69  |(-1):...2...<..i|
00000080  6e 69 74 69 61 6c 69 73  65 0d 00 46 0e f2 77 69  |nitialise..F..wi|
00000090  6d 70 5f 70 6f 6c 6c 0d  00 50 0c f2 65 6e 64 28  |mp_poll..P..end(|
000000a0  2d 31 29 0d 00 5a 05 e0  0d 00 64 04 0d 00 6e 04  |-1)..Z....d...n.|
000000b0  0d 00 78 11 dd 20 f2 69  6e 69 74 69 61 6c 69 73  |..x.. .initialis|
000000c0  65 0d 00 82 08 ea 20 6e  25 0d 00 8c 2b de 20 62  |e..... n%...+. b|
000000d0  6c 6f 63 6b 25 20 33 30  30 30 2c 62 6c 6f 63 6b  |lock% 3000,block|
000000e0  32 25 20 36 30 2c 72 65  73 75 6c 74 73 25 20 34  |2% 60,results% 4|
000000f0  34 30 30 30 0d 00 96 34  de 20 50 72 65 63 74 25  |4000...4. Prect%|
00000100  20 31 36 2c 50 74 72 61  6e 73 25 20 31 36 2c 50  | 16,Ptrans% 16,P|
00000110  70 6c 6f 74 25 20 38 2c  6c 65 76 25 20 34 38 2c  |plot% 8,lev% 48,|
00000120  48 6c 65 76 25 20 34 38  0d 00 a0 fd de 20 64 69  |Hlev% 48..... di|
00000130  67 31 24 28 35 29 2c 64  69 67 32 24 28 34 29 2c  |g1$(5),dig2$(4),|
00000140  64 69 67 33 24 28 35 29  2c 61 6e 73 77 65 72 24  |dig3$(5),answer$|
00000150  28 35 29 2c 63 61 72 72  79 24 28 35 29 2c 63 61  |(5),carry$(5),ca|
00000160  72 5f 64 69 67 25 28 35  29 2c 64 69 67 5f 6c 69  |r_dig%(5),dig_li|
00000170  6d 51 25 28 39 29 2c 64  69 67 5f 6c 69 6d 41 25  |mQ%(9),dig_limA%|
00000180  28 37 29 2c 68 61 6e 64  6c 65 25 28 33 29 2c 64  |(7),handle%(3),d|
00000190  69 67 5f 6e 61 6d 65 24  28 34 29 2c 63 6f 6c 6e  |ig_name$(4),coln|
000001a0  61 6d 65 24 28 34 29 2c  73 74 72 69 6b 65 24 28  |ame$(4),strike$(|
000001b0  36 29 2c 73 74 5f 64 69  67 25 28 36 29 2c 50 64  |6),st_dig%(6),Pd|
000001c0  69 67 31 24 28 39 2c 34  29 2c 50 64 69 67 32 24  |ig1$(9,4),Pdig2$|
000001d0  28 39 2c 34 29 2c 50 6f  70 25 28 39 29 2c 50 64  |(9,4),Pop%(9),Pd|
000001e0  65 63 25 28 39 29 2c 50  6c 69 6d 51 25 28 39 29  |ec%(9),PlimQ%(9)|
000001f0  2c 50 6c 69 6d 41 25 28  39 29 2c 43 64 6f 6e 65  |,PlimA%(9),Cdone|
00000200  25 28 34 29 2c 53 54 64  6f 6e 65 25 28 34 29 2c  |%(4),STdone%(4),|
00000210  6e 61 6d 65 24 28 34 33  29 2c 6d 65 73 73 61 67  |name$(43),messag|
00000220  65 24 28 32 29 0d 00 aa  89 de 20 41 6c 65 76 65  |e$(2)..... Aleve|
00000230  6c 25 28 34 33 29 2c 53  6c 65 76 65 6c 25 28 34  |l%(43),Slevel%(4|
00000240  33 29 2c 48 6c 65 76 65  6c 25 28 34 33 29 2c 4d  |3),Hlevel%(43),M|
00000250  48 6c 65 76 65 6c 25 28  34 33 29 2c 61 75 74 6f  |Hlevel%(43),auto|
00000260  25 28 34 33 29 2c 61 75  74 6f 68 65 6c 70 25 28  |%(43),autohelp%(|
00000270  34 33 29 2c 66 6f 72 63  65 25 28 34 33 29 2c 74  |43),force%(43),t|
00000280  72 69 65 73 25 28 34 33  29 2c 6d 6f 64 65 25 28  |ries%(43),mode%(|
00000290  34 33 29 2c 64 65 63 69  6d 61 6c 25 28 34 33 29  |43),decimal%(43)|
000002a0  2c 4d 65 6e 75 42 75 66  66 25 28 31 34 29 0d 00  |,MenuBuff%(14)..|
000002b0  b4 d5 de 20 6f 70 65 72  61 74 6f 72 25 28 34 33  |... operator%(43|
000002c0  29 2c 6e 6f 5f 71 75 65  73 74 25 28 34 33 29 2c  |),no_quest%(43),|
000002d0  74 69 6d 65 6c 69 6d 25  28 34 33 29 2c 4e 6f 74  |timelim%(43),Not|
000002e0  69 6d 65 72 25 28 34 33  29 2c 63 61 6c 63 25 28  |imer%(43),calc%(|
000002f0  34 33 29 2c 70 72 69 6e  74 65 72 25 28 34 33 29  |43),printer%(43)|
00000300  2c 73 63 6f 72 65 25 28  34 33 29 2c 6e 65 78 74  |,score%(43),next|
00000310  25 28 34 33 29 2c 73 74  6f 70 25 28 34 33 29 2c  |%(43),stop%(43),|
00000320  63 6f 6c 6e 61 6d 65 25  28 34 33 29 2c 65 73 74  |colname%(43),est|
00000330  69 6d 61 74 65 25 28 34  33 29 2c 6e 65 77 6c 65  |imate%(43),newle|
00000340  76 52 25 28 34 33 29 2c  6e 65 77 6c 65 76 57 25  |vR%(43),newlevW%|
00000350  28 34 33 29 2c 42 6f 74  68 4f 70 25 28 34 33 29  |(43),BothOp%(43)|
00000360  2c 73 61 76 65 52 25 28  34 33 29 2c 6f 77 6e 73  |,saveR%(43),owns|
00000370  75 6d 25 28 34 33 29 2c  73 70 65 65 63 68 25 28  |um%(43),speech%(|
00000380  34 33 29 0d 00 be 4e 65  6e 64 25 3d 30 3a 64 72  |43)...Nend%=0:dr|
00000390  61 67 25 3d 30 3a 64 6f  75 62 6c 65 25 3d 30 3a  |ag%=0:double%=0:|
000003a0  69 6e 69 74 78 25 3d 30  3a 69 6e 69 74 79 25 3d  |initx%=0:inity%=|
000003b0  30 3a 69 6e 69 74 6e 75  6d 25 3d 30 3a 64 72 61  |0:initnum%=0:dra|
000003c0  67 76 61 6c 25 3d 30 3a  50 72 65 76 4f 70 25 3d  |gval%=0:PrevOp%=|
000003d0  30 0d 00 c8 8a 71 75 65  73 74 25 3d 30 3a 74 72  |0....quest%=0:tr|
000003e0  79 25 3d 30 3a 73 65 73  73 74 69 6d 65 25 3d 30  |y%=0:sesstime%=0|
000003f0  3a 67 61 6d 65 25 3d 30  3a 73 74 61 72 74 25 3d  |:game%=0:start%=|
00000400  2d 31 3a 64 72 61 77 66  6f 6e 74 25 3d 30 3a 53  |-1:drawfont%=0:S|
00000410  43 66 6f 72 6d 61 74 25  3d 31 3a 45 73 74 56 61  |Cformat%=1:EstVa|
00000420  6c 25 3d 30 3a 6d 61 72  6b 65 64 25 3d 30 3a 4f  |l%=0:marked%=0:O|
00000430  77 69 6e 25 3d 30 3a 64  72 61 67 78 25 3d 30 3a  |win%=0:dragx%=0:|
00000440  64 72 61 67 79 25 3d 30  3a 6f 77 6e 4f 70 25 3d  |dragy%=0:ownOp%=|
00000450  30 3a 72 75 62 62 65 72  25 3d 30 0d 00 d2 7b 63  |0:rubber%=0...{c|
00000460  61 72 72 79 25 3d 30 3a  73 74 72 69 6b 65 25 3d  |arry%=0:strike%=|
00000470  30 3a 72 65 64 75 63 65  25 3d 30 3a 42 73 74 65  |0:reduce%=0:Bste|
00000480  70 25 3d 30 3a 66 6f 72  63 65 35 25 3d 30 3a 6e  |p%=0:force5%=0:n|
00000490  65 78 74 63 68 65 63 6b  25 3d 30 3a 70 61 74 68  |extcheck%=0:path|
000004a0  24 3d 22 22 3a 52 63 6e  74 25 3d 30 3a 52 63 6e  |$="":Rcnt%=0:Rcn|
000004b0  74 32 25 3d 30 3a 64 69  72 70 61 74 68 24 3d 22  |t2%=0:dirpath$="|
000004c0  22 3a 61 6c 74 65 72 25  3d 30 3a 73 74 61 72 74  |":alter%=0:start|
000004d0  4f 77 6e 25 3d 30 0d 00  dc 4a 6e 65 78 74 64 69  |Own%=0...Jnextdi|
000004e0  67 25 3d 30 3a 72 75 62  64 69 67 25 3d 2d 31 3a  |g%=0:rubdig%=-1:|
000004f0  73 74 6f 70 70 65 64 25  3d 30 3a 61 6e 73 6c 69  |stopped%=0:ansli|
00000500  6d 25 3d 30 3a 73 75 6d  25 3d 30 3a 6e 6f 74 73  |m%=0:sum%=0:nots|
00000510  61 76 65 64 52 25 3d 30  3a 6e 65 77 52 25 3d 30  |avedR%=0:newR%=0|
00000520  0d 00 e6 36 43 6f 72 72  65 63 74 41 6e 73 25 3d  |...6CorrectAns%=|
00000530  30 3a 63 6f 72 72 65 63  74 25 3d 30 3a 6d 65 73  |0:correct%=0:mes|
00000540  73 61 67 65 24 28 29 3d  22 22 3a 6e 65 78 74 6d  |sage$()="":nextm|
00000550  65 73 73 25 3d 30 0d 00  f0 2b 50 63 6f 75 6e 74  |ess%=0...+Pcount|
00000560  25 3d 2d 31 3a 50 73 61  76 65 25 3d 30 3a 50 70  |%=-1:Psave%=0:Pp|
00000570  72 69 6e 74 25 3d 30 3a  64 72 69 76 65 72 25 3d  |rint%=0:driver%=|
00000580  30 0d 00 fa 3a 43 43 73  75 6d 3d 30 3a 43 43 6e  |0...:CCsum=0:CCn|
00000590  75 6d 3d 30 3a 43 43 6e  75 6d 24 3d 22 22 3a 43  |um=0:CCnum$="":C|
000005a0  43 73 74 61 72 74 25 3d  30 3a 43 43 6f 70 25 3d  |Cstart%=0:CCop%=|
000005b0  30 3a 43 43 70 72 65 76  25 3d 30 0d 01 04 04 0d  |0:CCprev%=0.....|
000005c0  01 0e 2d 79 31 25 3d 2d  32 39 36 3a 79 32 25 3d  |..-y1%=-296:y2%=|
000005d0  79 31 25 2d 37 35 3a 79  33 25 3d 79 32 25 2d 37  |y1%-75:y3%=y2%-7|
000005e0  35 3a 79 30 25 3d 79 31  25 2b 39 32 0d 01 18 15  |5:y0%=y1%+92....|
000005f0  6d 6b 78 25 3d a4 64 69  67 78 28 30 29 2b 31 31  |mkx%=.digx(0)+11|
00000600  30 0d 01 22 04 0d 01 2c  32 c8 99 22 57 69 6d 70  |0.."...,2.."Wimp|
00000610  5f 49 6e 69 74 69 61 6c  69 73 65 22 2c 32 30 30  |_Initialise",200|
00000620  2c 26 34 42 35 33 34 31  35 34 2c 22 4d 61 74 68  |,&4B534154,"Math|
00000630  73 5f 74 61 73 6b 22 0d  01 36 2a 49 42 68 61 6e  |s_task"..6*IBhan|
00000640  64 6c 65 25 3d a4 69 63  6f 6e 5f 62 61 72 5f 69  |dle%=.icon_bar_i|
00000650  63 6f 6e 28 22 21 6d 62  6f 6f 6b 44 65 6d 6f 22  |con("!mbookDemo"|
00000660  29 0d 01 40 0e f2 73 65  74 5f 66 6f 6e 74 73 0d  |)..@..set_fonts.|
00000670  01 41 11 f2 6c 6f 61 64  5f 73 70 72 69 74 65 73  |.A..load_sprites|
00000680  0d 01 4a 13 f2 63 72 65  61 74 65 5f 77 69 6e 64  |..J..create_wind|
00000690  6f 77 73 0d 01 54 0e f2  69 63 6f 6e 5f 6d 65 6e  |ows..T..icon_men|
000006a0  75 0d 01 5e 29 54 68 61  6e 64 6c 65 25 3d a4 63  |u..^)Thandle%=.c|
000006b0  65 6e 74 72 65 5f 77 69  6e 64 6f 77 28 54 68 61  |entre_window(Tha|
000006c0  6e 64 6c 65 25 2c 22 59  22 29 0d 01 68 0d 54 4c  |ndle%,"Y")..h.TL|
000006d0  74 69 6d 65 25 3d 91 0d  01 7c 19 f2 73 65 74 5f  |time%=...|..set_|
000006e0  6f 70 74 69 6f 6e 5f 76  61 72 69 61 62 6c 65 73  |option_variables|
000006f0  0d 01 86 1a f2 73 65 74  5f 6d 6f 64 65 5f 69 6e  |.....set_mode_in|
00000700  64 65 70 65 6e 64 61 6e  63 65 0d 01 90 05 e1 0d  |dependance......|
00000710  01 9a 04 0d 01 a4 04 0d  01 ae 10 dd 20 f2 69 63  |............ .ic|
00000720  6f 6e 5f 6d 65 6e 75 0d  01 b8 12 f4 20 53 65 74  |on_menu..... Set|
00000730  73 20 75 70 20 6d 65 6e  75 0d 01 c2 25 de 20 6d  |s up menu...%. m|
00000740  65 6e 75 25 20 32 34 34  2c 72 6d 65 6e 75 25 20  |enu% 244,rmenu% |
00000750  31 37 32 2c 6d 62 75 66  66 25 20 31 31 35 0d 01  |172,mbuff% 115..|
00000760  cc 19 de 20 69 74 65 6d  24 28 38 29 2c 64 61 74  |... item$(8),dat|
00000770  61 25 28 38 2c 34 29 0d  01 d6 80 69 74 65 6d 24  |a%(8,4)....item$|
00000780  28 29 3d 22 49 6e 66 6f  22 2c 22 53 65 65 20 6f  |()="Info","See o|
00000790  70 74 69 6f 6e 73 22 2c  22 53 65 65 2f 65 64 69  |ptions","See/edi|
000007a0  74 20 67 72 6f 75 70 22  2c 22 4c 6f 61 64 2f 6e  |t group","Load/n|
000007b0  65 77 20 67 72 6f 75 70  22 2c 22 53 61 76 65 20  |ew group","Save |
000007c0  67 72 6f 75 70 22 2c 22  52 65 73 75 6c 74 73 22  |group","Results"|
000007d0  2c 22 45 6e 61 62 6c 65  20 70 72 69 6e 74 65 72  |,"Enable printer|
000007e0  22 2c 22 57 68 6f 6c 65  20 73 63 72 65 65 6e 22  |","Whole screen"|
000007f0  2c 22 51 75 69 74 22 0d  01 e0 93 64 61 74 61 25  |,"Quit"....data%|
00000800  28 29 3d 32 2c 49 68 61  6e 64 6c 65 25 2c 30 2c  |()=2,Ihandle%,0,|
00000810  30 2c 30 2c 30 2c 2d 31  2c 31 2c 30 2c 30 2c 30  |0,0,0,-1,1,0,0,0|
00000820  2c 2d 31 2c 31 2c 6d 62  75 66 66 25 2c 31 35 2c  |,-1,1,mbuff%,15,|
00000830  30 2c 2d 31 2c 30 2c 6d  62 75 66 66 25 2b 38 34  |0,-1,0,mbuff%+84|
00000840  2c 31 35 2c 30 2c 2d 31  2c 31 2c 30 2c 30 2c 32  |,15,0,-1,1,0,0,2|
00000850  2c 72 6d 65 6e 75 25 2c  30 2c 30 2c 30 2c 30 2c  |,rmenu%,0,0,0,0,|
00000860  2d 31 2c 30 2c 6d 62 75  66 66 25 2b 31 30 30 2c  |-1,0,mbuff%+100,|
00000870  31 35 2c 30 2c 2d 31 2c  30 2c 30 2c 30 2c 26 38  |15,0,-1,0,0,0,&8|
00000880  30 2c 2d 31 2c 30 2c 30  2c 30 0d 01 ea 35 f2 73  |0,-1,0,0,0...5.s|
00000890  65 74 5f 75 70 5f 6d 65  6e 75 28 22 4d 61 74 68  |et_up_menu("Math|
000008a0  73 42 6f 6f 6b 22 2c 6d  65 6e 75 25 2c 38 2c 69  |sBook",menu%,8,i|
000008b0  74 65 6d 24 28 29 2c 64  61 74 61 25 28 29 29 0d  |tem$(),data%()).|
000008c0  01 f4 04 0d 01 fe 6b 69  74 65 6d 24 28 29 3d 22  |......kitem$()="|
000008d0  53 65 65 20 72 65 73 75  6c 74 73 22 2c 22 50 72  |See results","Pr|
000008e0  69 6e 74 20 72 65 73 75  6c 74 73 22 2c 22 50 72  |int results","Pr|
000008f0  69 6e 74 20 73 75 6d 6d  61 72 79 22 2c 22 53 61  |int summary","Sa|
00000900  76 65 20 72 65 73 75 6c  74 73 22 2c 22 41 75 74  |ve results","Aut|
00000910  6f 20 73 61 76 65 20 72  65 73 75 6c 74 73 22 2c  |o save results",|
00000920  22 57 69 70 65 20 72 65  73 75 6c 74 73 22 0d 02  |"Wipe results"..|
00000930  08 72 64 61 74 61 25 28  29 3d 30 2c 2d 31 2c 31  |.rdata%()=0,-1,1|
00000940  2c 30 2c 30 2c 30 2c 2d  31 2c 30 2c 6d 62 75 66  |,0,0,0,-1,0,mbuf|
00000950  66 25 2b 33 35 2c 31 34  2c 30 2c 2d 31 2c 30 2c  |f%+35,14,0,-1,0,|
00000960  6d 62 75 66 66 25 2b 35  30 2c 31 34 2c 30 2c 53  |mbuff%+50,14,0,S|
00000970  56 68 61 6e 64 6c 65 32  25 2c 31 2c 30 2c 30 2c  |Vhandle2%,1,0,0,|
00000980  30 2c 2d 31 2c 30 2c 6d  62 75 66 66 25 2b 36 35  |0,-1,0,mbuff%+65|
00000990  2c 31 38 2c 26 38 30 2c  2d 31 2c 30 2c 30 2c 30  |,18,&80,-1,0,0,0|
000009a0  0d 02 12 34 f2 73 65 74  5f 75 70 5f 6d 65 6e 75  |...4.set_up_menu|
000009b0  28 22 52 65 73 75 6c 74  73 22 2c 72 6d 65 6e 75  |("Results",rmenu|
000009c0  25 2c 35 2c 69 74 65 6d  24 28 29 2c 64 61 74 61  |%,5,item$(),data|
000009d0  25 28 29 29 0d 02 1c 05  e1 0d 02 26 04 0d 02 30  |%()).......&...0|
000009e0  04 0d 02 3a 15 dd 20 f2  63 72 65 61 74 65 5f 77  |...:.. .create_w|
000009f0  69 6e 64 6f 77 73 0d 02  44 19 f4 20 4c 6f 61 64  |indows..D.. Load|
00000a00  20 74 65 6d 70 6c 61 74  65 20 66 69 6c 65 73 0d  | template files.|
00000a10  02 4e fb de 20 41 62 75  66 66 25 20 35 30 30 2c  |.N.. Abuff% 500,|
00000a20  53 62 75 66 66 25 20 35  30 30 2c 49 62 75 66 66  |Sbuff% 500,Ibuff|
00000a30  25 20 31 35 30 2c 43 62  75 66 66 25 20 38 30 30  |% 150,Cbuff% 800|
00000a40  2c 53 43 62 75 66 66 25  20 32 35 30 2c 4e 32 62  |,SCbuff% 250,N2b|
00000a50  75 66 66 25 20 39 30 30  2c 63 61 6c 63 62 75 66  |uff% 900,calcbuf|
00000a60  66 25 20 32 30 30 2c 53  56 62 75 66 66 25 20 33  |f% 200,SVbuff% 3|
00000a70  30 30 2c 53 56 32 62 75  66 66 25 20 33 30 30 2c  |00,SV2buff% 300,|
00000a80  46 62 75 66 66 25 20 32  30 30 2c 50 62 75 66 66  |Fbuff% 200,Pbuff|
00000a90  25 20 31 30 30 2c 53 54  62 75 66 66 25 20 31 30  |% 100,STbuff% 10|
00000aa0  30 2c 49 63 62 75 66 66  25 20 31 30 30 2c 4f 62  |0,Icbuff% 100,Ob|
00000ab0  75 66 66 25 20 32 30 30  2c 53 6d 62 75 66 66 25  |uff% 200,Smbuff%|
00000ac0  20 31 30 30 2c 4c 62 75  66 66 25 20 34 30 30 2c  | 100,Lbuff% 400,|
00000ad0  44 72 62 75 66 66 25 20  31 30 30 2c 45 62 75 66  |Drbuff% 100,Ebuf|
00000ae0  66 25 20 31 30 30 2c 52  62 75 66 66 25 20 31 30  |f% 100,Rbuff% 10|
00000af0  30 2c 45 64 62 75 66 66  25 20 31 30 30 2c 44 65  |0,Edbuff% 100,De|
00000b00  6d 62 75 66 66 25 20 31  35 30 0d 02 58 26 de 20  |mbuff% 150..X&. |
00000b10  4d 62 75 66 66 25 20 35  30 30 2c 50 32 62 75 66  |Mbuff% 500,P2buf|
00000b20  66 25 20 31 30 30 2c 66  6f 6e 74 25 20 32 35 35  |f% 100,font% 255|
00000b30  0d 02 62 24 e3 20 6e 25  3d 30 20 b8 20 32 35 35  |..b$. n%=0 . 255|
00000b40  20 88 20 34 3a 21 28 66  6f 6e 74 25 2b 6e 25 29  | . 4:!(font%+n%)|
00000b50  3d 30 3a ed 0d 02 6c 0e  de 20 6e 61 6d 65 25 20  |=0:...l.. name% |
00000b60  31 31 0d 02 76 04 0d 02  80 33 c8 99 22 57 69 6d  |11..v....3.."Wim|
00000b70  70 5f 4f 70 65 6e 54 65  6d 70 6c 61 74 65 22 2c  |p_OpenTemplate",|
00000b80  2c 22 3c 4d 61 74 68 73  24 44 69 72 3e 2e 54 65  |,"<Maths$Dir>.Te|
00000b90  6d 70 6c 61 74 65 73 32  22 0d 02 8a 3b 68 61 6e  |mplates2"...;han|
00000ba0  64 6c 65 25 28 31 29 3d  a4 74 65 6d 70 5f 77 69  |dle%(1)=.temp_wi|
00000bb0  6e 64 6f 77 28 41 62 75  66 66 25 2c 35 30 30 2c  |ndow(Abuff%,500,|
00000bc0  6e 61 6d 65 25 2c 22 61  64 64 69 74 69 6f 6e 22  |name%,"addition"|
00000bd0  2c 2d 31 29 0d 02 94 19  74 69 74 6c 65 62 75 66  |,-1)....titlebuf|
00000be0  66 31 25 3d 62 6c 6f 63  6b 25 21 37 32 0d 02 9e  |f1%=block%!72...|
00000bf0  3e 68 61 6e 64 6c 65 25  28 32 29 3d a4 74 65 6d  |>handle%(2)=.tem|
00000c00  70 5f 77 69 6e 64 6f 77  28 53 62 75 66 66 25 2c  |p_window(Sbuff%,|
00000c10  35 30 30 2c 6e 61 6d 65  25 2c 22 73 75 62 74 72  |500,name%,"subtr|
00000c20  61 63 74 69 6f 6e 22 2c  2d 31 29 0d 02 a8 19 74  |action",-1)....t|
00000c30  69 74 6c 65 62 75 66 66  32 25 3d 62 6c 6f 63 6b  |itlebuff2%=block|
00000c40  25 21 37 32 0d 02 b2 35  49 68 61 6e 64 6c 65 25  |%!72...5Ihandle%|
00000c50  3d a4 74 65 6d 70 5f 77  69 6e 64 6f 77 28 49 62  |=.temp_window(Ib|
00000c60  75 66 66 25 2c 31 35 30  2c 6e 61 6d 65 25 2c 22  |uff%,150,name%,"|
00000c70  69 6e 66 6f 22 2c 2d 31  29 0d 02 c6 37 43 68 61  |info",-1)...7Cha|
00000c80  6e 64 6c 65 25 3d a4 74  65 6d 70 5f 77 69 6e 64  |ndle%=.temp_wind|
00000c90  6f 77 28 43 62 75 66 66  25 2c 38 30 30 2c 6e 61  |ow(Cbuff%,800,na|
00000ca0  6d 65 25 2c 22 63 6f 6e  66 69 67 22 2c 2d 31 29  |me%,"config",-1)|
00000cb0  0d 02 d0 20 6c 65 76 65  6c 5f 62 75 66 66 41 25  |... level_buffA%|
00000cc0  3d a4 69 63 6f 6e 5f 62  75 66 66 65 72 28 35 29  |=.icon_buffer(5)|
00000cd0  0d 02 da 20 6c 65 76 65  6c 5f 62 75 66 66 53 25  |... level_buffS%|
00000ce0  3d a4 69 63 6f 6e 5f 62  75 66 66 65 72 28 38 29  |=.icon_buffer(8)|
00000cf0  0d 02 e4 1b 51 62 75 66  66 25 3d a4 69 63 6f 6e  |....Qbuff%=.icon|
00000d00  5f 62 75 66 66 65 72 28  31 36 29 0d 02 ee 1b 54  |_buffer(16)....T|
00000d10  62 75 66 66 25 3d a4 69  63 6f 6e 5f 62 75 66 66  |buff%=.icon_buff|
00000d20  65 72 28 31 39 29 0d 02  f8 1c 54 6d 62 75 66 66  |er(19)....Tmbuff|
00000d30  25 3d a4 69 63 6f 6e 5f  62 75 66 66 65 72 28 32  |%=.icon_buffer(2|
00000d40  32 29 0d 03 02 1b 48 62  75 66 66 25 3d a4 69 63  |2)....Hbuff%=.ic|
00000d50  6f 6e 5f 62 75 66 66 65  72 28 33 31 29 0d 03 0c  |on_buffer(31)...|
00000d60  1c 4d 48 62 75 66 66 25  3d a4 69 63 6f 6e 5f 62  |.MHbuff%=.icon_b|
00000d70  75 66 66 65 72 28 33 37  29 0d 03 16 1e 6c 65 76  |uffer(37)....lev|
00000d80  52 62 75 66 66 25 3d a4  69 63 6f 6e 5f 62 75 66  |Rbuff%=.icon_buf|
00000d90  66 65 72 28 35 33 29 0d  03 20 1e 6c 65 76 57 62  |fer(53).. .levWb|
00000da0  75 66 66 25 3d a4 69 63  6f 6e 5f 62 75 66 66 65  |uff%=.icon_buffe|
00000db0  72 28 35 37 29 0d 03 2a  19 74 69 74 6c 65 62 75  |r(57)..*.titlebu|
00000dc0  66 66 43 25 3d 62 6c 6f  63 6b 25 21 37 32 0d 03  |ffC%=block%!72..|
00000dd0  34 04 0d 03 3e 3b 53 43  68 61 6e 64 6c 65 25 3d  |4...>;SChandle%=|
00000de0  a4 74 65 6d 70 5f 77 69  6e 64 6f 77 28 53 43 62  |.temp_window(SCb|
00000df0  75 66 66 25 2c 32 35 30  2c 6e 61 6d 65 25 2c 22  |uff%,250,name%,"|
00000e00  73 63 6f 72 65 22 2c 66  6f 6e 74 25 29 0d 03 48  |score",font%)..H|
00000e10  1e 53 6e 61 6d 65 62 75  66 66 25 3d a4 69 63 6f  |.Snamebuff%=.ico|
00000e20  6e 5f 62 75 66 66 65 72  28 31 29 0d 03 52 1c 53  |n_buffer(1)..R.S|
00000e30  43 74 62 75 66 66 25 3d  a4 69 63 6f 6e 5f 62 75  |Ctbuff%=.icon_bu|
00000e40  66 66 65 72 28 32 29 0d  03 5c 1c 53 43 51 62 75  |ffer(2)..\.SCQbu|
00000e50  66 66 25 3d a4 69 63 6f  6e 5f 62 75 66 66 65 72  |ff%=.icon_buffer|
00000e60  28 34 29 0d 03 66 1c 53  43 52 62 75 66 66 25 3d  |(4)..f.SCRbuff%=|
00000e70  a4 69 63 6f 6e 5f 62 75  66 66 65 72 28 36 29 0d  |.icon_buffer(6).|
00000e80  03 70 1c 53 43 57 62 75  66 66 25 3d a4 69 63 6f  |.p.SCWbuff%=.ico|
00000e90  6e 5f 62 75 66 66 65 72  28 38 29 0d 03 7a 04 0d  |n_buffer(8)..z..|
00000ea0  03 84 38 4e 47 68 61 6e  64 6c 65 25 3d a4 74 65  |..8NGhandle%=.te|
00000eb0  6d 70 5f 77 69 6e 64 6f  77 28 4e 32 62 75 66 66  |mp_window(N2buff|
00000ec0  25 2c 39 30 30 2c 6e 61  6d 65 25 2c 22 6e 61 6d  |%,900,name%,"nam|
00000ed0  65 32 22 2c 2d 31 29 0d  03 8e 19 4e 74 69 74 6c  |e2",-1)....Ntitl|
00000ee0  65 62 75 66 66 25 3d 62  6c 6f 63 6b 25 21 37 32  |ebuff%=block%!72|
00000ef0  0d 03 98 04 0d 03 a2 39  43 43 68 61 6e 64 6c 65  |.......9CChandle|
00000f00  25 3d a4 74 65 6d 70 5f  77 69 6e 64 6f 77 28 63  |%=.temp_window(c|
00000f10  61 6c 63 62 75 66 66 25  2c 32 30 30 2c 6e 61 6d  |alcbuff%,200,nam|
00000f20  65 25 2c 22 63 61 6c 63  22 2c 2d 31 29 0d 03 ac  |e%,"calc",-1)...|
00000f30  1c 43 43 62 75 66 66 25  3d a4 69 63 6f 6e 5f 62  |.CCbuff%=.icon_b|
00000f40  75 66 66 65 72 28 31 37  29 0d 03 b6 04 0d 03 c0  |uffer(17).......|
00000f50  3b 4c 68 61 6e 64 6c 65  25 3d a4 74 65 6d 70 5f  |;Lhandle%=.temp_|
00000f60  77 69 6e 64 6f 77 28 4c  62 75 66 66 25 2c 34 30  |window(Lbuff%,40|
00000f70  30 2c 6e 61 6d 65 25 2c  22 4c 6f 61 64 62 6f 78  |0,name%,"Loadbox|
00000f80  22 2c 66 6f 6e 74 25 29  0d 03 ca 1d 6c 6f 61 64  |",font%)....load|
00000f90  62 75 66 66 25 3d a4 69  63 6f 6e 5f 62 75 66 66  |buff%=.icon_buff|
00000fa0  65 72 28 32 29 0d 03 d4  38 4d 68 61 6e 64 6c 65  |er(2)...8Mhandle|
00000fb0  25 3d a4 74 65 6d 70 5f  77 69 6e 64 6f 77 28 4d  |%=.temp_window(M|
00000fc0  62 75 66 66 25 2c 35 30  30 2c 6e 61 6d 65 25 2c  |buff%,500,name%,|
00000fd0  22 44 69 72 4d 65 6e 75  22 2c 2d 31 29 0d 03 de  |"DirMenu",-1)...|
00000fe0  30 e3 20 6e 25 3d 30 20  b8 20 31 34 3a 4d 65 6e  |0. n%=0 . 14:Men|
00000ff0  75 42 75 66 66 25 28 6e  25 29 3d a4 69 63 6f 6e  |uBuff%(n%)=.icon|
00001000  5f 62 75 66 66 65 72 28  6e 25 29 3a ed 0d 03 e8  |_buffer(n%):....|
00001010  04 0d 03 f2 3a 53 56 68  61 6e 64 6c 65 25 3d a4  |....:SVhandle%=.|
00001020  74 65 6d 70 5f 77 69 6e  64 6f 77 28 53 56 62 75  |temp_window(SVbu|
00001030  66 66 25 2c 33 30 30 2c  6e 61 6d 65 25 2c 22 73  |ff%,300,name%,"s|
00001040  61 76 65 62 6f 78 22 2c  2d 31 29 0d 03 fc 1d 73  |avebox",-1)....s|
00001050  61 76 65 62 75 66 66 25  3d a4 69 63 6f 6e 5f 62  |avebuff%=.icon_b|
00001060  75 66 66 65 72 28 31 29  0d 04 06 04 0d 04 10 3a  |uffer(1).......:|
00001070  44 72 68 61 6e 64 6c 65  25 3d a4 74 65 6d 70 5f  |Drhandle%=.temp_|
00001080  77 69 6e 64 6f 77 28 44  72 62 75 66 66 25 2c 31  |window(Drbuff%,1|
00001090  30 30 2c 6e 61 6d 65 25  2c 22 64 69 72 6d 65 73  |00,name%,"dirmes|
000010a0  73 22 2c 2d 31 29 0d 04  1a 3a 50 68 61 6e 64 6c  |s",-1)...:Phandl|
000010b0  65 25 3d a4 74 65 6d 70  5f 77 69 6e 64 6f 77 28  |e%=.temp_window(|
000010c0  50 62 75 66 66 25 2c 31  30 30 2c 6e 61 6d 65 25  |Pbuff%,100,name%|
000010d0  2c 22 70 72 69 6e 74 6d  65 73 73 22 2c 2d 31 29  |,"printmess",-1)|
000010e0  0d 04 24 3d 50 32 68 61  6e 64 6c 65 25 3d a4 74  |..$=P2handle%=.t|
000010f0  65 6d 70 5f 77 69 6e 64  6f 77 28 50 32 62 75 66  |emp_window(P2buf|
00001100  66 25 2c 31 30 30 2c 6e  61 6d 65 25 2c 22 70 72  |f%,100,name%,"pr|
00001110  69 6e 74 6d 65 73 73 32  22 2c 2d 31 29 0d 04 2e  |intmess2",-1)...|
00001120  3b 53 54 68 61 6e 64 6c  65 25 3d a4 74 65 6d 70  |;SThandle%=.temp|
00001130  5f 77 69 6e 64 6f 77 28  53 54 62 75 66 66 25 2c  |_window(STbuff%,|
00001140  31 30 30 2c 6e 61 6d 65  25 2c 22 73 74 6f 70 6d  |100,name%,"stopm|
00001150  65 73 73 22 2c 2d 31 29  0d 04 38 3b 49 63 68 61  |ess",-1)..8;Icha|
00001160  6e 64 6c 65 25 3d a4 74  65 6d 70 5f 77 69 6e 64  |ndle%=.temp_wind|
00001170  6f 77 28 49 63 62 75 66  66 25 2c 31 30 30 2c 6e  |ow(Icbuff%,100,n|
00001180  61 6d 65 25 2c 22 69 63  6f 6e 6d 65 73 73 22 2c  |ame%,"iconmess",|
00001190  2d 31 29 0d 04 42 1b 69  63 62 75 66 66 25 3d a4  |-1)..B.icbuff%=.|
000011a0  69 63 6f 6e 5f 62 75 66  66 65 72 28 30 29 0d 04  |icon_buffer(0)..|
000011b0  4c 3b 53 6d 68 61 6e 64  6c 65 25 3d a4 74 65 6d  |L;Smhandle%=.tem|
000011c0  70 5f 77 69 6e 64 6f 77  28 53 6d 62 75 66 66 25  |p_window(Smbuff%|
000011d0  2c 31 30 30 2c 6e 61 6d  65 25 2c 22 73 61 76 65  |,100,name%,"save|
000011e0  6d 65 73 73 22 2c 2d 31  29 0d 04 56 38 45 68 61  |mess",-1)..V8Eha|
000011f0  6e 64 6c 65 25 3d a4 74  65 6d 70 5f 77 69 6e 64  |ndle%=.temp_wind|
00001200  6f 77 28 45 62 75 66 66  25 2c 31 30 30 2c 6e 61  |ow(Ebuff%,100,na|
00001210  6d 65 25 2c 22 65 6e 64  73 61 76 65 22 2c 2d 31  |me%,"endsave",-1|
00001220  29 0d 04 60 1c 45 69 63  62 75 66 66 25 3d a4 69  |)..`.Eicbuff%=.i|
00001230  63 6f 6e 5f 62 75 66 66  65 72 28 31 29 0d 04 6a  |con_buffer(1)..j|
00001240  3b 52 68 61 6e 64 6c 65  25 3d a4 74 65 6d 70 5f  |;Rhandle%=.temp_|
00001250  77 69 6e 64 6f 77 28 52  62 75 66 66 25 2c 31 30  |window(Rbuff%,10|
00001260  30 2c 6e 61 6d 65 25 2c  22 72 65 6a 65 63 74 6d  |0,name%,"rejectm|
00001270  65 73 73 22 2c 2d 31 29  0d 04 74 1c 52 69 63 62  |ess",-1)..t.Ricb|
00001280  75 66 66 25 3d a4 69 63  6f 6e 5f 62 75 66 66 65  |uff%=.icon_buffe|
00001290  72 28 30 29 0d 04 7e 3b  45 64 68 61 6e 64 6c 65  |r(0)..~;Edhandle|
000012a0  25 3d a4 74 65 6d 70 5f  77 69 6e 64 6f 77 28 45  |%=.temp_window(E|
000012b0  64 62 75 66 66 25 2c 31  30 30 2c 6e 61 6d 65 25  |dbuff%,100,name%|
000012c0  2c 22 6e 61 6d 65 6d 65  73 73 22 2c 2d 31 29 0d  |,"namemess",-1).|
000012d0  04 88 04 0d 04 92 33 44  68 61 6e 64 6c 65 25 3d  |......3Dhandle%=|
000012e0  a4 74 65 6d 70 5f 77 69  6e 64 6f 77 28 2d 31 2c  |.temp_window(-1,|
000012f0  2d 31 2c 6e 61 6d 65 25  2c 22 64 72 69 62 62 6c  |-1,name%,"dribbl|
00001300  65 22 2c 2d 31 29 0d 04  9c 3d 53 56 68 61 6e 64  |e",-1)...=SVhand|
00001310  6c 65 32 25 3d a4 74 65  6d 70 5f 77 69 6e 64 6f  |le2%=.temp_windo|
00001320  77 28 53 56 32 62 75 66  66 25 2c 33 30 30 2c 6e  |w(SV2buff%,300,n|
00001330  61 6d 65 25 2c 22 73 61  76 65 62 6f 78 32 22 2c  |ame%,"savebox2",|
00001340  2d 31 29 0d 04 a6 21 73  61 76 65 74 65 78 74 62  |-1)...!savetextb|
00001350  75 66 66 25 3d a4 69 63  6f 6e 5f 62 75 66 66 65  |uff%=.icon_buffe|
00001360  72 28 31 29 0d 04 b0 04  0d 04 ba 3a 4f 68 61 6e  |r(1).......:Ohan|
00001370  64 6c 65 25 3d a4 74 65  6d 70 5f 77 69 6e 64 6f  |dle%=.temp_windo|
00001380  77 28 4f 62 75 66 66 25  2c 32 30 30 2c 6e 61 6d  |w(Obuff%,200,nam|
00001390  65 25 2c 22 6f 77 6e 73  75 6d 22 2c 66 6f 6e 74  |e%,"ownsum",font|
000013a0  25 29 0d 04 c4 1e 4f 73  75 6d 31 62 75 66 66 25  |%)....Osum1buff%|
000013b0  3d a4 69 63 6f 6e 5f 62  75 66 66 65 72 28 33 29  |=.icon_buffer(3)|
000013c0  0d 04 ce 1e 4f 73 75 6d  32 62 75 66 66 25 3d a4  |....Osum2buff%=.|
000013d0  69 63 6f 6e 5f 62 75 66  66 65 72 28 34 29 0d 04  |icon_buffer(4)..|
000013e0  d8 1d 4f 73 67 6e 62 75  66 66 25 3d a4 69 63 6f  |..Osgnbuff%=.ico|
000013f0  6e 5f 62 75 66 66 65 72  28 35 29 0d 04 e2 04 0d  |n_buffer(5).....|
00001400  04 ec 31 54 68 61 6e 64  6c 65 25 3d a4 74 65 6d  |..1Thandle%=.tem|
00001410  70 5f 77 69 6e 64 6f 77  28 2d 31 2c 2d 31 2c 6e  |p_window(-1,-1,n|
00001420  61 6d 65 25 2c 22 74 69  74 6c 65 22 2c 2d 31 29  |ame%,"title",-1)|
00001430  0d 04 f6 04 0d 05 00 39  44 65 6d 68 61 6e 64 6c  |.......9Demhandl|
00001440  65 25 3d a4 74 65 6d 70  5f 77 69 6e 64 6f 77 28  |e%=.temp_window(|
00001450  44 65 6d 62 75 66 66 25  2c 31 35 30 2c 6e 61 6d  |Dembuff%,150,nam|
00001460  65 25 2c 22 64 65 6d 6f  22 2c 2d 31 29 0d 05 0a  |e%,"demo",-1)...|
00001470  1a 44 65 6d 49 63 25 3d  a4 69 63 6f 6e 5f 62 75  |.DemIc%=.icon_bu|
00001480  66 66 65 72 28 31 29 0d  05 14 04 0d 05 1e 1a c8  |ffer(1).........|
00001490  99 22 57 69 6d 70 5f 43  6c 6f 73 65 54 65 6d 70  |."Wimp_CloseTemp|
000014a0  6c 61 74 65 22 0d 05 28  05 e1 0d 05 32 04 0d 05  |late"..(....2...|
000014b0  3c 04 0d 05 46 13 dd 20  f2 6c 6f 61 64 5f 73 70  |<...F.. .load_sp|
000014c0  72 69 74 65 73 0d 05 50  0a ea 20 6d 65 6d 25 0d  |rites..P.. mem%.|
000014d0  05 5a 1f 6d 65 6d 25 3d  32 35 38 30 30 30 3a f4  |.Z.mem%=258000:.|
000014e0  20 31 34 33 31 32 34 2b  31 31 34 37 39 36 0d 05  | 143124+114796..|
000014f0  64 11 de 20 73 61 72 65  61 25 20 6d 65 6d 25 0d  |d.. sarea% mem%.|
00001500  05 6e 1c 21 73 61 72 65  61 25 3d 6d 65 6d 25 3a  |.n.!sarea%=mem%:|
00001510  73 61 72 65 61 25 21 38  3d 31 36 0d 05 78 1f c8  |sarea%!8=16..x..|
00001520  99 22 4f 53 5f 53 70 72  69 74 65 4f 70 22 2c 26  |."OS_SpriteOp",&|
00001530  31 30 39 2c 73 61 72 65  61 25 0d 05 82 35 c8 99  |109,sarea%...5..|
00001540  22 4f 53 5f 53 70 72 69  74 65 4f 70 22 2c 26 31  |"OS_SpriteOp",&1|
00001550  30 41 2c 73 61 72 65 61  25 2c 22 3c 4d 61 74 68  |0A,sarea%,"<Math|
00001560  73 24 44 69 72 3e 2e 73  70 72 69 74 65 73 22 0d  |s$Dir>.sprites".|
00001570  05 8c 05 e1 0d 05 96 04  0d 05 a0 04 0d 05 aa 1c  |................|
00001580  dd 20 f2 73 65 74 5f 6d  6f 64 65 5f 69 6e 64 65  |. .set_mode_inde|
00001590  70 65 6e 64 61 6e 63 65  0d 05 b4 2e de 20 73 63  |pendance..... sc|
000015a0  61 6c 65 25 20 31 36 2c  74 72 61 6e 73 25 20 32  |ale% 16,trans% 2|
000015b0  35 35 2c 70 61 6c 25 20  36 34 2c 73 63 61 6c 65  |55,pal% 64,scale|
000015c0  32 37 25 20 31 36 0d 05  be 23 f2 73 6f 75 72 63  |27% 16...#.sourc|
000015d0  65 5f 6d 6f 64 65 5f 66  61 63 74 6f 72 73 28 31  |e_mode_factors(1|
000015e0  32 2c 73 63 61 6c 65 25  29 0d 05 c8 21 f2 63 75  |2,scale%)...!.cu|
000015f0  72 72 65 6e 74 5f 6d 6f  64 65 5f 66 61 63 74 6f  |rrent_mode_facto|
00001600  72 73 28 73 63 61 6c 65  25 29 0d 05 d2 24 f2 70  |rs(scale%)...$.p|
00001610  61 6c 65 74 74 65 5f 62  6c 6f 63 6b 28 22 6e 30  |alette_block("n0|
00001620  22 2c 73 61 72 65 61 25  2c 70 61 6c 25 29 0d 05  |",sarea%,pal%)..|
00001630  dc 22 f2 74 72 61 6e 73  74 61 62 6c 65 28 31 32  |.".transtable(12|
00001640  2c 70 61 6c 25 2c 2d 31  2c 74 72 61 6e 73 25 29  |,pal%,-1,trans%)|
00001650  0d 05 e6 1e f2 6d 65 73  73 61 67 65 5f 6d 6f 64  |.....message_mod|
00001660  65 5f 69 6e 64 65 70 65  6e 64 61 6e 63 65 0d 05  |e_independance..|
00001670  f0 04 0d 05 fa 25 f2 73  6f 75 72 63 65 5f 6d 6f  |.....%.source_mo|
00001680  64 65 5f 66 61 63 74 6f  72 73 28 32 37 2c 73 63  |de_factors(27,sc|
00001690  61 6c 65 32 37 25 29 0d  06 04 23 f2 63 75 72 72  |ale27%)...#.curr|
000016a0  65 6e 74 5f 6d 6f 64 65  5f 66 61 63 74 6f 72 73  |ent_mode_factors|
000016b0  28 73 63 61 6c 65 32 37  25 29 0d 06 0e 05 e1 0d  |(scale27%)......|
000016c0  06 18 04 0d 06 22 04 0d  06 2c 10 dd 20 f2 77 69  |....."...,.. .wi|
000016d0  6d 70 5f 70 6f 6c 6c 0d  06 36 05 f5 0d 06 40 24  |mp_poll..6....@$|
000016e0  c8 99 22 57 69 6d 70 5f  50 6f 6c 6c 22 2c 30 2c  |.."Wimp_Poll",0,|
000016f0  62 6c 6f 63 6b 25 20 b8  20 72 65 61 73 6f 6e 25  |block% . reason%|
00001700  0d 06 4a 10 c8 8e 20 72  65 61 73 6f 6e 25 20 ca  |..J... reason% .|
00001710  0d 06 54 14 20 c9 20 30  3a f2 6e 75 6c 6c 5f 65  |..T. . 0:.null_e|
00001720  76 65 6e 74 0d 06 5e 10  20 c9 20 31 3a f2 72 65  |vent..^. . 1:.re|
00001730  64 72 61 77 0d 06 68 16  20 c9 20 32 3a f2 6f 70  |draw..h. . 2:.op|
00001740  65 6e 5f 77 69 6e 64 6f  77 73 0d 06 72 17 20 c9  |en_windows..r. .|
00001750  20 33 3a f2 63 6c 6f 73  65 5f 77 69 6e 64 6f 77  | 3:.close_window|
00001760  73 0d 06 7c 17 20 c9 20  36 3a f2 62 75 74 74 6f  |s..|. . 6:.butto|
00001770  6e 5f 63 6c 69 63 6b 73  0d 06 86 50 20 c9 20 37  |n_clicks...P . 7|
00001780  3a e7 20 a4 77 69 6e 64  6f 77 5f 6f 70 65 6e 28  |:. .window_open(|
00001790  53 56 68 61 6e 64 6c 65  25 29 20 8c 20 f2 73 61  |SVhandle%) . .sa|
000017a0  76 65 5f 72 65 71 75 65  73 74 28 26 46 46 44 2c  |ve_request(&FFD,|
000017b0  73 61 76 65 62 75 66 66  25 2c 37 32 2b 32 30 2a  |savebuff%,72+20*|
000017c0  4e 63 6f 75 6e 74 25 29  0d 06 90 52 20 20 20 20  |Ncount%)...R    |
000017d0  20 20 20 20 e7 20 a4 77  69 6e 64 6f 77 5f 6f 70  |    . .window_op|
000017e0  65 6e 28 53 56 68 61 6e  64 6c 65 32 25 29 20 8c  |en(SVhandle2%) .|
000017f0  20 f2 73 61 76 65 5f 72  65 71 75 65 73 74 28 26  | .save_request(&|
00001800  46 46 46 2c 73 61 76 65  74 65 78 74 62 75 66 66  |FFF,savetextbuff|
00001810  25 2c 52 70 74 72 25 2b  31 29 0d 06 9a 0e 20 c9  |%,Rptr%+1).... .|
00001820  20 38 3a f2 6b 65 79 73  0d 06 a4 15 20 c9 20 39  | 8:.keys.... . 9|
00001830  3a f2 73 65 6c 65 63 74  5f 6d 65 6e 75 0d 06 ae  |:.select_menu...|
00001840  16 20 c9 20 31 37 2c 31  38 3a f2 6d 65 73 73 61  |. . 17,18:.messa|
00001850  67 65 73 0d 06 b8 05 cb  0d 06 c2 0d fd 20 65 6e  |ges.......... en|
00001860  64 25 3d 2d 31 0d 06 cc  05 e1 0d 06 d6 04 0d 06  |d%=-1...........|
00001870  e0 04 0d 06 ea 0b dd 20  f2 6b 65 79 73 0d 06 f4  |....... .keys...|
00001880  10 c8 8e 20 21 62 6c 6f  63 6b 25 20 ca 0d 06 fe  |... !block% ....|
00001890  1b 20 c9 20 43 43 68 61  6e 64 6c 65 25 3a f2 6b  |. . CChandle%:.k|
000018a0  65 79 73 5f 63 61 6c 63  0d 07 08 1d 20 c9 20 4f  |eys_calc.... . O|
000018b0  68 61 6e 64 6c 65 25 3a  f2 6f 77 6e 5f 73 75 6d  |handle%:.own_sum|
000018c0  5f 6b 65 79 73 0d 07 12  1e 20 c9 20 4e 47 68 61  |_keys.... . NGha|
000018d0  6e 64 6c 65 25 3a e7 20  63 72 65 61 74 65 25 3c  |ndle%:. create%<|
000018e0  30 20 8c 0d 07 1c 28 20  20 20 20 20 20 20 20 20  |0 ....(         |
000018f0  20 20 20 20 20 20 20 20  f2 6b 65 79 73 5f 6e 61  |        .keys_na|
00001900  6d 65 28 4e 61 6d 65 4e  6f 25 29 0d 07 26 15 20  |me(NameNo%)..&. |
00001910  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 cc  |               .|
00001920  0d 07 30 40 20 20 20 20  20 20 20 20 20 20 20 20  |..0@            |
00001930  20 20 20 20 20 e7 20 4e  61 6d 65 4e 6f 25 3d 4e  |     . NameNo%=N|
00001940  63 6f 75 6e 74 25 2b 31  20 8c 20 f2 6b 65 79 73  |count%+1 . .keys|
00001950  5f 6e 61 6d 65 28 4e 63  6f 75 6e 74 25 2b 31 29  |_name(Ncount%+1)|
00001960  0d 07 3a 45 20 20 20 20  20 20 20 20 20 20 20 20  |..:E            |
00001970  20 20 20 20 20 e7 20 4e  61 6d 65 4e 6f 25 3e 30  |     . NameNo%>0|
00001980  20 80 20 62 6c 6f 63 6b  25 21 32 34 3d 31 33 20  | . block%!24=13 |
00001990  8c 20 f2 6b 65 79 73 5f  6e 61 6d 65 28 4e 61 6d  |. .keys_name(Nam|
000019a0  65 4e 6f 25 29 0d 07 44  15 20 20 20 20 20 20 20  |eNo%)..D.       |
000019b0  20 20 20 20 20 20 20 20  20 cd 0d 07 4e 05 7f 0d  |         ...N...|
000019c0  07 58 22 20 c8 99 22 57  69 6d 70 5f 50 72 6f 63  |.X" .."Wimp_Proc|
000019d0  65 73 73 4b 65 79 22 2c  62 6c 6f 63 6b 25 21 32  |essKey",block%!2|
000019e0  34 0d 07 62 05 cb 0d 07  6c 05 e1 0d 07 76 04 0d  |4..b....l....v..|
000019f0  07 80 04 0d 07 8a 0f dd  20 f2 6d 65 73 73 61 67  |........ .messag|
00001a00  65 73 0d 07 94 12 c8 8e  20 62 6c 6f 63 6b 25 21  |es...... block%!|
00001a10  31 36 20 ca 0d 07 9e 10  20 c9 20 30 3a 65 6e 64  |16 ..... . 0:end|
00001a20  25 3d 2d 31 0d 07 a8 49  20 c9 20 32 3a f4 20 49  |%=-1...I . 2:. I|
00001a30  46 20 46 4e 77 69 6e 64  6f 77 5f 6f 70 65 6e 28  |F FNwindow_open(|
00001a40  53 56 68 61 6e 64 6c 65  25 29 20 50 52 4f 43 73  |SVhandle%) PROCs|
00001a50  61 76 65 5f 66 69 6c 65  28 46 4e 73 74 72 69 6e  |ave_file(FNstrin|
00001a60  67 28 62 6c 6f 63 6b 25  2b 34 34 29 29 0d 07 b2  |g(block%+44))...|
00001a70  55 20 20 20 20 20 20 20  20 f4 20 49 46 20 46 4e  |U        . IF FN|
00001a80  77 69 6e 64 6f 77 5f 6f  70 65 6e 28 53 56 68 61  |window_open(SVha|
00001a90  6e 64 6c 65 32 25 29 20  50 52 4f 43 72 65 73 75  |ndle2%) PROCresu|
00001aa0  6c 74 73 5f 74 65 78 74  5f 66 69 6c 65 28 46 4e  |lts_text_file(FN|
00001ab0  73 74 72 69 6e 67 28 62  6c 6f 63 6b 25 2b 34 34  |string(block%+44|
00001ac0  29 29 0d 07 bc 24 20 20  20 20 20 20 20 20 f2 63  |))...$        .c|
00001ad0  6c 6f 73 65 5f 77 69 6e  64 6f 77 28 53 6d 68 61  |lose_window(Smha|
00001ae0  6e 64 6c 65 25 29 0d 07  c6 2d 20 c9 20 33 3a e7  |ndle%)...- . 3:.|
00001af0  20 62 6c 6f 63 6b 25 21  34 30 3d 26 46 46 44 20  | block%!40=&FFD |
00001b00  8c 20 f2 64 72 61 67 6c  6f 61 64 5f 6d 65 73 73  |. .dragload_mess|
00001b10  61 67 65 0d 07 d0 1a 20  c9 20 26 34 30 30 43 31  |age.... . &400C1|
00001b20  3a f2 6d 6f 64 65 5f 63  68 61 6e 67 65 0d 07 da  |:.mode_change...|
00001b30  2f 20 c9 20 35 3a e7 20  62 6c 6f 63 6b 25 21 34  |/ . 5:. block%!4|
00001b40  30 3d 26 31 30 30 30 20  8c 20 f2 62 72 6f 61 64  |0=&1000 . .broad|
00001b50  63 61 73 74 5f 6d 65 73  73 61 67 65 0d 07 e4 05  |cast_message....|
00001b60  cb 0d 07 ee 05 e1 0d 07  f8 04 0d 08 02 04 0d 08  |................|
00001b70  0c 15 dd 20 f2 73 65 74  5f 75 70 5f 6c 6f 61 64  |... .set_up_load|
00001b80  62 6f 78 0d 08 16 1c ea  20 69 74 65 6d 25 2c 66  |box..... item%,f|
00001b90  69 6c 65 24 2c 6e 25 3a  69 74 65 6d 25 3d 30 0d  |ile$,n%:item%=0.|
00001ba0  08 20 31 f2 6c 6f 61 64  62 6f 78 5f 77 69 6e 64  |. 1.loadbox_wind|
00001bb0  6f 77 73 28 2d 31 29 3a  f2 63 6c 6f 73 65 5f 77  |ows(-1):.close_w|
00001bc0  69 6e 64 6f 77 28 44 72  68 61 6e 64 6c 65 25 29  |indow(Drhandle%)|
00001bd0  0d 08 2a 2b e3 20 6e 25  3d 30 20 b8 20 31 34 3a  |..*+. n%=0 . 14:|
00001be0  24 28 4d 65 6e 75 42 75  66 66 25 28 6e 25 29 29  |$(MenuBuff%(n%))|
00001bf0  3d 22 22 3a ed 3a 6e 25  3d 2d 31 0d 08 34 04 0d  |="":.:n%=-1..4..|
00001c00  08 3e 48 24 28 62 6c 6f  63 6b 25 2b 31 32 29 3d  |.>H$(block%+12)=|
00001c10  70 61 74 68 24 3a c8 99  22 4f 53 5f 47 42 50 42  |path$:.."OS_GBPB|
00001c20  22 2c 39 2c 62 6c 6f 63  6b 25 2b 31 32 2c 62 6c  |",9,block%+12,bl|
00001c30  6f 63 6b 25 2c 31 2c 30  2c 31 31 20 b8 20 2c 2c  |ock%,1,0,11 . ,,|
00001c40  2c 2c 69 74 65 6d 25 0d  08 48 17 c8 95 20 69 74  |,,item%..H... it|
00001c50  65 6d 25 3e 2d 31 20 80  20 6e 25 3c 31 34 0d 08  |em%>-1 . n%<14..|
00001c60  52 1a 20 66 69 6c 65 24  3d a4 73 74 72 69 6e 67  |R. file$=.string|
00001c70  28 62 6c 6f 63 6b 25 29  0d 08 5c 36 20 e7 20 66  |(block%)..\6 . f|
00001c80  69 6c 65 24 3c 3e 22 72  65 73 75 6c 74 73 22 20  |ile$<>"results" |
00001c90  8c 20 6e 25 2b 3d 31 3a  24 28 4d 65 6e 75 42 75  |. n%+=1:$(MenuBu|
00001ca0  66 66 25 28 6e 25 29 29  3d 66 69 6c 65 24 0d 08  |ff%(n%))=file$..|
00001cb0  66 3a 20 c8 99 22 4f 53  5f 47 42 50 42 22 2c 39  |f: .."OS_GBPB",9|
00001cc0  2c 62 6c 6f 63 6b 25 2b  31 32 2c 62 6c 6f 63 6b  |,block%+12,block|
00001cd0  25 2c 31 2c 69 74 65 6d  25 2c 31 31 20 b8 20 2c  |%,1,item%,11 . ,|
00001ce0  2c 2c 2c 69 74 65 6d 25  0d 08 70 05 ce 0d 08 7a  |,,,item%..p....z|
00001cf0  04 0d 08 84 13 70 61 74  68 24 3d 70 61 74 68 24  |.....path$=path$|
00001d00  2b 22 2e 22 0d 08 8e 05  e1 0d 08 98 04 0d 08 a2  |+"."............|
00001d10  04 0d 08 ac 18 dd 20 f2  62 72 6f 61 64 63 61 73  |...... .broadcas|
00001d20  74 5f 6d 65 73 73 61 67  65 0d 08 b6 36 e7 20 c2  |t_message...6. .|
00001d30  a4 73 74 72 69 6e 67 28  62 6c 6f 63 6b 25 2b 34  |.string(block%+4|
00001d40  34 29 2c 39 29 3d 22 4d  66 69 6c 65 73 5f 2b 2d  |4),9)="Mfiles_+-|
00001d50  22 20 80 20 63 72 65 61  74 65 25 3c 30 20 8c 0d  |" . create%<0 ..|
00001d60  08 c0 2c 20 70 61 74 68  24 3d a4 73 74 72 69 6e  |.., path$=.strin|
00001d70  67 28 62 6c 6f 63 6b 25  2b 34 34 29 3a 64 69 72  |g(block%+44):dir|
00001d80  70 61 74 68 24 3d 70 61  74 68 24 0d 08 ca 2a 20  |path$=path$...* |
00001d90  24 6c 6f 61 64 62 75 66  66 25 3d 22 22 3a f2 72  |$loadbuff%="":.r|
00001da0  65 73 65 74 5f 69 63 6f  6e 28 4c 68 61 6e 64 6c  |eset_icon(Lhandl|
00001db0  65 25 2c 33 29 0d 08 d4  1e 20 f2 73 68 61 64 65  |e%,3).... .shade|
00001dc0  5f 69 63 6f 6e 28 4c 68  61 6e 64 6c 65 25 2c 31  |_icon(Lhandle%,1|
00001dd0  2c 30 29 0d 08 de 14 20  f2 73 65 74 5f 75 70 5f  |,0).... .set_up_|
00001de0  6c 6f 61 64 62 6f 78 0d  08 e8 05 cd 0d 08 f2 05  |loadbox.........|
00001df0  e1 0d 08 fc 04 0d 09 06  04 0d 09 10 17 dd 20 f2  |.............. .|
00001e00  64 72 61 67 6c 6f 61 64  5f 6d 65 73 73 61 67 65  |dragload_message|
00001e10  0d 09 1a 1a ea 20 66 69  6c 65 24 2c 6c 65 61 66  |..... file$,leaf|
00001e20  24 2c 77 68 61 6e 64 6c  65 25 0d 09 24 16 77 68  |$,whandle%..$.wh|
00001e30  61 6e 64 6c 65 25 3d 62  6c 6f 63 6b 25 21 32 30  |andle%=block%!20|
00001e40  0d 09 2e 1c 66 69 6c 65  24 3d a4 73 74 72 69 6e  |....file$=.strin|
00001e50  67 28 62 6c 6f 63 6b 25  2b 34 34 29 0d 09 38 53  |g(block%+44)..8S|
00001e60  f4 20 49 46 20 28 6e 6f  74 73 61 76 65 64 4f 25  |. IF (notsavedO%|
00001e70  20 4f 52 20 6e 6f 74 73  61 76 65 64 52 25 29 3d  | OR notsavedR%)=|
00001e80  2d 31 20 54 48 45 4e 20  6e 65 78 74 66 69 6c 65  |-1 THEN nextfile|
00001e90  24 3d 66 69 6c 65 24 3a  50 52 4f 43 65 6e 64 5f  |$=file$:PROCend_|
00001ea0  73 61 76 65 28 33 29 3a  45 4e 44 50 52 4f 43 0d  |save(3):ENDPROC.|
00001eb0  09 42 15 f2 66 69 6c 65  5f 76 61 72 73 28 66 69  |.B..file_vars(fi|
00001ec0  6c 65 24 29 0d 09 4c 15  f2 6c 6f 61 64 5f 66 69  |le$)..L..load_fi|
00001ed0  6c 65 28 66 69 6c 65 24  29 0d 09 56 04 0d 09 60  |le(file$)..V...`|
00001ee0  19 e7 20 77 68 61 6e 64  6c 65 25 3d 4c 68 61 6e  |.. whandle%=Lhan|
00001ef0  64 6c 65 25 20 8c 0d 09  6a 1c 20 f2 72 65 73 65  |dle% ...j. .rese|
00001f00  74 5f 69 63 6f 6e 28 4c  68 61 6e 64 6c 65 25 2c  |t_icon(Lhandle%,|
00001f10  32 29 0d 09 74 05 cc 0d  09 7e 28 20 e7 20 77 68  |2)..t....~( . wh|
00001f20  61 6e 64 6c 65 25 3d 2d  32 20 8c 20 f2 6c 6f 61  |andle%=-2 . .loa|
00001f30  64 62 6f 78 5f 77 69 6e  64 6f 77 73 28 30 29 0d  |dbox_windows(0).|
00001f40  09 88 05 cd 0d 09 92 05  e1 0d 09 9c 04 0d 09 a6  |................|
00001f50  04 0d 09 b0 17 dd 20 f2  66 69 6c 65 5f 76 61 72  |...... .file_var|
00001f60  73 28 66 69 6c 65 24 29  0d 09 ba 31 24 73 61 76  |s(file$)...1$sav|
00001f70  65 62 75 66 66 25 3d 66  69 6c 65 24 3a 24 6c 6f  |ebuff%=file$:$lo|
00001f80  61 64 62 75 66 66 25 3d  a4 67 65 74 6c 65 61 66  |adbuff%=.getleaf|
00001f90  28 66 69 6c 65 24 2c 30  29 0d 09 c4 26 70 61 74  |(file$,0)...&pat|
00001fa0  68 24 3d c0 66 69 6c 65  24 2c a9 20 66 69 6c 65  |h$=.file$,. file|
00001fb0  24 2d a9 20 24 6c 6f 61  64 62 75 66 66 25 29 0d  |$-. $loadbuff%).|
00001fc0  09 ce 6c e7 20 a7 66 69  6c 65 24 2c 22 4d 66 69  |..l. .file$,"Mfi|
00001fd0  6c 65 73 5f 2b 2d 22 29  20 8c 20 24 73 61 76 65  |les_+-") . $save|
00001fe0  74 65 78 74 62 75 66 66  25 3d 70 61 74 68 24 2b  |textbuff%=path$+|
00001ff0  22 72 65 73 75 6c 74 73  2e 22 2b 24 6c 6f 61 64  |"results."+$load|
00002000  62 75 66 66 25 20 8b 20  24 73 61 76 65 74 65 78  |buff% . $savetex|
00002010  74 62 75 66 66 25 3d 70  61 74 68 24 2b 22 52 22  |tbuff%=path$+"R"|
00002020  2b 24 6c 6f 61 64 62 75  66 66 25 0d 09 d8 05 e1  |+$loadbuff%.....|
00002030  0d 09 e2 04 0d 09 ec 04  0d 09 f6 12 dd 20 f2 6d  |............. .m|
00002040  6f 64 65 5f 63 68 61 6e  67 65 0d 0a 00 22 f2 74  |ode_change...".t|
00002050  72 61 6e 73 74 61 62 6c  65 28 31 32 2c 70 61 6c  |ranstable(12,pal|
00002060  25 2c 2d 31 2c 74 72 61  6e 73 25 29 0d 0a 0a 21  |%,-1,trans%)...!|
00002070  f2 63 75 72 72 65 6e 74  5f 6d 6f 64 65 5f 66 61  |.current_mode_fa|
00002080  63 74 6f 72 73 28 73 63  61 6c 65 25 29 0d 0a 14  |ctors(scale%)...|
00002090  23 f2 63 75 72 72 65 6e  74 5f 6d 6f 64 65 5f 66  |#.current_mode_f|
000020a0  61 63 74 6f 72 73 28 73  63 61 6c 65 32 37 25 29  |actors(scale27%)|
000020b0  0d 0a 1e 1e f2 6d 65 73  73 61 67 65 5f 6d 6f 64  |.....message_mod|
000020c0  65 5f 69 6e 64 65 70 65  6e 64 61 6e 63 65 0d 0a  |e_independance..|
000020d0  28 25 64 72 61 77 66 6f  6e 74 25 3d 28 67 61 6d  |(%drawfont%=(gam|
000020e0  65 25 3e 30 20 80 20 53  43 66 6f 72 6d 61 74 25  |e%>0 . SCformat%|
000020f0  3d 32 29 0d 0a 32 10 f2  73 65 74 5f 77 69 6e 64  |=2)..2..set_wind|
00002100  6f 77 73 0d 0a 3c 44 e7  20 a4 77 69 6e 64 6f 77  |ows..<D. .window|
00002110  5f 6f 70 65 6e 28 4f 68  61 6e 64 6c 65 25 29 20  |_open(Ohandle%) |
00002120  8c 20 4f 68 61 6e 64 6c  65 25 3d a4 63 65 6e 74  |. Ohandle%=.cent|
00002130  72 65 5f 77 69 6e 64 6f  77 28 4f 68 61 6e 64 6c  |re_window(Ohandl|
00002140  65 25 2c 22 59 22 29 0d  0a 46 33 e7 20 a4 77 69  |e%,"Y")..F3. .wi|
00002150  6e 64 6f 77 5f 6f 70 65  6e 28 4c 68 61 6e 64 6c  |ndow_open(Lhandl|
00002160  65 25 29 20 8c 20 f2 6c  6f 61 64 62 6f 78 5f 77  |e%) . .loadbox_w|
00002170  69 6e 64 6f 77 73 28 2d  31 29 0d 0a 50 47 e7 20  |indows(-1)..PG. |
00002180  a4 77 69 6e 64 6f 77 5f  6f 70 65 6e 28 43 43 68  |.window_open(CCh|
00002190  61 6e 64 6c 65 25 29 20  8c 20 43 43 68 61 6e 64  |andle%) . CChand|
000021a0  6c 65 25 3d a4 63 65 6e  74 72 65 5f 77 69 6e 64  |le%=.centre_wind|
000021b0  6f 77 28 43 43 68 61 6e  64 6c 65 25 2c 22 59 22  |ow(CChandle%,"Y"|
000021c0  29 0d 0a 5a 43 e7 20 a4  77 69 6e 64 6f 77 5f 6f  |)..ZC. .window_o|
000021d0  70 65 6e 28 44 68 61 6e  64 6c 65 25 29 20 8c 20  |pen(Dhandle%) . |
000021e0  44 68 61 6e 64 6c 65 25  3d a4 63 65 6e 74 72 65  |Dhandle%=.centre|
000021f0  5f 77 69 6e 64 6f 77 28  44 68 61 6e 64 6c 65 25  |_window(Dhandle%|
00002200  2c 22 22 29 0d 0a 64 05  e1 0d 0a 6e 04 0d 0a 78  |,"")..d....n...x|
00002210  04 0d 0a 82 12 dd 20 f2  73 65 6c 65 63 74 5f 6d  |...... .select_m|
00002220  65 6e 75 0d 0a 8c 13 ea  20 6e 6f 25 2c 73 63 78  |enu..... no%,scx|
00002230  25 2c 73 63 79 25 0d 0a  96 10 c8 8e 20 21 62 6c  |%,scy%...... !bl|
00002240  6f 63 6b 25 20 ca 0d 0a  a0 14 20 c9 20 31 3a 6e  |ock% ..... . 1:n|
00002250  6f 25 3d 4e 61 6d 65 4e  6f 25 0d 0a aa 22 20 20  |o%=NameNo%..."  |
00002260  20 20 20 20 20 20 f2 73  65 74 5f 63 6f 6e 66 69  |      .set_confi|
00002270  67 5f 74 69 74 6c 65 28  6e 6f 25 29 0d 0a b4 21  |g_title(no%)...!|
00002280  20 20 20 20 20 20 20 20  f2 73 65 74 5f 70 72 65  |        .set_pre|
00002290  66 65 72 65 6e 63 65 73  28 6e 6f 25 29 0d 0a be  |ferences(no%)...|
000022a0  30 20 20 20 20 20 20 20  20 43 68 61 6e 64 6c 65  |0        Chandle|
000022b0  25 3d a4 63 65 6e 74 72  65 5f 77 69 6e 64 6f 77  |%=.centre_window|
000022c0  28 43 68 61 6e 64 6c 65  25 2c 22 22 29 0d 0a c8  |(Chandle%,"")...|
000022d0  27 20 c9 20 32 3a 63 72  65 61 74 65 25 3d 2d 31  |' . 2:create%=-1|
000022e0  3a f2 62 75 69 6c 64 5f  6e 61 6d 65 5f 77 69 6e  |:.build_name_win|
000022f0  64 6f 77 47 0d 0a d2 38  20 c9 20 33 3a 63 72 65  |dowG...8 . 3:cre|
00002300  61 74 65 25 3d 2d 32 3a  f2 6f 70 65 6e 5f 77 69  |ate%=-2:.open_wi|
00002310  6e 64 6f 77 28 44 72 68  61 6e 64 6c 65 25 29 3a  |ndow(Drhandle%):|
00002320  6e 65 78 74 66 69 6c 65  24 3d 22 22 0d 0a dc 3b  |nextfile$=""...;|
00002330  20 20 20 20 20 20 20 20  e7 20 67 61 6d 65 25 20  |        . game% |
00002340  8c 20 f2 63 6c 6f 73 65  5f 77 69 6e 64 6f 77 28  |. .close_window(|
00002350  68 61 6e 64 6c 65 25 28  67 61 6d 65 25 29 29 3a  |handle%(game%)):|
00002360  67 61 6d 65 25 3d 30 0d  0a e6 43 20 20 20 20 20  |game%=0...C     |
00002370  20 20 20 f4 20 49 46 20  28 6e 6f 74 73 61 76 65  |   . IF (notsave|
00002380  64 4f 25 20 4f 52 20 6e  6f 74 73 61 76 65 64 52  |dO% OR notsavedR|
00002390  25 29 3d 2d 31 20 54 48  45 4e 20 50 52 4f 43 65  |%)=-1 THEN PROCe|
000023a0  6e 64 5f 73 61 76 65 28  33 29 0d 0a f0 3f 20 c9  |nd_save(3)...? .|
000023b0  20 34 3a f4 20 50 52 4f  43 73 61 76 65 5f 66 69  | 4:. PROCsave_fi|
000023c0  6c 65 28 24 73 61 76 65  62 75 66 66 25 29 3a 50  |le($savebuff%):P|
000023d0  52 4f 43 6f 70 65 6e 5f  77 69 6e 64 6f 77 28 53  |ROCopen_window(S|
000023e0  6d 68 61 6e 64 6c 65 25  29 0d 0a fa 32 20 20 20  |mhandle%)...2   |
000023f0  20 20 20 20 20 24 44 65  6d 49 63 25 3d 22 73 61  |     $DemIc%="sa|
00002400  76 65 73 20 74 68 65 20  63 68 69 6c 64 72 65 6e  |ves the children|
00002410  27 73 20 6c 65 76 65 6c  73 2e 22 0d 0b 04 35 20  |'s levels."...5 |
00002420  20 20 20 20 20 20 20 44  65 6d 68 61 6e 64 6c 65  |       Demhandle|
00002430  25 3d a4 63 65 6e 74 72  65 5f 77 69 6e 64 6f 77  |%=.centre_window|
00002440  28 44 65 6d 68 61 6e 64  6c 65 25 2c 22 59 22 29  |(Demhandle%,"Y")|
00002450  0d 0b 0e 1d 20 c9 20 35  3a f2 73 65 6c 65 63 74  |.... . 5:.select|
00002460  5f 6d 65 6e 75 5f 72 65  73 75 6c 74 73 0d 0b 18  |_menu_results...|
00002470  20 20 c9 20 36 3a f4 20  65 6e 70 72 69 6e 74 25  |  . 6:. enprint%|
00002480  3d 4e 4f 54 20 65 6e 70  72 69 6e 74 25 0d 0b 22  |=NOT enprint%.."|
00002490  2f 20 20 20 20 20 20 20  20 f4 20 50 52 4f 43 73  |/        . PROCs|
000024a0  69 6e 67 6c 65 5f 74 69  63 6b 28 6d 65 6e 75 25  |ingle_tick(menu%|
000024b0  2c 36 2c 65 6e 70 72 69  6e 74 25 29 0d 0b 2c 36  |,6,enprint%)..,6|
000024c0  20 20 20 20 20 20 20 20  f4 20 49 46 20 4e 61 6d  |        . IF Nam|
000024d0  65 4e 6f 25 20 54 48 45  4e 20 50 52 4f 43 73 65  |eNo% THEN PROCse|
000024e0  74 5f 70 72 69 6e 74 65  72 28 4e 61 6d 65 4e 6f  |t_printer(NameNo|
000024f0  25 29 0d 0b 36 53 20 20  20 20 20 20 20 20 24 44  |%)..6S        $D|
00002500  65 6d 49 63 25 3d 22 63  61 6e 20 70 72 69 6e 74  |emIc%="can print|
00002510  20 6f 75 74 20 73 75 6d  73 2e 22 3a 44 65 6d 68  | out sums.":Demh|
00002520  61 6e 64 6c 65 25 3d a4  63 65 6e 74 72 65 5f 77  |andle%=.centre_w|
00002530  69 6e 64 6f 77 28 44 65  6d 68 61 6e 64 6c 65 25  |indow(Demhandle%|
00002540  2c 22 59 22 29 0d 0b 40  1a 20 c9 20 37 3a 73 63  |,"Y")..@. . 7:sc|
00002550  72 65 65 6e 25 3d ac 20  73 63 72 65 65 6e 25 0d  |reen%=. screen%.|
00002560  0b 4a 29 20 20 20 20 20  20 20 20 f2 73 69 6e 67  |.J)        .sing|
00002570  6c 65 5f 74 69 63 6b 28  6d 65 6e 75 25 2c 37 2c  |le_tick(menu%,7,|
00002580  73 63 72 65 65 6e 25 29  0d 0b 54 18 20 20 20 20  |screen%)..T.    |
00002590  20 20 20 20 f2 73 65 74  5f 77 69 6e 64 6f 77 73  |    .set_windows|
000025a0  0d 0b 5e 6f 20 c9 20 38  3a f4 20 49 46 20 28 6e  |..^o . 8:. IF (n|
000025b0  6f 74 73 61 76 65 64 4f  25 20 4f 52 20 6e 6f 74  |otsavedO% OR not|
000025c0  73 61 76 65 64 52 25 29  3d 2d 31 20 41 4e 44 20  |savedR%)=-1 AND |
000025d0  70 61 74 68 24 3c 3e 22  22 20 54 48 45 4e 20 6e  |path$<>"" THEN n|
000025e0  65 78 74 66 69 6c 65 24  3d 22 22 3a 50 52 4f 43  |extfile$="":PROC|
000025f0  65 6e 64 5f 73 61 76 65  28 33 29 3a 65 6e 64 25  |end_save(3):end%|
00002600  3d 31 20 45 4c 53 45 20  65 6e 64 25 3d 2d 31 0d  |=1 ELSE end%=-1.|
00002610  0b 68 13 20 20 20 20 20  20 20 20 65 6e 64 25 3d  |.h.        end%=|
00002620  2d 31 0d 0b 72 05 cb 0d  0b 7c 20 f2 6d 65 6e 75  |-1..r....| .menu|
00002630  5f 61 64 6a 75 73 74 28  6d 65 6e 75 25 2c 62 6c  |_adjust(menu%,bl|
00002640  6f 63 6b 25 2c 39 29 0d  0b 86 05 e1 0d 0b 90 04  |ock%,9).........|
00002650  0d 0b 9a 04 0d 0b a4 16  dd 20 f2 65 6e 64 5f 73  |......... .end_s|
00002660  61 76 65 28 66 69 6c 65  25 29 0d 0b ae 4c e7 20  |ave(file%)...L. |
00002670  6e 6f 74 73 61 76 65 64  4f 25 3d 2d 31 20 80 20  |notsavedO%=-1 . |
00002680  28 66 69 6c 65 25 3d 31  20 84 20 66 69 6c 65 25  |(file%=1 . file%|
00002690  3d 33 29 20 8c 20 24 45  69 63 62 75 66 66 25 3d  |=3) . $Eicbuff%=|
000026a0  22 63 75 72 72 65 6e 74  20 67 72 6f 75 70 20 66  |"current group f|
000026b0  69 6c 65 20 3f 22 0d 0b  b8 46 e7 20 6e 6f 74 73  |ile ?"...F. nots|
000026c0  61 76 65 64 52 25 3d 2d  31 20 80 20 28 66 69 6c  |avedR%=-1 . (fil|
000026d0  65 25 3d 32 20 84 20 66  69 6c 65 25 3d 33 29 20  |e%=2 . file%=3) |
000026e0  8c 20 24 45 69 63 62 75  66 66 25 3d 22 72 65 73  |. $Eicbuff%="res|
000026f0  75 6c 74 73 20 66 69 6c  65 20 3f 22 0d 0b c2 53  |ults file ?"...S|
00002700  e7 20 28 6e 6f 74 73 61  76 65 64 4f 25 20 80 20  |. (notsavedO% . |
00002710  6e 6f 74 73 61 76 65 64  52 25 29 3d 2d 31 20 80  |notsavedR%)=-1 .|
00002720  20 66 69 6c 65 25 3d 33  20 8c 20 24 45 69 63 62  | file%=3 . $Eicb|
00002730  75 66 66 25 3d 22 67 72  6f 75 70 20 61 6e 64 20  |uff%="group and |
00002740  72 65 73 75 6c 74 73 20  66 69 6c 65 20 3f 22 0d  |results file ?".|
00002750  0b cc 1a f2 6f 70 65 6e  5f 77 69 6e 64 6f 77 28  |....open_window(|
00002760  45 68 61 6e 64 6c 65 25  29 0d 0b d6 11 73 61 76  |Ehandle%)....sav|
00002770  65 6e 64 25 3d 66 69 6c  65 25 0d 0b e0 05 e1 0d  |end%=file%......|
00002780  0b ea 04 0d 0b f4 04 0d  0b fe 16 dd 20 f2 73 65  |............ .se|
00002790  6c 65 63 74 5f 65 6e 64  5f 73 61 76 65 0d 0c 08  |lect_end_save...|
000027a0  13 e7 20 62 6c 6f 63 6b  25 21 31 36 3d 32 20 8c  |.. block%!16=2 .|
000027b0  0d 0c 12 4b 20 f4 20 49  46 20 6e 6f 74 73 61 76  |...K . IF notsav|
000027c0  65 64 4f 25 2d 31 20 41  4e 44 20 28 73 61 76 65  |edO%-1 AND (save|
000027d0  6e 64 25 20 41 4e 44 20  31 29 3d 31 20 54 48 45  |nd% AND 1)=1 THE|
000027e0  4e 20 50 52 4f 43 73 61  76 65 5f 66 69 6c 65 28  |N PROCsave_file(|
000027f0  24 73 61 76 65 62 75 66  66 25 29 0d 0c 1c 4b 20  |$savebuff%)...K |
00002800  e7 20 6e 6f 74 73 61 76  65 64 52 25 3d 2d 31 20  |. notsavedR%=-1 |
00002810  80 20 28 73 61 76 65 6e  64 25 20 80 20 32 29 3d  |. (savend% . 2)=|
00002820  32 20 8c 20 f2 72 65 73  75 6c 74 73 5f 74 65 78  |2 . .results_tex|
00002830  74 5f 66 69 6c 65 28 24  73 61 76 65 74 65 78 74  |t_file($savetext|
00002840  62 75 66 66 25 29 0d 0c  26 21 20 e7 20 73 61 76  |buff%)..&! . sav|
00002850  65 6e 64 25 3d 32 20 8c  20 f2 72 65 73 65 74 5f  |end%=2 . .reset_|
00002860  72 65 73 75 6c 74 73 0d  0c 30 05 cd 0d 0c 3a 1b  |results..0....:.|
00002870  f2 63 6c 6f 73 65 5f 77  69 6e 64 6f 77 28 45 68  |.close_window(Eh|
00002880  61 6e 64 6c 65 25 29 0d  0c 44 2b 65 6e 64 25 3d  |andle%)..D+end%=|
00002890  28 65 6e 64 25 3d 31 29  3a 6e 6f 74 73 61 76 65  |(end%=1):notsave|
000028a0  64 4f 25 3d 30 3a 6e 6f  74 73 61 76 65 64 52 25  |dO%=0:notsavedR%|
000028b0  3d 30 0d 0c 4e 4a e7 20  6e 65 78 74 66 69 6c 65  |=0..NJ. nextfile|
000028c0  24 3c 3e 22 22 20 80 20  65 6e 64 25 3d 30 20 8c  |$<>"" . end%=0 .|
000028d0  20 f2 66 69 6c 65 5f 76  61 72 73 28 6e 65 78 74  | .file_vars(next|
000028e0  66 69 6c 65 24 29 3a f2  6c 6f 61 64 5f 66 69 6c  |file$):.load_fil|
000028f0  65 28 6e 65 78 74 66 69  6c 65 24 29 0d 0c 58 05  |e(nextfile$)..X.|
00002900  e1 0d 0c 62 04 0d 0c 6c  04 0d 0c 76 25 dd 20 f2  |...b...l...v%. .|
00002910  6d 65 6e 75 5f 61 64 6a  75 73 74 28 6d 65 6e 75  |menu_adjust(menu|
00002920  25 2c 62 6c 6f 63 6b 25  2c 6e 75 6d 25 29 0d 0c  |%,block%,num%)..|
00002930  80 23 c8 99 22 57 69 6d  70 5f 47 65 74 50 6f 69  |.#.."Wimp_GetPoi|
00002940  6e 74 65 72 49 6e 66 6f  22 2c 2c 62 6c 6f 63 6b  |nterInfo",,block|
00002950  25 0d 0c 8a 30 e7 20 62  6c 6f 63 6b 25 21 38 3d  |%...0. block%!8=|
00002960  31 20 8c 20 f2 73 68 6f  77 5f 6d 65 6e 75 28 6d  |1 . .show_menu(m|
00002970  65 6e 75 25 2c 62 6c 6f  63 6b 25 2c 6e 75 6d 25  |enu%,block%,num%|
00002980  29 0d 0c 94 05 e1 0d 0c  9e 04 0d 0c a8 04 0d 0c  |)...............|
00002990  b2 1a dd 20 f2 73 65 6c  65 63 74 5f 6d 65 6e 75  |... .select_menu|
000029a0  5f 72 65 73 75 6c 74 73  0d 0c bc 0f ea 20 72 65  |_results..... re|
000029b0  73 70 6f 6e 73 65 25 0d  0c c6 11 c8 8e 20 62 6c  |sponse%...... bl|
000029c0  6f 63 6b 25 21 34 20 ca  0d 0c d0 2d 20 c9 20 30  |ock%!4 ....- . 0|
000029d0  3a 44 68 61 6e 64 6c 65  25 3d a4 63 65 6e 74 72  |:Dhandle%=.centr|
000029e0  65 5f 77 69 6e 64 6f 77  28 44 68 61 6e 64 6c 65  |e_window(Dhandle|
000029f0  25 2c 22 22 29 0d 0c da  1e 20 c9 20 31 3a f2 70  |%,"").... . 1:.p|
00002a00  72 69 6e 74 6f 75 74 5f  72 65 73 75 6c 74 73 28  |rintout_results(|
00002a10  2d 31 29 0d 0c e4 1d 20  c9 20 32 3a f2 70 72 69  |-1).... . 2:.pri|
00002a20  6e 74 6f 75 74 5f 72 65  73 75 6c 74 73 28 30 29  |ntout_results(0)|
00002a30  0d 0c ee 43 20 c9 20 33  3a f2 72 65 73 75 6c 74  |...C . 3:.result|
00002a40  73 5f 74 65 78 74 5f 66  69 6c 65 28 24 73 61 76  |s_text_file($sav|
00002a50  65 74 65 78 74 62 75 66  66 25 29 3a f2 6f 70 65  |etextbuff%):.ope|
00002a60  6e 5f 77 69 6e 64 6f 77  28 53 6d 68 61 6e 64 6c  |n_window(Smhandl|
00002a70  65 25 29 0d 0c f8 20 20  c9 20 34 3a 61 75 74 6f  |e%)...  . 4:auto|
00002a80  73 61 76 65 52 25 3d ac  20 61 75 74 6f 73 61 76  |saveR%=. autosav|
00002a90  65 52 25 0d 0d 02 2d 20  20 20 20 20 20 20 20 f2  |eR%...-        .|
00002aa0  73 69 6e 67 6c 65 5f 74  69 63 6b 28 72 6d 65 6e  |single_tick(rmen|
00002ab0  75 25 2c 34 2c 61 75 74  6f 73 61 76 65 52 25 29  |u%,4,autosaveR%)|
00002ac0  0d 0d 0c 31 20 c9 20 35  3a e7 20 6e 6f 74 73 61  |...1 . 5:. notsa|
00002ad0  76 65 64 52 25 20 8c 20  6e 65 78 74 66 69 6c 65  |vedR% . nextfile|
00002ae0  24 3d 22 22 3a f2 65 6e  64 5f 73 61 76 65 28 32  |$="":.end_save(2|
00002af0  29 0d 0d 16 05 cb 0d 0d  20 05 e1 0d 0d 2a 04 0d  |)....... ....*..|
00002b00  0d 34 04 0d 0d 3e 0e dd  20 f2 65 6e 64 28 66 25  |.4...>.. .end(f%|
00002b10  29 0d 0d 48 16 e7 20 66  25 20 8c 20 f2 6c 6f 73  |)..H.. f% . .los|
00002b20  65 5f 66 6f 6e 74 73 0d  0d 52 0c 2a 50 4f 49 4e  |e_fonts..R.*POIN|
00002b30  54 45 52 0d 0d 5c 1a 2a  53 45 54 20 4d 61 74 68  |TER..\.*SET Math|
00002b40  73 31 24 52 75 6e 6e 69  6e 67 20 3c 3e 0d 0d 66  |s1$Running <>..f|
00002b50  16 c8 99 22 57 69 6d 70  5f 43 6c 6f 73 65 44 6f  |..."Wimp_CloseDo|
00002b60  77 6e 22 0d 0d 70 05 e1  0d 0d 7a 04 0d 0d 84 04  |wn"..p....z.....|
00002b70  0d 0d 8e 13 dd 20 f2 6f  70 65 6e 5f 77 69 6e 64  |..... .open_wind|
00002b80  6f 77 73 0d 0d 98 1f c8  99 22 57 69 6d 70 5f 4f  |ows......"Wimp_O|
00002b90  70 65 6e 57 69 6e 64 6f  77 22 2c 2c 62 6c 6f 63  |penWindow",,bloc|
00002ba0  6b 25 0d 0d a2 1e e7 20  21 62 6c 6f 63 6b 25 3d  |k%..... !block%=|
00002bb0  68 61 6e 64 6c 65 25 28  67 61 6d 65 25 29 20 8c  |handle%(game%) .|
00002bc0  0d 0d ac 28 20 e7 20 4f  77 69 6e 25 3d 2d 31 20  |...( . Owin%=-1 |
00002bd0  8c 20 f2 6f 70 65 6e 5f  77 69 6e 64 6f 77 28 4f  |. .open_window(O|
00002be0  68 61 6e 64 6c 65 25 29  0d 0d b6 36 20 e7 20 a4  |handle%)...6 . .|
00002bf0  77 69 6e 64 6f 77 5f 6f  70 65 6e 28 43 68 61 6e  |window_open(Chan|
00002c00  64 6c 65 25 29 20 8c 20  f2 6f 70 65 6e 5f 77 69  |dle%) . .open_wi|
00002c10  6e 64 6f 77 28 43 68 61  6e 64 6c 65 25 29 0d 0d  |ndow(Chandle%)..|
00002c20  c0 05 cd 0d 0d ca 4b e7  20 21 62 6c 6f 63 6b 25  |......K. !block%|
00002c30  3d 4c 68 61 6e 64 6c 65  25 20 8c 20 4d 68 61 6e  |=Lhandle% . Mhan|
00002c40  64 6c 65 25 3d a4 72 65  6c 61 74 69 76 65 5f 77  |dle%=.relative_w|
00002c50  69 6e 64 6f 77 28 4c 68  61 6e 64 6c 65 25 2c 4d  |indow(Lhandle%,M|
00002c60  68 61 6e 64 6c 65 25 2c  33 35 38 2c 30 29 0d 0d  |handle%,358,0)..|
00002c70  d4 05 e1 0d 0d de 04 0d  0d e8 04 0d 0d f2 14 dd  |................|
00002c80  20 f2 63 6c 6f 73 65 5f  77 69 6e 64 6f 77 73 0d  | .close_windows.|
00002c90  0d fc 1d ea 20 68 61 6e  64 6c 65 25 3a 68 61 6e  |.... handle%:han|
00002ca0  64 6c 65 25 3d 21 62 6c  6f 63 6b 25 0d 0e 06 10  |dle%=!block%....|
00002cb0  c8 8e 20 68 61 6e 64 6c  65 25 20 ca 0d 0e 10 52  |.. handle% ....R|
00002cc0  20 c9 20 68 61 6e 64 6c  65 25 28 67 61 6d 65 25  | . handle%(game%|
00002cd0  29 3a 53 54 68 61 6e 64  6c 65 25 3d a4 72 65 6c  |):SThandle%=.rel|
00002ce0  61 74 69 76 65 5f 77 69  6e 64 6f 77 28 68 61 6e  |ative_window(han|
00002cf0  64 6c 65 25 28 67 61 6d  65 25 29 2c 53 54 68 61  |dle%(game%),STha|
00002d00  6e 64 6c 65 25 2c 34 35  30 2c 35 35 36 29 0d 0e  |ndle%,450,556)..|
00002d10  1a 3b 20 c9 20 4e 47 68  61 6e 64 6c 65 25 3a 63  |.; . NGhandle%:c|
00002d20  72 65 61 74 65 25 3d 30  3a 4e 61 6d 65 4e 6f 25  |reate%=0:NameNo%|
00002d30  3d 30 3a f2 73 68 61 64  65 5f 69 74 65 6d 28 6d  |=0:.shade_item(m|
00002d40  65 6e 75 25 2c 31 2c 31  29 0d 0e 24 32 20 c9 20  |enu%,1,1)..$2 . |
00002d50  4c 68 61 6e 64 6c 65 25  3a f2 63 6c 6f 73 65 5f  |Lhandle%:.close_|
00002d60  77 69 6e 64 6f 77 28 4d  68 61 6e 64 6c 65 25 29  |window(Mhandle%)|
00002d70  3a 63 72 65 61 74 65 25  3d 2d 32 0d 0e 2e 05 cb  |:create%=-2.....|
00002d80  0d 0e 38 36 e7 20 68 61  6e 64 6c 65 25 3c 3e 68  |..86. handle%<>h|
00002d90  61 6e 64 6c 65 25 28 67  61 6d 65 25 29 20 8c 20  |andle%(game%) . |
00002da0  f2 63 6c 6f 73 65 5f 77  69 6e 64 6f 77 28 68 61  |.close_window(ha|
00002db0  6e 64 6c 65 25 29 0d 0e  42 15 e7 20 65 6e 64 25  |ndle%)..B.. end%|
00002dc0  3d 31 20 8c 20 65 6e 64  25 3d 30 0d 0e 4c 05 e1  |=1 . end%=0..L..|
00002dd0  0d 0e 56 04 0d 0e 60 04  0d 0e 6a 0d dd 20 f2 72  |..V...`...j.. .r|
00002de0  65 64 72 61 77 0d 0e 74  22 ea 20 66 6c 67 25 2c  |edraw..t". flg%,|
00002df0  48 61 6e 64 6c 65 25 3a  48 61 6e 64 6c 65 25 3d  |Handle%:Handle%=|
00002e00  21 62 6c 6f 63 6b 25 0d  0e 7e 26 f2 77 6f 72 6b  |!block%..~&.work|
00002e10  5f 61 72 65 61 5f 6f 72  69 67 69 6e 28 21 62 6c  |_area_origin(!bl|
00002e20  6f 63 6b 25 2c 6f 78 25  2c 6f 79 25 29 0d 0e 88  |ock%,ox%,oy%)...|
00002e30  28 c8 99 22 57 69 6d 70  5f 52 65 64 72 61 77 57  |(.."Wimp_RedrawW|
00002e40  69 6e 64 6f 77 22 2c 2c  62 6c 6f 63 6b 25 20 b8  |indow",,block% .|
00002e50  20 66 6c 67 25 0d 0e 92  0b c8 95 20 66 6c 67 25  | flg%...... flg%|
00002e60  0d 0e 9c 11 20 c8 8e 20  48 61 6e 64 6c 65 25 20  |.... .. Handle% |
00002e70  ca 0d 0e a6 23 20 20 c9  20 68 61 6e 64 6c 65 25  |....#  . handle%|
00002e80  28 67 61 6d 65 25 29 3a  f2 72 65 64 72 61 77 5f  |(game%):.redraw_|
00002e90  67 61 6d 65 0d 0e b0 24  20 20 c9 20 4e 47 68 61  |game...$  . NGha|
00002ea0  6e 64 6c 65 25 3a f2 72  65 64 72 61 77 5f 63 6c  |ndle%:.redraw_cl|
00002eb0  61 73 73 5f 6c 69 73 74  0d 0e ba 30 20 20 c9 20  |ass_list...0  . |
00002ec0  44 68 61 6e 64 6c 65 25  3a f2 73 65 74 5f 72 65  |Dhandle%:.set_re|
00002ed0  73 75 6c 74 73 5f 77 69  6e 64 6f 77 28 6f 78 25  |sults_window(ox%|
00002ee0  2c 6f 79 25 2c 2d 31 29  0d 0e c4 06 20 cb 0d 0e  |,oy%,-1).... ...|
00002ef0  ce 29 20 c8 99 22 57 69  6d 70 5f 47 65 74 52 65  |.) .."Wimp_GetRe|
00002f00  63 74 61 6e 67 6c 65 22  2c 2c 62 6c 6f 63 6b 25  |ctangle",,block%|
00002f10  20 b8 20 66 6c 67 25 0d  0e d8 05 ce 0d 0e e2 05  | . flg%.........|
00002f20  e1 0d 0e ec 04 0d 0e f6  04 0d 0f 00 12 dd 20 f2  |.............. .|
00002f30  72 65 64 72 61 77 5f 67  61 6d 65 0d 0f 0a 09 ea  |redraw_game.....|
00002f40  20 73 63 25 0d 0f 14 09  f2 67 72 69 64 0d 0f 1e  | sc%.....grid...|
00002f50  04 0d 0f 28 2a e7 20 53  43 66 6f 72 6d 61 74 25  |...(*. SCformat%|
00002f60  3d 32 20 84 20 65 73 74  69 6d 61 74 65 25 28 4e  |=2 . estimate%(N|
00002f70  61 6d 65 4e 6f 25 29 3d  30 20 8c 0d 0f 32 1c 20  |ameNo%)=0 ...2. |
00002f80  f2 73 75 6d 5f 70 61 72  74 73 3a f2 73 75 6d 5f  |.sum_parts:.sum_|
00002f90  6e 75 6d 62 65 72 73 0d  0f 3c 2c 20 e7 20 6d 6f  |numbers..<, . mo|
00002fa0  64 65 25 28 4e 61 6d 65  4e 6f 25 29 20 8c 20 f2  |de%(NameNo%) . .|
00002fb0  69 6e 70 75 74 5f 62 6f  78 28 6e 65 78 74 64 69  |input_box(nextdi|
00002fc0  67 25 29 0d 0f 46 16 20  e7 20 6d 61 72 6b 65 64  |g%)..F. . marked|
00002fd0  25 20 8c 20 f2 6d 61 72  6b 0d 0f 50 67 20 e7 20  |% . .mark..Pg . |
00002fe0  6d 65 73 73 61 67 65 24  28 31 29 3c 3e 22 22 20  |message$(1)<>"" |
00002ff0  80 20 64 72 61 77 66 6f  6e 74 25 3d 30 20 8c 20  |. drawfont%=0 . |
00003000  c8 99 22 4f 53 5f 53 70  72 69 74 65 4f 70 22 2c  |.."OS_SpriteOp",|
00003010  26 31 33 34 2c 73 61 72  65 61 25 2c 22 6d 65 73  |&134,sarea%,"mes|
00003020  73 61 67 65 22 2c 6f 78  25 2b 36 30 30 2c 6f 79  |sage",ox%+600,oy|
00003030  25 2b 79 33 25 2d 32 35  2c 30 2c 2d 31 2c 2d 31  |%+y3%-25,0,-1,-1|
00003040  0d 0f 5a 05 cc 0d 0f 64  4c 20 c8 99 22 4f 53 5f  |..Z....dL .."OS_|
00003050  53 70 72 69 74 65 4f 70  22 2c 26 31 33 34 2c 73  |SpriteOp",&134,s|
00003060  61 72 65 61 25 2c 22 65  73 74 69 6d 61 74 65 22  |area%,"estimate"|
00003070  2c 6f 78 25 2b 31 34 2c  6f 79 25 2d 34 36 32 2c  |,ox%+14,oy%-462,|
00003080  38 2c 73 63 61 6c 65 32  37 25 2c 74 72 61 6e 73  |8,scale27%,trans|
00003090  25 0d 0f 6e 14 20 f2 70  6c 61 63 65 5f 65 73 74  |%..n. .place_est|
000030a0  69 6d 61 74 65 0d 0f 78  15 20 f2 73 75 6d 5f 6e  |imate..x. .sum_n|
000030b0  75 6d 62 65 72 73 5f 65  73 74 0d 0f 82 05 cd 0d  |umbers_est......|
000030c0  0f 8c 04 0d 0f 96 54 c8  99 22 4f 53 5f 53 70 72  |......T.."OS_Spr|
000030d0  69 74 65 4f 70 22 2c 26  31 33 34 2c 73 61 72 65  |iteOp",&134,sare|
000030e0  61 25 2c 22 62 61 63 6b  74 6f 70 31 22 2c 6f 78  |a%,"backtop1",ox|
000030f0  25 2b 31 35 30 2c 6f 79  25 2d 31 34 36 2c 30 2c  |%+150,oy%-146,0,|
00003100  73 63 61 6c 65 25 2c 74  72 61 6e 73 25 3a f4 20  |scale%,trans%:. |
00003110  72 75 62 20 6f 75 74 0d  0f a0 3d e7 20 64 72 61  |rub out...=. dra|
00003120  67 25 3d 2d 31 20 80 20  28 64 72 61 67 76 61 6c  |g%=-1 . (dragval|
00003130  25 3c 3e 31 30 20 84 20  64 72 61 67 76 61 6c 25  |%<>10 . dragval%|
00003140  3d 31 30 20 80 20 64 72  61 67 79 25 3c 2d 31 35  |=10 . dragy%<-15|
00003150  30 29 20 8c 0d 0f a1 2e  20 e7 20 64 72 61 67 76  |0) ..... . dragv|
00003160  61 6c 25 3d 31 30 20 8c  20 73 63 25 3d 73 63 61  |al%=10 . sc%=sca|
00003170  6c 65 25 20 8b 20 73 63  25 3d 73 63 61 6c 65 32  |le% . sc%=scale2|
00003180  37 25 0d 0f aa 54 20 c8  99 22 4f 53 5f 53 70 72  |7%...T .."OS_Spr|
00003190  69 74 65 4f 70 22 2c 26  31 33 34 2c 73 61 72 65  |iteOp",&134,sare|
000031a0  61 25 2c 22 6d 6f 76 65  22 2b c3 64 72 61 67 76  |a%,"move"+.dragv|
000031b0  61 6c 25 2c 6f 78 25 2b  64 72 61 67 78 25 2c 6f  |al%,ox%+dragx%,o|
000031c0  79 25 2b 64 72 61 67 79  25 2c 38 2c 73 63 25 2c  |y%+dragy%,8,sc%,|
000031d0  74 72 61 6e 73 25 0d 0f  ab 05 cd 0d 0f b4 05 e1  |trans%..........|
000031e0  0d 0f be 04 0d 0f c8 04  0d 0f d2 14 dd 20 f2 62  |............. .b|
000031f0  75 74 74 6f 6e 5f 63 6c  69 63 6b 73 0d 0f dc 09  |utton_clicks....|
00003200  ea 20 6e 6f 25 0d 0f e6  24 e7 20 62 6c 6f 63 6b  |. no%...$. block|
00003210  25 21 38 3d 32 20 80 20  62 6c 6f 63 6b 25 21 31  |%!8=2 . block%!1|
00003220  32 3c 3e 2d 32 20 8c 20  e1 0d 0f f0 12 c8 8e 20  |2<>-2 . ....... |
00003230  62 6c 6f 63 6b 25 21 31  32 20 ca 0d 0f fa 30 20  |block%!12 ....0 |
00003240  c9 20 2d 32 3a e7 20 62  6c 6f 63 6b 25 21 31 36  |. -2:. block%!16|
00003250  3d 49 42 68 61 6e 64 6c  65 25 20 8c 20 f2 73 65  |=IBhandle% . .se|
00003260  6c 65 63 74 5f 49 42 69  63 6f 6e 0d 10 04 34 20  |lect_IBicon...4 |
00003270  c9 20 68 61 6e 64 6c 65  25 28 67 61 6d 65 25 29  |. handle%(game%)|
00003280  3a e7 20 62 6c 6f 63 6b  25 21 38 3d 34 20 8c 20  |:. block%!8=4 . |
00003290  f2 69 63 6f 6e 5f 73 65  6c 65 63 74 69 6f 6e 0d  |.icon_selection.|
000032a0  10 0e 30 20 c9 20 43 68  61 6e 64 6c 65 25 3a 6e  |..0 . Chandle%:n|
000032b0  6f 25 3d 4e 61 6d 65 4e  6f 25 3a f2 73 65 6c 65  |o%=NameNo%:.sele|
000032c0  63 74 5f 6f 70 74 69 6f  6e 73 28 6e 6f 25 29 0d  |ct_options(no%).|
000032d0  10 18 1e 20 c9 20 53 43  68 61 6e 64 6c 65 25 3a  |... . SChandle%:|
000032e0  f2 73 65 6c 65 63 74 5f  73 63 6f 72 65 0d 10 22  |.select_score.."|
000032f0  27 20 c9 20 43 43 68 61  6e 64 6c 65 25 3a f2 63  |' . CChandle%:.c|
00003300  61 6c 63 61 6c 61 74 6f  72 28 62 6c 6f 63 6b 25  |alcalator(block%|
00003310  21 31 36 29 0d 10 2c 3a  20 c9 20 4e 47 68 61 6e  |!16)..,: . NGhan|
00003320  64 6c 65 25 3a e7 20 63  72 65 61 74 65 25 3d 30  |dle%:. create%=0|
00003330  20 8c 20 f2 73 65 6c 65  63 74 5f 6e 61 6d 65 47  | . .select_nameG|
00003340  20 8b 20 f2 65 64 69 74  5f 6e 61 6d 65 47 0d 10  | . .edit_nameG..|
00003350  36 20 20 c9 20 53 56 68  61 6e 64 6c 65 25 3a f2  |6  . SVhandle%:.|
00003360  73 65 6c 65 63 74 5f 73  61 76 65 62 6f 78 0d 10  |select_savebox..|
00003370  40 23 20 c9 20 53 56 68  61 6e 64 6c 65 32 25 3a  |@# . SVhandle2%:|
00003380  f2 73 65 6c 65 63 74 5f  73 61 76 65 5f 74 65 78  |.select_save_tex|
00003390  74 0d 10 4a 2a 20 c9 20  53 54 68 61 6e 64 6c 65  |t..J* . SThandle|
000033a0  25 3a e7 20 62 6c 6f 63  6b 25 21 31 36 3d 32 20  |%:. block%!16=2 |
000033b0  8c 20 f2 67 61 6d 65 5f  65 6e 64 0d 10 54 2c 20  |. .game_end..T, |
000033c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 f2  |               .|
000033d0  63 6c 6f 73 65 5f 77 69  6e 64 6f 77 28 53 54 68  |close_window(STh|
000033e0  61 6e 64 6c 65 25 29 0d  10 5e 22 20 c9 20 4f 68  |andle%)..^" . Oh|
000033f0  61 6e 64 6c 65 25 3a f2  73 65 6c 65 63 74 5f 73  |andle%:.select_s|
00003400  75 6d 5f 77 69 6e 64 6f  77 0d 10 68 20 20 c9 20  |um_window..h  . |
00003410  4c 68 61 6e 64 6c 65 25  3a f2 73 65 6c 65 63 74  |Lhandle%:.select|
00003420  5f 6c 6f 61 64 66 69 6c  65 0d 10 72 2c 20 c9 20  |_loadfile..r, . |
00003430  4d 68 61 6e 64 6c 65 25  3a f2 73 65 6c 65 63 74  |Mhandle%:.select|
00003440  5f 66 69 6c 65 5f 6d 65  6e 75 28 62 6c 6f 63 6b  |_file_menu(block|
00003450  25 21 31 36 29 0d 10 7c  20 20 c9 20 45 68 61 6e  |%!16)..|  . Ehan|
00003460  64 6c 65 25 3a f2 73 65  6c 65 63 74 5f 65 6e 64  |dle%:.select_end|
00003470  5f 73 61 76 65 0d 10 86  2e 20 c9 20 50 32 68 61  |_save.... . P2ha|
00003480  6e 64 6c 65 25 3a e7 20  62 6c 6f 63 6b 25 21 31  |ndle%:. block%!1|
00003490  36 3d 32 20 8c 20 f2 73  75 6d 5f 70 72 69 6e 74  |6=2 . .sum_print|
000034a0  6f 75 74 0d 10 90 1e 20  20 20 20 20 20 20 20 20  |out....         |
000034b0  20 20 20 20 20 20 20 50  63 6f 75 6e 74 25 3d 2d  |       Pcount%=-|
000034c0  31 0d 10 9a 64 20 c9 20  50 68 61 6e 64 6c 65 25  |1...d . Phandle%|
000034d0  2c 49 63 68 61 6e 64 6c  65 25 2c 53 6d 68 61 6e  |,Ichandle%,Smhan|
000034e0  64 6c 65 25 2c 44 72 68  61 6e 64 6c 65 25 2c 52  |dle%,Drhandle%,R|
000034f0  68 61 6e 64 6c 65 25 2c  45 64 68 61 6e 64 6c 65  |handle%,Edhandle|
00003500  25 2c 44 65 6d 68 61 6e  64 6c 65 25 3a f2 63 6c  |%,Demhandle%:.cl|
00003510  6f 73 65 5f 77 69 6e 64  6f 77 28 62 6c 6f 63 6b  |ose_window(block|
00003520  25 21 31 32 29 0d 10 a4  05 cb 0d 10 ae 05 e1 0d  |%!12)...........|
00003530  10 b8 04 0d 10 c2 04 0d  10 cc 16 dd 20 f2 73 65  |............ .se|
00003540  6c 65 63 74 5f 6c 6f 61  64 66 69 6c 65 0d 10 d6  |lect_loadfile...|
00003550  12 ea 20 66 69 6c 65 25  2c 65 72 72 6f 72 25 0d  |.. file%,error%.|
00003560  10 e0 36 c8 99 22 57 69  6d 70 5f 53 65 74 43 61  |..6.."Wimp_SetCa|
00003570  72 65 74 50 6f 73 69 74  69 6f 6e 22 2c 4c 68 61  |retPosition",Lha|
00003580  6e 64 6c 65 25 2c 32 2c  34 36 2c 2d 32 31 30 2c  |ndle%,2,46,-210,|
00003590  2d 31 2c 2d 31 0d 10 ea  26 e7 20 62 6c 6f 63 6b  |-1,-1...&. block|
000035a0  25 21 31 36 3c 3e 33 20  84 20 24 6c 6f 61 64 62  |%!16<>3 . $loadb|
000035b0  75 66 66 25 3d 22 22 20  8c 20 e1 0d 10 f4 1b f2  |uff%="" . ......|
000035c0  63 6c 6f 73 65 5f 77 69  6e 64 6f 77 28 54 68 61  |close_window(Tha|
000035d0  6e 64 6c 65 25 29 0d 10  fe 04 0d 11 08 1f 24 73  |ndle%)........$s|
000035e0  61 76 65 62 75 66 66 25  3d 70 61 74 68 24 2b 24  |avebuff%=path$+$|
000035f0  6c 6f 61 64 62 75 66 66  25 0d 11 12 66 e7 20 a7  |loadbuff%...f. .|
00003600  70 61 74 68 24 2c 22 4d  66 69 6c 65 73 5f 2b 2d  |path$,"Mfiles_+-|
00003610  22 29 20 8c 20 24 73 61  76 65 74 65 78 74 62 75  |") . $savetextbu|
00003620  66 66 25 3d 70 61 74 68  24 2b 22 72 65 73 75 6c  |ff%=path$+"resul|
00003630  74 73 2e 22 2b 24 6c 6f  61 64 62 75 66 66 25 20  |ts."+$loadbuff% |
00003640  8b 20 24 73 61 76 65 74  65 78 74 62 75 66 66 25  |. $savetextbuff%|
00003650  3d 22 52 22 2b 24 73 61  76 65 62 75 66 66 25 0d  |="R"+$savebuff%.|
00003660  11 1c 04 0d 11 26 0f e7  20 63 72 65 61 74 65 25  |.....&.. create%|
00003670  20 8c 0d 11 30 14 20 e7  20 a4 63 68 65 63 6b 5f  | ...0. . .check_|
00003680  66 69 6c 65 20 8c 0d 11  3a 1c 20 20 f2 6c 6f 61  |file ...:.  .loa|
00003690  64 5f 66 69 6c 65 28 24  73 61 76 65 62 75 66 66  |d_file($savebuff|
000036a0  25 29 0d 11 44 19 20 20  f2 62 75 69 6c 64 5f 6e  |%)..D.  .build_n|
000036b0  61 6d 65 5f 77 69 6e 64  6f 77 47 0d 11 4e 06 20  |ame_windowG..N. |
000036c0  cc 0d 11 58 2b 20 20 f4  20 50 52 4f 43 6c 6f 61  |...X+  . PROCloa|
000036d0  64 5f 66 69 6c 65 28 22  3c 4f 62 65 79 24 44 69  |d_file("<Obey$Di|
000036e0  72 3e 2e 64 65 66 61 75  6c 74 22 29 0d 11 62 21  |r>.default")..b!|
000036f0  20 20 f4 20 50 52 4f 43  73 61 76 65 5f 66 69 6c  |  . PROCsave_fil|
00003700  65 28 24 73 61 76 65 62  75 66 66 25 29 0d 11 6c  |e($savebuff%)..l|
00003710  2b 20 20 24 44 65 6d 49  63 25 3d 22 61 6c 6c 6f  |+  $DemIc%="allo|
00003720  77 73 20 66 69 6c 65 73  20 74 6f 20 62 65 20 63  |ws files to be c|
00003730  72 65 61 74 65 64 2e 22  0d 11 76 2f 20 20 44 65  |reated."..v/  De|
00003740  6d 68 61 6e 64 6c 65 25  3d a4 63 65 6e 74 72 65  |mhandle%=.centre|
00003750  5f 77 69 6e 64 6f 77 28  44 65 6d 68 61 6e 64 6c  |_window(Demhandl|
00003760  65 25 2c 22 59 22 29 0d  11 80 06 20 cd 0d 11 8a  |e%,"Y").... ....|
00003770  05 cd 0d 11 94 17 f2 6c  6f 61 64 62 6f 78 5f 77  |.......loadbox_w|
00003780  69 6e 64 6f 77 73 28 30  29 0d 11 9e 05 e1 0d 11  |indows(0).......|
00003790  a8 04 0d 11 b2 04 0d 11  bc 1e dd 20 f2 73 65 6c  |........... .sel|
000037a0  65 63 74 5f 66 69 6c 65  5f 6d 65 6e 75 28 69 63  |ect_file_menu(ic|
000037b0  6f 6e 25 29 0d 11 c6 1e  e7 20 24 4d 65 6e 75 42  |on%)..... $MenuB|
000037c0  75 66 66 25 28 69 63 6f  6e 25 29 3d 22 22 20 8c  |uff%(icon%)="" .|
000037d0  20 e1 0d 11 d0 21 63 72  65 61 74 65 25 3d 2d 31  | ....!create%=-1|
000037e0  3a 70 61 74 68 24 3d 64  69 72 70 61 74 68 24 2b  |:path$=dirpath$+|
000037f0  22 2e 22 0d 11 da 1c f2  63 6c 6f 73 65 5f 77 69  |".".....close_wi|
00003800  6e 64 6f 77 28 49 63 68  61 6e 64 6c 65 25 29 0d  |ndow(Ichandle%).|
00003810  11 e4 20 24 6c 6f 61 64  62 75 66 66 25 3d 24 4d  |.. $loadbuff%=$M|
00003820  65 6e 75 42 75 66 66 25  28 69 63 6f 6e 25 29 0d  |enuBuff%(icon%).|
00003830  11 ee 1b f2 72 65 73 65  74 5f 69 63 6f 6e 28 4c  |....reset_icon(L|
00003840  68 61 6e 64 6c 65 25 2c  32 29 0d 11 f8 05 e1 0d  |handle%,2)......|
00003850  12 02 04 0d 12 0c 04 0d  12 16 11 dd 20 a4 63 68  |............ .ch|
00003860  65 63 6b 5f 66 69 6c 65  0d 12 20 0d ea 20 6e 25  |eck_file.. .. n%|
00003870  2c 66 6c 67 25 0d 12 2a  05 f5 0d 12 34 2a 20 e7  |,flg%..*....4* .|
00003880  20 24 6c 6f 61 64 62 75  66 66 25 3d 24 4d 65 6e  | $loadbuff%=$Men|
00003890  75 42 75 66 66 25 28 6e  25 29 20 8c 20 66 6c 67  |uBuff%(n%) . flg|
000038a0  25 3d 2d 31 0d 12 3e 0b  20 6e 25 20 2b 3d 31 0d  |%=-1..>. n% +=1.|
000038b0  12 48 15 fd 20 6e 25 3d  31 35 20 84 20 66 6c 67  |.H.. n%=15 . flg|
000038c0  25 3d 2d 31 0d 12 52 09  3d 66 6c 67 25 0d 12 5c  |%=-1..R.=flg%..\|
000038d0  04 0d 12 66 04 0d 12 70  1d dd 20 f2 6c 6f 61 64  |...f...p.. .load|
000038e0  62 6f 78 5f 77 69 6e 64  6f 77 73 28 6f 70 65 6e  |box_windows(open|
000038f0  25 29 0d 12 7a 0d e7 20  6f 70 65 6e 25 20 8c 0d  |%)..z.. open% ..|
00003900  12 84 2a 20 4c 68 61 6e  64 6c 65 25 3d a4 63 65  |..* Lhandle%=.ce|
00003910  6e 74 72 65 5f 77 69 6e  64 6f 77 28 4c 68 61 6e  |ntre_window(Lhan|
00003920  64 6c 65 25 2c 22 59 22  29 0d 12 8e 37 20 4d 68  |dle%,"Y")...7 Mh|
00003930  61 6e 64 6c 65 25 3d a4  72 65 6c 61 74 69 76 65  |andle%=.relative|
00003940  5f 77 69 6e 64 6f 77 28  4c 68 61 6e 64 6c 65 25  |_window(Lhandle%|
00003950  2c 4d 68 61 6e 64 6c 65  25 2c 33 35 38 2c 30 29  |,Mhandle%,358,0)|
00003960  0d 12 98 37 20 c8 99 22  57 69 6d 70 5f 53 65 74  |...7 .."Wimp_Set|
00003970  43 61 72 65 74 50 6f 73  69 74 69 6f 6e 22 2c 4c  |CaretPosition",L|
00003980  68 61 6e 64 6c 65 25 2c  32 2c 34 36 2c 2d 32 31  |handle%,2,46,-21|
00003990  30 2c 2d 31 2c 2d 31 0d  12 a2 05 cc 0d 12 ac 1c  |0,-1,-1.........|
000039a0  20 f2 63 6c 6f 73 65 5f  77 69 6e 64 6f 77 28 4c  | .close_window(L|
000039b0  68 61 6e 64 6c 65 25 29  0d 12 b6 1c 20 f2 63 6c  |handle%).... .cl|
000039c0  6f 73 65 5f 77 69 6e 64  6f 77 28 4d 68 61 6e 64  |ose_window(Mhand|
000039d0  6c 65 25 29 0d 12 c0 1d  20 f2 63 6c 6f 73 65 5f  |le%).... .close_|
000039e0  77 69 6e 64 6f 77 28 49  63 68 61 6e 64 6c 65 25  |window(Ichandle%|
000039f0  29 0d 12 ca 05 cd 0d 12  d4 05 e1 0d 12 de 04 0d  |)...............|
00003a00  12 e8 04 0d 12 f2 14 dd  20 f2 73 65 6c 65 63 74  |........ .select|
00003a10  5f 49 42 69 63 6f 6e 0d  12 fc 12 e7 20 62 6c 6f  |_IBicon..... blo|
00003a20  63 6b 25 21 38 3d 32 20  8c 0d 13 06 19 20 f2 61  |ck%!8=2 ..... .a|
00003a30  6c 6c 6f 77 5f 70 72 69  6e 74 5f 72 65 73 75 6c  |llow_print_resul|
00003a40  74 73 0d 13 10 20 20 f2  73 68 6f 77 5f 6d 65 6e  |ts...  .show_men|
00003a50  75 28 6d 65 6e 75 25 2c  21 62 6c 6f 63 6b 25 2c  |u(menu%,!block%,|
00003a60  39 29 0d 13 1a 05 cc 0d  13 24 0f 20 e7 20 73 74  |9).......$. . st|
00003a70  61 72 74 25 20 8c 0d 13  2e 11 20 20 e7 20 63 72  |art% .....  . cr|
00003a80  65 61 74 65 25 20 8c 0d  13 38 1e 20 20 20 f2 6f  |eate% ...8.   .o|
00003a90  70 65 6e 5f 77 69 6e 64  6f 77 28 44 72 68 61 6e  |pen_window(Drhan|
00003aa0  64 6c 65 25 29 0d 13 42  07 20 20 cc 0d 13 4c 1a  |dle%)..B.  ...L.|
00003ab0  20 20 20 f2 62 75 69 6c  64 5f 6e 61 6d 65 5f 77  |   .build_name_w|
00003ac0  69 6e 64 6f 77 47 0d 13  56 1a 20 20 20 f2 6c 6f  |indowG..V.   .lo|
00003ad0  61 64 62 6f 78 5f 77 69  6e 64 6f 77 73 28 30 29  |adbox_windows(0)|
00003ae0  0d 13 60 07 20 20 cd 0d  13 6a 06 20 cd 0d 13 74  |..`.  ...j. ...t|
00003af0  05 cd 0d 13 7e 1c f2 63  6c 6f 73 65 5f 77 69 6e  |....~..close_win|
00003b00  64 6f 77 28 49 63 68 61  6e 64 6c 65 25 29 0d 13  |dow(Ichandle%)..|
00003b10  88 1c f2 63 6c 6f 73 65  5f 77 69 6e 64 6f 77 28  |...close_window(|
00003b20  53 6d 68 61 6e 64 6c 65  25 29 0d 13 92 1b f2 63  |Smhandle%).....c|
00003b30  6c 6f 73 65 5f 77 69 6e  64 6f 77 28 45 68 61 6e  |lose_window(Ehan|
00003b40  64 6c 65 25 29 0d 13 9c  1b f2 63 6c 6f 73 65 5f  |dle%).....close_|
00003b50  77 69 6e 64 6f 77 28 52  68 61 6e 64 6c 65 25 29  |window(Rhandle%)|
00003b60  0d 13 a6 1b f2 63 6c 6f  73 65 5f 77 69 6e 64 6f  |.....close_windo|
00003b70  77 28 54 68 61 6e 64 6c  65 25 29 0d 13 b0 05 e1  |w(Thandle%).....|
00003b80  0d 13 ba 04 0d 13 c4 04  0d 13 ce 18 dd 20 f2 73  |............. .s|
00003b90  77 69 74 63 68 5f 77 69  6e 64 6f 77 28 68 25 29  |witch_window(h%)|
00003ba0  0d 13 d8 08 ea 20 6e 25  0d 13 e2 3b 21 62 6c 6f  |..... n%...;!blo|
00003bb0  63 6b 32 25 3d 68 61 6e  64 6c 65 25 28 33 2d 68  |ck2%=handle%(3-h|
00003bc0  25 29 3a c8 99 22 57 69  6d 70 5f 47 65 74 57 69  |%):.."Wimp_GetWi|
00003bd0  6e 64 6f 77 53 74 61 74  65 22 2c 2c 62 6c 6f 63  |ndowState",,bloc|
00003be0  6b 32 25 0d 13 ec 36 21  62 6c 6f 63 6b 25 3d 68  |k2%...6!block%=h|
00003bf0  61 6e 64 6c 65 25 28 68  25 29 3a c8 99 22 57 69  |andle%(h%):.."Wi|
00003c00  6d 70 5f 47 65 74 57 69  6e 64 6f 77 49 6e 66 6f  |mp_GetWindowInfo|
00003c10  22 2c 2c 62 6c 6f 63 6b  25 0d 13 f6 2a e3 20 6e  |",,block%...*. n|
00003c20  25 3d 34 20 b8 20 32 34  20 88 20 34 3a 62 6c 6f  |%=4 . 24 . 4:blo|
00003c30  63 6b 25 21 6e 25 3d 62  6c 6f 63 6b 32 25 21 6e  |ck%!n%=block2%!n|
00003c40  25 3a ed 0d 14 00 37 21  62 6c 6f 63 6b 32 25 3d  |%:....7!block2%=|
00003c50  68 61 6e 64 6c 65 25 28  68 25 29 3a c8 99 22 57  |handle%(h%):.."W|
00003c60  69 6d 70 5f 44 65 6c 65  74 65 57 69 6e 64 6f 77  |imp_DeleteWindow|
00003c70  22 2c 2c 62 6c 6f 63 6b  32 25 0d 14 0a 31 c8 99  |",,block2%...1..|
00003c80  22 57 69 6d 70 5f 43 72  65 61 74 65 57 69 6e 64  |"Wimp_CreateWind|
00003c90  6f 77 22 2c 2c 62 6c 6f  63 6b 25 2b 34 20 b8 20  |ow",,block%+4 . |
00003ca0  68 61 6e 64 6c 65 25 28  68 25 29 0d 14 14 1d f2  |handle%(h%).....|
00003cb0  6f 70 65 6e 5f 77 69 6e  64 6f 77 28 68 61 6e 64  |open_window(hand|
00003cc0  6c 65 25 28 68 25 29 29  0d 14 1e 05 e1 0d 14 28  |le%(h%)).......(|
00003cd0  04 0d 14 32 04 0d 14 3c  1a dd 20 f2 73 65 6c 65  |...2...<.. .sele|
00003ce0  63 74 5f 6f 70 74 69 6f  6e 73 28 6e 6f 25 29 0d  |ct_options(no%).|
00003cf0  14 46 3a ea 20 69 63 6f  6e 25 2c 68 65 6c 70 25  |.F:. icon%,help%|
00003d00  2c 72 65 73 65 74 25 2c  73 76 52 25 2c 6e 25 3a  |,reset%,svR%,n%:|
00003d10  72 65 73 65 74 25 3d 30  3a 73 76 52 25 3d 73 61  |reset%=0:svR%=sa|
00003d20  76 65 52 25 28 6e 6f 25  29 0d 14 50 3d 68 65 6c  |veR%(no%)..P=hel|
00003d30  70 25 3d 48 6c 65 76 65  6c 25 28 6e 6f 25 29 3a  |p%=Hlevel%(no%):|
00003d40  6e 6f 74 73 61 76 65 64  4f 25 3d 28 70 61 74 68  |notsavedO%=(path|
00003d50  24 3c 3e 22 22 29 3a 69  63 6f 6e 25 3d 62 6c 6f  |$<>""):icon%=blo|
00003d60  63 6b 25 21 31 36 0d 14  5a 2b e7 20 61 6c 74 65  |ck%!16..Z+. alte|
00003d70  72 25 3d 30 20 8c 20 61  6c 74 65 72 25 3d 28 69  |r%=0 . alter%=(i|
00003d80  63 6f 6e 25 3c 3e 36 38  20 80 20 6e 6f 25 3d 30  |con%<>68 . no%=0|
00003d90  29 0d 14 64 0e c8 8e 20  69 63 6f 6e 25 20 ca 0d  |)..d... icon% ..|
00003da0  14 6e 3a 20 c9 20 32 2c  33 3a f2 73 65 6c 65 63  |.n: . 2,3:.selec|
00003db0  74 5f 6f 70 65 72 61 74  6f 72 73 28 69 63 6f 6e  |t_operators(icon|
00003dc0  25 2d 31 2c 6e 6f 25 29  3a 72 65 73 65 74 25 3d  |%-1,no%):reset%=|
00003dd0  28 4f 77 69 6e 25 3d 30  29 0d 14 78 58 20 c9 20  |(Owin%=0)..xX . |
00003de0  36 3a 41 6c 65 76 65 6c  25 28 6e 6f 25 29 3d a4  |6:Alevel%(no%)=.|
00003df0  69 6e 63 5f 62 75 66 66  65 72 28 43 68 61 6e 64  |inc_buffer(Chand|
00003e00  6c 65 25 2c 35 2c 41 6c  65 76 65 6c 25 28 6e 6f  |le%,5,Alevel%(no|
00003e10  25 29 2c 6c 65 76 65 6c  5f 62 75 66 66 41 25 2c  |%),level_buffA%,|
00003e20  31 2c 31 2c 37 2c 30 29  3a 72 65 73 65 74 25 3d  |1,1,7,0):reset%=|
00003e30  31 0d 14 82 44 20 20 20  20 20 20 20 e7 20 64 65  |1...D       . de|
00003e40  63 69 6d 61 6c 25 28 6e  6f 25 29 3d 31 20 80 20  |cimal%(no%)=1 . |
00003e50  41 6c 65 76 65 6c 25 28  6e 6f 25 29 3d 35 20 8c  |Alevel%(no%)=5 .|
00003e60  20 f2 73 65 74 5f 64 65  63 5f 6c 65 76 65 6c 73  | .set_dec_levels|
00003e70  28 6e 6f 25 29 0d 14 8c  59 20 c9 20 37 3a 41 6c  |(no%)...Y . 7:Al|
00003e80  65 76 65 6c 25 28 6e 6f  25 29 3d a4 69 6e 63 5f  |evel%(no%)=.inc_|
00003e90  62 75 66 66 65 72 28 43  68 61 6e 64 6c 65 25 2c  |buffer(Chandle%,|
00003ea0  35 2c 41 6c 65 76 65 6c  25 28 6e 6f 25 29 2c 6c  |5,Alevel%(no%),l|
00003eb0  65 76 65 6c 5f 62 75 66  66 41 25 2c 31 2c 31 2c  |evel_buffA%,1,1,|
00003ec0  37 2c 2d 31 29 3a 72 65  73 65 74 25 3d 31 0d 14  |7,-1):reset%=1..|
00003ed0  96 58 20 c9 20 39 3a 53  6c 65 76 65 6c 25 28 6e  |.X . 9:Slevel%(n|
00003ee0  6f 25 29 3d a4 69 6e 63  5f 62 75 66 66 65 72 28  |o%)=.inc_buffer(|
00003ef0  43 68 61 6e 64 6c 65 25  2c 38 2c 53 6c 65 76 65  |Chandle%,8,Sleve|
00003f00  6c 25 28 6e 6f 25 29 2c  6c 65 76 65 6c 5f 62 75  |l%(no%),level_bu|
00003f10  66 66 53 25 2c 31 2c 31  2c 39 2c 30 29 3a 72 65  |ffS%,1,1,9,0):re|
00003f20  73 65 74 25 3d 31 0d 14  a0 45 20 20 20 20 20 20  |set%=1...E      |
00003f30  20 20 e7 20 64 65 63 69  6d 61 6c 25 28 6e 6f 25  |  . decimal%(no%|
00003f40  29 3d 31 20 80 20 53 6c  65 76 65 6c 25 28 6e 6f  |)=1 . Slevel%(no|
00003f50  25 29 3d 35 20 8c 20 f2  73 65 74 5f 64 65 63 5f  |%)=5 . .set_dec_|
00003f60  6c 65 76 65 6c 73 28 6e  6f 25 29 0d 14 aa 5a 20  |levels(no%)...Z |
00003f70  c9 20 31 30 3a 53 6c 65  76 65 6c 25 28 6e 6f 25  |. 10:Slevel%(no%|
00003f80  29 3d a4 69 6e 63 5f 62  75 66 66 65 72 28 43 68  |)=.inc_buffer(Ch|
00003f90  61 6e 64 6c 65 25 2c 38  2c 53 6c 65 76 65 6c 25  |andle%,8,Slevel%|
00003fa0  28 6e 6f 25 29 2c 6c 65  76 65 6c 5f 62 75 66 66  |(no%),level_buff|
00003fb0  53 25 2c 31 2c 31 2c 39  2c 2d 31 29 3a 72 65 73  |S%,1,1,9,-1):res|
00003fc0  65 74 25 3d 31 0d 14 b4  50 20 c9 20 31 37 3a 6e  |et%=1...P . 17:n|
00003fd0  6f 5f 71 75 65 73 74 25  28 6e 6f 25 29 3d a4 69  |o_quest%(no%)=.i|
00003fe0  6e 63 5f 62 75 66 66 65  72 28 43 68 61 6e 64 6c  |nc_buffer(Chandl|
00003ff0  65 25 2c 31 36 2c 6e 6f  5f 71 75 65 73 74 25 28  |e%,16,no_quest%(|
00004000  6e 6f 25 29 2c 51 62 75  66 66 25 2c 31 2c 31 2c  |no%),Qbuff%,1,1,|
00004010  39 39 2c 30 29 0d 14 be  51 20 c9 20 31 38 3a 6e  |99,0)...Q . 18:n|
00004020  6f 5f 71 75 65 73 74 25  28 6e 6f 25 29 3d a4 69  |o_quest%(no%)=.i|
00004030  6e 63 5f 62 75 66 66 65  72 28 43 68 61 6e 64 6c  |nc_buffer(Chandl|
00004040  65 25 2c 31 36 2c 6e 6f  5f 71 75 65 73 74 25 28  |e%,16,no_quest%(|
00004050  6e 6f 25 29 2c 51 62 75  66 66 25 2c 31 2c 31 2c  |no%),Qbuff%,1,1,|
00004060  39 39 2c 2d 31 29 0d 14  c8 49 20 c9 20 32 30 3a  |99,-1)...I . 20:|
00004070  74 72 69 65 73 25 28 6e  6f 25 29 3d a4 69 6e 63  |tries%(no%)=.inc|
00004080  5f 62 75 66 66 65 72 28  43 68 61 6e 64 6c 65 25  |_buffer(Chandle%|
00004090  2c 31 39 2c 74 72 69 65  73 25 28 6e 6f 25 29 2c  |,19,tries%(no%),|
000040a0  54 62 75 66 66 25 2c 31  2c 31 2c 33 2c 30 29 0d  |Tbuff%,1,1,3,0).|
000040b0  14 d2 4a 20 c9 20 32 31  3a 74 72 69 65 73 25 28  |..J . 21:tries%(|
000040c0  6e 6f 25 29 3d a4 69 6e  63 5f 62 75 66 66 65 72  |no%)=.inc_buffer|
000040d0  28 43 68 61 6e 64 6c 65  25 2c 31 39 2c 74 72 69  |(Chandle%,19,tri|
000040e0  65 73 25 28 6e 6f 25 29  2c 54 62 75 66 66 25 2c  |es%(no%),Tbuff%,|
000040f0  31 2c 31 2c 33 2c 2d 31  29 0d 14 dc 4f 20 c9 20  |1,1,3,-1)...O . |
00004100  32 33 3a 74 69 6d 65 6c  69 6d 25 28 6e 6f 25 29  |23:timelim%(no%)|
00004110  3d a4 69 6e 63 5f 62 75  66 66 65 72 28 43 68 61  |=.inc_buffer(Cha|
00004120  6e 64 6c 65 25 2c 32 32  2c 74 69 6d 65 6c 69 6d  |ndle%,22,timelim|
00004130  25 28 6e 6f 25 29 2c 54  6d 62 75 66 66 25 2c 31  |%(no%),Tmbuff%,1|
00004140  2c 31 2c 33 30 2c 30 29  0d 14 e6 50 20 c9 20 32  |,1,30,0)...P . 2|
00004150  34 3a 74 69 6d 65 6c 69  6d 25 28 6e 6f 25 29 3d  |4:timelim%(no%)=|
00004160  a4 69 6e 63 5f 62 75 66  66 65 72 28 43 68 61 6e  |.inc_buffer(Chan|
00004170  64 6c 65 25 2c 32 32 2c  74 69 6d 65 6c 69 6d 25  |dle%,22,timelim%|
00004180  28 6e 6f 25 29 2c 54 6d  62 75 66 66 25 2c 31 2c  |(no%),Tmbuff%,1,|
00004190  31 2c 33 30 2c 2d 31 29  0d 14 f0 34 20 c9 20 32  |1,30,-1)...4 . 2|
000041a0  35 3a 4e 6f 74 69 6d 65  72 25 28 6e 6f 25 29 3d  |5:Notimer%(no%)=|
000041b0  2d a4 69 63 6f 6e 5f 73  65 6c 65 63 74 65 64 28  |-.icon_selected(|
000041c0  43 68 61 6e 64 6c 65 25  2c 32 35 29 0d 14 fa 35  |Chandle%,25)...5|
000041d0  20 20 20 20 20 20 20 20  20 f2 73 68 61 64 65 5f  |         .shade_|
000041e0  33 69 63 6f 6e 73 28 43  68 61 6e 64 6c 65 25 2c  |3icons(Chandle%,|
000041f0  32 32 2c 4e 6f 74 69 6d  65 72 25 28 6e 6f 25 29  |22,Notimer%(no%)|
00004200  29 0d 15 04 4b 20 c9 20  33 32 3a 48 6c 65 76 65  |)...K . 32:Hleve|
00004210  6c 25 28 6e 6f 25 29 3d  a4 69 6e 63 5f 62 75 66  |l%(no%)=.inc_buf|
00004220  66 65 72 28 43 68 61 6e  64 6c 65 25 2c 33 31 2c  |fer(Chandle%,31,|
00004230  48 6c 65 76 65 6c 25 28  6e 6f 25 29 2c 48 62 75  |Hlevel%(no%),Hbu|
00004240  66 66 25 2c 31 2c 30 2c  35 2c 30 29 0d 15 0e 23  |ff%,1,0,5,0)...#|
00004250  20 20 20 20 20 20 20 20  20 f2 72 65 73 65 74 5f  |         .reset_|
00004260  68 65 6c 70 5f 6c 65 76  65 6c 28 6e 6f 25 29 0d  |help_level(no%).|
00004270  15 18 30 20 20 20 20 20  20 20 20 20 e7 20 66 6f  |..0         . fo|
00004280  72 63 65 35 25 3d 30 20  8c 20 48 65 6c 70 6c 65  |rce5%=0 . Helple|
00004290  76 25 3d 48 6c 65 76 65  6c 25 28 6e 6f 25 29 0d  |v%=Hlevel%(no%).|
000042a0  15 22 32 20 20 20 20 20  20 20 20 20 e7 20 48 6c  |."2         . Hl|
000042b0  65 76 65 6c 25 28 6e 6f  25 29 3d 30 20 8c 20 f2  |evel%(no%)=0 . .|
000042c0  73 65 74 5f 74 6f 70 5f  69 63 6f 6e 28 32 2c 30  |set_top_icon(2,0|
000042d0  29 0d 15 2c 4c 20 c9 20  33 33 3a 48 6c 65 76 65  |)..,L . 33:Hleve|
000042e0  6c 25 28 6e 6f 25 29 3d  a4 69 6e 63 5f 62 75 66  |l%(no%)=.inc_buf|
000042f0  66 65 72 28 43 68 61 6e  64 6c 65 25 2c 33 31 2c  |fer(Chandle%,31,|
00004300  48 6c 65 76 65 6c 25 28  6e 6f 25 29 2c 48 62 75  |Hlevel%(no%),Hbu|
00004310  66 66 25 2c 31 2c 30 2c  35 2c 2d 31 29 0d 15 36  |ff%,1,0,5,-1)..6|
00004320  23 20 20 20 20 20 20 20  20 20 f2 72 65 73 65 74  |#         .reset|
00004330  5f 68 65 6c 70 5f 6c 65  76 65 6c 28 6e 6f 25 29  |_help_level(no%)|
00004340  0d 15 40 30 20 20 20 20  20 20 20 20 20 e7 20 66  |..@0         . f|
00004350  6f 72 63 65 35 25 3d 30  20 8c 20 48 65 6c 70 6c  |orce5%=0 . Helpl|
00004360  65 76 25 3d 48 6c 65 76  65 6c 25 28 6e 6f 25 29  |ev%=Hlevel%(no%)|
00004370  0d 15 4a 33 20 20 20 20  20 20 20 20 20 e7 20 48  |..J3         . H|
00004380  6c 65 76 65 6c 25 28 6e  6f 25 29 3d 31 20 8c 20  |level%(no%)=1 . |
00004390  f2 73 65 74 5f 74 6f 70  5f 69 63 6f 6e 28 32 2c  |.set_top_icon(2,|
000043a0  2d 31 29 0d 15 54 32 20  c9 20 33 34 3a 66 6f 72  |-1)..T2 . 34:for|
000043b0  63 65 25 28 6e 6f 25 29  3d 2d a4 69 63 6f 6e 5f  |ce%(no%)=-.icon_|
000043c0  73 65 6c 65 63 74 65 64  28 43 68 61 6e 64 6c 65  |selected(Chandle|
000043d0  25 2c 33 34 29 0d 15 5e  4e 20 c9 20 33 38 3a 4d  |%,34)..^N . 38:M|
000043e0  48 6c 65 76 65 6c 25 28  6e 6f 25 29 3d a4 69 6e  |Hlevel%(no%)=.in|
000043f0  63 5f 62 75 66 66 65 72  28 43 68 61 6e 64 6c 65  |c_buffer(Chandle|
00004400  25 2c 33 37 2c 4d 48 6c  65 76 65 6c 25 28 6e 6f  |%,37,MHlevel%(no|
00004410  25 29 2c 4d 48 62 75 66  66 25 2c 31 2c 30 2c 35  |%),MHbuff%,1,0,5|
00004420  2c 30 29 0d 15 68 23 20  20 20 20 20 20 20 20 20  |,0)..h#         |
00004430  f2 72 65 73 65 74 5f 68  65 6c 70 5f 6c 65 76 65  |.reset_help_leve|
00004440  6c 28 6e 6f 25 29 0d 15  72 53 20 c9 20 33 39 3a  |l(no%)..rS . 39:|
00004450  4d 48 6c 65 76 65 6c 25  28 4e 61 6d 65 4e 6f 25  |MHlevel%(NameNo%|
00004460  29 3d a4 69 6e 63 5f 62  75 66 66 65 72 28 43 68  |)=.inc_buffer(Ch|
00004470  61 6e 64 6c 65 25 2c 33  37 2c 4d 48 6c 65 76 65  |andle%,37,MHleve|
00004480  6c 25 28 6e 6f 25 29 2c  4d 48 62 75 66 66 25 2c  |l%(no%),MHbuff%,|
00004490  31 2c 30 2c 35 2c 2d 31  29 0d 15 7c 23 20 20 20  |1,0,5,-1)..|#   |
000044a0  20 20 20 20 20 20 f2 72  65 73 65 74 5f 68 65 6c  |      .reset_hel|
000044b0  70 5f 6c 65 76 65 6c 28  6e 6f 25 29 0d 15 86 3f  |p_level(no%)...?|
000044c0  20 c9 20 32 38 2c 32 39  3a 6d 6f 64 65 25 28 6e  | . 28,29:mode%(n|
000044d0  6f 25 29 3d 69 63 6f 6e  25 2d 32 38 3a f2 61 64  |o%)=icon%-28:.ad|
000044e0  6a 75 73 74 5f 66 6f 72  5f 6d 6f 64 65 28 6e 6f  |just_for_mode(no|
000044f0  25 29 3a 72 65 73 65 74  25 3d 31 0d 15 90 31 20  |%):reset%=1...1 |
00004500  c9 20 34 32 3a 63 61 6c  63 25 28 6e 6f 25 29 3d  |. 42:calc%(no%)=|
00004510  2d a4 69 63 6f 6e 5f 73  65 6c 65 63 74 65 64 28  |-.icon_selected(|
00004520  43 68 61 6e 64 6c 65 25  2c 34 32 29 0d 15 9a 22  |Chandle%,42)..."|
00004530  20 20 20 20 20 20 20 20  20 f2 73 65 74 5f 64 65  |         .set_de|
00004540  6c 65 74 65 5f 69 63 6f  6e 28 6e 6f 25 29 0d 15  |lete_icon(no%)..|
00004550  a4 36 20 20 20 20 20 20  20 20 20 e7 20 63 61 6c  |.6         . cal|
00004560  63 25 28 6e 6f 25 29 3d  30 20 8c 20 f2 63 6c 6f  |c%(no%)=0 . .clo|
00004570  73 65 5f 77 69 6e 64 6f  77 28 43 43 68 61 6e 64  |se_window(CChand|
00004580  6c 65 25 29 0d 15 ae 20  20 c9 20 34 33 3a f4 20  |le%)...  . 43:. |
00004590  50 52 4f 43 73 65 74 5f  70 72 69 6e 74 65 72 28  |PROCset_printer(|
000045a0  6e 6f 25 29 0d 15 b8 28  20 20 20 20 20 20 20 20  |no%)...(        |
000045b0  20 f2 73 65 6c 65 63 74  5f 69 63 6f 6e 28 43 68  | .select_icon(Ch|
000045c0  61 6e 64 6c 65 25 2c 34  33 2c 30 29 0d 15 c2 2a  |andle%,43,0)...*|
000045d0  20 20 20 20 20 20 20 20  20 24 44 65 6d 49 63 25  |         $DemIc%|
000045e0  3d 22 63 61 6e 20 70 72  69 6e 74 20 6f 75 74 20  |="can print out |
000045f0  73 75 6d 73 2e 22 0d 15  cc 36 20 20 20 20 20 20  |sums."...6      |
00004600  20 20 20 44 65 6d 68 61  6e 64 6c 65 25 3d a4 63  |   Demhandle%=.c|
00004610  65 6e 74 72 65 5f 77 69  6e 64 6f 77 28 44 65 6d  |entre_window(Dem|
00004620  68 61 6e 64 6c 65 25 2c  22 59 22 29 0d 15 d6 39  |handle%,"Y")...9|
00004630  20 c9 20 34 34 3a 73 63  6f 72 65 25 28 6e 6f 25  | . 44:score%(no%|
00004640  29 3d 2d a4 73 65 6c 65  63 74 5f 64 69 73 70 6c  |)=-.select_displ|
00004650  61 79 28 34 34 2c 2d 73  63 6f 72 65 25 28 6e 6f  |ay(44,-score%(no|
00004660  25 29 2c 34 29 0d 15 e0  18 20 c9 20 34 36 3a f2  |%),4).... . 46:.|
00004670  73 65 74 5f 6e 65 78 74  28 6e 6f 25 29 0d 15 ea  |set_next(no%)...|
00004680  37 20 c9 20 34 37 3a 73  74 6f 70 25 28 6e 6f 25  |7 . 47:stop%(no%|
00004690  29 3d 2d a4 73 65 6c 65  63 74 5f 64 69 73 70 6c  |)=-.select_displ|
000046a0  61 79 28 34 37 2c 2d 73  74 6f 70 25 28 6e 6f 25  |ay(47,-stop%(no%|
000046b0  29 2c 36 29 0d 15 f4 34  20 c9 20 34 38 3a 63 6f  |),6)...4 . 48:co|
000046c0  6c 6e 61 6d 65 25 28 6e  6f 25 29 3d 2d a4 69 63  |lname%(no%)=-.ic|
000046d0  6f 6e 5f 73 65 6c 65 63  74 65 64 28 43 68 61 6e  |on_selected(Chan|
000046e0  64 6c 65 25 2c 34 38 29  0d 15 fe 1c 20 c9 20 34  |dle%,48).... . 4|
000046f0  35 3a f2 73 65 74 5f 65  73 74 69 6d 61 74 65 28  |5:.set_estimate(|
00004700  6e 6f 25 29 0d 16 08 20  20 c9 20 36 31 3a f2 73  |no%)...  . 61:.s|
00004710  65 74 5f 6b 65 65 70 5f  72 65 73 75 6c 74 73 28  |et_keep_results(|
00004720  6e 6f 25 29 0d 16 12 18  20 c9 20 34 39 3a f2 73  |no%).... . 49:.s|
00004730  65 74 5f 61 75 74 6f 28  6e 6f 25 29 0d 16 1c 35  |et_auto(no%)...5|
00004740  20 c9 20 35 30 3a 61 75  74 6f 68 65 6c 70 25 28  | . 50:autohelp%(|
00004750  6e 6f 25 29 3d 2d a4 69  63 6f 6e 5f 73 65 6c 65  |no%)=-.icon_sele|
00004760  63 74 65 64 28 43 68 61  6e 64 6c 65 25 2c 35 30  |cted(Chandle%,50|
00004770  29 0d 16 26 1f 20 20 20  20 20 20 20 20 20 f2 73  |)..&.         .s|
00004780  65 74 5f 61 75 74 6f 68  65 6c 70 28 6e 6f 25 29  |et_autohelp(no%)|
00004790  0d 16 30 21 20 c9 20 35  31 3a f2 63 6c 6f 73 65  |..0! . 51:.close|
000047a0  5f 77 69 6e 64 6f 77 28  43 68 61 6e 64 6c 65 25  |_window(Chandle%|
000047b0  29 0d 16 3a 3f 20 20 20  20 20 20 20 20 20 73 74  |)..:?         st|
000047c0  61 72 74 4f 77 6e 25 3d  28 73 74 61 72 74 4f 77  |artOwn%=(startOw|
000047d0  6e 25 3d 31 20 80 20 67  61 6d 65 25 3e 30 29 3a  |n%=1 . game%>0):|
000047e0  72 65 73 65 74 25 3d 73  74 61 72 74 4f 77 6e 25  |reset%=startOwn%|
000047f0  0d 16 3b 2d 20 20 20 20  20 20 20 20 20 6e 65 78  |..;-         nex|
00004800  74 6d 65 73 73 25 3d 28  48 65 6c 70 6c 65 76 25  |tmess%=(Helplev%|
00004810  3d 35 20 80 20 67 61 6d  65 25 3e 30 29 0d 16 44  |=5 . game%>0)..D|
00004820  51 20 c9 20 35 34 3a 6e  65 77 6c 65 76 52 25 28  |Q . 54:newlevR%(|
00004830  6e 6f 25 29 3d a4 69 6e  63 5f 62 75 66 66 65 72  |no%)=.inc_buffer|
00004840  28 43 68 61 6e 64 6c 65  25 2c 35 33 2c 6e 65 77  |(Chandle%,53,new|
00004850  6c 65 76 52 25 28 6e 6f  25 29 2c 6c 65 76 52 62  |levR%(no%),levRb|
00004860  75 66 66 25 2c 31 2c 31  2c 31 30 2c 30 29 0d 16  |uff%,1,1,10,0)..|
00004870  4e 52 20 c9 20 35 35 3a  6e 65 77 6c 65 76 52 25  |NR . 55:newlevR%|
00004880  28 6e 6f 25 29 3d a4 69  6e 63 5f 62 75 66 66 65  |(no%)=.inc_buffe|
00004890  72 28 43 68 61 6e 64 6c  65 25 2c 35 33 2c 6e 65  |r(Chandle%,53,ne|
000048a0  77 6c 65 76 52 25 28 6e  6f 25 29 2c 6c 65 76 52  |wlevR%(no%),levR|
000048b0  62 75 66 66 25 2c 31 2c  31 2c 31 30 2c 2d 31 29  |buff%,1,1,10,-1)|
000048c0  0d 16 58 53 20 c9 20 35  38 3a 6e 65 77 6c 65 76  |..XS . 58:newlev|
000048d0  57 25 28 6e 6f 25 29 3d  2d a4 69 6e 63 5f 62 75  |W%(no%)=-.inc_bu|
000048e0  66 66 65 72 28 43 68 61  6e 64 6c 65 25 2c 35 37  |ffer(Chandle%,57|
000048f0  2c 2d 6e 65 77 6c 65 76  57 25 28 6e 6f 25 29 2c  |,-newlevW%(no%),|
00004900  6c 65 76 57 62 75 66 66  25 2c 31 2c 31 2c 31 30  |levWbuff%,1,1,10|
00004910  2c 30 29 0d 16 62 54 20  c9 20 35 39 3a 6e 65 77  |,0)..bT . 59:new|
00004920  6c 65 76 57 25 28 6e 6f  25 29 3d 2d a4 69 6e 63  |levW%(no%)=-.inc|
00004930  5f 62 75 66 66 65 72 28  43 68 61 6e 64 6c 65 25  |_buffer(Chandle%|
00004940  2c 35 37 2c 2d 6e 65 77  6c 65 76 57 25 28 6e 6f  |,57,-newlevW%(no|
00004950  25 29 2c 6c 65 76 57 62  75 66 66 25 2c 31 2c 31  |%),levWbuff%,1,1|
00004960  2c 31 30 2c 2d 31 29 0d  16 6c 27 20 c9 20 36 32  |,10,-1)..l' . 62|
00004970  3a f2 73 65 74 5f 64 65  63 69 6d 61 6c 3a 72 65  |:.set_decimal:re|
00004980  73 65 74 25 3d 28 4f 77  69 6e 25 3d 30 29 0d 16  |set%=(Owin%=0)..|
00004990  76 33 20 c9 20 36 33 3a  6f 77 6e 73 75 6d 25 28  |v3 . 63:ownsum%(|
000049a0  6e 6f 25 29 3d 2d a4 69  63 6f 6e 5f 73 65 6c 65  |no%)=-.icon_sele|
000049b0  63 74 65 64 28 43 68 61  6e 64 6c 65 25 2c 36 33  |cted(Chandle%,63|
000049c0  29 0d 16 80 44 20 20 20  20 20 20 20 20 20 f2 73  |)...D         .s|
000049d0  65 74 5f 6f 77 6e 5f 73  75 6d 28 6e 6f 25 29 3a  |et_own_sum(no%):|
000049e0  73 74 61 72 74 4f 77 6e  25 3d 2d 28 6f 77 6e 73  |startOwn%=-(owns|
000049f0  75 6d 25 28 6e 6f 25 29  3d 31 20 80 20 67 61 6d  |um%(no%)=1 . gam|
00004a00  65 25 3e 30 29 0d 16 8a  3f 20 20 20 20 20 20 20  |e%>0)...?       |
00004a10  20 20 e7 20 6f 77 6e 73  75 6d 25 28 6e 6f 25 29  |  . ownsum%(no%)|
00004a20  3d 30 20 8c 20 f2 63 6c  6f 73 65 5f 77 69 6e 64  |=0 . .close_wind|
00004a30  6f 77 28 4f 68 61 6e 64  6c 65 25 29 3a 4f 77 69  |ow(Ohandle%):Owi|
00004a40  6e 25 3d 30 0d 16 94 37  20 c9 20 36 34 3a e3 20  |n%=0...7 . 64:. |
00004a50  6e 25 3d 31 20 b8 20 4e  63 6f 75 6e 74 25 3a f2  |n%=1 . Ncount%:.|
00004a60  73 65 74 5f 6e 65 77 5f  6e 61 6d 65 5f 6c 65 76  |set_new_name_lev|
00004a70  65 6c 73 28 6e 25 2c 30  29 3a ed 0d 16 9e 24 20  |els(n%,0):....$ |
00004a80  20 20 20 20 20 20 20 20  f2 63 6c 6f 73 65 5f 77  |        .close_w|
00004a90  69 6e 64 6f 77 28 43 68  61 6e 64 6c 65 25 29 0d  |indow(Chandle%).|
00004aa0  16 a8 25 20 c9 20 36 35  3a f2 73 65 74 5f 6e 65  |..% . 65:.set_ne|
00004ab0  77 5f 6e 61 6d 65 5f 6c  65 76 65 6c 73 28 6e 6f  |w_name_levels(no|
00004ac0  25 2c 30 29 0d 16 b2 22  20 20 20 20 20 20 20 20  |%,0)..."        |
00004ad0  20 f2 73 65 74 5f 70 72  65 66 65 72 65 6e 63 65  | .set_preference|
00004ae0  73 28 6e 6f 25 29 0d 16  bc 21 20 c9 20 36 36 3a  |s(no%)...! . 66:|
00004af0  f2 63 6c 6f 73 65 5f 77  69 6e 64 6f 77 28 43 68  |.close_window(Ch|
00004b00  61 6e 64 6c 65 25 29 0d  16 c6 25 20 c9 20 36 37  |andle%)...% . 67|
00004b10  3a f2 73 65 6c 65 63 74  5f 69 63 6f 6e 28 43 68  |:.select_icon(Ch|
00004b20  61 6e 64 6c 65 25 2c 36  37 2c 30 29 0d 16 d0 27  |andle%,67,0)...'|
00004b30  20 20 20 20 20 20 20 20  20 24 44 65 6d 49 63 25  |         $DemIc%|
00004b40  3d 22 69 6e 63 6c 75 64  65 73 20 73 70 65 65 63  |="includes speec|
00004b50  68 2e 22 0d 16 da 36 20  20 20 20 20 20 20 20 20  |h."...6         |
00004b60  44 65 6d 68 61 6e 64 6c  65 25 3d a4 63 65 6e 74  |Demhandle%=.cent|
00004b70  72 65 5f 77 69 6e 64 6f  77 28 44 65 6d 68 61 6e  |re_window(Demhan|
00004b80  64 6c 65 25 2c 22 59 22  29 0d 16 e4 2f 20 c9 20  |dle%,"Y").../ . |
00004b90  36 38 3a e7 20 61 6c 74  65 72 25 20 8c 20 f2 73  |68:. alter% . .s|
00004ba0  65 74 5f 6e 65 77 5f 6e  61 6d 65 5f 6c 65 76 65  |et_new_name_leve|
00004bb0  6c 73 28 30 2c 34 33 29  0d 16 ee 24 20 20 20 20  |ls(0,43)...$    |
00004bc0  20 20 20 20 20 f2 63 6c  6f 73 65 5f 77 69 6e 64  |     .close_wind|
00004bd0  6f 77 28 43 68 61 6e 64  6c 65 25 29 0d 16 f8 05  |ow(Chandle%)....|
00004be0  cb 0d 17 02 35 e7 20 67  61 6d 65 25 3e 30 20 80  |....5. game%>0 .|
00004bf0  20 69 63 6f 6e 25 3c 3e  35 31 20 80 20 69 63 6f  | icon%<>51 . ico|
00004c00  6e 25 3c 36 33 20 84 20  73 74 61 72 74 4f 77 6e  |n%<63 . startOwn|
00004c10  25 3d 2d 31 20 8c 0d 17  0c 0f 20 e7 20 72 65 73  |%=-1 ..... . res|
00004c20  65 74 25 20 8c 0d 17 16  3a 20 20 e7 20 6f 77 6e  |et% ....:  . own|
00004c30  73 75 6d 25 28 4e 61 6d  65 4e 6f 25 29 3d 30 20  |sum%(NameNo%)=0 |
00004c40  8c 20 f2 73 65 74 5f 73  75 6d 20 8b 20 f2 73 65  |. .set_sum . .se|
00004c50  74 5f 75 70 5f 73 75 6d  5f 77 69 6e 64 6f 77 0d  |t_up_sum_window.|
00004c60  17 20 06 20 cd 0d 17 2a  04 0d 17 34 2d 20 e7 20  |. . ...*...4- . |
00004c70  28 69 63 6f 6e 25 3d 33  32 20 84 20 69 63 6f 6e  |(icon%=32 . icon|
00004c80  25 3d 33 33 29 20 80 20  6d 6f 64 65 25 28 6e 6f  |%=33) . mode%(no|
00004c90  25 29 3d 31 20 8c 0d 17  3e 21 20 20 f2 63 68 61  |%)=1 ...>!  .cha|
00004ca0  6e 67 65 5f 68 65 6c 70  5f 64 69 73 70 6c 61 79  |nge_help_display|
00004cb0  28 68 65 6c 70 25 29 0d  17 48 21 20 20 e7 20 67  |(help%)..H!  . g|
00004cc0  61 6d 65 25 3e 30 20 8c  20 f2 72 65 6d 6f 76 65  |ame%>0 . .remove|
00004cd0  5f 6d 65 73 73 61 67 65  0d 17 52 06 20 cd 0d 17  |_message..R. ...|
00004ce0  5c 04 0d 17 66 5d 20 e7  20 28 69 63 6f 6e 25 3d  |\...f] . (icon%=|
00004cf0  34 35 20 84 20 69 63 6f  6e 25 3d 34 38 29 20 80  |45 . icon%=48) .|
00004d00  20 4f 77 69 6e 25 3d 30  20 8c 20 c8 99 22 57 69  | Owin%=0 . .."Wi|
00004d10  6d 70 5f 46 6f 72 63 65  52 65 64 72 61 77 22 2c  |mp_ForceRedraw",|
00004d20  68 61 6e 64 6c 65 25 28  67 61 6d 65 25 29 2c 30  |handle%(game%),0|
00004d30  2c 2d 38 34 34 2c 31 32  38 30 2c 2d 31 35 30 0d  |,-844,1280,-150.|
00004d40  17 70 05 cd 0d 17 7a 05  e1 0d 17 84 04 0d 17 8e  |.p....z.........|
00004d50  04 0d 17 98 1b dd 20 f2  73 65 74 5f 64 65 6c 65  |...... .set_dele|
00004d60  74 65 5f 69 63 6f 6e 28  6e 6f 25 29 0d 17 a2 08  |te_icon(no%)....|
00004d70  ea 20 6e 25 0d 17 ac 3b  e3 20 6e 25 3d 31 20 b8  |. n%...;. n%=1 .|
00004d80  20 32 3a f2 64 65 6c 65  74 65 5f 69 63 6f 6e 28  | 2:.delete_icon(|
00004d90  68 61 6e 64 6c 65 25 28  6e 25 29 2c 33 2c 28 63  |handle%(n%),3,(c|
00004da0  61 6c 63 25 28 6e 6f 25  29 3d 30 29 29 3a ed 0d  |alc%(no%)=0)):..|
00004db0  17 b6 40 e7 20 67 61 6d  65 25 20 8c 20 c8 99 22  |..@. game% . .."|
00004dc0  57 69 6d 70 5f 46 6f 72  63 65 52 65 64 72 61 77  |Wimp_ForceRedraw|
00004dd0  22 2c 68 61 6e 64 6c 65  25 28 67 61 6d 65 25 29  |",handle%(game%)|
00004de0  2c 34 35 30 2c 2d 31 35  30 2c 36 30 30 2c 30 0d  |,450,-150,600,0.|
00004df0  17 c0 05 e1 0d 17 ca 04  0d 17 d4 04 0d 17 de 14  |................|
00004e00  dd 20 f2 73 65 74 5f 6e  65 78 74 28 6e 6f 25 29  |. .set_next(no%)|
00004e10  0d 17 e8 2b 6e 65 78 74  25 28 6e 6f 25 29 3d 2d  |...+next%(no%)=-|
00004e20  a4 69 63 6f 6e 5f 73 65  6c 65 63 74 65 64 28 43  |.icon_selected(C|
00004e30  68 61 6e 64 6c 65 25 2c  34 36 29 0d 17 f2 2c f2  |handle%,46)...,.|
00004e40  73 65 74 5f 74 6f 70 5f  69 63 6f 6e 28 35 2c 28  |set_top_icon(5,(|
00004e50  6e 65 78 74 25 28 6e 6f  25 29 3d 31 20 80 20 74  |next%(no%)=1 . t|
00004e60  72 79 25 3e 30 29 29 0d  17 fc 21 e7 20 6d 61 72  |ry%>0))...!. mar|
00004e70  6b 65 64 25 3d 2d 31 20  80 20 6e 65 78 74 25 28  |ked%=-1 . next%(|
00004e80  6e 6f 25 29 3d 30 20 8c  0d 18 06 0f 20 63 6f 72  |no%)=0 ..... cor|
00004e90  72 65 63 74 25 3d 30 0d  18 10 33 20 e7 20 71 75  |rect%=0...3 . qu|
00004ea0  65 73 74 25 3c 6e 6f 5f  71 75 65 73 74 25 28 6e  |est%<no_quest%(n|
00004eb0  6f 25 29 20 8c 20 f2 73  65 74 5f 73 75 6d 20 8b  |o%) . .set_sum .|
00004ec0  20 f2 67 61 6d 65 5f 65  6e 64 0d 18 1a 05 cd 0d  | .game_end......|
00004ed0  18 24 05 e1 0d 18 2e 04  0d 18 38 04 0d 18 42 1c  |.$........8...B.|
00004ee0  dd 20 f2 73 65 74 5f 6b  65 65 70 5f 72 65 73 75  |. .set_keep_resu|
00004ef0  6c 74 73 28 6e 6f 25 29  0d 18 4c 2c 73 61 76 65  |lts(no%)..L,save|
00004f00  52 25 28 6e 6f 25 29 3d  2d a4 69 63 6f 6e 5f 73  |R%(no%)=-.icon_s|
00004f10  65 6c 65 63 74 65 64 28  43 68 61 6e 64 6c 65 25  |elected(Chandle%|
00004f20  2c 36 31 29 0d 18 56 1a  e7 20 73 76 52 25 3d 73  |,61)..V.. svR%=s|
00004f30  61 76 65 52 25 28 6e 6f  25 29 20 8c 20 e1 0d 18  |aveR%(no%) . ...|
00004f40  60 2b e7 20 73 61 76 65  52 25 28 6e 6f 25 29 3d  |`+. saveR%(no%)=|
00004f50  30 20 80 20 6e 65 77 52  25 3d 30 20 8c 20 f2 65  |0 . newR%=0 . .e|
00004f60  6e 64 5f 6c 65 76 65 6c  73 0d 18 6a 15 6e 65 77  |nd_levels..j.new|
00004f70  52 25 3d 73 61 76 65 52  25 28 6e 6f 25 29 0d 18  |R%=saveR%(no%)..|
00004f80  74 05 e1 0d 18 7e 04 0d  18 88 04 0d 18 92 18 dd  |t....~..........|
00004f90  20 f2 73 65 74 5f 65 73  74 69 6d 61 74 65 28 6e  | .set_estimate(n|
00004fa0  6f 25 29 0d 18 9c 2f 65  73 74 69 6d 61 74 65 25  |o%).../estimate%|
00004fb0  28 6e 6f 25 29 3d 2d a4  69 63 6f 6e 5f 73 65 6c  |(no%)=-.icon_sel|
00004fc0  65 63 74 65 64 28 43 68  61 6e 64 6c 65 25 2c 34  |ected(Chandle%,4|
00004fd0  35 29 0d 18 a6 42 e7 20  65 73 74 69 6d 61 74 65  |5)...B. estimate|
00004fe0  25 28 6e 6f 25 29 3d 30  20 80 20 53 43 66 6f 72  |%(no%)=0 . SCfor|
00004ff0  6d 61 74 25 3d 31 20 8c  20 73 75 6d 25 3d 30 3a  |mat%=1 . sum%=0:|
00005000  45 73 74 76 61 6c 25 3d  30 3a 64 69 67 33 24 28  |Estval%=0:dig3$(|
00005010  29 3d 22 22 0d 18 b0 44  e7 20 73 75 6d 25 3d 30  |)=""...D. sum%=0|
00005020  20 80 20 66 6f 72 63 65  35 25 3d 30 20 8c 20 53  | . force5%=0 . S|
00005030  43 66 6f 72 6d 61 74 25  3d 32 2d 65 73 74 69 6d  |Cformat%=2-estim|
00005040  61 74 65 25 28 6e 6f 25  29 3a 6d 65 73 73 61 67  |ate%(no%):messag|
00005050  65 24 28 31 29 3d 22 22  0d 18 ba 3b e7 20 67 61  |e$(1)=""...;. ga|
00005060  6d 65 25 3e 30 20 8c 20  f2 73 68 61 64 65 5f 69  |me%>0 . .shade_i|
00005070  63 6f 6e 28 68 61 6e 64  6c 65 25 28 67 61 6d 65  |con(handle%(game|
00005080  25 29 2c 32 2c 28 53 43  66 6f 72 6d 61 74 25 3d  |%),2,(SCformat%=|
00005090  31 29 29 0d 18 c4 05 e1  0d 18 ce 04 0d 18 d8 04  |1)).............|
000050a0  0d 18 e2 12 dd 20 f2 73  65 74 5f 64 65 63 69 6d  |..... .set_decim|
000050b0  61 6c 0d 18 ec 2e 64 65  63 69 6d 61 6c 25 28 6e  |al....decimal%(n|
000050c0  6f 25 29 3d 2d a4 69 63  6f 6e 5f 73 65 6c 65 63  |o%)=-.icon_selec|
000050d0  74 65 64 28 43 68 61 6e  64 6c 65 25 2c 36 32 29  |ted(Chandle%,62)|
000050e0  0d 18 f6 2a e7 20 64 65  63 69 6d 61 6c 25 28 6e  |...*. decimal%(n|
000050f0  6f 25 29 20 8c 20 f2 73  65 74 5f 64 65 63 5f 6c  |o%) . .set_dec_l|
00005100  65 76 65 6c 73 28 6e 6f  25 29 0d 19 00 1e e7 20  |evels(no%)..... |
00005110  a4 77 69 6e 64 6f 77 5f  6f 70 65 6e 28 4f 68 61  |.window_open(Oha|
00005120  6e 64 6c 65 25 29 20 8c  0d 19 0a 48 20 24 4f 73  |ndle%) ....H $Os|
00005130  75 6d 31 62 75 66 66 25  3d a4 73 65 74 5f 64 65  |um1buff%=.set_de|
00005140  63 28 24 4f 73 75 6d 31  62 75 66 66 25 29 3a 24  |c($Osum1buff%):$|
00005150  4f 73 75 6d 32 62 75 66  66 25 3d a4 73 65 74 5f  |Osum2buff%=.set_|
00005160  64 65 63 28 24 4f 73 75  6d 32 62 75 66 66 25 29  |dec($Osum2buff%)|
00005170  0d 19 14 34 20 f2 72 65  73 65 74 5f 69 63 6f 6e  |...4 .reset_icon|
00005180  28 4f 68 61 6e 64 6c 65  25 2c 33 29 3a f2 72 65  |(Ohandle%,3):.re|
00005190  73 65 74 5f 69 63 6f 6e  28 4f 68 61 6e 64 6c 65  |set_icon(Ohandle|
000051a0  25 2c 34 29 0d 19 1e 05  cd 0d 19 28 05 e1 0d 19  |%,4).......(....|
000051b0  32 04 0d 19 3c 04 0d 19  46 17 dd 20 f2 73 65 74  |2...<...F.. .set|
000051c0  5f 70 72 69 6e 74 65 72  28 6e 6f 25 29 0d 19 50  |_printer(no%)..P|
000051d0  37 70 72 69 6e 74 65 72  25 28 6e 6f 25 29 3d 2d  |7printer%(no%)=-|
000051e0  a4 73 65 6c 65 63 74 5f  64 69 73 70 6c 61 79 28  |.select_display(|
000051f0  34 33 2c 2d 70 72 69 6e  74 65 72 25 28 6e 6f 25  |43,-printer%(no%|
00005200  29 2c 37 29 0d 19 5a 48  f2 73 68 61 64 65 5f 69  |),7)..ZH.shade_i|
00005210  63 6f 6e 28 53 43 68 61  6e 64 6c 65 25 2c 31 31  |con(SChandle%,11|
00005220  2c 28 70 72 69 6e 74 65  72 25 28 6e 6f 25 29 3d  |,(printer%(no%)=|
00005230  30 20 84 20 64 72 69 76  65 72 25 3d 30 20 84 20  |0 . driver%=0 . |
00005240  65 6e 70 72 69 6e 74 25  3d 30 29 29 0d 19 64 41  |enprint%=0))..dA|
00005250  f2 73 65 74 5f 74 6f 70  5f 69 63 6f 6e 28 37 2c  |.set_top_icon(7,|
00005260  28 70 72 69 6e 74 65 72  25 28 6e 6f 25 29 3d 31  |(printer%(no%)=1|
00005270  20 80 20 64 72 69 76 65  72 25 3d 2d 31 20 80 20  | . driver%=-1 . |
00005280  65 6e 70 72 69 6e 74 25  3d 2d 31 29 29 0d 19 6e  |enprint%=-1))..n|
00005290  05 e1 0d 19 78 04 0d 19  82 04 0d 19 8c 2a dd 20  |....x........*. |
000052a0  f2 73 68 61 64 65 5f 33  69 63 6f 6e 73 28 77 68  |.shade_3icons(wh|
000052b0  61 6e 64 6c 65 25 2c 69  68 61 6e 64 6c 65 25 2c  |andle%,ihandle%,|
000052c0  73 68 25 29 0d 19 96 08  ea 20 6e 25 0d 19 a0 1e  |sh%)..... n%....|
000052d0  e3 20 6e 25 3d 69 68 61  6e 64 6c 65 25 20 b8 20  |. n%=ihandle% . |
000052e0  69 68 61 6e 64 6c 65 25  2b 32 0d 19 aa 21 20 f2  |ihandle%+2...! .|
000052f0  73 68 61 64 65 5f 69 63  6f 6e 28 77 68 61 6e 64  |shade_icon(whand|
00005300  6c 65 25 2c 6e 25 2c 73  68 25 29 0d 19 b4 05 ed  |le%,n%,sh%).....|
00005310  0d 19 be 05 e1 0d 19 c8  04 0d 19 d2 04 0d 19 dc  |................|
00005320  14 dd 20 f2 73 65 74 5f  61 75 74 6f 28 6e 6f 25  |.. .set_auto(no%|
00005330  29 0d 19 e6 08 ea 20 6e  25 0d 19 f0 2b 61 75 74  |)..... n%...+aut|
00005340  6f 25 28 6e 6f 25 29 3d  2d a4 69 63 6f 6e 5f 73  |o%(no%)=-.icon_s|
00005350  65 6c 65 63 74 65 64 28  43 68 61 6e 64 6c 65 25  |elected(Chandle%|
00005360  2c 34 39 29 0d 19 fa 2d  f2 73 68 61 64 65 5f 33  |,49)...-.shade_3|
00005370  69 63 6f 6e 73 28 43 68  61 6e 64 6c 65 25 2c 35  |icons(Chandle%,5|
00005380  33 2c 28 61 75 74 6f 25  28 6e 6f 25 29 3d 30 29  |3,(auto%(no%)=0)|
00005390  29 0d 1a 04 2d f2 73 68  61 64 65 5f 33 69 63 6f  |)...-.shade_3ico|
000053a0  6e 73 28 43 68 61 6e 64  6c 65 25 2c 35 37 2c 28  |ns(Chandle%,57,(|
000053b0  61 75 74 6f 25 28 6e 6f  25 29 3d 30 29 29 0d 1a  |auto%(no%)=0))..|
000053c0  0e 05 e1 0d 1a 18 04 0d  1a 22 04 0d 1a 2c 18 dd  |........."...,..|
000053d0  20 f2 73 65 74 5f 61 75  74 6f 68 65 6c 70 28 6e  | .set_autohelp(n|
000053e0  6f 25 29 0d 1a 36 08 ea  20 6e 25 0d 1a 40 40 f2  |o%)..6.. n%..@@.|
000053f0  73 68 61 64 65 5f 33 69  63 6f 6e 73 28 43 68 61  |shade_3icons(Cha|
00005400  6e 64 6c 65 25 2c 33 37  2c 28 6d 6f 64 65 25 28  |ndle%,37,(mode%(|
00005410  6e 6f 25 29 3d 30 20 84  20 61 75 74 6f 68 65 6c  |no%)=0 . autohel|
00005420  70 25 28 6e 6f 25 29 3d  30 29 29 0d 1a 4a 1a f2  |p%(no%)=0))..J..|
00005430  72 65 73 65 74 5f 68 65  6c 70 5f 6c 65 76 65 6c  |reset_help_level|
00005440  28 6e 6f 25 29 0d 1a 54  05 e1 0d 1a 5e 04 0d 1a  |(no%)..T....^...|
00005450  68 04 0d 1a 72 1c dd 20  f2 72 65 73 65 74 5f 68  |h...r.. .reset_h|
00005460  65 6c 70 5f 6c 65 76 65  6c 28 6e 6f 25 29 0d 1a  |elp_level(no%)..|
00005470  7c 16 e7 20 61 75 74 6f  68 65 6c 70 25 28 6e 6f  ||.. autohelp%(no|
00005480  25 29 20 8c 0d 1a 86 23  20 e7 20 48 6c 65 76 65  |%) ....# . Hleve|
00005490  6c 25 28 6e 6f 25 29 3c  4d 48 6c 65 76 65 6c 25  |l%(no%)<MHlevel%|
000054a0  28 6e 6f 25 29 20 8c 0d  1a 90 37 20 20 48 6c 65  |(no%) ....7  Hle|
000054b0  76 65 6c 25 28 6e 6f 25  29 3d 4d 48 6c 65 76 65  |vel%(no%)=MHleve|
000054c0  6c 25 28 6e 6f 25 29 3a  24 48 62 75 66 66 25 3d  |l%(no%):$Hbuff%=|
000054d0  c3 4d 48 6c 65 76 65 6c  25 28 6e 6f 25 29 0d 1a  |.MHlevel%(no%)..|
000054e0  9a 1b 20 20 48 65 6c 70  6c 65 76 25 3d 48 6c 65  |..  Helplev%=Hle|
000054f0  76 65 6c 25 28 6e 6f 25  29 0d 1a a4 1e 20 20 f2  |vel%(no%)....  .|
00005500  72 65 73 65 74 5f 69 63  6f 6e 28 43 68 61 6e 64  |reset_icon(Chand|
00005510  6c 65 25 2c 33 31 29 0d  1a ae 06 20 cd 0d 1a b8  |le%,31).... ....|
00005520  05 cc 0d 1a c2 36 20 4d  48 6c 65 76 65 6c 25 28  |.....6 MHlevel%(|
00005530  6e 6f 25 29 3d 48 6c 65  76 65 6c 25 28 6e 6f 25  |no%)=Hlevel%(no%|
00005540  29 3a 24 4d 48 62 75 66  66 25 3d c3 48 6c 65 76  |):$MHbuff%=.Hlev|
00005550  65 6c 25 28 6e 6f 25 29  0d 1a cc 05 cd 0d 1a d6  |el%(no%)........|
00005560  05 e1 0d 1a e0 04 0d 1a  ea 04 0d 1a f4 2a dd 20  |.............*. |
00005570  a4 73 65 6c 65 63 74 5f  64 69 73 70 6c 61 79 28  |.select_display(|
00005580  69 63 6f 6e 25 2c 76 61  72 25 2c 74 6f 70 69 63  |icon%,var%,topic|
00005590  6f 6e 25 29 0d 1a fe 27  76 61 72 25 3d a4 69 63  |on%)...'var%=.ic|
000055a0  6f 6e 5f 73 65 6c 65 63  74 65 64 28 43 68 61 6e  |on_selected(Chan|
000055b0  64 6c 65 25 2c 69 63 6f  6e 25 29 0d 1b 08 20 f2  |dle%,icon%)... .|
000055c0  73 65 74 5f 74 6f 70 5f  69 63 6f 6e 28 74 6f 70  |set_top_icon(top|
000055d0  69 63 6f 6e 25 2c 76 61  72 25 29 0d 1b 12 09 3d  |icon%,var%)....=|
000055e0  76 61 72 25 0d 1b 1c 04  0d 1b 26 04 0d 1b 30 22  |var%......&...0"|
000055f0  dd 20 f2 73 65 6c 65 63  74 5f 6f 70 65 72 61 74  |. .select_operat|
00005600  6f 72 73 28 69 63 6f 6e  25 2c 6e 6f 25 29 0d 1b  |ors(icon%,no%)..|
00005610  3a 24 ea 20 50 72 65 76  4f 70 25 3a 50 72 65 76  |:$. PrevOp%:Prev|
00005620  4f 70 25 3d 6f 70 65 72  61 74 6f 72 25 28 6e 6f  |Op%=operator%(no|
00005630  25 29 0d 1b 44 4b 6f 70  65 72 61 74 6f 72 25 28  |%)..DKoperator%(|
00005640  6e 6f 25 29 3d 2d a4 69  63 6f 6e 5f 73 65 6c 65  |no%)=-.icon_sele|
00005650  63 74 65 64 28 43 68 61  6e 64 6c 65 25 2c 32 29  |cted(Chandle%,2)|
00005660  2d 32 2a a4 69 63 6f 6e  5f 73 65 6c 65 63 74 65  |-2*.icon_selecte|
00005670  64 28 43 68 61 6e 64 6c  65 25 2c 33 29 0d 1b 4e  |d(Chandle%,3)..N|
00005680  33 e7 20 6f 70 65 72 61  74 6f 72 25 28 6e 6f 25  |3. operator%(no%|
00005690  29 3d 30 20 8c 20 f2 73  65 6c 65 63 74 5f 69 63  |)=0 . .select_ic|
000056a0  6f 6e 28 43 68 61 6e 64  6c 65 25 2c 32 2c 31 29  |on(Chandle%,2,1)|
000056b0  0d 1b 58 23 42 6f 74 68  4f 70 25 28 6e 6f 25 29  |..X#BothOp%(no%)|
000056c0  3d 28 6f 70 65 72 61 74  6f 72 25 28 6e 6f 25 29  |=(operator%(no%)|
000056d0  3d 33 29 0d 1b 62 04 0d  1b 6c 2a e7 20 42 6f 74  |=3)..b...l*. Bot|
000056e0  68 4f 70 25 28 6e 6f 25  29 3d 2d 31 20 84 20 6f  |hOp%(no%)=-1 . o|
000056f0  70 65 72 61 74 6f 72 25  28 6e 6f 25 29 3d 30 20  |perator%(no%)=0 |
00005700  8c 0d 1b 76 41 20 e7 20  6f 77 6e 73 75 6d 25 28  |...vA . ownsum%(|
00005710  6e 6f 25 29 3d 30 20 8c  20 6f 70 65 72 61 74 6f  |no%)=0 . operato|
00005720  72 25 28 6e 6f 25 29 3d  31 20 8b 20 6f 70 65 72  |r%(no%)=1 . oper|
00005730  61 74 6f 72 25 28 6e 6f  25 29 3d 50 72 65 76 4f  |ator%(no%)=PrevO|
00005740  70 25 0d 1b 80 05 cd 0d  1b 8a 4a e7 20 6f 77 6e  |p%........J. own|
00005750  73 75 6d 25 28 6e 6f 25  29 3d 30 20 8c 20 f2 73  |sum%(no%)=0 . .s|
00005760  68 61 64 65 5f 6f 70 5f  6c 65 76 65 6c 73 28 6e  |hade_op_levels(n|
00005770  6f 25 29 20 8b 20 f2 73  65 74 5f 6f 77 6e 5f 73  |o%) . .set_own_s|
00005780  75 6d 5f 6f 70 65 72 61  74 6f 72 73 28 6e 6f 25  |um_operators(no%|
00005790  29 0d 1b 94 18 f2 73 65  74 5f 63 61 72 72 79 5f  |).....set_carry_|
000057a0  76 61 72 69 61 62 6c 65  59 0d 1b 9e 04 0d 1b a8  |variableY.......|
000057b0  1e e7 20 a4 77 69 6e 64  6f 77 5f 6f 70 65 6e 28  |.. .window_open(|
000057c0  4f 68 61 6e 64 6c 65 25  29 20 8c 0d 1b b2 2d 20  |Ohandle%) ....- |
000057d0  e7 20 6f 70 65 72 61 74  6f 72 25 28 6e 6f 25 29  |. operator%(no%)|
000057e0  3d 31 20 8c 20 73 67 6e  24 3d 22 2b 22 20 8b 20  |=1 . sgn$="+" . |
000057f0  73 67 6e 24 3d 22 2d 22  0d 1b bc 2c 20 24 4f 73  |sgn$="-"..., $Os|
00005800  67 6e 62 75 66 66 25 3d  73 67 6e 24 3a f2 72 65  |gnbuff%=sgn$:.re|
00005810  73 65 74 5f 69 63 6f 6e  28 4f 68 61 6e 64 6c 65  |set_icon(Ohandle|
00005820  25 2c 35 29 0d 1b c6 05  cd 0d 1b d0 04 0d 1b da  |%,5)............|
00005830  0f e7 20 67 61 6d 65 25  3e 30 20 8c 0d 1b e4 22  |.. game%>0 ...."|
00005840  20 f2 63 6c 6f 73 65 5f  77 69 6e 64 6f 77 28 68  | .close_window(h|
00005850  61 6e 64 6c 65 25 28 67  61 6d 65 25 29 29 0d 1b  |andle%(game%))..|
00005860  ee 25 20 e7 20 67 61 6d  65 25 3e 30 20 8c 20 67  |.% . game%>0 . g|
00005870  61 6d 65 25 3d 6f 70 65  72 61 74 6f 72 25 28 6e  |ame%=operator%(n|
00005880  6f 25 29 0d 1b f8 46 20  e7 20 4f 77 69 6e 25 3d  |o%)...F . Owin%=|
00005890  30 20 84 20 50 72 65 76  4f 70 25 3d 6f 70 65 72  |0 . PrevOp%=oper|
000058a0  61 74 6f 72 25 28 6e 6f  25 29 20 8c 20 f2 6f 70  |ator%(no%) . .op|
000058b0  65 6e 5f 77 69 6e 64 6f  77 28 68 61 6e 64 6c 65  |en_window(handle|
000058c0  25 28 67 61 6d 65 25 29  29 0d 1c 02 36 20 e7 20  |%(game%))...6 . |
000058d0  a4 77 69 6e 64 6f 77 5f  6f 70 65 6e 28 4f 68 61  |.window_open(Oha|
000058e0  6e 64 6c 65 25 29 20 8c  20 f2 6f 70 65 6e 5f 77  |ndle%) . .open_w|
000058f0  69 6e 64 6f 77 28 4f 68  61 6e 64 6c 65 25 29 0d  |indow(Ohandle%).|
00005900  1c 0c 36 20 e7 20 a4 77  69 6e 64 6f 77 5f 6f 70  |..6 . .window_op|
00005910  65 6e 28 43 68 61 6e 64  6c 65 25 29 20 8c 20 f2  |en(Chandle%) . .|
00005920  6f 70 65 6e 5f 77 69 6e  64 6f 77 28 43 68 61 6e  |open_window(Chan|
00005930  64 6c 65 25 29 0d 1c 16  05 cd 0d 1c 20 05 e1 0d  |dle%)....... ...|
00005940  1c 2a 04 0d 1c 34 04 0d  1c 3e 21 dd 20 f2 73 65  |.*...4...>!. .se|
00005950  74 5f 6f 77 6e 5f 73 75  6d 5f 6f 70 65 72 61 74  |t_own_sum_operat|
00005960  6f 72 73 28 6e 6f 25 29  0d 1c 48 2c f2 73 68 61  |ors(no%)..H,.sha|
00005970  64 65 5f 69 63 6f 6e 28  4f 68 61 6e 64 6c 65 25  |de_icon(Ohandle%|
00005980  2c 37 2b 6f 70 65 72 61  74 6f 72 25 28 6e 6f 25  |,7+operator%(no%|
00005990  29 2c 30 29 0d 1c 52 3c  f2 73 68 61 64 65 5f 69  |),0)..R<.shade_i|
000059a0  63 6f 6e 28 4f 68 61 6e  64 6c 65 25 2c 31 30 2d  |con(Ohandle%,10-|
000059b0  6f 70 65 72 61 74 6f 72  25 28 6e 6f 25 29 2c 28  |operator%(no%),(|
000059c0  42 6f 74 68 4f 70 25 28  6e 6f 25 29 3d 30 29 29  |BothOp%(no%)=0))|
000059d0  0d 1c 5c 2e f2 73 65 6c  65 63 74 5f 69 63 6f 6e  |..\..select_icon|
000059e0  28 4f 68 61 6e 64 6c 65  25 2c 31 30 2d 6f 70 65  |(Ohandle%,10-ope|
000059f0  72 61 74 6f 72 25 28 6e  6f 25 29 2c 30 29 0d 1c  |rator%(no%),0)..|
00005a00  66 2e f2 73 65 6c 65 63  74 5f 69 63 6f 6e 28 4f  |f..select_icon(O|
00005a10  68 61 6e 64 6c 65 25 2c  37 2b 6f 70 65 72 61 74  |handle%,7+operat|
00005a20  6f 72 25 28 6e 6f 25 29  2c 2d 31 29 0d 1c 70 19  |or%(no%),-1)..p.|
00005a30  6f 77 6e 4f 70 25 3d 6f  70 65 72 61 74 6f 72 25  |ownOp%=operator%|
00005a40  28 6e 6f 25 29 0d 1c 7a  05 e1 0d 1c 84 04 0d 1c  |(no%)..z........|
00005a50  8e 04 0d 1c 98 1b dd 20  f2 61 64 6a 75 73 74 5f  |....... .adjust_|
00005a60  66 6f 72 5f 6d 6f 64 65  28 6e 6f 25 29 0d 1c a2  |for_mode(no%)...|
00005a70  08 ea 20 6e 25 0d 1c ac  2d f2 73 68 61 64 65 5f  |.. n%...-.shade_|
00005a80  33 69 63 6f 6e 73 28 43  68 61 6e 64 6c 65 25 2c  |3icons(Chandle%,|
00005a90  33 31 2c 28 6d 6f 64 65  25 28 6e 6f 25 29 3d 30  |31,(mode%(no%)=0|
00005aa0  29 29 0d 1c b6 40 f2 73  68 61 64 65 5f 33 69 63  |))...@.shade_3ic|
00005ab0  6f 6e 73 28 43 68 61 6e  64 6c 65 25 2c 33 37 2c  |ons(Chandle%,37,|
00005ac0  28 6d 6f 64 65 25 28 6e  6f 25 29 3d 30 20 84 20  |(mode%(no%)=0 . |
00005ad0  61 75 74 6f 68 65 6c 70  25 28 6e 6f 25 29 3d 30  |autohelp%(no%)=0|
00005ae0  29 29 0d 1c c0 2b f2 73  68 61 64 65 5f 69 63 6f  |))...+.shade_ico|
00005af0  6e 28 43 68 61 6e 64 6c  65 25 2c 35 30 2c 28 6d  |n(Chandle%,50,(m|
00005b00  6f 64 65 25 28 6e 6f 25  29 3d 30 29 29 0d 1c ca  |ode%(no%)=0))...|
00005b10  2b f2 73 68 61 64 65 5f  69 63 6f 6e 28 43 68 61  |+.shade_icon(Cha|
00005b20  6e 64 6c 65 25 2c 33 34  2c 28 6d 6f 64 65 25 28  |ndle%,34,(mode%(|
00005b30  6e 6f 25 29 3d 30 29 29  0d 1c d4 14 e7 20 6d 6f  |no%)=0))..... mo|
00005b40  64 65 25 28 6e 6f 25 29  3d 30 20 8c 0d 1c de 31  |de%(no%)=0 ....1|
00005b50  20 61 75 74 6f 68 65 6c  70 25 28 6e 6f 25 29 3d  | autohelp%(no%)=|
00005b60  30 3a f2 73 65 6c 65 63  74 5f 69 63 6f 6e 28 43  |0:.select_icon(C|
00005b70  68 61 6e 64 6c 65 25 2c  35 30 2c 30 29 0d 1c e8  |handle%,50,0)...|
00005b80  2e 20 66 6f 72 63 65 25  28 6e 6f 25 29 3d 30 3a  |. force%(no%)=0:|
00005b90  f2 73 65 6c 65 63 74 5f  69 63 6f 6e 28 43 68 61  |.select_icon(Cha|
00005ba0  6e 64 6c 65 25 2c 33 34  2c 30 29 0d 1c f2 12 20  |ndle%,34,0).... |
00005bb0  6d 65 73 73 61 67 65 24  28 29 3d 22 22 0d 1c fc  |message$()=""...|
00005bc0  05 cd 0d 1d 06 05 e1 0d  1d 10 04 0d 1d 1a 04 0d  |................|
00005bd0  1d 24 11 dd 20 f2 72 65  73 65 74 5f 67 61 6d 65  |.$.. .reset_game|
00005be0  0d 1d 2e 0b ea 20 6e 25  2c 6d 25 0d 1d 38 61 71  |..... n%,m%..8aq|
00005bf0  75 65 73 74 25 3d 30 3a  74 72 79 25 3d 30 3a 43  |uest%=0:try%=0:C|
00005c00  6f 72 72 65 63 74 41 6e  73 25 3d 30 3a 73 65 73  |orrectAns%=0:ses|
00005c10  73 74 69 6d 65 25 3d 91  3a 73 74 6f 70 70 65 64  |stime%=.:stopped|
00005c20  25 3d 30 3a 50 63 6f 75  6e 74 25 3d 2d 31 3a 41  |%=0:Pcount%=-1:A|
00005c30  6e 75 6d 52 57 25 3d 30  3a 53 6e 75 6d 52 57 25  |numRW%=0:SnumRW%|
00005c40  3d 30 3a 66 6f 72 63 65  35 25 3d 30 0d 1d 42 1a  |=0:force5%=0..B.|
00005c50  e7 20 6f 77 6e 73 75 6d  25 28 4e 61 6d 65 4e 6f  |. ownsum%(NameNo|
00005c60  25 29 3d 30 20 8c 0d 1d  4c 0d 20 f2 73 65 74 5f  |%)=0 ...L. .set_|
00005c70  73 75 6d 0d 1d 56 05 cc  0d 1d 60 6a 20 e7 20 64  |sum..V....`j . d|
00005c80  65 63 69 6d 61 6c 25 28  4e 61 6d 65 4e 6f 25 29  |ecimal%(NameNo%)|
00005c90  3d 30 20 8c 20 24 4f 73  75 6d 31 62 75 66 66 25  |=0 . $Osum1buff%|
00005ca0  3d 22 31 30 30 30 22 3a  24 4f 73 75 6d 32 62 75  |="1000":$Osum2bu|
00005cb0  66 66 25 3d 22 31 30 30  22 20 8b 20 24 4f 73 75  |ff%="100" . $Osu|
00005cc0  6d 31 62 75 66 66 25 3d  22 31 30 2e 30 30 22 3a  |m1buff%="10.00":|
00005cd0  24 4f 73 75 6d 32 62 75  66 66 25 3d 22 31 2e 30  |$Osum2buff%="1.0|
00005ce0  30 22 0d 1d 6a 17 20 f2  73 65 74 5f 75 70 5f 73  |0"..j. .set_up_s|
00005cf0  75 6d 5f 77 69 6e 64 6f  77 0d 1d 74 05 cd 0d 1d  |um_window..t....|
00005d00  7e 05 e1 0d 1d 88 04 0d  1d 92 04 0d 1d 9c 0e dd  |~...............|
00005d10  20 f2 73 65 74 5f 73 75  6d 0d 1d a6 d3 64 69 67  | .set_sum....dig|
00005d20  31 24 28 29 3d 22 22 3a  64 69 67 32 24 28 29 3d  |1$()="":dig2$()=|
00005d30  22 22 3a 64 69 67 33 24  28 29 3d 22 22 3a 63 61  |"":dig3$()="":ca|
00005d40  72 72 79 24 28 29 3d 22  22 3a 63 61 72 5f 64 69  |rry$()="":car_di|
00005d50  67 25 28 29 3d 28 6f 70  65 72 61 74 6f 72 25 28  |g%()=(operator%(|
00005d60  4e 61 6d 65 4e 6f 25 29  3d 32 29 3a 73 74 72 69  |NameNo%)=2):stri|
00005d70  6b 65 24 28 29 3d 22 22  3a 6e 65 78 74 64 69 67  |ke$()="":nextdig|
00005d80  25 3d 30 3a 72 75 62 64  69 67 25 3d 2d 31 3a 6d  |%=0:rubdig%=-1:m|
00005d90  65 73 73 61 67 65 24 28  29 3d 22 22 3a 69 6e 69  |essage$()="":ini|
00005da0  74 78 25 3d 30 3a 69 6e  69 74 79 25 3d 30 3a 69  |tx%=0:inity%=0:i|
00005db0  6e 69 74 6e 75 6d 25 3d  30 3a 6e 65 78 74 65 72  |nitnum%=0:nexter|
00005dc0  72 25 3d 61 6e 73 6c 69  6d 25 3a 43 64 6f 6e 65  |r%=anslim%:Cdone|
00005dd0  25 28 29 3d 30 3a 53 54  64 6f 6e 65 25 28 29 3d  |%()=0:STdone%()=|
00005de0  30 3a 63 6f 72 72 65 63  74 25 3d 30 0d 1d b0 46  |0:correct%=0...F|
00005df0  73 75 6d 25 3d 30 3a 64  72 61 67 25 3d 30 3a 72  |sum%=0:drag%=0:r|
00005e00  75 62 62 65 72 25 3d 30  3a 6d 61 72 6b 65 64 25  |ubber%=0:marked%|
00005e10  3d 30 3a 64 6f 75 62 6c  65 25 3d 30 3a 50 73 61  |=0:double%=0:Psa|
00005e20  76 65 25 3d 30 3a 6e 65  78 74 63 68 65 63 6b 25  |ve%=0:nextcheck%|
00005e30  3d 30 0d 1d ba 48 63 61  72 72 79 25 3d 30 3a 73  |=0...Hcarry%=0:s|
00005e40  74 72 69 6b 65 25 3d 30  3a 72 65 64 75 63 65 25  |trike%=0:reduce%|
00005e50  3d 30 3a 42 73 74 65 70  25 3d 30 3a 53 43 66 6f  |=0:Bstep%=0:SCfo|
00005e60  72 6d 61 74 25 3d 32 2d  65 73 74 69 6d 61 74 65  |rmat%=2-estimate|
00005e70  25 28 4e 61 6d 65 4e 6f  25 29 0d 1d c4 27 e7 20  |%(NameNo%)...'. |
00005e80  66 6f 72 63 65 35 25 3d  2d 31 20 8c 20 53 43 66  |force5%=-1 . SCf|
00005e90  6f 72 6d 61 74 25 3d 32  20 8b 20 74 72 79 25 3d  |ormat%=2 . try%=|
00005ea0  30 0d 1d ce 3c 6e 65 78  74 6d 65 73 73 25 3d 2d  |0...<nextmess%=-|
00005eb0  28 48 65 6c 70 6c 65 76  25 3d 35 20 80 20 6d 6f  |(Helplev%=5 . mo|
00005ec0  64 65 25 28 4e 61 6d 65  4e 6f 25 29 3d 31 20 80  |de%(NameNo%)=1 .|
00005ed0  20 53 43 66 6f 72 6d 61  74 25 3d 32 29 0d 1d d8  | SCformat%=2)...|
00005ee0  16 f2 73 65 74 5f 74 6f  70 5f 69 63 6f 6e 28 30  |..set_top_icon(0|
00005ef0  2c 30 29 0d 1d e2 17 f2  73 65 74 5f 74 6f 70 5f  |,0).....set_top_|
00005f00  69 63 6f 6e 28 31 2c 2d  31 29 0d 1d ec 1a f2 73  |icon(1,-1).....s|
00005f10  68 61 64 65 5f 69 74 65  6d 28 6d 65 6e 75 25 2c  |hade_item(menu%,|
00005f20  32 2c 31 29 0d 1d f6 04  0d 1e 00 13 e7 20 66 6f  |2,1)......... fo|
00005f30  72 63 65 35 25 3c 3e 2d  31 20 8c 0d 1e 0a 19 20  |rce5%<>-1 ..... |
00005f40  e7 20 42 6f 74 68 4f 70  25 28 4e 61 6d 65 4e 6f  |. BothOp%(NameNo|
00005f50  25 29 20 8c 0d 1e 14 1c  20 20 e7 20 6f 77 6e 73  |%) .....  . owns|
00005f60  75 6d 25 28 4e 61 6d 65  4e 6f 25 29 3d 30 20 8c  |um%(NameNo%)=0 .|
00005f70  0d 1e 1e 21 20 20 20 50  72 65 76 4f 70 25 3d 6f  |...!   PrevOp%=o|
00005f80  70 65 72 61 74 6f 72 25  28 4e 61 6d 65 4e 6f 25  |perator%(NameNo%|
00005f90  29 0d 1e 28 3f 20 20 20  6f 70 65 72 61 74 6f 72  |)..(?   operator|
00005fa0  25 28 4e 61 6d 65 4e 6f  25 29 3d 32 2b 28 71 75  |%(NameNo%)=2+(qu|
00005fb0  65 73 74 25 2b 31 3c 3d  6e 6f 5f 71 75 65 73 74  |est%+1<=no_quest|
00005fc0  25 28 4e 61 6d 65 4e 6f  25 29 2f 32 2b 2e 35 29  |%(NameNo%)/2+.5)|
00005fd0  0d 1e 32 07 20 20 cd 0d  1e 3c 38 20 20 67 61 6d  |..2.  ...<8  gam|
00005fe0  65 25 3d 6f 70 65 72 61  74 6f 72 25 28 4e 61 6d  |e%=operator%(Nam|
00005ff0  65 4e 6f 25 29 3a 48 65  6c 70 6c 65 76 25 3d 48  |eNo%):Helplev%=H|
00006000  6c 65 76 65 6c 25 28 4e  61 6d 65 4e 6f 25 29 0d  |level%(NameNo%).|
00006010  1e 46 1a 20 20 f2 73 65  74 5f 63 61 72 72 79 5f  |.F.  .set_carry_|
00006020  76 61 72 69 61 62 6c 65  59 0d 1e 50 18 20 20 e7  |variableY..P.  .|
00006030  20 50 72 65 76 4f 70 25  3c 3e 67 61 6d 65 25 20  | PrevOp%<>game% |
00006040  8c 0d 1e 5a 26 20 20 20  f2 63 6c 6f 73 65 5f 77  |...Z&   .close_w|
00006050  69 6e 64 6f 77 28 68 61  6e 64 6c 65 25 28 50 72  |indow(handle%(Pr|
00006060  65 76 4f 70 25 29 29 0d  1e 64 1c 20 20 20 f2 73  |evOp%))..d.   .s|
00006070  77 69 74 63 68 5f 77 69  6e 64 6f 77 28 67 61 6d  |witch_window(gam|
00006080  65 25 29 0d 1e 6e 38 20  20 20 e7 20 a4 77 69 6e  |e%)..n8   . .win|
00006090  64 6f 77 5f 6f 70 65 6e  28 43 68 61 6e 64 6c 65  |dow_open(Chandle|
000060a0  25 29 20 8c 20 f2 6f 70  65 6e 5f 77 69 6e 64 6f  |%) . .open_windo|
000060b0  77 28 43 68 61 6e 64 6c  65 25 29 0d 1e 78 07 20  |w(Chandle%)..x. |
000060c0  20 cd 0d 1e 82 06 20 cd  0d 1e 8c 1b 20 e7 20 6f  | ..... ..... . o|
000060d0  77 6e 73 75 6d 25 28 4e  61 6d 65 4e 6f 25 29 3d  |wnsum%(NameNo%)=|
000060e0  30 20 8c 0d 1e 96 4b 20  20 e7 20 67 61 6d 65 25  |0 ....K  . game%|
000060f0  3d 31 20 8c 20 f2 6d 61  6b 65 5f 61 64 64 28 41  |=1 . .make_add(A|
00006100  6c 65 76 65 6c 25 28 4e  61 6d 65 4e 6f 25 29 29  |level%(NameNo%))|
00006110  20 8b 20 f2 6d 61 6b 65  5f 73 75 62 28 53 6c 65  | . .make_sub(Sle|
00006120  76 65 6c 25 28 4e 61 6d  65 4e 6f 25 29 29 0d 1e  |vel%(NameNo%))..|
00006130  a0 06 20 cd 0d 1e aa 05  cd 0d 1e b4 04 0d 1e be  |.. .............|
00006140  1a f2 64 69 67 69 74 73  28 6e 75 6d 31 25 2c 64  |..digits(num1%,d|
00006150  69 67 31 24 28 29 29 0d  1e c8 1a f2 64 69 67 69  |ig1$()).....digi|
00006160  74 73 28 6e 75 6d 32 25  2c 64 69 67 32 24 28 29  |ts(num2%,dig2$()|
00006170  29 0d 1e d2 1b f2 64 69  67 69 74 73 28 61 6e 73  |).....digits(ans|
00006180  25 2c 61 6e 73 77 65 72  24 28 29 29 0d 1e dc 1e  |%,answer$())....|
00006190  f2 63 61 72 72 79 5f 70  6f 73 69 74 69 6f 6e 73  |.carry_positions|
000061a0  3a 50 72 65 76 4f 70 25  3d 30 0d 1e e6 16 f2 73  |:PrevOp%=0.....s|
000061b0  65 74 5f 74 6f 70 5f 69  63 6f 6e 28 35 2c 30 29  |et_top_icon(5,0)|
000061c0  0d 1e f0 42 f2 73 65 74  5f 74 6f 70 5f 69 63 6f  |...B.set_top_ico|
000061d0  6e 28 32 2c 28 53 43 66  6f 72 6d 61 74 25 3d 32  |n(2,(SCformat%=2|
000061e0  20 80 20 6d 6f 64 65 25  28 4e 61 6d 65 4e 6f 25  | . mode%(NameNo%|
000061f0  29 3d 31 20 80 20 48 65  6c 70 6c 65 76 25 3e 30  |)=1 . Helplev%>0|
00006200  29 29 0d 1e fa 1c f2 63  6c 6f 73 65 5f 77 69 6e  |)).....close_win|
00006210  64 6f 77 28 50 32 68 61  6e 64 6c 65 25 29 0d 1f  |dow(P2handle%)..|
00006220  04 38 c8 99 22 57 69 6d  70 5f 46 6f 72 63 65 52  |.8.."Wimp_ForceR|
00006230  65 64 72 61 77 22 2c 68  61 6e 64 6c 65 25 28 67  |edraw",handle%(g|
00006240  61 6d 65 25 29 2c 30 2c  2d 36 37 35 2c 31 32 38  |ame%),0,-675,128|
00006250  30 2c 2d 31 35 30 0d 1f  0e 05 e1 0d 1f 18 04 0d  |0,-150..........|
00006260  1f 22 04 0d 1f 2c 1a dd  20 f2 73 65 74 5f 63 61  |."...,.. .set_ca|
00006270  72 72 79 5f 76 61 72 69  61 62 6c 65 59 0d 1f 36  |rry_variableY..6|
00006280  38 e7 20 6f 70 65 72 61  74 6f 72 25 28 4e 61 6d  |8. operator%(Nam|
00006290  65 4e 6f 25 29 3d 31 20  8c 20 79 63 61 72 25 3d  |eNo%)=1 . ycar%=|
000062a0  79 33 25 2d 34 34 20 8b  20 79 63 61 72 25 3d 79  |y3%-44 . ycar%=y|
000062b0  31 25 2b 34 38 0d 1f 40  05 e1 0d 1f 4a 04 0d 1f  |1%+48..@....J...|
000062c0  54 04 0d 1f 5e 15 dd 20  f2 70 6c 61 63 65 5f 65  |T...^.. .place_e|
000062d0  73 74 69 6d 61 74 65 0d  1f 68 35 ea 20 73 75 6d  |stimate..h5. sum|
000062e0  78 31 25 2c 73 75 6d 78  32 25 2c 73 74 32 25 2c  |x1%,sumx2%,st2%,|
000062f0  78 25 2c 79 25 2c 73 79  6d 62 6f 6c 24 2c 70 6f  |x%,y%,symbol$,po|
00006300  77 65 72 25 3a 79 25 3d  2d 35 39 36 0d 1f 72 3d  |wer%:y%=-596..r=|
00006310  e7 20 6f 70 65 72 61 74  6f 72 25 28 4e 61 6d 65  |. operator%(Name|
00006320  4e 6f 25 29 3d 31 20 8c  20 73 79 6d 62 6f 6c 24  |No%)=1 . symbol$|
00006330  3d 22 70 6c 75 73 22 20  8b 20 73 79 6d 62 6f 6c  |="plus" . symbol|
00006340  24 3d 22 6d 69 6e 75 73  22 0d 1f 7c 27 73 74 32  |$="minus"..|'st2|
00006350  25 3d 38 32 35 2d 37 35  2a a9 20 c3 20 6e 75 6d  |%=825-75*. . num|
00006360  32 25 3a 73 79 6d 62 25  3d 73 74 32 25 2d 37 35  |2%:symb%=st2%-75|
00006370  0d 1f 86 1f 73 75 6d 78  31 25 3d 73 79 6d 62 25  |....sumx1%=symb%|
00006380  2d 33 37 33 3a 73 75 6d  78 32 25 3d 34 35 32 0d  |-373:sumx2%=452.|
00006390  1f 90 18 c8 99 22 57 69  6d 70 5f 53 65 74 43 6f  |....."Wimp_SetCo|
000063a0  6c 6f 75 72 22 2c 37 0d  1f 9a 10 e3 20 70 6f 73  |lour",7..... pos|
000063b0  25 3d 30 20 b8 20 34 0d  1f a4 20 20 78 31 25 3d  |%=0 . 4...  x1%=|
000063c0  a4 70 72 69 6e 74 64 69  67 78 28 73 75 6d 78 31  |.printdigx(sumx1|
000063d0  25 2c 70 6f 73 25 29 0d  1f ae 20 20 78 32 25 3d  |%,pos%)...  x2%=|
000063e0  a4 70 72 69 6e 74 64 69  67 78 28 73 75 6d 78 32  |.printdigx(sumx2|
000063f0  25 2c 70 6f 73 25 29 0d  1f b8 65 20 e7 20 64 69  |%,pos%)...e . di|
00006400  67 31 24 28 70 6f 73 25  29 3c 3e 22 22 20 8c 20  |g1$(pos%)<>"" . |
00006410  c8 99 22 4f 53 5f 53 70  72 69 74 65 4f 70 22 2c  |.."OS_SpriteOp",|
00006420  26 31 33 34 2c 73 61 72  65 61 25 2c 22 6e 22 2b  |&134,sarea%,"n"+|
00006430  64 69 67 31 24 28 70 6f  73 25 29 2c 6f 78 25 2b  |dig1$(pos%),ox%+|
00006440  78 31 25 2c 6f 79 25 2b  79 25 2c 30 2c 73 63 61  |x1%,oy%+y%,0,sca|
00006450  6c 65 32 37 25 2c 74 72  61 6e 73 25 0d 1f c2 65  |le27%,trans%...e|
00006460  20 e7 20 64 69 67 32 24  28 70 6f 73 25 29 3c 3e  | . dig2$(pos%)<>|
00006470  22 22 20 8c 20 c8 99 22  4f 53 5f 53 70 72 69 74  |"" . .."OS_Sprit|
00006480  65 4f 70 22 2c 26 31 33  34 2c 73 61 72 65 61 25  |eOp",&134,sarea%|
00006490  2c 22 6e 22 2b 64 69 67  32 24 28 70 6f 73 25 29  |,"n"+dig2$(pos%)|
000064a0  2c 6f 78 25 2b 78 32 25  2c 6f 79 25 2b 79 25 2c  |,ox%+x2%,oy%+y%,|
000064b0  30 2c 73 63 61 6c 65 32  37 25 2c 74 72 61 6e 73  |0,scale27%,trans|
000064c0  25 0d 1f cc 04 0d 1f d6  1a 20 e7 20 63 6f 6c 6e  |%........ . coln|
000064d0  61 6d 65 25 28 4e 61 6d  65 4e 6f 25 29 20 8c 0d  |ame%(NameNo%) ..|
000064e0  1f e0 42 20 20 78 25 3d  a4 70 72 69 6e 74 64 69  |..B  x%=.printdi|
000064f0  67 78 28 39 30 32 2c 70  6f 73 25 29 2b 31 39 2b  |gx(902,pos%)+19+|
00006500  31 34 2a 28 70 6f 73 25  3d 34 20 80 20 64 65 63  |14*(pos%=4 . dec|
00006510  69 6d 61 6c 25 28 4e 61  6d 65 4e 6f 25 29 3d 30  |imal%(NameNo%)=0|
00006520  29 0d 1f ea 29 20 20 70  6f 77 65 72 25 3d 70 6f  |)...)  power%=po|
00006530  73 25 2b 32 2a 28 64 65  63 69 6d 61 6c 25 28 4e  |s%+2*(decimal%(N|
00006540  61 6d 65 4e 6f 25 29 3d  31 29 0d 1f f4 50 20 20  |ameNo%)=1)...P  |
00006550  c8 99 22 4f 53 5f 53 70  72 69 74 65 4f 70 22 2c  |.."OS_SpriteOp",|
00006560  26 31 33 34 2c 73 61 72  65 61 25 2c 22 64 69 67  |&134,sarea%,"dig|
00006570  22 2b c3 70 6f 77 65 72  25 2c 6f 78 25 2b 78 25  |"+.power%,ox%+x%|
00006580  2c 6f 79 25 2b 79 25 2b  38 38 2c 30 2c 73 63 61  |,oy%+y%+88,0,sca|
00006590  6c 65 25 2c 74 72 61 6e  73 25 0d 1f fe 06 20 cd  |le%,trans%.... .|
000065a0  0d 20 08 05 ed 0d 20 12  19 e7 20 64 65 63 69 6d  |. .... ... decim|
000065b0  61 6c 25 28 4e 61 6d 65  4e 6f 25 29 20 8c 0d 20  |al%(NameNo%) .. |
000065c0  1c 5b 20 c8 99 22 4f 53  5f 53 70 72 69 74 65 4f  |.[ .."OS_SpriteO|
000065d0  70 22 2c 26 31 33 34 2c  73 61 72 65 61 25 2c 22  |p",&134,sarea%,"|
000065e0  64 65 63 70 6f 69 6e 74  22 2c 6f 78 25 2b a4 70  |decpoint",ox%+.p|
000065f0  72 69 6e 74 64 69 67 78  28 73 75 6d 78 31 25 2c  |rintdigx(sumx1%,|
00006600  32 29 2c 6f 79 25 2b 79  25 2c 38 2c 73 63 61 6c  |2),oy%+y%,8,scal|
00006610  65 25 2c 74 72 61 6e 73  25 0d 20 26 5b 20 c8 99  |e%,trans%. &[ ..|
00006620  22 4f 53 5f 53 70 72 69  74 65 4f 70 22 2c 26 31  |"OS_SpriteOp",&1|
00006630  33 34 2c 73 61 72 65 61  25 2c 22 64 65 63 70 6f  |34,sarea%,"decpo|
00006640  69 6e 74 22 2c 6f 78 25  2b a4 70 72 69 6e 74 64  |int",ox%+.printd|
00006650  69 67 78 28 73 75 6d 78  32 25 2c 32 29 2c 6f 79  |igx(sumx2%,2),oy|
00006660  25 2b 79 25 2c 38 2c 73  63 61 6c 65 25 2c 74 72  |%+y%,8,scale%,tr|
00006670  61 6e 73 25 0d 20 30 58  20 c8 99 22 4f 53 5f 53  |ans%. 0X .."OS_S|
00006680  70 72 69 74 65 4f 70 22  2c 26 31 33 34 2c 73 61  |priteOp",&134,sa|
00006690  72 65 61 25 2c 22 64 65  63 70 6f 69 6e 74 22 2c  |rea%,"decpoint",|
000066a0  6f 78 25 2b a4 70 72 69  6e 74 64 69 67 78 28 39  |ox%+.printdigx(9|
000066b0  30 32 2c 32 29 2c 6f 79  25 2b 79 25 2c 38 2c 73  |02,2),oy%+y%,8,s|
000066c0  63 61 6c 65 25 2c 74 72  61 6e 73 25 0d 20 3a 05  |cale%,trans%. :.|
000066d0  cd 0d 20 44 4a c8 99 22  4f 53 5f 53 70 72 69 74  |.. DJ.."OS_Sprit|
000066e0  65 4f 70 22 2c 26 31 33  34 2c 73 61 72 65 61 25  |eOp",&134,sarea%|
000066f0  2c 73 79 6d 62 6f 6c 24  2c 6f 78 25 2b 73 79 6d  |,symbol$,ox%+sym|
00006700  62 25 2b 32 2c 6f 79 25  2b 79 25 2c 30 2c 73 63  |b%+2,oy%+y%,0,sc|
00006710  61 6c 65 25 2c 74 72 61  6e 73 25 0d 20 4e 47 c8  |ale%,trans%. NG.|
00006720  99 22 4f 53 5f 53 70 72  69 74 65 4f 70 22 2c 26  |."OS_SpriteOp",&|
00006730  31 33 34 2c 73 61 72 65  61 25 2c 22 65 71 75 61  |134,sarea%,"equa|
00006740  6c 73 22 2c 6f 78 25 2b  38 32 37 2c 6f 79 25 2b  |ls",ox%+827,oy%+|
00006750  79 25 2c 30 2c 73 63 61  6c 65 25 2c 74 72 61 6e  |y%,0,scale%,tran|
00006760  73 25 0d 20 58 4d c8 99  22 4f 53 5f 53 70 72 69  |s%. XM.."OS_Spri|
00006770  74 65 4f 70 22 2c 26 31  33 34 2c 73 61 72 65 61  |teOp",&134,sarea|
00006780  25 2c 22 65 71 75 61 6c  73 32 22 2c 6f 78 25 2b  |%,"equals2",ox%+|
00006790  31 30 35 32 2c 6f 79 25  2b 79 25 2b 31 35 30 2c  |1052,oy%+y%+150,|
000067a0  30 2c 73 63 61 6c 65 25  2c 74 72 61 6e 73 25 0d  |0,scale%,trans%.|
000067b0  20 62 21 c8 93 20 c8 90  20 6f 78 25 2b 39 30 30  | b!.. .. ox%+900|
000067c0  2c 6f 79 25 2b 79 25 2d  31 32 2c 33 37 35 2c 38  |,oy%+y%-12,375,8|
000067d0  0d 20 6c 05 e1 0d 20 76  04 0d 20 80 04 0d 20 8a  |. l... v.. ... .|
000067e0  12 dd 20 f2 73 65 74 5f  66 6f 72 6d 61 74 32 0d  |.. .set_format2.|
000067f0  20 94 2e 45 73 74 56 61  6c 25 3d 73 75 6d 25 3a  | ..EstVal%=sum%:|
00006800  73 75 6d 25 3d 30 3a 64  69 67 33 24 28 29 3d 22  |sum%=0:dig3$()="|
00006810  22 3a 53 43 66 6f 72 6d  61 74 25 3d 32 0d 20 9e  |":SCformat%=2. .|
00006820  23 f2 73 68 61 64 65 5f  69 63 6f 6e 28 68 61 6e  |#.shade_icon(han|
00006830  64 6c 65 25 28 67 61 6d  65 25 29 2c 32 2c 30 29  |dle%(game%),2,0)|
00006840  0d 20 a8 1f e7 20 48 65  6c 70 6c 65 76 25 3d 35  |. ... Helplev%=5|
00006850  20 8c 20 6e 65 78 74 6d  65 73 73 25 3d 2d 31 0d  | . nextmess%=-1.|
00006860  20 b2 38 c8 99 22 57 69  6d 70 5f 46 6f 72 63 65  | .8.."Wimp_Force|
00006870  52 65 64 72 61 77 22 2c  68 61 6e 64 6c 65 25 28  |Redraw",handle%(|
00006880  67 61 6d 65 25 29 2c 30  2c 2d 36 37 35 2c 31 32  |game%),0,-675,12|
00006890  38 30 2c 2d 31 35 30 0d  20 bc 05 e1 0d 20 c6 04  |80,-150. .... ..|
000068a0  0d 20 d0 04 0d 20 da 15  dd 20 f2 69 63 6f 6e 5f  |. ... ... .icon_|
000068b0  73 65 6c 65 63 74 69 6f  6e 0d 20 e4 1b ea 20 69  |selection. ... i|
000068c0  63 6f 6e 25 3a 69 63 6f  6e 25 3d 62 6c 6f 63 6b  |con%:icon%=block|
000068d0  25 21 31 36 0d 20 ee 1d  e7 20 4f 77 69 6e 25 3d  |%!16. ... Owin%=|
000068e0  2d 31 20 80 20 69 63 6f  6e 25 3c 3e 36 20 8c 20  |-1 . icon%<>6 . |
000068f0  e1 0d 20 f8 0e c8 8e 20  69 63 6f 6e 25 20 ca 0d  |.. .... icon% ..|
00006900  21 02 50 20 c9 20 30 3a  e7 20 53 43 66 6f 72 6d  |!.P . 0:. SCform|
00006910  61 74 25 3d 31 20 8c 20  f2 73 65 74 5f 66 6f 72  |at%=1 . .set_for|
00006920  6d 61 74 32 20 8b 20 e7  20 63 6f 72 72 65 63 74  |mat2 . . correct|
00006930  25 3d 30 20 80 20 6e 65  78 74 63 68 65 63 6b 25  |%=0 . nextcheck%|
00006940  3d 30 20 8c 20 f2 63 68  65 63 6b 5f 73 75 6d 0d  |=0 . .check_sum.|
00006950  21 0c 51 20 c9 20 31 3a  e7 20 72 75 62 62 65 72  |!.Q . 1:. rubber|
00006960  25 3d 30 20 8c 20 f2 73  65 74 5f 75 70 5f 72 75  |%=0 . .set_up_ru|
00006970  62 5f 6f 75 74 20 8b 20  f2 72 65 70 6c 61 63 65  |b_out . .replace|
00006980  5f 6e 75 6d 62 65 72 28  31 30 29 3a 72 75 62 62  |_number(10):rubb|
00006990  65 72 25 3d 30 3a 2a 50  4f 49 4e 54 45 52 20 31  |er%=0:*POINTER 1|
000069a0  0d 21 16 16 20 c9 20 32  3a f2 6d 65 73 73 61 67  |.!.. . 2:.messag|
000069b0  65 28 22 3f 22 29 0d 21  20 6e 20 c9 20 33 3a e7  |e("?").! n . 3:.|
000069c0  20 a4 77 69 6e 64 6f 77  5f 6f 70 65 6e 28 43 68  | .window_open(Ch|
000069d0  61 6e 64 6c 65 25 29 3d  30 20 8c 20 24 43 43 62  |andle%)=0 . $CCb|
000069e0  75 66 66 25 3d 22 30 22  3a 43 43 73 75 6d 3d 30  |uff%="0":CCsum=0|
000069f0  3a 43 43 6e 75 6d 3d 30  3a 43 43 6f 70 25 3d 30  |:CCnum=0:CCop%=0|
00006a00  3a 43 43 70 72 65 76 25  3d 30 3a f2 72 65 73 65  |:CCprev%=0:.rese|
00006a10  74 5f 69 63 6f 6e 28 43  43 68 61 6e 64 6c 65 25  |t_icon(CChandle%|
00006a20  2c 31 37 29 0d 21 2a 33  20 20 20 20 20 20 20 20  |,17).!*3        |
00006a30  43 43 68 61 6e 64 6c 65  25 3d a4 63 65 6e 74 72  |CChandle%=.centr|
00006a40  65 5f 77 69 6e 64 6f 77  28 43 43 68 61 6e 64 6c  |e_window(CChandl|
00006a50  65 25 2c 22 59 22 29 0d  21 34 3b 20 20 20 20 20  |e%,"Y").!4;     |
00006a60  20 20 20 c8 99 22 57 69  6d 70 5f 53 65 74 43 61  |   .."Wimp_SetCa|
00006a70  72 65 74 50 6f 73 69 74  69 6f 6e 22 2c 43 43 68  |retPosition",CCh|
00006a80  61 6e 64 6c 65 25 2c 2d  31 2c 30 2c 30 2c 30 2c  |andle%,-1,0,0,0,|
00006a90  2d 31 0d 21 3e 18 20 c9  20 34 3a f2 73 68 6f 77  |-1.!>. . 4:.show|
00006aa0  5f 73 63 6f 72 65 28 22  22 29 0d 21 48 54 20 c9  |_score("").!HT .|
00006ab0  20 35 3a e7 20 70 72 69  6e 74 65 72 25 28 4e 61  | 5:. printer%(Na|
00006ac0  6d 65 4e 6f 25 29 3d 31  20 80 20 64 72 69 76 65  |meNo%)=1 . drive|
00006ad0  72 25 3d 2d 31 20 80 20  63 6f 72 72 65 63 74 25  |r%=-1 . correct%|
00006ae0  3d 30 20 80 20 50 73 61  76 65 25 3d 30 20 8c 20  |=0 . Psave%=0 . |
00006af0  f2 73 61 76 65 5f 73 75  6d 28 22 53 22 29 0d 21  |.save_sum("S").!|
00006b00  52 15 20 20 20 20 20 20  20 20 66 6f 72 63 65 35  |R.        force5|
00006b10  25 3d 30 0d 21 5c 24 20  20 20 20 20 20 20 20 e7  |%=0.!\$        .|
00006b20  20 6d 61 72 6b 65 64 25  3d 30 20 8c 20 71 75 65  | marked%=0 . que|
00006b30  73 74 25 20 2b 3d 31 0d  21 66 29 20 20 20 20 20  |st% +=1.!f)     |
00006b40  20 20 20 e7 20 71 75 65  73 74 25 3c 6e 6f 5f 71  |   . quest%<no_q|
00006b50  75 65 73 74 25 28 4e 61  6d 65 4e 6f 25 29 20 8c  |uest%(NameNo%) .|
00006b60  0d 21 70 50 20 20 20 20  20 20 20 20 20 e7 20 61  |.!pP         . a|
00006b70  75 74 6f 25 28 4e 61 6d  65 4e 6f 25 29 3d 31 20  |uto%(NameNo%)=1 |
00006b80  80 20 6f 77 6e 73 75 6d  25 28 4e 61 6d 65 4e 6f  |. ownsum%(NameNo|
00006b90  25 29 3d 30 20 8c 20 f2  6e 65 77 5f 61 75 74 6f  |%)=0 . .new_auto|
00006ba0  5f 6c 65 76 65 6c 28 63  6f 72 72 65 63 74 25 29  |_level(correct%)|
00006bb0  0d 21 7a 41 20 20 20 20  20 20 20 20 20 e7 20 6f  |.!zA         . o|
00006bc0  77 6e 73 75 6d 25 28 4e  61 6d 65 4e 6f 25 29 3d  |wnsum%(NameNo%)=|
00006bd0  30 20 8c 20 f2 73 65 74  5f 73 75 6d 20 8b 20 f2  |0 . .set_sum . .|
00006be0  73 65 74 5f 75 70 5f 73  75 6d 5f 77 69 6e 64 6f  |set_up_sum_windo|
00006bf0  77 0d 21 84 0d 20 20 20  20 20 20 20 20 cc 0d 21  |w.!..        ..!|
00006c00  8e 16 20 20 20 20 20 20  20 20 20 f2 67 61 6d 65  |..         .game|
00006c10  5f 65 6e 64 0d 21 98 0d  20 20 20 20 20 20 20 20  |_end.!..        |
00006c20  cd 0d 21 a2 45 20 c9 20  36 3a 53 54 68 61 6e 64  |..!.E . 6:SThand|
00006c30  6c 65 25 3d a4 72 65 6c  61 74 69 76 65 5f 77 69  |le%=.relative_wi|
00006c40  6e 64 6f 77 28 68 61 6e  64 6c 65 25 28 67 61 6d  |ndow(handle%(gam|
00006c50  65 25 29 2c 53 54 68 61  6e 64 6c 65 25 2c 34 35  |e%),SThandle%,45|
00006c60  30 2c 35 35 36 29 0d 21  ac 75 20 c9 20 37 3a e7  |0,556).!.u . 7:.|
00006c70  20 70 72 69 6e 74 65 72  25 28 4e 61 6d 65 4e 6f  | printer%(NameNo|
00006c80  25 29 3d 31 20 80 20 50  73 61 76 65 25 3d 30 20  |%)=1 . Psave%=0 |
00006c90  8c 20 f2 73 61 76 65 5f  73 75 6d 28 22 53 22 29  |. .save_sum("S")|
00006ca0  3a 50 68 61 6e 64 6c 65  25 3d a4 72 65 6c 61 74  |:Phandle%=.relat|
00006cb0  69 76 65 5f 77 69 6e 64  6f 77 28 68 61 6e 64 6c  |ive_window(handl|
00006cc0  65 25 28 67 61 6d 65 25  29 2c 50 68 61 6e 64 6c  |e%(game%),Phandl|
00006cd0  65 25 2c 39 30 30 2c 34  30 36 29 0d 21 b6 34 20  |e%,900,406).!.4 |
00006ce0  c9 20 38 2c 39 2c 31 30  2c 31 31 2c 31 32 2c 31  |. 8,9,10,11,12,1|
00006cf0  33 2c 31 34 2c 31 35 2c  31 36 2c 31 37 2c 33 38  |3,14,15,16,17,38|
00006d00  3a e7 20 64 6f 75 62 6c  65 25 3d 2d 31 20 8c 0d  |:. double%=-1 ..|
00006d10  21 c0 44 20 20 20 20 20  20 20 20 20 20 20 20 20  |!.D             |
00006d20  20 20 20 20 20 20 20 20  20 20 20 e7 20 6d 6f 64  |           . mod|
00006d30  65 25 28 4e 61 6d 65 4e  6f 25 29 3d 31 20 8c 20  |e%(NameNo%)=1 . |
00006d40  f2 70 6c 61 63 65 5f 64  6f 75 62 6c 65 5f 63 6c  |.place_double_cl|
00006d50  69 63 6b 0d 21 ca 1c 20  20 20 20 20 20 20 20 20  |ick.!..         |
00006d60  20 20 20 20 20 20 20 20  20 20 20 20 20 20 cc 0d  |              ..|
00006d70  21 d4 6a 20 20 20 20 20  20 20 20 20 20 20 20 20  |!.j             |
00006d80  20 20 20 20 20 20 20 20  20 20 20 e7 20 64 72 61  |           . dra|
00006d90  67 25 20 80 20 69 6e 69  74 6e 75 6d 25 3d 69 63  |g% . initnum%=ic|
00006da0  6f 6e 25 2d 38 20 8c 20  f2 72 65 70 6c 61 63 65  |on%-8 . .replace|
00006db0  5f 6e 75 6d 62 65 72 28  69 63 6f 6e 25 2d 38 29  |_number(icon%-8)|
00006dc0  20 8b 20 f2 73 65 6c 65  63 74 5f 64 69 67 69 74  | . .select_digit|
00006dd0  28 69 63 6f 6e 25 2d 38  29 0d 21 de 1c 20 20 20  |(icon%-8).!..   |
00006de0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00006df0  20 20 20 20 cd 0d 21 e8  2e 20 c9 20 31 38 2c 31  |    ..!.. . 18,1|
00006e00  39 2c 32 30 2c 32 31 2c  32 32 2c 32 38 2c 32 39  |9,20,21,22,28,29|
00006e10  2c 33 30 2c 33 31 2c 33  32 3a e7 20 64 72 61 67  |,30,31,32:. drag|
00006e20  25 20 8c 0d 21 f2 4e 20  20 20 20 20 20 20 20 20  |% ..!.N         |
00006e30  20 20 20 20 20 20 20 20  20 20 20 20 20 e7 20 72  |             . r|
00006e40  75 62 62 65 72 25 3d 30  20 8c 20 f2 70 6c 61 63  |ubber%=0 . .plac|
00006e50  65 5f 6e 75 6d 62 65 72  28 69 63 6f 6e 25 29 20  |e_number(icon%) |
00006e60  8b 20 f2 72 75 62 5f 6f  75 74 28 69 63 6f 6e 25  |. .rub_out(icon%|
00006e70  29 0d 21 fc 1a 20 20 20  20 20 20 20 20 20 20 20  |).!..           |
00006e80  20 20 20 20 20 20 20 20  20 20 cc 0d 22 06 2e 20  |          ..".. |
00006e90  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00006ea0  20 20 20 20 20 f2 72 65  6d 6f 76 65 5f 64 69 67  |     .remove_dig|
00006eb0  69 74 28 69 63 6f 6e 25  29 0d 22 10 1a 20 20 20  |it(icon%)."..   |
00006ec0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00006ed0  20 20 cd 0d 22 1a 5c 20  c9 20 32 33 2c 32 34 2c  |  ..".\ . 23,24,|
00006ee0  32 35 2c 32 36 3a e7 20  6f 70 65 72 61 74 6f 72  |25,26:. operator|
00006ef0  25 28 4e 61 6d 65 4e 6f  25 29 3d 31 20 8c 20 f2  |%(NameNo%)=1 . .|
00006f00  63 61 72 72 79 5f 70 6f  73 28 69 63 6f 6e 25 2d  |carry_pos(icon%-|
00006f10  32 32 29 20 8b 20 f2 73  74 72 69 6b 65 5f 74 68  |22) . .strike_th|
00006f20  72 6f 75 67 68 28 69 63  6f 6e 25 2d 32 32 29 0d  |rough(icon%-22).|
00006f30  22 24 43 20 c9 20 33 33  2c 33 34 2c 33 35 2c 33  |"$C . 33,34,35,3|
00006f40  36 2c 33 37 3a e7 20 6f  70 65 72 61 74 6f 72 25  |6,37:. operator%|
00006f50  28 4e 61 6d 65 4e 6f 25  29 3d 32 20 8c 20 f2 63  |(NameNo%)=2 . .c|
00006f60  61 72 72 79 5f 70 6f 73  28 69 63 6f 6e 25 2d 33  |arry_pos(icon%-3|
00006f70  33 29 0d 22 2e 26 20 c9  20 32 37 3a e7 20 53 43  |3).".& . 27:. SC|
00006f80  66 6f 72 6d 61 74 25 3d  31 20 8c 20 f2 73 65 74  |format%=1 . .set|
00006f90  5f 66 6f 72 6d 61 74 32  0d 22 38 05 cb 0d 22 42  |_format2."8..."B|
00006fa0  05 e1 0d 22 4c 04 0d 22  56 04 0d 22 60 17 dd 20  |..."L.."V.."`.. |
00006fb0  f2 63 61 72 72 79 5f 70  6f 73 28 69 63 6f 6e 25  |.carry_pos(icon%|
00006fc0  29 0d 22 6a 23 e7 20 64  72 61 67 76 61 6c 25 3d  |)."j#. dragval%=|
00006fd0  33 30 20 84 20 53 43 66  6f 72 6d 61 74 25 3d 31  |30 . SCformat%=1|
00006fe0  20 8c 20 e1 0d 22 74 0d  e7 20 64 72 61 67 25 20  | . .."t.. drag% |
00006ff0  8c 0d 22 7e 3e 20 e7 20  72 75 62 62 65 72 25 3d  |.."~> . rubber%=|
00007000  30 20 8c 20 f2 70 6c 61  63 65 5f 63 61 72 72 79  |0 . .place_carry|
00007010  28 69 63 6f 6e 25 29 20  8b 20 f2 72 75 62 5f 6f  |(icon%) . .rub_o|
00007020  75 74 5f 63 61 72 72 79  28 69 63 6f 6e 25 29 0d  |ut_carry(icon%).|
00007030  22 88 05 cc 0d 22 92 19  20 f2 72 65 6d 6f 76 65  |"....".. .remove|
00007040  5f 63 61 72 72 79 28 69  63 6f 6e 25 29 0d 22 9c  |_carry(icon%).".|
00007050  05 cd 0d 22 a6 05 e1 0d  22 b0 04 0d 22 ba 04 0d  |..."...."..."...|
00007060  22 c4 1c dd 20 f2 73 74  72 69 6b 65 5f 74 68 72  |"... .strike_thr|
00007070  6f 75 67 68 28 69 63 6f  6e 25 29 0d 22 ce 0d e7  |ough(icon%)."...|
00007080  20 64 72 61 67 25 20 8c  0d 22 d8 6c 20 e7 20 64  | drag% ..".l . d|
00007090  6f 75 62 6c 65 25 3d 30  20 80 20 73 74 72 69 6b  |ouble%=0 . strik|
000070a0  65 24 28 69 63 6f 6e 25  29 3d 22 22 20 80 20 72  |e$(icon%)="" . r|
000070b0  75 62 62 65 72 25 3d 30  20 8c 20 f2 70 6c 61 63  |ubber%=0 . .plac|
000070c0  65 5f 73 74 72 69 6b 65  28 69 63 6f 6e 25 29 20  |e_strike(icon%) |
000070d0  8b 20 e7 20 72 75 62 62  65 72 25 20 8c 20 f2 72  |. . rubber% . .r|
000070e0  75 62 5f 6f 75 74 5f 73  74 72 69 6b 65 28 69 63  |ub_out_strike(ic|
000070f0  6f 6e 25 29 0d 22 e2 05  cc 0d 22 ec 1a 20 f2 72  |on%)."....".. .r|
00007100  65 6d 6f 76 65 5f 73 74  72 69 6b 65 28 69 63 6f  |emove_strike(ico|
00007110  6e 25 29 0d 22 f6 05 cd  0d 23 00 05 e1 0d 23 0a  |n%)."....#....#.|
00007120  04 0d 23 14 04 0d 23 1e  19 dd 20 f2 73 65 6c 65  |..#...#... .sele|
00007130  63 74 5f 64 69 67 69 74  28 6e 75 6d 25 29 0d 23  |ct_digit(num%).#|
00007140  28 0b ea 20 78 25 2c 79  25 0d 23 32 22 e7 20 72  |(.. x%,y%.#2". r|
00007150  75 62 62 65 72 25 20 8c  20 72 75 62 62 65 72 25  |ubber% . rubber%|
00007160  3d 30 3a 2a 50 4f 49 4e  54 45 52 0d 23 3c 21 e7  |=0:*POINTER.#<!.|
00007170  20 6d 6f 64 65 25 28 4e  61 6d 65 4e 6f 25 29 20  | mode%(NameNo%) |
00007180  8c 20 64 6f 75 62 6c 65  25 3d 2d 31 0d 23 46 53  |. double%=-1.#FS|
00007190  e7 20 64 72 61 67 25 20  8c 20 c8 99 22 57 69 6d  |. drag% . .."Wim|
000071a0  70 5f 46 6f 72 63 65 52  65 64 72 61 77 22 2c 68  |p_ForceRedraw",h|
000071b0  61 6e 64 6c 65 25 28 67  61 6d 65 25 29 2c 64 72  |andle%(game%),dr|
000071c0  61 67 78 25 2c 64 72 61  67 79 25 2c 64 72 61 67  |agx%,dragy%,drag|
000071d0  78 25 2b 37 35 2c 64 72  61 67 79 25 2b 37 35 0d  |x%+75,dragy%+75.|
000071e0  23 50 1e 64 72 61 67 76  61 6c 25 3d 6e 75 6d 25  |#P.dragval%=num%|
000071f0  3a 6e 65 78 74 63 68 65  63 6b 25 3d 30 0d 23 5a  |:nextcheck%=0.#Z|
00007200  13 f2 70 69 63 6b 5f 75  70 5f 6e 75 6d 62 65 72  |..pick_up_number|
00007210  0d 23 64 05 e1 0d 23 6e  04 0d 23 78 04 0d 23 82  |.#d...#n..#x..#.|
00007220  1a dd 20 f2 72 65 6d 6f  76 65 5f 64 69 67 69 74  |.. .remove_digit|
00007230  28 69 63 6f 6e 25 29 0d  23 8c 26 ea 20 78 25 2c  |(icon%).#.&. x%,|
00007240  59 33 25 2c 4d 6f 64 65  25 2c 66 6c 67 25 2c 64  |Y3%,Mode%,flg%,d|
00007250  69 67 25 3a 72 75 62 62  65 72 25 3d 30 0d 23 96  |ig%:rubber%=0.#.|
00007260  2b 4d 6f 64 65 25 3d 2d  28 6d 6f 64 65 25 28 4e  |+Mode%=-(mode%(N|
00007270  61 6d 65 4e 6f 25 29 3d  31 20 80 20 53 43 66 6f  |ameNo%)=1 . SCfo|
00007280  72 6d 61 74 25 3d 32 29  0d 23 a0 04 0d 23 aa 13  |rmat%=2).#...#..|
00007290  e7 20 53 43 66 6f 72 6d  61 74 25 3d 32 20 8c 0d  |. SCformat%=2 ..|
000072a0  23 b4 1a 20 64 69 67 25  3d 69 63 6f 6e 25 2d 31  |#.. dig%=icon%-1|
000072b0  38 3a 59 33 25 3d 79 33  25 0d 23 be 23 20 78 25  |8:Y3%=y3%.#.# x%|
000072c0  3d a4 64 69 67 78 28 64  69 67 25 29 3a 66 6c 67  |=.digx(dig%):flg|
000072d0  25 3d 28 69 63 6f 6e 25  3e 32 36 29 0d 23 c8 05  |%=(icon%>26).#..|
000072e0  cc 0d 23 d2 2b 20 64 69  67 25 3d 69 63 6f 6e 25  |..#.+ dig%=icon%|
000072f0  2d 32 38 3a 59 33 25 3d  2d 35 39 36 3a 66 6c 67  |-28:Y3%=-596:flg|
00007300  25 3d 28 69 63 6f 6e 25  3c 32 38 29 0d 23 dc 1c  |%=(icon%<28).#..|
00007310  20 78 25 3d a4 70 72 69  6e 74 64 69 67 78 28 39  | x%=.printdigx(9|
00007320  30 32 2c 64 69 67 25 29  0d 23 e6 05 cd 0d 23 f0  |02,dig%).#....#.|
00007330  0e e7 20 66 6c 67 25 20  8c 20 e1 0d 23 fa 04 0d  |.. flg% . ..#...|
00007340  24 04 18 e7 20 64 69 67  33 24 28 64 69 67 25 29  |$... dig3$(dig%)|
00007350  3d 22 22 20 8c 20 e1 0d  24 0e 29 64 72 61 67 76  |="" . ..$.)dragv|
00007360  61 6c 25 3d bb 20 64 69  67 33 24 28 64 69 67 25  |al%=. dig3$(dig%|
00007370  29 3a 64 69 67 33 24 28  64 69 67 25 29 3d 22 22  |):dig3$(dig%)=""|
00007380  0d 24 18 1b 73 75 6d 25  20 2d 3d 64 72 61 67 76  |.$..sum% -=dragv|
00007390  61 6c 25 2a 31 30 5e 64  69 67 25 0d 24 22 3b c8  |al%*10^dig%.$";.|
000073a0  99 22 57 69 6d 70 5f 46  6f 72 63 65 52 65 64 72  |."Wimp_ForceRedr|
000073b0  61 77 22 2c 68 61 6e 64  6c 65 25 28 67 61 6d 65  |aw",handle%(game|
000073c0  25 29 2c 78 25 2c 59 33  25 2c 78 25 2b 37 35 2c  |%),x%,Y3%,x%+75,|
000073d0  59 33 25 2b 37 35 0d 24  2c 39 e7 20 4d 6f 64 65  |Y3%+75.$,9. Mode|
000073e0  25 3d 31 20 80 20 64 69  67 25 3c 6e 65 78 74 64  |%=1 . dig%<nextd|
000073f0  69 67 25 20 8c 20 f2 64  65 6c 65 74 65 5f 63 75  |ig% . .delete_cu|
00007400  72 72 65 6e 74 5f 62 6f  78 28 64 69 67 25 29 0d  |rrent_box(dig%).|
00007410  24 36 13 f2 70 69 63 6b  5f 75 70 5f 6e 75 6d 62  |$6..pick_up_numb|
00007420  65 72 0d 24 40 27 e7 20  6d 65 73 73 61 67 65 24  |er.$@'. message$|
00007430  28 30 29 3c 3e 22 22 20  8c 20 f2 72 65 6d 6f 76  |(0)<>"" . .remov|
00007440  65 5f 6d 65 73 73 61 67  65 0d 24 4a 25 6e 65 78  |e_message.$J%nex|
00007450  74 6d 65 73 73 25 3d 2d  28 48 65 6c 70 6c 65 76  |tmess%=-(Helplev|
00007460  25 3d 35 20 80 20 4d 6f  64 65 25 3d 31 29 0d 24  |%=5 . Mode%=1).$|
00007470  54 21 e7 20 73 75 6d 25  3d 30 20 8c 20 f2 73 65  |T!. sum%=0 . .se|
00007480  74 5f 74 6f 70 5f 69 63  6f 6e 28 30 2c 30 29 0d  |t_top_icon(0,0).|
00007490  24 5e 05 e1 0d 24 68 04  0d 24 72 04 0d 24 7c 1f  |$^...$h..$r..$|.|
000074a0  dd 20 f2 64 65 6c 65 74  65 5f 63 75 72 72 65 6e  |. .delete_curren|
000074b0  74 5f 62 6f 78 28 64 69  67 25 29 0d 24 86 17 ea  |t_box(dig%).$...|
000074c0  20 78 25 2c 59 33 25 2c  68 25 2c 6f 6c 64 64 69  | x%,Y3%,h%,olddi|
000074d0  67 25 0d 24 90 22 f4 20  43 6c 65 61 72 73 20 62  |g%.$.". Clears b|
000074e0  6f 78 20 69 6e 20 6e 65  78 74 20 70 6f 73 69 74  |ox in next posit|
000074f0  69 6f 6e 2e 0d 24 9a 54  e7 20 72 75 62 64 69 67  |ion..$.T. rubdig|
00007500  25 3e 2d 31 20 80 20 64  69 67 25 3c 72 75 62 64  |%>-1 . dig%<rubd|
00007510  69 67 25 20 8c 20 6f 6c  64 64 69 67 25 3d 72 75  |ig% . olddig%=ru|
00007520  62 64 69 67 25 20 8b 20  e7 20 72 75 62 64 69 67  |bdig% . . rubdig|
00007530  25 3d 2d 31 20 8c 20 20  6f 6c 64 64 69 67 25 3d  |%=-1 .  olddig%=|
00007540  6e 65 78 74 64 69 67 25  0d 24 a4 13 e7 20 6f 6c  |nextdig%.$... ol|
00007550  64 64 69 67 25 3d 30 20  8c 20 e1 0d 24 ae 04 0d  |ddig%=0 . ..$...|
00007560  24 b8 48 e7 20 6f 70 65  72 61 74 6f 72 25 28 4e  |$.H. operator%(N|
00007570  61 6d 65 4e 6f 25 29 3d  32 20 80 20 63 61 72 72  |ameNo%)=2 . carr|
00007580  79 25 3d 2d 31 20 80 20  6f 6c 64 64 69 67 25 3c  |y%=-1 . olddig%<|
00007590  3e 72 75 62 64 69 67 25  20 80 20 48 65 6c 70 6c  |>rubdig% . Helpl|
000075a0  65 76 25 3e 32 20 8c 0d  24 c2 12 20 e7 20 73 74  |ev%>2 ..$.. . st|
000075b0  72 69 6b 65 25 3d 30 20  8c 0d 24 cc 23 20 20 f2  |rike%=0 ..$.#  .|
000075c0  63 61 72 72 79 5f 72 65  64 72 61 77 28 6f 6c 64  |carry_redraw(old|
000075d0  64 69 67 25 2c 42 73 74  65 70 25 29 0d 24 d6 06  |dig%,Bstep%).$..|
000075e0  20 cc 0d 24 e0 24 20 20  f2 73 74 72 69 6b 65 5f  | ..$.$  .strike_|
000075f0  72 65 64 72 61 77 28 6f  6c 64 64 69 67 25 2c 42  |redraw(olddig%,B|
00007600  73 74 65 70 25 29 0d 24  ea 06 20 cd 0d 24 f4 05  |step%).$.. ..$..|
00007610  cc 0d 24 fe 51 20 e7 20  6f 70 65 72 61 74 6f 72  |..$.Q . operator|
00007620  25 28 4e 61 6d 65 4e 6f  25 29 3d 31 20 8c 20 f2  |%(NameNo%)=1 . .|
00007630  64 69 67 5f 63 61 72 72  79 5f 72 65 64 72 61 77  |dig_carry_redraw|
00007640  28 6f 6c 64 64 69 67 25  29 20 8b 20 f2 64 69 67  |(olddig%) . .dig|
00007650  69 74 5f 72 65 64 72 61  77 28 6f 6c 64 64 69 67  |it_redraw(olddig|
00007660  25 29 0d 25 08 05 cd 0d  25 12 10 72 75 62 64 69  |%).%....%..rubdi|
00007670  67 25 3d 64 69 67 25 0d  25 1c 05 e1 0d 25 26 04  |g%=dig%.%....%&.|
00007680  0d 25 30 04 0d 25 3a 15  dd 20 f2 70 69 63 6b 5f  |.%0..%:.. .pick_|
00007690  75 70 5f 6e 75 6d 62 65  72 0d 25 44 0b ea 20 77  |up_number.%D.. w|
000076a0  25 2c 68 25 0d 25 4e 3a  e7 20 72 75 62 62 65 72  |%,h%.%N:. rubber|
000076b0  25 3d 30 20 8c 20 77 25  3d 31 38 2d 33 2a 28 64  |%=0 . w%=18-3*(d|
000076c0  72 61 67 76 61 6c 25 3d  33 30 29 3a 68 25 3d 32  |ragval%=30):h%=2|
000076d0  32 20 8b 20 77 25 3d 36  3a 68 25 3d 31 32 0d 25  |2 . w%=6:h%=12.%|
000076e0  58 20 78 25 3d 21 62 6c  6f 63 6b 25 2d 77 25 3a  |X x%=!block%-w%:|
000076f0  79 25 3d 62 6c 6f 63 6b  25 21 34 2d 68 25 0d 25  |y%=block%!4-h%.%|
00007700  62 2d f2 77 6f 72 6b 5f  61 72 65 61 5f 6f 72 69  |b-.work_area_ori|
00007710  67 69 6e 28 68 61 6e 64  6c 65 25 28 67 61 6d 65  |gin(handle%(game|
00007720  25 29 2c 6f 78 25 2c 6f  79 25 29 0d 25 6c 2c 64  |%),ox%,oy%).%l,d|
00007730  72 61 67 78 25 3d 78 25  2b 34 2d 6f 78 25 3a 64  |ragx%=x%+4-ox%:d|
00007740  72 61 67 79 25 3d 79 25  2b 38 2d 6f 79 25 3a 64  |ragy%=y%+8-oy%:d|
00007750  72 61 67 25 3d 2d 31 0d  25 76 31 69 6e 69 74 78  |rag%=-1.%v1initx|
00007760  25 3d 64 72 61 67 78 25  3a 69 6e 69 74 79 25 3d  |%=dragx%:inity%=|
00007770  64 72 61 67 79 25 3a 69  6e 69 74 6e 75 6d 25 3d  |dragy%:initnum%=|
00007780  64 72 61 67 76 61 6c 25  0d 25 80 10 f2 6d 6f 76  |dragval%.%...mov|
00007790  65 5f 6e 75 6d 62 65 72  0d 25 8a 05 e1 0d 25 94  |e_number.%....%.|
000077a0  04 0d 25 9e 04 0d 25 a8  1b dd 20 f2 72 75 62 5f  |..%...%... .rub_|
000077b0  6f 75 74 5f 73 74 72 69  6b 65 28 64 69 67 25 29  |out_strike(dig%)|
000077c0  0d 25 b2 0b ea 20 78 25  2c 79 25 0d 25 bc 1a e7  |.%... x%,y%.%...|
000077d0  20 73 74 72 69 6b 65 24  28 64 69 67 25 29 3d 22  | strike$(dig%)="|
000077e0  22 20 8c 20 e1 0d 25 c6  14 73 74 72 69 6b 65 24  |" . ..%..strike$|
000077f0  28 64 69 67 25 29 3d 22  22 0d 25 d0 1a f2 73 74  |(dig%)="".%...st|
00007800  72 69 6b 65 5f 72 65 64  72 61 77 28 64 69 67 25  |rike_redraw(dig%|
00007810  2c 30 29 0d 25 da 05 e1  0d 25 e4 04 0d 25 ee 04  |,0).%....%...%..|
00007820  0d 25 f8 1a dd 20 f2 72  65 6d 6f 76 65 5f 73 74  |.%... .remove_st|
00007830  72 69 6b 65 28 64 69 67  25 29 0d 26 02 1a e7 20  |rike(dig%).&... |
00007840  73 74 72 69 6b 65 24 28  64 69 67 25 29 3d 22 22  |strike$(dig%)=""|
00007850  20 8c 20 e1 0d 26 0c 19  f2 72 75 62 5f 6f 75 74  | . ..&...rub_out|
00007860  5f 73 74 72 69 6b 65 28  64 69 67 25 29 0d 26 16  |_strike(dig%).&.|
00007870  0f 64 72 61 67 76 61 6c  25 3d 33 30 0d 26 20 13  |.dragval%=30.& .|
00007880  f2 70 69 63 6b 5f 75 70  5f 6e 75 6d 62 65 72 0d  |.pick_up_number.|
00007890  26 2a 05 e1 0d 26 34 04  0d 26 3e 04 0d 26 48 15  |&*...&4..&>..&H.|
000078a0  dd 20 f2 73 65 74 5f 75  70 5f 72 75 62 5f 6f 75  |. .set_up_rub_ou|
000078b0  74 0d 26 52 53 e7 20 64  72 61 67 25 20 8c 20 c8  |t.&RS. drag% . .|
000078c0  99 22 57 69 6d 70 5f 46  6f 72 63 65 52 65 64 72  |."Wimp_ForceRedr|
000078d0  61 77 22 2c 68 61 6e 64  6c 65 25 28 67 61 6d 65  |aw",handle%(game|
000078e0  25 29 2c 64 72 61 67 78  25 2c 64 72 61 67 79 25  |%),dragx%,dragy%|
000078f0  2c 64 72 61 67 78 25 2b  37 35 2c 64 72 61 67 79  |,dragx%+75,dragy|
00007900  25 2b 37 35 0d 26 5c 1a  64 72 61 67 76 61 6c 25  |%+75.&\.dragval%|
00007910  3d 31 30 3a 72 75 62 62  65 72 25 3d 2d 31 0d 26  |=10:rubber%=-1.&|
00007920  66 0e 2a 50 4f 49 4e 54  45 52 20 30 0d 26 70 13  |f.*POINTER 0.&p.|
00007930  f2 70 69 63 6b 5f 75 70  5f 6e 75 6d 62 65 72 0d  |.pick_up_number.|
00007940  26 7a 05 e1 0d 26 84 04  0d 26 8e 04 0d 26 98 15  |&z...&...&...&..|
00007950  dd 20 f2 72 75 62 5f 6f  75 74 28 69 63 6f 6e 25  |. .rub_out(icon%|
00007960  29 0d 26 a2 1c ea 20 78  25 2c 59 33 25 2c 4d 6f  |).&... x%,Y3%,Mo|
00007970  64 65 25 2c 66 6c 67 25  2c 64 69 67 25 0d 26 ac  |de%,flg%,dig%.&.|
00007980  2b 4d 6f 64 65 25 3d 2d  28 6d 6f 64 65 25 28 4e  |+Mode%=-(mode%(N|
00007990  61 6d 65 4e 6f 25 29 3d  31 20 80 20 53 43 66 6f  |ameNo%)=1 . SCfo|
000079a0  72 6d 61 74 25 3d 32 29  0d 26 b6 04 0d 26 c0 13  |rmat%=2).&...&..|
000079b0  e7 20 53 43 66 6f 72 6d  61 74 25 3d 32 20 8c 0d  |. SCformat%=2 ..|
000079c0  26 ca 22 20 64 69 67 25  3d 69 63 6f 6e 25 2d 31  |&." dig%=icon%-1|
000079d0  38 3a 66 6c 67 25 3d 28  69 63 6f 6e 25 3e 32 36  |8:flg%=(icon%>26|
000079e0  29 0d 26 d4 1b 20 59 33  25 3d 79 33 25 3a 78 25  |).&.. Y3%=y3%:x%|
000079f0  3d a4 64 69 67 78 28 64  69 67 25 29 0d 26 de 05  |=.digx(dig%).&..|
00007a00  cc 0d 26 e8 22 20 64 69  67 25 3d 69 63 6f 6e 25  |..&." dig%=icon%|
00007a10  2d 32 38 3a 66 6c 67 25  3d 28 69 63 6f 6e 25 3c  |-28:flg%=(icon%<|
00007a20  32 38 29 0d 26 f2 25 20  59 33 25 3d 2d 35 39 36  |28).&.% Y3%=-596|
00007a30  3a 78 25 3d a4 70 72 69  6e 74 64 69 67 78 28 39  |:x%=.printdigx(9|
00007a40  30 32 2c 64 69 67 25 29  0d 26 fc 05 cd 0d 27 06  |02,dig%).&....'.|
00007a50  0e e7 20 66 6c 67 25 20  8c 20 e1 0d 27 10 18 e7  |.. flg% . ..'...|
00007a60  20 64 69 67 33 24 28 64  69 67 25 29 3d 22 22 20  | dig3$(dig%)="" |
00007a70  8c 20 e1 0d 27 1a 04 0d  27 24 1f 73 75 6d 25 20  |. ..'...'$.sum% |
00007a80  2d 3d bb 64 69 67 33 24  28 64 69 67 25 29 2a 31  |-=.dig3$(dig%)*1|
00007a90  30 5e 64 69 67 25 0d 27  2e 35 64 69 67 33 24 28  |0^dig%.'.5dig3$(|
00007aa0  64 69 67 25 29 3d 22 22  3a 6e 65 78 74 6d 65 73  |dig%)="":nextmes|
00007ab0  73 25 3d 2d 28 48 65 6c  70 6c 65 76 25 3d 35 20  |s%=-(Helplev%=5 |
00007ac0  80 20 4d 6f 64 65 25 3d  2d 31 29 0d 27 38 3b c8  |. Mode%=-1).'8;.|
00007ad0  99 22 57 69 6d 70 5f 46  6f 72 63 65 52 65 64 72  |."Wimp_ForceRedr|
00007ae0  61 77 22 2c 68 61 6e 64  6c 65 25 28 67 61 6d 65  |aw",handle%(game|
00007af0  25 29 2c 78 25 2c 59 33  25 2c 78 25 2b 37 35 2c  |%),x%,Y3%,x%+75,|
00007b00  59 33 25 2b 37 35 0d 27  42 39 e7 20 4d 6f 64 65  |Y3%+75.'B9. Mode|
00007b10  25 3d 31 20 80 20 64 69  67 25 3c 6e 65 78 74 64  |%=1 . dig%<nextd|
00007b20  69 67 25 20 8c 20 f2 64  65 6c 65 74 65 5f 63 75  |ig% . .delete_cu|
00007b30  72 72 65 6e 74 5f 62 6f  78 28 64 69 67 25 29 0d  |rrent_box(dig%).|
00007b40  27 4c 21 e7 20 73 75 6d  25 3d 30 20 8c 20 f2 73  |'L!. sum%=0 . .s|
00007b50  65 74 5f 74 6f 70 5f 69  63 6f 6e 28 30 2c 30 29  |et_top_icon(0,0)|
00007b60  0d 27 56 27 e7 20 6d 65  73 73 61 67 65 24 28 30  |.'V'. message$(0|
00007b70  29 3c 3e 22 22 20 8c 20  f2 72 65 6d 6f 76 65 5f  |)<>"" . .remove_|
00007b80  6d 65 73 73 61 67 65 0d  27 60 25 6e 65 78 74 6d  |message.'`%nextm|
00007b90  65 73 73 25 3d 2d 28 48  65 6c 70 6c 65 76 25 3d  |ess%=-(Helplev%=|
00007ba0  35 20 80 20 4d 6f 64 65  25 3d 31 29 0d 27 6a 05  |5 . Mode%=1).'j.|
00007bb0  e1 0d 27 74 04 0d 27 7e  04 0d 27 88 13 dd 20 a4  |..'t..'~..'... .|
00007bc0  63 68 65 63 6b 5f 72 75  62 6f 75 74 0d 27 92 13  |check_rubout.'..|
00007bd0  ea 20 6e 25 3a 6e 25 3d  72 75 62 64 69 67 25 0d  |. n%:n%=rubdig%.|
00007be0  27 9c 05 f5 0d 27 a6 0b  20 6e 25 20 2b 3d 31 0d  |'....'.. n% +=1.|
00007bf0  27 b0 2d fd 20 64 69 67  33 24 28 6e 25 29 3d 22  |'.-. dig3$(n%)="|
00007c00  22 20 84 20 6e 25 3d 6e  65 78 74 64 69 67 25 20  |" . n%=nextdig% |
00007c10  84 20 6e 25 3d 61 6e 73  6c 69 6d 25 0d 27 ba 2c  |. n%=anslim%.'.,|
00007c20  e7 20 64 69 67 33 24 28  6e 25 29 3d 22 22 20 80  |. dig3$(n%)="" .|
00007c30  20 6e 25 3c 6e 65 78 74  64 69 67 25 20 8c 20 3d  | n%<nextdig% . =|
00007c40  6e 25 20 8b 20 3d 2d 31  0d 27 c4 04 0d 27 ce 04  |n% . =-1.'...'..|
00007c50  0d 27 d8 18 dd 20 f2 70  6c 61 63 65 5f 63 61 72  |.'... .place_car|
00007c60  72 79 28 70 6f 73 25 29  0d 27 e2 34 ea 20 78 25  |ry(pos%).'.4. x%|
00007c70  2c 78 32 25 2c 68 25 2c  76 61 6c 69 64 25 2c 64  |,x2%,h%,valid%,d|
00007c80  69 67 63 61 73 65 25 3a  64 6f 75 62 6c 65 25 3d  |igcase%:double%=|
00007c90  30 3a 64 69 67 63 61 73  65 25 3d 30 0d 27 ec 04  |0:digcase%=0.'..|
00007ca0  0d 27 f6 72 76 61 6c 69  64 25 3d 28 70 6f 73 25  |.'.rvalid%=(pos%|
00007cb0  3d 6e 65 78 74 64 69 67  25 2b 42 73 74 65 70 25  |=nextdig%+Bstep%|
00007cc0  20 80 20 63 61 72 72 79  25 3d 2d 31 20 80 20 73  | . carry%=-1 . s|
00007cd0  74 72 69 6b 65 25 3d 30  20 84 20 43 64 6f 6e 65  |trike%=0 . Cdone|
00007ce0  25 28 70 6f 73 25 29 3d  2d 31 20 84 20 48 65 6c  |%(pos%)=-1 . Hel|
00007cf0  70 6c 65 76 25 3c 3d 32  20 80 20 70 6f 73 25 3c  |plev%<=2 . pos%<|
00007d00  3d 61 6e 73 6c 69 6d 25  20 84 20 74 72 79 25 3e  |=anslim% . try%>|
00007d10  30 29 0d 28 00 34 e7 20  6d 6f 64 65 25 28 4e 61  |0).(.4. mode%(Na|
00007d20  6d 65 4e 6f 25 29 3d 31  20 80 20 76 61 6c 69 64  |meNo%)=1 . valid|
00007d30  25 3d 30 20 8c 20 f2 6d  65 73 73 61 67 65 28 22  |%=0 . .message("|
00007d40  70 6c 22 29 3a e1 0d 28  0a 53 e7 20 6d 6f 64 65  |pl"):..(.S. mode|
00007d50  25 28 4e 61 6d 65 4e 6f  25 29 3d 31 20 80 20 48  |%(NameNo%)=1 . H|
00007d60  65 6c 70 6c 65 76 25 3d  35 20 80 20 a4 63 68 65  |elplev%=5 . .che|
00007d70  63 6b 5f 64 69 67 5f 76  61 6c 28 70 6f 73 25 2c  |ck_dig_val(pos%,|
00007d80  22 63 22 29 3d 30 20 8c  20 f2 6d 65 73 73 61 67  |"c")=0 . .messag|
00007d90  65 28 22 63 6b 22 29 3a  e1 0d 28 14 6d e7 20 6d  |e("ck"):..(.m. m|
00007da0  6f 64 65 25 28 4e 61 6d  65 4e 6f 25 29 3d 30 20  |ode%(NameNo%)=0 |
00007db0  80 20 28 70 6f 73 25 3e  61 6e 73 6c 69 6d 25 20  |. (pos%>anslim% |
00007dc0  80 20 6f 70 65 72 61 74  6f 72 25 28 4e 61 6d 65  |. operator%(Name|
00007dd0  4e 6f 25 29 3d 31 20 84  20 70 6f 73 25 3e a4 71  |No%)=1 . pos%>.q|
00007de0  75 65 73 74 5f 6c 69 6d  69 74 20 80 20 6f 70 65  |uest_limit . ope|
00007df0  72 61 74 6f 72 25 28 4e  61 6d 65 4e 6f 25 29 3d  |rator%(NameNo%)=|
00007e00  32 29 20 8c 20 e1 0d 28  1e 04 0d 28 28 5c e7 20  |2) . ..(...((\. |
00007e10  6d 65 73 73 61 67 65 24  28 31 29 3c 3e 22 22 20  |message$(1)<>"" |
00007e20  80 20 6d 6f 64 65 25 28  4e 61 6d 65 4e 6f 25 29  |. mode%(NameNo%)|
00007e30  3d 31 20 80 20 ac 28 48  65 6c 70 6c 65 76 25 3d  |=1 . .(Helplev%=|
00007e40  35 20 80 20 43 64 6f 6e  65 25 28 70 6f 73 25 29  |5 . Cdone%(pos%)|
00007e50  3d 2d 31 29 20 8c 20 f2  72 65 6d 6f 76 65 5f 6d  |=-1) . .remove_m|
00007e60  65 73 73 61 67 65 0d 28  32 7e 6e 65 78 74 6d 65  |essage.(2~nextme|
00007e70  73 73 25 3d 2d 28 48 65  6c 70 6c 65 76 25 3d 35  |ss%=-(Helplev%=5|
00007e80  20 80 20 6e 65 78 74 64  69 67 25 3c 3d 61 6e 73  | . nextdig%<=ans|
00007e90  6c 69 6d 25 20 80 20 6d  6f 64 65 25 28 4e 61 6d  |lim% . mode%(Nam|
00007ea0  65 4e 6f 25 29 3d 31 20  80 20 28 43 64 6f 6e 65  |eNo%)=1 . (Cdone|
00007eb0  25 28 70 6f 73 25 29 3d  30 20 84 20 43 64 6f 6e  |%(pos%)=0 . Cdon|
00007ec0  65 25 28 70 6f 73 25 29  3d 2d 31 20 80 20 a4 63  |e%(pos%)=-1 . .c|
00007ed0  61 72 72 79 5f 32 64 69  67 28 70 6f 73 25 29 3d  |arry_2dig(pos%)=|
00007ee0  2d 31 29 29 0d 28 3c 04  0d 28 46 49 c8 99 22 57  |-1)).(<..(FI.."W|
00007ef0  69 6d 70 5f 46 6f 72 63  65 52 65 64 72 61 77 22  |imp_ForceRedraw"|
00007f00  2c 68 61 6e 64 6c 65 25  28 67 61 6d 65 25 29 2c  |,handle%(game%),|
00007f10  64 72 61 67 78 25 2c 64  72 61 67 79 25 2c 64 72  |dragx%,dragy%,dr|
00007f20  61 67 78 25 2b 37 35 2c  64 72 61 67 79 25 2b 37  |agx%+75,dragy%+7|
00007f30  35 0d 28 50 04 0d 28 5a  53 e7 20 6f 70 65 72 61  |5.(P..(ZS. opera|
00007f40  74 6f 72 25 28 4e 61 6d  65 4e 6f 25 29 3d 32 20  |tor%(NameNo%)=2 |
00007f50  80 20 a9 20 63 61 72 72  79 24 28 70 6f 73 25 29  |. . carry$(pos%)|
00007f60  3d 31 20 80 20 64 72 61  67 76 61 6c 25 3d 31 20  |=1 . dragval%=1 |
00007f70  80 20 a4 63 61 72 72 79  5f 32 64 69 67 28 70 6f  |. .carry_2dig(po|
00007f80  73 25 29 3d 2d 31 20 8c  0d 28 64 22 20 63 61 72  |s%)=-1 ..(d" car|
00007f90  72 79 24 28 70 6f 73 25  29 3d 22 31 22 2b 63 61  |ry$(pos%)="1"+ca|
00007fa0  72 72 79 24 28 70 6f 73  25 29 0d 28 6e 3e 20 e7  |rry$(pos%).(n> .|
00007fb0  20 43 64 6f 6e 65 25 28  70 6f 73 25 29 3d 2d 31  | Cdone%(pos%)=-1|
00007fc0  20 80 20 70 6f 73 25 3d  6e 65 78 74 64 69 67 25  | . pos%=nextdig%|
00007fd0  2b 42 73 74 65 70 25 20  8c 20 43 64 6f 6e 65 25  |+Bstep% . Cdone%|
00007fe0  28 70 6f 73 25 29 3d 30  0d 28 78 05 cc 0d 28 82  |(pos%)=0.(x...(.|
00007ff0  1b 20 63 61 72 72 79 24  28 70 6f 73 25 29 3d c3  |. carry$(pos%)=.|
00008000  64 72 61 67 76 61 6c 25  0d 28 8c 05 cd 0d 28 96  |dragval%.(....(.|
00008010  04 0d 28 a0 0b 64 72 61  67 25 3d 30 0d 28 aa 19  |..(..drag%=0.(..|
00008020  f2 63 61 72 72 79 5f 72  65 64 72 61 77 28 70 6f  |.carry_redraw(po|
00008030  73 25 2c 30 29 0d 28 b4  4b e7 20 48 65 6c 70 6c  |s%,0).(.K. Helpl|
00008040  65 76 25 3d 32 20 80 20  73 74 5f 64 69 67 25 28  |ev%=2 . st_dig%(|
00008050  70 6f 73 25 29 3d 31 20  80 20 73 74 72 69 6b 65  |pos%)=1 . strike|
00008060  24 28 70 6f 73 25 29 3d  22 22 20 84 20 43 64 6f  |$(pos%)="" . Cdo|
00008070  6e 65 25 28 70 6f 73 25  29 3d 2d 31 20 8c 20 e1  |ne%(pos%)=-1 . .|
00008080  0d 28 be 13 43 64 6f 6e  65 25 28 70 6f 73 25 29  |.(..Cdone%(pos%)|
00008090  3d 2d 31 0d 28 c8 04 0d  28 d2 2f e7 20 6d 6f 64  |=-1.(...(./. mod|
000080a0  65 25 28 4e 61 6d 65 4e  6f 25 29 3d 31 20 80 20  |e%(NameNo%)=1 . |
000080b0  6f 70 65 72 61 74 6f 72  25 28 4e 61 6d 65 4e 6f  |operator%(NameNo|
000080c0  25 29 3d 32 20 8c 0d 28  dc 3f 20 e7 20 70 6f 73  |%)=2 ..(.? . pos|
000080d0  25 3d 6e 65 78 74 64 69  67 25 20 8c 20 72 65 64  |%=nextdig% . red|
000080e0  75 63 65 25 3d 30 3a 63  61 72 72 79 25 3d 30 3a  |uce%=0:carry%=0:|
000080f0  f4 20 54 72 69 67 67 65  72 73 20 6e 65 78 74 20  |. Triggers next |
00008100  64 69 67 69 74 0d 28 e6  4c 20 e7 20 a4 63 61 72  |digit.(.L . .car|
00008110  72 79 5f 32 64 69 67 28  70 6f 73 25 29 3d 2d 31  |ry_2dig(pos%)=-1|
00008120  20 80 20 a9 63 61 72 72  79 24 28 70 6f 73 25 29  | . .carry$(pos%)|
00008130  3d 31 20 80 20 48 65 6c  70 6c 65 76 25 3d 32 20  |=1 . Helplev%=2 |
00008140  80 20 70 6f 73 25 3d 6e  65 78 74 64 69 67 25 20  |. pos%=nextdig% |
00008150  8c 0d 28 f0 4f 20 20 e7  20 73 74 72 69 6b 65 24  |..(.O  . strike$|
00008160  28 70 6f 73 25 2b 31 29  3d 22 2f 22 20 8c 20 64  |(pos%+1)="/" . d|
00008170  69 67 63 61 73 65 25 3d  2d 31 20 8b 20 f2 63 6f  |igcase%=-1 . .co|
00008180  75 6e 74 5f 73 74 65 70  73 3a 70 6f 73 25 3d 6e  |unt_steps:pos%=n|
00008190  65 78 74 64 69 67 25 2b  42 73 74 65 70 25 2b 31  |extdig%+Bstep%+1|
000081a0  0d 28 fa 1b 20 20 42 73  74 65 70 25 20 2b 3d 31  |.(..  Bstep% +=1|
000081b0  3a 72 65 64 75 63 65 25  3d 2d 31 0d 29 04 06 20  |:reduce%=-1.).. |
000081c0  cd 0d 29 0e 05 cd 0d 29  18 04 0d 29 22 2f e7 20  |..)....)...)"/. |
000081d0  6d 6f 64 65 25 28 4e 61  6d 65 4e 6f 25 29 3d 31  |mode%(NameNo%)=1|
000081e0  20 80 20 70 6f 73 25 3d  6e 65 78 74 64 69 67 25  | . pos%=nextdig%|
000081f0  2b 42 73 74 65 70 25 20  8c 0d 29 2c 16 20 f4 20  |+Bstep% ..),. . |
00008200  43 64 6f 6e 65 25 28 70  6f 73 25 29 3d 2d 31 0d  |Cdone%(pos%)=-1.|
00008210  29 36 1d 20 e7 20 6f 70  65 72 61 74 6f 72 25 28  |)6. . operator%(|
00008220  4e 61 6d 65 4e 6f 25 29  3d 31 20 8c 0d 29 40 30  |NameNo%)=1 ..)@0|
00008230  20 20 e7 20 48 65 6c 70  6c 65 76 25 3e 32 20 8c  |  . Helplev%>2 .|
00008240  20 f2 64 69 67 5f 63 61  72 72 79 5f 72 65 64 72  | .dig_carry_redr|
00008250  61 77 28 6e 65 78 74 64  69 67 25 29 0d 29 4a 20  |aw(nextdig%).)J |
00008260  20 20 e7 20 70 6f 73 25  3d 6e 65 78 74 64 69 67  |  . pos%=nextdig|
00008270  25 20 8c 20 63 61 72 72  79 25 3d 30 0d 29 54 06  |% . carry%=0.)T.|
00008280  20 cc 0d 29 5e 14 20 20  e7 20 72 65 64 75 63 65  | ..)^.  . reduce|
00008290  25 3d 2d 31 20 8c 0d 29  68 22 20 20 20 72 65 64  |%=-1 ..)h"   red|
000082a0  75 63 65 25 3d 64 69 67  63 61 73 65 25 3a 42 73  |uce%=digcase%:Bs|
000082b0  74 65 70 25 20 2d 3d 31  0d 29 72 43 20 20 20 e7  |tep% -=1.)rC   .|
000082c0  20 73 74 72 69 6b 65 24  28 6e 65 78 74 64 69 67  | strike$(nextdig|
000082d0  25 2b 42 73 74 65 70 25  29 3d 22 22 20 80 20 73  |%+Bstep%)="" . s|
000082e0  74 5f 64 69 67 25 28 6e  65 78 74 64 69 67 25 2b  |t_dig%(nextdig%+|
000082f0  42 73 74 65 70 25 29 3d  31 20 8c 0d 29 7c 1c 20  |Bstep%)=1 ..)|. |
00008300  20 20 20 73 74 72 69 6b  65 25 3d 2d 31 3a 63 61  |   strike%=-1:ca|
00008310  72 72 79 25 3d 2d 31 0d  29 86 36 20 20 20 20 e7  |rry%=-1.).6    .|
00008320  20 48 65 6c 70 6c 65 76  25 3e 32 20 8c 20 f2 73  | Helplev%>2 . .s|
00008330  74 72 69 6b 65 5f 72 65  64 72 61 77 28 6e 65 78  |trike_redraw(nex|
00008340  74 64 69 67 25 2c 42 73  74 65 70 25 29 0d 29 90  |tdig%,Bstep%).).|
00008350  08 20 20 20 cc 0d 29 9a  11 20 20 20 20 72 65 64  |.   ..)..    red|
00008360  75 63 65 25 3d 30 0d 29  a4 3b 20 20 20 20 e7 20  |uce%=0.).;    . |
00008370  42 73 74 65 70 25 3d 30  20 80 20 bb 63 61 72 72  |Bstep%=0 . .carr|
00008380  79 24 28 6e 65 78 74 64  69 67 25 29 3d 63 61 72  |y$(nextdig%)=car|
00008390  5f 64 69 67 25 28 6e 65  78 74 64 69 67 25 29 20  |_dig%(nextdig%) |
000083a0  8c 0d 29 ae 38 20 20 20  20 20 e7 20 48 65 6c 70  |..).8     . Help|
000083b0  6c 65 76 25 3e 32 20 8c  20 f2 64 69 67 69 74 5f  |lev%>2 . .digit_|
000083c0  72 65 64 72 61 77 28 6e  65 78 74 64 69 67 25 29  |redraw(nextdig%)|
000083d0  3a 63 61 72 72 79 25 3d  30 0d 29 b8 09 20 20 20  |:carry%=0.)..   |
000083e0  20 cc 0d 29 c2 36 20 20  20 20 20 e7 20 48 65 6c  | ..).6     . Hel|
000083f0  70 6c 65 76 25 3e 32 20  8c 20 f2 63 61 72 72 79  |plev%>2 . .carry|
00008400  5f 72 65 64 72 61 77 28  6e 65 78 74 64 69 67 25  |_redraw(nextdig%|
00008410  2c 42 73 74 65 70 25 29  0d 29 cc 09 20 20 20 20  |,Bstep%).)..    |
00008420  cd 0d 29 d6 08 20 20 20  cd 0d 29 e0 07 20 20 cc  |..)..   ..)..  .|
00008430  0d 29 ea 2d 20 20 20 e7  20 48 65 6c 70 6c 65 76  |.).-   . Helplev|
00008440  25 3e 32 20 8c 20 f2 64  69 67 69 74 5f 72 65 64  |%>2 . .digit_red|
00008450  72 61 77 28 6e 65 78 74  64 69 67 25 29 0d 29 f4  |raw(nextdig%).).|
00008460  22 20 20 20 63 61 72 72  79 25 3d 30 3a 72 65 64  |"   carry%=0:red|
00008470  75 63 65 25 3d 30 3a 42  73 74 65 70 25 3d 30 0d  |uce%=0:Bstep%=0.|
00008480  29 fe 07 20 20 cd 0d 2a  08 06 20 cd 0d 2a 12 05  |)..  ..*.. ..*..|
00008490  cd 0d 2a 1c 05 e1 0d 2a  26 04 0d 2a 30 04 0d 2a  |..*....*&..*0..*|
000084a0  3a 4d dd 20 a4 63 61 72  72 79 5f 32 64 69 67 28  |:M. .carry_2dig(|
000084b0  70 6f 73 25 29 3d 63 61  72 5f 64 69 67 25 28 70  |pos%)=car_dig%(p|
000084c0  6f 73 25 29 3e 39 20 80  20 63 61 72 5f 64 69 67  |os%)>9 . car_dig|
000084d0  25 28 70 6f 73 25 29 20  83 20 31 30 3c 3e bb 20  |%(pos%) . 10<>. |
000084e0  64 69 67 31 24 28 70 6f  73 25 29 0d 2a 44 04 0d  |dig1$(pos%).*D..|
000084f0  2a 4e 04 0d 2a 58 21 dd  20 f2 63 61 72 72 79 5f  |*N..*X!. .carry_|
00008500  70 6f 73 78 28 70 6f 73  25 2c f8 20 78 25 2c f8  |posx(pos%,. x%,.|
00008510  20 68 25 29 0d 2a 62 1c  e7 20 6f 70 65 72 61 74  | h%).*b.. operat|
00008520  6f 72 25 28 4e 61 6d 65  4e 6f 25 29 3d 31 20 8c  |or%(NameNo%)=1 .|
00008530  0d 2a 6c 1c 20 78 25 3d  a4 64 69 67 78 28 70 6f  |.*l. x%=.digx(po|
00008540  73 25 29 2b 33 37 3a 68  25 3d 32 36 0d 2a 76 05  |s%)+37:h%=26.*v.|
00008550  cc 0d 2a 80 1c 20 78 25  3d a4 64 69 67 78 28 70  |..*.. x%=.digx(p|
00008560  6f 73 25 29 2d 31 34 3a  68 25 3d 33 35 0d 2a 8a  |os%)-14:h%=35.*.|
00008570  05 cd 0d 2a 94 05 e1 0d  2a 9e 04 0d 2a a8 04 0d  |...*....*...*...|
00008580  2a b2 19 dd 20 f2 72 65  6d 6f 76 65 5f 63 61 72  |*... .remove_car|
00008590  72 79 28 70 6f 73 25 29  0d 2a bc 0b ea 20 78 25  |ry(pos%).*... x%|
000085a0  2c 68 25 0d 2a c6 19 e7  20 63 61 72 72 79 24 28  |,h%.*... carry$(|
000085b0  70 6f 73 25 29 3d 22 22  20 8c 20 e1 0d 2a d0 1f  |pos%)="" . ..*..|
000085c0  f2 73 70 6c 69 74 5f 63  61 72 72 79 28 70 6f 73  |.split_carry(pos|
000085d0  25 2c 64 72 61 67 76 61  6c 25 29 0d 2a da 19 f2  |%,dragval%).*...|
000085e0  63 61 72 72 79 5f 72 65  64 72 61 77 28 70 6f 73  |carry_redraw(pos|
000085f0  25 2c 30 29 0d 2a e4 0d  72 75 62 62 65 72 25 3d  |%,0).*..rubber%=|
00008600  30 0d 2a ee 23 c8 99 22  57 69 6d 70 5f 47 65 74  |0.*.#.."Wimp_Get|
00008610  50 6f 69 6e 74 65 72 49  6e 66 6f 22 2c 2c 62 6c  |PointerInfo",,bl|
00008620  6f 63 6b 25 0d 2a f8 13  f2 70 69 63 6b 5f 75 70  |ock%.*...pick_up|
00008630  5f 6e 75 6d 62 65 72 0d  2b 02 10 f2 6d 6f 76 65  |_number.+...move|
00008640  5f 6e 75 6d 62 65 72 0d  2b 0c 05 e1 0d 2b 16 04  |_number.+....+..|
00008650  0d 2b 20 04 0d 2b 2a 20  dd 20 f2 73 70 6c 69 74  |.+ ..+* . .split|
00008660  5f 63 61 72 72 79 28 70  6f 73 25 2c f8 20 6c 69  |_carry(pos%,. li|
00008670  66 74 25 29 0d 2b 34 1d  ea 20 78 63 6f 25 2c 6c  |ft%).+4.. xco%,l|
00008680  24 2c 72 24 3a 78 63 6f  25 3d 21 62 6c 6f 63 6b  |$,r$:xco%=!block|
00008690  25 0d 2b 3e 18 e7 20 a9  20 63 61 72 72 79 24 28  |%.+>.. . carry$(|
000086a0  70 6f 73 25 29 3e 31 20  8c 0d 2b 48 2e 20 f2 77  |pos%)>1 ..+H. .w|
000086b0  6f 72 6b 5f 61 72 65 61  5f 6f 72 69 67 69 6e 28  |ork_area_origin(|
000086c0  68 61 6e 64 6c 65 25 28  67 61 6d 65 25 29 2c 6f  |handle%(game%),o|
000086d0  78 25 2c 6f 79 25 29 0d  2b 52 2c 20 6c 24 3d c0  |x%,oy%).+R, l$=.|
000086e0  63 61 72 72 79 24 28 70  6f 73 25 29 2c 31 29 3a  |carry$(pos%),1):|
000086f0  72 24 3d c2 63 61 72 72  79 24 28 70 6f 73 25 29  |r$=.carry$(pos%)|
00008700  2c 31 29 0d 2b 5c 56 20  e7 20 78 63 6f 25 2d 6f  |,1).+\V . xco%-o|
00008710  78 25 3c a4 64 69 67 78  28 70 6f 73 25 29 2b 31  |x%<.digx(pos%)+1|
00008720  34 20 8c 20 63 61 72 72  79 24 28 70 6f 73 25 29  |4 . carry$(pos%)|
00008730  3d 72 24 3a 6c 69 66 74  25 3d bb 6c 24 20 8b 20  |=r$:lift%=.l$ . |
00008740  63 61 72 72 79 24 28 70  6f 73 25 29 3d 6c 24 3a  |carry$(pos%)=l$:|
00008750  6c 69 66 74 25 3d bb 72  24 0d 2b 66 05 cc 0d 2b  |lift%=.r$.+f...+|
00008760  70 18 20 6c 69 66 74 25  3d bb 63 61 72 72 79 24  |p. lift%=.carry$|
00008770  28 70 6f 73 25 29 0d 2b  7a 14 20 63 61 72 72 79  |(pos%).+z. carry|
00008780  24 28 70 6f 73 25 29 3d  22 22 0d 2b 84 05 cd 0d  |$(pos%)="".+....|
00008790  2b 8e 05 e1 0d 2b 98 04  0d 2b a2 04 0d 2b ac 1a  |+....+...+...+..|
000087a0  dd 20 f2 72 75 62 5f 6f  75 74 5f 63 61 72 72 79  |. .rub_out_carry|
000087b0  28 70 6f 73 25 29 0d 2b  b6 20 ea 20 78 25 2c 68  |(pos%).+. . x%,h|
000087c0  25 2c 78 63 6f 25 2c 6c  25 3a 78 63 6f 25 3d 21  |%,xco%,l%:xco%=!|
000087d0  62 6c 6f 63 6b 25 0d 2b  c0 19 e7 20 63 61 72 72  |block%.+... carr|
000087e0  79 24 28 70 6f 73 25 29  3d 22 22 20 8c 20 e1 0d  |y$(pos%)="" . ..|
000087f0  2b ca 19 f2 73 70 6c 69  74 5f 63 61 72 72 79 28  |+...split_carry(|
00008800  70 6f 73 25 2c 6c 25 29  0d 2b d4 1b f2 63 61 72  |pos%,l%).+...car|
00008810  72 79 5f 70 6f 73 78 28  70 6f 73 25 2c 78 25 2c  |ry_posx(pos%,x%,|
00008820  68 25 29 0d 2b de 3f c8  99 22 57 69 6d 70 5f 46  |h%).+.?.."Wimp_F|
00008830  6f 72 63 65 52 65 64 72  61 77 22 2c 68 61 6e 64  |orceRedraw",hand|
00008840  6c 65 25 28 67 61 6d 65  25 29 2c 78 25 2c 79 63  |le%(game%),x%,yc|
00008850  61 72 25 2c 78 25 2b 34  32 2c 79 63 61 72 25 2b  |ar%,x%+42,ycar%+|
00008860  68 25 0d 2b e8 05 e1 0d  2b f2 04 0d 2b fc 04 0d  |h%.+....+...+...|
00008870  2c 06 0b dd 20 f2 67 72  69 64 0d 2c 10 0b ea 20  |,... .grid.,... |
00008880  78 25 2c 79 25 0d 2c 1a  19 c8 99 22 57 69 6d 70  |x%,y%.,...."Wimp|
00008890  5f 53 65 74 43 6f 6c 6f  75 72 22 2c 31 35 0d 2c  |_SetColour",15.,|
000088a0  24 16 e3 20 78 25 3d 30  20 b8 20 31 32 37 35 20  |$.. x%=0 . 1275 |
000088b0  88 20 37 35 0d 2c 2e 26  20 ec 20 6f 78 25 2b 78  |. 75.,.& . ox%+x|
000088c0  25 2c 6f 79 25 2d 39 30  30 3a df 20 6f 78 25 2b  |%,oy%-900:. ox%+|
000088d0  78 25 2c 6f 79 25 2d 31  35 30 0d 2c 38 05 ed 0d  |x%,oy%-150.,8...|
000088e0  2c 42 19 e3 20 79 25 3d  2d 39 30 30 20 b8 20 2d  |,B.. y%=-900 . -|
000088f0  31 35 30 20 88 20 37 35  0d 2c 4c 23 20 ec 20 6f  |150 . 75.,L# . o|
00008900  78 25 2c 6f 79 25 2b 79  25 3a df 20 6f 78 25 2b  |x%,oy%+y%:. ox%+|
00008910  31 32 37 35 2c 6f 79 25  2b 79 25 0d 2c 56 05 ed  |1275,oy%+y%.,V..|
00008920  0d 2c 60 1c ec 20 6f 78  25 2c 6f 79 25 3a df 20  |.,`.. ox%,oy%:. |
00008930  6f 78 25 2b 31 32 37 35  2c 6f 79 25 0d 2c 6a 04  |ox%+1275,oy%.,j.|
00008940  0d 2c 74 4a c8 99 22 4f  53 5f 53 70 72 69 74 65  |.,tJ.."OS_Sprite|
00008950  4f 70 22 2c 26 31 33 34  2c 73 61 72 65 61 25 2c  |Op",&134,sarea%,|
00008960  22 6e 75 6d 62 65 72 73  22 2c 6f 78 25 2b 37 35  |"numbers",ox%+75|
00008970  2c 6f 79 25 2d 38 32 35  2c 30 2c 73 63 61 6c 65  |,oy%-825,0,scale|
00008980  32 37 25 2c 74 72 61 6e  73 25 0d 2c 7e 63 e7 20  |27%,trans%.,~c. |
00008990  6f 70 65 72 61 74 6f 72  25 28 4e 61 6d 65 4e 6f  |operator%(NameNo|
000089a0  25 29 3d 32 20 8c 20 c8  99 22 4f 53 5f 53 70 72  |%)=2 . .."OS_Spr|
000089b0  69 74 65 4f 70 22 2c 26  31 33 34 2c 73 61 72 65  |iteOp",&134,sare|
000089c0  61 25 2c 22 73 74 72 69  6b 65 22 2c 6f 78 25 2b  |a%,"strike",ox%+|
000089d0  39 30 30 2c 6f 79 25 2d  38 32 35 2c 30 2c 73 63  |900,oy%-825,0,sc|
000089e0  61 6c 65 32 37 25 2c 74  72 61 6e 73 25 0d 2c 88  |ale27%,trans%.,.|
000089f0  05 e1 0d 2c 92 04 0d 2c  9c 04 0d 2c a6 10 dd 20  |...,...,...,... |
00008a00  f2 73 75 6d 5f 70 61 72  74 73 0d 2c b0 35 ea 20  |.sum_parts.,.5. |
00008a10  78 25 2c 64 25 2c 64 69  67 24 2c 73 68 69 66 74  |x%,d%,dig$,shift|
00008a20  25 2c 78 31 25 2c 73 79  6d 62 6f 6c 25 2c 6c 69  |%,x1%,symbol%,li|
00008a30  6d 51 25 2c 6c 69 6d 25  2c 6c 65 76 65 6c 25 0d  |mQ%,lim%,level%.|
00008a40  2c ba 2c 61 6e 73 6c 69  6d 25 3d a4 61 6e 73 77  |,.,anslim%=.answ|
00008a50  65 72 5f 6c 69 6d 69 74  3a 6c 69 6d 51 25 3d a4  |er_limit:limQ%=.|
00008a60  71 75 65 73 74 5f 6c 69  6d 69 74 0d 2c c4 1b 73  |quest_limit.,..s|
00008a70  79 6d 62 6f 6c 25 3d a4  64 69 67 78 28 6c 69 6d  |ymbol%=.digx(lim|
00008a80  51 25 29 2d 37 35 0d 2c  ce 04 0d 2c d8 18 c8 99  |Q%)-75.,...,....|
00008a90  22 57 69 6d 70 5f 53 65  74 43 6f 6c 6f 75 72 22  |"Wimp_SetColour"|
00008aa0  2c 37 0d 2c e2 40 e7 20  6f 70 65 72 61 74 6f 72  |,7.,.@. operator|
00008ab0  25 28 4e 61 6d 65 4e 6f  25 29 3d 31 20 8c 20 78  |%(NameNo%)=1 . x|
00008ac0  25 3d a4 64 69 67 78 28  61 6e 73 6c 69 6d 25 29  |%=.digx(anslim%)|
00008ad0  20 8b 20 78 25 3d a4 64  69 67 78 28 6c 69 6d 51  | . x%=.digx(limQ|
00008ae0  25 29 0d 2c ec 24 c8 93  20 c8 90 20 6f 78 25 2b  |%).,.$.. .. ox%+|
00008af0  78 25 2c 6f 79 25 2b 79  33 25 2b 36 33 2c 34 35  |x%,oy%+y3%+63,45|
00008b00  30 2d 78 25 2c 38 0d 2c  f6 24 c8 93 20 c8 90 20  |0-x%,8.,.$.. .. |
00008b10  6f 78 25 2b 78 25 2c 6f  79 25 2b 79 33 25 2d 31  |ox%+x%,oy%+y3%-1|
00008b20  32 2c 34 35 30 2d 78 25  2c 38 0d 2d 00 04 0d 2d  |2,450-x%,8.-...-|
00008b30  0a 1c e7 20 6f 70 65 72  61 74 6f 72 25 28 4e 61  |... operator%(Na|
00008b40  6d 65 4e 6f 25 29 3d 31  20 8c 0d 2d 14 4b 20 c8  |meNo%)=1 ..-.K .|
00008b50  99 22 4f 53 5f 53 70 72  69 74 65 4f 70 22 2c 26  |."OS_SpriteOp",&|
00008b60  31 33 34 2c 73 61 72 65  61 25 2c 22 70 6c 75 73  |134,sarea%,"plus|
00008b70  22 2c 6f 78 25 2b 73 79  6d 62 6f 6c 25 2c 6f 79  |",ox%+symbol%,oy|
00008b80  25 2b 79 32 25 2c 30 2c  73 63 61 6c 65 25 2c 74  |%+y2%,0,scale%,t|
00008b90  72 61 6e 73 25 0d 2d 1e  05 cc 0d 2d 28 4c 20 c8  |rans%.-....-(L .|
00008ba0  99 22 4f 53 5f 53 70 72  69 74 65 4f 70 22 2c 26  |."OS_SpriteOp",&|
00008bb0  31 33 34 2c 73 61 72 65  61 25 2c 22 6d 69 6e 75  |134,sarea%,"minu|
00008bc0  73 22 2c 6f 78 25 2b 73  79 6d 62 6f 6c 25 2c 6f  |s",ox%+symbol%,o|
00008bd0  79 25 2b 79 32 25 2c 30  2c 73 63 61 6c 65 25 2c  |y%+y2%,0,scale%,|
00008be0  74 72 61 6e 73 25 0d 2d  32 05 cd 0d 2d 3c 04 0d  |trans%.-2...-<..|
00008bf0  2d 46 19 e7 20 63 6f 6c  6e 61 6d 65 25 28 4e 61  |-F.. colname%(Na|
00008c00  6d 65 4e 6f 25 29 20 8c  0d 2d 50 37 20 e7 20 6f  |meNo%) ..-P7 . o|
00008c10  70 65 72 61 74 6f 72 25  28 4e 61 6d 65 4e 6f 25  |perator%(NameNo%|
00008c20  29 3d 31 20 8c 20 6c 69  6d 25 3d 61 6e 73 6c 69  |)=1 . lim%=ansli|
00008c30  6d 25 20 8b 20 6c 69 6d  25 3d 6c 69 6d 51 25 0d  |m% . lim%=limQ%.|
00008c40  2d 5a 12 20 e3 20 64 25  3d 30 20 b8 20 6c 69 6d  |-Z. . d%=0 . lim|
00008c50  25 0d 2d 64 35 20 20 78  25 3d a4 64 69 67 78 28  |%.-d5  x%=.digx(|
00008c60  64 25 29 2b 31 39 2b 31  34 2a 28 64 25 3d 34 20  |d%)+19+14*(d%=4 |
00008c70  80 20 64 65 63 69 6d 61  6c 25 28 4e 61 6d 65 4e  |. decimal%(NameN|
00008c80  6f 25 29 3d 30 29 0d 2d  6e 27 20 20 70 6f 77 65  |o%)=0).-n'  powe|
00008c90  72 25 3d 64 25 2b 32 2a  28 64 65 63 69 6d 61 6c  |r%=d%+2*(decimal|
00008ca0  25 28 4e 61 6d 65 4e 6f  25 29 3d 31 29 0d 2d 78  |%(NameNo%)=1).-x|
00008cb0  4e 20 20 c8 99 22 4f 53  5f 53 70 72 69 74 65 4f  |N  .."OS_SpriteO|
00008cc0  70 22 2c 26 31 33 34 2c  73 61 72 65 61 25 2c 22  |p",&134,sarea%,"|
00008cd0  64 69 67 22 2b c3 70 6f  77 65 72 25 2c 6f 78 25  |dig"+.power%,ox%|
00008ce0  2b 78 25 2c 6f 79 25 2b  79 30 25 2c 30 2c 73 63  |+x%,oy%+y0%,0,sc|
00008cf0  61 6c 65 25 2c 74 72 61  6e 73 25 0d 2d 82 06 20  |ale%,trans%.-.. |
00008d00  ed 0d 2d 8c 05 cd 0d 2d  96 04 0d 2d a0 05 e1 0d  |..-....-...-....|
00008d10  2d aa 04 0d 2d b4 04 0d  2d be 1c dd 20 a4 64 69  |-...-...-... .di|
00008d20  67 78 28 64 25 29 3d 37  37 2b 37 35 2a 28 34 2d  |gx(d%)=77+75*(4-|
00008d30  64 25 29 0d 2d c8 04 0d  2d d2 04 0d 2d dc 12 dd  |d%).-...-...-...|
00008d40  20 f2 73 75 6d 5f 6e 75  6d 62 65 72 73 0d 2d e6  | .sum_numbers.-.|
00008d50  0e ea 20 64 25 2c 78 25  2c 79 25 0d 2d f0 0e e3  |.. d%,x%,y%.-...|
00008d60  20 64 25 3d 30 20 b8 20  34 0d 2d fa 11 20 78 25  | d%=0 . 4.-.. x%|
00008d70  3d a4 64 69 67 78 28 64  25 29 0d 2e 04 63 20 e7  |=.digx(d%)...c .|
00008d80  20 64 69 67 31 24 28 64  25 29 3c 3e 22 22 20 8c  | dig1$(d%)<>"" .|
00008d90  20 c8 99 22 4f 53 5f 53  70 72 69 74 65 4f 70 22  | .."OS_SpriteOp"|
00008da0  2c 26 31 33 34 2c 73 61  72 65 61 25 2c 22 6e 22  |,&134,sarea%,"n"|
00008db0  2b 64 69 67 31 24 28 64  25 29 2c 6f 78 25 2b 78  |+dig1$(d%),ox%+x|
00008dc0  25 2b 32 2c 6f 79 25 2b  79 31 25 2c 30 2c 73 63  |%+2,oy%+y1%,0,sc|
00008dd0  61 6c 65 32 37 25 2c 74  72 61 6e 73 25 0d 2e 0e  |ale27%,trans%...|
00008de0  63 20 e7 20 64 69 67 32  24 28 64 25 29 3c 3e 22  |c . dig2$(d%)<>"|
00008df0  22 20 8c 20 c8 99 22 4f  53 5f 53 70 72 69 74 65  |" . .."OS_Sprite|
00008e00  4f 70 22 2c 26 31 33 34  2c 73 61 72 65 61 25 2c  |Op",&134,sarea%,|
00008e10  22 6e 22 2b 64 69 67 32  24 28 64 25 29 2c 6f 78  |"n"+dig2$(d%),ox|
00008e20  25 2b 78 25 2b 32 2c 6f  79 25 2b 79 32 25 2c 30  |%+x%+2,oy%+y2%,0|
00008e30  2c 73 63 61 6c 65 32 37  25 2c 74 72 61 6e 73 25  |,scale27%,trans%|
00008e40  0d 2e 18 6a 20 e7 20 64  69 67 33 24 28 64 25 29  |...j . dig3$(d%)|
00008e50  3c 3e 22 22 20 8c 20 c8  99 22 4f 53 5f 53 70 72  |<>"" . .."OS_Spr|
00008e60  69 74 65 4f 70 22 2c 26  31 33 34 2c 73 61 72 65  |iteOp",&134,sare|
00008e70  61 25 2c 22 6d 6f 76 65  22 2b 64 69 67 33 24 28  |a%,"move"+dig3$(|
00008e80  64 25 29 2c 6f 78 25 2b  78 25 2b 31 39 2c 6f 79  |d%),ox%+x%+19,oy|
00008e90  25 2b 79 33 25 2b 31 32  2c 38 2c 73 63 61 6c 65  |%+y3%+12,8,scale|
00008ea0  32 37 25 2c 74 72 61 6e  73 25 0d 2e 22 04 0d 2e  |27%,trans%.."...|
00008eb0  2c 1d 20 e7 20 6f 70 65  72 61 74 6f 72 25 28 4e  |,. . operator%(N|
00008ec0  61 6d 65 4e 6f 25 29 3d  31 20 8c 0d 2e 36 6b 20  |ameNo%)=1 ...6k |
00008ed0  20 e7 20 63 61 72 72 79  24 28 64 25 29 3c 3e 22  | . carry$(d%)<>"|
00008ee0  22 20 8c 20 c8 99 22 4f  53 5f 53 70 72 69 74 65  |" . .."OS_Sprite|
00008ef0  4f 70 22 2c 26 31 33 34  2c 73 61 72 65 61 25 2c  |Op",&134,sarea%,|
00008f00  22 63 61 72 72 79 22 2b  63 61 72 72 79 24 28 64  |"carry"+carry$(d|
00008f10  25 29 2c 6f 78 25 2b 78  25 2b 33 37 2c 6f 79 25  |%),ox%+x%+37,oy%|
00008f20  2b 79 63 61 72 25 2c 30  2c 73 63 61 6c 65 25 2c  |+ycar%,0,scale%,|
00008f30  74 72 61 6e 73 25 0d 2e  40 06 20 cc 0d 2e 4a 65  |trans%..@. ...Je|
00008f40  20 20 e7 20 73 74 72 69  6b 65 24 28 64 25 29 3d  |  . strike$(d%)=|
00008f50  22 2f 22 20 8c 20 c8 99  22 4f 53 5f 53 70 72 69  |"/" . .."OS_Spri|
00008f60  74 65 4f 70 22 2c 26 31  33 34 2c 73 61 72 65 61  |teOp",&134,sarea|
00008f70  25 2c 22 6d 6f 76 65 33  30 22 2c 6f 78 25 2b 78  |%,"move30",ox%+x|
00008f80  25 2b 31 36 2c 6f 79 25  2b 79 31 25 2b 31 35 2c  |%+16,oy%+y1%+15,|
00008f90  38 2c 73 63 61 6c 65 32  37 25 2c 74 72 61 6e 73  |8,scale27%,trans|
00008fa0  25 0d 2e 54 0e 20 20 e7  20 64 25 3e 30 20 8c 0d  |%..T.  . d%>0 ..|
00008fb0  2e 5e 3f 20 20 20 20 e7  20 63 61 72 72 79 24 28  |.^?    . carry$(|
00008fc0  64 25 2d 31 29 3c 3e 22  22 20 8c 20 f2 70 72 69  |d%-1)<>"" . .pri|
00008fd0  6e 74 5f 63 61 72 72 79  5f 64 69 67 28 a4 64 69  |nt_carry_dig(.di|
00008fe0  67 78 28 64 25 2d 31 29  2c 64 25 2d 31 29 0d 2e  |gx(d%-1),d%-1)..|
00008ff0  68 40 20 20 20 20 e7 20  64 25 3d 34 20 80 20 63  |h@    . d%=4 . c|
00009000  61 72 72 79 24 28 64 25  29 3c 3e 22 22 20 8c 20  |arry$(d%)<>"" . |
00009010  f2 70 72 69 6e 74 5f 63  61 72 72 79 5f 64 69 67  |.print_carry_dig|
00009020  28 a4 64 69 67 78 28 64  25 29 2c 64 25 29 0d 2e  |(.digx(d%),d%)..|
00009030  72 07 20 20 cd 0d 2e 7c  06 20 cd 0d 2e 86 05 ed  |r.  ...|. ......|
00009040  0d 2e 90 04 0d 2e 9a 19  e7 20 64 65 63 69 6d 61  |......... decima|
00009050  6c 25 28 4e 61 6d 65 4e  6f 25 29 20 8c 0d 2e a4  |l%(NameNo%) ....|
00009060  19 20 e3 20 79 25 3d 79  31 25 20 b8 20 79 33 25  |. . y%=y1% . y3%|
00009070  20 88 20 2d 37 35 0d 2e  ae 51 20 c8 99 22 4f 53  | . -75...Q .."OS|
00009080  5f 53 70 72 69 74 65 4f  70 22 2c 26 31 33 34 2c  |_SpriteOp",&134,|
00009090  73 61 72 65 61 25 2c 22  64 65 63 70 6f 69 6e 74  |sarea%,"decpoint|
000090a0  22 2c 6f 78 25 2b a4 64  69 67 78 28 32 29 2b 34  |",ox%+.digx(2)+4|
000090b0  2c 6f 79 25 2b 79 25 2c  38 2c 73 63 61 6c 65 25  |,oy%+y%,8,scale%|
000090c0  2c 74 72 61 6e 73 25 0d  2e b8 06 20 ed 0d 2e c2  |,trans%.... ....|
000090d0  05 cd 0d 2e cc 05 e1 0d  2e d6 04 0d 2e e0 04 0d  |................|
000090e0  2e ea 16 dd 20 f2 73 75  6d 5f 6e 75 6d 62 65 72  |.... .sum_number|
000090f0  73 5f 65 73 74 0d 2e f4  0b ea 20 64 25 2c 78 25  |s_est..... d%,x%|
00009100  0d 2e fe 0e e3 20 64 25  3d 30 20 b8 20 34 0d 2f  |..... d%=0 . 4./|
00009110  08 1a 20 78 25 3d a4 70  72 69 6e 74 64 69 67 78  |.. x%=.printdigx|
00009120  28 39 30 32 2c 64 25 29  0d 2f 12 67 20 e7 20 64  |(902,d%)./.g . d|
00009130  69 67 33 24 28 64 25 29  3c 3e 22 22 20 8c 20 c8  |ig3$(d%)<>"" . .|
00009140  99 22 4f 53 5f 53 70 72  69 74 65 4f 70 22 2c 26  |."OS_SpriteOp",&|
00009150  31 33 34 2c 73 61 72 65  61 25 2c 22 6d 6f 76 65  |134,sarea%,"move|
00009160  22 2b 64 69 67 33 24 28  64 25 29 2c 6f 78 25 2b  |"+dig3$(d%),ox%+|
00009170  78 25 2b 31 39 2c 6f 79  25 2d 35 38 34 2c 38 2c  |x%+19,oy%-584,8,|
00009180  73 63 61 6c 65 32 37 25  2c 74 72 61 6e 73 25 0d  |scale27%,trans%.|
00009190  2f 1c 05 ed 0d 2f 26 05  e1 0d 2f 30 04 0d 2f 3a  |/..../&.../0../:|
000091a0  04 0d 2f 44 1d dd 20 f2  70 72 69 6e 74 5f 63 61  |../D.. .print_ca|
000091b0  72 72 79 5f 64 69 67 28  78 25 2c 64 25 29 0d 2f  |rry_dig(x%,d%)./|
000091c0  4e 08 ea 20 6e 24 0d 2f  58 16 e7 20 a9 20 63 61  |N.. n$./X.. . ca|
000091d0  72 72 79 24 28 64 25 29  3d 31 20 8c 0d 2f 62 58  |rry$(d%)=1 ../bX|
000091e0  20 c8 99 22 4f 53 5f 53  70 72 69 74 65 4f 70 22  | .."OS_SpriteOp"|
000091f0  2c 26 31 33 34 2c 73 61  72 65 61 25 2c 22 63 61  |,&134,sarea%,"ca|
00009200  72 72 79 22 2b 63 61 72  72 79 24 28 64 25 29 2c  |rry"+carry$(d%),|
00009210  6f 78 25 2b 78 25 2d 35  2c 6f 79 25 2b 79 63 61  |ox%+x%-5,oy%+yca|
00009220  72 25 2b 34 2c 38 2c 73  63 61 6c 65 25 2c 74 72  |r%+4,8,scale%,tr|
00009230  61 6e 73 25 0d 2f 6c 05  cc 0d 2f 76 16 20 6e 24  |ans%./l.../v. n$|
00009240  3d c2 63 61 72 72 79 24  28 64 25 29 2c 31 29 0d  |=.carry$(d%),1).|
00009250  2f 80 4f 20 c8 99 22 4f  53 5f 53 70 72 69 74 65  |/.O .."OS_Sprite|
00009260  4f 70 22 2c 26 31 33 34  2c 73 61 72 65 61 25 2c  |Op",&134,sarea%,|
00009270  22 63 61 72 72 79 31 22  2c 6f 78 25 2b 78 25 2d  |"carry1",ox%+x%-|
00009280  31 32 2c 6f 79 25 2b 79  63 61 72 25 2b 34 2c 38  |12,oy%+ycar%+4,8|
00009290  2c 73 63 61 6c 65 25 2c  74 72 61 6e 73 25 0d 2f  |,scale%,trans%./|
000092a0  8a 4e 20 c8 99 22 4f 53  5f 53 70 72 69 74 65 4f  |.N .."OS_SpriteO|
000092b0  70 22 2c 26 31 33 34 2c  73 61 72 65 61 25 2c 22  |p",&134,sarea%,"|
000092c0  63 61 72 72 79 22 2b 6e  24 2c 6f 78 25 2b 78 25  |carry"+n$,ox%+x%|
000092d0  2c 6f 79 25 2b 79 63 61  72 25 2b 34 2c 38 2c 73  |,oy%+ycar%+4,8,s|
000092e0  63 61 6c 65 25 2c 74 72  61 6e 73 25 0d 2f 94 05  |cale%,trans%./..|
000092f0  cd 0d 2f 9e 05 e1 0d 2f  a8 04 0d 2f b2 04 0d 2f  |../..../.../.../|
00009300  bc 17 dd 20 f2 6d 61 6b  65 5f 61 64 64 28 6c 65  |... .make_add(le|
00009310  76 65 6c 25 29 0d 2f c6  0b ea 20 66 25 2c 73 25  |vel%)./... f%,s%|
00009320  0d 2f d0 0f c8 8e 20 6c  65 76 65 6c 25 20 ca 0d  |./.... level% ..|
00009330  2f da 0a 20 c9 20 31 3a  f5 0d 2f e4 23 20 20 20  |/.. . 1:../.#   |
00009340  20 20 20 20 20 20 66 25  3d b3 28 38 30 29 2b 31  |      f%=.(80)+1|
00009350  30 3a 73 25 3d b3 28 31  30 29 2d 31 0d 2f ee 24  |0:s%=.(10)-1./.$|
00009360  20 20 20 20 20 20 20 20  fd 20 66 25 2b 73 25 3c  |        . f%+s%<|
00009370  a8 28 28 66 25 2b 31 30  29 2f 31 30 29 2a 31 30  |.((f%+10)/10)*10|
00009380  0d 2f f8 0a 20 c9 20 32  3a f5 0d 30 02 24 20 20  |./.. . 2:..0.$  |
00009390  20 20 20 20 20 20 20 66  25 3d b3 28 38 30 29 2b  |       f%=.(80)+|
000093a0  31 30 3a 73 25 3d b3 28  38 30 29 2b 31 30 0d 30  |10:s%=.(80)+10.0|
000093b0  0c 46 20 20 20 20 20 20  20 20 fd 20 28 28 a8 28  |.F        . ((.(|
000093c0  28 66 25 2b 31 30 29 2f  31 30 29 2a 31 30 29 2b  |(f%+10)/10)*10)+|
000093d0  28 a8 28 73 25 2f 31 30  29 2a 31 30 29 3e 28 66  |(.(s%/10)*10)>(f|
000093e0  25 2b 73 25 29 29 20 80  20 28 66 25 2b 73 25 29  |%+s%)) . (f%+s%)|
000093f0  3c 31 30 30 0d 30 16 1c  20 c9 20 33 3a 66 25 3d  |<100.0.. . 3:f%=|
00009400  b3 28 38 30 29 2b 31 30  3a 73 25 3d b3 28 39 29  |.(80)+10:s%=.(9)|
00009410  0d 30 20 0a 20 c9 20 34  3a f5 0d 30 2a 24 20 20  |.0 . . 4:..0*$  |
00009420  20 20 20 20 20 20 20 66  25 3d b3 28 38 30 29 2b  |       f%=.(80)+|
00009430  31 30 3a 73 25 3d b3 28  38 30 29 2b 31 30 0d 30  |10:s%=.(80)+10.0|
00009440  34 17 20 20 20 20 20 20  20 20 fd 20 66 25 2b 73  |4.        . f%+s|
00009450  25 3c 31 30 30 0d 30 3e  20 20 c9 20 35 3a 66 25  |%<100.0>  . 5:f%|
00009460  3d b3 28 38 30 29 2b 31  30 3a 73 25 3d b3 28 38  |=.(80)+10:s%=.(8|
00009470  30 29 2b 31 30 0d 30 48  24 20 c9 20 36 3a 66 25  |0)+10.0H$ . 6:f%|
00009480  3d b3 28 38 30 30 29 2b  31 30 30 3a 73 25 3d b3  |=.(800)+100:s%=.|
00009490  28 38 30 30 29 2b 31 30  30 0d 30 52 26 20 c9 20  |(800)+100.0R& . |
000094a0  37 3a 66 25 3d b3 28 38  30 30 30 29 2b 31 30 30  |7:f%=.(8000)+100|
000094b0  3a 73 25 3d b3 28 38 30  30 30 29 2b 31 30 30 0d  |:s%=.(8000)+100.|
000094c0  30 5c 05 cb 0d 30 66 0c  e7 20 73 25 3d 30 20 8c  |0\...0f.. s%=0 .|
000094d0  0d 30 70 09 20 73 25 3d  31 0d 30 7a 19 20 e7 20  |.0p. s%=1.0z. . |
000094e0  66 25 20 83 20 31 30 3d  39 20 8c 20 66 25 20 2d  |f% . 10=9 . f% -|
000094f0  3d 31 0d 30 84 05 cd 0d  30 8e 20 6e 75 6d 31 25  |=1.0....0. num1%|
00009500  3d 66 25 3a 6e 75 6d 32  25 3d 73 25 3a 61 6e 73  |=f%:num2%=s%:ans|
00009510  25 3d 66 25 2b 73 25 0d  30 98 05 e1 0d 30 a2 04  |%=f%+s%.0....0..|
00009520  0d 30 ac 04 0d 30 b6 12  dd 20 f2 72 65 73 75 6c  |.0...0... .resul|
00009530  74 73 5f 73 75 6d 0d 30  c0 31 ea 20 73 74 24 2c  |ts_sum.0.1. st$,|
00009540  6f 70 24 2c 64 6f 77 6e  25 2c 6e 75 6d 31 24 2c  |op$,down%,num1$,|
00009550  6e 75 6d 32 24 2c 61 6e  73 24 2c 66 69 6c 6c 24  |num2$,ans$,fill$|
00009560  2c 66 69 6c 6c 32 24 0d  30 ca 39 64 6f 77 6e 25  |,fill2$.0.9down%|
00009570  3d 31 2d 28 6e 65 77 52  25 3d 31 29 3a 52 63 6e  |=1-(newR%=1):Rcn|
00009580  74 25 20 2b 3d 64 6f 77  6e 25 3a 6e 6f 74 73 61  |t% +=down%:notsa|
00009590  76 65 64 52 25 3d 2d 31  3a 6e 65 77 52 25 3d 30  |vedR%=-1:newR%=0|
000095a0  0d 30 d4 19 e7 20 64 65  63 69 6d 61 6c 25 28 4e  |.0... decimal%(N|
000095b0  61 6d 65 4e 6f 25 29 20  8c 0d 30 de 20 20 6e 75  |ameNo%) ..0.  nu|
000095c0  6d 31 24 3d a4 69 6e 73  65 72 74 5f 70 6f 69 6e  |m1$=.insert_poin|
000095d0  74 28 c3 6e 75 6d 31 25  29 0d 30 e8 20 20 6e 75  |t(.num1%).0.  nu|
000095e0  6d 32 24 3d a4 69 6e 73  65 72 74 5f 70 6f 69 6e  |m2$=.insert_poin|
000095f0  74 28 c3 6e 75 6d 32 25  29 0d 30 f2 1e 20 61 6e  |t(.num2%).0.. an|
00009600  73 24 3d a4 69 6e 73 65  72 74 5f 70 6f 69 6e 74  |s$=.insert_point|
00009610  28 c3 61 6e 73 25 29 0d  30 fc 05 cc 0d 31 06 29  |(.ans%).0....1.)|
00009620  20 6e 75 6d 31 24 3d c3  6e 75 6d 31 25 3a 6e 75  | num1$=.num1%:nu|
00009630  6d 32 24 3d c3 6e 75 6d  32 25 3a 61 6e 73 24 3d  |m2$=.num2%:ans$=|
00009640  c3 61 6e 73 25 0d 31 10  05 cd 0d 31 1a 04 0d 31  |.ans%.1....1...1|
00009650  24 23 66 69 6c 6c 24 3d  c4 31 32 2d 28 a9 28 6e  |$#fill$=.12-(.(n|
00009660  75 6d 31 24 2b 6e 75 6d  32 24 29 29 2c 22 20 22  |um1$+num2$))," "|
00009670  29 0d 31 2e 19 66 69 6c  6c 32 24 3d c4 36 2d a9  |).1..fill2$=.6-.|
00009680  20 61 6e 73 24 2c 22 20  22 29 0d 31 38 25 e7 20  | ans$," ").18%. |
00009690  67 61 6d 65 25 3d 31 20  8c 20 6f 70 24 3d 22 20  |game%=1 . op$=" |
000096a0  2b 20 22 20 8b 20 6f 70  24 3d 22 20 2d 20 22 0d  |+ " . op$=" - ".|
000096b0  31 42 4a 73 74 24 3d 22  20 28 22 2b c3 28 71 75  |1BJst$=" ("+.(qu|
000096c0  65 73 74 25 2b 31 29 2b  22 29 20 22 2b 6e 75 6d  |est%+1)+") "+num|
000096d0  31 24 2b 6f 70 24 2b 6e  75 6d 32 24 2b 66 69 6c  |1$+op$+num2$+fil|
000096e0  6c 24 2b 22 20 3d 20 28  22 2b 61 6e 73 24 2b 22  |l$+" = ("+ans$+"|
000096f0  29 22 2b 66 69 6c 6c 32  24 0d 31 4c 26 52 70 74  |)"+fill2$.1L&Rpt|
00009700  72 25 3d a4 61 64 64 5f  73 74 72 69 6e 67 28 52  |r%=.add_string(R|
00009710  70 74 72 25 2c 73 74 24  2c 64 6f 77 6e 25 29 0d  |ptr%,st$,down%).|
00009720  31 56 05 e1 0d 31 60 04  0d 31 6a 04 0d 31 74 19  |1V...1`..1j..1t.|
00009730  dd 20 a4 69 6e 73 65 72  74 5f 70 6f 69 6e 74 28  |. .insert_point(|
00009740  6e 75 6d 24 29 0d 31 7e  19 ea 20 73 70 6c 69 74  |num$).1~.. split|
00009750  25 2c 6c 65 66 74 24 2c  72 69 67 68 74 24 0d 31  |%,left$,right$.1|
00009760  88 10 e7 20 a9 20 6e 75  6d 24 3e 32 20 8c 0d 31  |... . num$>2 ..1|
00009770  92 14 20 73 70 6c 69 74  25 3d a9 20 6e 75 6d 24  |.. split%=. num$|
00009780  2d 32 0d 31 9c 28 20 6c  65 66 74 24 3d c0 6e 75  |-2.1.( left$=.nu|
00009790  6d 24 2c 73 70 6c 69 74  25 29 3a 72 69 67 68 74  |m$,split%):right|
000097a0  24 3d c2 6e 75 6d 24 2c  32 29 0d 31 a6 05 cc 0d  |$=.num$,2).1....|
000097b0  31 b0 28 20 6c 65 66 74  24 3d 22 30 22 3a 72 69  |1.( left$="0":ri|
000097c0  67 68 74 24 3d c4 32 2d  a9 6e 75 6d 24 2c 22 30  |ght$=.2-.num$,"0|
000097d0  22 29 2b 6e 75 6d 24 0d  31 ba 05 cd 0d 31 c4 15  |")+num$.1....1..|
000097e0  3d 6c 65 66 74 24 2b 22  2e 22 2b 72 69 67 68 74  |=left$+"."+right|
000097f0  24 0d 31 ce 04 0d 31 d8  04 0d 31 e2 17 dd 20 f2  |$.1...1...1... .|
00009800  6d 61 6b 65 5f 73 75 62  28 6c 65 76 65 6c 25 29  |make_sub(level%)|
00009810  0d 31 ec 17 ea 20 66 25  2c 73 25 2c 61 25 2c 78  |.1... f%,s%,a%,x|
00009820  25 2c 66 24 2c 73 24 0d  31 f6 05 f5 0d 32 00 10  |%,f$,s$.1....2..|
00009830  20 c8 8e 20 6c 65 76 65  6c 25 20 ca 0d 32 0a 0b  | .. level% ..2..|
00009840  20 20 c9 20 31 3a f5 0d  32 14 24 20 20 20 20 20  |  . 1:..2.$     |
00009850  20 20 20 20 20 66 25 3d  b3 28 38 30 29 2b 31 30  |     f%=.(80)+10|
00009860  3a 73 25 3d b3 28 31 30  29 2d 31 0d 32 1e 22 20  |:s%=.(10)-1.2." |
00009870  20 20 20 20 20 20 20 20  fd 20 66 25 2d 73 25 3e  |        . f%-s%>|
00009880  28 a8 28 66 25 2f 31 30  29 2a 31 30 29 0d 32 28  |(.(f%/10)*10).2(|
00009890  17 20 20 c9 20 32 2c 33  3a 66 24 3d 22 22 3a 73  |.  . 2,3:f$="":s|
000098a0  24 3d 22 22 0d 32 32 1e  20 20 20 20 20 20 20 20  |$="".22.        |
000098b0  20 20 20 e3 20 78 25 3d  31 20 b8 20 6c 65 76 65  |   . x%=1 . leve|
000098c0  6c 25 0d 32 3c 11 20 20  20 20 20 20 20 20 20 20  |l%.2<.          |
000098d0  20 20 f5 0d 32 46 26 20  20 20 20 20 20 20 20 20  |  ..2F&         |
000098e0  20 20 20 20 66 25 3d b3  28 31 30 29 2d 31 3a 73  |    f%=.(10)-1:s|
000098f0  25 3d b3 28 31 30 29 2d  31 0d 32 50 17 20 20 20  |%=.(10)-1.2P.   |
00009900  20 20 20 20 20 20 20 20  20 fd 20 66 25 3e 73 25  |         . f%>s%|
00009910  0d 32 5a 23 20 20 20 20  20 20 20 20 20 20 20 20  |.2Z#            |
00009920  66 24 3d 66 24 2b c3 66  25 3a 73 24 3d 73 24 2b  |f$=f$+.f%:s$=s$+|
00009930  c3 73 25 0d 32 64 10 20  20 20 20 20 20 20 20 20  |.s%.2d.         |
00009940  20 20 ed 0d 32 6e 20 20  20 20 20 20 20 20 20 20  |  ..2n          |
00009950  20 20 66 25 3d bb 28 66  24 29 3a 73 25 3d bb 28  |  f%=.(f$):s%=.(|
00009960  73 24 29 0d 32 78 18 20  20 c9 20 34 3a f2 73 75  |s$).2x.  . 4:.su|
00009970  62 73 75 62 28 33 2c 31  2c 30 29 0d 32 82 18 20  |bsub(3,1,0).2.. |
00009980  20 c9 20 35 3a f2 73 75  62 73 75 62 28 33 2c 32  | . 5:.subsub(3,2|
00009990  2c 30 29 0d 32 8c 18 20  20 c9 20 36 3a f2 73 75  |,0).2..  . 6:.su|
000099a0  62 73 75 62 28 34 2c 33  2c 30 29 0d 32 96 18 20  |bsub(4,3,0).2.. |
000099b0  20 c9 20 37 3a f2 73 75  62 73 75 62 28 34 2c 33  | . 7:.subsub(4,3|
000099c0  2c 31 29 0d 32 a0 18 20  20 c9 20 38 3a f2 73 75  |,1).2..  . 8:.su|
000099d0  62 73 75 62 28 34 2c 33  2c 32 29 0d 32 aa 18 20  |bsub(4,3,2).2.. |
000099e0  20 c9 20 39 3a f2 73 75  62 73 75 62 28 35 2c 34  | . 9:.subsub(5,4|
000099f0  2c 33 29 0d 32 b4 1e 20  20 c9 20 31 30 3a 66 25  |,3).2..  . 10:f%|
00009a00  3d b3 28 38 30 29 2b 31  30 3a 73 25 3d b3 28 39  |=.(80)+10:s%=.(9|
00009a10  29 0d 32 be 06 20 cb 0d  32 c8 0a fd 20 73 25 3e  |).2.. ..2... s%>|
00009a20  30 0d 32 d2 20 6e 75 6d  31 25 3d 66 25 3a 6e 75  |0.2. num1%=f%:nu|
00009a30  6d 32 25 3d 73 25 3a 61  6e 73 25 3d 66 25 2d 73  |m2%=s%:ans%=f%-s|
00009a40  25 0d 32 dc 05 e1 0d 32  e6 04 0d 32 f0 04 0d 32  |%.2....2...2...2|
00009a50  fa 1f dd 20 f2 73 75 62  73 75 62 28 6c 65 6e 25  |... .subsub(len%|
00009a60  2c 64 65 63 25 2c 7a 65  72 6f 73 25 29 0d 33 04  |,dec%,zeros%).3.|
00009a70  08 ea 20 78 25 0d 33 0e  14 66 24 3d 22 22 3a 73  |.. x%.3..f$="":s|
00009a80  24 3d 22 22 3a 7a 25 3d  30 0d 33 18 11 e3 20 78  |$="":z%=0.3... x|
00009a90  25 3d 31 20 b8 20 6c 65  6e 25 0d 33 22 1a 20 66  |%=1 . len%.3". f|
00009aa0  25 3d b3 28 31 30 29 2d  31 3a 73 25 3d b3 28 31  |%=.(10)-1:s%=.(1|
00009ab0  30 29 2d 31 0d 33 2c 2e  20 e7 20 78 25 3e 64 65  |0)-1.3,. . x%>de|
00009ac0  63 25 20 f5 3a 66 25 3d  b3 28 31 30 29 2d 31 3a  |c% .:f%=.(10)-1:|
00009ad0  73 25 3d b3 28 31 30 29  2d 31 3a fd 20 66 25 3e  |s%=.(10)-1:. f%>|
00009ae0  73 25 0d 33 36 32 20 e7  20 78 25 3d 64 65 63 25  |s%.362 . x%=dec%|
00009af0  2b 31 20 f5 3a 66 25 3d  b3 28 31 30 29 2d 31 3a  |+1 .:f%=.(10)-1:|
00009b00  73 25 3d b3 28 31 30 29  2d 31 3a fd 20 66 25 3e  |s%=.(10)-1:. f%>|
00009b10  73 25 2b 31 0d 33 40 23  20 e7 20 78 25 3c 6c 65  |s%+1.3@# . x%<le|
00009b20  6e 25 20 8c 20 e7 20 b3  28 36 29 3c 7a 65 72 6f  |n% . . .(6)<zero|
00009b30  73 25 20 66 25 3d 30 0d  33 4a 14 20 e7 20 66 25  |s% f%=0.3J. . f%|
00009b40  3d 30 20 80 20 78 25 3e  31 20 8c 0d 33 54 0c 20  |=0 . x%>1 ..3T. |
00009b50  20 7a 25 20 2b 3d 31 0d  33 5e 19 20 20 e7 20 7a  | z% +=1.3^.  . z|
00009b60  25 3e 7a 65 72 6f 73 25  20 66 25 3d b3 28 39 29  |%>zeros% f%=.(9)|
00009b70  0d 33 68 06 20 cd 0d 33  72 18 20 66 24 3d c3 66  |.3h. ..3r. f$=.f|
00009b80  25 2b 66 24 3a 73 24 3d  c3 73 25 2b 73 24 0d 33  |%+f$:s$=.s%+s$.3|
00009b90  7c 05 ed 0d 33 86 15 66  25 3d bb 28 66 24 29 3a  ||...3..f%=.(f$):|
00009ba0  73 25 3d bb 28 73 24 29  0d 33 90 05 e1 0d 33 9a  |s%=.(s$).3....3.|
00009bb0  04 0d 33 a4 04 0d 33 ae  1a dd 20 f2 64 69 67 69  |..3...3... .digi|
00009bc0  74 73 28 6e 75 6d 25 2c  64 69 67 24 28 29 29 0d  |ts(num%,dig$()).|
00009bd0  33 b8 08 ea 20 64 25 0d  33 c2 0e e3 20 64 25 3d  |3... d%.3... d%=|
00009be0  30 20 b8 20 34 0d 33 cc  33 20 e7 20 6e 75 6d 25  |0 . 4.3.3 . num%|
00009bf0  3e 30 20 8c 20 64 69 67  24 28 64 25 29 3d c3 28  |>0 . dig$(d%)=.(|
00009c00  6e 75 6d 25 20 83 20 31  30 29 20 8b 20 64 69 67  |num% . 10) . dig|
00009c10  24 28 64 25 29 3d 22 22  0d 33 d6 13 20 6e 75 6d  |$(d%)="".3.. num|
00009c20  25 3d 6e 75 6d 25 20 81  20 31 30 0d 33 e0 05 ed  |%=num% . 10.3...|
00009c30  0d 33 ea 34 e7 20 64 65  63 69 6d 61 6c 25 28 4e  |.3.4. decimal%(N|
00009c40  61 6d 65 4e 6f 25 29 3d  31 20 80 20 64 69 67 24  |ameNo%)=1 . dig$|
00009c50  28 32 29 3d 22 22 20 8c  20 64 69 67 24 28 32 29  |(2)="" . dig$(2)|
00009c60  3d 22 30 22 0d 33 f4 05  e1 0d 33 fe 04 0d 34 08  |="0".3....3...4.|
00009c70  04 0d 34 12 11 dd 20 f2  66 69 6e 64 5f 65 72 72  |..4... .find_err|
00009c80  6f 72 0d 34 1c 08 ea 20  78 25 0d 34 26 1c e7 20  |or.4... x%.4&.. |
00009c90  6e 65 78 74 65 72 72 25  3e 3d 6e 65 78 74 64 69  |nexterr%>=nextdi|
00009ca0  67 25 20 8c 20 e1 0d 34  30 05 f5 0d 34 3a 10 6e  |g% . ..40...4:.n|
00009cb0  65 78 74 65 72 72 25 20  2b 3d 31 0d 34 44 3c fd  |exterr% +=1.4D<.|
00009cc0  20 64 69 67 33 24 28 6e  65 78 74 65 72 72 25 29  | dig3$(nexterr%)|
00009cd0  3c 3e 61 6e 73 77 65 72  24 28 6e 65 78 74 65 72  |<>answer$(nexter|
00009ce0  72 25 29 20 84 20 6e 65  78 74 65 72 72 25 3d 6e  |r%) . nexterr%=n|
00009cf0  65 78 74 64 69 67 25 0d  34 4e 04 0d 34 58 19 e7  |extdig%.4N..4X..|
00009d00  20 6e 65 78 74 65 72 72  25 3c 6e 65 78 74 64 69  | nexterr%<nextdi|
00009d10  67 25 20 8c 0d 34 62 28  20 e7 20 72 75 62 64 69  |g% ..4b( . rubdi|
00009d20  67 25 3e 2d 31 20 8c 20  78 25 3d a4 64 69 67 78  |g%>-1 . x%=.digx|
00009d30  28 72 75 62 64 69 67 25  29 2b 31 30 0d 34 6c 3c  |(rubdig%)+10.4l<|
00009d40  20 c8 99 22 57 69 6d 70  5f 46 6f 72 63 65 52 65  | .."Wimp_ForceRe|
00009d50  64 72 61 77 22 2c 68 61  6e 64 6c 65 25 28 67 61  |draw",handle%(ga|
00009d60  6d 65 25 29 2c 78 25 2c  79 33 25 2c 78 25 2b 37  |me%),x%,y3%,x%+7|
00009d70  35 2c 79 33 25 2b 37 35  0d 34 76 2a 20 72 75 62  |5,y3%+75.4v* rub|
00009d80  64 69 67 25 3d 6e 65 78  74 65 72 72 25 3a 78 25  |dig%=nexterr%:x%|
00009d90  3d a4 64 69 67 78 28 72  75 62 64 69 67 25 29 2b  |=.digx(rubdig%)+|
00009da0  31 30 0d 34 80 3c 20 c8  99 22 57 69 6d 70 5f 46  |10.4.< .."Wimp_F|
00009db0  6f 72 63 65 52 65 64 72  61 77 22 2c 68 61 6e 64  |orceRedraw",hand|
00009dc0  6c 65 25 28 67 61 6d 65  25 29 2c 78 25 2c 79 33  |le%(game%),x%,y3|
00009dd0  25 2c 78 25 2b 37 35 2c  79 33 25 2b 37 35 0d 34  |%,x%+75,y3%+75.4|
00009de0  8a 05 cd 0d 34 94 05 e1  0d 34 9e 04 0d 34 a8 04  |....4....4...4..|
00009df0  0d 34 b2 11 dd 20 f2 6e  75 6c 6c 5f 65 76 65 6e  |.4... .null_even|
00009e00  74 0d 34 bc 1a e7 20 64  72 61 67 25 20 8c 20 f2  |t.4... drag% . .|
00009e10  6d 6f 76 65 5f 6e 75 6d  62 65 72 0d 34 c6 4a e7  |move_number.4.J.|
00009e20  20 91 2d 73 65 73 73 74  69 6d 65 25 3e 74 69 6d  | .-sesstime%>tim|
00009e30  65 6c 69 6d 25 28 4e 61  6d 65 4e 6f 25 29 2a 36  |elim%(NameNo%)*6|
00009e40  30 30 30 20 80 20 4e 6f  74 69 6d 65 72 25 28 4e  |000 . Notimer%(N|
00009e50  61 6d 65 4e 6f 25 29 3d  30 20 80 20 67 61 6d 65  |ameNo%)=0 . game|
00009e60  25 3e 30 20 8c 0d 34 d0  3e 20 6d 65 73 73 61 67  |%>0 ..4.> messag|
00009e70  65 24 28 31 29 3d 22 54  69 6d 65 27 73 20 75 70  |e$(1)="Time's up|
00009e80  22 3a 6d 65 73 73 61 67  65 24 28 32 29 3d 22 22  |":message$(2)=""|
00009e90  3a ef 37 3a f2 66 6f 6e  74 5f 74 6f 5f 73 63 72  |:.7:.font_to_scr|
00009ea0  65 65 6e 0d 34 da 1a 20  f2 70 61 75 73 65 28 34  |een.4.. .pause(4|
00009eb0  30 30 29 3a f2 67 61 6d  65 5f 65 6e 64 0d 34 e4  |00):.game_end.4.|
00009ec0  05 cd 0d 34 ee 42 e7 20  64 72 61 77 66 6f 6e 74  |...4.B. drawfont|
00009ed0  25 20 8c 20 f2 66 6f 6e  74 5f 74 6f 5f 73 63 72  |% . .font_to_scr|
00009ee0  65 65 6e 3a f2 6d 65 73  73 61 67 65 5f 73 70 72  |een:.message_spr|
00009ef0  69 74 65 5f 62 61 63 6b  3a 64 72 61 77 66 6f 6e  |ite_back:drawfon|
00009f00  74 25 3d 30 0d 34 f8 46  e7 20 6e 65 78 74 6d 65  |t%=0.4.F. nextme|
00009f10  73 73 25 20 8c 20 f2 70  61 75 73 65 28 31 30 30  |ss% . .pause(100|
00009f20  2a 28 6e 65 78 74 6d 65  73 73 25 2d 31 29 29 3a  |*(nextmess%-1)):|
00009f30  f2 6d 65 73 73 61 67 65  28 22 70 72 22 29 3a 6e  |.message("pr"):n|
00009f40  65 78 74 6d 65 73 73 25  3d 30 0d 35 02 35 e7 20  |extmess%=0.5.5. |
00009f50  70 72 69 6e 74 65 72 25  28 4e 61 6d 65 4e 6f 25  |printer%(NameNo%|
00009f60  29 3d 31 20 80 20 64 72  69 76 65 72 25 3d 30 20  |)=1 . driver%=0 |
00009f70  80 20 65 6e 70 72 69 6e  74 25 3d 2d 31 20 8c 0d  |. enprint%=-1 ..|
00009f80  35 0c 1c 20 64 72 69 76  65 72 25 3d a4 65 6e 73  |5.. driver%=.ens|
00009f90  75 72 65 5f 50 64 72 69  76 65 72 0d 35 16 40 20  |ure_Pdriver.5.@ |
00009fa0  e7 20 64 72 69 76 65 72  25 20 8c 20 f2 73 65 74  |. driver% . .set|
00009fb0  5f 74 6f 70 5f 69 63 6f  6e 28 37 2c 2d 31 29 3a  |_top_icon(7,-1):|
00009fc0  f2 73 68 61 64 65 5f 69  63 6f 6e 28 53 43 68 61  |.shade_icon(SCha|
00009fd0  6e 64 6c 65 25 2c 31 31  2c 30 29 0d 35 20 05 cd  |ndle%,11,0).5 ..|
00009fe0  0d 35 2a 4e e7 20 a4 77  69 6e 64 6f 77 5f 6f 70  |.5*N. .window_op|
00009ff0  65 6e 28 4c 68 61 6e 64  6c 65 25 29 3d 2d 31 20  |en(Lhandle%)=-1 |
0000a000  80 20 63 72 65 61 74 65  25 3d 2d 32 20 8c 20 f2  |. create%=-2 . .|
0000a010  6c 6f 61 64 62 6f 78 5f  77 69 6e 64 6f 77 73 28  |loadbox_windows(|
0000a020  2d 31 29 3a 63 72 65 61  74 65 25 3d 2d 31 0d 35  |-1):create%=-1.5|
0000a030  34 3a e7 20 91 2d 54 4c  74 69 6d 65 25 3e 31 30  |4:. .-TLtime%>10|
0000a040  30 30 20 8c 20 f2 63 6c  6f 73 65 5f 77 69 6e 64  |00 . .close_wind|
0000a050  6f 77 28 54 68 61 6e 64  6c 65 25 29 3a 54 4c 74  |ow(Thandle%):TLt|
0000a060  69 6d 65 25 3d 31 45 37  0d 35 3e 05 e1 0d 35 48  |ime%=1E7.5>...5H|
0000a070  04 0d 35 52 04 0d 35 5c  12 dd 20 f2 6d 6f 76 65  |..5R..5\.. .move|
0000a080  5f 6e 75 6d 62 65 72 0d  35 66 26 ea 20 78 25 2c  |_number.5f&. x%,|
0000a090  79 25 2c 78 31 25 2c 78  32 25 2c 79 31 25 2c 79  |y%,x1%,x2%,y1%,y|
0000a0a0  32 25 2c 77 25 2c 68 25  2c 66 6c 67 25 0d 35 70  |2%,w%,h%,flg%.5p|
0000a0b0  23 c8 99 22 57 69 6d 70  5f 47 65 74 50 6f 69 6e  |#.."Wimp_GetPoin|
0000a0c0  74 65 72 49 6e 66 6f 22  2c 2c 62 6c 6f 63 6b 25  |terInfo",,block%|
0000a0d0  0d 35 7a 04 0d 35 84 0f  e7 20 72 75 62 62 65 72  |.5z..5... rubber|
0000a0e0  25 20 8c 0d 35 8e 2c 20  77 25 3d 37 35 3a 68 25  |% ..5., w%=75:h%|
0000a0f0  3d 37 35 3a 78 25 3d 21  62 6c 6f 63 6b 25 2d 36  |=75:x%=!block%-6|
0000a100  3a 79 25 3d 62 6c 6f 63  6b 25 21 34 2d 31 32 0d  |:y%=block%!4-12.|
0000a110  35 98 05 cc 0d 35 a2 41  20 77 25 3d 33 36 2d 36  |5....5.A w%=36-6|
0000a120  2a 28 64 72 61 67 76 61  6c 25 3d 33 30 29 3a 68  |*(dragval%=30):h|
0000a130  25 3d 34 34 3a 78 25 3d  21 62 6c 6f 63 6b 25 2d  |%=44:x%=!block%-|
0000a140  77 25 2f 32 3a 79 25 3d  62 6c 6f 63 6b 25 21 34  |w%/2:y%=block%!4|
0000a150  2d 68 25 2f 32 0d 35 ac  05 cd 0d 35 b6 04 0d 35  |-h%/2.5....5...5|
0000a160  c0 2d f2 77 6f 72 6b 5f  61 72 65 61 5f 6f 72 69  |.-.work_area_ori|
0000a170  67 69 6e 28 68 61 6e 64  6c 65 25 28 67 61 6d 65  |gin(handle%(game|
0000a180  25 29 2c 6f 78 25 2c 6f  79 25 29 0d 35 ca 15 78  |%),ox%,oy%).5..x|
0000a190  25 20 2d 3d 6f 78 25 3a  79 25 20 2d 3d 6f 79 25  |% -=ox%:y% -=oy%|
0000a1a0  0d 35 d4 04 0d 35 de 2c  e7 20 72 75 62 62 65 72  |.5...5.,. rubber|
0000a1b0  25 3d 2d 31 20 80 20 28  79 25 3e 2d 32 36 36 20  |%=-1 . (y%>-266 |
0000a1c0  84 20 64 72 61 67 79 25  3e 2d 32 36 36 29 20 8c  |. dragy%>-266) .|
0000a1d0  0d 35 e8 40 20 20 c8 99  22 4f 53 5f 53 70 72 69  |.5.@  .."OS_Spri|
0000a1e0  74 65 4f 70 22 2c 26 31  33 43 2c 73 61 72 65 61  |teOp",&13C,sarea|
0000a1f0  25 2c 22 62 61 63 6b 74  6f 70 31 22 2c 31 20 b8  |%,"backtop1",1 .|
0000a200  20 72 30 25 2c 72 31 25  2c 72 32 25 2c 72 33 25  | r0%,r1%,r2%,r3%|
0000a210  0d 35 f2 34 20 20 c8 99  22 4f 53 5f 53 70 72 69  |.5.4  .."OS_Spri|
0000a220  74 65 4f 70 22 2c 26 31  33 34 2c 73 61 72 65 61  |teOp",&134,sarea|
0000a230  25 2c 22 74 6f 70 31 22  2c 30 2c 30 2c 30 2c 2d  |%,"top1",0,0,0,-|
0000a240  31 2c 2d 31 0d 35 fc 44  20 20 c8 99 22 4f 53 5f  |1,-1.5.D  .."OS_|
0000a250  53 70 72 69 74 65 4f 70  22 2c 26 31 33 34 2c 73  |SpriteOp",&134,s|
0000a260  61 72 65 61 25 2c 22 6d  6f 76 65 31 30 22 2c 78  |area%,"move10",x|
0000a270  25 2d 31 35 30 2c 38 34  34 2b 79 25 2d 36 39 34  |%-150,844+y%-694|
0000a280  2c 38 2c 2d 31 2c 2d 31  0d 36 06 31 20 20 c8 99  |,8,-1,-1.6.1  ..|
0000a290  22 4f 53 5f 53 70 72 69  74 65 4f 70 22 2c 72 30  |"OS_SpriteOp",r0|
0000a2a0  25 2c 72 31 25 2c 72 32  25 2c 72 33 25 3a 66 6c  |%,r1%,r2%,r3%:fl|
0000a2b0  67 25 3d 2d 31 3a ef 32  36 0d 36 10 05 cd 0d 36  |g%=-1:.26.6....6|
0000a2c0  1a 29 e7 20 94 28 78 25  2d 64 72 61 67 78 25 29  |.). .(x%-dragx%)|
0000a2d0  3c 34 20 80 20 94 28 79  25 2d 64 72 61 67 79 25  |<4 . .(y%-dragy%|
0000a2e0  29 3c 38 20 8c 20 e1 0d  36 24 04 0d 36 2e 3d e7  |)<8 . ..6$..6.=.|
0000a2f0  20 78 25 3e 64 72 61 67  78 25 20 8c 20 78 32 25  | x%>dragx% . x2%|
0000a300  3d 78 25 2b 77 25 3a 78  31 25 3d 64 72 61 67 78  |=x%+w%:x1%=dragx|
0000a310  25 20 8b 20 78 32 25 3d  64 72 61 67 78 25 2b 77  |% . x2%=dragx%+w|
0000a320  25 3a 78 31 25 3d 78 25  0d 36 38 3d e7 20 79 25  |%:x1%=x%.68=. y%|
0000a330  3e 64 72 61 67 79 25 20  8c 20 79 32 25 3d 79 25  |>dragy% . y2%=y%|
0000a340  2b 68 25 3a 79 31 25 3d  64 72 61 67 79 25 20 8b  |+h%:y1%=dragy% .|
0000a350  20 79 32 25 3d 64 72 61  67 79 25 2b 68 25 3a 79  | y2%=dragy%+h%:y|
0000a360  31 25 3d 79 25 0d 36 42  17 64 72 61 67 78 25 3d  |1%=y%.6B.dragx%=|
0000a370  78 25 3a 64 72 61 67 79  25 3d 79 25 0d 36 4c 3b  |x%:dragy%=y%.6L;|
0000a380  e7 20 94 28 69 6e 69 74  78 25 2d 64 72 61 67 78  |. .(initx%-dragx|
0000a390  25 29 3e 31 32 20 84 20  94 28 69 6e 69 74 79 25  |%)>12 . .(inity%|
0000a3a0  2d 64 72 61 67 79 25 29  3e 31 32 20 8c 20 64 6f  |-dragy%)>12 . do|
0000a3b0  75 62 6c 65 25 3d 30 0d  36 56 04 0d 36 60 0f e7  |uble%=0.6V..6`..|
0000a3c0  20 72 75 62 62 65 72 25  20 8c 0d 36 6a 2c 20 63  | rubber% ..6j, c|
0000a3d0  6f 6e 64 25 3d 2d 28 28  78 32 25 3c 31 37 30 20  |ond%=-((x2%<170 |
0000a3e0  84 20 78 31 25 3e 32 38  35 29 20 80 20 79 31 25  |. x1%>285) . y1%|
0000a3f0  3e 2d 31 36 35 29 0d 36  74 30 20 e7 20 78 25 3c  |>-165).6t0 . x%<|
0000a400  30 20 84 20 78 25 3e 31  32 37 36 20 84 20 79 25  |0 . x%>1276 . y%|
0000a410  3c 2d 38 34 34 20 84 20  79 25 3e 30 20 8c 20 63  |<-844 . y%>0 . c|
0000a420  6f 6e 64 25 3d 31 0d 36  7e 19 20 ff 20 22 50 4f  |ond%=1.6~. . "PO|
0000a430  49 4e 54 45 52 20 22 2b  c3 20 63 6f 6e 64 25 0d  |INTER "+. cond%.|
0000a440  36 88 05 cd 0d 36 92 04  0d 36 9c 10 e7 20 79 32  |6....6...6... y2|
0000a450  25 3e 2d 31 35 30 20 8c  0d 36 a6 1a 20 e7 20 79  |%>-150 ..6.. . y|
0000a460  31 25 3e 2d 31 35 30 20  8c 20 79 31 25 3d 2d 31  |1%>-150 . y1%=-1|
0000a470  35 30 0d 36 b0 1a 20 e7  20 79 32 25 3e 2d 31 35  |50.6.. . y2%>-15|
0000a480  30 20 8c 20 79 32 25 3d  2d 31 35 30 0d 36 ba 05  |0 . y2%=-150.6..|
0000a490  cd 0d 36 c4 52 e7 20 ac  28 79 31 25 3d 2d 31 35  |..6.R. .(y1%=-15|
0000a4a0  30 20 80 20 79 32 25 3d  2d 31 35 30 29 20 8c 20  |0 . y2%=-150) . |
0000a4b0  c8 99 22 57 69 6d 70 5f  46 6f 72 63 65 52 65 64  |.."Wimp_ForceRed|
0000a4c0  72 61 77 22 2c 68 61 6e  64 6c 65 25 28 67 61 6d  |raw",handle%(gam|
0000a4d0  65 25 29 2c 78 31 25 2c  79 31 25 2c 78 32 25 2c  |e%),x1%,y1%,x2%,|
0000a4e0  79 32 25 0d 36 ce 04 0d  36 d8 0c e7 20 66 6c 67  |y2%.6...6... flg|
0000a4f0  25 20 8c 0d 36 e2 2e 20  f2 77 6f 72 6b 5f 61 72  |% ..6.. .work_ar|
0000a500  65 61 5f 6f 72 69 67 69  6e 28 68 61 6e 64 6c 65  |ea_origin(handle|
0000a510  25 28 67 61 6d 65 25 29  2c 6f 78 25 2c 6f 79 25  |%(game%),ox%,oy%|
0000a520  29 0d 36 ec 37 20 66 6c  67 25 3d a4 75 70 64 61  |).6.7 flg%=.upda|
0000a530  74 65 5f 77 69 6e 64 6f  77 28 68 61 6e 64 6c 65  |te_window(handle|
0000a540  25 28 67 61 6d 65 25 29  2c 31 35 32 2c 2d 31 35  |%(game%),152,-15|
0000a550  30 2c 33 30 30 2c 30 29  0d 36 f6 0c 20 c8 95 20  |0,300,0).6.. .. |
0000a560  66 6c 67 25 0d 37 00 4c  20 20 c8 99 22 4f 53 5f  |flg%.7.L  .."OS_|
0000a570  53 70 72 69 74 65 4f 70  22 2c 26 31 33 34 2c 73  |SpriteOp",&134,s|
0000a580  61 72 65 61 25 2c 22 62  61 63 6b 74 6f 70 31 22  |area%,"backtop1"|
0000a590  2c 6f 78 25 2b 31 35 30  2c 6f 79 25 2d 31 34 36  |,ox%+150,oy%-146|
0000a5a0  2c 30 2c 73 63 61 6c 65  25 2c 74 72 61 6e 73 25  |,0,scale%,trans%|
0000a5b0  0d 37 0a 2a 20 20 c8 99  22 57 69 6d 70 5f 47 65  |.7.*  .."Wimp_Ge|
0000a5c0  74 52 65 63 74 61 6e 67  6c 65 22 2c 2c 62 6c 6f  |tRectangle",,blo|
0000a5d0  63 6b 25 20 b8 20 66 6c  67 25 0d 37 14 06 20 ce  |ck% . flg%.7.. .|
0000a5e0  0d 37 1e 46 20 e7 20 79  31 25 3c 2d 31 34 36 20  |.7.F . y1%<-146 |
0000a5f0  8c 20 c8 99 22 57 69 6d  70 5f 46 6f 72 63 65 52  |. .."Wimp_ForceR|
0000a600  65 64 72 61 77 22 2c 68  61 6e 64 6c 65 25 28 67  |edraw",handle%(g|
0000a610  61 6d 65 25 29 2c 78 31  25 2c 79 31 25 2c 78 32  |ame%),x1%,y1%,x2|
0000a620  25 2c 2d 31 34 36 0d 37  28 05 cd 0d 37 32 05 e1  |%,-146.7(...72..|
0000a630  0d 37 3c 04 0d 37 46 04  0d 37 50 1c dd 20 f2 70  |.7<..7F..7P.. .p|
0000a640  6c 61 63 65 5f 6e 75 6d  62 65 72 28 49 43 64 72  |lace_number(ICdr|
0000a650  61 67 25 29 0d 37 5a 3c  ea 20 78 25 2c 79 25 2c  |ag%).7Z<. x%,y%,|
0000a660  59 33 25 2c 64 69 67 25  2c 4d 6f 64 65 25 2c 66  |Y3%,dig%,Mode%,f|
0000a670  6c 67 25 2c 76 61 6c 69  64 25 2c 72 61 6e 67 65  |lg%,valid%,range|
0000a680  25 2c 44 69 67 25 3a 76  61 6c 69 64 25 3d 2d 31  |%,Dig%:valid%=-1|
0000a690  0d 37 64 34 e7 20 67 61  6d 65 25 3d 31 20 8c 20  |.7d4. game%=1 . |
0000a6a0  72 61 6e 67 65 25 3d 61  6e 73 6c 69 6d 25 20 8b  |range%=anslim% .|
0000a6b0  20 72 61 6e 67 65 25 3d  a4 71 75 65 73 74 5f 6c  | range%=.quest_l|
0000a6c0  69 6d 69 74 0d 37 6e 2a  4d 6f 64 65 25 3d 28 6d  |imit.7n*Mode%=(m|
0000a6d0  6f 64 65 25 28 4e 61 6d  65 4e 6f 25 29 3d 31 20  |ode%(NameNo%)=1 |
0000a6e0  80 20 53 43 66 6f 72 6d  61 74 25 3d 32 29 0d 37  |. SCformat%=2).7|
0000a6f0  78 15 e7 20 64 72 61 67  76 61 6c 25 3d 33 30 20  |x.. dragval%=30 |
0000a700  8c 20 e1 0d 37 82 17 63  68 65 63 6b 25 3d 2d 31  |. ..7..check%=-1|
0000a710  3a 64 6f 75 62 6c 65 25  3d 30 0d 37 8c 49 c8 99  |:double%=0.7.I..|
0000a720  22 57 69 6d 70 5f 46 6f  72 63 65 52 65 64 72 61  |"Wimp_ForceRedra|
0000a730  77 22 2c 68 61 6e 64 6c  65 25 28 67 61 6d 65 25  |w",handle%(game%|
0000a740  29 2c 64 72 61 67 78 25  2c 64 72 61 67 79 25 2c  |),dragx%,dragy%,|
0000a750  64 72 61 67 78 25 2b 37  35 2c 64 72 61 67 79 25  |dragx%+75,dragy%|
0000a760  2b 37 35 0d 37 96 34 e7  20 6d 65 73 73 61 67 65  |+75.7.4. message|
0000a770  24 28 31 29 3c 3e 22 22  20 80 20 48 65 6c 70 6c  |$(1)<>"" . Helpl|
0000a780  65 76 25 3c 35 20 8c 20  f2 72 65 6d 6f 76 65 5f  |ev%<5 . .remove_|
0000a790  6d 65 73 73 61 67 65 0d  37 a0 2d f2 77 6f 72 6b  |message.7.-.work|
0000a7a0  5f 61 72 65 61 5f 6f 72  69 67 69 6e 28 68 61 6e  |_area_origin(han|
0000a7b0  64 6c 65 25 28 67 61 6d  65 25 29 2c 6f 78 25 2c  |dle%(game%),ox%,|
0000a7c0  6f 79 25 29 0d 37 aa 04  0d 37 b4 13 e7 20 53 43  |oy%).7...7... SC|
0000a7d0  66 6f 72 6d 61 74 25 3d  32 20 8c 0d 37 be 1c 20  |format%=2 ..7.. |
0000a7e0  64 69 67 25 3d 49 43 64  72 61 67 25 2d 31 38 3a  |dig%=ICdrag%-18:|
0000a7f0  59 33 25 3d 79 33 25 0d  37 c8 25 20 78 25 3d a4  |Y3%=y3%.7.% x%=.|
0000a800  64 69 67 78 28 64 69 67  25 29 3a 66 6c 67 25 3d  |digx(dig%):flg%=|
0000a810  28 49 43 64 72 61 67 25  3e 32 36 29 0d 37 d2 05  |(ICdrag%>26).7..|
0000a820  cc 0d 37 dc 1d 20 64 69  67 25 3d 49 43 64 72 61  |..7.. dig%=ICdra|
0000a830  67 25 2d 32 38 3a 59 33  25 3d 2d 35 39 36 0d 37  |g%-28:Y3%=-596.7|
0000a840  e6 2e 20 78 25 3d a4 70  72 69 6e 74 64 69 67 78  |.. x%=.printdigx|
0000a850  28 39 30 32 2c 64 69 67  25 29 3a 66 6c 67 25 3d  |(902,dig%):flg%=|
0000a860  28 49 43 64 72 61 67 25  3c 32 38 29 0d 37 f0 05  |(ICdrag%<28).7..|
0000a870  cd 0d 37 fa 0e e7 20 66  6c 67 25 20 8c 20 e1 0d  |..7... flg% . ..|
0000a880  38 04 04 0d 38 0e c1 e7  20 4d 6f 64 65 25 3d 2d  |8...8... Mode%=-|
0000a890  31 20 80 20 53 43 66 6f  72 6d 61 74 25 3d 32 20  |1 . SCformat%=2 |
0000a8a0  8c 20 76 61 6c 69 64 25  3d 28 28 64 69 67 25 3c  |. valid%=((dig%<|
0000a8b0  3d 6e 65 78 74 64 69 67  25 20 84 20 67 61 6d 65  |=nextdig% . game|
0000a8c0  25 3d 31 20 80 20 48 65  6c 70 6c 65 76 25 3d 30  |%=1 . Helplev%=0|
0000a8d0  20 80 20 64 69 67 25 3c  3d 72 61 6e 67 65 25 20  | . dig%<=range% |
0000a8e0  84 20 67 61 6d 65 25 3d  32 20 80 20 6e 65 78 74  |. game%=2 . next|
0000a8f0  64 69 67 25 3d 61 6e 73  6c 69 6d 25 2b 31 20 80  |dig%=anslim%+1 .|
0000a900  20 64 69 67 25 3c 3d 72  61 6e 67 65 25 29 20 80  | dig%<=range%) .|
0000a910  20 28 63 61 72 72 79 25  3d 30 20 84 20 63 61 72  | (carry%=0 . car|
0000a920  72 79 25 3d 2d 31 20 80  20 28 48 65 6c 70 6c 65  |ry%=-1 . (Helple|
0000a930  76 25 3c 33 20 84 20 72  75 62 64 69 67 25 3e 2d  |v%<3 . rubdig%>-|
0000a940  31 29 29 29 0d 38 18 21  e7 20 76 61 6c 69 64 25  |1))).8.!. valid%|
0000a950  3d 30 20 8c 20 f2 6d 65  73 73 61 67 65 28 22 70  |=0 . .message("p|
0000a960  6c 22 29 3a e1 0d 38 22  2d e7 20 4d 6f 64 65 25  |l"):..8"-. Mode%|
0000a970  3d 30 20 80 20 53 43 66  6f 72 6d 61 74 25 3d 32  |=0 . SCformat%=2|
0000a980  20 80 20 64 69 67 25 3e  72 61 6e 67 65 25 20 8c  | . dig%>range% .|
0000a990  20 e1 0d 38 2c 04 0d 38  36 3c e7 20 4d 6f 64 65  | ..8,..86<. Mode|
0000a9a0  25 3d 2d 31 20 80 20 48  65 6c 70 6c 65 76 25 3d  |%=-1 . Helplev%=|
0000a9b0  35 20 80 20 a4 63 68 65  63 6b 5f 64 69 67 5f 76  |5 . .check_dig_v|
0000a9c0  61 6c 28 64 69 67 25 2c  22 61 6e 73 22 29 3d 30  |al(dig%,"ans")=0|
0000a9d0  20 8c 0d 38 40 30 20 e7  20 72 75 62 64 69 67 25  | ..8@0 . rubdig%|
0000a9e0  3d 2d 31 20 8c 20 44 69  67 25 3d 6e 65 78 74 64  |=-1 . Dig%=nextd|
0000a9f0  69 67 25 20 8b 20 44 69  67 25 3d 72 75 62 64 69  |ig% . Dig%=rubdi|
0000aa00  67 25 0d 38 4a 32 20 e7  20 64 69 67 25 3d 44 69  |g%.8J2 . dig%=Di|
0000aa10  67 25 20 8c 20 f2 6d 65  73 73 61 67 65 28 22 63  |g% . .message("c|
0000aa20  6b 22 29 20 8b 20 f2 6d  65 73 73 61 67 65 28 22  |k") . .message("|
0000aa30  70 72 22 29 0d 38 54 0c  20 66 6c 67 25 3d 2d 31  |pr").8T. flg%=-1|
0000aa40  0d 38 5e 05 cd 0d 38 68  0e e7 20 66 6c 67 25 20  |.8^...8h.. flg% |
0000aa50  8c 20 e1 0d 38 72 04 0d  38 7c 4a e7 20 4d 6f 64  |. ..8r..8|J. Mod|
0000aa60  65 25 3d 2d 31 20 80 20  48 65 6c 70 6c 65 76 25  |e%=-1 . Helplev%|
0000aa70  3e 30 20 80 20 a4 63 68  65 63 6b 5f 73 75 6d 5f  |>0 . .check_sum_|
0000aa80  74 79 70 65 28 64 69 67  25 29 3c 3e 30 20 8c 20  |type(dig%)<>0 . |
0000aa90  f2 6d 65 73 73 61 67 65  28 22 73 75 6d 22 29 3a  |.message("sum"):|
0000aaa0  e1 0d 38 86 04 0d 38 90  20 64 72 61 67 78 25 3d  |..8...8. dragx%=|
0000aab0  30 3a 64 72 61 67 79 25  3d 2d 38 32 35 3a 64 72  |0:dragy%=-825:dr|
0000aac0  61 67 25 3d 30 0d 38 9a  04 0d 38 a4 33 e7 20 64  |ag%=0.8...8.3. d|
0000aad0  69 67 33 24 28 64 69 67  25 29 3c 3e 22 22 20 8c  |ig3$(dig%)<>"" .|
0000aae0  20 73 75 6d 25 20 2d 3d  bb 64 69 67 33 24 28 64  | sum% -=.dig3$(d|
0000aaf0  69 67 25 29 2a 31 30 5e  64 69 67 25 0d 38 ae 19  |ig%)*10^dig%.8..|
0000ab00  64 69 67 33 24 28 64 69  67 25 29 3d c3 64 72 61  |dig3$(dig%)=.dra|
0000ab10  67 76 61 6c 25 0d 38 b8  1b 73 75 6d 25 20 2b 3d  |gval%.8..sum% +=|
0000ab20  64 72 61 67 76 61 6c 25  2a 31 30 5e 64 69 67 25  |dragval%*10^dig%|
0000ab30  0d 38 c2 04 0d 38 cc 4c  20 c8 99 22 57 69 6d 70  |.8...8.L .."Wimp|
0000ab40  5f 46 6f 72 63 65 52 65  64 72 61 77 22 2c 68 61  |_ForceRedraw",ha|
0000ab50  6e 64 6c 65 25 28 67 61  6d 65 25 29 2c 78 25 2c  |ndle%(game%),x%,|
0000ab60  59 33 25 2c 78 25 2b 37  35 2c 59 33 25 2b 37 35  |Y3%,x%+75,Y3%+75|
0000ab70  3a f4 20 43 75 72 72 65  6e 74 20 64 69 67 69 74  |:. Current digit|
0000ab80  0d 38 d6 25 20 e7 20 64  69 67 25 3c 6e 65 78 74  |.8.% . dig%<next|
0000ab90  64 69 67 25 20 80 20 72  75 62 64 69 67 25 3d 2d  |dig% . rubdig%=-|
0000aba0  31 20 8c 20 e1 0d 38 e0  04 0d 38 ea 10 e7 20 4d  |1 . ..8...8... M|
0000abb0  6f 64 65 25 3d 2d 31 20  8c 0d 38 f4 35 20 e7 20  |ode%=-1 ..8.5 . |
0000abc0  64 69 67 25 3d 6e 65 78  74 64 69 67 25 20 8c 20  |dig%=nextdig% . |
0000abd0  6e 65 78 74 64 69 67 25  20 2d 3d 28 6e 65 78 74  |nextdig% -=(next|
0000abe0  64 69 67 25 3c 3d 61 6e  73 6c 69 6d 25 29 0d 38  |dig%<=anslim%).8|
0000abf0  fe 5a 20 e7 20 63 61 72  5f 64 69 67 25 28 6e 65  |.Z . car_dig%(ne|
0000ac00  78 74 64 69 67 25 29 3d  28 6f 70 65 72 61 74 6f  |xtdig%)=(operato|
0000ac10  72 25 28 4e 61 6d 65 4e  6f 25 29 3d 32 29 20 80  |r%(NameNo%)=2) .|
0000ac20  20 6e 65 78 74 64 69 67  25 3c 3d 61 6e 73 6c 69  | nextdig%<=ansli|
0000ac30  6d 25 20 8c 20 43 64 6f  6e 65 25 28 6e 65 78 74  |m% . Cdone%(next|
0000ac40  64 69 67 25 29 3d 2d 31  0d 39 08 5c 20 e7 20 73  |dig%)=-1.9.\ . s|
0000ac50  74 5f 64 69 67 25 28 6e  65 78 74 64 69 67 25 29  |t_dig%(nextdig%)|
0000ac60  3d 30 20 80 20 6f 70 65  72 61 74 6f 72 25 28 4e  |=0 . operator%(N|
0000ac70  61 6d 65 4e 6f 25 29 3d  32 20 80 20 6e 65 78 74  |ameNo%)=2 . next|
0000ac80  64 69 67 25 3c 3d 61 6e  73 6c 69 6d 25 20 8c 20  |dig%<=anslim% . |
0000ac90  53 54 64 6f 6e 65 25 28  6e 65 78 74 64 69 67 25  |STdone%(nextdig%|
0000aca0  29 3d 2d 31 0d 39 12 35  20 e7 20 6f 70 65 72 61  |)=-1.9.5 . opera|
0000acb0  74 6f 72 25 28 4e 61 6d  65 4e 6f 25 29 3d 31 20  |tor%(NameNo%)=1 |
0000acc0  80 20 48 65 6c 70 6c 65  76 25 3d 30 20 8c 20 f2  |. Helplev%=0 . .|
0000acd0  73 6b 69 70 5f 6f 76 65  72 0d 39 1c 04 0d 39 26  |skip_over.9...9&|
0000ace0  13 20 e7 20 72 75 62 64  69 67 25 3d 2d 31 20 8c  |. . rubdig%=-1 .|
0000acf0  0d 39 30 2b 20 20 e7 20  6f 70 65 72 61 74 6f 72  |.90+  . operator|
0000ad00  25 28 4e 61 6d 65 4e 6f  25 29 3d 32 20 8c 20 f2  |%(NameNo%)=2 . .|
0000ad10  63 6f 75 6e 74 5f 73 74  65 70 73 0d 39 3a 6a 20  |count_steps.9:j |
0000ad20  20 e7 20 63 61 72 5f 64  69 67 25 28 6e 65 78 74  | . car_dig%(next|
0000ad30  64 69 67 25 2b 42 73 74  65 70 25 29 3e 31 2d 6f  |dig%+Bstep%)>1-o|
0000ad40  70 65 72 61 74 6f 72 25  28 4e 61 6d 65 4e 6f 25  |perator%(NameNo%|
0000ad50  29 20 80 20 63 61 72 72  79 24 28 6e 65 78 74 64  |) . carry$(nextd|
0000ad60  69 67 25 2b 42 73 74 65  70 25 29 3d 22 22 20 8c  |ig%+Bstep%)="" .|
0000ad70  20 63 61 72 72 79 25 3d  2d 31 20 8b 20 63 61 72  | carry%=-1 . car|
0000ad80  72 79 25 3d 30 0d 39 44  06 20 cd 0d 39 4e 04 0d  |ry%=0.9D. ..9N..|
0000ad90  39 58 15 20 e7 20 64 69  67 25 3d 72 75 62 64 69  |9X. . dig%=rubdi|
0000ada0  67 25 20 8c 0d 39 62 1b  20 20 72 75 62 64 69 67  |g% ..9b.  rubdig|
0000adb0  25 3d a4 63 68 65 63 6b  5f 72 75 62 6f 75 74 0d  |%=.check_rubout.|
0000adc0  39 6c 06 20 cd 0d 39 76  28 20 e7 20 74 72 79 25  |9l. ..9v( . try%|
0000add0  3e 30 20 80 20 72 75 62  64 69 67 25 3d 2d 31 20  |>0 . rubdig%=-1 |
0000ade0  8c 20 f2 66 69 6e 64 5f  65 72 72 6f 72 0d 39 80  |. .find_error.9.|
0000adf0  04 0d 39 8a 2c 20 f2 72  65 64 72 61 77 5f 62 6f  |..9., .redraw_bo|
0000ae00  78 5f 70 6f 73 69 74 69  6f 6e 28 6e 65 78 74 64  |x_position(nextd|
0000ae10  69 67 25 2c 48 65 6c 70  6c 65 76 25 29 0d 39 94  |ig%,Helplev%).9.|
0000ae20  05 cd 0d 39 9e 49 6e 65  78 74 6d 65 73 73 25 3d  |...9.Inextmess%=|
0000ae30  2d 28 48 65 6c 70 6c 65  76 25 3d 35 20 80 20 28  |-(Helplev%=5 . (|
0000ae40  6e 65 78 74 64 69 67 25  3c 3d 61 6e 73 6c 69 6d  |nextdig%<=anslim|
0000ae50  25 20 84 20 72 75 62 64  69 67 25 3e 2d 31 29 20  |% . rubdig%>-1) |
0000ae60  80 20 4d 6f 64 65 25 3d  2d 31 29 0d 39 a8 4d e7  |. Mode%=-1).9.M.|
0000ae70  20 28 74 72 79 25 3c 74  72 69 65 73 25 28 4e 61  | (try%<tries%(Na|
0000ae80  6d 65 4e 6f 25 29 20 84  20 66 6f 72 63 65 35 25  |meNo%) . force5%|
0000ae90  3d 2d 31 29 20 80 20 53  43 66 6f 72 6d 61 74 25  |=-1) . SCformat%|
0000aea0  3d 32 20 8c 20 f2 73 65  74 5f 74 6f 70 5f 69 63  |=2 . .set_top_ic|
0000aeb0  6f 6e 28 30 2c 2d 31 29  0d 39 b2 05 e1 0d 39 bc  |on(0,-1).9....9.|
0000aec0  04 0d 39 c6 04 0d 39 d0  10 dd 20 f2 73 6b 69 70  |..9...9... .skip|
0000aed0  5f 6f 76 65 72 0d 39 da  16 f4 20 41 64 64 69 74  |_over.9... Addit|
0000aee0  69 6f 6e 20 6c 65 76 65  6c 20 30 0d 39 e4 2e c8  |ion level 0.9...|
0000aef0  95 20 64 69 67 33 24 28  6e 65 78 74 64 69 67 25  |. dig3$(nextdig%|
0000af00  29 3c 3e 22 22 20 80 20  6e 65 78 74 64 69 67 25  |)<>"" . nextdig%|
0000af10  3c 3d 61 6e 73 6c 69 6d  25 0d 39 ee 10 6e 65 78  |<=anslim%.9..nex|
0000af20  74 64 69 67 25 20 2b 3d  31 0d 39 f8 05 ce 0d 3a  |tdig% +=1.9....:|
0000af30  02 05 e1 0d 3a 0c 04 0d  3a 16 04 0d 3a 20 26 dd  |....:...:...: &.|
0000af40  20 f2 72 65 64 72 61 77  5f 62 6f 78 5f 70 6f 73  | .redraw_box_pos|
0000af50  69 74 69 6f 6e 28 70 6f  73 25 2c 68 65 6c 70 25  |ition(pos%,help%|
0000af60  29 0d 3a 2a 1c e7 20 6f  70 65 72 61 74 6f 72 25  |).:*.. operator%|
0000af70  28 4e 61 6d 65 4e 6f 25  29 3d 31 20 8c 0d 3a 34  |(NameNo%)=1 ..:4|
0000af80  1c 20 f2 64 69 67 5f 63  61 72 72 79 5f 72 65 64  |. .dig_carry_red|
0000af90  72 61 77 28 70 6f 73 25  29 0d 3a 3e 05 cc 0d 3a  |raw(pos%).:>...:|
0000afa0  48 29 20 e7 20 63 61 72  72 79 25 3d 2d 31 20 80  |H) . carry%=-1 .|
0000afb0  20 72 75 62 64 69 67 25  3d 2d 31 20 80 20 68 65  | rubdig%=-1 . he|
0000afc0  6c 70 25 3e 32 20 8c 0d  3a 52 04 0d 3a 5c 11 20  |lp%>2 ..:R..:\. |
0000afd0  20 e7 20 73 74 72 69 6b  65 25 20 8c 0d 3a 66 22  | . strike% ..:f"|
0000afe0  20 20 20 f2 73 74 72 69  6b 65 5f 72 65 64 72 61  |   .strike_redra|
0000aff0  77 28 70 6f 73 25 2c 42  73 74 65 70 25 29 0d 3a  |w(pos%,Bstep%).:|
0000b000  70 07 20 20 cc 0d 3a 7a  21 20 20 20 f2 63 61 72  |p.  ..:z!   .car|
0000b010  72 79 5f 72 65 64 72 61  77 28 70 6f 73 25 2c 42  |ry_redraw(pos%,B|
0000b020  73 74 65 70 25 29 0d 3a  84 07 20 20 cd 0d 3a 8e  |step%).:..  ..:.|
0000b030  04 0d 3a 98 06 20 cc 0d  3a a2 19 20 20 f2 64 69  |..:.. ..:..  .di|
0000b040  67 69 74 5f 72 65 64 72  61 77 28 70 6f 73 25 29  |git_redraw(pos%)|
0000b050  0d 3a ac 06 20 cd 0d 3a  b6 05 cd 0d 3a c0 05 e1  |.:.. ..:....:...|
0000b060  0d 3a ca 04 0d 3a d4 04  0d 3a de 1d dd 20 f2 64  |.:...:...:... .d|
0000b070  69 67 5f 63 61 72 72 79  5f 72 65 64 72 61 77 28  |ig_carry_redraw(|
0000b080  64 69 67 25 29 0d 3a e8  0e f4 20 41 64 64 69 74  |dig%).:... Addit|
0000b090  69 6f 6e 0d 3a f2 3b e7  20 72 75 62 64 69 67 25  |ion.:.;. rubdig%|
0000b0a0  3e 2d 31 20 8c 20 78 25  3d a4 64 69 67 78 28 72  |>-1 . x%=.digx(r|
0000b0b0  75 62 64 69 67 25 29 2b  31 30 20 8b 20 78 25 3d  |ubdig%)+10 . x%=|
0000b0c0  a4 64 69 67 78 28 64 69  67 25 29 2b 31 30 0d 3a  |.digx(dig%)+10.:|
0000b0d0  fc 56 c8 99 22 57 69 6d  70 5f 46 6f 72 63 65 52  |.V.."Wimp_ForceR|
0000b0e0  65 64 72 61 77 22 2c 68  61 6e 64 6c 65 25 28 67  |edraw",handle%(g|
0000b0f0  61 6d 65 25 29 2c 78 25  2c 79 63 61 72 25 2c 78  |ame%),x%,ycar%,x|
0000b100  25 2b 37 35 2c 79 63 61  72 25 2b 31 30 36 3a f4  |%+75,ycar%+106:.|
0000b110  20 4e 65 78 74 20 64 69  67 69 74 20 6f 72 20 63  | Next digit or c|
0000b120  61 72 72 79 0d 3b 06 05  e1 0d 3b 10 04 0d 3b 1a  |arry.;....;...;.|
0000b130  04 0d 3b 24 19 dd 20 f2  64 69 67 69 74 5f 72 65  |..;$.. .digit_re|
0000b140  64 72 61 77 28 64 69 67  25 29 0d 3b 2e 11 f4 20  |draw(dig%).;... |
0000b150  53 75 62 74 72 61 63 74  69 6f 6e 0d 3b 38 3b e7  |Subtraction.;8;.|
0000b160  20 72 75 62 64 69 67 25  3e 2d 31 20 8c 20 78 25  | rubdig%>-1 . x%|
0000b170  3d a4 64 69 67 78 28 72  75 62 64 69 67 25 29 2b  |=.digx(rubdig%)+|
0000b180  31 30 20 8b 20 78 25 3d  a4 64 69 67 78 28 64 69  |10 . x%=.digx(di|
0000b190  67 25 29 2b 31 30 0d 3b  42 48 c8 99 22 57 69 6d  |g%)+10.;BH.."Wim|
0000b1a0  70 5f 46 6f 72 63 65 52  65 64 72 61 77 22 2c 68  |p_ForceRedraw",h|
0000b1b0  61 6e 64 6c 65 25 28 67  61 6d 65 25 29 2c 78 25  |andle%(game%),x%|
0000b1c0  2c 79 33 25 2c 78 25 2b  37 35 2c 79 33 25 2b 37  |,y3%,x%+75,y3%+7|
0000b1d0  35 3a f4 20 4e 65 78 74  20 64 69 67 69 74 0d 3b  |5:. Next digit.;|
0000b1e0  4c 05 e1 0d 3b 56 04 0d  3b 60 04 0d 3b 6a 20 dd  |L...;V..;`..;j .|
0000b1f0  20 f2 63 61 72 72 79 5f  72 65 64 72 61 77 28 64  | .carry_redraw(d|
0000b200  69 67 25 2c 73 68 69 66  74 25 29 0d 3b 74 0b ea  |ig%,shift%).;t..|
0000b210  20 78 25 2c 68 25 0d 3b  7e 22 f2 63 61 72 72 79  | x%,h%.;~".carry|
0000b220  5f 70 6f 73 78 28 64 69  67 25 2b 73 68 69 66 74  |_posx(dig%+shift|
0000b230  25 2c 78 25 2c 68 25 29  0d 3b 88 4e c8 99 22 57  |%,x%,h%).;.N.."W|
0000b240  69 6d 70 5f 46 6f 72 63  65 52 65 64 72 61 77 22  |imp_ForceRedraw"|
0000b250  2c 68 61 6e 64 6c 65 25  28 67 61 6d 65 25 29 2c  |,handle%(game%),|
0000b260  78 25 2c 79 63 61 72 25  2c 78 25 2b 34 32 2c 79  |x%,ycar%,x%+42,y|
0000b270  63 61 72 25 2b 68 25 2b  34 3a f4 20 4e 65 78 74  |car%+h%+4:. Next|
0000b280  20 63 61 72 72 79 0d 3b  92 05 e1 0d 3b 9c 04 0d  | carry.;....;...|
0000b290  3b a6 04 0d 3b b0 21 dd  20 f2 73 74 72 69 6b 65  |;...;.!. .strike|
0000b2a0  5f 72 65 64 72 61 77 28  64 69 67 25 2c 73 68 69  |_redraw(dig%,shi|
0000b2b0  66 74 25 29 0d 3b ba 1c  78 25 3d a4 64 69 67 78  |ft%).;..x%=.digx|
0000b2c0  28 64 69 67 25 2b 73 68  69 66 74 25 29 2b 31 30  |(dig%+shift%)+10|
0000b2d0  0d 3b c4 49 c8 99 22 57  69 6d 70 5f 46 6f 72 63  |.;.I.."Wimp_Forc|
0000b2e0  65 52 65 64 72 61 77 22  2c 68 61 6e 64 6c 65 25  |eRedraw",handle%|
0000b2f0  28 67 61 6d 65 25 29 2c  78 25 2c 79 31 25 2c 78  |(game%),x%,y1%,x|
0000b300  25 2b 37 35 2c 79 31 25  2b 37 35 3a f4 20 4e 65  |%+75,y1%+75:. Ne|
0000b310  78 74 20 73 74 72 69 6b  65 0d 3b ce 05 e1 0d 3b  |xt strike.;....;|
0000b320  d8 04 0d 3b e2 04 0d 3b  ec 12 dd 20 f2 63 6f 75  |...;...;... .cou|
0000b330  6e 74 5f 73 74 65 70 73  0d 3b f6 0a ea 20 66 6c  |nt_steps.;... fl|
0000b340  67 25 0d 3c 00 0c 42 73  74 65 70 25 3d 30 0d 3c  |g%.<..Bstep%=0.<|
0000b350  0a 46 e7 20 48 65 6c 70  6c 65 76 25 3d 32 20 80  |.F. Helplev%=2 .|
0000b360  20 ac 28 73 74 5f 64 69  67 25 28 6e 65 78 74 64  | .(st_dig%(nextd|
0000b370  69 67 25 2b 31 29 3d 31  20 80 20 73 74 72 69 6b  |ig%+1)=1 . strik|
0000b380  65 24 28 6e 65 78 74 64  69 67 25 2b 31 29 3d 22  |e$(nextdig%+1)="|
0000b390  22 29 20 8c 0d 3c 14 50  20 e7 20 73 74 72 69 6b  |") ..<.P . strik|
0000b3a0  65 24 28 6e 65 78 74 64  69 67 25 29 3d 22 22 20  |e$(nextdig%)="" |
0000b3b0  80 20 73 74 5f 64 69 67  25 28 6e 65 78 74 64 69  |. st_dig%(nextdi|
0000b3c0  67 25 29 3d 31 20 8c 20  73 74 72 69 6b 65 25 3d  |g%)=1 . strike%=|
0000b3d0  2d 31 3a 63 61 72 72 79  25 3d 2d 31 3a 66 6c 67  |-1:carry%=-1:flg|
0000b3e0  25 3d 2d 31 0d 3c 1e 51  20 e7 20 73 74 72 69 6b  |%=-1.<.Q . strik|
0000b3f0  65 24 28 6e 65 78 74 64  69 67 25 29 3d 22 2f 22  |e$(nextdig%)="/"|
0000b400  20 80 20 63 61 72 72 79  24 28 6e 65 78 74 64 69  | . carry$(nextdi|
0000b410  67 25 29 3d 22 22 20 8c  20 72 65 64 75 63 65 25  |g%)="" . reduce%|
0000b420  3d 2d 31 3a 63 61 72 72  79 25 3d 2d 31 3a 66 6c  |=-1:carry%=-1:fl|
0000b430  67 25 3d 2d 31 0d 3c 28  05 cd 0d 3c 32 0e e7 20  |g%=-1.<(...<2.. |
0000b440  66 6c 67 25 20 8c 20 e1  0d 3c 3c 04 0d 3c 46 43  |flg% . ..<<..<FC|
0000b450  e7 20 73 74 5f 64 69 67  25 28 6e 65 78 74 64 69  |. st_dig%(nextdi|
0000b460  67 25 2b 31 29 3d 31 20  80 20 73 74 72 69 6b 65  |g%+1)=1 . strike|
0000b470  24 28 6e 65 78 74 64 69  67 25 2b 31 29 3d 22 22  |$(nextdig%+1)=""|
0000b480  20 8c 20 42 73 74 65 70  25 3d 31 20 8b 20 e1 0d  | . Bstep%=1 . ..|
0000b490  3c 50 18 73 74 72 69 6b  65 25 3d 2d 31 3a 63 61  |<P.strike%=-1:ca|
0000b4a0  72 72 79 25 3d 2d 31 0d  3c 5a 3f c8 95 20 64 69  |rry%=-1.<Z?.. di|
0000b4b0  67 31 24 28 6e 65 78 74  64 69 67 25 2b 42 73 74  |g1$(nextdig%+Bst|
0000b4c0  65 70 25 29 3d 22 30 22  20 80 20 73 74 72 69 6b  |ep%)="0" . strik|
0000b4d0  65 24 28 6e 65 78 74 64  69 67 25 2b 42 73 74 65  |e$(nextdig%+Bste|
0000b4e0  70 25 29 3d 22 22 0d 3c  64 0f 20 42 73 74 65 70  |p%)="".<d. Bstep|
0000b4f0  25 20 2b 3d 31 0d 3c 6e  05 ce 0d 3c 78 05 e1 0d  |% +=1.<n...<x...|
0000b500  3c 82 04 0d 3c 8c 04 0d  3c 96 19 dd 20 f2 70 6c  |<...<...<... .pl|
0000b510  61 63 65 5f 73 74 72 69  6b 65 28 64 69 67 25 29  |ace_strike(dig%)|
0000b520  0d 3c a0 18 ea 20 78 25  2c 68 25 2c 64 69 67 6c  |.<... x%,h%,digl|
0000b530  69 6d 25 2c 66 6c 67 25  0d 3c aa 15 e7 20 53 43  |im%,flg%.<... SC|
0000b540  66 6f 72 6d 61 74 25 3d  31 20 8c 20 e1 0d 3c b4  |format%=1 . ..<.|
0000b550  43 e7 20 6f 70 65 72 61  74 6f 72 25 28 4e 61 6d  |C. operator%(Nam|
0000b560  65 4e 6f 25 29 3d 32 20  8c 20 64 69 67 6c 69 6d  |eNo%)=2 . diglim|
0000b570  25 3d a4 71 75 65 73 74  5f 6c 69 6d 69 74 20 8b  |%=.quest_limit .|
0000b580  20 64 69 67 6c 69 6d 25  3d 61 6e 73 6c 69 6d 25  | diglim%=anslim%|
0000b590  0d 3c be 7b e7 20 6d 6f  64 65 25 28 4e 61 6d 65  |.<.{. mode%(Name|
0000b5a0  4e 6f 25 29 3d 31 20 80  20 73 74 5f 64 69 67 25  |No%)=1 . st_dig%|
0000b5b0  28 64 69 67 25 29 3d 31  20 80 20 73 74 72 69 6b  |(dig%)=1 . strik|
0000b5c0  65 24 28 64 69 67 25 29  3d 22 22 20 80 20 64 69  |e$(dig%)="" . di|
0000b5d0  67 25 3e 3d 6e 65 78 74  64 69 67 25 20 80 20 48  |g%>=nextdig% . H|
0000b5e0  65 6c 70 6c 65 76 25 3c  3d 32 20 8c 20 42 73 74  |elplev%<=2 . Bst|
0000b5f0  65 70 25 3d 64 69 67 25  2d 6e 65 78 74 64 69 67  |ep%=dig%-nextdig|
0000b600  25 3a 63 61 72 72 79 25  3d 2d 31 0d 3c c8 86 e7  |%:carry%=-1.<...|
0000b610  20 6d 6f 64 65 25 28 4e  61 6d 65 4e 6f 25 29 3d  | mode%(NameNo%)=|
0000b620  31 20 80 20 48 65 6c 70  6c 65 76 25 3e 32 20 80  |1 . Helplev%>2 .|
0000b630  20 64 69 67 25 3c 3e 6e  65 78 74 64 69 67 25 2b  | dig%<>nextdig%+|
0000b640  42 73 74 65 70 25 20 80  20 53 54 64 6f 6e 65 25  |Bstep% . STdone%|
0000b650  28 64 69 67 25 29 3d 30  20 80 20 74 72 79 25 3d  |(dig%)=0 . try%=|
0000b660  30 20 84 20 48 65 6c 70  6c 65 76 25 3c 3d 32 20  |0 . Helplev%<=2 |
0000b670  80 20 64 69 67 25 3e 64  69 67 6c 69 6d 25 20 8c  |. dig%>diglim% .|
0000b680  20 f2 6d 65 73 73 61 67  65 28 22 70 6c 22 29 3a  | .message("pl"):|
0000b690  e1 0d 3c d2 29 e7 20 6d  6f 64 65 25 28 4e 61 6d  |..<.). mode%(Nam|
0000b6a0  65 4e 6f 25 29 3d 30 20  80 20 64 69 67 25 3e 64  |eNo%)=0 . dig%>d|
0000b6b0  69 67 6c 69 6d 25 20 8c  20 e1 0d 3c dc 13 e7 20  |iglim% . ..<... |
0000b6c0  64 72 61 67 76 61 6c 25  3c 33 30 20 8c 0d 3c e6  |dragval%<30 ..<.|
0000b6d0  22 20 e7 20 48 65 6c 70  6c 65 76 25 3d 35 20 8c  |" . Helplev%=5 .|
0000b6e0  20 f2 6d 65 73 73 61 67  65 28 22 63 6b 22 29 0d  | .message("ck").|
0000b6f0  3c f0 0c 20 66 6c 67 25  3d 2d 31 0d 3c fa 05 cd  |<.. flg%=-1.<...|
0000b700  0d 3d 04 0e e7 20 66 6c  67 25 20 8c 20 e1 0d 3d  |.=... flg% . ..=|
0000b710  0e 5d e7 20 6d 65 73 73  61 67 65 24 28 31 29 3c  |.]. message$(1)<|
0000b720  3e 22 22 20 80 20 6d 6f  64 65 25 28 4e 61 6d 65  |>"" . mode%(Name|
0000b730  4e 6f 25 29 3d 31 20 80  20 ac 28 48 65 6c 70 6c  |No%)=1 . .(Helpl|
0000b740  65 76 25 3d 35 20 80 20  53 54 64 6f 6e 65 25 28  |ev%=5 . STdone%(|
0000b750  64 69 67 25 29 3d 2d 31  29 20 8c 20 f2 72 65 6d  |dig%)=-1) . .rem|
0000b760  6f 76 65 5f 6d 65 73 73  61 67 65 0d 3d 18 49 c8  |ove_message.=.I.|
0000b770  99 22 57 69 6d 70 5f 46  6f 72 63 65 52 65 64 72  |."Wimp_ForceRedr|
0000b780  61 77 22 2c 68 61 6e 64  6c 65 25 28 67 61 6d 65  |aw",handle%(game|
0000b790  25 29 2c 64 72 61 67 78  25 2c 64 72 61 67 79 25  |%),dragx%,dragy%|
0000b7a0  2c 64 72 61 67 78 25 2b  37 35 2c 64 72 61 67 79  |,dragx%+75,dragy|
0000b7b0  25 2b 37 35 0d 3d 22 2d  f2 77 6f 72 6b 5f 61 72  |%+75.="-.work_ar|
0000b7c0  65 61 5f 6f 72 69 67 69  6e 28 68 61 6e 64 6c 65  |ea_origin(handle|
0000b7d0  25 28 67 61 6d 65 25 29  2c 6f 78 25 2c 6f 79 25  |%(game%),ox%,oy%|
0000b7e0  29 0d 3d 2c 32 73 74 72  69 6b 65 24 28 64 69 67  |).=,2strike$(dig|
0000b7f0  25 29 3d 22 2f 22 3a 64  72 61 67 25 3d 30 3a 64  |%)="/":drag%=0:d|
0000b800  6f 75 62 6c 65 25 3d 30  3a 64 72 61 67 76 61 6c  |ouble%=0:dragval|
0000b810  25 3d 30 0d 3d 36 61 6e  65 78 74 6d 65 73 73 25  |%=0.=6anextmess%|
0000b820  3d 2d 28 48 65 6c 70 6c  65 76 25 3d 35 20 80 20  |=-(Helplev%=5 . |
0000b830  6e 65 78 74 64 69 67 25  3c 3d 61 6e 73 6c 69 6d  |nextdig%<=anslim|
0000b840  25 20 80 20 6d 6f 64 65  25 28 4e 61 6d 65 4e 6f  |% . mode%(NameNo|
0000b850  25 29 3d 31 20 80 20 48  65 6c 70 6c 65 76 25 3d  |%)=1 . Helplev%=|
0000b860  35 20 80 20 53 54 64 6f  6e 65 25 28 64 69 67 25  |5 . STdone%(dig%|
0000b870  29 3d 30 29 0d 3d 40 1a  f2 73 74 72 69 6b 65 5f  |)=0).=@..strike_|
0000b880  72 65 64 72 61 77 28 64  69 67 25 2c 30 29 0d 3d  |redraw(dig%,0).=|
0000b890  4a 19 e7 20 73 74 5f 64  69 67 25 28 64 69 67 25  |J.. st_dig%(dig%|
0000b8a0  29 3d 30 20 8c 20 e1 0d  3d 54 14 53 54 64 6f 6e  |)=0 . ..=T.STdon|
0000b8b0  65 25 28 64 69 67 25 29  3d 2d 31 0d 3d 5e 04 0d  |e%(dig%)=-1.=^..|
0000b8c0  3d 68 3b e7 20 6d 6f 64  65 25 28 4e 61 6d 65 4e  |=h;. mode%(NameN|
0000b8d0  6f 25 29 3d 31 20 80 20  64 69 67 25 3d 6e 65 78  |o%)=1 . dig%=nex|
0000b8e0  74 64 69 67 25 2b 42 73  74 65 70 25 20 80 20 63  |tdig%+Bstep% . c|
0000b8f0  61 72 72 79 25 3d 2d 31  20 8c 0d 3d 72 17 20 f4  |arry%=-1 ..=r. .|
0000b900  20 53 54 64 6f 6e 65 25  28 64 69 67 25 29 3d 2d  | STdone%(dig%)=-|
0000b910  31 0d 3d 7c 2e 20 e7 20  42 73 74 65 70 25 3e 30  |1.=|. . Bstep%>0|
0000b920  20 84 20 63 61 72 72 79  24 28 6e 65 78 74 64 69  | . carry$(nextdi|
0000b930  67 25 2b 42 73 74 65 70  25 29 3d 22 22 20 8c 0d  |g%+Bstep%)="" ..|
0000b940  3d 86 34 20 20 72 65 64  75 63 65 25 3d 28 63 61  |=.4  reduce%=(ca|
0000b950  72 72 79 24 28 6e 65 78  74 64 69 67 25 2b 42 73  |rry$(nextdig%+Bs|
0000b960  74 65 70 25 29 3d 22 22  29 3a 73 74 72 69 6b 65  |tep%)=""):strike|
0000b970  25 3d 30 0d 3d 90 1e 20  20 e7 20 72 65 64 75 63  |%=0.=..  . reduc|
0000b980  65 25 3d 30 20 8c 20 42  73 74 65 70 25 20 2d 3d  |e%=0 . Bstep% -=|
0000b990  31 0d 3d 9a 33 20 20 e7  20 48 65 6c 70 6c 65 76  |1.=.3  . Helplev|
0000b9a0  25 3e 32 20 8c 20 f2 63  61 72 72 79 5f 72 65 64  |%>2 . .carry_red|
0000b9b0  72 61 77 28 6e 65 78 74  64 69 67 25 2c 42 73 74  |raw(nextdig%,Bst|
0000b9c0  65 70 25 29 0d 3d a4 06  20 cc 0d 3d ae 2c 20 20  |ep%).=.. ..=.,  |
0000b9d0  e7 20 48 65 6c 70 6c 65  76 25 3e 32 20 8c 20 f2  |. Helplev%>2 . .|
0000b9e0  64 69 67 69 74 5f 72 65  64 72 61 77 28 6e 65 78  |digit_redraw(nex|
0000b9f0  74 64 69 67 25 29 0d 3d  b8 18 20 20 73 74 72 69  |tdig%).=..  stri|
0000ba00  6b 65 25 3d 30 3a 63 61  72 72 79 25 3d 30 0d 3d  |ke%=0:carry%=0.=|
0000ba10  c2 06 20 cd 0d 3d cc 05  cd 0d 3d d6 05 e1 0d 3d  |.. ..=....=....=|
0000ba20  e0 04 0d 3d ea 04 0d 3d  f4 22 dd 20 a4 63 68 65  |...=...=.". .che|
0000ba30  63 6b 5f 64 69 67 5f 76  61 6c 28 64 69 67 25 2c  |ck_dig_val(dig%,|
0000ba40  73 6f 75 72 63 65 24 29  0d 3d fe 13 ea 20 6e 75  |source$).=... nu|
0000ba50  6d 25 2c 64 25 2c 64 69  67 31 25 0d 3e 08 0b 64  |m%,d%,dig1%.>..d|
0000ba60  25 3d 64 69 67 25 0d 3e  12 1c e7 20 6f 70 65 72  |%=dig%.>... oper|
0000ba70  61 74 6f 72 25 28 4e 61  6d 65 4e 6f 25 29 3d 31  |ator%(NameNo%)=1|
0000ba80  20 8c 0d 3e 1c 5b 20 e7  20 73 6f 75 72 63 65 24  | ..>.[ . source$|
0000ba90  3d 22 61 6e 73 22 20 8c  20 6e 75 6d 25 3d 28 bb  |="ans" . num%=(.|
0000baa0  20 64 69 67 31 24 28 64  25 29 2b bb 20 64 69 67  | dig1$(d%)+. dig|
0000bab0  32 24 28 64 25 29 2b 63  61 72 5f 64 69 67 25 28  |2$(d%)+car_dig%(|
0000bac0  64 25 29 29 20 83 20 31  30 20 8b 20 6e 75 6d 25  |d%)) . 10 . num%|
0000bad0  3d 63 61 72 5f 64 69 67  25 28 64 25 29 0d 3e 26  |=car_dig%(d%).>&|
0000bae0  05 cc 0d 3e 30 16 20 e7  20 73 6f 75 72 63 65 24  |...>0. . source$|
0000baf0  3d 22 61 6e 73 22 20 8c  0d 3e 3a 3f 20 20 e7 20  |="ans" ..>:?  . |
0000bb00  63 61 72 5f 64 69 67 25  28 64 25 29 3e 30 20 8c  |car_dig%(d%)>0 .|
0000bb10  20 64 69 67 31 25 3d 63  61 72 5f 64 69 67 25 28  | dig1%=car_dig%(|
0000bb20  64 25 29 20 8b 20 64 69  67 31 25 3d bb 20 64 69  |d%) . dig1%=. di|
0000bb30  67 31 24 28 64 25 29 0d  3e 44 1c 20 20 6e 75 6d  |g1$(d%).>D.  num|
0000bb40  25 3d 64 69 67 31 25 2d  bb 20 64 69 67 32 24 28  |%=dig1%-. dig2$(|
0000bb50  64 25 29 0d 3e 4e 06 20  cc 0d 3e 58 1e 20 20 75  |d%).>N. ..>X.  u|
0000bb60  6e 69 74 73 25 3d 63 61  72 5f 64 69 67 25 28 64  |nits%=car_dig%(d|
0000bb70  25 29 20 83 20 31 30 0d  3e 62 19 20 20 e7 20 a4  |%) . 10.>b.  . .|
0000bb80  63 61 72 72 79 5f 32 64  69 67 28 64 25 29 20 8c  |carry_2dig(d%) .|
0000bb90  0d 3e 6c 2d 20 20 20 e7  20 63 61 72 72 79 24 28  |.>l-   . carry$(|
0000bba0  64 25 29 3d 22 22 20 8c  20 6e 75 6d 25 3d 75 6e  |d%)="" . num%=un|
0000bbb0  69 74 73 25 20 8b 20 6e  75 6d 25 3d 31 0d 3e 76  |its% . num%=1.>v|
0000bbc0  07 20 20 cc 0d 3e 80 2e  20 20 20 e7 20 63 61 72  |.  ..>..   . car|
0000bbd0  5f 64 69 67 25 28 64 25  29 3e 39 20 8c 20 6e 75  |_dig%(d%)>9 . nu|
0000bbe0  6d 25 3d 31 20 8b 20 6e  75 6d 25 3d 75 6e 69 74  |m%=1 . num%=unit|
0000bbf0  73 25 0d 3e 8a 08 20 20  20 cd 0d 3e 94 06 20 cd  |s%.>..   ..>.. .|
0000bc00  0d 3e 9e 05 cd 0d 3e a8  14 3d 28 6e 75 6d 25 3d  |.>....>..=(num%=|
0000bc10  64 72 61 67 76 61 6c 25  29 0d 3e b2 04 0d 3e bc  |dragval%).>...>.|
0000bc20  04 0d 3e c6 1b dd 20 a4  63 68 65 63 6b 5f 73 75  |..>... .check_su|
0000bc30  6d 5f 74 79 70 65 28 64  69 67 25 29 0d 3e d0 0d  |m_type(dig%).>..|
0000bc40  ea 20 64 31 25 2c 64 32  25 0d 3e da 25 64 31 25  |. d1%,d2%.>.%d1%|
0000bc50  3d bb 64 69 67 31 24 28  64 69 67 25 29 3a 64 32  |=.dig1$(dig%):d2|
0000bc60  25 3d bb 64 69 67 32 24  28 64 69 67 25 29 0d 3e  |%=.dig2$(dig%).>|
0000bc70  e4 48 e7 20 6f 70 65 72  61 74 6f 72 25 28 4e 61  |.H. operator%(Na|
0000bc80  6d 65 4e 6f 25 29 3d 31  20 8c 20 3d a4 63 68 65  |meNo%)=1 . =.che|
0000bc90  63 6b 5f 73 75 6d 5f 74  79 70 65 41 20 8b 20 3d  |ck_sum_typeA . =|
0000bca0  a4 63 68 65 63 6b 5f 73  75 6d 5f 74 79 70 65 53  |.check_sum_typeS|
0000bcb0  28 64 69 67 25 29 0d 3e  ee 04 0d 3e f8 1c dd 20  |(dig%).>...>... |
0000bcc0  a4 63 68 65 63 6b 5f 73  75 6d 5f 74 79 70 65 53  |.check_sum_typeS|
0000bcd0  28 64 69 67 25 29 0d 3f  02 22 e7 20 64 72 61 67  |(dig%).?.". drag|
0000bce0  76 61 6c 25 3d bb 61 6e  73 77 65 72 24 28 64 69  |val%=.answer$(di|
0000bcf0  67 25 29 20 8c 20 3d 30  0d 3f 0c 26 e7 20 64 32  |g%) . =0.?.&. d2|
0000bd00  25 2d 64 31 25 3d 64 72  61 67 76 61 6c 25 20 80  |%-d1%=dragval% .|
0000bd10  20 64 31 25 3c 3e 64 32  25 20 8c 20 3d 31 0d 3f  | d1%<>d2% . =1.?|
0000bd20  16 22 e7 20 28 64 31 25  2b 64 32 25 29 20 83 20  |.". (d1%+d2%) . |
0000bd30  31 30 3d 64 72 61 67 76  61 6c 25 20 8c 20 3d 32  |10=dragval% . =2|
0000bd40  0d 3f 20 06 3d 30 0d 3f  2a 04 0d 3f 34 16 dd 20  |.? .=0.?*..?4.. |
0000bd50  a4 63 68 65 63 6b 5f 73  75 6d 5f 74 79 70 65 41  |.check_sum_typeA|
0000bd60  0d 3f 3e 22 e7 20 64 72  61 67 76 61 6c 25 3d bb  |.?>". dragval%=.|
0000bd70  61 6e 73 77 65 72 24 28  64 69 67 25 29 20 8c 20  |answer$(dig%) . |
0000bd80  3d 30 0d 3f 48 1d e7 20  28 64 31 25 2d 64 32 25  |=0.?H.. (d1%-d2%|
0000bd90  29 3d 64 72 61 67 76 61  6c 25 20 8c 20 3d 31 0d  |)=dragval% . =1.|
0000bda0  3f 52 06 3d 30 0d 3f 5c  04 0d 3f 66 04 0d 3f 70  |?R.=0.?\..?f..?p|
0000bdb0  19 dd 20 f2 70 6c 61 63  65 5f 64 6f 75 62 6c 65  |.. .place_double|
0000bdc0  5f 63 6c 69 63 6b 0d 3f  7a 10 ea 20 70 6f 73 25  |_click.?z.. pos%|
0000bdd0  2c 73 74 65 70 25 0d 3f  84 1e 73 74 65 70 25 3d  |,step%.?..step%=|
0000bde0  2d 42 73 74 65 70 25 2a  28 48 65 6c 70 6c 65 76  |-Bstep%*(Helplev|
0000bdf0  25 3e 32 29 0d 3f 8e 6c  e7 20 6e 65 78 74 64 69  |%>2).?.l. nextdi|
0000be00  67 25 3e 61 6e 73 6c 69  6d 25 20 80 20 63 61 72  |g%>anslim% . car|
0000be10  5f 64 69 67 25 28 61 6e  73 6c 69 6d 25 2b 31 29  |_dig%(anslim%+1)|
0000be20  3d 30 20 80 20 72 75 62  64 69 67 25 3d 2d 31 20  |=0 . rubdig%=-1 |
0000be30  84 20 6d 6f 64 65 25 28  4e 61 6d 65 4e 6f 25 29  |. mode%(NameNo%)|
0000be40  3d 30 20 84 20 64 72 61  67 76 61 6c 25 3d 33 30  |=0 . dragval%=30|
0000be50  20 80 20 73 74 72 69 6b  65 25 3d 30 20 8c 20 e1  | . strike%=0 . .|
0000be60  0d 3f 98 04 0d 3f a2 35  e7 20 72 75 62 64 69 67  |.?...?.5. rubdig|
0000be70  25 3e 2d 31 20 8c 20 70  6f 73 25 3d 72 75 62 64  |%>-1 . pos%=rubd|
0000be80  69 67 25 20 8b 20 70 6f  73 25 3d 6e 65 78 74 64  |ig% . pos%=nextd|
0000be90  69 67 25 2b 73 74 65 70  25 0d 3f ac 04 0d 3f b6  |ig%+step%.?...?.|
0000bea0  2a e7 20 63 61 72 72 79  25 3d 30 20 84 20 72 75  |*. carry%=0 . ru|
0000beb0  62 64 69 67 25 3e 2d 31  20 84 20 48 65 6c 70 6c  |bdig%>-1 . Helpl|
0000bec0  65 76 25 3c 33 20 8c 0d  3f c0 1b 20 f2 70 6c 61  |ev%<3 ..?.. .pla|
0000bed0  63 65 5f 6e 75 6d 62 65  72 28 70 6f 73 25 2b 31  |ce_number(pos%+1|
0000bee0  38 29 0d 3f ca 05 cc 0d  3f d4 39 20 e7 20 73 74  |8).?....?.9 . st|
0000bef0  72 69 6b 65 25 20 8c 20  f2 70 6c 61 63 65 5f 73  |rike% . .place_s|
0000bf00  74 72 69 6b 65 28 70 6f  73 25 29 20 8b 20 f2 70  |trike(pos%) . .p|
0000bf10  6c 61 63 65 5f 63 61 72  72 79 28 70 6f 73 25 29  |lace_carry(pos%)|
0000bf20  0d 3f de 05 cd 0d 3f e8  05 e1 0d 3f f2 04 0d 3f  |.?....?....?...?|
0000bf30  fc 04 0d 40 06 1b dd 20  f2 72 65 70 6c 61 63 65  |...@... .replace|
0000bf40  5f 6e 75 6d 62 65 72 28  6e 75 6d 25 29 0d 40 10  |_number(num%).@.|
0000bf50  15 ea 20 72 30 25 2c 72  31 25 2c 72 32 25 2c 72  |.. r0%,r1%,r2%,r|
0000bf60  33 25 0d 40 1a 18 e7 20  69 6e 69 74 6e 75 6d 25  |3%.@... initnum%|
0000bf70  3c 3e 6e 75 6d 25 20 8c  20 e1 0d 40 24 20 64 72  |<>num% . ..@$ dr|
0000bf80  61 67 25 3d 30 3a 64 6f  75 62 6c 65 25 3d 30 3a  |ag%=0:double%=0:|
0000bf90  64 72 61 67 76 61 6c 25  3d 30 0d 40 2e 0f e7 20  |dragval%=0.@... |
0000bfa0  6e 75 6d 25 3d 31 30 20  8c 0d 40 38 3f 20 c8 99  |num%=10 ..@8? ..|
0000bfb0  22 4f 53 5f 53 70 72 69  74 65 4f 70 22 2c 26 31  |"OS_SpriteOp",&1|
0000bfc0  33 43 2c 73 61 72 65 61  25 2c 22 62 61 63 6b 74  |3C,sarea%,"backt|
0000bfd0  6f 70 31 22 2c 31 20 b8  20 72 30 25 2c 72 31 25  |op1",1 . r0%,r1%|
0000bfe0  2c 72 32 25 2c 72 33 25  0d 40 42 33 20 c8 99 22  |,r2%,r3%.@B3 .."|
0000bff0  4f 53 5f 53 70 72 69 74  65 4f 70 22 2c 26 31 33  |OS_SpriteOp",&13|
0000c000  34 2c 73 61 72 65 61 25  2c 22 74 6f 70 31 22 2c  |4,sarea%,"top1",|
0000c010  30 2c 30 2c 30 2c 2d 31  2c 2d 31 0d 40 4c 28 20  |0,0,0,-1,-1.@L( |
0000c020  c8 99 22 4f 53 5f 53 70  72 69 74 65 4f 70 22 2c  |.."OS_SpriteOp",|
0000c030  72 30 25 2c 72 31 25 2c  72 32 25 2c 72 33 25 3a  |r0%,r1%,r2%,r3%:|
0000c040  ef 32 36 0d 40 56 05 cd  0d 40 60 49 c8 99 22 57  |.26.@V...@`I.."W|
0000c050  69 6d 70 5f 46 6f 72 63  65 52 65 64 72 61 77 22  |imp_ForceRedraw"|
0000c060  2c 68 61 6e 64 6c 65 25  28 67 61 6d 65 25 29 2c  |,handle%(game%),|
0000c070  64 72 61 67 78 25 2c 64  72 61 67 79 25 2c 64 72  |dragx%,dragy%,dr|
0000c080  61 67 78 25 2b 37 35 2c  64 72 61 67 79 25 2b 37  |agx%+75,dragy%+7|
0000c090  35 0d 40 6a 05 e1 0d 40  74 04 0d 40 7e 04 0d 40  |5.@j...@t..@~..@|
0000c0a0  88 0f dd 20 f2 67 61 6d  65 5f 65 6e 64 0d 40 92  |... .game_end.@.|
0000c0b0  08 ea 20 72 25 0d 40 9c  11 e7 20 67 61 6d 65 25  |.. r%.@... game%|
0000c0c0  3d 30 20 8c 20 e1 0d 40  a6 1a f2 73 68 61 64 65  |=0 . ..@...shade|
0000c0d0  5f 69 74 65 6d 28 6d 65  6e 75 25 2c 32 2c 30 29  |_item(menu%,2,0)|
0000c0e0  0d 40 b0 3d f2 63 6c 6f  73 65 5f 77 69 6e 64 6f  |.@.=.close_windo|
0000c0f0  77 28 68 61 6e 64 6c 65  25 28 67 61 6d 65 25 29  |w(handle%(game%)|
0000c100  29 3a 67 61 6d 65 25 3d  30 3a 64 72 61 67 25 3d  |):game%=0:drag%=|
0000c110  30 3a 73 74 61 72 74 4f  77 6e 25 3d 30 0d 40 ba  |0:startOwn%=0.@.|
0000c120  1c f2 63 6c 6f 73 65 5f  77 69 6e 64 6f 77 28 43  |..close_window(C|
0000c130  43 68 61 6e 64 6c 65 25  29 0d 40 c4 23 f2 63 6c  |Chandle%).@.#.cl|
0000c140  6f 73 65 5f 77 69 6e 64  6f 77 28 4f 68 61 6e 64  |ose_window(Ohand|
0000c150  6c 65 25 29 3a 4f 77 69  6e 25 3d 30 0d 40 ce 34  |le%):Owin%=0.@.4|
0000c160  f2 63 6c 6f 73 65 5f 77  69 6e 64 6f 77 28 50 68  |.close_window(Ph|
0000c170  61 6e 64 6c 65 25 29 3a  f2 63 6c 6f 73 65 5f 77  |andle%):.close_w|
0000c180  69 6e 64 6f 77 28 50 32  68 61 6e 64 6c 65 25 29  |indow(P2handle%)|
0000c190  0d 40 d8 54 e7 20 6d 61  72 6b 65 64 25 3d 2d 31  |.@.T. marked%=-1|
0000c1a0  20 80 20 61 75 74 6f 25  28 4e 61 6d 65 4e 6f 25  | . auto%(NameNo%|
0000c1b0  29 3d 31 20 80 20 6f 77  6e 73 75 6d 25 28 4e 61  |)=1 . ownsum%(Na|
0000c1c0  6d 65 4e 6f 25 29 3d 30  20 8c 20 f2 6e 65 77 5f  |meNo%)=0 . .new_|
0000c1d0  61 75 74 6f 5f 6c 65 76  65 6c 28 63 6f 72 72 65  |auto_level(corre|
0000c1e0  63 74 25 29 0d 40 e2 30  e7 20 73 61 76 65 52 25  |ct%).@.0. saveR%|
0000c1f0  28 4e 61 6d 65 4e 6f 25  29 3d 31 20 80 20 71 75  |(NameNo%)=1 . qu|
0000c200  65 73 74 25 3e 30 20 8c  20 f2 65 6e 64 5f 6c 65  |est%>0 . .end_le|
0000c210  76 65 6c 73 0d 40 ec 32  f4 20 49 46 20 6e 6f 74  |vels.@.2. IF not|
0000c220  73 61 76 65 64 4f 25 20  54 48 45 4e 20 50 52 4f  |savedO% THEN PRO|
0000c230  43 73 61 76 65 5f 66 69  6c 65 28 24 73 61 76 65  |Csave_file($save|
0000c240  62 75 66 66 25 29 0d 40  f6 39 e7 20 61 75 74 6f  |buff%).@.9. auto|
0000c250  73 61 76 65 52 25 3d 2d  31 20 80 20 73 61 76 65  |saveR%=-1 . save|
0000c260  52 25 28 4e 61 6d 65 4e  6f 25 29 3d 31 20 80 20  |R%(NameNo%)=1 . |
0000c270  6e 6f 74 73 61 76 65 64  52 25 3d 2d 31 20 8c 0d  |notsavedR%=-1 ..|
0000c280  41 00 27 20 f2 72 65 73  75 6c 74 73 5f 74 65 78  |A.' .results_tex|
0000c290  74 5f 66 69 6c 65 28 24  73 61 76 65 74 65 78 74  |t_file($savetext|
0000c2a0  62 75 66 66 25 29 0d 41  0a 05 cd 0d 41 14 14 f2  |buff%).A....A...|
0000c2b0  73 68 6f 77 5f 73 63 6f  72 65 28 22 45 22 29 0d  |show_score("E").|
0000c2c0  41 1e 05 e1 0d 41 28 04  0d 41 32 04 0d 41 3c 11  |A....A(..A2..A<.|
0000c2d0  dd 20 f2 65 6e 64 5f 6c  65 76 65 6c 73 0d 41 46  |. .end_levels.AF|
0000c2e0  21 ea 20 73 74 24 2c 70  65 72 63 24 2c 41 6c 65  |!. st$,perc$,Ale|
0000c2f0  76 24 2c 53 6c 65 76 24  2c 61 75 74 6f 24 0d 41  |v$,Slev$,auto$.A|
0000c300  50 18 52 63 6e 74 25 20  2b 3d 32 3a 52 63 6e 74  |P.Rcnt% +=2:Rcnt|
0000c310  32 25 20 2b 3d 32 0d 41  5a 64 e7 20 6f 77 6e 73  |2% +=2.AZd. owns|
0000c320  75 6d 25 28 4e 61 6d 65  4e 6f 25 29 3d 30 20 8c  |um%(NameNo%)=0 .|
0000c330  20 41 6c 65 76 24 3d c3  20 41 6c 65 76 65 6c 25  | Alev$=. Alevel%|
0000c340  28 4e 61 6d 65 4e 6f 25  29 3a 53 6c 65 76 24 3d  |(NameNo%):Slev$=|
0000c350  c3 20 53 6c 65 76 65 6c  25 28 4e 61 6d 65 4e 6f  |. Slevel%(NameNo|
0000c360  25 29 20 8b 20 41 6c 65  76 24 3d 22 20 2d 22 3a  |%) . Alev$=" -":|
0000c370  53 6c 65 76 24 3d 22 20  2d 22 0d 41 64 45 e7 20  |Slev$=" -".AdE. |
0000c380  71 75 65 73 74 25 20 8c  20 70 65 72 63 24 3d c3  |quest% . perc$=.|
0000c390  28 a8 28 31 30 30 2a 43  6f 72 72 65 63 74 41 6e  |(.(100*CorrectAn|
0000c3a0  73 25 2f 71 75 65 73 74  25 2b 2e 35 29 29 2b 22  |s%/quest%+.5))+"|
0000c3b0  25 22 20 8b 20 70 65 72  63 24 3d 22 30 25 22 0d  |%" . perc$="0%".|
0000c3c0  41 6e 32 e7 20 61 75 74  6f 68 65 6c 70 25 28 4e  |An2. autohelp%(N|
0000c3d0  61 6d 65 4e 6f 25 29 3d  31 20 8c 20 61 75 74 6f  |ameNo%)=1 . auto|
0000c3e0  24 3d 22 59 22 20 8b 20  61 75 74 6f 24 3d 22 4e  |$="Y" . auto$="N|
0000c3f0  22 0d 41 78 4f 73 74 24  3d 22 20 45 6e 64 20 6c  |".AxOst$=" End l|
0000c400  65 76 65 6c 73 3a 20 61  64 64 3a 22 2b 41 6c 65  |evels: add:"+Ale|
0000c410  76 24 2b 22 20 73 75 62  3a 22 2b 53 6c 65 76 24  |v$+" sub:"+Slev$|
0000c420  2b 22 2c 20 61 75 74 6f  20 68 65 6c 70 3a 22 2b  |+", auto help:"+|
0000c430  61 75 74 6f 24 2b 22 20  20 22 2b 70 65 72 63 24  |auto$+"  "+perc$|
0000c440  0d 41 82 22 52 70 74 72  25 3d a4 61 64 64 5f 73  |.A."Rptr%=.add_s|
0000c450  74 72 69 6e 67 28 52 70  74 72 25 2c 73 74 24 2c  |tring(Rptr%,st$,|
0000c460  32 29 0d 41 8c 05 e1 0d  41 96 04 0d 41 a0 04 0d  |2).A....A...A...|
0000c470  41 aa 11 dd 20 a4 73 75  6d 5f 66 69 6c 6c 65 64  |A... .sum_filled|
0000c480  0d 41 b4 15 ea 20 6e 25  2c 66 6c 67 25 3a 66 6c  |.A... n%,flg%:fl|
0000c490  67 25 3d 2d 31 0d 41 be  14 e3 20 6e 25 3d 30 20  |g%=-1.A... n%=0 |
0000c4a0  b8 20 61 6e 73 6c 69 6d  25 0d 41 c8 3e 20 e7 20  |. anslim%.A.> . |
0000c4b0  64 69 67 33 24 28 6e 25  29 3d 22 22 20 80 20 ac  |dig3$(n%)="" . .|
0000c4c0  28 6e 25 3d 61 6e 73 6c  69 6d 25 20 80 20 61 6e  |(n%=anslim% . an|
0000c4d0  73 77 65 72 24 28 6e 25  29 3d 22 30 22 29 20 8c  |swer$(n%)="0") .|
0000c4e0  20 66 6c 67 25 3d 30 0d  41 d2 05 ed 0d 41 dc 09  | flg%=0.A....A..|
0000c4f0  3d 66 6c 67 25 0d 41 e6  04 0d 41 f0 04 0d 41 fa  |=flg%.A...A...A.|
0000c500  17 dd 20 f2 63 68 65 63  6b 5f 74 6f 5f 72 65 73  |.. .check_to_res|
0000c510  75 6c 74 73 0d 42 04 2b  e7 20 6e 65 77 52 25 3d  |ults.B.+. newR%=|
0000c520  31 20 80 20 74 72 79 25  3d 31 20 8c 20 f2 72 65  |1 . try%=1 . .re|
0000c530  73 75 6c 74 73 5f 6e 65  78 74 5f 6e 61 6d 65 0d  |sults_next_name.|
0000c540  42 0e 1b e7 20 74 72 79  25 3d 31 20 8c 20 f2 72  |B... try%=1 . .r|
0000c550  65 73 75 6c 74 73 5f 73  75 6d 0d 42 18 40 e7 20  |esults_sum.B.@. |
0000c560  64 65 63 69 6d 61 6c 25  28 4e 61 6d 65 4e 6f 25  |decimal%(NameNo%|
0000c570  29 20 8c 20 73 75 6d 24  3d a4 69 6e 73 65 72 74  |) . sum$=.insert|
0000c580  5f 70 6f 69 6e 74 28 c3  73 75 6d 25 29 20 8b 20  |_point(.sum%) . |
0000c590  73 75 6d 24 3d c3 73 75  6d 25 0d 42 22 1c 73 75  |sum$=.sum%.B".su|
0000c5a0  6d 24 3d 73 75 6d 24 2b  c4 36 2d a9 20 73 75 6d  |m$=sum$+.6-. sum|
0000c5b0  24 2c 22 20 22 29 0d 42  2c 33 e7 20 6e 65 77 52  |$," ").B,3. newR|
0000c5c0  25 3d 30 20 8c 20 52 70  74 72 25 3d a4 61 64 64  |%=0 . Rptr%=.add|
0000c5d0  5f 73 74 72 69 6e 67 28  52 70 74 72 25 2c 22 20  |_string(Rptr%," |
0000c5e0  22 2b 73 75 6d 24 2c 30  29 0d 42 36 04 0d 42 40  |"+sum$,0).B6..B@|
0000c5f0  2a e7 20 65 73 74 69 6d  61 74 65 25 28 4e 61 6d  |*. estimate%(Nam|
0000c600  65 4e 6f 25 29 3d 31 20  80 20 63 6f 72 72 65 63  |eNo%)=1 . correc|
0000c610  74 25 3d 2d 31 20 8c 0d  42 4a 49 20 e7 20 64 65  |t%=-1 ..BJI . de|
0000c620  63 69 6d 61 6c 25 28 4e  61 6d 65 4e 6f 25 29 20  |cimal%(NameNo%) |
0000c630  8c 20 73 75 6d 24 3d a4  69 6e 73 65 72 74 5f 70  |. sum$=.insert_p|
0000c640  6f 69 6e 74 28 c3 20 45  73 74 56 61 6c 25 29 20  |oint(. EstVal%) |
0000c650  8b 20 73 75 6d 24 3d c3  20 45 73 74 56 61 6c 25  |. sum$=. EstVal%|
0000c660  0d 42 54 15 20 73 75 6d  24 3d 22 45 73 74 20 22  |.BT. sum$="Est "|
0000c670  2b 73 75 6d 24 0d 42 5e  34 20 e7 20 6e 65 77 52  |+sum$.B^4 . newR|
0000c680  25 3d 30 20 8c 20 52 70  74 72 25 3d a4 61 64 64  |%=0 . Rptr%=.add|
0000c690  5f 73 74 72 69 6e 67 28  52 70 74 72 25 2c 22 20  |_string(Rptr%," |
0000c6a0  22 2b 73 75 6d 24 2c 30  29 0d 42 68 05 cd 0d 42  |"+sum$,0).Bh...B|
0000c6b0  72 05 e1 0d 42 7c 04 0d  42 86 04 0d 42 90 10 dd  |r...B|..B...B...|
0000c6c0  20 f2 63 68 65 63 6b 5f  73 75 6d 0d 42 9a 11 ea  | .check_sum.B...|
0000c6d0  20 6e 25 2c 43 6f 72 72  65 63 74 25 0d 42 a4 49  | n%,Correct%.B.I|
0000c6e0  63 6f 72 72 65 63 74 25  3d 28 73 75 6d 25 3d 61  |correct%=(sum%=a|
0000c6f0  6e 73 25 20 80 20 a4 73  75 6d 5f 66 69 6c 6c 65  |ns% . .sum_fille|
0000c700  64 3d 2d 31 29 3a 6e 65  78 74 63 68 65 63 6b 25  |d=-1):nextcheck%|
0000c710  3d 2d 31 3a 43 6f 72 72  65 63 74 25 3d 63 6f 72  |=-1:Correct%=cor|
0000c720  72 65 63 74 25 0d 42 ae  3e 43 6f 72 72 65 63 74  |rect%.B.>Correct|
0000c730  41 6e 73 25 20 2d 3d 28  63 6f 72 72 65 63 74 25  |Ans% -=(correct%|
0000c740  3d 2d 31 20 80 20 66 6f  72 63 65 35 25 3d 30 29  |=-1 . force5%=0)|
0000c750  3a 74 72 79 25 20 2d 3d  28 66 6f 72 63 65 35 25  |:try% -=(force5%|
0000c760  3d 30 29 0d 42 b8 37 e7  20 73 61 76 65 52 25 28  |=0).B.7. saveR%(|
0000c770  4e 61 6d 65 4e 6f 25 29  3d 31 20 80 20 66 6f 72  |NameNo%)=1 . for|
0000c780  63 65 35 25 3d 30 20 8c  20 f2 63 68 65 63 6b 5f  |ce5%=0 . .check_|
0000c790  74 6f 5f 72 65 73 75 6c  74 73 0d 42 c2 49 e7 20  |to_results.B.I. |
0000c7a0  6d 65 73 73 61 67 65 24  28 31 29 3c 3e 22 22 20  |message$(1)<>"" |
0000c7b0  80 20 6d 6f 64 65 25 28  4e 61 6d 65 4e 6f 25 29  |. mode%(NameNo%)|
0000c7c0  3d 31 20 8c 20 f2 72 65  6d 6f 76 65 5f 6d 65 73  |=1 . .remove_mes|
0000c7d0  73 61 67 65 3a 6d 65 73  73 61 67 65 24 28 31 29  |sage:message$(1)|
0000c7e0  3d 22 22 0d 42 cc 04 0d  42 d6 2d f2 77 6f 72 6b  |="".B...B.-.work|
0000c7f0  5f 61 72 65 61 5f 6f 72  69 67 69 6e 28 68 61 6e  |_area_origin(han|
0000c800  64 6c 65 25 28 67 61 6d  65 25 29 2c 6f 78 25 2c  |dle%(game%),ox%,|
0000c810  6f 79 25 29 0d 42 e0 3f  66 6c 67 25 3d a4 75 70  |oy%).B.?flg%=.up|
0000c820  64 61 74 65 5f 77 69 6e  64 6f 77 28 68 61 6e 64  |date_window(hand|
0000c830  6c 65 25 28 67 61 6d 65  25 29 2c 6d 6b 78 25 2c  |le%(game%),mkx%,|
0000c840  79 33 25 2c 6d 6b 78 25  2b 37 35 2c 79 33 25 2b  |y3%,mkx%+75,y3%+|
0000c850  37 35 29 0d 42 ea 0b c8  95 20 66 6c 67 25 0d 42  |75).B.... flg%.B|
0000c860  f4 0a 20 f2 6d 61 72 6b  0d 42 fe 29 20 c8 99 22  |.. .mark.B.) .."|
0000c870  57 69 6d 70 5f 47 65 74  52 65 63 74 61 6e 67 6c  |Wimp_GetRectangl|
0000c880  65 22 2c 2c 62 6c 6f 63  6b 25 20 b8 20 66 6c 67  |e",,block% . flg|
0000c890  25 0d 43 08 05 ce 0d 43  12 04 0d 43 1c 7e e7 20  |%.C....C...C.~. |
0000c8a0  28 66 6f 72 63 65 25 28  4e 61 6d 65 4e 6f 25 29  |(force%(NameNo%)|
0000c8b0  3d 31 20 84 20 66 6f 72  63 65 35 25 3d 2d 31 29  |=1 . force5%=-1)|
0000c8c0  20 80 20 74 72 79 25 3e  3d 74 72 69 65 73 25 28  | . try%>=tries%(|
0000c8d0  4e 61 6d 65 4e 6f 25 29  20 80 20 28 63 6f 72 72  |NameNo%) . (corr|
0000c8e0  65 63 74 25 3d 30 20 84  20 66 6f 72 63 65 35 25  |ect%=0 . force5%|
0000c8f0  3d 2d 31 29 20 8c 20 f2  66 6f 72 63 65 5f 72 69  |=-1) . .force_ri|
0000c900  67 68 74 5f 61 6e 73 3a  e7 20 66 6f 72 63 65 35  |ght_ans:. force5|
0000c910  25 3d 2d 31 20 8c 20 e1  0d 43 26 04 0d 43 30 48  |%=-1 . ..C&..C0H|
0000c920  e7 20 65 73 74 69 6d 61  74 65 25 28 4e 61 6d 65  |. estimate%(Name|
0000c930  4e 6f 25 29 3d 31 20 80  20 63 6f 72 72 65 63 74  |No%)=1 . correct|
0000c940  25 3d 2d 31 20 80 20 66  6f 72 63 65 35 25 3d 30  |%=-1 . force5%=0|
0000c950  20 8c 20 f2 65 73 74 69  6d 61 74 65 5f 6d 65 73  | . .estimate_mes|
0000c960  73 61 67 65 0d 43 3a 04  0d 43 44 2b e7 20 63 6f  |sage.C:..CD+. co|
0000c970  72 72 65 63 74 25 3d 2d  31 20 84 20 74 72 79 25  |rrect%=-1 . try%|
0000c980  3e 3d 74 72 69 65 73 25  28 4e 61 6d 65 4e 6f 25  |>=tries%(NameNo%|
0000c990  29 20 8c 0d 43 4e 14 20  f4 20 4e 65 78 74 20 71  |) ..CN. . Next q|
0000c9a0  75 65 73 74 69 6f 6e 0d  43 58 2b 20 e7 20 6e 65  |uestion.CX+ . ne|
0000c9b0  78 74 25 28 4e 61 6d 65  4e 6f 25 29 20 8c 20 f2  |xt%(NameNo%) . .|
0000c9c0  73 65 74 5f 74 6f 70 5f  69 63 6f 6e 28 35 2c 2d  |set_top_icon(5,-|
0000c9d0  31 29 0d 43 62 5e 20 e7  20 70 72 69 6e 74 65 72  |1).Cb^ . printer|
0000c9e0  25 28 4e 61 6d 65 4e 6f  25 29 3d 31 20 80 20 64  |%(NameNo%)=1 . d|
0000c9f0  72 69 76 65 72 25 3d 2d  31 20 80 20 28 63 6f 72  |river%=-1 . (cor|
0000ca00  72 65 63 74 25 3d 30 20  84 20 66 6f 72 63 65 35  |rect%=0 . force5|
0000ca10  25 3d 31 29 20 80 20 50  73 61 76 65 25 3d 30 20  |%=1) . Psave%=0 |
0000ca20  8c 20 f2 73 61 76 65 5f  73 75 6d 28 22 53 22 29  |. .save_sum("S")|
0000ca30  0d 43 6c 25 20 e3 20 6e  25 3d 30 20 b8 20 32 3a  |.Cl% . n%=0 . 2:|
0000ca40  f2 73 65 74 5f 74 6f 70  5f 69 63 6f 6e 28 6e 25  |.set_top_icon(n%|
0000ca50  2c 30 29 3a ed 0d 43 76  04 0d 43 80 0f 20 71 75  |,0):..Cv..C.. qu|
0000ca60  65 73 74 25 20 2b 3d 31  0d 43 8a 19 20 e7 20 6e  |est% +=1.C.. . n|
0000ca70  65 78 74 25 28 4e 61 6d  65 4e 6f 25 29 3d 30 20  |ext%(NameNo%)=0 |
0000ca80  8c 0d 43 94 1b 20 20 f2  70 61 75 73 65 28 32 30  |..C..  .pause(20|
0000ca90  30 29 3a 66 6f 72 63 65  35 25 3d 30 0d 43 9e 49  |0):force5%=0.C.I|
0000caa0  20 20 e7 20 61 75 74 6f  25 28 4e 61 6d 65 4e 6f  |  . auto%(NameNo|
0000cab0  25 29 3d 31 20 80 20 6f  77 6e 73 75 6d 25 28 4e  |%)=1 . ownsum%(N|
0000cac0  61 6d 65 4e 6f 25 29 3d  30 20 8c 20 f2 6e 65 77  |ameNo%)=0 . .new|
0000cad0  5f 61 75 74 6f 5f 6c 65  76 65 6c 28 63 6f 72 72  |_auto_level(corr|
0000cae0  65 63 74 25 29 0d 43 a8  23 20 20 e7 20 71 75 65  |ect%).C.#  . que|
0000caf0  73 74 25 3c 6e 6f 5f 71  75 65 73 74 25 28 4e 61  |st%<no_quest%(Na|
0000cb00  6d 65 4e 6f 25 29 20 8c  0d 43 b2 3b 20 20 20 e7  |meNo%) ..C.;   .|
0000cb10  20 6f 77 6e 73 75 6d 25  28 4e 61 6d 65 4e 6f 25  | ownsum%(NameNo%|
0000cb20  29 3d 30 20 8c 20 f2 73  65 74 5f 73 75 6d 20 8b  |)=0 . .set_sum .|
0000cb30  20 f2 73 65 74 5f 75 70  5f 73 75 6d 5f 77 69 6e  | .set_up_sum_win|
0000cb40  64 6f 77 0d 43 bc 07 20  20 cc 0d 43 c6 10 20 20  |dow.C..  ..C..  |
0000cb50  20 f2 67 61 6d 65 5f 65  6e 64 0d 43 d0 07 20 20  | .game_end.C..  |
0000cb60  cd 0d 43 da 06 20 cc 0d  43 e4 89 20 20 e7 20 63  |..C.. ..C..  . c|
0000cb70  6f 72 72 65 63 74 25 3d  30 20 80 20 74 72 79 25  |orrect%=0 . try%|
0000cb80  3e 3d 74 72 69 65 73 25  28 4e 61 6d 65 4e 6f 25  |>=tries%(NameNo%|
0000cb90  29 20 80 20 66 6f 72 63  65 35 25 3d 30 20 8c 20  |) . force5%=0 . |
0000cba0  6d 65 73 73 61 67 65 24  28 31 29 3d 22 4e 6f 20  |message$(1)="No |
0000cbb0  6d 6f 72 65 20 74 72 69  65 73 2e 22 3a 6d 65 73  |more tries.":mes|
0000cbc0  73 61 67 65 24 28 32 29  3d 22 22 3a f2 66 6f 6e  |sage$(2)="":.fon|
0000cbd0  74 5f 74 6f 5f 73 63 72  65 65 6e 3a f2 6d 65 73  |t_to_screen:.mes|
0000cbe0  73 61 67 65 5f 73 70 72  69 74 65 5f 62 61 63 6b  |sage_sprite_back|
0000cbf0  0d 43 ee 35 20 20 6d 61  72 6b 65 64 25 3d 28 6e  |.C.5  marked%=(n|
0000cc00  65 78 74 25 28 4e 61 6d  65 4e 6f 25 29 3d 31 20  |ext%(NameNo%)=1 |
0000cc10  84 20 6f 77 6e 73 75 6d  25 28 4e 61 6d 65 4e 6f  |. ownsum%(NameNo|
0000cc20  25 29 3d 31 29 0d 43 f8  06 20 cd 0d 44 02 05 cc  |%)=1).C.. ..D...|
0000cc30  0d 44 0c 42 20 e7 20 6e  65 78 74 25 28 4e 61 6d  |.D.B . next%(Nam|
0000cc40  65 4e 6f 25 29 3d 31 20  80 20 74 72 79 25 3d 31  |eNo%)=1 . try%=1|
0000cc50  20 8c 20 f2 73 68 61 64  65 5f 69 63 6f 6e 28 68  | . .shade_icon(h|
0000cc60  61 6e 64 6c 65 25 28 67  61 6d 65 25 29 2c 35 2c  |andle%(game%),5,|
0000cc70  30 29 0d 44 16 33 20 e7  20 6e 65 78 74 64 69 67  |0).D.3 . nextdig|
0000cc80  25 3d 61 6e 73 6c 69 6d  25 2b 31 20 8c 20 6e 65  |%=anslim%+1 . ne|
0000cc90  78 74 65 72 72 25 3d 2d  31 3a f2 66 69 6e 64 5f  |xterr%=-1:.find_|
0000cca0  65 72 72 6f 72 0d 44 20  1a 20 e7 20 74 72 69 65  |error.D . . trie|
0000ccb0  73 25 28 4e 61 6d 65 4e  6f 25 29 3e 31 20 8c 0d  |s%(NameNo%)>1 ..|
0000ccc0  44 2a 57 20 20 e7 20 74  72 79 25 3c 74 72 69 65  |D*W  . try%<trie|
0000ccd0  73 25 28 4e 61 6d 65 4e  6f 25 29 2d 31 20 8c 20  |s%(NameNo%)-1 . |
0000cce0  6d 65 73 73 61 67 65 24  28 31 29 3d 22 54 72 79  |message$(1)="Try|
0000ccf0  20 61 67 61 69 6e 2e 22  20 8b 20 6d 65 73 73 61  | again." . messa|
0000cd00  67 65 24 28 31 29 3d 22  4f 6e 65 20 6d 6f 72 65  |ge$(1)="One more|
0000cd10  20 74 72 79 2e 22 0d 44  34 14 20 20 6d 65 73 73  | try.".D4.  mess|
0000cd20  61 67 65 24 28 32 29 3d  22 22 0d 44 3e 15 20 20  |age$(2)="".D>.  |
0000cd30  f2 66 6f 6e 74 5f 74 6f  5f 73 63 72 65 65 6e 0d  |.font_to_screen.|
0000cd40  44 48 1a 20 20 f2 6d 65  73 73 61 67 65 5f 73 70  |DH.  .message_sp|
0000cd50  72 69 74 65 5f 62 61 63  6b 0d 44 52 06 20 cd 0d  |rite_back.DR. ..|
0000cd60  44 5c 10 20 f2 70 61 75  73 65 28 32 30 30 29 0d  |D\. .pause(200).|
0000cd70  44 66 40 20 c8 99 22 57  69 6d 70 5f 46 6f 72 63  |Df@ .."Wimp_Forc|
0000cd80  65 52 65 64 72 61 77 22  2c 68 61 6e 64 6c 65 25  |eRedraw",handle%|
0000cd90  28 67 61 6d 65 25 29 2c  6d 6b 78 25 2c 79 33 25  |(game%),mkx%,y3%|
0000cda0  2c 6d 6b 78 25 2b 37 35  2c 79 33 25 2b 37 35 0d  |,mkx%+75,y3%+75.|
0000cdb0  44 70 05 cd 0d 44 7a 45  e7 20 61 75 74 6f 68 65  |Dp...DzE. autohe|
0000cdc0  6c 70 25 28 4e 61 6d 65  4e 6f 25 29 3d 31 20 80  |lp%(NameNo%)=1 .|
0000cdd0  20 66 6f 72 63 65 35 25  3d 30 20 8c 20 f2 63 68  | force5%=0 . .ch|
0000cde0  61 6e 67 65 5f 68 65 6c  70 5f 6c 65 76 65 6c 28  |ange_help_level(|
0000cdf0  43 6f 72 72 65 63 74 25  29 0d 44 84 53 6e 65 78  |Correct%).D.Snex|
0000ce00  74 6d 65 73 73 25 3d 2d  33 2a 28 48 65 6c 70 6c  |tmess%=-3*(Helpl|
0000ce10  65 76 25 3d 35 20 80 20  6d 6f 64 65 25 28 4e 61  |ev%=5 . mode%(Na|
0000ce20  6d 65 4e 6f 25 29 3d 31  20 80 20 66 6f 72 63 65  |meNo%)=1 . force|
0000ce30  35 25 3d 30 20 80 20 74  72 79 25 3c 74 72 69 65  |5%=0 . try%<trie|
0000ce40  73 25 28 4e 61 6d 65 4e  6f 25 29 29 0d 44 8e 05  |s%(NameNo%)).D..|
0000ce50  e1 0d 44 98 04 0d 44 a2  04 0d 44 ac 16 dd 20 f2  |..D...D...D... .|
0000ce60  66 6f 72 63 65 5f 72 69  67 68 74 5f 61 6e 73 0d  |force_right_ans.|
0000ce70  44 b6 11 e7 20 66 6f 72  63 65 35 25 3d 30 20 8c  |D... force5%=0 .|
0000ce80  0d 44 c0 10 20 f2 70 61  75 73 65 28 33 30 30 29  |.D.. .pause(300)|
0000ce90  0d 44 ca 33 20 e7 20 61  75 74 6f 68 65 6c 70 25  |.D.3 . autohelp%|
0000cea0  28 4e 61 6d 65 4e 6f 25  29 3d 31 20 8c 20 f2 63  |(NameNo%)=1 . .c|
0000ceb0  68 61 6e 67 65 5f 68 65  6c 70 5f 6c 65 76 65 6c  |hange_help_level|
0000cec0  28 30 29 0d 44 d4 1a 20  48 65 6c 70 6c 65 76 25  |(0).D.. Helplev%|
0000ced0  3d 35 3a 66 6f 72 63 65  35 25 3d 2d 31 0d 44 de  |=5:force5%=-1.D.|
0000cee0  0d 20 f2 73 65 74 5f 73  75 6d 0d 44 e8 05 cc 0d  |. .set_sum.D....|
0000cef0  44 f2 28 20 48 65 6c 70  6c 65 76 25 3d 48 6c 65  |D.( Helplev%=Hle|
0000cf00  76 65 6c 25 28 4e 61 6d  65 4e 6f 25 29 3a 66 6f  |vel%(NameNo%):fo|
0000cf10  72 63 65 35 25 3d 31 0d  44 fc 05 cd 0d 45 06 05  |rce5%=1.D....E..|
0000cf20  e1 0d 45 10 04 0d 45 1a  04 0d 45 24 17 dd 20 f2  |..E...E...E$.. .|
0000cf30  65 73 74 69 6d 61 74 65  5f 6d 65 73 73 61 67 65  |estimate_message|
0000cf40  0d 45 2e 15 ea 20 65 73  74 3a 65 73 74 3d 45 73  |.E... est:est=Es|
0000cf50  74 56 61 6c 25 0d 45 38  25 e7 20 64 65 63 69 6d  |tVal%.E8%. decim|
0000cf60  61 6c 25 28 4e 61 6d 65  4e 6f 25 29 20 8c 20 65  |al%(NameNo%) . e|
0000cf70  73 74 3d 65 73 74 2f 31  30 30 0d 45 42 35 6d 65  |st=est/100.EB5me|
0000cf80  73 73 61 67 65 24 28 31  29 3d 22 59 6f 75 20 65  |ssage$(1)="You e|
0000cf90  73 74 69 6d 61 74 65 64  20 22 2b c3 20 65 73 74  |stimated "+. est|
0000cfa0  3a 6d 65 73 73 61 67 65  24 28 32 29 3d 22 22 0d  |:message$(2)="".|
0000cfb0  45 4c 04 0d 45 56 13 f2  66 6f 6e 74 5f 74 6f 5f  |EL..EV..font_to_|
0000cfc0  73 63 72 65 65 6e 0d 45  60 18 f2 6d 65 73 73 61  |screen.E`..messa|
0000cfd0  67 65 5f 73 70 72 69 74  65 5f 62 61 63 6b 0d 45  |ge_sprite_back.E|
0000cfe0  6a 05 e1 0d 45 74 04 0d  45 7e 04 0d 45 88 1f dd  |j...Et..E~..E...|
0000cff0  20 f2 6e 65 77 5f 61 75  74 6f 5f 6c 65 76 65 6c  | .new_auto_level|
0000d000  28 63 6f 72 72 65 63 74  25 29 0d 45 92 2a ea 20  |(correct%).E.*. |
0000d010  6c 65 76 65 6c 25 2c 4c  72 61 6e 67 65 25 2c 48  |level%,Lrange%,H|
0000d020  72 61 6e 67 65 25 3a 6e  6f 74 73 61 76 65 64 4f  |range%:notsavedO|
0000d030  25 3d 2d 31 0d 45 9c 1c  e7 20 6f 70 65 72 61 74  |%=-1.E... operat|
0000d040  6f 72 25 28 4e 61 6d 65  4e 6f 25 29 3d 31 20 8c  |or%(NameNo%)=1 .|
0000d050  0d 45 a6 35 20 6c 65 76  65 6c 25 3d 41 6c 65 76  |.E.5 level%=Alev|
0000d060  65 6c 25 28 4e 61 6d 65  4e 6f 25 29 3a 48 72 61  |el%(NameNo%):Hra|
0000d070  6e 67 65 25 3d 37 3a 6e  75 6d 52 57 25 3d 41 6e  |nge%=7:numRW%=An|
0000d080  75 6d 52 57 25 0d 45 b0  05 cc 0d 45 ba 35 20 6c  |umRW%.E....E.5 l|
0000d090  65 76 65 6c 25 3d 53 6c  65 76 65 6c 25 28 4e 61  |evel%=Slevel%(Na|
0000d0a0  6d 65 4e 6f 25 29 3a 48  72 61 6e 67 65 25 3d 39  |meNo%):Hrange%=9|
0000d0b0  3a 6e 75 6d 52 57 25 3d  53 6e 75 6d 52 57 25 0d  |:numRW%=SnumRW%.|
0000d0c0  45 c4 05 cd 0d 45 ce 2f  e7 20 64 65 63 69 6d 61  |E....E./. decima|
0000d0d0  6c 25 28 4e 61 6d 65 4e  6f 25 29 20 8c 20 4c 72  |l%(NameNo%) . Lr|
0000d0e0  61 6e 67 65 25 3d 36 20  8b 20 4c 72 61 6e 67 65  |ange%=6 . Lrange|
0000d0f0  25 3d 31 0d 45 d8 04 0d  45 e2 10 e7 20 63 6f 72  |%=1.E...E... cor|
0000d100  72 65 63 74 25 20 8c 0d  45 ec 1d 20 e7 20 6e 75  |rect% ..E.. . nu|
0000d110  6d 52 57 25 3e 3d 30 20  8c 20 6e 75 6d 52 57 25  |mRW%>=0 . numRW%|
0000d120  20 2b 3d 31 0d 45 f6 1a  20 e7 20 6e 75 6d 52 57  | +=1.E.. . numRW|
0000d130  25 3c 30 20 8c 20 6e 75  6d 52 57 25 3d 31 0d 46  |%<0 . numRW%=1.F|
0000d140  00 45 20 e7 20 6e 65 77  6c 65 76 52 25 28 4e 61  |.E . newlevR%(Na|
0000d150  6d 65 4e 6f 25 29 3c 3d  6e 75 6d 52 57 25 20 8c  |meNo%)<=numRW% .|
0000d160  20 6c 65 76 65 6c 25 20  2d 3d 28 6c 65 76 65 6c  | level% -=(level|
0000d170  25 3c 48 72 61 6e 67 65  25 29 3a 6e 75 6d 52 57  |%<Hrange%):numRW|
0000d180  25 3d 30 0d 46 0a 05 cc  0d 46 14 1d 20 e7 20 6e  |%=0.F....F.. . n|
0000d190  75 6d 52 57 25 3c 3d 30  20 8c 20 6e 75 6d 52 57  |umRW%<=0 . numRW|
0000d1a0  25 20 2d 3d 31 0d 46 1e  1b 20 e7 20 6e 75 6d 52  |% -=1.F.. . numR|
0000d1b0  57 25 3e 30 20 8c 20 6e  75 6d 52 57 25 3d 2d 31  |W%>0 . numRW%=-1|
0000d1c0  0d 46 28 45 20 e7 20 6e  65 77 6c 65 76 57 25 28  |.F(E . newlevW%(|
0000d1d0  4e 61 6d 65 4e 6f 25 29  3e 3d 6e 75 6d 52 57 25  |NameNo%)>=numRW%|
0000d1e0  20 8c 20 6c 65 76 65 6c  25 20 2b 3d 28 6c 65 76  | . level% +=(lev|
0000d1f0  65 6c 25 3e 4c 72 61 6e  67 65 25 29 3a 6e 75 6d  |el%>Lrange%):num|
0000d200  52 57 25 3d 30 0d 46 32  05 cd 0d 46 3c 04 0d 46  |RW%=0.F2...F<..F|
0000d210  46 1c e7 20 6f 70 65 72  61 74 6f 72 25 28 4e 61  |F.. operator%(Na|
0000d220  6d 65 4e 6f 25 29 3d 31  20 8c 0d 46 50 3d 20 41  |meNo%)=1 ..FP= A|
0000d230  6c 65 76 65 6c 25 28 4e  61 6d 65 4e 6f 25 29 3d  |level%(NameNo%)=|
0000d240  6c 65 76 65 6c 25 3a 24  6c 65 76 65 6c 5f 62 75  |level%:$level_bu|
0000d250  66 66 41 25 3d c3 20 41  6c 65 76 65 6c 25 28 4e  |ffA%=. Alevel%(N|
0000d260  61 6d 65 4e 6f 25 29 0d  46 5a 13 20 41 6e 75 6d  |ameNo%).FZ. Anum|
0000d270  52 57 25 3d 6e 75 6d 52  57 25 0d 46 64 1c 20 f2  |RW%=numRW%.Fd. .|
0000d280  72 65 73 65 74 5f 69 63  6f 6e 28 43 68 61 6e 64  |reset_icon(Chand|
0000d290  6c 65 25 2c 35 29 0d 46  6e 05 cc 0d 46 78 3d 20  |le%,5).Fn...Fx= |
0000d2a0  53 6c 65 76 65 6c 25 28  4e 61 6d 65 4e 6f 25 29  |Slevel%(NameNo%)|
0000d2b0  3d 6c 65 76 65 6c 25 3a  24 6c 65 76 65 6c 5f 62  |=level%:$level_b|
0000d2c0  75 66 66 53 25 3d c3 20  53 6c 65 76 65 6c 25 28  |uffS%=. Slevel%(|
0000d2d0  4e 61 6d 65 4e 6f 25 29  0d 46 82 13 20 53 6e 75  |NameNo%).F.. Snu|
0000d2e0  6d 52 57 25 3d 6e 75 6d  52 57 25 0d 46 8c 1c 20  |mRW%=numRW%.F.. |
0000d2f0  f2 72 65 73 65 74 5f 69  63 6f 6e 28 43 68 61 6e  |.reset_icon(Chan|
0000d300  64 6c 65 25 2c 38 29 0d  46 96 05 cd 0d 46 a0 04  |dle%,8).F....F..|
0000d310  0d 46 aa 05 e1 0d 46 b4  04 0d 46 be 04 0d 46 c8  |.F....F...F...F.|
0000d320  22 dd 20 f2 63 68 61 6e  67 65 5f 68 65 6c 70 5f  |". .change_help_|
0000d330  6c 65 76 65 6c 28 63 6f  72 72 65 63 74 25 29 0d  |level(correct%).|
0000d340  46 d2 10 e7 20 63 6f 72  72 65 63 74 25 20 8c 0d  |F... correct% ..|
0000d350  46 dc 3c 20 48 6c 65 76  65 6c 25 28 4e 61 6d 65  |F.< Hlevel%(Name|
0000d360  4e 6f 25 29 20 2b 3d 28  48 6c 65 76 65 6c 25 28  |No%) +=(Hlevel%(|
0000d370  4e 61 6d 65 4e 6f 25 29  3e 4d 48 6c 65 76 65 6c  |NameNo%)>MHlevel|
0000d380  25 28 4e 61 6d 65 4e 6f  25 29 29 0d 46 e6 05 cc  |%(NameNo%)).F...|
0000d390  0d 46 f0 2c 20 48 6c 65  76 65 6c 25 28 4e 61 6d  |.F., Hlevel%(Nam|
0000d3a0  65 4e 6f 25 29 20 2d 3d  28 48 6c 65 76 65 6c 25  |eNo%) -=(Hlevel%|
0000d3b0  28 4e 61 6d 65 4e 6f 25  29 3c 35 29 0d 46 fa 4e  |(NameNo%)<5).F.N|
0000d3c0  20 e7 20 74 72 79 25 3c  74 72 69 65 73 25 28 4e  | . try%<tries%(N|
0000d3d0  61 6d 65 4e 6f 25 29 20  80 20 67 61 6d 65 25 3e  |ameNo%) . game%>|
0000d3e0  30 20 8c 20 f2 63 68 61  6e 67 65 5f 68 65 6c 70  |0 . .change_help|
0000d3f0  5f 64 69 73 70 6c 61 79  28 48 6c 65 76 65 6c 25  |_display(Hlevel%|
0000d400  28 4e 61 6d 65 4e 6f 25  29 29 0d 47 04 05 cd 0d  |(NameNo%)).G....|
0000d410  47 0e 1d 48 65 6c 70 6c  65 76 25 3d 48 6c 65 76  |G..Helplev%=Hlev|
0000d420  65 6c 25 28 4e 61 6d 65  4e 6f 25 29 0d 47 18 1e  |el%(NameNo%).G..|
0000d430  24 48 62 75 66 66 25 3d  c3 20 48 6c 65 76 65 6c  |$Hbuff%=. Hlevel|
0000d440  25 28 4e 61 6d 65 4e 6f  25 29 0d 47 22 1c f2 72  |%(NameNo%).G"..r|
0000d450  65 73 65 74 5f 69 63 6f  6e 28 43 68 61 6e 64 6c  |eset_icon(Chandl|
0000d460  65 25 2c 33 31 29 0d 47  2c 05 e1 0d 47 36 04 0d  |e%,31).G,...G6..|
0000d470  47 40 04 0d 47 4a 21 dd  20 f2 63 68 61 6e 67 65  |G@..GJ!. .change|
0000d480  5f 68 65 6c 70 5f 64 69  73 70 6c 61 79 28 68 65  |_help_display(he|
0000d490  6c 70 25 29 0d 47 54 35  e7 20 68 65 6c 70 25 3c  |lp%).GT5. help%<|
0000d4a0  33 20 80 20 48 65 6c 70  6c 65 76 25 3e 3d 33 20  |3 . Helplev%>=3 |
0000d4b0  84 20 68 65 6c 70 25 3e  3d 33 20 80 20 48 65 6c  |. help%>=3 . Hel|
0000d4c0  70 6c 65 76 25 3c 33 20  8c 0d 47 5e 29 20 f2 72  |plev%<3 ..G^) .r|
0000d4d0  65 64 72 61 77 5f 62 6f  78 5f 70 6f 73 69 74 69  |edraw_box_positi|
0000d4e0  6f 6e 28 6e 65 78 74 64  69 67 25 2c 68 65 6c 70  |on(nextdig%,help|
0000d4f0  25 29 0d 47 68 2c 20 f2  72 65 64 72 61 77 5f 62  |%).Gh, .redraw_b|
0000d500  6f 78 5f 70 6f 73 69 74  69 6f 6e 28 6e 65 78 74  |ox_position(next|
0000d510  64 69 67 25 2c 48 65 6c  70 6c 65 76 25 29 0d 47  |dig%,Helplev%).G|
0000d520  72 05 cd 0d 47 7c 38 e7  20 a4 77 69 6e 64 6f 77  |r...G|8. .window|
0000d530  5f 6f 70 65 6e 28 43 68  61 6e 64 6c 65 25 29 3d  |_open(Chandle%)=|
0000d540  30 20 8c 20 6e 65 78 74  6d 65 73 73 25 3d 2d 28  |0 . nextmess%=-(|
0000d550  48 65 6c 70 6c 65 76 25  3d 35 29 0d 47 86 66 e7  |Helplev%=5).G.f.|
0000d560  20 68 65 6c 70 25 3d 35  20 80 20 48 65 6c 70 6c  | help%=5 . Helpl|
0000d570  65 76 25 3c 35 20 8c 20  6d 65 73 73 61 67 65 24  |ev%<5 . message$|
0000d580  28 29 3d 22 22 3a c8 99  22 57 69 6d 70 5f 46 6f  |()="":.."Wimp_Fo|
0000d590  72 63 65 52 65 64 72 61  77 22 2c 68 61 6e 64 6c  |rceRedraw",handl|
0000d5a0  65 25 28 67 61 6d 65 25  29 2c 36 30 30 2c 79 33  |e%(game%),600,y3|
0000d5b0  25 2d 32 34 2c 31 32 38  30 2c 79 33 25 2b 31 34  |%-24,1280,y3%+14|
0000d5c0  35 0d 47 90 05 e1 0d 47  9a 04 0d 47 a4 04 0d 47  |5.G....G...G...G|
0000d5d0  ae 18 dd 20 f2 73 68 6f  77 5f 73 63 6f 72 65 28  |... .show_score(|
0000d5e0  77 68 65 6e 24 29 0d 47  b8 23 ea 20 6f 66 66 25  |when$).G.#. off%|
0000d5f0  2c 74 6f 5f 67 6f 25 3a  6f 66 66 25 3d 2d 28 77  |,to_go%:off%=-(w|
0000d600  68 65 6e 24 3d 22 45 22  29 0d 47 c2 0f 73 74 61  |hen$="E").G..sta|
0000d610  72 74 25 3d 6f 66 66 25  0d 47 cc 04 0d 47 d6 22  |rt%=off%.G...G."|
0000d620  f2 64 65 6c 65 74 65 5f  69 63 6f 6e 28 53 43 68  |.delete_icon(SCh|
0000d630  61 6e 64 6c 65 25 2c 39  2c 6f 66 66 25 29 0d 47  |andle%,9,off%).G|
0000d640  e0 25 f2 64 65 6c 65 74  65 5f 69 63 6f 6e 28 53  |.%.delete_icon(S|
0000d650  43 68 61 6e 64 6c 65 25  2c 31 30 2c 31 2d 6f 66  |Chandle%,10,1-of|
0000d660  66 25 29 0d 47 ea 25 f2  64 65 6c 65 74 65 5f 69  |f%).G.%.delete_i|
0000d670  63 6f 6e 28 53 43 68 61  6e 64 6c 65 25 2c 31 31  |con(SChandle%,11|
0000d680  2c 31 2d 6f 66 66 25 29  0d 47 f4 25 f2 64 65 6c  |,1-off%).G.%.del|
0000d690  65 74 65 5f 69 63 6f 6e  28 53 43 68 61 6e 64 6c  |ete_icon(SChandl|
0000d6a0  65 25 2c 31 32 2c 31 2d  6f 66 66 25 29 0d 47 fe  |e%,12,1-off%).G.|
0000d6b0  4c f2 73 68 61 64 65 5f  69 63 6f 6e 28 53 43 68  |L.shade_icon(SCh|
0000d6c0  61 6e 64 6c 65 25 2c 31  31 2c 28 70 72 69 6e 74  |andle%,11,(print|
0000d6d0  65 72 25 28 4e 61 6d 65  4e 6f 25 29 3d 30 20 84  |er%(NameNo%)=0 .|
0000d6e0  20 64 72 69 76 65 72 25  3d 30 20 84 20 65 6e 70  | driver%=0 . enp|
0000d6f0  72 69 6e 74 25 3d 30 29  29 0d 48 08 04 0d 48 12  |rint%=0)).H...H.|
0000d700  1b 24 53 43 52 62 75 66  66 25 3d c3 20 43 6f 72  |.$SCRbuff%=. Cor|
0000d710  72 65 63 74 41 6e 73 25  0d 48 1c 16 24 53 43 51  |rectAns%.H..$SCQ|
0000d720  62 75 66 66 25 3d c3 20  71 75 65 73 74 25 0d 48  |buff%=. quest%.H|
0000d730  26 24 24 53 43 57 62 75  66 66 25 3d c3 20 28 71  |&$$SCWbuff%=. (q|
0000d740  75 65 73 74 25 2d 43 6f  72 72 65 63 74 41 6e 73  |uest%-CorrectAns|
0000d750  25 29 0d 48 30 28 24 53  6e 61 6d 65 62 75 66 66  |%).H0($Snamebuff|
0000d760  25 3d 22 4e 61 6d 65 20  3a 20 22 2b 6e 61 6d 65  |%="Name : "+name|
0000d770  24 28 4e 61 6d 65 4e 6f  25 29 0d 48 3a 04 0d 48  |$(NameNo%).H:..H|
0000d780  44 11 e7 20 77 68 65 6e  24 3d 22 45 22 20 8c 0d  |D.. when$="E" ..|
0000d790  48 4e 3c 20 24 53 43 74  62 75 66 66 25 3d 22 54  |HN< $SCtbuff%="T|
0000d7a0  69 6d 65 20 6c 69 6d 69  74 20 3a 20 22 2b c3 20  |ime limit : "+. |
0000d7b0  74 69 6d 65 6c 69 6d 25  28 4e 61 6d 65 4e 6f 25  |timelim%(NameNo%|
0000d7c0  29 2b 22 20 6d 69 6e 75  74 65 22 0d 48 58 35 20  |)+" minute".HX5 |
0000d7d0  e7 20 74 69 6d 65 6c 69  6d 25 28 4e 61 6d 65 4e  |. timelim%(NameN|
0000d7e0  6f 25 29 3c 3e 31 20 8c  20 24 53 43 74 62 75 66  |o%)<>1 . $SCtbuf|
0000d7f0  66 25 3d 24 53 43 74 62  75 66 66 25 2b 22 73 22  |f%=$SCtbuff%+"s"|
0000d800  0d 48 62 05 cc 0d 48 6c  3a 20 74 6f 5f 67 6f 25  |.Hb...Hl: to_go%|
0000d810  3d 28 36 30 30 30 2a 74  69 6d 65 6c 69 6d 25 28  |=(6000*timelim%(|
0000d820  4e 61 6d 65 4e 6f 25 29  2d 91 2b 73 65 73 73 74  |NameNo%)-.+sesst|
0000d830  69 6d 65 25 2b 33 30 30  30 29 2f 36 30 30 30 0d  |ime%+3000)/6000.|
0000d840  48 76 2d 20 24 53 43 74  62 75 66 66 25 3d 22 59  |Hv- $SCtbuff%="Y|
0000d850  6f 75 20 68 61 76 65 20  22 2b c3 20 74 6f 5f 67  |ou have "+. to_g|
0000d860  6f 25 2b 22 20 6d 69 6e  75 74 65 22 0d 48 80 35  |o%+" minute".H.5|
0000d870  20 e7 20 74 69 6d 65 6c  69 6d 25 28 4e 61 6d 65  | . timelim%(Name|
0000d880  4e 6f 25 29 3c 3e 31 20  8c 20 24 53 43 74 62 75  |No%)<>1 . $SCtbu|
0000d890  66 66 25 3d 24 53 43 74  62 75 66 66 25 2b 22 73  |ff%=$SCtbuff%+"s|
0000d8a0  22 0d 48 8a 22 20 24 53  43 74 62 75 66 66 25 3d  |".H." $SCtbuff%=|
0000d8b0  24 53 43 74 62 75 66 66  25 2b 22 20 74 6f 20 67  |$SCtbuff%+" to g|
0000d8c0  6f 2e 22 0d 48 94 05 cd  0d 48 9e 37 e7 20 4e 6f  |o.".H....H.7. No|
0000d8d0  74 69 6d 65 72 25 28 4e  61 6d 65 4e 6f 25 29 20  |timer%(NameNo%) |
0000d8e0  8c 20 24 53 43 74 62 75  66 66 25 3d 22 54 69 6d  |. $SCtbuff%="Tim|
0000d8f0  65 20 6c 69 6d 69 74 20  3a 20 4e 6f 6e 65 22 0d  |e limit : None".|
0000d900  48 a8 04 0d 48 b2 2b 53  43 68 61 6e 64 6c 65 25  |H...H.+SChandle%|
0000d910  3d a4 63 65 6e 74 72 65  5f 77 69 6e 64 6f 77 28  |=.centre_window(|
0000d920  53 43 68 61 6e 64 6c 65  25 2c 22 59 22 29 0d 48  |SChandle%,"Y").H|
0000d930  bc 05 e1 0d 48 c6 04 0d  48 d0 04 0d 48 da 0b dd  |....H...H...H...|
0000d940  20 f2 6d 61 72 6b 0d 48  e4 09 ea 20 73 70 24 0d  | .mark.H... sp$.|
0000d950  48 ee 2c e7 20 63 6f 72  72 65 63 74 25 3d 2d 31  |H.,. correct%=-1|
0000d960  20 8c 20 73 70 24 3d 22  74 69 63 6b 22 20 8b 20  | . sp$="tick" . |
0000d970  73 70 24 3d 22 63 72 6f  73 73 22 0d 48 f8 44 c8  |sp$="cross".H.D.|
0000d980  99 22 4f 53 5f 53 70 72  69 74 65 4f 70 22 2c 26  |."OS_SpriteOp",&|
0000d990  31 33 34 2c 73 61 72 65  61 25 2c 73 70 24 2c 6f  |134,sarea%,sp$,o|
0000d9a0  78 25 2b 6d 6b 78 25 2c  6f 79 25 2b 79 33 25 2c  |x%+mkx%,oy%+y3%,|
0000d9b0  38 2c 73 63 61 6c 65 25  2c 74 72 61 6e 73 25 0d  |8,scale%,trans%.|
0000d9c0  49 02 05 e1 0d 49 0c 04  0d 49 16 04 0d 49 20 16  |I....I...I...I .|
0000d9d0  dd 20 f2 69 6e 70 75 74  5f 62 6f 78 28 64 69 67  |. .input_box(dig|
0000d9e0  25 29 0d 49 2a 0b ea 20  78 25 2c 68 25 0d 49 34  |%).I*.. x%,h%.I4|
0000d9f0  2d f2 77 6f 72 6b 5f 61  72 65 61 5f 6f 72 69 67  |-.work_area_orig|
0000da00  69 6e 28 68 61 6e 64 6c  65 25 28 67 61 6d 65 25  |in(handle%(game%|
0000da10  29 2c 6f 78 25 2c 6f 79  25 29 0d 49 3e 19 c8 99  |),ox%,oy%).I>...|
0000da20  22 57 69 6d 70 5f 53 65  74 43 6f 6c 6f 75 72 22  |"Wimp_SetColour"|
0000da30  2c 31 31 0d 49 48 2b e7  20 63 61 72 72 79 25 3d  |,11.IH+. carry%=|
0000da40  30 20 84 20 72 75 62 64  69 67 25 3e 2d 31 20 84  |0 . rubdig%>-1 .|
0000da50  20 48 65 6c 70 6c 65 76  25 3c 3d 32 20 8c 0d 49  | Helplev%<=2 ..I|
0000da60  52 20 20 e7 20 72 75 62  64 69 67 25 3e 2d 31 20  |R  . rubdig%>-1 |
0000da70  8c 20 64 69 67 25 3d 72  75 62 64 69 67 25 0d 49  |. dig%=rubdig%.I|
0000da80  5c 16 20 e7 20 64 69 67  25 3c 3d 61 6e 73 6c 69  |\. . dig%<=ansli|
0000da90  6d 25 20 8c 0d 49 66 17  20 20 78 25 3d a4 64 69  |m% ..If.  x%=.di|
0000daa0  67 78 28 64 69 67 25 29  2b 31 30 0d 49 70 1f 20  |gx(dig%)+10.Ip. |
0000dab0  20 c8 93 20 6f 78 25 2b  78 25 2c 6f 79 25 2b 79  | .. ox%+x%,oy%+y|
0000dac0  33 25 2b 34 2c 35 32 2c  35 32 0d 49 7a 06 20 cd  |3%+4,52,52.Iz. .|
0000dad0  0d 49 84 05 cc 0d 49 8e  12 20 e7 20 73 74 72 69  |.I....I.. . stri|
0000dae0  6b 65 25 3d 30 20 8c 0d  49 98 24 20 20 f2 63 61  |ke%=0 ..I.$  .ca|
0000daf0  72 72 79 5f 70 6f 73 78  28 64 69 67 25 2b 42 73  |rry_posx(dig%+Bs|
0000db00  74 65 70 25 2c 78 25 2c  68 25 29 0d 49 a2 1f 20  |tep%,x%,h%).I.. |
0000db10  20 c8 93 20 6f 78 25 2b  78 25 2c 6f 79 25 2b 79  | .. ox%+x%,oy%+y|
0000db20  63 61 72 25 2c 33 35 2c  68 25 0d 49 ac 06 20 cc  |car%,35,h%.I.. .|
0000db30  0d 49 b6 1e 20 20 78 25  3d a4 64 69 67 78 28 64  |.I..  x%=.digx(d|
0000db40  69 67 25 2b 42 73 74 65  70 25 29 2b 31 30 0d 49  |ig%+Bstep%)+10.I|
0000db50  c0 1f 20 20 c8 93 20 6f  78 25 2b 78 25 2c 6f 79  |..  .. ox%+x%,oy|
0000db60  25 2b 79 31 25 2b 34 2c  35 32 2c 35 32 0d 49 ca  |%+y1%+4,52,52.I.|
0000db70  06 20 cd 0d 49 d4 05 cd  0d 49 de 05 e1 0d 49 e8  |. ..I....I....I.|
0000db80  04 0d 49 f2 04 0d 49 fc  16 dd 20 f2 63 61 72 72  |..I...I... .carr|
0000db90  79 5f 70 6f 73 69 74 69  6f 6e 73 0d 4a 06 1b ea  |y_positions.J...|
0000dba0  20 64 69 67 25 2c 66 6c  67 25 28 29 3a de 20 66  | dig%,flg%():. f|
0000dbb0  6c 67 25 28 34 29 0d 4a  10 0f 73 74 5f 64 69 67  |lg%(4).J..st_dig|
0000dbc0  25 28 29 3d 30 0d 4a 1a  1c e7 20 6f 70 65 72 61  |%()=0.J... opera|
0000dbd0  74 6f 72 25 28 4e 61 6d  65 4e 6f 25 29 3d 31 20  |tor%(NameNo%)=1 |
0000dbe0  8c 0d 4a 24 11 20 e3 20  64 69 67 25 3d 30 20 b8  |..J$. . dig%=0 .|
0000dbf0  20 33 0d 4a 2e 49 20 20  e7 20 bb 20 64 69 67 31  | 3.J.I  . . dig1|
0000dc00  24 28 64 69 67 25 29 2b  bb 20 64 69 67 32 24 28  |$(dig%)+. dig2$(|
0000dc10  64 69 67 25 29 2b 63 61  72 5f 64 69 67 25 28 64  |dig%)+car_dig%(d|
0000dc20  69 67 25 29 3e 39 20 8c  20 63 61 72 5f 64 69 67  |ig%)>9 . car_dig|
0000dc30  25 28 64 69 67 25 2b 31  29 3d 31 0d 4a 38 06 20  |%(dig%+1)=1.J8. |
0000dc40  ed 0d 4a 42 05 cc 0d 4a  4c 30 20 e3 20 64 69 67  |..JB...JL0 . dig|
0000dc50  25 3d 30 20 b8 20 34 3a  63 61 72 5f 64 69 67 25  |%=0 . 4:car_dig%|
0000dc60  28 64 69 67 25 29 3d bb  20 64 69 67 31 24 28 64  |(dig%)=. dig1$(d|
0000dc70  69 67 25 29 3a ed 0d 4a  56 04 0d 4a 60 11 20 e3  |ig%):..JV..J`. .|
0000dc80  20 64 69 67 25 3d 30 20  b8 20 34 0d 4a 6a 28 20  | dig%=0 . 4.Jj( |
0000dc90  20 e7 20 63 61 72 5f 64  69 67 25 28 64 69 67 25  | . car_dig%(dig%|
0000dca0  29 2d bb 20 64 69 67 32  24 28 64 69 67 25 29 3c  |)-. dig2$(dig%)<|
0000dcb0  30 20 8c 0d 4a 74 2f 20  20 20 63 61 72 5f 64 69  |0 ..Jt/   car_di|
0000dcc0  67 25 28 64 69 67 25 29  20 2b 3d 31 30 3a 63 61  |g%(dig%) +=10:ca|
0000dcd0  72 5f 64 69 67 25 28 64  69 67 25 2b 31 29 20 2d  |r_dig%(dig%+1) -|
0000dce0  3d 31 0d 4a 7e 36 20 20  20 73 74 5f 64 69 67 25  |=1.J~6   st_dig%|
0000dcf0  28 64 69 67 25 2b 31 29  3d 31 3a 66 6c 67 25 28  |(dig%+1)=1:flg%(|
0000dd00  64 69 67 25 29 3d 2d 31  3a 66 6c 67 25 28 64 69  |dig%)=-1:flg%(di|
0000dd10  67 25 2b 31 29 3d 2d 31  0d 4a 88 07 20 20 cd 0d  |g%+1)=-1.J..  ..|
0000dd20  4a 92 06 20 ed 0d 4a 9c  04 0d 4a a6 11 20 e3 20  |J.. ..J...J.. . |
0000dd30  64 69 67 25 3d 30 20 b8  20 34 0d 4a b0 28 20 20  |dig%=0 . 4.J.(  |
0000dd40  e7 20 66 6c 67 25 28 64  69 67 25 29 3d 30 20 8c  |. flg%(dig%)=0 .|
0000dd50  20 63 61 72 5f 64 69 67  25 28 64 69 67 25 29 3d  | car_dig%(dig%)=|
0000dd60  2d 31 0d 4a ba 06 20 ed  0d 4a c4 17 20 e7 20 6d  |-1.J.. ..J.. . m|
0000dd70  6f 64 65 25 28 4e 61 6d  65 4e 6f 25 29 20 8c 0d  |ode%(NameNo%) ..|
0000dd80  4a ce 33 20 20 63 61 72  72 79 25 3d 28 63 61 72  |J.3  carry%=(car|
0000dd90  5f 64 69 67 25 28 30 29  3e 30 29 3a 73 74 72 69  |_dig%(0)>0):stri|
0000dda0  6b 65 25 3d 28 73 74 5f  64 69 67 25 28 31 29 3e  |ke%=(st_dig%(1)>|
0000ddb0  30 29 0d 4a d8 29 20 20  e7 20 73 74 72 69 6b 65  |0).J.)  . strike|
0000ddc0  25 20 8c 20 f2 63 6f 75  6e 74 5f 73 74 65 70 73  |% . .count_steps|
0000ddd0  20 8b 20 42 73 74 65 70  25 3d 30 0d 4a e2 25 20  | . Bstep%=0.J.% |
0000dde0  20 e7 20 63 61 72 5f 64  69 67 25 28 30 29 3d 2d  | . car_dig%(0)=-|
0000ddf0  31 20 8c 20 43 64 6f 6e  65 25 28 30 29 3d 2d 31  |1 . Cdone%(0)=-1|
0000de00  0d 4a ec 06 20 cd 0d 4a  f6 05 cd 0d 4b 00 05 e1  |.J.. ..J....K...|
0000de10  0d 4b 0a 04 0d 4b 14 04  0d 4b 1e 13 dd 20 a4 61  |.K...K...K... .a|
0000de20  6e 73 77 65 72 5f 6c 69  6d 69 74 0d 4b 28 0f ea  |nswer_limit.K(..|
0000de30  20 61 6e 73 24 2c 6c 65  6e 25 0d 4b 32 1c 61 6e  | ans$,len%.K2.an|
0000de40  73 24 3d c3 20 61 6e 73  25 3a 6c 65 6e 25 3d a9  |s$=. ans%:len%=.|
0000de50  61 6e 73 24 2d 31 0d 4b  3c 2b e7 20 64 65 63 69  |ans$-1.K<+. deci|
0000de60  6d 61 6c 25 28 4e 61 6d  65 4e 6f 25 29 3d 31 20  |mal%(NameNo%)=1 |
0000de70  80 20 6c 65 6e 25 3d 31  20 8c 20 6c 65 6e 25 3d  |. len%=1 . len%=|
0000de80  32 0d 4b 46 09 3d 6c 65  6e 25 0d 4b 50 04 0d 4b  |2.KF.=len%.KP..K|
0000de90  5a 04 0d 4b 64 12 dd 20  a4 71 75 65 73 74 5f 6c  |Z..Kd.. .quest_l|
0000dea0  69 6d 69 74 0d 4b 6e 0d  ea 20 6e 31 24 2c 6e 32  |imit.Kn.. n1$,n2|
0000deb0  24 0d 4b 78 23 6e 31 25  3d a9 20 c3 20 6e 75 6d  |$.Kx#n1%=. . num|
0000dec0  31 25 2d 31 3a 6e 32 25  3d a9 20 c3 20 6e 75 6d  |1%-1:n2%=. . num|
0000ded0  32 25 2d 31 0d 4b 82 1b  e7 20 6e 31 25 3e 6e 32  |2%-1.K... n1%>n2|
0000dee0  25 20 8c 20 3d 6e 31 25  20 8b 20 3d 6e 32 25 0d  |% . =n1% . =n2%.|
0000def0  4b 8c 04 0d 4b 96 04 0d  4b a0 19 dd 20 a4 6d 65  |K...K...K... .me|
0000df00  73 73 61 67 65 5f 70 6c  75 73 28 64 69 67 25 29  |ssage_plus(dig%)|
0000df10  0d 4b aa 12 ea 20 6d 65  73 73 24 2c 76 61 6c 69  |.K... mess$,vali|
0000df20  64 25 0d 4b b4 54 76 61  6c 69 64 25 3d 28 bb 63  |d%.K.Tvalid%=(.c|
0000df30  61 72 72 79 24 28 64 69  67 25 29 3d 31 20 80 20  |arry$(dig%)=1 . |
0000df40  63 61 72 5f 64 69 67 25  28 64 69 67 25 29 3d 31  |car_dig%(dig%)=1|
0000df50  20 84 20 63 61 72 72 79  24 28 64 69 67 25 29 3d  | . carry$(dig%)=|
0000df60  22 22 20 80 20 63 61 72  5f 64 69 67 25 28 64 69  |"" . car_dig%(di|
0000df70  67 25 29 3d 30 29 0d 4b  be 38 e7 20 76 61 6c 69  |g%)=0).K.8. vali|
0000df80  64 25 3d 30 20 8c 20 6d  65 73 73 24 3d 22 59 6f  |d%=0 . mess$="Yo|
0000df90  75 20 6e 65 65 64 20 74  6f 20 61 64 64 20 22 20  |u need to add " |
0000dfa0  8b 20 6d 65 73 73 24 3d  22 41 64 64 20 22 0d 4b  |. mess$="Add ".K|
0000dfb0  c8 33 e7 20 64 69 67 31  24 28 64 69 67 25 29 3d  |.3. dig1$(dig%)=|
0000dfc0  22 22 20 80 20 64 69 67  32 24 28 64 69 67 25 29  |"" . dig2$(dig%)|
0000dfd0  3d 22 22 20 8c 20 3d 6d  65 73 73 24 2b 22 31 2e  |="" . =mess$+"1.|
0000dfe0  22 0d 4b d2 41 e7 20 64  69 67 32 24 28 64 69 67  |".K.A. dig2$(dig|
0000dff0  25 29 3c 3e 22 22 20 8c  20 6d 65 73 73 24 3d 6d  |%)<>"" . mess$=m|
0000e000  65 73 73 24 2b 64 69 67  32 24 28 64 69 67 25 29  |ess$+dig2$(dig%)|
0000e010  20 8b 20 6d 65 73 73 24  3d 6d 65 73 73 24 2b 22  | . mess$=mess$+"|
0000e020  30 22 0d 4b dc 51 e7 20  64 69 67 31 24 28 64 69  |0".K.Q. dig1$(di|
0000e030  67 25 29 3c 3e 22 22 20  8c 20 6d 65 73 73 24 3d  |g%)<>"" . mess$=|
0000e040  6d 65 73 73 24 2b 22 20  61 6e 64 20 22 2b 64 69  |mess$+" and "+di|
0000e050  67 31 24 28 64 69 67 25  29 20 8b 20 6d 65 73 73  |g1$(dig%) . mess|
0000e060  24 3d 6d 65 73 73 24 2b  22 20 61 6e 64 20 22 2b  |$=mess$+" and "+|
0000e070  22 30 22 0d 4b e6 2b e7  20 63 61 72 5f 64 69 67  |"0".K.+. car_dig|
0000e080  25 28 64 69 67 25 29 3e  30 20 8c 20 6d 65 73 73  |%(dig%)>0 . mess|
0000e090  24 3d 6d 65 73 73 24 2b  22 20 2b 20 31 22 0d 4b  |$=mess$+" + 1".K|
0000e0a0  f0 0e 3d 6d 65 73 73 24  2b 22 2e 22 0d 4b fa 04  |..=mess$+".".K..|
0000e0b0  0d 4c 04 04 0d 4c 0e 1a  dd 20 a4 6d 65 73 73 61  |.L...L... .messa|
0000e0c0  67 65 5f 6d 69 6e 75 73  28 64 69 67 25 29 0d 4c  |ge_minus(dig%).L|
0000e0d0  18 22 ea 20 6d 65 73 73  24 2c 64 69 67 24 2c 75  |.". mess$,dig$,u|
0000e0e0  6e 69 74 73 25 2c 76 61  6c 69 64 25 2c 64 32 24  |nits%,valid%,d2$|
0000e0f0  0d 4c 22 1e 75 6e 69 74  73 25 3d 63 61 72 5f 64  |.L".units%=car_d|
0000e100  69 67 25 28 64 69 67 25  29 20 83 20 31 30 0d 4c  |ig%(dig%) . 10.L|
0000e110  2c 42 e7 20 63 61 72 5f  64 69 67 25 28 64 69 67  |,B. car_dig%(dig|
0000e120  25 29 3e 2d 31 20 8c 20  64 69 67 24 3d c3 20 63  |%)>-1 . dig$=. c|
0000e130  61 72 5f 64 69 67 25 28  64 69 67 25 29 20 8b 20  |ar_dig%(dig%) . |
0000e140  64 69 67 24 3d 64 69 67  31 24 28 64 69 67 25 29  |dig$=dig1$(dig%)|
0000e150  0d 4c 36 30 e7 20 64 69  67 32 24 28 64 69 67 25  |.L60. dig2$(dig%|
0000e160  29 3d 22 22 20 8c 20 64  32 24 3d 22 30 22 20 8b  |)="" . d2$="0" .|
0000e170  20 64 32 24 3d 64 69 67  32 24 28 64 69 67 25 29  | d2$=dig2$(dig%)|
0000e180  0d 4c 40 8f 76 61 6c 69  64 25 3d 28 75 6e 69 74  |.L@.valid%=(unit|
0000e190  73 25 3d bb 64 69 67 31  24 28 64 69 67 25 29 20  |s%=.dig1$(dig%) |
0000e1a0  80 20 63 61 72 72 79 24  28 64 69 67 25 29 3d 22  |. carry$(dig%)="|
0000e1b0  31 22 20 84 20 75 6e 69  74 73 25 3c 3e bb 64 69  |1" . units%<>.di|
0000e1c0  67 31 24 28 64 69 67 25  29 20 80 20 bb 63 61 72  |g1$(dig%) . .car|
0000e1d0  72 79 24 28 64 69 67 25  29 3d 63 61 72 5f 64 69  |ry$(dig%)=car_di|
0000e1e0  67 25 28 64 69 67 25 29  20 84 20 63 61 72 5f 64  |g%(dig%) . car_d|
0000e1f0  69 67 25 28 64 69 67 25  29 3d 2d 31 20 80 20 63  |ig%(dig%)=-1 . c|
0000e200  61 72 72 79 24 28 64 69  67 25 29 3d 22 22 29 0d  |arry$(dig%)="").|
0000e210  4c 4a 42 e7 20 76 61 6c  69 64 25 3d 30 20 8c 20  |LJB. valid%=0 . |
0000e220  6d 65 73 73 24 3d 22 59  6f 75 20 6e 65 65 64 20  |mess$="You need |
0000e230  74 6f 20 73 75 62 74 72  61 63 74 20 22 20 8b 20  |to subtract " . |
0000e240  6d 65 73 73 24 3d 22 53  75 62 74 72 61 63 74 20  |mess$="Subtract |
0000e250  22 0d 4c 54 21 6d 65 73  73 24 3d 6d 65 73 73 24  |".LT!mess$=mess$|
0000e260  2b 64 32 24 2b 22 20 66  72 6f 6d 20 22 2b 64 69  |+d2$+" from "+di|
0000e270  67 24 0d 4c 5e 0e 3d 6d  65 73 73 24 2b 22 2e 22  |g$.L^.=mess$+"."|
0000e280  0d 4c 68 04 0d 4c 72 04  0d 4c 7c 17 dd 20 f2 6d  |.Lh..Lr..L|.. .m|
0000e290  65 73 73 61 67 65 28 73  6f 75 72 63 65 24 29 0d  |essage(source$).|
0000e2a0  4c 86 14 ea 20 64 69 67  25 2c 73 74 25 2c 63 25  |L... dig%,st%,c%|
0000e2b0  2c 72 25 0d 4c 90 60 e7  20 72 75 62 64 69 67 25  |,r%.L.`. rubdig%|
0000e2c0  3e 2d 31 20 8c 20 64 69  67 25 3d 72 75 62 64 69  |>-1 . dig%=rubdi|
0000e2d0  67 25 3a 73 74 25 3d 30  3a 63 25 3d 30 3a 72 25  |g%:st%=0:c%=0:r%|
0000e2e0  3d 30 20 8b 20 64 69 67  25 3d 6e 65 78 74 64 69  |=0 . dig%=nextdi|
0000e2f0  67 25 3a 73 74 25 3d 73  74 72 69 6b 65 25 3a 63  |g%:st%=strike%:c|
0000e300  25 3d 63 61 72 72 79 25  3a 72 25 3d 72 65 64 75  |%=carry%:r%=redu|
0000e310  63 65 25 0d 4c 9a 25 e7  20 73 6f 75 72 63 65 24  |ce%.L.%. source$|
0000e320  3d 22 73 75 6d 22 20 8c  20 64 69 67 25 3d 49 43  |="sum" . dig%=IC|
0000e330  64 72 61 67 25 2d 31 38  0d 4c a4 50 e7 20 64 69  |drag%-18.L.P. di|
0000e340  67 25 3e 61 6e 73 6c 69  6d 25 20 80 20 73 6f 75  |g%>anslim% . sou|
0000e350  72 63 65 24 3c 3e 22 73  75 6d 22 20 84 20 48 65  |rce$<>"sum" . He|
0000e360  6c 70 6c 65 76 25 3d 35  20 80 20 73 6f 75 72 63  |lplev%=5 . sourc|
0000e370  65 24 3d 22 3f 22 20 84  20 63 6f 72 72 65 63 74  |e$="?" . correct|
0000e380  25 3d 2d 31 20 8c 20 e1  0d 4c ae 2e e7 20 48 65  |%=-1 . ..L... He|
0000e390  6c 70 6c 65 76 25 3d 35  20 80 20 73 6f 75 72 63  |lplev%=5 . sourc|
0000e3a0  65 24 3d 22 70 6c 22 20  8c 20 73 6f 75 72 63 65  |e$="pl" . source|
0000e3b0  24 3d 22 70 72 22 0d 4c  b8 11 6d 65 73 73 61 67  |$="pr".L..messag|
0000e3c0  65 24 28 29 3d 22 22 0d  4c c2 2d f2 77 6f 72 6b  |e$()="".L.-.work|
0000e3d0  5f 61 72 65 61 5f 6f 72  69 67 69 6e 28 68 61 6e  |_area_origin(han|
0000e3e0  64 6c 65 25 28 67 61 6d  65 25 29 2c 6f 78 25 2c  |dle%(game%),ox%,|
0000e3f0  6f 79 25 29 0d 4c cc 04  0d 4c d6 10 c8 8e 20 73  |oy%).L...L.... s|
0000e400  6f 75 72 63 65 24 20 ca  0d 4c e0 36 20 c9 20 22  |ource$ ..L.6 . "|
0000e410  3f 22 3a e7 20 48 65 6c  70 6c 65 76 25 3e 30 20  |?":. Helplev%>0 |
0000e420  8c 20 f2 6d 65 73 73 5f  63 6f 6c 75 6d 6e 28 64  |. .mess_column(d|
0000e430  69 67 25 2c 73 74 25 2c  63 25 2c 72 25 29 0d 4c  |ig%,st%,c%,r%).L|
0000e440  ea 1c 20 20 20 20 20 20  20 20 20 20 e7 20 48 65  |..          . He|
0000e450  6c 70 6c 65 76 25 3e 31  20 8c 0d 4c f4 6f 20 20  |lplev%>1 ..L.o  |
0000e460  20 20 20 20 20 20 20 20  20 e7 20 48 65 6c 70 6c  |         . Helpl|
0000e470  65 76 25 3d 34 20 80 20  63 25 3d 30 20 8c 20 f2  |ev%=4 . c%=0 . .|
0000e480  6d 65 73 73 5f 73 75 6d  28 6d 65 73 73 61 67 65  |mess_sum(message|
0000e490  24 28 32 29 2c 64 69 67  25 29 20 8b 20 f2 6d 65  |$(2),dig%) . .me|
0000e4a0  73 73 5f 44 65 63 6f 6d  43 61 72 72 79 28 6d 65  |ss_DecomCarry(me|
0000e4b0  73 73 61 67 65 24 28 32  29 2c 64 69 67 25 2c 73  |ssage$(2),dig%,s|
0000e4c0  74 25 2c 63 25 2c 72 25  29 0d 4c fe 0f 20 20 20  |t%,c%,r%).L..   |
0000e4d0  20 20 20 20 20 20 20 cd  0d 4d 08 37 20 c9 20 22  |       ..M.7 . "|
0000e4e0  70 6c 22 3a e7 20 48 65  6c 70 6c 65 76 25 3e 30  |pl":. Helplev%>0|
0000e4f0  20 8c 20 f2 6d 65 73 73  5f 63 6f 6c 75 6d 6e 28  | . .mess_column(|
0000e500  64 69 67 25 2c 73 74 25  2c 63 25 2c 72 25 29 0d  |dig%,st%,c%,r%).|
0000e510  4d 12 29 20 c9 20 22 63  6b 22 3a f2 77 72 6f 6e  |M.) . "ck":.wron|
0000e520  67 5f 6e 75 6d 62 65 72  28 64 69 67 25 2c 73 74  |g_number(dig%,st|
0000e530  25 2c 63 25 2c 72 25 29  0d 4d 1c 28 20 c9 20 22  |%,c%,r%).M.( . "|
0000e540  70 72 22 3a f2 6d 65 73  73 5f 63 6f 6c 75 6d 6e  |pr":.mess_column|
0000e550  28 64 69 67 25 2c 73 74  25 2c 63 25 2c 72 25 29  |(dig%,st%,c%,r%)|
0000e560  0d 4d 26 62 20 20 20 20  20 20 20 20 20 20 20 e7  |.M&b           .|
0000e570  20 63 25 3d 30 20 8c 20  f2 6d 65 73 73 5f 73 75  | c%=0 . .mess_su|
0000e580  6d 28 6d 65 73 73 61 67  65 24 28 32 29 2c 64 69  |m(message$(2),di|
0000e590  67 25 29 20 8b 20 f2 6d  65 73 73 5f 44 65 63 6f  |g%) . .mess_Deco|
0000e5a0  6d 43 61 72 72 79 28 6d  65 73 73 61 67 65 24 28  |mCarry(message$(|
0000e5b0  32 29 2c 64 69 67 25 2c  73 74 25 2c 63 25 2c 72  |2),dig%,st%,c%,r|
0000e5c0  25 29 0d 4d 30 26 20 c9  20 22 73 75 6d 22 3a f2  |%).M0& . "sum":.|
0000e5d0  77 72 6f 6e 67 5f 63 61  6c 63 5f 6d 65 73 73 61  |wrong_calc_messa|
0000e5e0  67 65 28 64 69 67 25 29  0d 4d 3a 05 cb 0d 4d 44  |ge(dig%).M:...MD|
0000e5f0  3d e7 20 6d 65 73 73 61  67 65 24 28 31 29 3d 22  |=. message$(1)="|
0000e600  22 20 8c 20 6d 65 73 73  61 67 65 24 28 31 29 3d  |" . message$(1)=|
0000e610  6d 65 73 73 61 67 65 24  28 32 29 3a 6d 65 73 73  |message$(2):mess|
0000e620  61 67 65 24 28 32 29 3d  22 22 0d 4d 4e 04 0d 4d  |age$(2)="".MN..M|
0000e630  58 13 f2 66 6f 6e 74 5f  74 6f 5f 73 63 72 65 65  |X..font_to_scree|
0000e640  6e 0d 4d 62 18 f2 6d 65  73 73 61 67 65 5f 73 70  |n.Mb..message_sp|
0000e650  72 69 74 65 5f 62 61 63  6b 0d 4d 6c 05 e1 0d 4d  |rite_back.Ml...M|
0000e660  76 04 0d 4d 80 04 0d 4d  8a 1f dd 20 f2 77 72 6f  |v..M...M... .wro|
0000e670  6e 67 5f 63 61 6c 63 5f  6d 65 73 73 61 67 65 28  |ng_calc_message(|
0000e680  64 69 67 25 29 0d 4d 94  25 ea 20 76 61 6c 25 3a  |dig%).M.%. val%:|
0000e690  76 61 6c 25 3d a4 63 68  65 63 6b 5f 73 75 6d 5f  |val%=.check_sum_|
0000e6a0  74 79 70 65 28 64 69 67  25 29 0d 4d 9e 1c e7 20  |type(dig%).M... |
0000e6b0  6f 70 65 72 61 74 6f 72  25 28 4e 61 6d 65 4e 6f  |operator%(NameNo|
0000e6c0  25 29 3d 32 20 8c 0d 4d  a8 5d 20 e7 20 76 61 6c  |%)=2 ..M.] . val|
0000e6d0  25 3d 31 20 8c 20 6d 65  73 73 61 67 65 24 28 31  |%=1 . message$(1|
0000e6e0  29 3d 22 59 6f 75 27 72  65 20 74 61 6b 69 6e 67  |)="You're taking|
0000e6f0  20 74 6f 70 20 66 72 6f  6d 20 62 6f 74 74 6f 6d  | top from bottom|
0000e700  2e 22 20 8b 20 6d 65 73  73 61 67 65 24 28 31 29  |." . message$(1)|
0000e710  3d 22 59 6f 75 20 61 72  65 20 61 64 64 69 6e 67  |="You are adding|
0000e720  20 21 22 0d 4d b2 28 20  6d 65 73 73 61 67 65 24  | !".M.( message$|
0000e730  28 32 29 3d 22 54 61 6b  65 20 62 6f 74 74 6f 6d  |(2)="Take bottom|
0000e740  20 66 72 6f 6d 20 74 6f  70 2e 22 0d 4d bc 05 cc  | from top.".M...|
0000e750  0d 4d c6 30 20 e7 20 76  61 6c 25 20 8c 20 6d 65  |.M.0 . val% . me|
0000e760  73 73 61 67 65 24 28 31  29 3d 22 59 6f 75 20 61  |ssage$(1)="You a|
0000e770  72 65 20 73 75 62 74 72  61 63 74 69 6e 67 2e 22  |re subtracting."|
0000e780  0d 4d d0 05 cd 0d 4d da  05 e1 0d 4d e4 04 0d 4d  |.M....M....M...M|
0000e790  ee 04 0d 4d f8 23 dd 20  f2 77 72 6f 6e 67 5f 6e  |...M.#. .wrong_n|
0000e7a0  75 6d 62 65 72 28 64 69  67 25 2c 73 74 25 2c 63  |umber(dig%,st%,c|
0000e7b0  25 2c 72 25 29 0d 4e 02  12 e7 20 48 65 6c 70 6c  |%,r%).N... Helpl|
0000e7c0  65 76 25 3d 35 20 8c 0d  4e 0c 66 20 e7 20 a4 63  |ev%=5 ..N.f . .c|
0000e7d0  68 65 63 6b 5f 73 75 6d  5f 74 79 70 65 28 64 69  |heck_sum_type(di|
0000e7e0  67 25 29 3d 2d 31 20 80  20 73 74 25 3d 30 20 8c  |g%)=-1 . st%=0 .|
0000e7f0  20 f2 77 72 6f 6e 67 5f  63 61 6c 63 5f 6d 65 73  | .wrong_calc_mes|
0000e800  73 61 67 65 28 64 69 67  25 29 20 8b 20 6d 65 73  |sage(dig%) . mes|
0000e810  73 61 67 65 24 28 31 29  3d 22 4e 6f 3b 20 74 68  |sage$(1)="No; th|
0000e820  61 74 27 73 20 6e 6f 74  20 69 74 2e 22 0d 4e 16  |at's not it.".N.|
0000e830  58 20 e7 20 63 25 3d 30  20 8c 20 f2 6d 65 73 73  |X . c%=0 . .mess|
0000e840  5f 73 75 6d 28 6d 65 73  73 61 67 65 24 28 32 29  |_sum(message$(2)|
0000e850  2c 64 69 67 25 29 20 8b  20 f2 6d 65 73 73 5f 44  |,dig%) . .mess_D|
0000e860  65 63 6f 6d 43 61 72 72  79 28 6d 65 73 73 61 67  |ecomCarry(messag|
0000e870  65 24 28 32 29 2c 64 69  67 25 2c 73 74 25 2c 63  |e$(2),dig%,st%,c|
0000e880  25 2c 72 25 29 0d 4e 20  05 cd 0d 4e 2a 05 e1 0d  |%,r%).N ...N*...|
0000e890  4e 34 04 0d 4e 3e 04 0d  4e 48 22 dd 20 f2 6d 65  |N4..N>..NH". .me|
0000e8a0  73 73 5f 63 6f 6c 75 6d  6e 28 64 69 67 25 2c 73  |ss_column(dig%,s|
0000e8b0  74 25 2c 63 25 2c 72 25  29 0d 4e 52 0a ea 20 76  |t%,c%,r%).NR.. v|
0000e8c0  61 72 24 0d 4e 5c 19 e7  20 63 25 3d 30 20 84 20  |ar$.N\.. c%=0 . |
0000e8d0  48 65 6c 70 6c 65 76 25  3d 31 20 8c 0d 4e 66 11  |Helplev%=1 ..Nf.|
0000e8e0  20 f2 63 6f 6c 75 6d 6e  5f 6e 61 6d 65 0d 4e 70  | .column_name.Np|
0000e8f0  2e 20 e7 20 64 69 67 25  3d 30 20 8c 20 76 61 72  |. . dig%=0 . var|
0000e900  24 3d 22 20 66 69 72 73  74 2e 22 20 8b 20 76 61  |$=" first." . va|
0000e910  72 24 3d 22 20 6e 65 78  74 2e 22 0d 4e 7a 2f 20  |r$=" next.".Nz/ |
0000e920  6d 65 73 73 61 67 65 24  28 31 29 3d 22 44 6f 20  |message$(1)="Do |
0000e930  74 68 65 20 22 2b 64 69  67 5f 6e 61 6d 65 24 28  |the "+dig_name$(|
0000e940  64 69 67 25 29 2b 76 61  72 24 0d 4e 84 05 cc 0d  |dig%)+var$.N....|
0000e950  4e 8e 15 20 e7 20 73 6f  75 72 63 65 24 3d 22 70  |N.. . source$="p|
0000e960  6c 22 20 8c 0d 4e 98 66  20 20 e7 20 6f 70 65 72  |l" ..N.f  . oper|
0000e970  61 74 6f 72 25 28 4e 61  6d 65 4e 6f 25 29 3d 31  |ator%(NameNo%)=1|
0000e980  20 8c 20 6d 65 73 73 61  67 65 24 28 31 29 3d 22  | . message$(1)="|
0000e990  59 6f 75 20 6e 65 65 64  20 74 6f 20 63 61 72 72  |You need to carr|
0000e9a0  79 2e 22 20 8b 20 6d 65  73 73 61 67 65 24 28 31  |y." . message$(1|
0000e9b0  29 3d 22 59 6f 75 20 6e  65 65 64 20 74 6f 20 64  |)="You need to d|
0000e9c0  65 63 6f 6d 70 6f 73 65  2e 22 0d 4e a2 06 20 cd  |ecompose.".N.. .|
0000e9d0  0d 4e ac 05 cd 0d 4e b6  05 e1 0d 4e c0 04 0d 4e  |.N....N....N...N|
0000e9e0  ca 04 0d 4e d4 12 dd 20  f2 63 6f 6c 75 6d 6e 5f  |...N... .column_|
0000e9f0  6e 61 6d 65 0d 4e de 19  e7 20 64 65 63 69 6d 61  |name.N... decima|
0000ea00  6c 25 28 4e 61 6d 65 4e  6f 25 29 20 8c 0d 4e e8  |l%(NameNo%) ..N.|
0000ea10  40 20 64 69 67 5f 6e 61  6d 65 24 28 29 3d 22 68  |@ dig_name$()="h|
0000ea20  75 6e 64 72 65 64 74 68  73 22 2c 22 74 65 6e 74  |undredths","tent|
0000ea30  68 73 22 2c 22 75 6e 69  74 73 22 2c 22 74 65 6e  |hs","units","ten|
0000ea40  73 22 2c 22 68 75 6e 64  72 65 64 73 22 0d 4e f2  |s","hundreds".N.|
0000ea50  05 cc 0d 4e fc 46 20 64  69 67 5f 6e 61 6d 65 24  |...N.F dig_name$|
0000ea60  28 29 3d 22 75 6e 69 74  73 22 2c 22 74 65 6e 73  |()="units","tens|
0000ea70  22 2c 22 68 75 6e 64 72  65 64 73 22 2c 22 74 68  |","hundreds","th|
0000ea80  6f 75 73 61 6e 64 73 22  2c 22 74 65 6e 20 74 68  |ousands","ten th|
0000ea90  6f 75 73 61 6e 64 73 22  0d 4f 06 05 cd 0d 4f 10  |ousands".O....O.|
0000eaa0  05 e1 0d 4f 1a 04 0d 4f  24 04 0d 4f 2e 1d dd 20  |...O...O$..O... |
0000eab0  f2 6d 65 73 73 5f 73 75  6d 28 f8 20 6d 65 73 73  |.mess_sum(. mess|
0000eac0  24 2c 64 69 67 25 29 0d  4f 38 53 e7 20 6f 70 65  |$,dig%).O8S. ope|
0000ead0  72 61 74 6f 72 25 28 4e  61 6d 65 4e 6f 25 29 3d  |rator%(NameNo%)=|
0000eae0  31 20 8c 20 6d 65 73 73  24 3d a4 6d 65 73 73 61  |1 . mess$=.messa|
0000eaf0  67 65 5f 70 6c 75 73 28  64 69 67 25 29 20 8b 20  |ge_plus(dig%) . |
0000eb00  6d 65 73 73 24 3d a4 6d  65 73 73 61 67 65 5f 6d  |mess$=.message_m|
0000eb10  69 6e 75 73 28 64 69 67  25 29 0d 4f 42 05 e1 0d  |inus(dig%).OB...|
0000eb20  4f 4c 04 0d 4f 56 04 0d  4f 60 2e dd 20 f2 6d 65  |OL..OV..O`.. .me|
0000eb30  73 73 5f 44 65 63 6f 6d  43 61 72 72 79 28 f8 20  |ss_DecomCarry(. |
0000eb40  6d 65 73 73 24 2c 64 69  67 25 2c 73 74 25 2c 63  |mess$,dig%,st%,c|
0000eb50  25 2c 72 25 29 0d 4f 6a  13 ea 20 75 6e 69 74 73  |%,r%).Oj.. units|
0000eb60  25 2c 6d 65 73 73 32 24  0d 4f 74 0e e7 20 63 25  |%,mess2$.Ot.. c%|
0000eb70  3d 30 20 8c 20 e1 0d 4f  7e 49 e7 20 48 65 6c 70  |=0 . ..O~I. Help|
0000eb80  6c 65 76 25 3d 32 20 80  20 6f 70 65 72 61 74 6f  |lev%=2 . operato|
0000eb90  72 25 28 4e 61 6d 65 4e  6f 25 29 3d 32 20 8c 20  |r%(NameNo%)=2 . |
0000eba0  6d 65 73 73 24 3d 22 44  6f 20 74 68 65 20 64 65  |mess$="Do the de|
0000ebb0  63 6f 6d 70 6f 73 69 74  69 6f 6e 2e 22 3a e1 0d  |composition.":..|
0000ebc0  4f 88 04 0d 4f 92 1c e7  20 6f 70 65 72 61 74 6f  |O...O... operato|
0000ebd0  72 25 28 4e 61 6d 65 4e  6f 25 29 3d 31 20 8c 0d  |r%(NameNo%)=1 ..|
0000ebe0  4f 9c 1e 20 6d 65 73 73  24 3d 22 59 6f 75 20 6e  |O.. mess$="You n|
0000ebf0  65 65 64 20 74 6f 20 63  61 72 72 79 22 0d 4f a6  |eed to carry".O.|
0000ec00  4a 20 e7 20 48 65 6c 70  6c 65 76 25 3e 32 20 8c  |J . Helplev%>2 .|
0000ec10  20 6d 65 73 73 24 3d 6d  65 73 73 24 2b 22 20 22  | mess$=mess$+" "|
0000ec20  2b c3 20 63 61 72 5f 64  69 67 25 28 64 69 67 25  |+. car_dig%(dig%|
0000ec30  29 2b 22 2e 22 20 8b 20  6d 65 73 73 24 3d 6d 65  |)+"." . mess$=me|
0000ec40  73 73 24 2b 22 2e 22 0d  4f b0 05 cc 0d 4f ba 0c  |ss$+".".O....O..|
0000ec50  20 e7 20 73 74 25 20 8c  0d 4f c4 38 20 20 6d 65  | . st% ..O.8  me|
0000ec60  73 73 24 3d 22 53 74 72  69 6b 65 20 74 68 72 6f  |ss$="Strike thro|
0000ec70  75 67 68 20 74 68 65 20  22 2b 64 69 67 31 24 28  |ugh the "+dig1$(|
0000ec80  64 69 67 25 2b 42 73 74  65 70 25 29 2b 22 2e 22  |dig%+Bstep%)+"."|
0000ec90  0d 4f ce 06 20 cc 0d 4f  d8 1e 20 20 6d 65 73 73  |.O.. ..O..  mess|
0000eca0  24 3d 22 59 6f 75 20 6e  65 65 64 20 74 6f 20 61  |$="You need to a|
0000ecb0  64 64 20 22 0d 4f e2 37  20 20 6d 65 73 73 32 24  |dd ".O.7  mess2$|
0000ecc0  3d 22 52 65 70 6c 61 63  65 20 74 68 65 20 22 2b  |="Replace the "+|
0000ecd0  64 69 67 31 24 28 64 69  67 25 2b 42 73 74 65 70  |dig1$(dig%+Bstep|
0000ece0  25 29 2b 22 20 77 69 74  68 20 22 0d 4f ec 0c 20  |%)+" with ".O.. |
0000ecf0  20 e7 20 72 25 20 8c 0d  4f f6 28 20 20 20 75 6e  | . r% ..O.(   un|
0000ed00  69 74 73 25 3d 63 61 72  5f 64 69 67 25 28 64 69  |its%=car_dig%(di|
0000ed10  67 25 2b 42 73 74 65 70  25 29 20 83 20 31 30 0d  |g%+Bstep%) . 10.|
0000ed20  50 00 4b 20 20 20 e7 20  63 61 72 72 79 24 28 64  |P.K   . carry$(d|
0000ed30  69 67 25 2b 42 73 74 65  70 25 29 3d 22 22 20 8c  |ig%+Bstep%)="" .|
0000ed40  20 6d 65 73 73 32 24 3d  6d 65 73 73 32 24 2b c3  | mess2$=mess2$+.|
0000ed50  75 6e 69 74 73 25 20 8b  20 6d 65 73 73 24 3d 6d  |units% . mess$=m|
0000ed60  65 73 73 24 2b 22 31 30  2e 22 0d 50 0a 07 20 20  |ess$+"10.".P..  |
0000ed70  cc 0d 50 14 28 20 20 20  75 6e 69 74 73 25 3d 63  |..P.(   units%=c|
0000ed80  61 72 5f 64 69 67 25 28  64 69 67 25 2b 42 73 74  |ar_dig%(dig%+Bst|
0000ed90  65 70 25 29 20 83 20 31  30 0d 50 1e 4d 20 20 20  |ep%) . 10.P.M   |
0000eda0  e7 20 63 61 72 5f 64 69  67 25 28 64 69 67 25 2b  |. car_dig%(dig%+|
0000edb0  42 73 74 65 70 25 29 3e  39 20 8c 20 6d 65 73 73  |Bstep%)>9 . mess|
0000edc0  24 3d 6d 65 73 73 24 2b  22 31 30 2e 22 20 8b 20  |$=mess$+"10." . |
0000edd0  6d 65 73 73 32 24 3d 6d  65 73 73 32 24 2b c3 20  |mess2$=mess2$+. |
0000ede0  75 6e 69 74 73 25 0d 50  28 07 20 20 cd 0d 50 32  |units%.P(.  ..P2|
0000edf0  26 20 20 e7 20 a9 20 6d  65 73 73 32 24 3d 32 30  |&  . . mess2$=20|
0000ee00  20 8c 20 6d 65 73 73 24  3d 6d 65 73 73 32 24 2b  | . mess$=mess2$+|
0000ee10  22 2e 22 0d 50 3c 06 20  cd 0d 50 46 05 cd 0d 50  |".".P<. ..PF...P|
0000ee20  50 05 e1 0d 50 5a 04 0d  50 64 04 0d 50 6e 15 dd  |P...PZ..Pd..Pn..|
0000ee30  20 f2 72 65 6d 6f 76 65  5f 6d 65 73 73 61 67 65  | .remove_message|
0000ee40  0d 50 78 11 6d 65 73 73  61 67 65 24 28 29 3d 22  |.Px.message$()="|
0000ee50  22 0d 50 82 3f c8 99 22  57 69 6d 70 5f 46 6f 72  |".P.?.."Wimp_For|
0000ee60  63 65 52 65 64 72 61 77  22 2c 68 61 6e 64 6c 65  |ceRedraw",handle|
0000ee70  25 28 67 61 6d 65 25 29  2c 36 30 30 2c 79 33 25  |%(game%),600,y3%|
0000ee80  2d 32 34 2c 31 32 38 30  2c 79 33 25 2b 31 34 35  |-24,1280,y3%+145|
0000ee90  0d 50 8c 05 e1 0d 50 96  04 0d 50 a0 04 0d 50 aa  |.P....P...P...P.|
0000eea0  15 dd 20 f2 66 6f 6e 74  5f 74 6f 5f 73 63 72 65  |.. .font_to_scre|
0000eeb0  65 6e 0d 50 b4 21 c8 99  22 57 69 6d 70 5f 53 65  |en.P.!.."Wimp_Se|
0000eec0  74 46 6f 6e 74 43 6f 6c  6f 75 72 73 22 2c 2c 30  |tFontColours",,0|
0000eed0  2c 31 31 0d 50 be 30 c8  99 22 46 6f 6e 74 5f 46  |,11.P.0.."Font_F|
0000eee0  69 6e 64 46 6f 6e 74 22  2c 2c 22 4a 61 72 6d 61  |indFont",,"Jarma|
0000eef0  6e 22 2c 32 39 30 2c 33  32 30 20 b8 20 46 6d 65  |n",290,320 . Fme|
0000ef00  73 73 25 0d 50 c8 1b c8  99 22 46 6f 6e 74 5f 53  |ss%.P...."Font_S|
0000ef10  65 74 46 6f 6e 74 22 2c  46 6d 65 73 73 25 0d 50  |etFont",Fmess%.P|
0000ef20  d2 2d f2 77 6f 72 6b 5f  61 72 65 61 5f 6f 72 69  |.-.work_area_ori|
0000ef30  67 69 6e 28 68 61 6e 64  6c 65 25 28 67 61 6d 65  |gin(handle%(game|
0000ef40  25 29 2c 6f 78 25 2c 6f  79 25 29 0d 50 dc 04 0d  |%),ox%,oy%).P...|
0000ef50  50 e6 3d c8 99 22 4f 53  5f 53 70 72 69 74 65 4f  |P.=.."OS_SpriteO|
0000ef60  70 22 2c 26 31 33 43 2c  73 61 72 65 61 25 2c 22  |p",&13C,sarea%,"|
0000ef70  6d 65 73 73 61 67 65 22  2c 31 20 b8 20 72 30 25  |message",1 . r0%|
0000ef80  2c 72 31 25 2c 72 32 25  2c 72 33 25 0d 50 f0 16  |,r1%,r2%,r3%.P..|
0000ef90  f2 6d 65 73 73 5f 73 70  72 69 74 65 5f 6c 69 6e  |.mess_sprite_lin|
0000efa0  65 73 0d 50 fa 23 c8 99  22 4f 53 5f 53 70 72 69  |es.P.#.."OS_Spri|
0000efb0  74 65 4f 70 22 2c 72 30  25 2c 72 31 25 2c 72 32  |teOp",r0%,r1%,r2|
0000efc0  25 2c 72 33 25 0d 51 04  04 0d 51 0e 3f 66 6c 67  |%,r3%.Q...Q.?flg|
0000efd0  25 3d a4 75 70 64 61 74  65 5f 77 69 6e 64 6f 77  |%=.update_window|
0000efe0  28 68 61 6e 64 6c 65 25  28 67 61 6d 65 25 29 2c  |(handle%(game%),|
0000eff0  36 30 30 2c 79 33 25 2d  32 34 2c 31 32 38 30 2c  |600,y3%-24,1280,|
0000f000  79 33 25 2b 31 34 35 29  0d 51 18 0b c8 95 20 66  |y3%+145).Q.... f|
0000f010  6c 67 25 0d 51 22 45 20  c8 99 22 4f 53 5f 53 70  |lg%.Q"E .."OS_Sp|
0000f020  72 69 74 65 4f 70 22 2c  26 31 33 34 2c 73 61 72  |riteOp",&134,sar|
0000f030  65 61 25 2c 22 6d 65 73  73 61 67 65 22 2c 6f 78  |ea%,"message",ox|
0000f040  25 2b 36 30 30 2c 6f 79  25 2b 79 33 25 2d 32 35  |%+600,oy%+y3%-25|
0000f050  2c 30 2c 2d 31 2c 2d 31  0d 51 2c 17 20 e7 20 6d  |,0,-1,-1.Q,. . m|
0000f060  65 73 73 61 67 65 24 28  32 29 3d 22 22 20 8c 0d  |essage$(2)="" ..|
0000f070  51 36 34 20 20 c8 99 22  46 6f 6e 74 5f 50 61 69  |Q64  .."Font_Pai|
0000f080  6e 74 22 2c 2c 6d 65 73  73 61 67 65 24 28 31 29  |nt",,message$(1)|
0000f090  2c 31 36 2c 6f 78 25 2b  36 30 30 2c 6f 79 25 2b  |,16,ox%+600,oy%+|
0000f0a0  79 33 25 0d 51 40 06 20  cc 0d 51 4a 37 20 20 c8  |y3%.Q@. ..QJ7  .|
0000f0b0  99 22 46 6f 6e 74 5f 50  61 69 6e 74 22 2c 2c 6d  |."Font_Paint",,m|
0000f0c0  65 73 73 61 67 65 24 28  31 29 2c 31 36 2c 6f 78  |essage$(1),16,ox|
0000f0d0  25 2b 36 30 30 2c 6f 79  25 2b 79 33 25 2b 37 35  |%+600,oy%+y3%+75|
0000f0e0  0d 51 54 34 20 20 c8 99  22 46 6f 6e 74 5f 50 61  |.QT4  .."Font_Pa|
0000f0f0  69 6e 74 22 2c 2c 6d 65  73 73 61 67 65 24 28 32  |int",,message$(2|
0000f100  29 2c 31 36 2c 6f 78 25  2b 36 30 30 2c 6f 79 25  |),16,ox%+600,oy%|
0000f110  2b 79 33 25 0d 51 5e 06  20 cd 0d 51 68 29 20 c8  |+y3%.Q^. ..Qh) .|
0000f120  99 22 57 69 6d 70 5f 47  65 74 52 65 63 74 61 6e  |."Wimp_GetRectan|
0000f130  67 6c 65 22 2c 2c 62 6c  6f 63 6b 25 20 b8 20 66  |gle",,block% . f|
0000f140  6c 67 25 0d 51 72 05 ce  0d 51 7c 05 e1 0d 51 86  |lg%.Qr...Q|...Q.|
0000f150  04 0d 51 90 04 0d 51 9a  1a dd 20 f2 6d 65 73 73  |..Q...Q... .mess|
0000f160  61 67 65 5f 73 70 72 69  74 65 5f 62 61 63 6b 0d  |age_sprite_back.|
0000f170  51 a4 15 ea 20 72 30 25  2c 72 31 25 2c 72 32 25  |Q... r0%,r1%,r2%|
0000f180  2c 72 33 25 0d 51 ae 1b  c8 99 22 46 6f 6e 74 5f  |,r3%.Q...."Font_|
0000f190  53 65 74 46 6f 6e 74 22  2c 46 6d 65 73 73 25 0d  |SetFont",Fmess%.|
0000f1a0  51 b8 3d c8 99 22 4f 53  5f 53 70 72 69 74 65 4f  |Q.=.."OS_SpriteO|
0000f1b0  70 22 2c 26 31 33 43 2c  73 61 72 65 61 25 2c 22  |p",&13C,sarea%,"|
0000f1c0  6d 65 73 73 61 67 65 22  2c 31 20 b8 20 72 30 25  |message",1 . r0%|
0000f1d0  2c 72 31 25 2c 72 32 25  2c 72 33 25 0d 51 c2 16  |,r1%,r2%,r3%.Q..|
0000f1e0  f2 6d 65 73 73 5f 73 70  72 69 74 65 5f 6c 69 6e  |.mess_sprite_lin|
0000f1f0  65 73 0d 51 cc 04 0d 51  d6 21 c8 99 22 57 69 6d  |es.Q...Q.!.."Wim|
0000f200  70 5f 53 65 74 46 6f 6e  74 43 6f 6c 6f 75 72 73  |p_SetFontColours|
0000f210  22 2c 2c 30 2c 31 31 0d  51 e0 16 e7 20 6d 65 73  |",,0,11.Q... mes|
0000f220  73 61 67 65 24 28 32 29  3d 22 22 20 8c 0d 51 ea  |sage$(2)="" ..Q.|
0000f230  28 20 c8 99 22 46 6f 6e  74 5f 50 61 69 6e 74 22  |( .."Font_Paint"|
0000f240  2c 2c 6d 65 73 73 61 67  65 24 28 31 29 2c 31 36  |,,message$(1),16|
0000f250  2c 30 2c 32 34 0d 51 f4  05 cc 0d 51 fe 29 20 c8  |,0,24.Q....Q.) .|
0000f260  99 22 46 6f 6e 74 5f 50  61 69 6e 74 22 2c 2c 6d  |."Font_Paint",,m|
0000f270  65 73 73 61 67 65 24 28  31 29 2c 31 36 2c 30 2c  |essage$(1),16,0,|
0000f280  31 30 33 0d 52 08 28 20  c8 99 22 46 6f 6e 74 5f  |103.R.( .."Font_|
0000f290  50 61 69 6e 74 22 2c 2c  6d 65 73 73 61 67 65 24  |Paint",,message$|
0000f2a0  28 32 29 2c 31 36 2c 30  2c 32 34 0d 52 12 05 cd  |(2),16,0,24.R...|
0000f2b0  0d 52 1c 23 c8 99 22 4f  53 5f 53 70 72 69 74 65  |.R.#.."OS_Sprite|
0000f2c0  4f 70 22 2c 72 30 25 2c  72 31 25 2c 72 32 25 2c  |Op",r0%,r1%,r2%,|
0000f2d0  72 33 25 0d 52 26 1c c8  99 22 46 6f 6e 74 5f 4c  |r3%.R&..."Font_L|
0000f2e0  6f 73 65 46 6f 6e 74 22  2c 46 6d 65 73 73 25 0d  |oseFont",Fmess%.|
0000f2f0  52 30 05 e1 0d 52 3a 04  0d 52 44 04 0d 52 4e 18  |R0...R:..RD..RN.|
0000f300  dd 20 f2 6d 65 73 73 5f  73 70 72 69 74 65 5f 6c  |. .mess_sprite_l|
0000f310  69 6e 65 73 0d 52 58 2a  c8 99 22 57 69 6d 70 5f  |ines.RX*.."Wimp_|
0000f320  53 65 74 43 6f 6c 6f 75  72 22 2c 30 3a c8 93 20  |SetColour",0:.. |
0000f330  c8 90 20 30 2c 30 2c 36  38 30 2c 31 36 38 0d 52  |.. 0,0,680,168.R|
0000f340  62 19 c8 99 22 57 69 6d  70 5f 53 65 74 43 6f 6c  |b..."Wimp_SetCol|
0000f350  6f 75 72 22 2c 31 35 0d  52 6c 27 e3 20 78 25 3d  |our",15.Rl'. x%=|
0000f360  30 20 b8 20 36 37 35 20  88 20 37 35 3a ec 20 78  |0 . 675 . 75:. x|
0000f370  25 2c 30 3a df 20 78 25  2c 31 36 38 3a ed 0d 52  |%,0:. x%,168:..R|
0000f380  76 30 e3 20 79 25 3d 32  35 20 b8 20 31 37 35 20  |v0. y%=25 . 175 |
0000f390  88 20 37 35 3a ec 20 30  2c 79 25 2d 31 2e 35 3a  |. 75:. 0,y%-1.5:|
0000f3a0  df 20 36 38 30 2c 79 25  2d 31 2e 35 3a ed 0d 52  |. 680,y%-1.5:..R|
0000f3b0  80 05 e1 0d 52 8a 04 0d  52 94 04 0d 52 9e 20 dd  |....R...R...R. .|
0000f3c0  20 f2 6d 65 73 73 61 67  65 5f 6d 6f 64 65 5f 69  | .message_mode_i|
0000f3d0  6e 64 65 70 65 6e 64 61  6e 63 65 0d 52 a8 39 ea  |ndependance.R.9.|
0000f3e0  20 77 4f 53 25 2c 68 4f  53 25 2c 77 50 25 2c 68  | wOS%,hOS%,wP%,h|
0000f3f0  50 25 2c 72 30 25 2c 72  31 25 2c 72 32 25 2c 72  |P%,r0%,r1%,r2%,r|
0000f400  33 25 3a 77 4f 53 25 3d  36 38 30 3a 68 4f 53 25  |3%:wOS%=680:hOS%|
0000f410  3d 31 36 38 0d 52 b2 24  f2 6f 73 5f 74 6f 5f 70  |=168.R.$.os_to_p|
0000f420  69 78 65 6c 73 28 77 4f  53 25 2c 68 4f 53 25 2c  |ixels(wOS%,hOS%,|
0000f430  77 50 25 2c 68 50 25 29  0d 52 bc 35 c8 99 22 4f  |wP%,hP%).R.5.."O|
0000f440  53 5f 53 70 72 69 74 65  4f 70 22 2c 26 31 30 46  |S_SpriteOp",&10F|
0000f450  2c 73 61 72 65 61 25 2c  22 6d 65 73 73 61 67 65  |,sarea%,"message|
0000f460  22 2c 31 2c 77 50 25 2c  68 50 25 2c eb 0d 52 c6  |",1,wP%,hP%,..R.|
0000f470  05 e1 0d 52 d0 04 0d 52  da 04 0d 52 e4 18 dd 20  |...R...R...R... |
0000f480  f2 73 61 76 65 5f 73 75  6d 28 73 6f 75 72 63 65  |.save_sum(source|
0000f490  24 29 0d 52 ee 0e ea 20  64 25 2c 72 65 73 70 25  |$).R... d%,resp%|
0000f4a0  0d 52 f8 5b 50 63 6f 75  6e 74 25 20 2b 3d 31 3a  |.R.[Pcount% +=1:|
0000f4b0  50 73 61 76 65 25 3d 2d  31 3a 50 6f 70 25 28 50  |Psave%=-1:Pop%(P|
0000f4c0  63 6f 75 6e 74 25 29 3d  6f 70 65 72 61 74 6f 72  |count%)=operator|
0000f4d0  25 28 4e 61 6d 65 4e 6f  25 29 3a 50 64 65 63 25  |%(NameNo%):Pdec%|
0000f4e0  28 50 63 6f 75 6e 74 25  29 3d 64 65 63 69 6d 61  |(Pcount%)=decima|
0000f4f0  6c 25 28 4e 61 6d 65 4e  6f 25 29 0d 53 02 20 50  |l%(NameNo%).S. P|
0000f500  6c 69 6d 51 25 28 50 63  6f 75 6e 74 25 29 3d a4  |limQ%(Pcount%)=.|
0000f510  71 75 65 73 74 5f 6c 69  6d 69 74 0d 53 0c 21 50  |quest_limit.S.!P|
0000f520  6c 69 6d 41 25 28 50 63  6f 75 6e 74 25 29 3d a4  |limA%(Pcount%)=.|
0000f530  61 6e 73 77 65 72 5f 6c  69 6d 69 74 0d 53 16 04  |answer_limit.S..|
0000f540  0d 53 20 0e e3 20 64 25  3d 30 20 b8 20 34 0d 53  |.S .. d%=0 . 4.S|
0000f550  2a 3e 20 50 64 69 67 31  24 28 50 63 6f 75 6e 74  |*> Pdig1$(Pcount|
0000f560  25 2c 64 25 29 3d 64 69  67 31 24 28 64 25 29 3a  |%,d%)=dig1$(d%):|
0000f570  50 64 69 67 32 24 28 50  63 6f 75 6e 74 25 2c 64  |Pdig2$(Pcount%,d|
0000f580  25 29 3d 64 69 67 32 24  28 64 25 29 0d 53 34 05  |%)=dig2$(d%).S4.|
0000f590  ed 0d 53 3e 04 0d 53 48  11 e7 20 50 63 6f 75 6e  |..S>..SH.. Pcoun|
0000f5a0  74 25 3d 39 20 8c 0d 53  52 51 20 e7 20 73 6f 75  |t%=9 ..SRQ . sou|
0000f5b0  72 63 65 24 3d 22 53 22  20 8c 20 50 32 68 61 6e  |rce$="S" . P2han|
0000f5c0  64 6c 65 25 3d a4 72 65  6c 61 74 69 76 65 5f 77  |dle%=.relative_w|
0000f5d0  69 6e 64 6f 77 28 68 61  6e 64 6c 65 25 28 67 61  |indow(handle%(ga|
0000f5e0  6d 65 25 29 2c 50 32 68  61 6e 64 6c 65 25 2c 39  |me%),P2handle%,9|
0000f5f0  30 30 2c 34 30 36 29 0d  53 5c 22 20 e7 20 73 6f  |00,406).S\" . so|
0000f600  75 72 63 65 24 3d 22 50  22 20 8c 20 f2 73 75 6d  |urce$="P" . .sum|
0000f610  5f 70 72 69 6e 74 6f 75  74 0d 53 66 05 cd 0d 53  |_printout.Sf...S|
0000f620  70 05 e1 0d 53 7a 04 0d  53 84 04 0d 53 8e 15 dd  |p...Sz..S...S...|
0000f630  20 f2 70 72 69 6e 74 5f  6f 75 74 5f 73 75 6d 73  | .print_out_sums|
0000f640  0d 53 98 1b ea 20 73 74  61 72 74 25 3a 73 74 61  |.S... start%:sta|
0000f650  72 74 25 3d 50 63 6f 75  6e 74 25 0d 53 a2 10 63  |rt%=Pcount%.S..c|
0000f660  61 72 5f 64 69 67 25 28  29 3d 30 0d 53 ac 21 e7  |ar_dig%()=0.S.!.|
0000f670  20 50 63 6f 75 6e 74 25  3d 39 20 8c 20 f2 73 75  | Pcount%=9 . .su|
0000f680  6d 5f 70 72 69 6e 74 6f  75 74 3a e1 0d 53 b6 05  |m_printout:..S..|
0000f690  f5 0d 53 c0 50 20 e7 20  42 6f 74 68 4f 70 25 28  |..S.P . BothOp%(|
0000f6a0  4e 61 6d 65 4e 6f 25 29  3d 2d 31 20 8c 20 6f 70  |NameNo%)=-1 . op|
0000f6b0  65 72 61 74 6f 72 25 28  4e 61 6d 65 4e 6f 25 29  |erator%(NameNo%)|
0000f6c0  3d 32 2b 28 50 63 6f 75  6e 74 25 2d 73 74 61 72  |=2+(Pcount%-star|
0000f6d0  74 25 3c 3d 28 38 2d 73  74 61 72 74 25 29 2f 32  |t%<=(8-start%)/2|
0000f6e0  29 0d 53 ca 57 20 e7 20  6f 70 65 72 61 74 6f 72  |).S.W . operator|
0000f6f0  25 28 4e 61 6d 65 4e 6f  25 29 3d 31 20 8c 20 f2  |%(NameNo%)=1 . .|
0000f700  6d 61 6b 65 5f 61 64 64  28 41 6c 65 76 65 6c 25  |make_add(Alevel%|
0000f710  28 4e 61 6d 65 4e 6f 25  29 29 20 8b 20 f2 6d 61  |(NameNo%)) . .ma|
0000f720  6b 65 5f 73 75 62 28 53  6c 65 76 65 6c 25 28 4e  |ke_sub(Slevel%(N|
0000f730  61 6d 65 4e 6f 25 29 29  0d 53 d4 04 0d 53 de 1b  |ameNo%)).S...S..|
0000f740  20 f2 64 69 67 69 74 73  28 6e 75 6d 31 25 2c 64  | .digits(num1%,d|
0000f750  69 67 31 24 28 29 29 0d  53 e8 1b 20 f2 64 69 67  |ig1$()).S.. .dig|
0000f760  69 74 73 28 6e 75 6d 32  25 2c 64 69 67 32 24 28  |its(num2%,dig2$(|
0000f770  29 29 0d 53 f2 13 20 f2  73 61 76 65 5f 73 75 6d  |)).S.. .save_sum|
0000f780  28 22 50 22 29 0d 53 fc  0f fd 20 50 63 6f 75 6e  |("P").S... Pcoun|
0000f790  74 25 3d 39 0d 54 06 05  e1 0d 54 10 04 0d 54 1a  |t%=9.T....T...T.|
0000f7a0  04 0d 54 24 25 dd 20 f2  73 65 74 5f 75 70 5f 70  |..T$%. .set_up_p|
0000f7b0  72 69 6e 74 6f 75 74 28  f8 20 63 68 25 2c 68 65  |rintout(. ch%,he|
0000f7c0  69 67 68 74 25 29 0d 54  2e 10 ea 20 6c 65 66 74  |ight%).T... left|
0000f7d0  25 2c 74 6f 70 25 0d 54  38 14 c8 99 22 48 6f 75  |%,top%.T8..."Hou|
0000f7e0  72 67 6c 61 73 73 5f 4f  6e 22 0d 54 42 15 63 68  |rglass_On".TB.ch|
0000f7f0  25 3d ae 28 22 70 72 69  6e 74 65 72 3a 22 29 0d  |%=.("printer:").|
0000f800  54 4c 29 c8 99 22 50 44  72 69 76 65 72 5f 53 65  |TL).."PDriver_Se|
0000f810  6c 65 63 74 4a 6f 62 22  2c 63 68 25 2c 22 70 72  |lectJob",ch%,"pr|
0000f820  69 6e 74 5f 6a 6f 62 22  0d 54 56 2a c8 99 22 50  |int_job".TV*.."P|
0000f830  44 72 69 76 65 72 5f 50  61 67 65 53 69 7a 65 22  |Driver_PageSize"|
0000f840  20 b8 20 2c 2c 2c 6c 65  66 74 25 2c 2c 2c 74 6f  | . ,,,left%,,,to|
0000f850  70 25 0d 54 60 38 21 50  72 65 63 74 25 3d 30 3a  |p%.T`8!Prect%=0:|
0000f860  50 72 65 63 74 25 21 34  3d 68 65 69 67 68 74 25  |Prect%!4=height%|
0000f870  3a 50 72 65 63 74 25 21  38 3d 31 32 38 30 3a 50  |:Prect%!8=1280:P|
0000f880  72 65 63 74 25 21 31 32  3d 30 0d 54 6a 3b 21 50  |rect%!12=0.Tj;!P|
0000f890  74 72 61 6e 73 25 3d 31  3c 3c 31 36 3a 50 74 72  |trans%=1<<16:Ptr|
0000f8a0  61 6e 73 25 21 34 3d 30  3a 50 74 72 61 6e 73 25  |ans%!4=0:Ptrans%|
0000f8b0  21 38 3d 30 3a 50 74 72  61 6e 73 25 21 31 32 3d  |!8=0:Ptrans%!12=|
0000f8c0  31 3c 3c 31 36 0d 54 74  31 21 50 70 6c 6f 74 25  |1<<16.Tt1!Pplot%|
0000f8d0  3d 6c 65 66 74 25 2b 33  36 30 30 30 3a 50 70 6c  |=left%+36000:Ppl|
0000f8e0  6f 74 25 21 34 3d 74 6f  70 25 2b 68 65 69 67 68  |ot%!4=top%+heigh|
0000f8f0  74 25 2a 34 30 30 0d 54  7e 3f c8 99 22 50 44 72  |t%*400.T~?.."PDr|
0000f900  69 76 65 72 5f 47 69 76  65 52 65 63 74 61 6e 67  |iver_GiveRectang|
0000f910  6c 65 22 2c 30 2c 50 72  65 63 74 25 2c 50 74 72  |le",0,Prect%,Ptr|
0000f920  61 6e 73 25 2c 50 70 6c  6f 74 25 2c 26 46 46 46  |ans%,Pplot%,&FFF|
0000f930  46 46 46 30 30 0d 54 88  05 e1 0d 54 92 04 0d 54  |FFF00.T....T...T|
0000f940  9c 04 0d 54 a6 18 dd 20  f2 65 6e 64 5f 70 72 69  |...T... .end_pri|
0000f950  6e 74 6f 75 74 28 63 68  25 29 0d 54 b0 1a c8 99  |ntout(ch%).T....|
0000f960  22 50 44 72 69 76 65 72  5f 45 6e 64 4a 6f 62 22  |"PDriver_EndJob"|
0000f970  2c 63 68 25 0d 54 ba 15  c8 99 22 48 6f 75 72 67  |,ch%.T...."Hourg|
0000f980  6c 61 73 73 5f 4f 66 66  22 0d 54 c4 09 d9 23 63  |lass_Off".T...#c|
0000f990  68 25 0d 54 ce 05 e1 0d  54 d8 04 0d 54 e2 04 0d  |h%.T....T...T...|
0000f9a0  54 ec 13 dd 20 f2 73 75  6d 5f 70 72 69 6e 74 6f  |T... .sum_printo|
0000f9b0  75 74 0d 54 f6 0e ea 20  66 6c 67 25 2c 63 68 25  |ut.T... flg%,ch%|
0000f9c0  0d 55 00 07 ea 20 85 0d  55 0a 55 ee 20 85 20 ea  |.U... ..U.U. . .|
0000f9d0  3a f7 20 85 3a c8 99 22  50 44 72 69 76 65 72 5f  |:. .:.."PDriver_|
0000f9e0  41 62 6f 72 74 4a 6f 62  22 2c 63 68 25 3a d9 23  |AbortJob",ch%:.#|
0000f9f0  63 68 25 3a c8 99 22 48  6f 75 72 67 6c 61 73 73  |ch%:.."Hourglass|
0000fa00  5f 4f 66 66 22 3a f2 65  72 72 6f 72 28 22 4d 61  |_Off":.error("Ma|
0000fa10  74 68 73 5f 74 61 73 6b  22 29 3a e1 0d 55 14 04  |ths_task"):..U..|
0000fa20  0d 55 1e 2a f2 73 65 74  5f 75 70 5f 70 72 69 6e  |.U.*.set_up_prin|
0000fa30  74 6f 75 74 28 63 68 25  2c a4 68 65 69 67 68 74  |tout(ch%,.height|
0000fa40  28 50 63 6f 75 6e 74 25  29 29 0d 55 28 04 0d 55  |(Pcount%)).U(..U|
0000fa50  32 2c c8 99 22 50 44 72  69 76 65 72 5f 44 72 61  |2,.."PDriver_Dra|
0000fa60  77 50 61 67 65 22 2c 31  2c 62 6c 6f 63 6b 25 2c  |wPage",1,block%,|
0000fa70  30 2c 30 20 b8 20 66 6c  67 25 0d 55 3c 0b c8 95  |0,0 . flg%.U<...|
0000fa80  20 66 6c 67 25 0d 55 46  12 20 f2 70 72 69 6e 74  | flg%.UF. .print|
0000fa90  6f 75 74 5f 73 75 6d 0d  55 50 2c 20 c8 99 22 50  |out_sum.UP, .."P|
0000faa0  44 72 69 76 65 72 5f 47  65 74 52 65 63 74 61 6e  |Driver_GetRectan|
0000fab0  67 6c 65 22 2c 2c 62 6c  6f 63 6b 25 20 b8 20 66  |gle",,block% . f|
0000fac0  6c 67 25 0d 55 5a 05 ce  0d 55 64 16 f2 65 6e 64  |lg%.UZ...Ud..end|
0000fad0  5f 70 72 69 6e 74 6f 75  74 28 63 68 25 29 0d 55  |_printout(ch%).U|
0000fae0  6e 07 f7 20 85 0d 55 78  05 e1 0d 55 82 04 0d 55  |n.. ..Ux...U...U|
0000faf0  8c 04 0d 55 96 24 dd 20  a4 70 72 69 6e 74 64 69  |...U.$. .printdi|
0000fb00  67 78 28 78 25 2c 64 25  29 3d 78 25 2b 37 35 2a  |gx(x%,d%)=x%+75*|
0000fb10  28 34 2d 64 25 29 0d 55  a0 04 0d 55 aa 11 dd 20  |(4-d%).U...U... |
0000fb20  a4 73 75 6d 59 28 70 6f  73 25 29 0d 55 b4 17 e7  |.sumY(pos%).U...|
0000fb30  20 70 6f 73 25 3e 34 20  8c 20 70 6f 73 25 20 2d  | pos%>4 . pos% -|
0000fb40  3d 35 0d 55 be 11 3d 79  32 25 2d 33 30 30 2a 70  |=5.U..=y2%-300*p|
0000fb50  6f 73 25 0d 55 c8 04 0d  55 d2 21 dd 20 a4 73 75  |os%.U...U.!. .su|
0000fb60  6d 58 28 70 6f 73 25 29  3d 37 37 2d 36 37 35 2a  |mX(pos%)=77-675*|
0000fb70  28 70 6f 73 25 3e 34 29  0d 55 dc 04 0d 55 e6 12  |(pos%>4).U...U..|
0000fb80  dd 20 a4 68 65 69 67 68  74 28 6e 6f 25 29 0d 55  |. .height(no%).U|
0000fb90  f0 13 e7 20 6e 6f 25 3e  34 20 8c 20 6e 6f 25 3d  |... no%>4 . no%=|
0000fba0  34 0d 55 fa 11 3d 2d 36  30 30 2d 33 30 30 2a 6e  |4.U..=-600-300*n|
0000fbb0  6f 25 0d 56 04 04 0d 56  0e 04 0d 56 18 13 dd 20  |o%.V...V...V... |
0000fbc0  f2 70 72 69 6e 74 6f 75  74 5f 73 75 6d 0d 56 22  |.printout_sum.V"|
0000fbd0  33 ea 20 78 25 2c 64 25  2c 73 79 6d 62 25 2c 73  |3. x%,d%,symb%,s|
0000fbe0  79 6d 62 24 2c 63 6f 6c  78 25 2c 6c 69 6d 51 25  |ymb$,colx%,limQ%|
0000fbf0  2c 59 32 25 2c 59 25 2c  59 30 25 2c 73 75 6d 25  |,Y2%,Y%,Y0%,sum%|
0000fc00  0d 56 2c 25 c8 99 22 43  6f 6c 6f 75 72 54 72 61  |.V,%.."ColourTra|
0000fc10  6e 73 5f 53 65 74 47 43  4f 4c 22 2c 26 33 33 33  |ns_SetGCOL",&333|
0000fc20  33 33 33 30 30 0d 56 36  0a f4 20 47 72 69 64 0d  |33300.V6.. Grid.|
0000fc30  56 40 16 e3 20 78 25 3d  30 20 b8 20 31 32 30 30  |V@.. x%=0 . 1200|
0000fc40  20 88 20 37 35 0d 56 4a  29 20 ec 20 78 25 2c 31  | . 75.VJ) . x%,1|
0000fc50  35 30 2a 28 78 25 3e 30  20 80 20 78 25 3c 31 32  |50*(x%>0 . x%<12|
0000fc60  30 30 29 3a df 20 78 25  2c 2d 31 37 32 35 0d 56  |00):. x%,-1725.V|
0000fc70  54 05 ed 0d 56 5e 18 e3  20 79 25 3d 30 20 b8 20  |T...V^.. y%=0 . |
0000fc80  2d 31 37 32 35 20 88 20  2d 37 35 0d 56 68 18 20  |-1725 . -75.Vh. |
0000fc90  c8 93 20 c8 90 20 30 2c  79 25 2d 31 2c 31 32 30  |.. .. 0,y%-1,120|
0000fca0  30 2c 31 0d 56 72 05 ed  0d 56 7c 04 0d 56 86 1d  |0,1.Vr...V|..V..|
0000fcb0  c8 99 22 43 6f 6c 6f 75  72 54 72 61 6e 73 5f 53  |.."ColourTrans_S|
0000fcc0  65 74 47 43 4f 4c 22 2c  30 0d 56 90 31 c8 99 22  |etGCOL",0.V.1.."|
0000fcd0  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 53 65 74 46  |ColourTrans_SetF|
0000fce0  6f 6e 74 43 6f 6c 6f 75  72 73 22 2c 2c 26 46 46  |ontColours",,&FF|
0000fcf0  46 46 46 46 30 30 2c 30  2c 36 0d 56 9a 1b c8 99  |FFFF00,0,6.V....|
0000fd00  22 46 6f 6e 74 5f 53 65  74 46 6f 6e 74 22 2c 46  |"Font_SetFont",F|
0000fd10  68 65 61 64 25 0d 56 a4  04 0d 56 ae 2f c8 99 22  |head%.V...V./.."|
0000fd20  46 6f 6e 74 5f 50 61 69  6e 74 22 2c 2c 22 20 22  |Font_Paint",," "|
0000fd30  2b 6e 61 6d 65 24 28 4e  61 6d 65 4e 6f 25 29 2c  |+name$(NameNo%),|
0000fd40  31 36 2c 30 2c 2d 37 35  0d 56 b8 2c c8 99 22 46  |16,0,-75.V.,.."F|
0000fd50  6f 6e 74 5f 50 61 69 6e  74 22 2c 2c 22 20 22 2b  |ont_Paint",," "+|
0000fd60  24 6c 6f 61 64 62 75 66  66 25 2c 31 36 2c 30 2c  |$loadbuff%,16,0,|
0000fd70  2d 31 35 30 0d 56 c2 24  c8 99 22 46 6f 6e 74 5f  |-150.V.$.."Font_|
0000fd80  50 61 69 6e 74 22 2c 2c  a4 64 61 74 65 2c 31 36  |Paint",,.date,16|
0000fd90  2c 38 37 30 2c 2d 37 35  0d 56 cc 04 0d 56 d6 16  |,870,-75.V...V..|
0000fda0  e3 20 73 75 6d 25 3d 30  20 b8 20 50 63 6f 75 6e  |. sum%=0 . Pcoun|
0000fdb0  74 25 0d 56 e0 2b 20 e7  20 50 6f 70 25 28 73 75  |t%.V.+ . Pop%(su|
0000fdc0  6d 25 29 3d 31 20 8c 20  73 79 6d 62 24 3d 22 2b  |m%)=1 . symb$="+|
0000fdd0  22 20 8b 20 73 79 6d 62  24 3d 22 2d 22 0d 56 ea  |" . symb$="-".V.|
0000fde0  36 20 59 31 25 3d a4 73  75 6d 59 28 73 75 6d 25  |6 Y1%=.sumY(sum%|
0000fdf0  29 3a 59 32 25 3d 59 31  25 2d 37 35 3a 59 33 25  |):Y2%=Y1%-75:Y3%|
0000fe00  3d 59 31 25 2d 31 35 30  3a 59 30 25 3d 59 31 25  |=Y1%-150:Y0%=Y1%|
0000fe10  2b 39 32 0d 56 f4 14 20  58 31 25 3d a4 73 75 6d  |+92.V.. X1%=.sum|
0000fe20  58 28 73 75 6d 25 29 0d  56 fe 48 20 61 6e 73 6c  |X(sum%).V.H ansl|
0000fe30  69 6d 25 3d 50 6c 69 6d  41 25 28 73 75 6d 25 29  |im%=PlimA%(sum%)|
0000fe40  3a 6c 69 6d 51 25 3d 50  6c 69 6d 51 25 28 73 75  |:limQ%=PlimQ%(su|
0000fe50  6d 25 29 3a 73 79 6d 62  25 3d a4 70 72 69 6e 74  |m%):symb%=.print|
0000fe60  64 69 67 78 28 58 31 25  2c 6c 69 6d 51 25 29 0d  |digx(X1%,limQ%).|
0000fe70  57 08 04 0d 57 12 43 20  e7 20 50 64 69 67 31 24  |W...W.C . Pdig1$|
0000fe80  28 73 75 6d 25 2c 6c 69  6d 51 25 29 3c 3e 22 22  |(sum%,limQ%)<>""|
0000fe90  20 84 20 50 64 69 67 32  24 28 73 75 6d 25 2c 6c  | . Pdig2$(sum%,l|
0000fea0  69 6d 51 25 29 3c 3e 22  22 20 8c 20 73 79 6d 62  |imQ%)<>"" . symb|
0000feb0  25 20 2d 3d 37 35 0d 57  1c 40 20 e7 20 50 64 69  |% -=75.W.@ . Pdi|
0000fec0  67 31 24 28 73 75 6d 25  2c 6c 69 6d 51 25 29 3d  |g1$(sum%,limQ%)=|
0000fed0  22 22 20 80 20 50 64 69  67 32 24 28 73 75 6d 25  |"" . Pdig2$(sum%|
0000fee0  2c 6c 69 6d 51 25 29 3d  22 22 20 8c 20 6c 69 6d  |,limQ%)="" . lim|
0000fef0  51 25 20 2d 3d 31 0d 57  26 04 0d 57 30 1b 20 c8  |Q% -=1.W&..W0. .|
0000ff00  99 22 46 6f 6e 74 5f 53  65 74 46 6f 6e 74 22 2c  |."Font_SetFont",|
0000ff10  46 73 75 6d 25 0d 57 3a  40 20 c8 99 22 46 6f 6e  |Fsum%.W:@ .."Fon|
0000ff20  74 5f 50 61 69 6e 74 22  2c 2c 73 79 6d 62 24 2c  |t_Paint",,symb$,|
0000ff30  31 36 2c 73 79 6d 62 25  2b 31 38 2c 59 32 25 2b  |16,symb%+18,Y2%+|
0000ff40  34 3a f4 20 50 6c 75 73  2f 6d 69 6e 75 73 20 73  |4:. Plus/minus s|
0000ff50  79 6d 62 6f 6c 0d 57 44  04 0d 57 4e 13 20 f4 20  |ymbol.WD..WN. . |
0000ff60  45 71 75 61 6c 73 20 6c  69 6e 65 73 0d 57 58 4b  |Equals lines.WXK|
0000ff70  20 e7 20 50 6f 70 25 28  73 75 6d 25 29 3d 31 20  | . Pop%(sum%)=1 |
0000ff80  8c 20 78 25 3d a4 70 72  69 6e 74 64 69 67 78 28  |. x%=.printdigx(|
0000ff90  58 31 25 2c 61 6e 73 6c  69 6d 25 29 20 8b 20 78  |X1%,anslim%) . x|
0000ffa0  25 3d a4 70 72 69 6e 74  64 69 67 78 28 58 31 25  |%=.printdigx(X1%|
0000ffb0  2c 6c 69 6d 51 25 29 0d  57 62 2a 20 e7 20 78 25  |,limQ%).Wb* . x%|
0000ffc0  3e 34 35 30 20 8c 20 45  51 77 25 3d 31 31 32 35  |>450 . EQw%=1125|
0000ffd0  2d 78 25 20 8b 20 45 51  77 25 3d 34 35 30 2d 78  |-x% . EQw%=450-x|
0000ffe0  25 0d 57 6c 1b 20 c8 93  20 c8 90 20 78 25 2c 59  |%.Wl. .. .. x%,Y|
0000fff0  33 25 2b 36 33 2c 45 51  77 25 2c 38 0d 57 76 1b  |3%+63,EQw%,8.Wv.|
00010000  20 c8 93 20 c8 90 20 78  25 2c 59 33 25 2d 31 32  | .. .. x%,Y3%-12|
00010010  2c 45 51 77 25 2c 38 0d  57 80 04 0d 57 8a 0f 20  |,EQw%,8.W...W.. |
00010020  e3 20 64 25 3d 30 20 b8  20 34 0d 57 94 1e 20 20  |. d%=0 . 4.W..  |
00010030  78 25 3d a4 70 72 69 6e  74 64 69 67 78 28 58 31  |x%=.printdigx(X1|
00010040  25 2c 64 25 29 2b 31 38  0d 57 9e 2f 20 20 c8 99  |%,d%)+18.W./  ..|
00010050  22 46 6f 6e 74 5f 50 61  69 6e 74 22 2c 2c 50 64  |"Font_Paint",,Pd|
00010060  69 67 31 24 28 73 75 6d  25 2c 64 25 29 2c 31 36  |ig1$(sum%,d%),16|
00010070  2c 78 25 2c 59 31 25 0d  57 a8 2f 20 20 c8 99 22  |,x%,Y1%.W./  .."|
00010080  46 6f 6e 74 5f 50 61 69  6e 74 22 2c 2c 50 64 69  |Font_Paint",,Pdi|
00010090  67 32 24 28 73 75 6d 25  2c 64 25 29 2c 31 36 2c  |g2$(sum%,d%),16,|
000100a0  78 25 2c 59 32 25 0d 57  b2 06 20 ed 0d 57 bc 04  |x%,Y2%.W.. ..W..|
000100b0  0d 57 c6 14 20 e7 20 50  64 65 63 25 28 73 75 6d  |.W.. . Pdec%(sum|
000100c0  25 29 20 8c 0d 57 d0 1c  20 20 78 25 3d a4 70 72  |%) ..W..  x%=.pr|
000100d0  69 6e 74 64 69 67 78 28  58 31 25 2c 31 29 2d 34  |intdigx(X1%,1)-4|
000100e0  0d 57 da 26 20 20 c8 99  22 46 6f 6e 74 5f 50 61  |.W.&  .."Font_Pa|
000100f0  69 6e 74 22 2c 2c 22 2e  22 2c 31 36 2c 78 25 2c  |int",,".",16,x%,|
00010100  59 31 25 2b 32 38 0d 57  e4 26 20 20 c8 99 22 46  |Y1%+28.W.&  .."F|
00010110  6f 6e 74 5f 50 61 69 6e  74 22 2c 2c 22 2e 22 2c  |ont_Paint",,".",|
00010120  31 36 2c 78 25 2c 59 32  25 2b 32 38 0d 57 ee 06  |16,x%,Y2%+28.W..|
00010130  20 cd 0d 57 f8 04 0d 58  02 54 20 e7 20 28 73 75  | ..W...X.T . (su|
00010140  6d 25 3d 30 20 84 20 73  75 6d 25 3d 35 20 84 20  |m%=0 . sum%=5 . |
00010150  50 64 65 63 25 28 73 75  6d 25 29 3c 3e 50 64 65  |Pdec%(sum%)<>Pde|
00010160  63 25 28 73 75 6d 25 2b  28 73 75 6d 25 3e 30 29  |c%(sum%+(sum%>0)|
00010170  29 29 20 80 20 63 6f 6c  6e 61 6d 65 25 28 4e 61  |)) . colname%(Na|
00010180  6d 65 4e 6f 25 29 3d 31  20 8c 0d 58 0c 14 20 20  |meNo%)=1 ..X..  |
00010190  f4 20 43 6f 6c 75 6d 6e  20 6e 61 6d 65 73 0d 58  |. Column names.X|
000101a0  16 60 20 20 e7 20 50 64  65 63 25 28 73 75 6d 25  |.`  . Pdec%(sum%|
000101b0  29 3d 30 20 8c 20 63 6f  6c 6e 61 6d 65 24 28 29  |)=0 . colname$()|
000101c0  3d 22 75 22 2c 22 74 22  2c 22 68 22 2c 22 74 68  |="u","t","h","th|
000101d0  22 2c 22 74 20 74 68 22  20 8b 20 63 6f 6c 6e 61  |","t th" . colna|
000101e0  6d 65 24 28 29 3d 22 2f  31 30 30 22 2c 22 2f 31  |me$()="/100","/1|
000101f0  30 22 2c 22 75 22 2c 22  74 22 2c 22 68 22 0d 58  |0","u","t","h".X|
00010200  20 10 20 20 e3 20 64 25  3d 30 20 b8 20 34 0d 58  | .  . d%=0 . 4.X|
00010210  2a 65 20 20 20 e7 20 63  6f 6c 6e 61 6d 65 24 28  |*e   . colname$(|
00010220  64 25 29 3d 22 2f 31 30  30 22 20 84 20 63 6f 6c  |d%)="/100" . col|
00010230  6e 61 6d 65 24 28 64 25  29 3d 22 2f 31 30 22 20  |name$(d%)="/10" |
00010240  8c 20 c8 99 22 46 6f 6e  74 5f 53 65 74 46 6f 6e  |. .."Font_SetFon|
00010250  74 22 2c 46 63 6f 6c 32  25 20 8b 20 c8 99 22 46  |t",Fcol2% . .."F|
00010260  6f 6e 74 5f 53 65 74 46  6f 6e 74 22 2c 46 63 6f  |ont_SetFont",Fco|
00010270  6c 31 25 0d 58 34 3a 20  20 20 63 6f 6c 78 25 3d  |l1%.X4:   colx%=|
00010280  a4 70 72 69 6e 74 64 69  67 78 28 58 31 25 2c 64  |.printdigx(X1%,d|
00010290  25 29 2b 28 37 35 2d 31  38 2a a9 20 63 6f 6c 6e  |%)+(75-18*. coln|
000102a0  61 6d 65 24 28 64 25 29  29 2f 32 2d 32 0d 58 3e  |ame$(d%))/2-2.X>|
000102b0  48 20 20 20 e7 20 63 6f  6c 6e 61 6d 65 25 28 4e  |H   . colname%(N|
000102c0  61 6d 65 4e 6f 25 29 3d  31 20 8c 20 c8 99 22 46  |ameNo%)=1 . .."F|
000102d0  6f 6e 74 5f 50 61 69 6e  74 22 2c 2c 63 6f 6c 6e  |ont_Paint",,coln|
000102e0  61 6d 65 24 28 64 25 29  2c 31 36 2c 63 6f 6c 78  |ame$(d%),16,colx|
000102f0  25 2c 59 30 25 0d 58 48  07 20 20 ed 0d 58 52 06  |%,Y0%.XH.  ..XR.|
00010300  20 cd 0d 58 5c 04 0d 58  66 05 ed 0d 58 70 05 e1  | ..X\..Xf...Xp..|
00010310  0d 58 7a 04 0d 58 84 04  0d 58 8e 10 dd 20 f2 73  |.Xz..X...X... .s|
00010320  65 74 5f 66 6f 6e 74 73  0d 58 98 0f ea 20 72 65  |et_fonts.X... re|
00010330  73 70 25 3a ea 20 85 0d  58 a2 67 ee 20 85 20 ea  |sp%:. ..X.g. . .|
00010340  3a f7 20 85 3a 72 65 73  70 25 3d a4 65 72 72 6f  |:. .:resp%=.erro|
00010350  72 5f 6d 65 73 73 61 67  65 28 22 46 6f 6e 74 73  |r_message("Fonts|
00010360  20 6e 6f 74 20 73 65 65  6e 2c 20 63 6c 69 63 6b  | not seen, click|
00010370  20 6f 6e 20 64 69 72 65  63 74 6f 72 79 20 21 46  | on directory !F|
00010380  6f 6e 74 73 22 2c 22 4d  61 74 68 73 42 6f 6f 6b  |onts","MathsBook|
00010390  22 2c 31 29 3a f2 65 6e  64 28 30 29 3a e0 0d 58  |",1):.end(0):..X|
000103a0  ac 36 c8 99 22 46 6f 6e  74 5f 46 69 6e 64 46 6f  |.6.."Font_FindFo|
000103b0  6e 74 22 2c 2c 22 50 72  69 6d 61 72 79 2e 42 6f  |nt",,"Primary.Bo|
000103c0  6c 64 22 2c 33 33 30 2c  33 30 30 20 b8 20 46 68  |ld",330,300 . Fh|
000103d0  65 61 64 25 0d 58 b6 35  c8 99 22 46 6f 6e 74 5f  |ead%.X.5.."Font_|
000103e0  46 69 6e 64 46 6f 6e 74  22 2c 2c 22 50 72 69 6d  |FindFont",,"Prim|
000103f0  61 72 79 2e 42 6f 6c 64  22 2c 34 35 30 2c 34 35  |ary.Bold",450,45|
00010400  30 20 b8 20 46 73 75 6d  25 0d 58 c0 36 c8 99 22  |0 . Fsum%.X.6.."|
00010410  46 6f 6e 74 5f 46 69 6e  64 46 6f 6e 74 22 2c 2c  |Font_FindFont",,|
00010420  22 50 72 69 6d 61 72 79  2e 42 6f 6c 64 22 2c 32  |"Primary.Bold",2|
00010430  35 38 2c 32 34 35 20 b8  20 46 63 6f 6c 31 25 0d  |58,245 . Fcol1%.|
00010440  58 ca 36 c8 99 22 46 6f  6e 74 5f 46 69 6e 64 46  |X.6.."Font_FindF|
00010450  6f 6e 74 22 2c 2c 22 50  72 69 6d 61 72 79 2e 42  |ont",,"Primary.B|
00010460  6f 6c 64 22 2c 32 30 30  2c 32 34 30 20 b8 20 46  |old",200,240 . F|
00010470  63 6f 6c 32 25 0d 58 cb  07 f7 20 85 0d 58 d4 05  |col2%.X... ..X..|
00010480  e1 0d 58 de 04 0d 58 e8  04 0d 58 f2 11 dd 20 f2  |..X...X...X... .|
00010490  6c 6f 73 65 5f 66 6f 6e  74 73 0d 58 fc 1c c8 99  |lose_fonts.X....|
000104a0  22 46 6f 6e 74 5f 4c 6f  73 65 46 6f 6e 74 22 2c  |"Font_LoseFont",|
000104b0  46 68 65 61 64 25 0d 59  06 1b c8 99 22 46 6f 6e  |Fhead%.Y...."Fon|
000104c0  74 5f 4c 6f 73 65 46 6f  6e 74 22 2c 46 73 75 6d  |t_LoseFont",Fsum|
000104d0  25 0d 59 10 1c c8 99 22  46 6f 6e 74 5f 4c 6f 73  |%.Y...."Font_Los|
000104e0  65 46 6f 6e 74 22 2c 46  63 6f 6c 31 25 0d 59 1a  |eFont",Fcol1%.Y.|
000104f0  1c c8 99 22 46 6f 6e 74  5f 4c 6f 73 65 46 6f 6e  |..."Font_LoseFon|
00010500  74 22 2c 46 63 6f 6c 32  25 0d 59 24 1b f2 6c 6f  |t",Fcol2%.Y$..lo|
00010510  73 65 5f 69 63 6f 6e 5f  66 6f 6e 74 73 28 66 6f  |se_icon_fonts(fo|
00010520  6e 74 25 29 0d 59 2e 05  e1 0d 59 38 04 0d 59 42  |nt%).Y....Y8..YB|
00010530  04 0d 59 4c 17 dd 20 f2  73 61 76 65 5f 66 69 6c  |..YL.. .save_fil|
00010540  65 28 66 69 6c 65 24 29  0d 59 56 20 ea 20 63 68  |e(file$).YV . ch|
00010550  25 2c 72 65 73 70 25 3a  ea 20 85 3a 6e 6f 74 73  |%,resp%:. .:nots|
00010560  61 76 65 64 4f 25 3d 30  0d 59 60 3d ee 20 85 20  |avedO%=0.Y`=. . |
00010570  ea 3a f7 20 85 3a 72 65  73 70 25 3d a4 65 72 72  |.:. .:resp%=.err|
00010580  6f 72 5f 6d 65 73 73 61  67 65 28 f6 24 2c 22 4d  |or_message(.$,"M|
00010590  61 74 68 73 5f 74 61 73  6b 22 2c 30 29 3a d9 23  |aths_task",0):.#|
000105a0  63 68 25 3a e1 0d 59 6a  2d 24 73 61 76 65 62 75  |ch%:..Yj-$savebu|
000105b0  66 66 25 3d 66 69 6c 65  24 3a f2 72 65 73 65 74  |ff%=file$:.reset|
000105c0  5f 69 63 6f 6e 28 53 56  68 61 6e 64 6c 65 25 2c  |_icon(SVhandle%,|
000105d0  31 29 0d 59 74 20 24 6c  6f 61 64 62 75 66 66 25  |1).Yt $loadbuff%|
000105e0  3d a4 67 65 74 6c 65 61  66 28 66 69 6c 65 24 2c  |=.getleaf(file$,|
000105f0  30 29 0d 59 7e 0f 63 68  25 3d ae 20 66 69 6c 65  |0).Y~.ch%=. file|
00010600  24 0d 59 88 2f f1 23 63  68 25 2c 22 67 72 6f 75  |$.Y./.#ch%,"grou|
00010610  70 41 53 22 2c 61 75 74  6f 73 61 76 65 52 25 2c  |pAS",autosaveR%,|
00010620  65 6e 70 72 69 6e 74 25  2c 73 63 72 65 65 6e 25  |enprint%,screen%|
00010630  0d 59 92 04 0d 59 9c 14  e3 20 6e 25 3d 30 20 b8  |.Y...Y... n%=0 .|
00010640  20 4e 63 6f 75 6e 74 25  0d 59 a6 14 20 f1 23 63  | Ncount%.Y.. .#c|
00010650  68 25 2c 6e 61 6d 65 24  28 6e 25 29 0d 59 b0 4e  |h%,name$(n%).Y.N|
00010660  20 d5 23 63 68 25 2c 41  6c 65 76 65 6c 25 28 6e  | .#ch%,Alevel%(n|
00010670  25 29 3a d5 23 63 68 25  2c 53 6c 65 76 65 6c 25  |%):.#ch%,Slevel%|
00010680  28 6e 25 29 3a d5 23 63  68 25 2c 4d 48 6c 65 76  |(n%):.#ch%,MHlev|
00010690  65 6c 25 28 6e 25 29 3a  d5 23 63 68 25 2c 64 65  |el%(n%):.#ch%,de|
000106a0  63 69 6d 61 6c 25 28 6e  25 29 0d 59 ba 5a 20 d5  |cimal%(n%).Y.Z .|
000106b0  23 63 68 25 2c 61 75 74  6f 25 28 6e 25 29 3a d5  |#ch%,auto%(n%):.|
000106c0  23 63 68 25 2c 61 75 74  6f 68 65 6c 70 25 28 6e  |#ch%,autohelp%(n|
000106d0  25 29 3a d5 23 63 68 25  2c 66 6f 72 63 65 25 28  |%):.#ch%,force%(|
000106e0  6e 25 29 3a d5 23 63 68  25 2c 6d 6f 64 65 25 28  |n%):.#ch%,mode%(|
000106f0  6e 25 29 3a d5 23 63 68  25 2c 74 72 69 65 73 25  |n%):.#ch%,tries%|
00010700  28 6e 25 29 0d 59 c4 04  0d 59 ce 24 20 e7 20 42  |(n%).Y...Y.$ . B|
00010710  6f 74 68 4f 70 25 28 6e  25 29 20 8c 20 6f 70 65  |othOp%(n%) . ope|
00010720  72 61 74 6f 72 25 28 6e  25 29 3d 33 0d 59 d8 f0  |rator%(n%)=3.Y..|
00010730  20 d5 23 63 68 25 2c 6f  70 65 72 61 74 6f 72 25  | .#ch%,operator%|
00010740  28 6e 25 29 3a d5 23 63  68 25 2c 6e 6f 5f 71 75  |(n%):.#ch%,no_qu|
00010750  65 73 74 25 28 6e 25 29  3a d5 23 63 68 25 2c 4e  |est%(n%):.#ch%,N|
00010760  6f 74 69 6d 65 72 25 28  6e 25 29 3a d5 23 63 68  |otimer%(n%):.#ch|
00010770  25 2c 74 69 6d 65 6c 69  6d 25 28 6e 25 29 3a d5  |%,timelim%(n%):.|
00010780  23 63 68 25 2c 63 61 6c  63 25 28 6e 25 29 3a d5  |#ch%,calc%(n%):.|
00010790  23 63 68 25 2c 70 72 69  6e 74 65 72 25 28 6e 25  |#ch%,printer%(n%|
000107a0  29 3a d5 23 63 68 25 2c  73 63 6f 72 65 25 28 6e  |):.#ch%,score%(n|
000107b0  25 29 3a d5 23 63 68 25  2c 6e 65 78 74 25 28 6e  |%):.#ch%,next%(n|
000107c0  25 29 3a d5 23 63 68 25  2c 73 74 6f 70 25 28 6e  |%):.#ch%,stop%(n|
000107d0  25 29 3a d5 23 63 68 25  2c 63 6f 6c 6e 61 6d 65  |%):.#ch%,colname|
000107e0  25 28 6e 25 29 3a d5 23  63 68 25 2c 65 73 74 69  |%(n%):.#ch%,esti|
000107f0  6d 61 74 65 25 28 6e 25  29 3a d5 23 63 68 25 2c  |mate%(n%):.#ch%,|
00010800  73 61 76 65 52 25 28 6e  25 29 3a d5 23 63 68 25  |saveR%(n%):.#ch%|
00010810  2c 73 70 65 65 63 68 25  28 6e 25 29 0d 59 e2 3d  |,speech%(n%).Y.=|
00010820  20 d5 23 63 68 25 2c 6e  65 77 6c 65 76 52 25 28  | .#ch%,newlevR%(|
00010830  6e 25 29 3a d5 23 63 68  25 2c 2d 6e 65 77 6c 65  |n%):.#ch%,-newle|
00010840  76 57 25 28 6e 25 29 3a  d5 23 63 68 25 2c 6f 77  |vW%(n%):.#ch%,ow|
00010850  6e 73 75 6d 25 28 6e 25  29 0d 59 ec 24 20 e7 20  |nsum%(n%).Y.$ . |
00010860  42 6f 74 68 4f 70 25 28  6e 25 29 20 8c 20 6f 70  |BothOp%(n%) . op|
00010870  65 72 61 74 6f 72 25 28  6e 25 29 3d 31 0d 59 f6  |erator%(n%)=1.Y.|
00010880  05 ed 0d 5a 00 09 d9 23  63 68 25 0d 5a 01 07 f7  |...Z...#ch%.Z...|
00010890  20 85 0d 5a 0a 05 e1 0d  5a 14 04 0d 5a 1e 04 0d  | ..Z....Z...Z...|
000108a0  5a 28 15 dd 20 f2 73 65  6c 65 63 74 5f 73 61 76  |Z(.. .select_sav|
000108b0  65 62 6f 78 0d 5a 32 12  c8 8e 20 62 6c 6f 63 6b  |ebox.Z2... block|
000108c0  25 21 31 36 20 ca 0d 5a  3c 32 20 c9 20 30 3a e7  |%!16 ..Z<2 . 0:.|
000108d0  20 62 6c 6f 63 6b 25 21  38 3d 36 34 20 8c 20 f2  | block%!8=64 . .|
000108e0  64 72 61 67 5f 69 63 6f  6e 28 53 56 68 61 6e 64  |drag_icon(SVhand|
000108f0  6c 65 25 2c 30 2c 35 29  0d 5a 46 38 20 c9 20 32  |le%,0,5).ZF8 . 2|
00010900  3a f2 73 61 76 65 5f 66  69 6c 65 28 24 73 61 76  |:.save_file($sav|
00010910  65 62 75 66 66 25 29 3a  f2 63 6c 6f 73 65 5f 77  |ebuff%):.close_w|
00010920  69 6e 64 6f 77 28 53 56  68 61 6e 64 6c 65 25 29  |indow(SVhandle%)|
00010930  0d 5a 50 23 20 20 20 20  20 20 20 20 f2 6f 70 65  |.ZP#        .ope|
00010940  6e 5f 77 69 6e 64 6f 77  28 53 6d 68 61 6e 64 6c  |n_window(Smhandl|
00010950  65 25 29 0d 5a 5a 05 cb  0d 5a 64 05 e1 0d 5a 6e  |e%).ZZ...Zd...Zn|
00010960  04 0d 5a 78 04 0d 5a 82  17 dd 20 f2 73 65 6c 65  |..Zx..Z... .sele|
00010970  63 74 5f 73 61 76 65 5f  74 65 78 74 0d 5a 8c 12  |ct_save_text.Z..|
00010980  c8 8e 20 62 6c 6f 63 6b  25 21 31 36 20 ca 0d 5a  |.. block%!16 ..Z|
00010990  96 33 20 c9 20 30 3a e7  20 62 6c 6f 63 6b 25 21  |.3 . 0:. block%!|
000109a0  38 3d 36 34 20 8c 20 f2  64 72 61 67 5f 69 63 6f  |8=64 . .drag_ico|
000109b0  6e 28 53 56 68 61 6e 64  6c 65 32 25 2c 30 2c 35  |n(SVhandle2%,0,5|
000109c0  29 0d 5a a0 45 20 c9 20  32 3a f2 72 65 73 75 6c  |).Z.E . 2:.resul|
000109d0  74 73 5f 74 65 78 74 5f  66 69 6c 65 28 24 73 61  |ts_text_file($sa|
000109e0  76 65 74 65 78 74 62 75  66 66 25 29 3a f2 63 6c  |vetextbuff%):.cl|
000109f0  6f 73 65 5f 77 69 6e 64  6f 77 28 53 56 68 61 6e  |ose_window(SVhan|
00010a00  64 6c 65 32 25 29 0d 5a  aa 23 20 20 20 20 20 20  |dle2%).Z.#      |
00010a10  20 20 f2 6f 70 65 6e 5f  77 69 6e 64 6f 77 28 53  |  .open_window(S|
00010a20  6d 68 61 6e 64 6c 65 25  29 0d 5a b4 05 cb 0d 5a  |mhandle%).Z....Z|
00010a30  be 05 e1 0d 5a c8 04 0d  5a d2 04 0d 5a dc 1b dd  |....Z...Z...Z...|
00010a40  20 f2 73 65 74 5f 6f 70  74 69 6f 6e 5f 76 61 72  | .set_option_var|
00010a50  69 61 62 6c 65 73 0d 5a  e6 0f ea 20 6e 25 2c 65  |iables.Z... n%,e|
00010a60  72 72 6f 72 25 0d 5a f0  17 73 63 72 65 65 6e 25  |rror%.Z..screen%|
00010a70  3d 30 3a 73 74 61 72 74  25 3d 2d 31 0d 5a fa 37  |=0:start%=-1.Z.7|
00010a80  4e 61 6d 65 4e 6f 25 3d  30 3a 4e 63 6f 75 6e 74  |NameNo%=0:Ncount|
00010a90  25 3d 30 3a 63 61 72 65  74 78 25 3d 30 3a 63 72  |%=0:caretx%=0:cr|
00010aa0  65 61 74 65 25 3d 2d 32  3a 6e 61 6d 65 24 28 29  |eate%=-2:name$()|
00010ab0  3d 22 22 0d 5b 04 27 6e  6f 74 73 61 76 65 64 4f  |="".[.'notsavedO|
00010ac0  25 3d 30 3a 73 63 72 65  65 6e 25 3d 30 3a 61 75  |%=0:screen%=0:au|
00010ad0  74 6f 73 61 76 65 52 25  3d 30 0d 5b 0e 18 24 73  |tosaveR%=0.[..$s|
00010ae0  61 76 65 62 75 66 66 25  3d 22 64 65 66 61 75 6c  |avebuff%="defaul|
00010af0  74 22 0d 5b 18 2b f2 6c  6f 61 64 5f 70 61 72 74  |t".[.+.load_part|
00010b00  28 22 3c 4f 62 65 79 24  44 69 72 3e 2e 64 65 66  |("<Obey$Dir>.def|
00010b10  61 75 6c 74 22 2c 65 72  72 6f 72 25 29 0d 5b 22  |ault",error%).["|
00010b20  28 f2 73 69 6e 67 6c 65  5f 74 69 63 6b 28 6d 65  |(.single_tick(me|
00010b30  6e 75 25 2c 37 2c 30 29  3a f2 73 65 74 5f 77 69  |nu%,7,0):.set_wi|
00010b40  6e 64 6f 77 73 0d 5b 2c  18 f2 73 65 74 5f 63 6f  |ndows.[,..set_co|
00010b50  6e 66 69 67 5f 74 69 74  6c 65 28 30 29 0d 5b 36  |nfig_title(0).[6|
00010b60  17 f2 73 65 74 5f 70 72  65 66 65 72 65 6e 63 65  |..set_preference|
00010b70  73 28 30 29 0d 5b 40 12  f2 63 6c 65 61 72 5f 77  |s(0).[@..clear_w|
00010b80  69 6e 64 6f 77 73 0d 5b  4a 05 e1 0d 5b 54 04 0d  |indows.[J...[T..|
00010b90  5b 5e 04 0d 5b 68 20 dd  20 f2 6c 6f 61 64 5f 70  |[^..[h . .load_p|
00010ba0  61 72 74 28 66 69 6c 65  24 2c f8 20 65 72 72 6f  |art(file$,. erro|
00010bb0  72 25 29 0d 5b 72 16 ea  20 63 68 25 3a ea 20 85  |r%).[r.. ch%:. .|
00010bc0  3a 65 72 72 6f 72 25 3d  30 0d 5b 7c 4c ee 20 85  |:error%=0.[|L. .|
00010bd0  3a f7 20 85 3a d9 23 63  68 25 3a 24 52 69 63 62  |:. .:.#ch%:$Ricb|
00010be0  75 66 66 25 3d 22 57 72  6f 6e 67 20 66 69 6c 65  |uff%="Wrong file|
00010bf0  2e 22 3a f2 6f 70 65 6e  5f 77 69 6e 64 6f 77 28  |.":.open_window(|
00010c00  52 68 61 6e 64 6c 65 25  29 3a 65 72 72 6f 72 25  |Rhandle%):error%|
00010c10  3d 2d 31 3a e1 0d 5b 86  0f 63 68 25 3d 8e 20 66  |=-1:..[..ch%=. f|
00010c20  69 6c 65 24 0d 5b 90 2d  e8 23 63 68 25 2c 68 65  |ile$.[.-.#ch%,he|
00010c30  61 64 65 72 24 2c 61 75  74 6f 73 61 76 65 52 25  |ader$,autosaveR%|
00010c40  2c 65 6e 70 72 69 6e 74  25 2c 73 63 72 65 65 6e  |,enprint%,screen|
00010c50  25 0d 5b 9a 5b e7 20 68  65 61 64 65 72 24 3c 3e  |%.[.[. header$<>|
00010c60  22 67 72 6f 75 70 41 53  22 20 8c 20 d9 23 63 68  |"groupAS" . .#ch|
00010c70  25 3a 24 52 69 63 62 75  66 66 25 3d 22 57 72 6f  |%:$Ricbuff%="Wro|
00010c80  6e 67 20 66 69 6c 65 2e  22 3a f2 6f 70 65 6e 5f  |ng file.":.open_|
00010c90  77 69 6e 64 6f 77 28 52  68 61 6e 64 6c 65 25 29  |window(Rhandle%)|
00010ca0  3a 65 72 72 6f 72 25 3d  2d 31 3a e1 0d 5b a4 04  |:error%=-1:..[..|
00010cb0  0d 5b ae 0e 4e 63 6f 75  6e 74 25 3d 2d 31 0d 5b  |.[..Ncount%=-1.[|
00010cc0  b8 05 f5 0d 5b c2 10 20  4e 63 6f 75 6e 74 25 20  |....[.. Ncount% |
00010cd0  2b 3d 31 0d 5b cc 19 20  e8 23 63 68 25 2c 6e 61  |+=1.[.. .#ch%,na|
00010ce0  6d 65 24 28 4e 63 6f 75  6e 74 25 29 0d 5b d6 85  |me$(Ncount%).[..|
00010cf0  20 41 6c 65 76 65 6c 25  28 4e 63 6f 75 6e 74 25  | Alevel%(Ncount%|
00010d00  29 3d 9a 23 63 68 25 3a  53 6c 65 76 65 6c 25 28  |)=.#ch%:Slevel%(|
00010d10  4e 63 6f 75 6e 74 25 29  3d 9a 23 63 68 25 3a 4d  |Ncount%)=.#ch%:M|
00010d20  48 6c 65 76 65 6c 25 28  4e 63 6f 75 6e 74 25 29  |Hlevel%(Ncount%)|
00010d30  3d 9a 23 63 68 25 3a 48  6c 65 76 65 6c 25 28 4e  |=.#ch%:Hlevel%(N|
00010d40  63 6f 75 6e 74 25 29 3d  4d 48 6c 65 76 65 6c 25  |count%)=MHlevel%|
00010d50  28 4e 63 6f 75 6e 74 25  29 3a 64 65 63 69 6d 61  |(Ncount%):decima|
00010d60  6c 25 28 4e 63 6f 75 6e  74 25 29 3d 9a 23 63 68  |l%(Ncount%)=.#ch|
00010d70  25 0d 5b e0 73 20 61 75  74 6f 25 28 4e 63 6f 75  |%.[.s auto%(Ncou|
00010d80  6e 74 25 29 3d 9a 23 63  68 25 3a 61 75 74 6f 68  |nt%)=.#ch%:autoh|
00010d90  65 6c 70 25 28 4e 63 6f  75 6e 74 25 29 3d 9a 23  |elp%(Ncount%)=.#|
00010da0  63 68 25 3a 66 6f 72 63  65 25 28 4e 63 6f 75 6e  |ch%:force%(Ncoun|
00010db0  74 25 29 3d 9a 23 63 68  25 3a 6d 6f 64 65 25 28  |t%)=.#ch%:mode%(|
00010dc0  4e 63 6f 75 6e 74 25 29  3d 9a 23 63 68 25 3a 74  |Ncount%)=.#ch%:t|
00010dd0  72 69 65 73 25 28 4e 63  6f 75 6e 74 25 29 3d 9a  |ries%(Ncount%)=.|
00010de0  23 63 68 25 0d 5b ea 04  0d 5b f4 ea 6f 70 65 72  |#ch%.[...[..oper|
00010df0  61 74 6f 72 25 28 4e 63  6f 75 6e 74 25 29 3d 9a  |ator%(Ncount%)=.|
00010e00  23 63 68 25 3a 6e 6f 5f  71 75 65 73 74 25 28 4e  |#ch%:no_quest%(N|
00010e10  63 6f 75 6e 74 25 29 3d  9a 23 63 68 25 3a 4e 6f  |count%)=.#ch%:No|
00010e20  74 69 6d 65 72 25 28 4e  63 6f 75 6e 74 25 29 3d  |timer%(Ncount%)=|
00010e30  9a 23 63 68 25 3a 74 69  6d 65 6c 69 6d 25 28 4e  |.#ch%:timelim%(N|
00010e40  63 6f 75 6e 74 25 29 3d  9a 23 63 68 25 3a 63 61  |count%)=.#ch%:ca|
00010e50  6c 63 25 28 4e 63 6f 75  6e 74 25 29 3d 9a 23 63  |lc%(Ncount%)=.#c|
00010e60  68 25 3a 70 72 69 6e 74  65 72 25 28 4e 63 6f 75  |h%:printer%(Ncou|
00010e70  6e 74 25 29 3d 9a 23 63  68 25 3a 73 63 6f 72 65  |nt%)=.#ch%:score|
00010e80  25 28 4e 63 6f 75 6e 74  25 29 3d 9a 23 63 68 25  |%(Ncount%)=.#ch%|
00010e90  3a 6e 65 78 74 25 28 4e  63 6f 75 6e 74 25 29 3d  |:next%(Ncount%)=|
00010ea0  9a 23 63 68 25 3a 73 74  6f 70 25 28 4e 63 6f 75  |.#ch%:stop%(Ncou|
00010eb0  6e 74 25 29 3d 9a 23 63  68 25 3a 63 6f 6c 6e 61  |nt%)=.#ch%:colna|
00010ec0  6d 65 25 28 4e 63 6f 75  6e 74 25 29 3d 9a 23 63  |me%(Ncount%)=.#c|
00010ed0  68 25 0d 5b fe 49 65 73  74 69 6d 61 74 65 25 28  |h%.[.Iestimate%(|
00010ee0  4e 63 6f 75 6e 74 25 29  3d 9a 23 63 68 25 3a 73  |Ncount%)=.#ch%:s|
00010ef0  61 76 65 52 25 28 4e 63  6f 75 6e 74 25 29 3d 9a  |aveR%(Ncount%)=.|
00010f00  23 63 68 25 3a 73 70 65  65 63 68 25 28 4e 63 6f  |#ch%:speech%(Nco|
00010f10  75 6e 74 25 29 3d 9a 23  63 68 25 0d 5c 08 4b 6e  |unt%)=.#ch%.\.Kn|
00010f20  65 77 6c 65 76 52 25 28  4e 63 6f 75 6e 74 25 29  |ewlevR%(Ncount%)|
00010f30  3d 9a 23 63 68 25 3a 6e  65 77 6c 65 76 57 25 28  |=.#ch%:newlevW%(|
00010f40  4e 63 6f 75 6e 74 25 29  3d 2d 9a 23 63 68 25 3a  |Ncount%)=-.#ch%:|
00010f50  6f 77 6e 73 75 6d 25 28  4e 63 6f 75 6e 74 25 29  |ownsum%(Ncount%)|
00010f60  3d 9a 23 63 68 25 0d 5c  12 45 e7 20 6f 70 65 72  |=.#ch%.\.E. oper|
00010f70  61 74 6f 72 25 28 4e 63  6f 75 6e 74 25 29 3d 33  |ator%(Ncount%)=3|
00010f80  20 8c 20 6f 70 65 72 61  74 6f 72 25 28 4e 63 6f  | . operator%(Nco|
00010f90  75 6e 74 25 29 3d 31 3a  42 6f 74 68 4f 70 25 28  |unt%)=1:BothOp%(|
00010fa0  4e 63 6f 75 6e 74 25 29  3d 2d 31 0d 5c 1c 0e fd  |Ncount%)=-1.\...|
00010fb0  20 c5 23 63 68 25 3d 2d  31 0d 5c 26 09 d9 23 63  | .#ch%=-1.\&..#c|
00010fc0  68 25 0d 5c 27 07 f7 20  85 0d 5c 30 05 e1 0d 5c  |h%.\'.. ..\0...\|
00010fd0  3a 04 0d 5c 44 04 0d 5c  4e 17 dd 20 f2 6c 6f 61  |:..\D..\N.. .loa|
00010fe0  64 5f 66 69 6c 65 28 66  69 6c 65 24 29 0d 5c 58  |d_file(file$).\X|
00010ff0  3b ea 20 63 68 25 2c 68  65 61 64 65 72 24 2c 69  |;. ch%,header$,i|
00011000  24 2c 65 72 72 6f 72 25  2c 64 65 66 61 75 6c 74  |$,error%,default|
00011010  25 3a 4e 61 6d 65 4e 6f  25 3d 30 3a 6e 6f 74 73  |%:NameNo%=0:nots|
00011020  61 76 65 64 4f 25 3d 30  0d 5c 62 3b 64 65 66 61  |avedO%=0.\b;defa|
00011030  75 6c 74 25 3d 28 a4 67  65 74 6c 65 61 66 28 66  |ult%=(.getleaf(f|
00011040  69 6c 65 24 2c 30 29 3d  22 64 65 66 61 75 6c 74  |ile$,0)="default|
00011050  22 20 80 20 24 6c 6f 61  64 62 75 66 66 25 3c 3e  |" . $loadbuff%<>|
00011060  22 22 29 0d 5c 6c 17 73  74 61 72 74 25 3d 28 64  |"").\l.start%=(d|
00011070  65 66 61 75 6c 74 25 3d  30 29 0d 5c 76 1b 6e 61  |efault%=0).\v.na|
00011080  6d 65 24 28 29 3d 22 22  3a 6e 65 78 74 66 69 6c  |me$()="":nextfil|
00011090  65 24 3d 22 22 0d 5c 80  1c f2 72 65 73 65 74 5f  |e$="".\...reset_|
000110a0  69 63 6f 6e 28 53 56 68  61 6e 64 6c 65 25 2c 31  |icon(SVhandle%,1|
000110b0  29 0d 5c 8a 04 0d 5c 94  1c f2 6c 6f 61 64 5f 70  |).\...\...load_p|
000110c0  61 72 74 28 66 69 6c 65  24 2c 65 72 72 6f 72 25  |art(file$,error%|
000110d0  29 0d 5c 9e 41 e7 20 65  72 72 6f 72 25 20 8c 20  |).\.A. error% . |
000110e0  f2 73 68 61 64 65 5f 69  74 65 6d 28 72 6d 65 6e  |.shade_item(rmen|
000110f0  75 25 2c 33 2c 2d 31 29  3a f2 73 68 61 64 65 5f  |u%,3,-1):.shade_|
00011100  69 74 65 6d 28 6d 65 6e  75 25 2c 34 2c 2d 31 29  |item(menu%,4,-1)|
00011110  3a e1 0d 5c a8 04 0d 5c  b2 19 63 72 65 61 74 65  |:..\...\..create|
00011120  25 3d 28 64 65 66 61 75  6c 74 25 3d 2d 31 29 0d  |%=(default%=-1).|
00011130  5c bc 25 f2 73 69 6e 67  6c 65 5f 74 69 63 6b 28  |\.%.single_tick(|
00011140  72 6d 65 6e 75 25 2c 34  2c 61 75 74 6f 73 61 76  |rmenu%,4,autosav|
00011150  65 52 25 29 0d 5c c6 22  f2 73 69 6e 67 6c 65 5f  |eR%).\.".single_|
00011160  74 69 63 6b 28 6d 65 6e  75 25 2c 36 2c 65 6e 70  |tick(menu%,6,enp|
00011170  72 69 6e 74 25 29 0d 5c  d0 21 f2 73 69 6e 67 6c  |rint%).\.!.singl|
00011180  65 5f 74 69 63 6b 28 6d  65 6e 75 25 2c 37 2c 73  |e_tick(menu%,7,s|
00011190  63 72 65 65 6e 25 29 0d  5c da 31 f2 73 68 61 64  |creen%).\.1.shad|
000111a0  65 5f 69 74 65 6d 28 6d  65 6e 75 25 2c 32 2c 30  |e_item(menu%,2,0|
000111b0  29 3a f2 73 68 61 64 65  5f 69 74 65 6d 28 6d 65  |):.shade_item(me|
000111c0  6e 75 25 2c 34 2c 30 29  0d 5c e4 26 f2 73 68 61  |nu%,4,0).\.&.sha|
000111d0  64 65 5f 69 74 65 6d 28  6d 65 6e 75 25 2c 31 2c  |de_item(menu%,1,|
000111e0  2d 28 64 65 66 61 75 6c  74 25 3d 30 29 29 0d 5c  |-(default%=0)).\|
000111f0  ee 12 f2 72 65 73 65 74  5f 72 65 73 75 6c 74 73  |...reset_results|
00011200  0d 5c f8 10 f2 73 65 74  5f 77 69 6e 64 6f 77 73  |.\...set_windows|
00011210  0d 5d 02 12 f2 63 6c 65  61 72 5f 77 69 6e 64 6f  |.]...clear_windo|
00011220  77 73 0d 5d 0c 04 0d 5d  16 2b 24 69 63 62 75 66  |ws.]...].+$icbuf|
00011230  66 25 3d a4 67 65 74 6c  65 61 66 28 66 69 6c 65  |f%=.getleaf(file|
00011240  24 2c 30 29 2b 22 20 69  73 20 6c 6f 61 64 65 64  |$,0)+" is loaded|
00011250  22 0d 5d 20 2a e7 20 64  65 66 61 75 6c 74 25 3d  |".] *. default%=|
00011260  30 20 8c 20 f2 6f 70 65  6e 5f 77 69 6e 64 6f 77  |0 . .open_window|
00011270  28 49 63 68 61 6e 64 6c  65 25 29 0d 5d 2a 05 e1  |(Ichandle%).]*..|
00011280  0d 5d 34 04 0d 5d 3e 04  0d 5d 48 14 dd 20 f2 72  |.]4..]>..]H.. .r|
00011290  65 73 65 74 5f 72 65 73  75 6c 74 73 0d 5d 52 31  |eset_results.]R1|
000112a0  52 63 6e 74 25 3d 32 3a  52 63 6e 74 32 25 3d 32  |Rcnt%=2:Rcnt2%=2|
000112b0  3a 52 70 74 72 25 3d 30  3a 6e 6f 74 73 61 76 65  |:Rptr%=0:notsave|
000112c0  64 52 25 3d 30 3a 6e 65  77 52 25 3d 31 0d 5d 5c  |dR%=0:newR%=1.]\|
000112d0  24 e3 20 6e 25 3d 30 20  b8 20 39 39 39 20 88 20  |$. n%=0 . 999 . |
000112e0  34 3a 72 65 73 75 6c 74  73 25 21 6e 25 3d 30 3a  |4:results%!n%=0:|
000112f0  ed 0d 5d 66 20 66 69 6c  65 24 3d a4 67 65 74 6c  |..]f file$=.getl|
00011300  65 61 66 28 24 73 61 76  65 62 75 66 66 25 2c 30  |eaf($savebuff%,0|
00011310  29 0d 5d 70 0f 64 61 74  65 24 3d a4 64 61 74 65  |).]p.date$=.date|
00011320  0d 5d 7a 33 73 74 24 3d  22 20 47 72 6f 75 70 20  |.]z3st$=" Group |
00011330  66 69 6c 65 20 6e 61 6d  65 3a 20 22 2b 66 69 6c  |file name: "+fil|
00011340  65 24 2b 22 20 20 44 61  74 65 3a 20 22 2b 64 61  |e$+"  Date: "+da|
00011350  74 65 24 0d 5d 84 22 52  70 74 72 25 3d a4 61 64  |te$.]."Rptr%=.ad|
00011360  64 5f 73 74 72 69 6e 67  28 52 70 74 72 25 2c 73  |d_string(Rptr%,s|
00011370  74 24 2c 30 29 0d 5d 8e  04 0d 5d 98 29 e3 20 6e  |t$,0).]...].). n|
00011380  25 3d 30 20 b8 20 33 3a  f2 73 68 61 64 65 5f 69  |%=0 . 3:.shade_i|
00011390  74 65 6d 28 72 6d 65 6e  75 25 2c 6e 25 2c 31 29  |tem(rmenu%,n%,1)|
000113a0  3a ed 0d 5d a2 25 f2 73  69 6e 67 6c 65 5f 74 69  |:..].%.single_ti|
000113b0  63 6b 28 72 6d 65 6e 75  25 2c 34 2c 61 75 74 6f  |ck(rmenu%,4,auto|
000113c0  73 61 76 65 52 25 29 0d  5d ac 05 e1 0d 5d b6 04  |saveR%).]....]..|
000113d0  0d 5d c0 15 dd 20 a4 64  61 74 65 3d c1 91 24 2c  |.]... .date=..$,|
000113e0  35 2c 31 31 29 0d 5d ca  04 0d 5d d4 21 dd 20 a4  |5,11).]...].!. .|
000113f0  61 64 64 5f 73 74 72 69  6e 67 28 70 74 72 25 2c  |add_string(ptr%,|
00011400  73 74 24 2c 64 6f 77 6e  25 29 0d 5d de 0a ea 20  |st$,down%).]... |
00011410  6c 65 6e 25 0d 5d e8 21  e7 20 64 6f 77 6e 25 20  |len%.].!. down% |
00011420  8c 20 3f 28 72 65 73 75  6c 74 73 25 2b 70 74 72  |. ?(results%+ptr|
00011430  25 29 3d 31 30 0d 5d f2  25 e7 20 64 6f 77 6e 25  |%)=10.].%. down%|
00011440  3d 32 20 8c 20 3f 28 72  65 73 75 6c 74 73 25 2b  |=2 . ?(results%+|
00011450  70 74 72 25 2b 31 29 3d  31 30 0d 5d fc 29 24 28  |ptr%+1)=10.].)$(|
00011460  72 65 73 75 6c 74 73 25  2b 70 74 72 25 2b 64 6f  |results%+ptr%+do|
00011470  77 6e 25 29 3d 73 74 24  3a 6c 65 6e 25 3d a9 20  |wn%)=st$:len%=. |
00011480  73 74 24 0d 5e 06 29 70  74 72 25 20 2b 3d 6c 65  |st$.^.)ptr% +=le|
00011490  6e 25 2b 64 6f 77 6e 25  3a 3f 28 72 65 73 75 6c  |n%+down%:?(resul|
000114a0  74 73 25 2b 70 74 72 25  29 3d 33 32 0d 5e 10 09  |ts%+ptr%)=32.^..|
000114b0  3d 70 74 72 25 0d 5e 1a  04 0d 5e 24 04 0d 5e 2e  |=ptr%.^...^$..^.|
000114c0  14 dd 20 f2 63 6c 65 61  72 5f 77 69 6e 64 6f 77  |.. .clear_window|
000114d0  73 0d 5e 38 2d e7 20 67  61 6d 65 25 3e 30 20 8c  |s.^8-. game%>0 .|
000114e0  20 f2 63 6c 6f 73 65 5f  77 69 6e 64 6f 77 28 68  | .close_window(h|
000114f0  61 6e 64 6c 65 25 28 67  61 6d 65 25 29 29 0d 5e  |andle%(game%)).^|
00011500  42 0b 67 61 6d 65 25 3d  30 0d 5e 4c 1c f2 63 6c  |B.game%=0.^L..cl|
00011510  6f 73 65 5f 77 69 6e 64  6f 77 28 4e 47 68 61 6e  |ose_window(NGhan|
00011520  64 6c 65 25 29 0d 5e 56  1c f2 63 6c 6f 73 65 5f  |dle%).^V..close_|
00011530  77 69 6e 64 6f 77 28 53  43 68 61 6e 64 6c 65 25  |window(SChandle%|
00011540  29 0d 5e 60 1b f2 63 6c  6f 73 65 5f 77 69 6e 64  |).^`..close_wind|
00011550  6f 77 28 52 68 61 6e 64  6c 65 25 29 0d 5e 6a 05  |ow(Rhandle%).^j.|
00011560  e1 0d 5e 74 04 0d 5e 7e  04 0d 5e 88 1b dd 20 f2  |..^t..^~..^... .|
00011570  73 65 74 5f 70 72 65 66  65 72 65 6e 63 65 73 28  |set_preferences(|
00011580  6e 6f 25 29 0d 5e 92 08  ea 20 6e 25 0d 5e 9c 19  |no%).^... n%.^..|
00011590  f2 73 65 74 5f 64 69 66  66 5f 6c 65 76 65 6c 73  |.set_diff_levels|
000115a0  28 6e 6f 25 29 0d 5e a6  19 f2 73 68 61 64 65 5f  |(no%).^...shade_|
000115b0  6f 70 5f 6c 65 76 65 6c  73 28 6e 6f 25 29 0d 5e  |op_levels(no%).^|
000115c0  b0 32 24 48 62 75 66 66  25 3d c3 48 6c 65 76 65  |.2$Hbuff%=.Hleve|
000115d0  6c 25 28 6e 6f 25 29 3a  f2 72 65 73 65 74 5f 69  |l%(no%):.reset_i|
000115e0  63 6f 6e 28 43 68 61 6e  64 6c 65 25 2c 33 31 29  |con(Chandle%,31)|
000115f0  0d 5e ba 34 24 4d 48 62  75 66 66 25 3d c3 4d 48  |.^.4$MHbuff%=.MH|
00011600  6c 65 76 65 6c 25 28 6e  6f 25 29 3a f2 72 65 73  |level%(no%):.res|
00011610  65 74 5f 69 63 6f 6e 28  43 68 61 6e 64 6c 65 25  |et_icon(Chandle%|
00011620  2c 33 37 29 0d 5e c4 27  e7 20 66 6f 72 63 65 35  |,37).^.'. force5|
00011630  25 3d 30 20 8c 20 48 65  6c 70 6c 65 76 25 3d 48  |%=0 . Helplev%=H|
00011640  6c 65 76 65 6c 25 28 6e  6f 25 29 0d 5e ce 2c f2  |level%(no%).^.,.|
00011650  73 65 6c 65 63 74 5f 69  63 6f 6e 28 43 68 61 6e  |select_icon(Chan|
00011660  64 6c 65 25 2c 35 30 2c  61 75 74 6f 68 65 6c 70  |dle%,50,autohelp|
00011670  25 28 6e 6f 25 29 29 0d  5e d8 16 f2 73 65 74 5f  |%(no%)).^...set_|
00011680  61 75 74 6f 68 65 6c 70  28 6e 6f 25 29 0d 5e e2  |autohelp(no%).^.|
00011690  2c f2 73 65 6c 65 63 74  5f 69 63 6f 6e 28 43 68  |,.select_icon(Ch|
000116a0  61 6e 64 6c 65 25 2c 32  39 2c 28 6d 6f 64 65 25  |andle%,29,(mode%|
000116b0  28 6e 6f 25 29 3d 31 29  29 0d 5e ec 2c f2 73 65  |(no%)=1)).^.,.se|
000116c0  6c 65 63 74 5f 69 63 6f  6e 28 43 68 61 6e 64 6c  |lect_icon(Chandl|
000116d0  65 25 2c 32 38 2c 28 6d  6f 64 65 25 28 6e 6f 25  |e%,28,(mode%(no%|
000116e0  29 3d 30 29 29 0d 5e f6  19 f2 61 64 6a 75 73 74  |)=0)).^...adjust|
000116f0  5f 66 6f 72 5f 6d 6f 64  65 28 6e 6f 25 29 0d 5f  |_for_mode(no%)._|
00011700  00 29 f2 73 65 6c 65 63  74 5f 69 63 6f 6e 28 43  |.).select_icon(C|
00011710  68 61 6e 64 6c 65 25 2c  33 34 2c 66 6f 72 63 65  |handle%,34,force|
00011720  25 28 6e 6f 25 29 29 0d  5f 0a 28 f2 73 65 6c 65  |%(no%))._.(.sele|
00011730  63 74 5f 69 63 6f 6e 28  43 68 61 6e 64 6c 65 25  |ct_icon(Chandle%|
00011740  2c 34 39 2c 61 75 74 6f  25 28 6e 6f 25 29 29 0d  |,49,auto%(no%)).|
00011750  5f 14 12 f2 73 65 74 5f  61 75 74 6f 28 6e 6f 25  |_...set_auto(no%|
00011760  29 0d 5f 1e 04 0d 5f 28  41 f2 73 65 6c 65 63 74  |)._..._(A.select|
00011770  5f 69 63 6f 6e 28 43 68  61 6e 64 6c 65 25 2c 32  |_icon(Chandle%,2|
00011780  2c 28 6f 70 65 72 61 74  6f 72 25 28 6e 6f 25 29  |,(operator%(no%)|
00011790  3d 31 20 84 20 42 6f 74  68 4f 70 25 28 6e 6f 25  |=1 . BothOp%(no%|
000117a0  29 3d 2d 31 29 29 0d 5f  32 41 f2 73 65 6c 65 63  |)=-1))._2A.selec|
000117b0  74 5f 69 63 6f 6e 28 43  68 61 6e 64 6c 65 25 2c  |t_icon(Chandle%,|
000117c0  33 2c 28 6f 70 65 72 61  74 6f 72 25 28 6e 6f 25  |3,(operator%(no%|
000117d0  29 3d 32 20 84 20 42 6f  74 68 4f 70 25 28 6e 6f  |)=2 . BothOp%(no|
000117e0  25 29 3d 2d 31 29 29 0d  5f 3c 18 f2 73 65 74 5f  |%)=-1))._<..set_|
000117f0  63 61 72 72 79 5f 76 61  72 69 61 62 6c 65 59 0d  |carry_variableY.|
00011800  5f 46 04 0d 5f 50 35 24  51 62 75 66 66 25 3d c3  |_F.._P5$Qbuff%=.|
00011810  20 6e 6f 5f 71 75 65 73  74 25 28 6e 6f 25 29 3a  | no_quest%(no%):|
00011820  f2 72 65 73 65 74 5f 69  63 6f 6e 28 43 68 61 6e  |.reset_icon(Chan|
00011830  64 6c 65 25 2c 31 36 29  0d 5f 5a 32 24 54 62 75  |dle%,16)._Z2$Tbu|
00011840  66 66 25 3d c3 20 74 72  69 65 73 25 28 6e 6f 25  |ff%=. tries%(no%|
00011850  29 3a f2 72 65 73 65 74  5f 69 63 6f 6e 28 43 68  |):.reset_icon(Ch|
00011860  61 6e 64 6c 65 25 2c 31  39 29 0d 5f 64 04 0d 5f  |andle%,19)._d.._|
00011870  6e 35 24 54 6d 62 75 66  66 25 3d c3 20 74 69 6d  |n5$Tmbuff%=. tim|
00011880  65 6c 69 6d 25 28 6e 6f  25 29 3a f2 72 65 73 65  |elim%(no%):.rese|
00011890  74 5f 69 63 6f 6e 28 43  68 61 6e 64 6c 65 25 2c  |t_icon(Chandle%,|
000118a0  32 32 29 0d 5f 78 2b f2  73 65 6c 65 63 74 5f 69  |22)._x+.select_i|
000118b0  63 6f 6e 28 43 68 61 6e  64 6c 65 25 2c 32 35 2c  |con(Chandle%,25,|
000118c0  4e 6f 74 69 6d 65 72 25  28 6e 6f 25 29 29 0d 5f  |Notimer%(no%))._|
000118d0  82 2c f2 73 68 61 64 65  5f 33 69 63 6f 6e 73 28  |.,.shade_3icons(|
000118e0  43 68 61 6e 64 6c 65 25  2c 32 32 2c 4e 6f 74 69  |Chandle%,22,Noti|
000118f0  6d 65 72 25 28 6e 6f 25  29 29 0d 5f 8c 04 0d 5f  |mer%(no%))._..._|
00011900  96 3e f2 73 65 6c 65 63  74 5f 69 63 6f 6e 28 43  |.>.select_icon(C|
00011910  68 61 6e 64 6c 65 25 2c  34 32 2c 63 61 6c 63 25  |handle%,42,calc%|
00011920  28 6e 6f 25 29 29 3a f2  73 65 74 5f 64 65 6c 65  |(no%)):.set_dele|
00011930  74 65 5f 69 63 6f 6e 28  6e 6f 25 29 0d 5f a0 69  |te_icon(no%)._.i|
00011940  f2 73 65 6c 65 63 74 5f  69 63 6f 6e 28 43 68 61  |.select_icon(Cha|
00011950  6e 64 6c 65 25 2c 34 33  2c 70 72 69 6e 74 65 72  |ndle%,43,printer|
00011960  25 28 6e 6f 25 29 29 3a  f2 73 65 74 5f 74 6f 70  |%(no%)):.set_top|
00011970  5f 69 63 6f 6e 28 37 2c  28 70 72 69 6e 74 65 72  |_icon(7,(printer|
00011980  25 28 6e 6f 25 29 3d 31  20 80 20 64 72 69 76 65  |%(no%)=1 . drive|
00011990  72 25 3d 2d 31 20 80 20  65 6e 70 72 69 6e 74 25  |r%=-1 . enprint%|
000119a0  3d 2d 31 29 29 0d 5f aa  47 f2 73 65 6c 65 63 74  |=-1))._.G.select|
000119b0  5f 69 63 6f 6e 28 43 68  61 6e 64 6c 65 25 2c 34  |_icon(Chandle%,4|
000119c0  34 2c 73 63 6f 72 65 25  28 6e 6f 25 29 29 3a f2  |4,score%(no%)):.|
000119d0  73 65 74 5f 74 6f 70 5f  69 63 6f 6e 28 34 2c 2d  |set_top_icon(4,-|
000119e0  73 63 6f 72 65 25 28 6e  6f 25 29 29 0d 5f b4 28  |score%(no%))._.(|
000119f0  f2 73 65 6c 65 63 74 5f  69 63 6f 6e 28 43 68 61  |.select_icon(Cha|
00011a00  6e 64 6c 65 25 2c 34 36  2c 6e 65 78 74 25 28 6e  |ndle%,46,next%(n|
00011a10  6f 25 29 29 0d 5f be 45  f2 73 65 6c 65 63 74 5f  |o%))._.E.select_|
00011a20  69 63 6f 6e 28 43 68 61  6e 64 6c 65 25 2c 34 37  |icon(Chandle%,47|
00011a30  2c 73 74 6f 70 25 28 6e  6f 25 29 29 3a f2 73 65  |,stop%(no%)):.se|
00011a40  74 5f 74 6f 70 5f 69 63  6f 6e 28 36 2c 2d 73 74  |t_top_icon(6,-st|
00011a50  6f 70 25 28 6e 6f 25 29  29 0d 5f c8 2b f2 73 65  |op%(no%))._.+.se|
00011a60  6c 65 63 74 5f 69 63 6f  6e 28 43 68 61 6e 64 6c  |lect_icon(Chandl|
00011a70  65 25 2c 34 38 2c 63 6f  6c 6e 61 6d 65 25 28 6e  |e%,48,colname%(n|
00011a80  6f 25 29 29 0d 5f d2 2c  f2 73 65 6c 65 63 74 5f  |o%))._.,.select_|
00011a90  69 63 6f 6e 28 43 68 61  6e 64 6c 65 25 2c 34 35  |icon(Chandle%,45|
00011aa0  2c 65 73 74 69 6d 61 74  65 25 28 6e 6f 25 29 29  |,estimate%(no%))|
00011ab0  0d 5f dc 29 f2 73 65 6c  65 63 74 5f 69 63 6f 6e  |._.).select_icon|
00011ac0  28 43 68 61 6e 64 6c 65  25 2c 36 31 2c 73 61 76  |(Chandle%,61,sav|
00011ad0  65 52 25 28 6e 6f 25 29  29 0d 5f e6 2b f2 73 65  |eR%(no%))._.+.se|
00011ae0  6c 65 63 74 5f 69 63 6f  6e 28 43 68 61 6e 64 6c  |lect_icon(Chandl|
00011af0  65 25 2c 36 32 2c 64 65  63 69 6d 61 6c 25 28 6e  |e%,62,decimal%(n|
00011b00  6f 25 29 29 0d 5f f0 2a  e7 20 64 65 63 69 6d 61  |o%))._.*. decima|
00011b10  6c 25 28 6e 6f 25 29 20  8c 20 f2 73 65 74 5f 64  |l%(no%) . .set_d|
00011b20  65 63 5f 6c 65 76 65 6c  73 28 6e 6f 25 29 0d 5f  |ec_levels(no%)._|
00011b30  fa 04 0d 60 04 37 24 6c  65 76 52 62 75 66 66 25  |...`.7$levRbuff%|
00011b40  3d c3 20 6e 65 77 6c 65  76 52 25 28 6e 6f 25 29  |=. newlevR%(no%)|
00011b50  3a f2 72 65 73 65 74 5f  69 63 6f 6e 28 43 68 61  |:.reset_icon(Cha|
00011b60  6e 64 6c 65 25 2c 35 33  29 0d 60 0e 38 24 6c 65  |ndle%,53).`.8$le|
00011b70  76 57 62 75 66 66 25 3d  c3 20 2d 6e 65 77 6c 65  |vWbuff%=. -newle|
00011b80  76 57 25 28 6e 6f 25 29  3a f2 72 65 73 65 74 5f  |vW%(no%):.reset_|
00011b90  69 63 6f 6e 28 43 68 61  6e 64 6c 65 25 2c 35 39  |icon(Chandle%,59|
00011ba0  29 0d 60 18 04 0d 60 22  15 f2 73 65 74 5f 6f 77  |).`...`"..set_ow|
00011bb0  6e 5f 73 75 6d 28 6e 6f  25 29 0d 60 2c 2a f2 73  |n_sum(no%).`,*.s|
00011bc0  65 6c 65 63 74 5f 69 63  6f 6e 28 43 68 61 6e 64  |elect_icon(Chand|
00011bd0  6c 65 25 2c 36 37 2c 73  70 65 65 63 68 25 28 6e  |le%,67,speech%(n|
00011be0  6f 25 29 29 0d 60 36 26  f2 73 68 61 64 65 5f 69  |o%)).`6&.shade_i|
00011bf0  63 6f 6e 28 43 68 61 6e  64 6c 65 25 2c 36 34 2c  |con(Chandle%,64,|
00011c00  28 67 61 6d 65 25 3e 30  29 29 0d 60 40 05 e1 0d  |(game%>0)).`@...|
00011c10  60 4a 04 0d 60 54 04 0d  60 5e 17 dd 20 f2 73 65  |`J..`T..`^.. .se|
00011c20  74 5f 6f 77 6e 5f 73 75  6d 28 6e 6f 25 29 0d 60  |t_own_sum(no%).`|
00011c30  68 2a f2 73 65 6c 65 63  74 5f 69 63 6f 6e 28 43  |h*.select_icon(C|
00011c40  68 61 6e 64 6c 65 25 2c  36 33 2c 6f 77 6e 73 75  |handle%,63,ownsu|
00011c50  6d 25 28 6e 6f 25 29 29  0d 60 72 52 f2 73 68 61  |m%(no%)).`rR.sha|
00011c60  64 65 5f 33 69 63 6f 6e  73 28 43 68 61 6e 64 6c  |de_3icons(Chandl|
00011c70  65 25 2c 35 2c 28 6f 77  6e 73 75 6d 25 28 6e 6f  |e%,5,(ownsum%(no|
00011c80  25 29 3d 31 20 84 20 6f  70 65 72 61 74 6f 72 25  |%)=1 . operator%|
00011c90  28 6e 6f 25 29 3d 32 20  80 20 42 6f 74 68 4f 70  |(no%)=2 . BothOp|
00011ca0  25 28 6e 6f 25 29 3d 30  29 29 0d 60 7c 52 f2 73  |%(no%)=0)).`|R.s|
00011cb0  68 61 64 65 5f 33 69 63  6f 6e 73 28 43 68 61 6e  |hade_3icons(Chan|
00011cc0  64 6c 65 25 2c 38 2c 28  6f 77 6e 73 75 6d 25 28  |dle%,8,(ownsum%(|
00011cd0  6e 6f 25 29 3d 31 20 84  20 6f 70 65 72 61 74 6f  |no%)=1 . operato|
00011ce0  72 25 28 6e 6f 25 29 3d  31 20 80 20 42 6f 74 68  |r%(no%)=1 . Both|
00011cf0  4f 70 25 28 6e 6f 25 29  3d 30 29 29 0d 60 86 3e  |Op%(no%)=0)).`.>|
00011d00  f2 73 68 61 64 65 5f 33  69 63 6f 6e 73 28 43 68  |.shade_3icons(Ch|
00011d10  61 6e 64 6c 65 25 2c 35  33 2c 28 6f 77 6e 73 75  |andle%,53,(ownsu|
00011d20  6d 25 28 6e 6f 25 29 3d  31 20 84 20 61 75 74 6f  |m%(no%)=1 . auto|
00011d30  25 28 6e 6f 25 29 3d 30  29 29 0d 60 90 3e f2 73  |%(no%)=0)).`.>.s|
00011d40  68 61 64 65 5f 33 69 63  6f 6e 73 28 43 68 61 6e  |hade_3icons(Chan|
00011d50  64 6c 65 25 2c 35 37 2c  28 6f 77 6e 73 75 6d 25  |dle%,57,(ownsum%|
00011d60  28 6e 6f 25 29 3d 31 20  84 20 61 75 74 6f 25 28  |(no%)=1 . auto%(|
00011d70  6e 6f 25 29 3d 30 29 29  0d 60 9a 29 f2 73 68 61  |no%)=0)).`.).sha|
00011d80  64 65 5f 69 63 6f 6e 28  43 68 61 6e 64 6c 65 25  |de_icon(Chandle%|
00011d90  2c 34 39 2c 6f 77 6e 73  75 6d 25 28 6e 6f 25 29  |,49,ownsum%(no%)|
00011da0  29 0d 60 a4 04 0d 60 ae  2a e7 20 6f 77 6e 73 75  |).`...`.*. ownsu|
00011db0  6d 25 28 6e 6f 25 29 3d  30 20 80 20 67 61 6d 65  |m%(no%)=0 . game|
00011dc0  25 3d 30 20 8c 20 73 74  61 72 74 25 3d 2d 31 0d  |%=0 . start%=-1.|
00011dd0  60 b8 60 e7 20 6f 77 6e  73 75 6d 25 28 6e 6f 25  |`.`. ownsum%(no%|
00011de0  29 3d 30 20 80 20 67 61  6d 65 25 3e 30 20 8c 20  |)=0 . game%>0 . |
00011df0  e7 20 a4 77 69 6e 64 6f  77 5f 6f 70 65 6e 28 68  |. .window_open(h|
00011e00  61 6e 64 6c 65 25 28 67  61 6d 65 25 29 29 3d 30  |andle%(game%))=0|
00011e10  20 8c 20 f2 6f 70 65 6e  5f 77 69 6e 64 6f 77 28  | . .open_window(|
00011e20  68 61 6e 64 6c 65 25 28  67 61 6d 65 25 29 29 0d  |handle%(game%)).|
00011e30  60 c2 05 e1 0d 60 cc 04  0d 60 d6 04 0d 60 e0 1a  |`....`...`...`..|
00011e40  dd 20 f2 61 6c 6c 6f 77  5f 70 72 69 6e 74 5f 72  |. .allow_print_r|
00011e50  65 73 75 6c 74 73 0d 60  ea 30 e7 20 64 72 69 76  |esults.`.0. driv|
00011e60  65 72 25 3d 30 20 8c 20  e7 20 a4 65 6e 73 75 72  |er%=0 . . .ensur|
00011e70  65 5f 50 64 72 69 76 65  72 20 8c 20 64 72 69 76  |e_Pdriver . driv|
00011e80  65 72 25 3d 2d 31 0d 60  f4 40 e3 20 6e 25 3d 31  |er%=-1.`.@. n%=1|
00011e90  20 b8 20 32 3a f2 73 68  61 64 65 5f 69 74 65 6d  | . 2:.shade_item|
00011ea0  28 72 6d 65 6e 75 25 2c  6e 25 2c ac 28 64 72 69  |(rmenu%,n%,.(dri|
00011eb0  76 65 72 25 3d 2d 31 20  80 20 52 63 6e 74 25 3e  |ver%=-1 . Rcnt%>|
00011ec0  3d 34 29 29 3a ed 0d 60  fe 05 e1 0d 61 08 04 0d  |=4)):..`....a...|
00011ed0  61 12 04 0d 61 1c 1b dd  20 f2 73 65 74 5f 64 69  |a...a... .set_di|
00011ee0  66 66 5f 6c 65 76 65 6c  73 28 6e 6f 25 29 0d 61  |ff_levels(no%).a|
00011ef0  26 38 24 6c 65 76 65 6c  5f 62 75 66 66 41 25 3d  |&8$level_buffA%=|
00011f00  c3 20 41 6c 65 76 65 6c  25 28 6e 6f 25 29 3a f2  |. Alevel%(no%):.|
00011f10  72 65 73 65 74 5f 69 63  6f 6e 28 43 68 61 6e 64  |reset_icon(Chand|
00011f20  6c 65 25 2c 35 29 0d 61  30 38 24 6c 65 76 65 6c  |le%,5).a08$level|
00011f30  5f 62 75 66 66 53 25 3d  c3 20 53 6c 65 76 65 6c  |_buffS%=. Slevel|
00011f40  25 28 6e 6f 25 29 3a f2  72 65 73 65 74 5f 69 63  |%(no%):.reset_ic|
00011f50  6f 6e 28 43 68 61 6e 64  6c 65 25 2c 38 29 0d 61  |on(Chandle%,8).a|
00011f60  3a 05 e1 0d 61 44 04 0d  61 4e 04 0d 61 58 1b dd  |:...aD..aN..aX..|
00011f70  20 f2 73 68 61 64 65 5f  6f 70 5f 6c 65 76 65 6c  | .shade_op_level|
00011f80  73 28 6e 6f 25 29 0d 61  62 41 f2 73 68 61 64 65  |s(no%).abA.shade|
00011f90  5f 33 69 63 6f 6e 73 28  43 68 61 6e 64 6c 65 25  |_3icons(Chandle%|
00011fa0  2c 35 2c 28 6f 70 65 72  61 74 6f 72 25 28 6e 6f  |,5,(operator%(no|
00011fb0  25 29 3d 32 20 80 20 42  6f 74 68 4f 70 25 28 6e  |%)=2 . BothOp%(n|
00011fc0  6f 25 29 3d 30 29 29 0d  61 6c 41 f2 73 68 61 64  |o%)=0)).alA.shad|
00011fd0  65 5f 33 69 63 6f 6e 73  28 43 68 61 6e 64 6c 65  |e_3icons(Chandle|
00011fe0  25 2c 38 2c 28 6f 70 65  72 61 74 6f 72 25 28 6e  |%,8,(operator%(n|
00011ff0  6f 25 29 3d 31 20 80 20  42 6f 74 68 4f 70 25 28  |o%)=1 . BothOp%(|
00012000  6e 6f 25 29 3d 30 29 29  0d 61 76 05 e1 0d 61 80  |no%)=0)).av...a.|
00012010  04 0d 61 8a 04 0d 61 94  1a dd 20 f2 73 65 74 5f  |..a...a... .set_|
00012020  64 65 63 5f 6c 65 76 65  6c 73 28 6e 6f 25 29 0d  |dec_levels(no%).|
00012030  61 9e 25 e7 20 41 6c 65  76 65 6c 25 28 6e 6f 25  |a.%. Alevel%(no%|
00012040  29 3c 36 20 8c 20 41 6c  65 76 65 6c 25 28 6e 6f  |)<6 . Alevel%(no|
00012050  25 29 3d 36 0d 61 a8 25  e7 20 53 6c 65 76 65 6c  |%)=6.a.%. Slevel|
00012060  25 28 6e 6f 25 29 3c 36  20 8c 20 53 6c 65 76 65  |%(no%)<6 . Sleve|
00012070  6c 25 28 6e 6f 25 29 3d  36 0d 61 b2 19 f2 73 65  |l%(no%)=6.a...se|
00012080  74 5f 64 69 66 66 5f 6c  65 76 65 6c 73 28 6e 6f  |t_diff_levels(no|
00012090  25 29 0d 61 bc 05 e1 0d  61 c6 04 0d 61 d0 04 0d  |%).a....a...a...|
000120a0  61 da 1f dd 20 f2 73 65  74 5f 74 6f 70 5f 69 63  |a... .set_top_ic|
000120b0  6f 6e 28 69 63 6f 6e 25  2c 76 61 72 25 29 0d 61  |on(icon%,var%).a|
000120c0  e4 08 ea 20 6e 25 0d 61  ee 0e e3 20 6e 25 3d 31  |... n%.a... n%=1|
000120d0  20 b8 20 32 0d 61 f8 29  20 f2 73 68 61 64 65 5f  | . 2.a.) .shade_|
000120e0  69 63 6f 6e 28 68 61 6e  64 6c 65 25 28 6e 25 29  |icon(handle%(n%)|
000120f0  2c 69 63 6f 6e 25 2c ac  76 61 72 25 29 0d 62 02  |,icon%,.var%).b.|
00012100  05 ed 0d 62 0c 05 e1 0d  62 16 04 0d 62 20 04 0d  |...b....b...b ..|
00012110  62 2a 13 dd 20 f2 73 65  6c 65 63 74 5f 73 63 6f  |b*.. .select_sco|
00012120  72 65 0d 62 34 1e ea 20  69 63 6f 6e 25 2c 72 25  |re.b4.. icon%,r%|
00012130  3a 69 63 6f 6e 25 3d 62  6c 6f 63 6b 25 21 31 36  |:icon%=block%!16|
00012140  0d 62 3e 3e e7 20 69 63  6f 6e 25 3d 39 20 84 20  |.b>>. icon%=9 . |
00012150  69 63 6f 6e 25 3d 31 30  20 84 20 69 63 6f 6e 25  |icon%=10 . icon%|
00012160  3d 31 32 20 8c 20 f2 63  6c 6f 73 65 5f 77 69 6e  |=12 . .close_win|
00012170  64 6f 77 28 53 43 68 61  6e 64 6c 65 25 29 0d 62  |dow(SChandle%).b|
00012180  48 24 e7 20 69 63 6f 6e  25 3d 31 30 20 8c 20 f2  |H$. icon%=10 . .|
00012190  62 75 69 6c 64 5f 6e 61  6d 65 5f 77 69 6e 64 6f  |build_name_windo|
000121a0  77 47 0d 62 52 20 e7 20  69 63 6f 6e 25 3d 31 31  |wG.bR . icon%=11|
000121b0  20 8c 20 f2 70 72 69 6e  74 5f 6f 75 74 5f 73 75  | . .print_out_su|
000121c0  6d 73 0d 62 5c 05 e1 0d  62 66 04 0d 62 70 04 0d  |ms.b\...bf..bp..|
000121d0  62 7a 18 dd 20 f2 63 61  6c 63 61 6c 61 74 6f 72  |bz.. .calcalator|
000121e0  28 69 63 6f 6e 25 29 0d  62 84 0a ea 20 66 6c 67  |(icon%).b... flg|
000121f0  25 0d 62 8e 44 e7 20 43  43 70 72 65 76 25 3d 2d  |%.b.D. CCprev%=-|
00012200  31 20 80 20 69 63 6f 6e  25 3e 31 30 20 80 20 69  |1 . icon%>10 . i|
00012210  63 6f 6e 25 3c 31 36 20  8c 20 43 43 6f 70 25 3d  |con%<16 . CCop%=|
00012220  69 63 6f 6e 25 3a 66 6c  67 25 3d 28 69 63 6f 6e  |icon%:flg%=(icon|
00012230  25 3e 31 31 29 0d 62 98  0e e7 20 66 6c 67 25 20  |%>11).b... flg% |
00012240  8c 20 e1 0d 62 a2 11 e7  20 69 63 6f 6e 25 3c 3d  |. ..b... icon%<=|
00012250  31 30 20 8c 0d 62 ac 23  20 e7 20 43 43 6f 70 25  |10 ..b.# . CCop%|
00012260  3d 30 20 8c 20 43 43 73  75 6d 3d 30 3a 43 43 73  |=0 . CCsum=0:CCs|
00012270  74 61 72 74 25 3d 30 0d  62 b6 33 20 e7 20 69 63  |tart%=0.b.3 . ic|
00012280  6f 6e 25 3c 31 30 20 80  20 a9 20 43 43 6e 75 6d  |on%<10 . . CCnum|
00012290  24 3c 38 20 8c 20 43 43  6e 75 6d 24 3d 43 43 6e  |$<8 . CCnum$=CCn|
000122a0  75 6d 24 2b c3 69 63 6f  6e 25 0d 62 c0 23 20 e7  |um$+.icon%.b.# .|
000122b0  20 69 63 6f 6e 25 3d 31  30 20 8c 20 43 43 6e 75  | icon%=10 . CCnu|
000122c0  6d 24 3d 43 43 6e 75 6d  24 2b 22 2e 22 0d 62 ca  |m$=CCnum$+".".b.|
000122d0  1d 20 43 43 6e 75 6d 3d  bb 20 43 43 6e 75 6d 24  |. CCnum=. CCnum$|
000122e0  3a 43 43 70 72 65 76 25  3d 30 0d 62 d4 1e 20 f2  |:CCprev%=0.b.. .|
000122f0  63 61 6c 63 5f 64 69 73  70 6c 61 79 28 43 43 6e  |calc_display(CCn|
00012300  75 6d 24 2c 22 31 22 29  0d 62 de 05 cc 0d 62 e8  |um$,"1").b....b.|
00012310  22 20 43 43 6e 75 6d 24  3d 22 22 3a 43 43 70 72  |" CCnum$="":CCpr|
00012320  65 76 25 3d 28 69 63 6f  6e 25 3c 3e 31 31 29 0d  |ev%=(icon%<>11).|
00012330  62 f2 1a 20 e7 20 69 63  6f 6e 25 3d 31 36 20 8c  |b.. . icon%=16 .|
00012340  20 43 43 6f 70 25 3d 31  36 0d 62 fc 13 20 e7 20  | CCop%=16.b.. . |
00012350  43 43 73 74 61 72 74 25  3d 30 20 8c 0d 63 06 12  |CCstart%=0 ..c..|
00012360  20 20 e7 20 43 43 6f 70  25 3d 31 36 20 8c 0d 63  |  . CCop%=16 ..c|
00012370  10 31 20 20 20 43 43 73  75 6d 3d 30 3a 43 43 6f  |.1   CCsum=0:CCo|
00012380  70 25 3d 30 3a f2 63 61  6c 63 5f 64 69 73 70 6c  |p%=0:.calc_displ|
00012390  61 79 28 c3 20 43 43 73  75 6d 2c 22 32 22 29 0d  |ay(. CCsum,"2").|
000123a0  63 1a 07 20 20 cc 0d 63  24 2a 20 20 20 43 43 6f  |c..  ..c$*   CCo|
000123b0  70 25 3d 69 63 6f 6e 25  3a 43 43 73 74 61 72 74  |p%=icon%:CCstart|
000123c0  25 3d 2d 31 3a 43 43 73  75 6d 3d 43 43 6e 75 6d  |%=-1:CCsum=CCnum|
000123d0  0d 63 2e 07 20 20 cd 0d  63 38 06 20 cc 0d 63 42  |.c..  ..c8. ..cB|
000123e0  10 20 20 c8 8e 20 43 43  6f 70 25 20 ca 0d 63 4c  |.  .. CCop% ..cL|
000123f0  19 20 20 20 c9 20 31 32  3a 43 43 73 75 6d 20 2b  |.   . 12:CCsum +|
00012400  3d 43 43 6e 75 6d 0d 63  56 19 20 20 20 c9 20 31  |=CCnum.cV.   . 1|
00012410  33 3a 43 43 73 75 6d 20  2d 3d 43 43 6e 75 6d 0d  |3:CCsum -=CCnum.|
00012420  63 60 1d 20 20 20 c9 20  31 34 3a 43 43 73 75 6d  |c`.   . 14:CCsum|
00012430  3d 43 43 73 75 6d 2a 43  43 6e 75 6d 0d 63 6a 36  |=CCsum*CCnum.cj6|
00012440  20 20 20 c9 20 31 35 3a  e7 20 43 43 6e 75 6d 3c  |   . 15:. CCnum<|
00012450  3e 30 20 8c 20 43 43 73  75 6d 3d 43 43 73 75 6d  |>0 . CCsum=CCsum|
00012460  2f 43 43 6e 75 6d 20 8b  20 43 43 73 75 6d 3d 31  |/CCnum . CCsum=1|
00012470  45 39 0d 63 74 13 20 20  20 c9 20 31 36 3a 43 43  |E9.ct.   . 16:CC|
00012480  73 75 6d 3d 30 0d 63 7e  07 20 20 cb 0d 63 7f 32  |sum=0.c~.  ..c.2|
00012490  20 20 e7 20 43 43 6f 70  25 3d 31 32 20 84 20 43  |  . CCop%=12 . C|
000124a0  43 6f 70 25 3d 31 33 20  8c 20 43 43 73 75 6d 20  |Cop%=13 . CCsum |
000124b0  2b 3d 32 45 2d 38 2a b4  20 43 43 73 75 6d 0d 63  |+=2E-8*. CCsum.c|
000124c0  88 20 20 20 f2 63 61 6c  63 5f 64 69 73 70 6c 61  |.   .calc_displa|
000124d0  79 28 c3 20 43 43 73 75  6d 2c 22 32 22 29 0d 63  |y(. CCsum,"2").c|
000124e0  92 33 20 20 e7 20 69 63  6f 6e 25 3e 31 31 20 80  |.3  . icon%>11 .|
000124f0  20 69 63 6f 6e 25 3c 31  36 20 8c 20 43 43 6f 70  | icon%<16 . CCop|
00012500  25 3d 69 63 6f 6e 25 20  8b 20 43 43 6f 70 25 3d  |%=icon% . CCop%=|
00012510  30 0d 63 9c 06 20 cd 0d  63 a6 05 cd 0d 63 b0 05  |0.c.. ..c....c..|
00012520  e1 0d 63 ba 04 0d 63 c4  04 0d 63 ce 21 dd 20 f2  |..c...c...c.!. .|
00012530  63 61 6c 63 5f 64 69 73  70 6c 61 79 28 76 61 72  |calc_display(var|
00012540  24 2c 73 6f 75 72 63 65  24 29 0d 63 d8 13 e7 20  |$,source$).c... |
00012550  94 20 bb 76 61 72 24 3c  31 45 39 20 8c 0d 63 e2  |. .var$<1E9 ..c.|
00012560  2a 20 e7 20 94 20 bb 76  61 72 24 3c 31 45 2d 38  |* . . .var$<1E-8|
00012570  20 80 20 94 20 bb 76 61  72 24 3e 30 20 8c 20 76  | . . .var$>0 . v|
00012580  61 72 24 3d 22 30 22 0d  63 ec 2a 20 e7 20 a7 76  |ar$="0".c.* . .v|
00012590  61 72 24 2c 22 45 22 29  20 8c 20 76 61 72 24 3d  |ar$,"E") . var$=|
000125a0  a4 72 65 6d 6f 76 65 5f  65 78 70 28 76 61 72 24  |.remove_exp(var$|
000125b0  29 0d 63 f6 12 20 76 61  72 24 3d c0 76 61 72 24  |).c.. var$=.var$|
000125c0  2c 38 29 0d 64 00 4b 20  e7 20 c2 76 61 72 24 2c  |,8).d.K . .var$,|
000125d0  31 29 3d 22 30 22 20 80  20 a7 76 61 72 24 2c 22  |1)="0" . .var$,"|
000125e0  2e 22 29 3e 30 20 80 20  73 6f 75 72 63 65 24 3d  |.")>0 . source$=|
000125f0  22 32 22 20 8c 20 76 61  72 24 3d a4 72 65 6d 6f  |"2" . var$=.remo|
00012600  76 65 5f 7a 65 72 6f 73  28 76 61 72 24 29 0d 64  |ve_zeros(var$).d|
00012610  0a 12 20 24 43 43 62 75  66 66 25 3d 76 61 72 24  |.. $CCbuff%=var$|
00012620  0d 64 14 05 cc 0d 64 1e  3b 20 e7 20 bb 20 76 61  |.d....d.; . . va|
00012630  72 24 3e 30 20 8c 20 24  43 43 62 75 66 66 25 3d  |r$>0 . $CCbuff%=|
00012640  22 54 6f 6f 20 62 69 67  22 20 8b 20 24 43 43 62  |"Too big" . $CCb|
00012650  75 66 66 25 3d 22 54 6f  6f 20 73 6d 61 6c 6c 22  |uff%="Too small"|
00012660  0d 64 28 15 20 43 43 73  75 6d 3d 30 3a 69 63 6f  |.d(. CCsum=0:ico|
00012670  6e 25 3d 31 36 0d 64 32  05 cd 0d 64 3c 1d f2 72  |n%=16.d2...d<..r|
00012680  65 73 65 74 5f 69 63 6f  6e 28 43 43 68 61 6e 64  |eset_icon(CChand|
00012690  6c 65 25 2c 31 37 29 0d  64 46 05 e1 0d 64 50 04  |le%,17).dF...dP.|
000126a0  0d 64 5a 04 0d 64 64 17  dd 20 a4 72 65 6d 6f 76  |.dZ..dd.. .remov|
000126b0  65 5f 65 78 70 28 76 61  72 24 29 0d 64 6e 0d ea  |e_exp(var$).dn..|
000126c0  20 70 25 2c 73 67 6e 25  0d 64 78 1e 70 25 3d bb  | p%,sgn%.dx.p%=.|
000126d0  20 c2 76 61 72 24 2c 31  29 3a 73 67 6e 25 3d b4  | .var$,1):sgn%=.|
000126e0  20 bb 76 61 72 24 0d 64  82 17 76 61 72 24 3d c0  | .var$.d..var$=.|
000126f0  76 61 72 24 2c a9 76 61  72 24 2d 33 29 0d 64 8c  |var$,.var$-3).d.|
00012700  22 e7 20 73 67 6e 25 3c  30 20 8c 20 76 61 72 24  |". sgn%<0 . var$|
00012710  3d c2 76 61 72 24 2c a9  76 61 72 24 2d 31 29 0d  |=.var$,.var$-1).|
00012720  64 96 33 e7 20 c1 76 61  72 24 2c 32 2c 31 29 3d  |d.3. .var$,2,1)=|
00012730  22 2e 22 20 8c 20 76 61  72 24 3d c0 76 61 72 24  |"." . var$=.var$|
00012740  2c 31 29 2b c2 76 61 72  24 2c a9 76 61 72 24 2d  |,1)+.var$,.var$-|
00012750  32 29 0d 64 a0 1c 76 61  72 24 3d 22 2e 22 2b c4  |2).d..var$="."+.|
00012760  70 25 2d 31 2c 22 30 22  29 2b 76 61 72 24 0d 64  |p%-1,"0")+var$.d|
00012770  aa 1c e7 20 73 67 6e 25  3c 30 20 8c 20 76 61 72  |... sgn%<0 . var|
00012780  24 3d 22 2d 22 2b 76 61  72 24 0d 64 b4 09 3d 76  |$="-"+var$.d..=v|
00012790  61 72 24 0d 64 be 04 0d  64 c8 19 dd 20 a4 72 65  |ar$.d...d... .re|
000127a0  6d 6f 76 65 5f 7a 65 72  6f 73 28 76 61 72 24 29  |move_zeros(var$)|
000127b0  0d 64 d2 13 c8 95 20 c2  76 61 72 24 2c 31 29 3d  |.d.... .var$,1)=|
000127c0  22 30 22 0d 64 dc 18 20  76 61 72 24 3d c0 76 61  |"0".d.. var$=.va|
000127d0  72 24 2c a9 76 61 72 24  2d 31 29 0d 64 e6 05 ce  |r$,.var$-1).d...|
000127e0  0d 64 f0 09 3d 76 61 72  24 0d 64 fa 04 0d 65 04  |.d..=var$.d...e.|
000127f0  04 0d 65 0e 10 dd 20 f2  6b 65 79 73 5f 63 61 6c  |..e... .keys_cal|
00012800  63 0d 65 18 14 ea 20 69  63 6f 6e 25 3a 69 63 6f  |c.e... icon%:ico|
00012810  6e 25 3d 2d 31 0d 65 22  13 63 68 61 72 25 3d 62  |n%=-1.e".char%=b|
00012820  6c 6f 63 6b 25 21 32 34  0d 65 2c 2c e7 20 63 68  |lock%!24.e,,. ch|
00012830  61 72 25 3e 3d 34 38 20  80 20 63 68 61 72 25 3c  |ar%>=48 . char%<|
00012840  3d 35 37 20 8c 20 69 63  6f 6e 25 3d 63 68 61 72  |=57 . icon%=char|
00012850  25 2d 34 38 0d 65 36 19  e7 20 21 62 6c 6f 63 6b  |%-48.e6.. !block|
00012860  25 3d 43 43 68 61 6e 64  6c 65 25 20 8c 0d 65 40  |%=CChandle% ..e@|
00012870  0f 20 c8 8e 20 63 68 61  72 25 20 ca 0d 65 4a 13  |. .. char% ..eJ.|
00012880  20 20 c9 20 34 33 3a 69  63 6f 6e 25 3d 31 32 0d  |  . 43:icon%=12.|
00012890  65 54 13 20 20 c9 20 34  35 3a 69 63 6f 6e 25 3d  |eT.  . 45:icon%=|
000128a0  31 33 0d 65 5e 13 20 20  c9 20 34 32 3a 69 63 6f  |13.e^.  . 42:ico|
000128b0  6e 25 3d 31 34 0d 65 68  13 20 20 c9 20 34 37 3a  |n%=14.eh.  . 47:|
000128c0  69 63 6f 6e 25 3d 31 35  0d 65 72 21 20 20 c9 20  |icon%=15.er!  . |
000128d0  33 35 2c 36 37 2c 39 39  2c 31 32 37 2c 26 31 42  |35,67,99,127,&1B|
000128e0  3a 69 63 6f 6e 25 3d 31  36 0d 65 7c 13 20 20 c9  |:icon%=16.e|.  .|
000128f0  20 34 36 3a 69 63 6f 6e  25 3d 31 30 0d 65 86 16  | 46:icon%=10.e..|
00012900  20 20 c9 20 31 33 2c 36  31 3a 69 63 6f 6e 25 3d  |  . 13,61:icon%=|
00012910  31 31 0d 65 90 06 20 cb  0d 65 9a 05 cd 0d 65 a4  |11.e.. ..e....e.|
00012920  3f e7 20 69 63 6f 6e 25  3e 2d 31 20 8c 20 f2 63  |?. icon%>-1 . .c|
00012930  61 6c 63 61 6c 61 74 6f  72 28 69 63 6f 6e 25 29  |alcalator(icon%)|
00012940  20 8b 20 c8 99 22 57 69  6d 70 5f 50 72 6f 63 65  | . .."Wimp_Proce|
00012950  73 73 4b 65 79 22 2c 63  68 61 72 25 0d 65 ae 05  |ssKey",char%.e..|
00012960  e1 0d 65 b8 04 0d 65 c2  04 0d 65 cc 19 dd 20 f2  |..e...e...e... .|
00012970  62 75 69 6c 64 5f 6e 61  6d 65 5f 77 69 6e 64 6f  |build_name_windo|
00012980  77 47 0d 65 d6 0e ea 20  69 63 6f 6e 25 2c 79 25  |wG.e... icon%,y%|
00012990  0d 65 e0 34 f2 64 65 6c  65 74 65 5f 69 63 6f 6e  |.e.4.delete_icon|
000129a0  28 4e 47 68 61 6e 64 6c  65 25 2c 34 39 2c 28 63  |(NGhandle%,49,(c|
000129b0  72 65 61 74 65 25 3c 30  29 29 3a f4 20 6d 65 73  |reate%<0)):. mes|
000129c0  73 61 67 65 0d 65 ea 34  f2 64 65 6c 65 74 65 5f  |sage.e.4.delete_|
000129d0  69 63 6f 6e 28 4e 47 68  61 6e 64 6c 65 25 2c 35  |icon(NGhandle%,5|
000129e0  30 2c 28 63 72 65 61 74  65 25 3d 30 29 29 3a f4  |0,(create%=0)):.|
000129f0  20 6d 65 73 73 61 67 65  0d 65 f4 2a f2 64 65 6c  | message.e.*.del|
00012a00  65 74 65 5f 69 63 6f 6e  28 4e 47 68 61 6e 64 6c  |ete_icon(NGhandl|
00012a10  65 25 2c 35 31 2c 28 63  72 65 61 74 65 25 3d 30  |e%,51,(create%=0|
00012a20  29 29 0d 65 fe 2a f2 64  65 6c 65 74 65 5f 69 63  |)).e.*.delete_ic|
00012a30  6f 6e 28 4e 47 68 61 6e  64 6c 65 25 2c 35 32 2c  |on(NGhandle%,52,|
00012a40  28 63 72 65 61 74 65 25  3d 30 29 29 0d 66 08 2a  |(create%=0)).f.*|
00012a50  f2 64 65 6c 65 74 65 5f  69 63 6f 6e 28 4e 47 68  |.delete_icon(NGh|
00012a60  61 6e 64 6c 65 25 2c 34  36 2c 28 63 72 65 61 74  |andle%,46,(creat|
00012a70  65 25 3d 30 29 29 0d 66  12 2a f2 64 65 6c 65 74  |e%=0)).f.*.delet|
00012a80  65 5f 69 63 6f 6e 28 4e  47 68 61 6e 64 6c 65 25  |e_icon(NGhandle%|
00012a90  2c 34 37 2c 28 63 72 65  61 74 65 25 3d 30 29 29  |,47,(create%=0))|
00012aa0  0d 66 1c 2a f2 64 65 6c  65 74 65 5f 69 63 6f 6e  |.f.*.delete_icon|
00012ab0  28 4e 47 68 61 6e 64 6c  65 25 2c 35 34 2c 28 63  |(NGhandle%,54,(c|
00012ac0  72 65 61 74 65 25 3c 30  29 29 0d 66 26 1a f2 73  |reate%<0)).f&..s|
00012ad0  68 61 64 65 5f 69 74 65  6d 28 6d 65 6e 75 25 2c  |hade_item(menu%,|
00012ae0  31 2c 31 29 0d 66 30 1d  e7 20 4e 63 6f 75 6e 74  |1,1).f0.. Ncount|
00012af0  25 20 8c 20 f2 63 6c 65  61 72 5f 73 70 61 63 65  |% . .clear_space|
00012b00  73 0d 66 3a 18 4e 61 6d  65 4e 6f 25 3d 2d 28 4e  |s.f:.NameNo%=-(N|
00012b10  63 6f 75 6e 74 25 3d 30  29 0d 66 44 25 f2 73 65  |count%=0).fD%.se|
00012b20  74 5f 6e 65 77 5f 6e 61  6d 65 5f 6c 65 76 65 6c  |t_new_name_level|
00012b30  73 28 4e 63 6f 75 6e 74  25 2b 31 2c 30 29 0d 66  |s(Ncount%+1,0).f|
00012b40  4e 12 e3 20 69 63 6f 6e  25 3d 31 20 b8 20 34 32  |N.. icon%=1 . 42|
00012b50  0d 66 58 24 20 f2 73 65  6c 65 63 74 5f 69 63 6f  |.fX$ .select_ico|
00012b60  6e 28 4e 47 68 61 6e 64  6c 65 25 2c 69 63 6f 6e  |n(NGhandle%,icon|
00012b70  25 2c 30 29 0d 66 62 3f  20 f2 64 65 6c 65 74 65  |%,0).fb? .delete|
00012b80  5f 69 63 6f 6e 28 4e 47  68 61 6e 64 6c 65 25 2c  |_icon(NGhandle%,|
00012b90  69 63 6f 6e 25 2c 28 69  63 6f 6e 25 3e 4e 63 6f  |icon%,(icon%>Nco|
00012ba0  75 6e 74 25 2d 28 4e 63  6f 75 6e 74 25 3c 34 32  |unt%-(Ncount%<42|
00012bb0  29 29 29 0d 66 6c 05 ed  0d 66 76 44 e7 20 4e 63  |))).fl...fvD. Nc|
00012bc0  6f 75 6e 74 25 3c 34 32  20 8c 20 e7 20 4e 63 6f  |ount%<42 . . Nco|
00012bd0  75 6e 74 25 3d 30 20 8c  20 f2 73 65 6c 65 63 74  |unt%=0 . .select|
00012be0  5f 69 63 6f 6e 28 4e 47  68 61 6e 64 6c 65 25 2c  |_icon(NGhandle%,|
00012bf0  4e 63 6f 75 6e 74 25 2b  31 2c 31 29 0d 66 80 61  |Ncount%+1,1).f.a|
00012c00  e7 20 63 72 65 61 74 65  25 20 8c 20 24 4e 74 69  |. create% . $Nti|
00012c10  74 6c 65 62 75 66 66 25  3d 24 6c 6f 61 64 62 75  |tlebuff%=$loadbu|
00012c20  66 66 25 2b 22 20 65 64  69 74 69 6e 67 20 73 63  |ff%+" editing sc|
00012c30  72 65 65 6e 22 20 8b 20  24 4e 74 69 74 6c 65 62  |reen" . $Ntitleb|
00012c40  75 66 66 25 3d 24 6c 6f  61 64 62 75 66 66 25 2b  |uff%=$loadbuff%+|
00012c50  22 20 6e 61 6d 65 20 69  6e 70 75 74 22 0d 66 8a  |" name input".f.|
00012c60  2a 4e 47 68 61 6e 64 6c  65 25 3d a4 63 65 6e 74  |*NGhandle%=.cent|
00012c70  72 65 5f 77 69 6e 64 6f  77 28 4e 47 68 61 6e 64  |re_window(NGhand|
00012c80  6c 65 25 2c 22 22 29 0d  66 94 1b f2 63 6c 6f 73  |le%,"").f...clos|
00012c90  65 5f 77 69 6e 64 6f 77  28 43 68 61 6e 64 6c 65  |e_window(Chandle|
00012ca0  25 29 0d 66 9e 17 f2 6c  6f 61 64 62 6f 78 5f 77  |%).f...loadbox_w|
00012cb0  69 6e 64 6f 77 73 28 30  29 0d 66 a8 30 e7 20 4e  |indows(0).f.0. N|
00012cc0  63 6f 75 6e 74 25 3d 30  20 8c 20 f2 70 6c 61 63  |count%=0 . .plac|
00012cd0  65 5f 6e 61 6d 65 5f 63  61 72 65 74 28 4e 63 6f  |e_name_caret(Nco|
00012ce0  75 6e 74 25 2b 31 2c 30  29 0d 66 b2 05 e1 0d 66  |unt%+1,0).f....f|
00012cf0  bc 04 0d 66 c6 04 0d 66  d0 13 dd 20 f2 63 6c 65  |...f...f... .cle|
00012d00  61 72 5f 73 70 61 63 65  73 0d 66 da 15 ea 20 6e  |ar_spaces.f... n|
00012d10  65 77 70 6f 73 25 2c 6f  6c 64 70 6f 73 25 0d 66  |ewpos%,oldpos%.f|
00012d20  e4 17 6e 65 77 70 6f 73  25 3d 30 3a 6f 6c 64 70  |..newpos%=0:oldp|
00012d30  6f 73 25 3d 30 0d 66 ee  05 f5 0d 66 f8 1c 20 6e  |os%=0.f....f.. n|
00012d40  65 77 70 6f 73 25 20 2b  3d 31 3a 6f 6c 64 70 6f  |ewpos% +=1:oldpo|
00012d50  73 25 20 2b 3d 31 0d 67  02 2b 20 c8 95 20 6e 61  |s% +=1.g.+ .. na|
00012d60  6d 65 24 28 6f 6c 64 70  6f 73 25 29 3d 22 22 20  |me$(oldpos%)="" |
00012d70  80 20 6f 6c 64 70 6f 73  25 3c 4e 63 6f 75 6e 74  |. oldpos%<Ncount|
00012d80  25 0d 67 0c 11 20 20 6f  6c 64 70 6f 73 25 20 2b  |%.g..  oldpos% +|
00012d90  3d 31 0d 67 16 06 20 ce  0d 67 20 1b 20 e7 20 6e  |=1.g.. ..g . . n|
00012da0  61 6d 65 24 28 6f 6c 64  70 6f 73 25 29 3c 3e 22  |ame$(oldpos%)<>"|
00012db0  22 20 8c 0d 67 2a 23 20  20 6e 61 6d 65 24 28 6e  |" ..g*#  name$(n|
00012dc0  65 77 70 6f 73 25 29 3d  6e 61 6d 65 24 28 6f 6c  |ewpos%)=name$(ol|
00012dd0  64 70 6f 73 25 29 0d 67  34 49 20 20 41 6c 65 76  |dpos%).g4I  Alev|
00012de0  65 6c 25 28 6e 65 77 70  6f 73 25 29 3d 41 6c 65  |el%(newpos%)=Ale|
00012df0  76 65 6c 25 28 6f 6c 64  70 6f 73 25 29 3a 53 6c  |vel%(oldpos%):Sl|
00012e00  65 76 65 6c 25 28 6e 65  77 70 6f 73 25 29 3d 53  |evel%(newpos%)=S|
00012e10  6c 65 76 65 6c 25 28 6f  6c 64 70 6f 73 25 29 0d  |level%(oldpos%).|
00012e20  67 3e 4b 20 20 4d 48 6c  65 76 65 6c 25 28 6e 65  |g>K  MHlevel%(ne|
00012e30  77 70 6f 73 25 29 3d 4d  48 6c 65 76 65 6c 25 28  |wpos%)=MHlevel%(|
00012e40  6f 6c 64 70 6f 73 25 29  3a 48 6c 65 76 65 6c 25  |oldpos%):Hlevel%|
00012e50  28 6e 65 77 70 6f 73 25  29 3d 48 6c 65 76 65 6c  |(newpos%)=Hlevel|
00012e60  25 28 6f 6c 64 70 6f 73  25 29 0d 67 48 43 20 20  |%(oldpos%).gHC  |
00012e70  74 72 69 65 73 25 28 6e  65 77 70 6f 73 25 29 3d  |tries%(newpos%)=|
00012e80  74 72 69 65 73 25 28 6f  6c 64 70 6f 73 25 29 3a  |tries%(oldpos%):|
00012e90  6d 6f 64 65 25 28 6e 65  77 70 6f 73 25 29 3d 6d  |mode%(newpos%)=m|
00012ea0  6f 64 65 25 28 6f 6c 64  70 6f 73 25 29 0d 67 52  |ode%(oldpos%).gR|
00012eb0  43 20 20 66 6f 72 63 65  25 28 6e 65 77 70 6f 73  |C  force%(newpos|
00012ec0  25 29 3d 66 6f 72 63 65  25 28 6f 6c 64 70 6f 73  |%)=force%(oldpos|
00012ed0  25 29 3a 61 75 74 6f 25  28 6e 65 77 70 6f 73 25  |%):auto%(newpos%|
00012ee0  29 3d 61 75 74 6f 25 28  6f 6c 64 70 6f 73 25 29  |)=auto%(oldpos%)|
00012ef0  0d 67 5c 51 20 20 61 75  74 6f 68 65 6c 70 25 28  |.g\Q  autohelp%(|
00012f00  6e 65 77 70 6f 73 25 29  3d 61 75 74 6f 68 65 6c  |newpos%)=autohel|
00012f10  70 25 28 6f 6c 64 70 6f  73 25 29 3a 6f 70 65 72  |p%(oldpos%):oper|
00012f20  61 74 6f 72 25 28 6e 65  77 70 6f 73 25 29 3d 6f  |ator%(newpos%)=o|
00012f30  70 65 72 61 74 6f 72 25  28 6f 6c 64 70 6f 73 25  |perator%(oldpos%|
00012f40  29 0d 67 66 4f 20 20 6e  6f 5f 71 75 65 73 74 25  |).gfO  no_quest%|
00012f50  28 6e 65 77 70 6f 73 25  29 3d 6e 6f 5f 71 75 65  |(newpos%)=no_que|
00012f60  73 74 25 28 6f 6c 64 70  6f 73 25 29 3a 74 69 6d  |st%(oldpos%):tim|
00012f70  65 6c 69 6d 25 28 6e 65  77 70 6f 73 25 29 3d 74  |elim%(newpos%)=t|
00012f80  69 6d 65 6c 69 6d 25 28  6f 6c 64 70 6f 73 25 29  |imelim%(oldpos%)|
00012f90  0d 67 70 47 20 20 4e 6f  74 69 6d 65 72 25 28 6e  |.gpG  Notimer%(n|
00012fa0  65 77 70 6f 73 25 29 3d  4e 6f 74 69 6d 65 72 25  |ewpos%)=Notimer%|
00012fb0  28 6f 6c 64 70 6f 73 25  29 3a 63 61 6c 63 25 28  |(oldpos%):calc%(|
00012fc0  6e 65 77 70 6f 73 25 29  3d 63 61 6c 63 25 28 6f  |newpos%)=calc%(o|
00012fd0  6c 64 70 6f 73 25 29 0d  67 7a 43 20 20 73 63 6f  |ldpos%).gzC  sco|
00012fe0  72 65 25 28 6e 65 77 70  6f 73 25 29 3d 73 63 6f  |re%(newpos%)=sco|
00012ff0  72 65 25 28 6f 6c 64 70  6f 73 25 29 3a 6e 65 78  |re%(oldpos%):nex|
00013000  74 25 28 6e 65 77 70 6f  73 25 29 3d 6e 65 78 74  |t%(newpos%)=next|
00013010  25 28 6f 6c 64 70 6f 73  25 29 0d 67 84 47 20 20  |%(oldpos%).g.G  |
00013020  73 74 6f 70 25 28 6e 65  77 70 6f 73 25 29 3d 73  |stop%(newpos%)=s|
00013030  74 6f 70 25 28 6f 6c 64  70 6f 73 25 29 3a 63 6f  |top%(oldpos%):co|
00013040  6c 6e 61 6d 65 25 28 6e  65 77 70 6f 73 25 29 3d  |lname%(newpos%)=|
00013050  63 6f 6c 6e 61 6d 65 25  28 6f 6c 64 70 6f 73 25  |colname%(oldpos%|
00013060  29 0d 67 8e 4d 20 20 65  73 74 69 6d 61 74 65 25  |).g.M  estimate%|
00013070  28 6e 65 77 70 6f 73 25  29 3d 65 73 74 69 6d 61  |(newpos%)=estima|
00013080  74 65 25 28 6f 6c 64 70  6f 73 25 29 3a 42 6f 74  |te%(oldpos%):Bot|
00013090  68 4f 70 25 28 6e 65 77  70 6f 73 25 29 3d 42 6f  |hOp%(newpos%)=Bo|
000130a0  74 68 4f 70 25 28 6f 6c  64 70 6f 73 25 29 0d 67  |thOp%(oldpos%).g|
000130b0  98 4d 20 20 6e 65 77 6c  65 76 52 25 28 6e 65 77  |.M  newlevR%(new|
000130c0  70 6f 73 25 29 3d 6e 65  77 6c 65 76 52 25 28 6f  |pos%)=newlevR%(o|
000130d0  6c 64 70 6f 73 25 29 3a  6e 65 77 6c 65 76 57 25  |ldpos%):newlevW%|
000130e0  28 6e 65 77 70 6f 73 25  29 3d 6e 65 77 6c 65 76  |(newpos%)=newlev|
000130f0  57 25 28 6f 6c 64 70 6f  73 25 29 0d 67 a2 49 20  |W%(oldpos%).g.I |
00013100  20 73 61 76 65 52 25 28  6e 65 77 70 6f 73 25 29  | saveR%(newpos%)|
00013110  3d 73 61 76 65 52 25 28  6f 6c 64 70 6f 73 25 29  |=saveR%(oldpos%)|
00013120  3a 64 65 63 69 6d 61 6c  25 28 6e 65 77 70 6f 73  |:decimal%(newpos|
00013130  25 29 3d 64 65 63 69 6d  61 6c 25 28 6f 6c 64 70  |%)=decimal%(oldp|
00013140  6f 73 25 29 0d 67 ac 49  20 20 6f 77 6e 73 75 6d  |os%).g.I  ownsum|
00013150  25 28 6e 65 77 70 6f 73  25 29 3d 6f 77 6e 73 75  |%(newpos%)=ownsu|
00013160  6d 25 28 6f 6c 64 70 6f  73 25 29 3a 73 70 65 65  |m%(oldpos%):spee|
00013170  63 68 25 28 6e 65 77 70  6f 73 25 29 3d 73 70 65  |ch%(newpos%)=spe|
00013180  65 63 68 25 28 6f 6c 64  70 6f 73 25 29 0d 67 b6  |ech%(oldpos%).g.|
00013190  06 20 cc 0d 67 c0 11 20  20 6e 65 77 70 6f 73 25  |. ..g..  newpos%|
000131a0  20 2d 3d 31 0d 67 ca 06  20 cd 0d 67 d4 15 fd 20  | -=1.g.. ..g... |
000131b0  6f 6c 64 70 6f 73 25 3d  4e 63 6f 75 6e 74 25 0d  |oldpos%=Ncount%.|
000131c0  67 de 27 4e 63 6f 75 6e  74 25 3d 6e 65 77 70 6f  |g.'Ncount%=newpo|
000131d0  73 25 3a 6e 61 6d 65 24  28 4e 63 6f 75 6e 74 25  |s%:name$(Ncount%|
000131e0  2b 31 29 3d 22 22 0d 67  e8 05 e1 0d 67 f2 04 0d  |+1)="".g....g...|
000131f0  67 fc 04 0d 68 06 25 dd  20 f2 70 6c 61 63 65 5f  |g...h.%. .place_|
00013200  6e 61 6d 65 5f 63 61 72  65 74 28 70 6f 73 25 2c  |name_caret(pos%,|
00013210  72 65 64 72 61 77 25 29  0d 68 10 2f 63 61 72 65  |redraw%).h./care|
00013220  74 78 25 3d a4 63 61 72  65 74 78 28 70 6f 73 25  |tx%=.caretx(pos%|
00013230  29 3a 79 25 3d a4 6e 61  6d 65 70 6f 73 79 28 70  |):y%=.nameposy(p|
00013240  6f 73 25 29 2d 32 38 0d  68 1a 38 c8 99 22 57 69  |os%)-28.h.8.."Wi|
00013250  6d 70 5f 53 65 74 43 61  72 65 74 50 6f 73 69 74  |mp_SetCaretPosit|
00013260  69 6f 6e 22 2c 4e 47 68  61 6e 64 6c 65 25 2c 2d  |ion",NGhandle%,-|
00013270  31 2c 63 61 72 65 74 78  25 2c 79 25 2c 33 32 0d  |1,caretx%,y%,32.|
00013280  68 24 22 e7 20 72 65 64  72 61 77 25 20 8c 20 f2  |h$". redraw% . .|
00013290  72 65 64 72 61 77 5f 6e  61 6d 65 28 70 6f 73 25  |redraw_name(pos%|
000132a0  29 0d 68 2e 05 e1 0d 68  38 04 0d 68 42 04 0d 68  |).h....h8..hB..h|
000132b0  4c 1d dd 20 f2 70 6c 61  63 65 5f 63 68 61 72 5f  |L.. .place_char_|
000132c0  63 61 72 65 74 28 70 6f  73 25 29 0d 68 56 2e 78  |caret(pos%).hV.x|
000132d0  25 3d a4 6e 61 6d 65 70  6f 73 78 28 70 6f 73 25  |%=.nameposx(pos%|
000132e0  29 2d 36 3a 79 25 3d a4  6e 61 6d 65 70 6f 73 79  |)-6:y%=.nameposy|
000132f0  28 70 6f 73 25 29 2d 32  38 0d 68 60 19 63 61 72  |(pos%)-28.h`.car|
00013300  65 74 78 25 3d a4 63 61  72 65 74 78 28 70 6f 73  |etx%=.caretx(pos|
00013310  25 29 0d 68 6a 38 c8 99  22 57 69 6d 70 5f 53 65  |%).hj8.."Wimp_Se|
00013320  74 43 61 72 65 74 50 6f  73 69 74 69 6f 6e 22 2c  |tCaretPosition",|
00013330  4e 47 68 61 6e 64 6c 65  25 2c 2d 31 2c 63 61 72  |NGhandle%,-1,car|
00013340  65 74 78 25 2c 79 25 2c  33 32 0d 68 74 35 c8 99  |etx%,y%,32.ht5..|
00013350  22 57 69 6d 70 5f 46 6f  72 63 65 52 65 64 72 61  |"Wimp_ForceRedra|
00013360  77 22 2c 4e 47 68 61 6e  64 6c 65 25 2c 78 25 2c  |w",NGhandle%,x%,|
00013370  79 25 2c 78 25 2b 32 39  38 2c 79 25 2b 33 32 0d  |y%,x%+298,y%+32.|
00013380  68 7e 05 e1 0d 68 88 04  0d 68 92 04 0d 68 9c 18  |h~...h...h...h..|
00013390  dd 20 f2 72 65 64 72 61  77 5f 6e 61 6d 65 28 70  |. .redraw_name(p|
000133a0  6f 73 25 29 0d 68 a6 2e  78 25 3d a4 6e 61 6d 65  |os%).h..x%=.name|
000133b0  70 6f 73 78 28 70 6f 73  25 29 2d 36 3a 79 25 3d  |posx(pos%)-6:y%=|
000133c0  a4 6e 61 6d 65 70 6f 73  79 28 70 6f 73 25 29 2d  |.nameposy(pos%)-|
000133d0  33 32 0d 68 b0 35 c8 99  22 57 69 6d 70 5f 46 6f  |32.h.5.."Wimp_Fo|
000133e0  72 63 65 52 65 64 72 61  77 22 2c 4e 47 68 61 6e  |rceRedraw",NGhan|
000133f0  64 6c 65 25 2c 78 25 2c  79 25 2c 78 25 2b 33 30  |dle%,x%,y%,x%+30|
00013400  36 2c 79 25 2b 34 34 0d  68 ba 05 e1 0d 68 c4 04  |6,y%+44.h....h..|
00013410  0d 68 ce 04 0d 68 d8 1c  dd 20 f2 6e 61 6d 65 5f  |.h...h... .name_|
00013420  69 6e 70 75 74 5f 61 72  65 61 28 70 6f 73 25 29  |input_area(pos%)|
00013430  0d 68 e2 2e 78 25 3d a4  6e 61 6d 65 70 6f 73 78  |.h..x%=.nameposx|
00013440  28 70 6f 73 25 29 2d 36  3a 79 25 3d a4 6e 61 6d  |(pos%)-6:y%=.nam|
00013450  65 70 6f 73 79 28 70 6f  73 25 29 2d 33 32 0d 68  |eposy(pos%)-32.h|
00013460  ec 33 c8 99 22 57 69 6d  70 5f 53 65 74 43 6f 6c  |.3.."Wimp_SetCol|
00013470  6f 75 72 22 2c 30 3a c8  93 20 c8 90 20 6f 78 25  |our",0:.. .. ox%|
00013480  2b 78 25 2c 6f 79 25 2b  79 25 2c 33 30 34 2c 34  |+x%,oy%+y%,304,4|
00013490  30 0d 68 f6 30 c8 99 22  57 69 6d 70 5f 53 65 74  |0.h.0.."Wimp_Set|
000134a0  43 6f 6c 6f 75 72 22 2c  37 3a c8 93 20 6f 78 25  |Colour",7:.. ox%|
000134b0  2b 78 25 2c 6f 79 25 2b  79 25 2c 33 30 34 2c 34  |+x%,oy%+y%,304,4|
000134c0  30 0d 69 00 05 e1 0d 69  0a 04 0d 69 14 04 0d 69  |0.i....i...i...i|
000134d0  1e 2f dd 20 a4 6e 61 6d  65 70 6f 73 78 28 6e 25  |./. .nameposx(n%|
000134e0  29 3d 31 31 30 2d 33 38  34 2a 28 6e 25 3e 31 34  |)=110-384*(n%>14|
000134f0  29 2d 33 38 34 2a 28 6e  25 3e 32 38 29 0d 69 28  |)-384*(n%>28).i(|
00013500  2d dd 20 a4 63 61 72 65  74 78 28 6e 25 29 3d a4  |-. .caretx(n%)=.|
00013510  6e 61 6d 65 70 6f 73 78  28 6e 25 29 2b 31 36 2a  |nameposx(n%)+16*|
00013520  a9 6e 61 6d 65 24 28 6e  25 29 0d 69 32 36 dd 20  |.name$(n%).i26. |
00013530  a4 6e 61 6d 65 70 6f 73  79 28 6e 25 29 3d 2d 31  |.nameposy(n%)=-1|
00013540  39 36 2d 34 38 2a 6e 25  2d 36 37 32 2a 28 6e 25  |96-48*n%-672*(n%|
00013550  3e 31 34 29 2d 36 37 32  2a 28 6e 25 3e 32 38 29  |>14)-672*(n%>28)|
00013560  0d 69 3c 04 0d 69 46 04  0d 69 50 18 dd 20 f2 72  |.i<..iF..iP.. .r|
00013570  65 64 72 61 77 5f 63 6c  61 73 73 5f 6c 69 73 74  |edraw_class_list|
00013580  0d 69 5a 0e ea 20 78 25  2c 79 25 2c 6e 25 0d 69  |.iZ.. x%,y%,n%.i|
00013590  64 68 e7 20 28 63 72 65  61 74 65 25 3c 30 20 84  |dh. (create%<0 .|
000135a0  20 4e 61 6d 65 4e 6f 25  3d 4e 63 6f 75 6e 74 25  | NameNo%=Ncount%|
000135b0  2b 31 29 20 80 20 a4 69  63 6f 6e 5f 73 65 6c 65  |+1) . .icon_sele|
000135c0  63 74 65 64 28 4e 47 68  61 6e 64 6c 65 25 2c 4e  |cted(NGhandle%,N|
000135d0  61 6d 65 4e 6f 25 29 3d  2d 31 20 8c 20 f2 6e 61  |ameNo%)=-1 . .na|
000135e0  6d 65 5f 69 6e 70 75 74  5f 61 72 65 61 28 4e 61  |me_input_area(Na|
000135f0  6d 65 4e 6f 25 29 0d 69  6e 04 0d 69 78 16 e3 20  |meNo%).in..ix.. |
00013600  6e 25 3d 31 20 b8 20 4e  63 6f 75 6e 74 25 2b 31  |n%=1 . Ncount%+1|
00013610  0d 69 82 0f 20 e7 20 6e  25 3c 3d 34 32 20 8c 0d  |.i.. . n%<=42 ..|
00013620  69 8c 27 20 20 78 25 3d  a4 6e 61 6d 65 70 6f 73  |i.'  x%=.namepos|
00013630  78 28 6e 25 29 3a 79 25  3d a4 6e 61 6d 65 70 6f  |x(n%):y%=.namepo|
00013640  73 79 28 6e 25 29 0d 69  96 20 20 20 ec 20 6f 78  |sy(n%).i.   . ox|
00013650  25 2b 78 25 2c 6f 79 25  2b 79 25 3a f1 6e 61 6d  |%+x%,oy%+y%:.nam|
00013660  65 24 28 6e 25 29 0d 69  a0 06 20 cd 0d 69 aa 05  |e$(n%).i.. ..i..|
00013670  ed 0d 69 b4 04 0d 69 be  12 e7 20 4e 63 6f 75 6e  |..i...i... Ncoun|
00013680  74 25 3c 34 32 20 8c 0d  69 c8 44 20 e7 20 6e 61  |t%<42 ..i.D . na|
00013690  6d 65 24 28 4e 63 6f 75  6e 74 25 2b 31 29 3d 22  |me$(Ncount%+1)="|
000136a0  22 20 80 20 a4 69 63 6f  6e 5f 73 65 6c 65 63 74  |" . .icon_select|
000136b0  65 64 28 4e 47 68 61 6e  64 6c 65 25 2c 4e 63 6f  |ed(NGhandle%,Nco|
000136c0  75 6e 74 25 2b 31 29 3d  30 20 8c 0d 69 d2 35 20  |unt%+1)=0 ..i.5 |
000136d0  20 78 25 3d a4 6e 61 6d  65 70 6f 73 78 28 4e 63  | x%=.nameposx(Nc|
000136e0  6f 75 6e 74 25 2b 31 29  3a 79 25 3d a4 6e 61 6d  |ount%+1):y%=.nam|
000136f0  65 70 6f 73 79 28 4e 63  6f 75 6e 74 25 2b 31 29  |eposy(Ncount%+1)|
00013700  0d 69 dc 1b 20 20 c8 99  22 57 69 6d 70 5f 53 65  |.i..  .."Wimp_Se|
00013710  74 43 6f 6c 6f 75 72 22  2c 31 31 0d 69 e6 21 20  |tColour",11.i.! |
00013720  20 ec 20 6f 78 25 2b 78  25 2c 6f 79 25 2b 79 25  | . ox%+x%,oy%+y%|
00013730  3a f1 20 22 49 27 6d 20  6e 65 77 22 0d 69 f0 06  |:. "I'm new".i..|
00013740  20 cd 0d 69 fa 05 cd 0d  6a 04 05 e1 0d 6a 0e 04  | ..i....j....j..|
00013750  0d 6a 18 04 0d 6a 22 16  dd 20 f2 6b 65 79 73 5f  |.j...j".. .keys_|
00013760  6e 61 6d 65 28 70 6f 73  25 29 0d 6a 2c 2e ea 20  |name(pos%).j,.. |
00013770  63 68 25 2c 76 61 6c 69  64 25 2c 6c 65 6e 25 2c  |ch%,valid%,len%,|
00013780  78 25 2c 79 25 2c 66 6c  67 25 3a 63 68 25 3d 62  |x%,y%,flg%:ch%=b|
00013790  6c 6f 63 6b 25 21 32 34  0d 6a 36 96 76 61 6c 69  |lock%!24.j6.vali|
000137a0  64 25 3d 28 28 63 68 25  3e 3d 36 35 20 80 20 63  |d%=((ch%>=65 . c|
000137b0  68 25 3c 3d 39 30 20 84  20 63 68 25 3e 3d 39 37  |h%<=90 . ch%>=97|
000137c0  20 80 20 63 68 25 3c 3d  31 32 32 20 84 20 63 68  | . ch%<=122 . ch|
000137d0  25 3d 33 32 29 20 80 20  a9 6e 61 6d 65 24 28 70  |%=32) . .name$(p|
000137e0  6f 73 25 29 3c 31 38 20  84 20 28 63 68 25 3d 31  |os%)<18 . (ch%=1|
000137f0  32 37 20 84 20 63 68 25  3d 31 33 20 84 20 63 68  |27 . ch%=13 . ch|
00013800  25 3d 38 20 84 20 63 68  25 3d 26 31 38 43 29 20  |%=8 . ch%=&18C) |
00013810  80 20 6e 61 6d 65 24 28  70 6f 73 25 29 3c 3e 22  |. name$(pos%)<>"|
00013820  22 20 80 20 4e 61 6d 65  4e 6f 25 3e 30 29 0d 6a  |" . NameNo%>0).j|
00013830  40 1f e7 20 63 68 25 3d  31 33 20 8c 20 66 6c 67  |@.. ch%=13 . flg|
00013840  25 3d a4 63 68 65 63 6b  5f 6e 61 6d 65 0d 6a 4a  |%=.check_name.jJ|
00013850  11 e7 20 66 6c 67 25 3d  2d 31 20 8c 20 e1 0d 6a  |.. flg%=-1 . ..j|
00013860  54 2a e7 20 76 61 6c 69  64 25 3d 30 20 8c 20 c8  |T*. valid%=0 . .|
00013870  99 22 57 69 6d 70 5f 50  72 6f 63 65 73 73 4b 65  |."Wimp_ProcessKe|
00013880  79 22 2c 63 68 25 3a e1  0d 6a 5e 04 0d 6a 68 1b  |y",ch%:..j^..jh.|
00013890  e7 20 63 68 25 3d 31 33  20 80 20 4e 63 6f 75 6e  |. ch%=13 . Ncoun|
000138a0  74 25 3c 34 32 20 8c 0d  6a 72 10 20 e7 20 63 72  |t%<42 ..jr. . cr|
000138b0  65 61 74 65 25 20 8c 0d  6a 7c 18 20 20 e7 20 70  |eate% ..j|.  . p|
000138c0  6f 73 25 3c 4e 63 6f 75  6e 74 25 2b 31 20 8c 0d  |os%<Ncount%+1 ..|
000138d0  6a 86 25 20 20 20 f2 73  65 6c 65 63 74 5f 69 63  |j.%   .select_ic|
000138e0  6f 6e 28 4e 47 68 61 6e  64 6c 65 25 2c 70 6f 73  |on(NGhandle%,pos|
000138f0  25 2c 30 29 0d 6a 90 27  20 20 20 f2 73 65 6c 65  |%,0).j.'   .sele|
00013900  63 74 5f 69 63 6f 6e 28  4e 47 68 61 6e 64 6c 65  |ct_icon(NGhandle|
00013910  25 2c 70 6f 73 25 2b 31  2c 31 29 0d 6a 9a 23 20  |%,pos%+1,1).j.# |
00013920  20 20 62 6c 6f 63 6b 25  21 31 36 3d 70 6f 73 25  |  block%!16=pos%|
00013930  2b 31 3a f2 65 64 69 74  5f 6e 61 6d 65 47 0d 6a  |+1:.edit_nameG.j|
00013940  a4 07 20 20 cc 0d 6a ae  30 20 20 20 e7 20 70 6f  |..  ..j.0   . po|
00013950  73 25 3d 4e 63 6f 75 6e  74 25 2b 31 20 80 20 6e  |s%=Ncount%+1 . n|
00013960  61 6d 65 24 28 4e 63 6f  75 6e 74 25 2b 31 29 3c  |ame$(Ncount%+1)<|
00013970  3e 22 22 20 8c 0d 6a b8  19 20 20 20 f4 20 50 52  |>"" ..j..   . PR|
00013980  4f 43 6e 65 77 5f 6e 61  6d 65 28 2d 31 29 0d 6a  |OCnew_name(-1).j|
00013990  c2 1c 20 20 20 f2 72 65  64 72 61 77 5f 6e 61 6d  |..   .redraw_nam|
000139a0  65 28 4e 63 6f 75 6e 74  25 29 0d 6a cc 08 20 20  |e(Ncount%).j..  |
000139b0  20 cd 0d 6a d6 07 20 20  cd 0d 6a e0 06 20 cc 0d  | ..j..  ..j.. ..|
000139c0  6a ea 20 20 20 62 6c 6f  63 6b 25 21 31 36 3d 35  |j.   block%!16=5|
000139d0  30 3a f2 73 65 6c 65 63  74 5f 6e 61 6d 65 47 0d  |0:.select_nameG.|
000139e0  6a f4 06 20 cd 0d 6a fe  05 cd 0d 6b 08 10 e7 20  |j.. ..j....k... |
000139f0  63 68 25 3d 31 33 20 8c  20 e1 0d 6b 12 04 0d 6b  |ch%=13 . ..k...k|
00013a00  1c 69 e7 20 70 6f 73 25  3d 4e 63 6f 75 6e 74 25  |.i. pos%=Ncount%|
00013a10  2b 31 20 8c 20 24 44 65  6d 49 63 25 3d 22 63 61  |+1 . $DemIc%="ca|
00013a20  6e 20 74 72 61 63 6b 20  75 70 20 74 6f 20 34 32  |n track up to 42|
00013a30  20 63 68 69 6c 64 72 65  6e 2e 22 3a 44 65 6d 68  | children.":Demh|
00013a40  61 6e 64 6c 65 25 3d a4  63 65 6e 74 72 65 5f 77  |andle%=.centre_w|
00013a50  69 6e 64 6f 77 28 44 65  6d 68 61 6e 64 6c 65 25  |indow(Demhandle%|
00013a60  2c 22 59 22 29 3a e1 0d  6b 26 04 0d 6b 30 27 e7  |,"Y"):..k&..k0'.|
00013a70  20 28 63 68 25 3c 3e 31  32 37 20 80 20 63 68 25  | (ch%<>127 . ch%|
00013a80  3c 3e 38 20 80 20 63 68  25 3c 3e 26 31 38 43 29  |<>8 . ch%<>&18C)|
00013a90  20 8c 0d 6b 3a 21 20 6e  61 6d 65 24 28 70 6f 73  | ..k:! name$(pos|
00013aa0  25 29 3d 6e 61 6d 65 24  28 70 6f 73 25 29 2b bd  |%)=name$(pos%)+.|
00013ab0  63 68 25 0d 6b 44 05 cc  0d 6b 4e 19 20 6c 65 6e  |ch%.kD...kN. len|
00013ac0  25 3d a9 20 6e 61 6d 65  24 28 70 6f 73 25 29 2d  |%=. name$(pos%)-|
00013ad0  31 0d 6b 58 23 20 6e 61  6d 65 24 28 70 6f 73 25  |1.kX# name$(pos%|
00013ae0  29 3d c0 6e 61 6d 65 24  28 70 6f 73 25 29 2c 6c  |)=.name$(pos%),l|
00013af0  65 6e 25 29 0d 6b 62 05  cd 0d 6b 6c 04 0d 6b 76  |en%).kb...kl..kv|
00013b00  1b f2 70 6c 61 63 65 5f  63 68 61 72 5f 63 61 72  |..place_char_car|
00013b10  65 74 28 70 6f 73 25 29  0d 6b 80 05 e1 0d 6b 8a  |et(pos%).k....k.|
00013b20  04 0d 6b 94 04 0d 6b 9e  24 dd 20 f2 73 65 74 5f  |..k...k.$. .set_|
00013b30  6e 65 77 5f 6e 61 6d 65  5f 6c 65 76 65 6c 73 28  |new_name_levels(|
00013b40  6e 6f 25 2c 6e 6f 32 25  29 0d 6b a8 39 41 6c 65  |no%,no2%).k.9Ale|
00013b50  76 65 6c 25 28 6e 6f 25  29 3d 41 6c 65 76 65 6c  |vel%(no%)=Alevel|
00013b60  25 28 6e 6f 32 25 29 3a  53 6c 65 76 65 6c 25 28  |%(no2%):Slevel%(|
00013b70  6e 6f 25 29 3d 53 6c 65  76 65 6c 25 28 6e 6f 32  |no%)=Slevel%(no2|
00013b80  25 29 0d 6b b2 3b 4d 48  6c 65 76 65 6c 25 28 6e  |%).k.;MHlevel%(n|
00013b90  6f 25 29 3d 4d 48 6c 65  76 65 6c 25 28 6e 6f 32  |o%)=MHlevel%(no2|
00013ba0  25 29 3a 48 6c 65 76 65  6c 25 28 6e 6f 25 29 3d  |%):Hlevel%(no%)=|
00013bb0  48 6c 65 76 65 6c 25 28  6e 6f 32 25 29 0d 6b bc  |Hlevel%(no2%).k.|
00013bc0  1c 74 72 69 65 73 25 28  6e 6f 25 29 3d 74 72 69  |.tries%(no%)=tri|
00013bd0  65 73 25 28 6e 6f 32 25  29 0d 6b c6 69 6d 6f 64  |es%(no2%).k.imod|
00013be0  65 25 28 6e 6f 25 29 3d  6d 6f 64 65 25 28 6e 6f  |e%(no%)=mode%(no|
00013bf0  32 25 29 3a 66 6f 72 63  65 25 28 6e 6f 25 29 3d  |2%):force%(no%)=|
00013c00  66 6f 72 63 65 25 28 6e  6f 32 25 29 3a 61 75 74  |force%(no2%):aut|
00013c10  6f 25 28 6e 6f 25 29 3d  61 75 74 6f 25 28 6e 6f  |o%(no%)=auto%(no|
00013c20  32 25 29 3a 61 75 74 6f  68 65 6c 70 25 28 6e 6f  |2%):autohelp%(no|
00013c30  25 29 3d 61 75 74 6f 68  65 6c 70 25 28 6e 6f 32  |%)=autohelp%(no2|
00013c40  25 29 0d 6b d0 ab 6f 70  65 72 61 74 6f 72 25 28  |%).k..operator%(|
00013c50  6e 6f 25 29 3d 6f 70 65  72 61 74 6f 72 25 28 6e  |no%)=operator%(n|
00013c60  6f 32 25 29 3a 6e 6f 5f  71 75 65 73 74 25 28 6e  |o2%):no_quest%(n|
00013c70  6f 25 29 3d 6e 6f 5f 71  75 65 73 74 25 28 6e 6f  |o%)=no_quest%(no|
00013c80  32 25 29 3a 74 69 6d 65  6c 69 6d 25 28 6e 6f 25  |2%):timelim%(no%|
00013c90  29 3d 74 69 6d 65 6c 69  6d 25 28 6e 6f 32 25 29  |)=timelim%(no2%)|
00013ca0  3a 4e 6f 74 69 6d 65 72  25 28 6e 6f 25 29 3d 4e  |:Notimer%(no%)=N|
00013cb0  6f 74 69 6d 65 72 25 28  6e 6f 32 25 29 3a 63 61  |otimer%(no2%):ca|
00013cc0  6c 63 25 28 6e 6f 25 29  3d 63 61 6c 63 25 28 6e  |lc%(no%)=calc%(n|
00013cd0  6f 32 25 29 3a 73 63 6f  72 65 25 28 6e 6f 25 29  |o2%):score%(no%)|
00013ce0  3d 73 63 6f 72 65 25 28  6e 6f 32 25 29 0d 6b da  |=score%(no2%).k.|
00013cf0  6b 6e 65 78 74 25 28 6e  6f 25 29 3d 6e 65 78 74  |knext%(no%)=next|
00013d00  25 28 6e 6f 32 25 29 3a  73 74 6f 70 25 28 6e 6f  |%(no2%):stop%(no|
00013d10  25 29 3d 73 74 6f 70 25  28 6e 6f 32 25 29 3a 63  |%)=stop%(no2%):c|
00013d20  6f 6c 6e 61 6d 65 25 28  6e 6f 25 29 3d 63 6f 6c  |olname%(no%)=col|
00013d30  6e 61 6d 65 25 28 6e 6f  32 25 29 3a 70 72 69 6e  |name%(no2%):prin|
00013d40  74 65 72 25 28 6e 6f 25  29 3d 70 72 69 6e 74 65  |ter%(no%)=printe|
00013d50  72 25 28 6e 6f 32 25 29  0d 6b e4 e3 65 73 74 69  |r%(no2%).k..esti|
00013d60  6d 61 74 65 25 28 6e 6f  25 29 3d 65 73 74 69 6d  |mate%(no%)=estim|
00013d70  61 74 65 25 28 6e 6f 32  25 29 3a 6e 65 77 6c 65  |ate%(no2%):newle|
00013d80  76 52 25 28 6e 6f 25 29  3d 6e 65 77 6c 65 76 52  |vR%(no%)=newlevR|
00013d90  25 28 6e 6f 32 25 29 3a  6e 65 77 6c 65 76 57 25  |%(no2%):newlevW%|
00013da0  28 6e 6f 25 29 3d 6e 65  77 6c 65 76 57 25 28 6e  |(no%)=newlevW%(n|
00013db0  6f 32 25 29 3a 42 6f 74  68 4f 70 25 28 6e 6f 25  |o2%):BothOp%(no%|
00013dc0  29 3d 42 6f 74 68 4f 70  25 28 6e 6f 32 25 29 3a  |)=BothOp%(no2%):|
00013dd0  73 61 76 65 52 25 28 6e  6f 25 29 3d 73 61 76 65  |saveR%(no%)=save|
00013de0  52 25 28 6e 6f 32 25 29  3a 64 65 63 69 6d 61 6c  |R%(no2%):decimal|
00013df0  25 28 6e 6f 25 29 3d 64  65 63 69 6d 61 6c 25 28  |%(no%)=decimal%(|
00013e00  6e 6f 32 25 29 3a 6f 77  6e 73 75 6d 25 28 6e 6f  |no2%):ownsum%(no|
00013e10  25 29 3d 6f 77 6e 73 75  6d 25 28 6e 6f 32 25 29  |%)=ownsum%(no2%)|
00013e20  3a 73 70 65 65 63 68 25  28 6e 6f 25 29 3d 73 70  |:speech%(no%)=sp|
00013e30  65 65 63 68 25 28 6e 6f  32 25 29 0d 6b ee 19 f2  |eech%(no2%).k...|
00013e40  73 65 74 5f 70 72 65 66  65 72 65 6e 63 65 73 28  |set_preferences(|
00013e50  6e 6f 25 29 0d 6b f8 05  e1 0d 6c 02 04 0d 6c 0c  |no%).k....l...l.|
00013e60  04 0d 6c 16 18 dd 20 f2  73 74 6f 72 65 5f 6e 61  |..l... .store_na|
00013e70  6d 65 5f 6c 65 76 65 6c  73 0d 6c 20 31 41 6c 65  |me_levels.l 1Ale|
00013e80  76 65 6c 25 28 34 33 29  3d 41 6c 65 76 65 6c 25  |vel%(43)=Alevel%|
00013e90  28 30 29 3a 53 6c 65 76  65 6c 25 28 34 33 29 3d  |(0):Slevel%(43)=|
00013ea0  53 6c 65 76 65 6c 25 28  30 29 0d 6c 2a 33 4d 48  |Slevel%(0).l*3MH|
00013eb0  6c 65 76 65 6c 25 28 34  33 29 3d 4d 48 6c 65 76  |level%(43)=MHlev|
00013ec0  65 6c 25 28 30 29 3a 48  6c 65 76 65 6c 25 28 34  |el%(0):Hlevel%(4|
00013ed0  33 29 3d 48 6c 65 76 65  6c 25 28 30 29 0d 6c 34  |3)=Hlevel%(0).l4|
00013ee0  18 74 72 69 65 73 25 28  34 33 29 3d 74 72 69 65  |.tries%(43)=trie|
00013ef0  73 25 28 30 29 0d 6c 3e  59 6d 6f 64 65 25 28 34  |s%(0).l>Ymode%(4|
00013f00  33 29 3d 6d 6f 64 65 25  28 30 29 3a 66 6f 72 63  |3)=mode%(0):forc|
00013f10  65 25 28 34 33 29 3d 66  6f 72 63 65 25 28 30 29  |e%(43)=force%(0)|
00013f20  3a 61 75 74 6f 25 28 34  33 29 3d 61 75 74 6f 25  |:auto%(43)=auto%|
00013f30  28 30 29 3a 61 75 74 6f  68 65 6c 70 25 28 34 33  |(0):autohelp%(43|
00013f40  29 3d 61 75 74 6f 68 65  6c 70 25 28 30 29 0d 6c  |)=autohelp%(0).l|
00013f50  48 93 6f 70 65 72 61 74  6f 72 25 28 34 33 29 3d  |H.operator%(43)=|
00013f60  6f 70 65 72 61 74 6f 72  25 28 30 29 3a 6e 6f 5f  |operator%(0):no_|
00013f70  71 75 65 73 74 25 28 34  33 29 3d 6e 6f 5f 71 75  |quest%(43)=no_qu|
00013f80  65 73 74 25 28 30 29 3a  74 69 6d 65 6c 69 6d 25  |est%(0):timelim%|
00013f90  28 34 33 29 3d 74 69 6d  65 6c 69 6d 25 28 30 29  |(43)=timelim%(0)|
00013fa0  3a 4e 6f 74 69 6d 65 72  25 28 34 33 29 3d 4e 6f  |:Notimer%(43)=No|
00013fb0  74 69 6d 65 72 25 28 30  29 3a 63 61 6c 63 25 28  |timer%(0):calc%(|
00013fc0  34 33 29 3d 63 61 6c 63  25 28 30 29 3a 73 63 6f  |43)=calc%(0):sco|
00013fd0  72 65 25 28 34 33 29 3d  73 63 6f 72 65 25 28 30  |re%(43)=score%(0|
00013fe0  29 0d 6c 52 5b 6e 65 78  74 25 28 34 33 29 3d 6e  |).lR[next%(43)=n|
00013ff0  65 78 74 25 28 30 29 3a  73 74 6f 70 25 28 34 33  |ext%(0):stop%(43|
00014000  29 3d 73 74 6f 70 25 28  30 29 3a 63 6f 6c 6e 61  |)=stop%(0):colna|
00014010  6d 65 25 28 34 33 29 3d  63 6f 6c 6e 61 6d 65 25  |me%(43)=colname%|
00014020  28 30 29 3a 70 72 69 6e  74 65 72 25 28 34 33 29  |(0):printer%(43)|
00014030  3d 70 72 69 6e 74 65 72  25 28 30 29 0d 6c 5c c3  |=printer%(0).l\.|
00014040  65 73 74 69 6d 61 74 65  25 28 34 33 29 3d 65 73  |estimate%(43)=es|
00014050  74 69 6d 61 74 65 25 28  30 29 3a 6e 65 77 6c 65  |timate%(0):newle|
00014060  76 52 25 28 34 33 29 3d  6e 65 77 6c 65 76 52 25  |vR%(43)=newlevR%|
00014070  28 30 29 3a 6e 65 77 6c  65 76 57 25 28 34 33 29  |(0):newlevW%(43)|
00014080  3d 6e 65 77 6c 65 76 57  25 28 30 29 3a 42 6f 74  |=newlevW%(0):Bot|
00014090  68 4f 70 25 28 34 33 29  3d 42 6f 74 68 4f 70 25  |hOp%(43)=BothOp%|
000140a0  28 30 29 3a 73 61 76 65  52 25 28 34 33 29 3d 73  |(0):saveR%(43)=s|
000140b0  61 76 65 52 25 28 30 29  3a 64 65 63 69 6d 61 6c  |aveR%(0):decimal|
000140c0  25 28 34 33 29 3d 64 65  63 69 6d 61 6c 25 28 30  |%(43)=decimal%(0|
000140d0  29 3a 6f 77 6e 73 75 6d  25 28 34 33 29 3d 6f 77  |):ownsum%(43)=ow|
000140e0  6e 73 75 6d 25 28 30 29  3a 73 70 65 65 63 68 25  |nsum%(0):speech%|
000140f0  28 34 33 29 3d 73 70 65  65 63 68 25 28 30 29 0d  |(43)=speech%(0).|
00014100  6c 66 05 e1 0d 6c 70 04  0d 6c 7a 04 0d 6c 84 16  |lf...lp..lz..l..|
00014110  dd 20 f2 64 65 66 61 75  6c 74 5f 6f 70 74 69 6f  |. .default_optio|
00014120  6e 73 0d 6c 8e 25 f2 73  65 6c 65 63 74 5f 69 63  |ns.l.%.select_ic|
00014130  6f 6e 28 4e 47 68 61 6e  64 6c 65 25 2c 4e 61 6d  |on(NGhandle%,Nam|
00014140  65 4e 6f 25 2c 30 29 0d  6c 98 27 c8 99 22 57 69  |eNo%,0).l.'.."Wi|
00014150  6d 70 5f 53 65 74 43 61  72 65 74 50 6f 73 69 74  |mp_SetCaretPosit|
00014160  69 6f 6e 22 2c 4e 47 68  61 6e 64 6c 65 25 0d 6c  |ion",NGhandle%.l|
00014170  a2 3f e7 20 4e 61 6d 65  4e 6f 25 20 8c 20 c8 99  |.?. NameNo% . ..|
00014180  22 57 69 6d 70 5f 46 6f  72 63 65 52 65 64 72 61  |"Wimp_ForceRedra|
00014190  77 22 2c 4e 47 68 61 6e  64 6c 65 25 2c 30 2c 2d  |w",NGhandle%,0,-|
000141a0  39 37 36 2c 31 31 38 30  2c 2d 31 37 30 0d 6c ac  |976,1180,-170.l.|
000141b0  0d 4e 61 6d 65 4e 6f 25  3d 30 0d 6c b6 18 f2 73  |.NameNo%=0.l...s|
000141c0  65 74 5f 63 6f 6e 66 69  67 5f 74 69 74 6c 65 28  |et_config_title(|
000141d0  30 29 0d 6c c0 17 f2 73  65 74 5f 70 72 65 66 65  |0).l...set_prefe|
000141e0  72 65 6e 63 65 73 28 30  29 0d 6c ca 1a f2 6f 70  |rences(0).l...op|
000141f0  65 6e 5f 77 69 6e 64 6f  77 28 43 68 61 6e 64 6c  |en_window(Chandl|
00014200  65 25 29 0d 6c d4 05 e1  0d 6c de 04 0d 6c e8 04  |e%).l....l...l..|
00014210  0d 6c f2 18 dd 20 f2 6e  65 77 5f 6e 61 6d 65 28  |.l... .new_name(|
00014220  72 65 64 72 61 77 25 29  0d 6c fc 34 e7 20 4e 63  |redraw%).l.4. Nc|
00014230  6f 75 6e 74 25 3c 34 31  20 8c 20 f2 73 65 6c 65  |ount%<41 . .sele|
00014240  63 74 5f 69 63 6f 6e 28  4e 47 68 61 6e 64 6c 65  |ct_icon(NGhandle|
00014250  25 2c 4e 61 6d 65 4e 6f  25 2c 30 29 0d 6d 06 37  |%,NameNo%,0).m.7|
00014260  4e 63 6f 75 6e 74 25 20  2d 3d 28 4e 63 6f 75 6e  |Ncount% -=(Ncoun|
00014270  74 25 3c 34 32 29 3a 4e  61 6d 65 4e 6f 25 3d 4e  |t%<42):NameNo%=N|
00014280  63 6f 75 6e 74 25 2d 28  4e 63 6f 75 6e 74 25 3c  |count%-(Ncount%<|
00014290  34 32 29 0d 6d 10 14 e7  20 4e 63 6f 75 6e 74 25  |42).m... Ncount%|
000142a0  3d 34 32 20 8c 20 e1 0d  6d 1a 27 f2 64 65 6c 65  |=42 . ..m.'.dele|
000142b0  74 65 5f 69 63 6f 6e 28  4e 47 68 61 6e 64 6c 65  |te_icon(NGhandle|
000142c0  25 2c 4e 63 6f 75 6e 74  25 2b 31 2c 30 29 0d 6d  |%,Ncount%+1,0).m|
000142d0  24 27 f2 73 65 6c 65 63  74 5f 69 63 6f 6e 28 4e  |$'.select_icon(N|
000142e0  47 68 61 6e 64 6c 65 25  2c 4e 63 6f 75 6e 74 25  |Ghandle%,Ncount%|
000142f0  2b 31 2c 31 29 0d 6d 2e  25 f2 73 65 74 5f 6e 65  |+1,1).m.%.set_ne|
00014300  77 5f 6e 61 6d 65 5f 6c  65 76 65 6c 73 28 4e 63  |w_name_levels(Nc|
00014310  6f 75 6e 74 25 2b 31 2c  30 29 0d 6d 38 34 e7 20  |ount%+1,0).m84. |
00014320  72 65 64 72 61 77 25 20  8c 20 f2 70 6c 61 63 65  |redraw% . .place|
00014330  5f 6e 61 6d 65 5f 63 61  72 65 74 28 4e 63 6f 75  |_name_caret(Ncou|
00014340  6e 74 25 2b 31 2c 72 65  64 72 61 77 25 29 0d 6d  |nt%+1,redraw%).m|
00014350  42 20 f2 73 65 74 5f 63  6f 6e 66 69 67 5f 74 69  |B .set_config_ti|
00014360  74 6c 65 28 4e 63 6f 75  6e 74 25 2b 31 29 0d 6d  |tle(Ncount%+1).m|
00014370  4c 05 e1 0d 6d 56 04 0d  6d 60 04 0d 6d 6a 1c dd  |L...mV..m`..mj..|
00014380  20 f2 73 65 74 5f 63 6f  6e 66 69 67 5f 74 69 74  | .set_config_tit|
00014390  6c 65 28 6e 6f 25 29 0d  6d 74 0d e7 20 6e 6f 25  |le(no%).mt.. no%|
000143a0  3d 30 20 8c 0d 6d 7e 3f  20 24 74 69 74 6c 65 62  |=0 ..m~? $titleb|
000143b0  75 66 66 43 25 3d 22 47  72 6f 75 70 20 27 22 2b  |uffC%="Group '"+|
000143c0  a4 67 65 74 6c 65 61 66  28 24 73 61 76 65 62 75  |.getleaf($savebu|
000143d0  66 66 25 2c 30 29 2b 22  27 20 64 65 66 61 75 6c  |ff%,0)+"' defaul|
000143e0  74 73 22 0d 6d 88 05 cc  0d 6d 92 27 20 24 74 69  |ts".m....m.' $ti|
000143f0  74 6c 65 62 75 66 66 43  25 3d 22 4f 70 74 69 6f  |tlebuffC%="Optio|
00014400  6e 73 20 22 2b 6e 61 6d  65 24 28 6e 6f 25 29 0d  |ns "+name$(no%).|
00014410  6d 9c 05 cd 0d 6d a6 25  f2 64 65 6c 65 74 65 5f  |m....m.%.delete_|
00014420  69 63 6f 6e 28 43 68 61  6e 64 6c 65 25 2c 36 34  |icon(Chandle%,64|
00014430  2c 28 6e 6f 25 3e 30 29  29 0d 6d b0 25 f2 64 65  |,(no%>0)).m.%.de|
00014440  6c 65 74 65 5f 69 63 6f  6e 28 43 68 61 6e 64 6c  |lete_icon(Chandl|
00014450  65 25 2c 36 36 2c 28 6e  6f 25 3e 30 29 29 0d 6d  |e%,66,(no%>0)).m|
00014460  ba 25 f2 64 65 6c 65 74  65 5f 69 63 6f 6e 28 43  |.%.delete_icon(C|
00014470  68 61 6e 64 6c 65 25 2c  36 38 2c 28 6e 6f 25 3e  |handle%,68,(no%>|
00014480  30 29 29 0d 6d c4 25 f2  64 65 6c 65 74 65 5f 69  |0)).m.%.delete_i|
00014490  63 6f 6e 28 43 68 61 6e  64 6c 65 25 2c 36 35 2c  |con(Chandle%,65,|
000144a0  28 6e 6f 25 3d 30 29 29  0d 6d ce 25 f2 64 65 6c  |(no%=0)).m.%.del|
000144b0  65 74 65 5f 69 63 6f 6e  28 43 68 61 6e 64 6c 65  |ete_icon(Chandle|
000144c0  25 2c 35 31 2c 28 6e 6f  25 3d 30 29 29 0d 6d d8  |%,51,(no%=0)).m.|
000144d0  26 f2 73 68 61 64 65 5f  69 63 6f 6e 28 43 68 61  |&.shade_icon(Cha|
000144e0  6e 64 6c 65 25 2c 36 35  2c 28 67 61 6d 65 25 3e  |ndle%,65,(game%>|
000144f0  30 29 29 0d 6d e2 29 e7  20 6e 6f 25 3d 30 20 8c  |0)).m.). no%=0 .|
00014500  20 f2 73 74 6f 72 65 5f  6e 61 6d 65 5f 6c 65 76  | .store_name_lev|
00014510  65 6c 73 3a 61 6c 74 65  72 25 3d 30 0d 6d ec 1e  |els:alter%=0.m..|
00014520  e7 20 a4 77 69 6e 64 6f  77 5f 6f 70 65 6e 28 43  |. .window_open(C|
00014530  68 61 6e 64 6c 65 25 29  20 8c 0d 6d f6 1c 20 f2  |handle%) ..m.. .|
00014540  63 6c 6f 73 65 5f 77 69  6e 64 6f 77 28 43 68 61  |close_window(Cha|
00014550  6e 64 6c 65 25 29 0d 6e  00 1b 20 f2 6f 70 65 6e  |ndle%).n.. .open|
00014560  5f 77 69 6e 64 6f 77 28  43 68 61 6e 64 6c 65 25  |_window(Chandle%|
00014570  29 0d 6e 0a 05 cd 0d 6e  14 05 e1 0d 6e 1e 04 0d  |).n....n....n...|
00014580  6e 28 04 0d 6e 32 11 dd  20 f2 65 64 69 74 5f 6e  |n(..n2.. .edit_n|
00014590  61 6d 65 47 0d 6e 3c 19  ea 20 69 6e 76 61 6c 69  |ameG.n<.. invali|
000145a0  64 25 2c 69 63 6f 6e 25  2c 66 6c 67 25 0d 6e 46  |d%,icon%,flg%.nF|
000145b0  21 69 63 6f 6e 25 3d 62  6c 6f 63 6b 25 21 31 36  |!icon%=block%!16|
000145c0  3a 6e 6f 74 73 61 76 65  64 4f 25 3d 2d 31 0d 6e  |:notsavedO%=-1.n|
000145d0  50 39 e7 20 69 63 6f 6e  25 3e 3d 31 20 80 20 69  |P9. icon%>=1 . i|
000145e0  63 6f 6e 25 3c 3d 34 32  20 84 20 69 63 6f 6e 25  |con%<=42 . icon%|
000145f0  3e 3d 35 30 20 8c 20 66  6c 67 25 3d a4 63 68 65  |>=50 . flg%=.che|
00014600  63 6b 5f 6e 61 6d 65 0d  6e 5a 1d e7 20 66 6c 67  |ck_name.nZ.. flg|
00014610  25 3d 2d 31 20 80 20 69  63 6f 6e 25 3e 3d 35 30  |%=-1 . icon%>=50|
00014620  20 8c 20 e1 0d 6e 64 68  e7 20 69 63 6f 6e 25 3d  | . ..ndh. icon%=|
00014630  4e 63 6f 75 6e 74 25 2b  31 20 8c 20 24 44 65 6d  |Ncount%+1 . $Dem|
00014640  49 63 25 3d 22 63 61 6e  20 74 72 61 63 6b 20 75  |Ic%="can track u|
00014650  70 20 74 6f 20 34 32 20  63 68 69 6c 64 72 65 6e  |p to 42 children|
00014660  2e 22 3a 44 65 6d 68 61  6e 64 6c 65 25 3d a4 63  |.":Demhandle%=.c|
00014670  65 6e 74 72 65 5f 77 69  6e 64 6f 77 28 44 65 6d  |entre_window(Dem|
00014680  68 61 6e 64 6c 65 25 2c  22 59 22 29 0d 6e 6e 04  |handle%,"Y").nn.|
00014690  0d 6e 78 1c e7 20 69 63  6f 6e 25 3e 3d 31 20 80  |.nx.. icon%>=1 .|
000146a0  20 69 63 6f 6e 25 3c 3d  34 32 20 8c 0d 6e 82 3c  | icon%<=42 ..n.<|
000146b0  20 e7 20 4e 61 6d 65 4e  6f 25 3d 4e 63 6f 75 6e  | . NameNo%=Ncoun|
000146c0  74 25 2b 31 20 80 20 6e  61 6d 65 24 28 4e 61 6d  |t%+1 . name$(Nam|
000146d0  65 4e 6f 25 29 3c 3e 22  22 20 80 20 4e 63 6f 75  |eNo%)<>"" . Ncou|
000146e0  6e 74 25 3c 34 31 20 8c  0d 6e 8c 13 20 20 f4 20  |nt%<41 ..n..  . |
000146f0  4e 63 6f 75 6e 74 25 20  2b 3d 31 0d 6e 96 2e 20  |Ncount% +=1.n.. |
00014700  20 f4 20 50 52 4f 43 64  65 6c 65 74 65 5f 69 63  | . PROCdelete_ic|
00014710  6f 6e 28 4e 47 68 61 6e  64 6c 65 25 2c 4e 63 6f  |on(NGhandle%,Nco|
00014720  75 6e 74 25 2b 31 2c 30  29 0d 6e a0 2c 20 20 f4  |unt%+1,0).n.,  .|
00014730  20 50 52 4f 43 73 65 74  5f 6e 65 77 5f 6e 61 6d  | PROCset_new_nam|
00014740  65 5f 6c 65 76 65 6c 73  28 4e 63 6f 75 6e 74 25  |e_levels(Ncount%|
00014750  2b 31 2c 30 29 0d 6e aa  22 20 20 f4 20 50 52 4f  |+1,0).n."  . PRO|
00014760  43 72 65 64 72 61 77 5f  6e 61 6d 65 28 4e 63 6f  |Credraw_name(Nco|
00014770  75 6e 74 25 2b 31 29 0d  6e b4 06 20 cd 0d 6e be  |unt%+1).n.. ..n.|
00014780  04 0d 6e c8 26 20 e7 20  4e 61 6d 65 4e 6f 25 20  |..n.& . NameNo% |
00014790  8c 20 f2 72 65 64 72 61  77 5f 6e 61 6d 65 28 4e  |. .redraw_name(N|
000147a0  61 6d 65 4e 6f 25 29 0d  6e d2 30 20 4e 61 6d 65  |ameNo%).n.0 Name|
000147b0  4e 6f 25 3d 69 63 6f 6e  25 3a f2 70 6c 61 63 65  |No%=icon%:.place|
000147c0  5f 6e 61 6d 65 5f 63 61  72 65 74 28 4e 61 6d 65  |_name_caret(Name|
000147d0  4e 6f 25 2c 2d 31 29 0d  6e dc 1f 20 f2 73 65 74  |No%,-1).n.. .set|
000147e0  5f 63 6f 6e 66 69 67 5f  74 69 74 6c 65 28 4e 61  |_config_title(Na|
000147f0  6d 65 4e 6f 25 29 0d 6e  e6 56 20 e7 20 4e 61 6d  |meNo%).n.V . Nam|
00014800  65 4e 6f 25 3d 4e 63 6f  75 6e 74 25 2b 31 20 8c  |eNo%=Ncount%+1 .|
00014810  20 f2 73 65 74 5f 6e 65  77 5f 6e 61 6d 65 5f 6c  | .set_new_name_l|
00014820  65 76 65 6c 73 28 4e 61  6d 65 4e 6f 25 2c 30 29  |evels(NameNo%,0)|
00014830  20 8b 20 f2 73 65 74 5f  70 72 65 66 65 72 65 6e  | . .set_preferen|
00014840  63 65 73 28 4e 61 6d 65  4e 6f 25 29 0d 6e f0 05  |ces(NameNo%).n..|
00014850  cd 0d 6e fa 04 0d 6f 04  0e c8 8e 20 69 63 6f 6e  |..n...o.... icon|
00014860  25 20 ca 0d 6f 0e 33 20  c9 20 2d 31 3a e7 20 4e  |% ..o.3 . -1:. N|
00014870  61 6d 65 4e 6f 25 20 8c  20 f2 70 6c 61 63 65 5f  |ameNo% . .place_|
00014880  6e 61 6d 65 5f 63 61 72  65 74 28 4e 61 6d 65 4e  |name_caret(NameN|
00014890  6f 25 2c 2d 31 29 0d 6f  18 3f 20 c9 20 35 30 3a  |o%,-1).o.? . 50:|
000148a0  e7 20 4e 63 6f 75 6e 74  25 3c 34 32 20 8c 20 e7  |. Ncount%<42 . .|
000148b0  20 6e 61 6d 65 24 28 4e  63 6f 75 6e 74 25 2b 31  | name$(Ncount%+1|
000148c0  29 3c 3e 22 22 20 8c 20  f2 6e 65 77 5f 6e 61 6d  |)<>"" . .new_nam|
000148d0  65 28 2d 31 29 0d 6f 22  28 20 20 20 20 20 20 20  |e(-1).o"(       |
000148e0  20 20 f4 20 50 52 4f 43  73 61 76 65 5f 66 69 6c  |  . PROCsave_fil|
000148f0  65 28 24 73 61 76 65 62  75 66 66 25 29 0d 6f 2c  |e($savebuff%).o,|
00014900  3d 20 20 20 20 20 20 20  20 20 f2 63 6c 6f 73 65  |=         .close|
00014910  5f 77 69 6e 64 6f 77 28  4e 47 68 61 6e 64 6c 65  |_window(NGhandle|
00014920  25 29 3a f2 63 6c 6f 73  65 5f 77 69 6e 64 6f 77  |%):.close_window|
00014930  28 43 68 61 6e 64 6c 65  25 29 0d 6f 36 39 20 20  |(Chandle%).o69  |
00014940  20 20 20 20 20 20 20 63  72 65 61 74 65 25 3d 30  |       create%=0|
00014950  3a 4e 61 6d 65 4e 6f 25  3d 30 3a f2 63 6c 6f 73  |:NameNo%=0:.clos|
00014960  65 5f 77 69 6e 64 6f 77  28 45 64 68 61 6e 64 6c  |e_window(Edhandl|
00014970  65 25 29 0d 6f 40 1a 20  c9 20 35 31 3a f2 64 65  |e%).o@. . 51:.de|
00014980  66 61 75 6c 74 5f 6f 70  74 69 6f 6e 73 0d 6f 4a  |fault_options.oJ|
00014990  15 20 c9 20 35 32 3a e7  20 4e 61 6d 65 4e 6f 25  |. . 52:. NameNo%|
000149a0  20 8c 0d 6f 54 42 20 20  20 20 20 20 20 20 20 20  | ..oTB          |
000149b0  f2 73 65 74 5f 63 6f 6e  66 69 67 5f 74 69 74 6c  |.set_config_titl|
000149c0  65 28 4e 61 6d 65 4e 6f  25 29 3a f2 73 65 74 5f  |e(NameNo%):.set_|
000149d0  70 72 65 66 65 72 65 6e  63 65 73 28 4e 61 6d 65  |preferences(Name|
000149e0  4e 6f 25 29 0d 6f 5e 24  20 20 20 20 20 20 20 20  |No%).o^$        |
000149f0  20 20 f2 6f 70 65 6e 5f  77 69 6e 64 6f 77 28 43  |  .open_window(C|
00014a00  68 61 6e 64 6c 65 25 29  0d 6f 68 0e 20 20 20 20  |handle%).oh.    |
00014a10  20 20 20 20 20 cd 0d 6f  72 05 cb 0d 6f 7c 25 f2  |     ..or...o|%.|
00014a20  73 68 61 64 65 5f 69 74  65 6d 28 6d 65 6e 75 25  |shade_item(menu%|
00014a30  2c 31 2c 2d 28 4e 61 6d  65 4e 6f 25 3d 30 29 29  |,1,-(NameNo%=0))|
00014a40  0d 6f 86 05 e1 0d 6f 90  04 0d 6f 9a 04 0d 6f a4  |.o....o...o...o.|
00014a50  11 dd 20 a4 63 68 65 63  6b 5f 6e 61 6d 65 0d 6f  |.. .check_name.o|
00014a60  ae 19 ea 20 6e 25 2c 66  6c 67 25 3a 6e 25 3d 30  |... n%,flg%:n%=0|
00014a70  3a 66 6c 67 25 3d 30 0d  6f b8 05 f5 0d 6f c2 0b  |:flg%=0.o....o..|
00014a80  20 6e 25 20 2b 3d 31 0d  6f cc 4c 20 e7 20 6e 61  | n% +=1.o.L . na|
00014a90  6d 65 24 28 6e 25 29 3d  6e 61 6d 65 24 28 4e 61  |me$(n%)=name$(Na|
00014aa0  6d 65 4e 6f 25 29 20 80  20 6e 25 3c 3e 4e 61 6d  |meNo%) . n%<>Nam|
00014ab0  65 4e 6f 25 20 80 20 6e  61 6d 65 24 28 4e 61 6d  |eNo% . name$(Nam|
00014ac0  65 4e 6f 25 29 3c 3e 22  22 20 8c 20 66 6c 67 25  |eNo%)<>"" . flg%|
00014ad0  3d 2d 31 0d 6f d6 1c fd  20 66 6c 67 25 3d 2d 31  |=-1.o... flg%=-1|
00014ae0  20 84 20 6e 25 3d 4e 63  6f 75 6e 74 25 2b 31 0d  | . n%=Ncount%+1.|
00014af0  6f e0 0c e7 20 66 6c 67  25 20 8c 0d 6f ea 3e 20  |o... flg% ..o.> |
00014b00  6e 61 6d 65 24 28 4e 61  6d 65 4e 6f 25 29 3d 22  |name$(NameNo%)="|
00014b10  22 3a 45 64 68 61 6e 64  6c 65 25 3d a4 63 65 6e  |":Edhandle%=.cen|
00014b20  74 72 65 5f 77 69 6e 64  6f 77 28 45 64 68 61 6e  |tre_window(Edhan|
00014b30  64 6c 65 25 2c 22 59 22  29 0d 6f f4 22 20 f2 70  |dle%,"Y").o." .p|
00014b40  6c 61 63 65 5f 6e 61 6d  65 5f 63 61 72 65 74 28  |lace_name_caret(|
00014b50  4e 61 6d 65 4e 6f 25 2c  2d 31 29 0d 6f fe 05 cc  |NameNo%,-1).o...|
00014b60  0d 70 08 1d 20 f2 63 6c  6f 73 65 5f 77 69 6e 64  |.p.. .close_wind|
00014b70  6f 77 28 45 64 68 61 6e  64 6c 65 25 29 0d 70 12  |ow(Edhandle%).p.|
00014b80  05 cd 0d 70 1c 09 3d 66  6c 67 25 0d 70 26 04 0d  |...p..=flg%.p&..|
00014b90  70 30 04 0d 70 3a 18 dd  20 f2 72 65 73 75 6c 74  |p0..p:.. .result|
00014ba0  73 5f 6e 65 78 74 5f 6e  61 6d 65 0d 70 44 38 ea  |s_next_name.pD8.|
00014bb0  20 6e 25 2c 6c 65 76 24  2c 41 6c 65 76 24 2c 53  | n%,lev$,Alev$,S|
00014bc0  6c 65 76 24 2c 68 65 6c  70 24 2c 73 74 24 3a 52  |lev$,help$,st$:R|
00014bd0  63 6e 74 25 20 2b 3d 32  3a 52 63 6e 74 32 25 20  |cnt% +=2:Rcnt2% |
00014be0  2b 3d 32 0d 70 4e 04 0d  70 58 33 e7 20 6d 6f 64  |+=2.pN..pX3. mod|
00014bf0  65 25 28 4e 61 6d 65 4e  6f 25 29 20 8c 20 6c 65  |e%(NameNo%) . le|
00014c00  76 24 3d c3 48 65 6c 70  6c 65 76 25 20 8b 20 6c  |v$=.Helplev% . l|
00014c10  65 76 24 3d 22 4e 6f 6e  65 22 0d 70 62 64 e7 20  |ev$="None".pbd. |
00014c20  6f 77 6e 73 75 6d 25 28  4e 61 6d 65 4e 6f 25 29  |ownsum%(NameNo%)|
00014c30  3d 30 20 8c 20 41 6c 65  76 24 3d c3 20 41 6c 65  |=0 . Alev$=. Ale|
00014c40  76 65 6c 25 28 4e 61 6d  65 4e 6f 25 29 3a 53 6c  |vel%(NameNo%):Sl|
00014c50  65 76 24 3d c3 20 53 6c  65 76 65 6c 25 28 4e 61  |ev$=. Slevel%(Na|
00014c60  6d 65 4e 6f 25 29 20 8b  20 41 6c 65 76 24 3d 22  |meNo%) . Alev$="|
00014c70  20 2d 22 3a 53 6c 65 76  24 3d 22 20 2d 22 0d 70  | -":Slev$=" -".p|
00014c80  6c 44 e7 20 61 75 74 6f  68 65 6c 70 25 28 4e 61  |lD. autohelp%(Na|
00014c90  6d 65 4e 6f 25 29 20 8c  20 68 65 6c 70 24 3d 22  |meNo%) . help$="|
00014ca0  20 4d 69 6e 20 68 65 6c  70 3a 22 20 8b 20 68 65  | Min help:" . he|
00014cb0  6c 70 24 3d 22 20 48 65  6c 70 20 6c 65 76 65 6c  |lp$=" Help level|
00014cc0  3a 22 0d 70 76 04 0d 70  80 56 73 74 24 3d 22 20  |:".pv..p.Vst$=" |
00014cd0  4e 61 6d 65 3a 20 22 2b  6e 61 6d 65 24 28 4e 61  |Name: "+name$(Na|
00014ce0  6d 65 4e 6f 25 29 2b 22  20 20 53 74 61 72 74 20  |meNo%)+"  Start |
00014cf0  6c 65 76 65 6c 73 3a 20  61 64 64 3a 22 2b 41 6c  |levels: add:"+Al|
00014d00  65 76 24 2b 22 20 73 75  62 3a 22 2b 53 6c 65 76  |ev$+" sub:"+Slev|
00014d10  24 2b 68 65 6c 70 24 2b  6c 65 76 24 0d 70 8a 22  |$+help$+lev$.p."|
00014d20  52 70 74 72 25 3d a4 61  64 64 5f 73 74 72 69 6e  |Rptr%=.add_strin|
00014d30  67 28 52 70 74 72 25 2c  73 74 24 2c 32 29 0d 70  |g(Rptr%,st$,2).p|
00014d40  94 1b f2 73 68 61 64 65  5f 69 74 65 6d 28 72 6d  |...shade_item(rm|
00014d50  65 6e 75 25 2c 30 2c 30  29 0d 70 9e 1b f2 73 68  |enu%,0,0).p...sh|
00014d60  61 64 65 5f 69 74 65 6d  28 72 6d 65 6e 75 25 2c  |ade_item(rmenu%,|
00014d70  33 2c 30 29 0d 70 a8 05  e1 0d 70 b2 04 0d 70 bc  |3,0).p....p...p.|
00014d80  04 0d 70 c6 13 dd 20 f2  73 65 6c 65 63 74 5f 6e  |..p... .select_n|
00014d90  61 6d 65 47 0d 70 d0 2f  ea 20 69 6e 76 61 6c 69  |ameG.p./. invali|
00014da0  64 25 2c 69 63 6f 6e 25  2c 66 6c 67 25 2c 66 6c  |d%,icon%,flg%,fl|
00014db0  67 32 25 3a 69 63 6f 6e  25 3d 62 6c 6f 63 6b 25  |g2%:icon%=block%|
00014dc0  21 31 36 0d 70 da 15 66  6c 67 32 25 3d a4 63 68  |!16.p..flg2%=.ch|
00014dd0  65 63 6b 5f 6e 61 6d 65  0d 70 e4 1d e7 20 66 6c  |eck_name.p... fl|
00014de0  67 32 25 3d 2d 31 20 80  20 69 63 6f 6e 25 3d 35  |g2%=-1 . icon%=5|
00014df0  34 20 8c 20 e1 0d 70 ee  1c e7 20 69 63 6f 6e 25  |4 . ..p... icon%|
00014e00  3e 3d 31 20 80 20 69 63  6f 6e 25 3c 3d 34 32 20  |>=1 . icon%<=42 |
00014e10  8c 0d 70 f8 30 20 e7 20  4e 61 6d 65 4e 6f 25 3d  |..p.0 . NameNo%=|
00014e20  4e 63 6f 75 6e 74 25 2b  31 20 8c 20 f2 72 65 64  |Ncount%+1 . .red|
00014e30  72 61 77 5f 6e 61 6d 65  28 4e 61 6d 65 4e 6f 25  |raw_name(NameNo%|
00014e40  29 0d 71 02 69 20 e7 20  69 63 6f 6e 25 3d 4e 63  |).q.i . icon%=Nc|
00014e50  6f 75 6e 74 25 2b 31 20  8c 20 24 44 65 6d 49 63  |ount%+1 . $DemIc|
00014e60  25 3d 22 63 61 6e 20 74  72 61 63 6b 20 75 70 20  |%="can track up |
00014e70  74 6f 20 34 32 20 63 68  69 6c 64 72 65 6e 2e 22  |to 42 children."|
00014e80  3a 44 65 6d 68 61 6e 64  6c 65 25 3d a4 63 65 6e  |:Demhandle%=.cen|
00014e90  74 72 65 5f 77 69 6e 64  6f 77 28 44 65 6d 68 61  |tre_window(Demha|
00014ea0  6e 64 6c 65 25 2c 22 59  22 29 0d 71 0c 1a 20 4e  |ndle%,"Y").q.. N|
00014eb0  61 6d 65 4e 6f 25 3d 69  63 6f 6e 25 3a 66 6c 67  |ameNo%=icon%:flg|
00014ec0  25 3d 2d 31 0d 71 16 1f  20 f2 73 65 74 5f 63 6f  |%=-1.q.. .set_co|
00014ed0  6e 66 69 67 5f 74 69 74  6c 65 28 4e 61 6d 65 4e  |nfig_title(NameN|
00014ee0  6f 25 29 0d 71 20 1e 20  f2 73 65 74 5f 70 72 65  |o%).q . .set_pre|
00014ef0  66 65 72 65 6e 63 65 73  28 4e 61 6d 65 4e 6f 25  |ferences(NameNo%|
00014f00  29 0d 71 2a 18 20 e7 20  69 63 6f 6e 25 3d 4e 63  |).q*. . icon%=Nc|
00014f10  6f 75 6e 74 25 2b 31 20  8c 0d 71 34 23 20 20 f2  |ount%+1 ..q4#  .|
00014f20  70 6c 61 63 65 5f 6e 61  6d 65 5f 63 61 72 65 74  |place_name_caret|
00014f30  28 4e 61 6d 65 4e 6f 25  2c 2d 31 29 0d 71 3e 06  |(NameNo%,-1).q>.|
00014f40  20 cc 0d 71 48 29 20 20  c8 99 22 57 69 6d 70 5f  | ..qH)  .."Wimp_|
00014f50  53 65 74 43 61 72 65 74  50 6f 73 69 74 69 6f 6e  |SetCaretPosition|
00014f60  22 2c 4e 47 68 61 6e 64  6c 65 25 0d 71 52 06 20  |",NGhandle%.qR. |
00014f70  cd 0d 71 5c 9f 20 e7 20  52 70 74 72 25 2b 39 30  |..q\. . Rptr%+90|
00014f80  2b 34 32 2a 6e 6f 5f 71  75 65 73 74 25 28 4e 61  |+42*no_quest%(Na|
00014f90  6d 65 4e 6f 25 29 3e 34  34 30 30 30 20 80 20 73  |meNo%)>44000 . s|
00014fa0  61 76 65 52 25 28 4e 61  6d 65 4e 6f 25 29 3d 31  |aveR%(NameNo%)=1|
00014fb0  20 8c 20 72 65 73 70 25  3d a4 65 72 72 6f 72 5f  | . resp%=.error_|
00014fc0  6d 65 73 73 61 67 65 28  22 54 68 65 20 72 65 73  |message("The res|
00014fd0  75 6c 74 73 20 66 69 6c  65 20 69 73 20 6e 6f 77  |ults file is now|
00014fe0  20 66 75 6c 6c 2c 20 70  6c 65 61 73 65 20 74 65  | full, please te|
00014ff0  6c 6c 20 79 6f 75 72 20  74 65 61 63 68 65 72 22  |ll your teacher"|
00015000  2c 22 4d 61 74 68 73 42  6f 6f 6b 22 2c 31 37 29  |,"MathsBook",17)|
00015010  0d 71 66 26 20 f2 73 68  61 64 65 5f 69 74 65 6d  |.qf& .shade_item|
00015020  28 6d 65 6e 75 25 2c 31  2c 2d 28 4e 61 6d 65 4e  |(menu%,1,-(NameN|
00015030  6f 25 3d 30 29 29 0d 71  70 05 cd 0d 71 7a 0e e7  |o%=0)).qp...qz..|
00015040  20 66 6c 67 25 20 8c 20  e1 0d 71 84 04 0d 71 8e  | flg% . ..q...q.|
00015050  68 e7 20 4e 63 6f 75 6e  74 25 3c 34 32 20 8c 20  |h. Ncount%<42 . |
00015060  e7 20 69 63 6f 6e 25 3d  2d 31 20 80 20 a4 69 63  |. icon%=-1 . .ic|
00015070  6f 6e 5f 73 65 6c 65 63  74 65 64 28 4e 47 68 61  |on_selected(NGha|
00015080  6e 64 6c 65 25 2c 4e 63  6f 75 6e 74 25 2b 31 29  |ndle%,Ncount%+1)|
00015090  3d 2d 31 20 8c 20 f2 70  6c 61 63 65 5f 6e 61 6d  |=-1 . .place_nam|
000150a0  65 5f 63 61 72 65 74 28  4e 61 6d 65 4e 6f 25 2c  |e_caret(NameNo%,|
000150b0  2d 31 29 3a e1 0d 71 98  59 e7 20 4e 63 6f 75 6e  |-1):..q.Y. Ncoun|
000150c0  74 25 3c 34 32 20 8c 20  e7 20 69 63 6f 6e 25 3d  |t%<42 . . icon%=|
000150d0  35 34 20 80 20 28 4e 61  6d 65 4e 6f 25 3d 4e 63  |54 . (NameNo%=Nc|
000150e0  6f 75 6e 74 25 2b 31 20  84 20 4e 61 6d 65 4e 6f  |ount%+1 . NameNo|
000150f0  25 3d 30 29 20 80 20 6e  61 6d 65 24 28 4e 63 6f  |%=0) . name$(Nco|
00015100  75 6e 74 25 2b 31 29 3d  22 22 20 8c 20 e1 0d 71  |unt%+1)="" . ..q|
00015110  a2 10 e7 20 69 63 6f 6e  25 3d 35 34 20 8c 0d 71  |... icon%=54 ..q|
00015120  ac 1d 20 f2 63 6c 6f 73  65 5f 77 69 6e 64 6f 77  |.. .close_window|
00015130  28 4e 47 68 61 6e 64 6c  65 25 29 0d 71 b6 65 20  |(NGhandle%).q.e |
00015140  f4 20 49 46 20 4e 61 6d  65 4e 6f 25 3d 4e 63 6f  |. IF NameNo%=Nco|
00015150  75 6e 74 25 2b 31 20 41  4e 44 20 6e 61 6d 65 24  |unt%+1 AND name$|
00015160  28 4e 61 6d 65 4e 6f 25  29 3c 3e 22 22 20 54 48  |(NameNo%)<>"" TH|
00015170  45 4e 20 50 52 4f 43 6e  65 77 5f 6e 61 6d 65 28  |EN PROCnew_name(|
00015180  30 29 3a 4e 61 6d 65 4e  6f 25 3d 4e 63 6f 75 6e  |0):NameNo%=Ncoun|
00015190  74 25 3a 6e 6f 74 73 61  76 65 64 4f 25 3d 2d 31  |t%:notsavedO%=-1|
000151a0  0d 71 c0 2c 20 24 74 69  74 6c 65 62 75 66 66 31  |.q., $titlebuff1|
000151b0  25 3d 22 41 64 64 69 74  69 6f 6e 20 22 2b 6e 61  |%="Addition "+na|
000151c0  6d 65 24 28 4e 61 6d 65  4e 6f 25 29 0d 71 ca 2f  |me$(NameNo%).q./|
000151d0  20 24 74 69 74 6c 65 62  75 66 66 32 25 3d 22 53  | $titlebuff2%="S|
000151e0  75 62 74 72 61 63 74 69  6f 6e 20 22 2b 6e 61 6d  |ubtraction "+nam|
000151f0  65 24 28 4e 61 6d 65 4e  6f 25 29 0d 71 d4 2b 20  |e$(NameNo%).q.+ |
00015200  24 74 69 74 6c 65 62 75  66 66 43 25 3d 22 4f 70  |$titlebuffC%="Op|
00015210  74 69 6f 6e 73 20 22 2b  6e 61 6d 65 24 28 4e 61  |tions "+name$(Na|
00015220  6d 65 4e 6f 25 29 0d 71  de 0d 20 73 74 61 72 74  |meNo%).q.. start|
00015230  25 3d 30 0d 71 e8 34 20  e7 20 6f 77 6e 73 75 6d  |%=0.q.4 . ownsum|
00015240  25 28 4e 61 6d 65 4e 6f  25 29 3d 30 20 8c 20 67  |%(NameNo%)=0 . g|
00015250  61 6d 65 25 3d 6f 70 65  72 61 74 6f 72 25 28 4e  |ame%=operator%(N|
00015260  61 6d 65 4e 6f 25 29 0d  71 f2 18 20 e7 20 73 61  |ameNo%).q.. . sa|
00015270  76 65 52 25 28 4e 61 6d  65 4e 6f 25 29 20 8c 0d  |veR%(NameNo%) ..|
00015280  71 fc 3d 20 20 e7 20 52  70 74 72 25 2b 39 30 2b  |q.=  . Rptr%+90+|
00015290  34 32 2a 6e 6f 5f 71 75  65 73 74 25 28 4e 61 6d  |42*no_quest%(Nam|
000152a0  65 4e 6f 25 29 3e 34 34  30 30 30 20 8c 20 f2 72  |eNo%)>44000 . .r|
000152b0  65 73 65 74 5f 72 65 73  75 6c 74 73 0d 72 06 06  |eset_results.r..|
000152c0  20 cd 0d 72 10 1d 20 f2  63 6c 6f 73 65 5f 77 69  | ..r.. .close_wi|
000152d0  6e 64 6f 77 28 45 64 68  61 6e 64 6c 65 25 29 0d  |ndow(Edhandle%).|
000152e0  72 1a 38 20 e7 20 6f 77  6e 73 75 6d 25 28 4e 61  |r.8 . ownsum%(Na|
000152f0  6d 65 4e 6f 25 29 3d 30  20 8c 20 f2 6f 70 65 6e  |meNo%)=0 . .open|
00015300  5f 77 69 6e 64 6f 77 28  68 61 6e 64 6c 65 25 28  |_window(handle%(|
00015310  67 61 6d 65 25 29 29 0d  72 24 26 20 f2 72 65 73  |game%)).r$& .res|
00015320  65 74 5f 67 61 6d 65 3a  6e 65 77 52 25 3d 73 61  |et_game:newR%=sa|
00015330  76 65 52 25 28 4e 61 6d  65 4e 6f 25 29 0d 72 2e  |veR%(NameNo%).r.|
00015340  05 cd 0d 72 38 05 e1 0d  72 42 04 0d 72 4c 04 0d  |...r8...rB..rL..|
00015350  72 56 1d dd 20 f2 70 72  69 6e 74 6f 75 74 5f 72  |rV.. .printout_r|
00015360  65 73 75 6c 74 73 28 61  6c 6c 25 29 0d 72 60 16  |esults(all%).r`.|
00015370  ea 20 66 6c 67 25 2c 68  65 69 67 68 74 25 2c 63  |. flg%,height%,c|
00015380  68 25 0d 72 6a 2b e7 20  61 6c 6c 25 20 8c 20 68  |h%.rj+. all% . h|
00015390  65 69 67 68 74 25 3d 52  63 6e 74 25 20 8b 20 68  |eight%=Rcnt% . h|
000153a0  65 69 67 68 74 25 3d 52  63 6e 74 32 25 0d 72 74  |eight%=Rcnt2%.rt|
000153b0  17 68 65 69 67 68 74 25  3d 2d 33 32 2a 68 65 69  |.height%=-32*hei|
000153c0  67 68 74 25 0d 72 7e 07  ea 20 85 0d 72 88 55 ee  |ght%.r~.. ..r.U.|
000153d0  20 85 20 ea 3a f7 20 85  3a c8 99 22 50 44 72 69  | . .:. .:.."PDri|
000153e0  76 65 72 5f 41 62 6f 72  74 4a 6f 62 22 2c 63 68  |ver_AbortJob",ch|
000153f0  25 3a d9 23 63 68 25 3a  c8 99 22 48 6f 75 72 67  |%:.#ch%:.."Hourg|
00015400  6c 61 73 73 5f 4f 66 66  22 3a f2 65 72 72 6f 72  |lass_Off":.error|
00015410  28 22 4d 61 74 68 73 5f  54 61 73 6b 22 29 3a e1  |("Maths_Task"):.|
00015420  0d 72 92 04 0d 72 9c 21  f2 73 65 74 5f 75 70 5f  |.r...r.!.set_up_|
00015430  70 72 69 6e 74 6f 75 74  28 63 68 25 2c 68 65 69  |printout(ch%,hei|
00015440  67 68 74 25 29 0d 72 a6  04 0d 72 b0 1d c8 99 22  |ght%).r...r...."|
00015450  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 53 65 74 47  |ColourTrans_SetG|
00015460  43 4f 4c 22 2c 30 0d 72  ba 2c c8 99 22 50 44 72  |COL",0.r.,.."PDr|
00015470  69 76 65 72 5f 44 72 61  77 50 61 67 65 22 2c 31  |iver_DrawPage",1|
00015480  2c 62 6c 6f 63 6b 25 2c  30 2c 30 20 b8 20 66 6c  |,block%,0,0 . fl|
00015490  67 25 0d 72 c4 0b c8 95  20 66 6c 67 25 0d 72 ce  |g%.r.... flg%.r.|
000154a0  22 20 f2 73 65 74 5f 72  65 73 75 6c 74 73 5f 77  |" .set_results_w|
000154b0  69 6e 64 6f 77 28 30 2c  30 2c 61 6c 6c 25 29 0d  |indow(0,0,all%).|
000154c0  72 d8 2c 20 c8 99 22 50  44 72 69 76 65 72 5f 47  |r., .."PDriver_G|
000154d0  65 74 52 65 63 74 61 6e  67 6c 65 22 2c 2c 62 6c  |etRectangle",,bl|
000154e0  6f 63 6b 25 20 b8 20 66  6c 67 25 0d 72 e2 05 ce  |ock% . flg%.r...|
000154f0  0d 72 ec 04 0d 72 f6 16  f2 65 6e 64 5f 70 72 69  |.r...r...end_pri|
00015500  6e 74 6f 75 74 28 63 68  25 29 0d 73 00 07 f7 20  |ntout(ch%).s... |
00015510  85 0d 73 0a 05 e1 0d 73  14 04 0d 73 1e 04 0d 73  |..s....s...s...s|
00015520  28 1f dd 20 f2 72 65 73  75 6c 74 73 5f 74 65 78  |(.. .results_tex|
00015530  74 5f 66 69 6c 65 28 66  69 6c 65 24 29 0d 73 32  |t_file(file$).s2|
00015540  16 ea 20 63 68 25 3a 6e  6f 74 73 61 76 65 64 52  |.. ch%:notsavedR|
00015550  25 3d 30 0d 73 3c 0f 63  68 25 3d ae 20 66 69 6c  |%=0.s<.ch%=. fil|
00015560  65 24 0d 73 46 12 e3 20  6e 25 3d 30 20 b8 20 52  |e$.sF.. n%=0 . R|
00015570  70 74 72 25 0d 73 50 19  20 d5 23 63 68 25 2c 3f  |ptr%.sP. .#ch%,?|
00015580  28 72 65 73 75 6c 74 73  25 2b 6e 25 29 0d 73 5a  |(results%+n%).sZ|
00015590  05 ed 0d 73 64 09 d9 23  63 68 25 0d 73 6e 1d ff  |...sd..#ch%.sn..|
000155a0  20 22 53 65 74 54 79 70  65 20 22 2b 66 69 6c 65  | "SetType "+file|
000155b0  24 2b 22 20 46 46 46 22  0d 73 78 32 24 73 61 76  |$+" FFF".sx2$sav|
000155c0  65 74 65 78 74 62 75 66  66 25 3d 66 69 6c 65 24  |etextbuff%=file$|
000155d0  3a f2 72 65 73 65 74 5f  69 63 6f 6e 28 53 56 68  |:.reset_icon(SVh|
000155e0  61 6e 64 6c 65 32 25 2c  31 29 0d 73 82 05 e1 0d  |andle2%,1).s....|
000155f0  73 8c 04 0d 73 96 04 0d  73 a0 27 dd 20 f2 73 65  |s...s...s.'. .se|
00015600  74 5f 72 65 73 75 6c 74  73 5f 77 69 6e 64 6f 77  |t_results_window|
00015610  28 6f 78 25 2c 6f 79 25  2c 61 6c 6c 25 29 0d 73  |(ox%,oy%,all%).s|
00015620  aa 1b ea 20 78 25 2c 79  25 2c 70 74 72 25 2c 63  |... x%,y%,ptr%,c|
00015630  68 25 2c 63 68 24 2c 58  25 0d 73 b4 18 79 25 3d  |h%,ch$,X%.s..y%=|
00015640  2d 33 32 3a 70 74 72 25  3d 2d 31 3a 58 25 3d 2d  |-32:ptr%=-1:X%=-|
00015650  31 0d 73 be 05 f5 0d 73  c8 0d 20 70 74 72 25 20  |1.s....s.. ptr% |
00015660  2b 3d 31 0d 73 d2 22 20  63 68 25 3d 3f 28 72 65  |+=1.s." ch%=?(re|
00015670  73 75 6c 74 73 25 2b 70  74 72 25 29 3a 63 68 24  |sults%+ptr%):ch$|
00015680  3d bd 63 68 25 0d 73 dc  04 0d 73 e6 19 20 e7 20  |=.ch%.s...s.. . |
00015690  63 68 24 3d 22 28 22 20  80 20 61 6c 6c 25 3d 30  |ch$="(" . all%=0|
000156a0  20 8c 0d 73 f0 1d 20 20  c8 95 20 63 68 25 3c 3e  | ..s..  .. ch%<>|
000156b0  31 30 20 80 20 70 74 72  25 3c 52 70 74 72 25 0d  |10 . ptr%<Rptr%.|
000156c0  73 fa 24 20 20 20 70 74  72 25 20 2b 3d 31 3a 63  |s.$   ptr% +=1:c|
000156d0  68 25 3d 3f 28 72 65 73  75 6c 74 73 25 2b 70 74  |h%=?(results%+pt|
000156e0  72 25 29 0d 74 04 07 20  20 ce 0d 74 0e 2e 20 20  |r%).t..  ..t..  |
000156f0  e7 20 3f 28 72 65 73 75  6c 74 73 25 2b 70 74 72  |. ?(results%+ptr|
00015700  25 2b 31 29 3d 31 30 20  8c 20 70 74 72 25 20 2b  |%+1)=10 . ptr% +|
00015710  3d 31 3a 58 25 3d 2d 31  0d 74 18 06 20 cc 0d 74  |=1:X%=-1.t.. ..t|
00015720  22 11 20 20 e7 20 63 68  25 3c 3e 31 30 20 8c 0d  |".  . ch%<>10 ..|
00015730  74 2c 61 20 20 20 e7 20  79 25 2b 6f 79 25 3e 3d  |t,a   . y%+oy%>=|
00015740  62 6c 6f 63 6b 25 21 33  32 20 80 20 79 25 2b 6f  |block%!32 . y%+o|
00015750  79 25 3c 3d 62 6c 6f 63  6b 25 21 34 30 2b 33 32  |y%<=block%!40+32|
00015760  20 84 20 6f 78 25 3d 30  20 80 20 6f 79 25 3d 30  | . ox%=0 . oy%=0|
00015770  20 8c 20 58 25 20 2b 3d  31 3a ec 20 6f 78 25 2c  | . X% +=1:. ox%,|
00015780  6f 79 25 2b 79 25 3a f1  8a 58 25 29 3b 63 68 24  |oy%+y%:..X%);ch$|
00015790  0d 74 36 07 20 20 cc 0d  74 40 14 20 20 20 79 25  |.t6.  ..t@.   y%|
000157a0  20 2d 3d 33 32 3a 58 25  3d 2d 31 0d 74 4a 07 20  | -=32:X%=-1.tJ. |
000157b0  20 cd 0d 74 54 06 20 cd  0d 74 5e 10 fd 20 70 74  | ..tT. ..t^.. pt|
000157c0  72 25 3d 52 70 74 72 25  0d 74 68 05 e1 0d 74 72  |r%=Rptr%.th...tr|
000157d0  04 0d 74 7c 04 0d 74 86  12 dd 20 f2 73 65 74 5f  |..t|..t... .set_|
000157e0  77 69 6e 64 6f 77 73 0d  74 90 18 ea 20 6e 25 2c  |windows.t... n%,|
000157f0  78 31 25 2c 78 32 25 2c  79 31 25 2c 79 32 25 0d  |x1%,x2%,y1%,y2%.|
00015800  74 9a 0f e7 20 73 63 72  65 65 6e 25 20 8c 0d 74  |t... screen% ..t|
00015810  a4 0f 20 e3 20 6e 25 3d  31 20 b8 20 32 0d 74 ae  |.. . n%=1 . 2.t.|
00015820  33 20 20 68 61 6e 64 6c  65 25 28 6e 25 29 3d a4  |3  handle%(n%)=.|
00015830  77 68 6f 6c 65 5f 73 63  72 65 65 6e 5f 77 69 6e  |whole_screen_win|
00015840  64 6f 77 28 68 61 6e 64  6c 65 25 28 6e 25 29 29  |dow(handle%(n%))|
00015850  0d 74 b8 06 20 ed 0d 74  c2 2e 20 4e 47 68 61 6e  |.t.. ..t.. NGhan|
00015860  64 6c 65 25 3d a4 77 68  6f 6c 65 5f 73 63 72 65  |dle%=.whole_scre|
00015870  65 6e 5f 77 69 6e 64 6f  77 28 4e 47 68 61 6e 64  |en_window(NGhand|
00015880  6c 65 25 29 0d 74 cc 2e  20 53 43 68 61 6e 64 6c  |le%).t.. SChandl|
00015890  65 25 3d a4 77 68 6f 6c  65 5f 73 63 72 65 65 6e  |e%=.whole_screen|
000158a0  5f 77 69 6e 64 6f 77 28  53 43 68 61 6e 64 6c 65  |_window(SChandle|
000158b0  25 29 0d 74 d6 05 cc 0d  74 e0 0f 20 e3 20 6e 25  |%).t....t.. . n%|
000158c0  3d 31 20 b8 20 32 0d 74  ea 45 20 20 68 61 6e 64  |=1 . 2.t.E  hand|
000158d0  6c 65 25 28 6e 25 29 3d  a4 6f 72 64 69 6e 61 72  |le%(n%)=.ordinar|
000158e0  79 5f 77 69 6e 64 6f 77  28 68 61 6e 64 6c 65 25  |y_window(handle%|
000158f0  28 6e 25 29 2c 31 32 37  36 2c 38 34 34 2c 22 22  |(n%),1276,844,""|
00015900  2c 26 45 46 30 30 30 30  30 32 29 0d 74 f4 06 20  |,&EF000002).t.. |
00015910  ed 0d 74 fe 40 20 4e 47  68 61 6e 64 6c 65 25 3d  |..t.@ NGhandle%=|
00015920  a4 6f 72 64 69 6e 61 72  79 5f 77 69 6e 64 6f 77  |.ordinary_window|
00015930  28 4e 47 68 61 6e 64 6c  65 25 2c 31 31 39 32 2c  |(NGhandle%,1192,|
00015940  39 31 36 2c 22 22 2c 26  42 46 30 30 31 30 30 32  |916,"",&BF001002|
00015950  29 0d 75 08 40 20 53 43  68 61 6e 64 6c 65 25 3d  |).u.@ SChandle%=|
00015960  a4 6f 72 64 69 6e 61 72  79 5f 77 69 6e 64 6f 77  |.ordinary_window|
00015970  28 53 43 68 61 6e 64 6c  65 25 2c 37 34 38 2c 38  |(SChandle%,748,8|
00015980  35 36 2c 22 59 22 2c 26  38 37 30 30 30 30 31 32  |56,"Y",&87000012|
00015990  29 0d 75 12 05 cd 0d 75  1c 05 e1 0d 75 26 04 0d  |).u....u....u&..|
000159a0  75 30 04 0d 75 3a 18 dd  20 f2 73 65 74 5f 75 70  |u0..u:.. .set_up|
000159b0  5f 73 75 6d 5f 77 69 6e  64 6f 77 0d 75 44 2f f2  |_sum_window.uD/.|
000159c0  73 65 74 5f 6f 77 6e 5f  73 75 6d 5f 6f 70 65 72  |set_own_sum_oper|
000159d0  61 74 6f 72 73 28 4e 61  6d 65 4e 6f 25 29 3a 73  |ators(NameNo%):s|
000159e0  74 61 72 74 4f 77 6e 25  3d 30 0d 75 4e 61 e7 20  |tartOwn%=0.uNa. |
000159f0  64 65 63 69 6d 61 6c 25  28 4e 61 6d 65 4e 6f 25  |decimal%(NameNo%|
00015a00  29 20 8c 20 24 4f 73 75  6d 31 62 75 66 66 25 3d  |) . $Osum1buff%=|
00015a10  22 30 2e 30 30 22 3a 24  4f 73 75 6d 32 62 75 66  |"0.00":$Osum2buf|
00015a20  66 25 3d 22 30 2e 30 30  22 20 8b 20 24 4f 73 75  |f%="0.00" . $Osu|
00015a30  6d 31 62 75 66 66 25 3d  22 30 22 3a 24 4f 73 75  |m1buff%="0":$Osu|
00015a40  6d 32 62 75 66 66 25 3d  22 30 22 0d 75 58 33 f2  |m2buff%="0".uX3.|
00015a50  72 65 73 65 74 5f 69 63  6f 6e 28 4f 68 61 6e 64  |reset_icon(Ohand|
00015a60  6c 65 25 2c 33 29 3a f2  72 65 73 65 74 5f 69 63  |le%,3):.reset_ic|
00015a70  6f 6e 28 4f 68 61 6e 64  6c 65 25 2c 34 29 0d 75  |on(Ohandle%,4).u|
00015a80  62 33 e7 20 42 6f 74 68  4f 70 25 28 4e 61 6d 65  |b3. BothOp%(Name|
00015a90  4e 6f 25 29 20 8c 20 50  72 65 76 4f 70 25 3d 6f  |No%) . PrevOp%=o|
00015aa0  70 65 72 61 74 6f 72 25  28 4e 61 6d 65 4e 6f 25  |perator%(NameNo%|
00015ab0  29 0d 75 6c 30 e7 20 6f  77 6e 4f 70 25 3d 31 20  |).ul0. ownOp%=1 |
00015ac0  8c 20 24 4f 73 67 6e 62  75 66 66 25 3d 22 2b 22  |. $Osgnbuff%="+"|
00015ad0  20 8b 20 24 4f 73 67 6e  62 75 66 66 25 3d 22 2d  | . $Osgnbuff%="-|
00015ae0  22 0d 75 76 32 4f 68 61  6e 64 6c 65 25 3d a4 63  |".uv2Ohandle%=.c|
00015af0  65 6e 74 72 65 5f 77 69  6e 64 6f 77 28 4f 68 61  |entre_window(Oha|
00015b00  6e 64 6c 65 25 2c 22 59  22 29 3a 4f 77 69 6e 25  |ndle%,"Y"):Owin%|
00015b10  3d 2d 31 0d 75 80 5d e7  20 67 61 6d 65 25 3e 30  |=-1.u.]. game%>0|
00015b20  20 8c 20 64 72 61 67 25  3d 30 3a c8 99 22 57 69  | . drag%=0:.."Wi|
00015b30  6d 70 5f 46 6f 72 63 65  52 65 64 72 61 77 22 2c  |mp_ForceRedraw",|
00015b40  68 61 6e 64 6c 65 25 28  67 61 6d 65 25 29 2c 64  |handle%(game%),d|
00015b50  72 61 67 78 25 2c 64 72  61 67 79 25 2c 64 72 61  |ragx%,dragy%,dra|
00015b60  67 78 25 2b 37 35 2c 64  72 61 67 79 25 2b 37 35  |gx%+75,dragy%+75|
00015b70  0d 75 8a 36 c8 99 22 57  69 6d 70 5f 53 65 74 43  |.u.6.."Wimp_SetC|
00015b80  61 72 65 74 50 6f 73 69  74 69 6f 6e 22 2c 4f 68  |aretPosition",Oh|
00015b90  61 6e 64 6c 65 25 2c 33  2c 38 38 2c 2d 32 33 32  |andle%,3,88,-232|
00015ba0  2c 2d 31 2c 2d 31 0d 75  94 05 e1 0d 75 9e 04 0d  |,-1,-1.u....u...|
00015bb0  75 a8 04 0d 75 b2 18 dd  20 f2 73 65 6c 65 63 74  |u...u... .select|
00015bc0  5f 73 75 6d 5f 77 69 6e  64 6f 77 0d 75 bc 1b ea  |_sum_window.u...|
00015bd0  20 69 63 6f 6e 25 3a 69  63 6f 6e 25 3d 62 6c 6f  | icon%:icon%=blo|
00015be0  63 6b 25 21 31 36 0d 75  c6 0e c8 8e 20 69 63 6f  |ck%!16.u.... ico|
00015bf0  6e 25 20 ca 0d 75 d0 3c  20 c9 20 2d 31 3a c8 99  |n% ..u.< . -1:..|
00015c00  22 57 69 6d 70 5f 53 65  74 43 61 72 65 74 50 6f  |"Wimp_SetCaretPo|
00015c10  73 69 74 69 6f 6e 22 2c  4f 68 61 6e 64 6c 65 25  |sition",Ohandle%|
00015c20  2c 33 2c 38 38 2c 2d 32  33 32 2c 2d 31 2c 2d 31  |,3,88,-232,-1,-1|
00015c30  0d 75 da 18 20 c9 20 36  3a f2 73 65 74 5f 75 70  |.u.. . 6:.set_up|
00015c40  5f 6f 77 6e 5f 73 75 6d  0d 75 e4 19 20 c9 20 38  |_own_sum.u.. . 8|
00015c50  2c 39 3a 6f 77 6e 4f 70  25 3d 69 63 6f 6e 25 2d  |,9:ownOp%=icon%-|
00015c60  37 0d 75 ee 3a 20 20 20  20 20 20 20 20 20 20 e7  |7.u.:          .|
00015c70  20 6f 77 6e 4f 70 25 3d  31 20 8c 20 24 4f 73 67  | ownOp%=1 . $Osg|
00015c80  6e 62 75 66 66 25 3d 22  2b 22 20 8b 20 24 4f 73  |nbuff%="+" . $Os|
00015c90  67 6e 62 75 66 66 25 3d  22 2d 22 0d 75 f8 25 20  |gnbuff%="-".u.% |
00015ca0  20 20 20 20 20 20 20 20  20 f2 72 65 73 65 74 5f  |         .reset_|
00015cb0  69 63 6f 6e 28 4f 68 61  6e 64 6c 65 25 2c 35 29  |icon(Ohandle%,5)|
00015cc0  0d 76 02 19 20 c9 20 37  3a f2 6d 61 6b 65 5f 6f  |.v.. . 7:.make_o|
00015cd0  6e 65 5f 66 6f 72 5f 6d  65 0d 76 0c 05 cb 0d 76  |ne_for_me.v....v|
00015ce0  16 05 e1 0d 76 20 04 0d  76 2a 04 0d 76 34 16 dd  |....v ..v*..v4..|
00015cf0  20 f2 6d 61 6b 65 5f 6f  6e 65 5f 66 6f 72 5f 6d  | .make_one_for_m|
00015d00  65 0d 76 3e 0f ea 20 6e  75 6d 31 2c 6e 75 6d 32  |e.v>.. num1,num2|
00015d10  0d 76 48 4a e7 20 6f 77  6e 4f 70 25 3d 31 20 8c  |.vHJ. ownOp%=1 .|
00015d20  20 f2 6d 61 6b 65 5f 61  64 64 28 41 6c 65 76 65  | .make_add(Aleve|
00015d30  6c 25 28 4e 61 6d 65 4e  6f 25 29 29 20 8b 20 f2  |l%(NameNo%)) . .|
00015d40  6d 61 6b 65 5f 73 75 62  28 53 6c 65 76 65 6c 25  |make_sub(Slevel%|
00015d50  28 4e 61 6d 65 4e 6f 25  29 29 0d 76 52 1b e7 20  |(NameNo%)).vR.. |
00015d60  64 65 63 69 6d 61 6c 25  28 4e 61 6d 65 4e 6f 25  |decimal%(NameNo%|
00015d70  29 3d 30 20 8c 0d 76 5c  2a 20 24 4f 73 75 6d 31  |)=0 ..v\* $Osum1|
00015d80  62 75 66 66 25 3d c3 6e  75 6d 31 25 3a 24 4f 73  |buff%=.num1%:$Os|
00015d90  75 6d 32 62 75 66 66 25  3d c3 6e 75 6d 32 25 0d  |um2buff%=.num2%.|
00015da0  76 66 05 cc 0d 76 70 4a  20 24 4f 73 75 6d 31 62  |vf...vpJ $Osum1b|
00015db0  75 66 66 25 3d a4 73 65  74 5f 64 65 63 28 c3 28  |uff%=.set_dec(.(|
00015dc0  6e 75 6d 31 25 2f 31 30  30 29 29 3a 24 4f 73 75  |num1%/100)):$Osu|
00015dd0  6d 32 62 75 66 66 25 3d  a4 73 65 74 5f 64 65 63  |m2buff%=.set_dec|
00015de0  28 c3 28 6e 75 6d 32 25  2f 31 30 30 29 29 0d 76  |(.(num2%/100)).v|
00015df0  7a 05 cd 0d 76 84 33 f2  72 65 73 65 74 5f 69 63  |z...v.3.reset_ic|
00015e00  6f 6e 28 4f 68 61 6e 64  6c 65 25 2c 33 29 3a f2  |on(Ohandle%,3):.|
00015e10  72 65 73 65 74 5f 69 63  6f 6e 28 4f 68 61 6e 64  |reset_icon(Ohand|
00015e20  6c 65 25 2c 34 29 0d 76  8e 05 e1 0d 76 98 04 0d  |le%,4).v....v...|
00015e30  76 a2 04 0d 76 ac 13 dd  20 f2 6f 77 6e 5f 73 75  |v...v... .own_su|
00015e40  6d 5f 6b 65 79 73 0d 76  b6 12 c8 8e 20 62 6c 6f  |m_keys.v.... blo|
00015e50  63 6b 25 21 32 34 20 ca  0d 76 c0 3e 20 c9 20 26  |ck%!24 ..v.> . &|
00015e60  31 38 46 3a c8 99 22 57  69 6d 70 5f 53 65 74 43  |18F:.."Wimp_SetC|
00015e70  61 72 65 74 50 6f 73 69  74 69 6f 6e 22 2c 4f 68  |aretPosition",Oh|
00015e80  61 6e 64 6c 65 25 2c 33  2c 38 38 2c 2d 32 33 32  |andle%,3,88,-232|
00015e90  2c 2d 31 2c 2d 31 0d 76  ca 3e 20 c9 20 26 31 38  |,-1,-1.v.> . &18|
00015ea0  45 3a c8 99 22 57 69 6d  70 5f 53 65 74 43 61 72  |E:.."Wimp_SetCar|
00015eb0  65 74 50 6f 73 69 74 69  6f 6e 22 2c 4f 68 61 6e  |etPosition",Ohan|
00015ec0  64 6c 65 25 2c 34 2c 38  38 2c 2d 33 30 34 2c 2d  |dle%,4,88,-304,-|
00015ed0  31 2c 2d 31 0d 76 d4 05  7f 0d 76 de 22 20 c8 99  |1,-1.v....v." ..|
00015ee0  22 57 69 6d 70 5f 50 72  6f 63 65 73 73 4b 65 79  |"Wimp_ProcessKey|
00015ef0  22 2c 62 6c 6f 63 6b 25  21 32 34 0d 76 e8 05 cb  |",block%!24.v...|
00015f00  0d 76 f2 05 e1 0d 76 fc  04 0d 77 06 04 0d 77 10  |.v....v...w...w.|
00015f10  15 dd 20 f2 73 65 74 5f  75 70 5f 6f 77 6e 5f 73  |.. .set_up_own_s|
00015f20  75 6d 0d 77 1a 28 ea 20  62 75 66 66 24 2c 66 6c  |um.w.(. buff$,fl|
00015f30  67 25 2c 6f 73 75 6d 24  3a 66 6c 67 25 3d 30 3a  |g%,osum$:flg%=0:|
00015f40  63 6f 72 72 65 63 74 25  3d 30 0d 77 24 1f 62 75  |correct%=0.w$.bu|
00015f50  66 66 24 3d a4 73 65 74  5f 64 65 63 28 24 4f 73  |ff$=.set_dec($Os|
00015f60  75 6d 31 62 75 66 66 25  29 0d 77 2e 4c e7 20 62  |um1buff%).w.L. b|
00015f70  75 66 66 24 3c 3e 24 4f  73 75 6d 31 62 75 66 66  |uff$<>$Osum1buff|
00015f80  25 20 8c 20 24 4f 73 75  6d 31 62 75 66 66 25 3d  |% . $Osum1buff%=|
00015f90  62 75 66 66 24 3a f2 72  65 73 65 74 5f 69 63 6f  |buff$:.reset_ico|
00015fa0  6e 28 4f 68 61 6e 64 6c  65 25 2c 33 29 3a 66 6c  |n(Ohandle%,3):fl|
00015fb0  67 25 3d 2d 31 0d 77 38  1f 62 75 66 66 24 3d a4  |g%=-1.w8.buff$=.|
00015fc0  73 65 74 5f 64 65 63 28  24 4f 73 75 6d 32 62 75  |set_dec($Osum2bu|
00015fd0  66 66 25 29 0d 77 42 4c  e7 20 62 75 66 66 24 3c  |ff%).wBL. buff$<|
00015fe0  3e 24 4f 73 75 6d 32 62  75 66 66 25 20 8c 20 24  |>$Osum2buff% . $|
00015ff0  4f 73 75 6d 32 62 75 66  66 25 3d 62 75 66 66 24  |Osum2buff%=buff$|
00016000  3a f2 72 65 73 65 74 5f  69 63 6f 6e 28 4f 68 61  |:.reset_icon(Oha|
00016010  6e 64 6c 65 25 2c 34 29  3a 66 6c 67 25 3d 2d 31  |ndle%,4):flg%=-1|
00016020  0d 77 4c 47 e7 20 64 65  63 69 6d 61 6c 25 28 4e  |.wLG. decimal%(N|
00016030  61 6d 65 4e 6f 25 29 20  80 20 28 bb 20 24 4f 73  |ameNo%) . (. $Os|
00016040  75 6d 31 62 75 66 66 25  3c 31 20 84 20 bb 20 24  |um1buff%<1 . . $|
00016050  4f 73 75 6d 32 62 75 66  66 25 3c 31 29 20 8c 20  |Osum2buff%<1) . |
00016060  66 6c 67 25 3d 2d 31 0d  77 56 11 e7 20 66 6c 67  |flg%=-1.wV.. flg|
00016070  25 3d 2d 31 20 8c 20 e1  0d 77 60 04 0d 77 6a 7b  |%=-1 . ..w`..wj{|
00016080  e7 20 64 65 63 69 6d 61  6c 25 28 4e 61 6d 65 4e  |. decimal%(NameN|
00016090  6f 25 29 20 8c 20 6e 75  6d 31 25 3d a4 64 65 63  |o%) . num1%=.dec|
000160a0  5f 76 61 6c 28 24 4f 73  75 6d 31 62 75 66 66 25  |_val($Osum1buff%|
000160b0  29 3a 6e 75 6d 32 25 3d  a4 64 65 63 5f 76 61 6c  |):num2%=.dec_val|
000160c0  28 24 4f 73 75 6d 32 62  75 66 66 25 29 20 8b 20  |($Osum2buff%) . |
000160d0  6e 75 6d 31 25 3d bb 20  24 4f 73 75 6d 31 62 75  |num1%=. $Osum1bu|
000160e0  66 66 25 3a 6e 75 6d 32  25 3d bb 20 24 4f 73 75  |ff%:num2%=. $Osu|
000160f0  6d 32 62 75 66 66 25 0d  77 74 04 0d 77 7e 35 e7  |m2buff%.wt..w~5.|
00016100  20 6e 75 6d 31 25 3d 30  20 84 20 6e 75 6d 32 25  | num1%=0 . num2%|
00016110  3d 30 20 84 20 6f 77 6e  4f 70 25 3d 32 20 80 20  |=0 . ownOp%=2 . |
00016120  6e 75 6d 32 25 3e 3d 6e  75 6d 31 25 20 8c 20 e1  |num2%>=num1% . .|
00016130  0d 77 88 04 0d 77 92 34  e7 20 6f 77 6e 4f 70 25  |.w...w.4. ownOp%|
00016140  3d 31 20 8c 20 61 6e 73  25 3d 6e 75 6d 31 25 2b  |=1 . ans%=num1%+|
00016150  6e 75 6d 32 25 20 8b 20  61 6e 73 25 3d 6e 75 6d  |num2% . ans%=num|
00016160  31 25 2d 6e 75 6d 32 25  0d 77 9c 04 0d 77 a6 1b  |1%-num2%.w...w..|
00016170  f2 63 6c 6f 73 65 5f 77  69 6e 64 6f 77 28 4f 68  |.close_window(Oh|
00016180  61 6e 64 6c 65 25 29 0d  77 b0 38 50 72 65 76 4f  |andle%).w.8PrevO|
00016190  70 25 3d 6f 70 65 72 61  74 6f 72 25 28 4e 61 6d  |p%=operator%(Nam|
000161a0  65 4e 6f 25 29 3a 6f 70  65 72 61 74 6f 72 25 28  |eNo%):operator%(|
000161b0  4e 61 6d 65 4e 6f 25 29  3d 6f 77 6e 4f 70 25 0d  |NameNo%)=ownOp%.|
000161c0  77 ba 24 67 61 6d 65 25  3d 6f 70 65 72 61 74 6f  |w.$game%=operato|
000161d0  72 25 28 4e 61 6d 65 4e  6f 25 29 3a 4f 77 69 6e  |r%(NameNo%):Owin|
000161e0  25 3d 30 0d 77 c4 29 f2  6f 70 65 6e 5f 77 69 6e  |%=0.w.).open_win|
000161f0  64 6f 77 28 68 61 6e 64  6c 65 25 28 67 61 6d 65  |dow(handle%(game|
00016200  25 29 29 3a f2 73 65 74  5f 73 75 6d 0d 77 ce 05  |%)):.set_sum.w..|
00016210  e1 0d 77 d8 04 0d 77 e2  04 0d 77 ec 30 dd 20 a4  |..w...w...w.0. .|
00016220  64 65 63 5f 76 61 6c 28  76 61 72 24 29 3d bb 28  |dec_val(var$)=.(|
00016230  c0 76 61 72 24 2c a9 20  76 61 72 24 2d 33 29 2b  |.var$,. var$-3)+|
00016240  c2 76 61 72 24 2c 32 29  29 0d 77 f6 04 0d 78 00  |.var$,2)).w...x.|
00016250  04 0d 78 0a 13 dd 20 a4  73 65 74 5f 64 65 63 28  |..x... .set_dec(|
00016260  73 74 24 29 0d 78 14 1b  ea 20 70 74 25 2c 6c 65  |st$).x... pt%,le|
00016270  6e 25 2c 63 75 74 25 2c  6d 61 78 6c 65 6e 25 0d  |n%,cut%,maxlen%.|
00016280  78 1e 2c 70 74 25 3d a7  73 74 24 2c 22 2e 22 29  |x.,pt%=.st$,".")|
00016290  3a 6c 65 6e 25 3d a9 20  73 74 24 3a 63 75 74 25  |:len%=. st$:cut%|
000162a0  3d 6c 65 6e 25 2d 70 74  25 2d 32 0d 78 28 2e 6d  |=len%-pt%-2.x(.m|
000162b0  61 78 6c 65 6e 25 3d 36  2b 28 6f 77 6e 4f 70 25  |axlen%=6+(ownOp%|
000162c0  3d 31 29 2b 28 64 65 63  69 6d 61 6c 25 28 4e 61  |=1)+(decimal%(Na|
000162d0  6d 65 4e 6f 25 29 3d 30  29 0d 78 32 19 e7 20 64  |meNo%)=0).x2.. d|
000162e0  65 63 69 6d 61 6c 25 28  4e 61 6d 65 4e 6f 25 29  |ecimal%(NameNo%)|
000162f0  20 8c 0d 78 3c 0c 20 e7  20 70 74 25 20 8c 0d 78  | ..x<. . pt% ..x|
00016300  46 24 20 20 e7 20 63 75  74 25 3e 30 20 8c 20 73  |F$  . cut%>0 . s|
00016310  74 24 3d c0 73 74 24 2c  6c 65 6e 25 2d 63 75 74  |t$=.st$,len%-cut|
00016320  25 29 0d 78 50 1d 20 20  e7 20 63 75 74 25 3d 2d  |%).xP.  . cut%=-|
00016330  31 20 8c 20 73 74 24 3d  73 74 24 2b 22 30 22 0d  |1 . st$=st$+"0".|
00016340  78 5a 1e 20 20 e7 20 63  75 74 25 3d 2d 32 20 8c  |xZ.  . cut%=-2 .|
00016350  20 73 74 24 3d 73 74 24  2b 22 30 30 22 0d 78 64  | st$=st$+"00".xd|
00016360  06 20 cc 0d 78 6e 13 20  20 73 74 24 3d 73 74 24  |. ..xn.  st$=st$|
00016370  2b 22 2e 30 30 22 0d 78  78 06 20 cd 0d 78 82 05  |+".00".xx. ..x..|
00016380  cc 0d 78 8c 1c 20 e7 20  70 74 25 20 8c 20 73 74  |..x.. . pt% . st|
00016390  24 3d c0 73 74 24 2c 70  74 25 2d 31 29 0d 78 96  |$=.st$,pt%-1).x.|
000163a0  05 cd 0d 78 a0 0e 6c 65  6e 25 3d a9 20 73 74 24  |...x..len%=. st$|
000163b0  0d 78 aa 26 e7 20 6c 65  6e 25 3e 6d 61 78 6c 65  |.x.&. len%>maxle|
000163c0  6e 25 20 8c 20 73 74 24  3d c2 73 74 24 2c 6d 61  |n% . st$=.st$,ma|
000163d0  78 6c 65 6e 25 29 0d 78  b4 08 3d 73 74 24 0d 78  |xlen%).x..=st$.x|
000163e0  be 04 0d 78 c8 04 0d 78  d2 25 f4 20 2a 2a 2a 2a  |...x...x.%. ****|
000163f0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00016400  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 0d 78 dc 25 f4  |***********.x.%.|
00016410  20 2a 2a 2a 57 49 4d 50  20 41 4e 44 20 44 45 53  | ***WIMP AND DES|
00016420  4b 54 4f 50 20 52 4f 55  54 49 4e 45 53 2a 2a 2a  |KTOP ROUTINES***|
00016430  0d 78 e6 25 f4 20 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |.x.%. **********|
00016440  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00016450  2a 2a 2a 2a 2a 0d 78 f0  04 0d 78 fa 0b f4 20 49  |*****.x...x... I|
00016460  63 6f 6e 73 0d 79 04 04  0d 79 0e 3e dd 20 a4 69  |cons.y...y.>. .i|
00016470  63 6f 6e 28 77 68 61 6e  64 6c 65 25 2c 78 25 2c  |con(whandle%,x%,|
00016480  79 25 2c 77 25 2c 68 25  2c 66 6c 67 25 2c 6e 61  |y%,w%,h%,flg%,na|
00016490  6d 65 24 2c 70 74 72 31  25 2c 70 74 72 32 25 2c  |me$,ptr1%,ptr2%,|
000164a0  70 74 72 33 25 29 0d 79  18 2e f4 20 47 65 6e 65  |ptr3%).y... Gene|
000164b0  72 61 6c 20 70 75 72 70  6f 73 65 20 69 63 6f 6e  |ral purpose icon|
000164c0  20 63 72 65 61 74 69 6f  6e 20 70 72 6f 63 65 64  | creation proced|
000164d0  75 72 65 2e 0d 79 22 0d  ea 20 68 61 6e 64 6c 65  |ure..y".. handle|
000164e0  25 0d 79 2c 14 21 62 6c  6f 63 6b 25 3d 77 68 61  |%.y,.!block%=wha|
000164f0  6e 64 6c 65 25 0d 79 36  3b 62 6c 6f 63 6b 25 21  |ndle%.y6;block%!|
00016500  34 3d 78 25 3a 62 6c 6f  63 6b 25 21 38 3d 79 25  |4=x%:block%!8=y%|
00016510  3a 62 6c 6f 63 6b 25 21  31 32 3d 77 25 2b 78 25  |:block%!12=w%+x%|
00016520  3a 62 6c 6f 63 6b 25 21  31 36 3d 68 25 2b 79 25  |:block%!16=h%+y%|
00016530  0d 79 40 12 62 6c 6f 63  6b 25 21 32 30 3d 66 6c  |.y@.block%!20=fl|
00016540  67 25 0d 79 4a 04 0d 79  54 0f e7 20 70 74 72 31  |g%.yJ..yT.. ptr1|
00016550  25 3d 30 20 8c 0d 79 5e  17 20 24 28 62 6c 6f 63  |%=0 ..y^. $(bloc|
00016560  6b 25 2b 32 34 29 3d 6e  61 6d 65 24 0d 79 68 05  |k%+24)=name$.yh.|
00016570  cc 0d 79 72 12 20 f4 20  49 6e 64 69 72 65 63 74  |..yr. . Indirect|
00016580  65 64 2e 0d 79 7c 11 20  24 70 74 72 31 25 3d 6e  |ed..y|. $ptr1%=n|
00016590  61 6d 65 24 0d 79 86 34  20 62 6c 6f 63 6b 25 21  |ame$.y.4 block%!|
000165a0  32 34 3d 70 74 72 31 25  3a 62 6c 6f 63 6b 25 21  |24=ptr1%:block%!|
000165b0  32 38 3d 70 74 72 32 25  3a 62 6c 6f 63 6b 25 21  |28=ptr2%:block%!|
000165c0  33 32 3d 70 74 72 33 25  0d 79 90 05 cd 0d 79 9a  |32=ptr3%.y....y.|
000165d0  04 0d 79 a4 29 c8 99 22  57 69 6d 70 5f 43 72 65  |..y.).."Wimp_Cre|
000165e0  61 74 65 49 63 6f 6e 22  2c 2c 62 6c 6f 63 6b 25  |ateIcon",,block%|
000165f0  20 b8 20 68 61 6e 64 6c  65 25 0d 79 ae 0c 3d 68  | . handle%.y..=h|
00016600  61 6e 64 6c 65 25 0d 79  b8 04 0d 79 c2 04 0d 79  |andle%.y...y...y|
00016610  cc 1d dd 20 a4 69 63 6f  6e 5f 62 61 72 5f 69 63  |... .icon_bar_ic|
00016620  6f 6e 28 73 70 72 69 74  65 24 29 0d 79 d6 2c 3d  |on(sprite$).y.,=|
00016630  a4 69 63 6f 6e 28 2d 31  2c 30 2c 30 2c 36 38 2c  |.icon(-1,0,0,68,|
00016640  36 38 2c 26 33 30 30 32  2c 73 70 72 69 74 65 24  |68,&3002,sprite$|
00016650  2c 30 2c 30 2c 30 29 0d  79 e0 04 0d 79 ea 04 0d  |,0,0,0).y...y...|
00016660  79 f4 43 f4 20 41 64 64  72 65 73 73 20 6f 66 20  |y.C. Address of |
00016670  62 75 66 66 65 72 20 6f  66 20 61 6e 20 69 6e 64  |buffer of an ind|
00016680  69 72 65 63 74 65 64 20  69 63 6f 6e 20 69 6e 20  |irected icon in |
00016690  77 69 6e 64 6f 77 20 64  65 66 69 6e 69 74 69 6f  |window definitio|
000166a0  6e 2e 0d 79 fe 2d dd 20  a4 69 63 6f 6e 5f 62 75  |n..y.-. .icon_bu|
000166b0  66 66 65 72 28 6e 75 6d  25 29 3d 62 6c 6f 63 6b  |ffer(num%)=block|
000166c0  25 21 28 31 30 38 2b 33  32 2a 6e 75 6d 25 29 0d  |%!(108+32*num%).|
000166d0  7a 08 04 0d 7a 12 04 0d  7a 1c 40 dd 20 a4 69 6e  |z...z...z.@. .in|
000166e0  63 72 65 6d 65 6e 74 5f  62 75 66 66 65 72 28 77  |crement_buffer(w|
000166f0  68 61 6e 64 6c 65 25 2c  69 68 61 6e 64 6c 65 25  |handle%,ihandle%|
00016700  2c 76 61 72 25 2c 70 74  72 25 2c 69 6e 63 25 2c  |,var%,ptr%,inc%,|
00016710  72 61 6e 67 65 25 29 0d  7a 26 18 f4 20 49 6e 63  |range%).z&.. Inc|
00016720  72 65 6d 65 6e 74 73 20  61 6e 20 69 63 6f 6e 0d  |rements an icon.|
00016730  7a 30 19 e7 20 76 61 72  25 3d 72 61 6e 67 65 25  |z0.. var%=range%|
00016740  20 8c 20 3d 76 61 72 25  0d 7a 3a 1c 76 61 72 25  | . =var%.z:.var%|
00016750  3d bb 20 24 70 74 72 25  3a 76 61 72 25 20 2b 3d  |=. $ptr%:var% +=|
00016760  69 6e 63 25 0d 7a 44 0f  24 70 74 72 25 3d c3 76  |inc%.zD.$ptr%=.v|
00016770  61 72 25 0d 7a 4e 22 f2  72 65 73 65 74 5f 69 63  |ar%.zN".reset_ic|
00016780  6f 6e 28 77 68 61 6e 64  6c 65 25 2c 69 68 61 6e  |on(whandle%,ihan|
00016790  64 6c 65 25 29 0d 7a 58  09 3d 76 61 72 25 0d 7a  |dle%).zX.=var%.z|
000167a0  62 04 0d 7a 6c 04 0d 7a  76 44 dd 20 a4 69 6e 63  |b..zl..zvD. .inc|
000167b0  5f 62 75 66 66 65 72 28  77 68 61 6e 64 6c 65 25  |_buffer(whandle%|
000167c0  2c 69 68 61 6e 64 6c 65  25 2c 76 61 72 25 2c 70  |,ihandle%,var%,p|
000167d0  74 72 25 2c 69 6e 63 25  2c 6c 6f 77 52 25 2c 68  |tr%,inc%,lowR%,h|
000167e0  69 67 68 52 25 2c 75 70  25 29 0d 7a 80 2f e7 20  |ighR%,up%).z./. |
000167f0  75 70 25 20 8c 20 75 70  25 3d 28 62 6c 6f 63 6b  |up% . up%=(block|
00016800  25 21 38 3d 34 29 20 8b  20 75 70 25 3d 28 62 6c  |%!8=4) . up%=(bl|
00016810  6f 63 6b 25 21 38 3d 31  29 0d 7a 8a 0b e7 20 75  |ock%!8=1).z... u|
00016820  70 25 20 8c 0d 7a 94 44  20 76 61 72 25 3d a4 69  |p% ..z.D var%=.i|
00016830  6e 63 72 65 6d 65 6e 74  5f 62 75 66 66 65 72 28  |ncrement_buffer(|
00016840  77 68 61 6e 64 6c 65 25  2c 69 68 61 6e 64 6c 65  |whandle%,ihandle|
00016850  25 2c 76 61 72 25 2c 70  74 72 25 2c 69 6e 63 25  |%,var%,ptr%,inc%|
00016860  2c 68 69 67 68 52 25 29  0d 7a 9e 05 cc 0d 7a a8  |,highR%).z....z.|
00016870  44 20 76 61 72 25 3d a4  69 6e 63 72 65 6d 65 6e  |D var%=.incremen|
00016880  74 5f 62 75 66 66 65 72  28 77 68 61 6e 64 6c 65  |t_buffer(whandle|
00016890  25 2c 69 68 61 6e 64 6c  65 25 2c 76 61 72 25 2c  |%,ihandle%,var%,|
000168a0  70 74 72 25 2c 2d 69 6e  63 25 2c 6c 6f 77 52 25  |ptr%,-inc%,lowR%|
000168b0  29 0d 7a b2 05 cd 0d 7a  bc 09 3d 76 61 72 25 0d  |).z....z..=var%.|
000168c0  7a c6 04 0d 7a d0 04 0d  7a da 04 0d 7a e4 24 dd  |z...z...z...z.$.|
000168d0  20 f2 72 65 73 65 74 5f  69 63 6f 6e 28 77 68 61  | .reset_icon(wha|
000168e0  6e 64 6c 65 25 2c 69 68  61 6e 64 6c 65 25 29 0d  |ndle%,ihandle%).|
000168f0  7a ee 45 f4 20 46 6f 72  20 61 75 74 6f 5f 72 65  |z.E. For auto_re|
00016900  64 72 61 77 20 77 69 6e  64 6f 77 73 2e 20 52 65  |draw windows. Re|
00016910  73 65 74 73 20 69 63 6f  6e 20 77 68 65 72 65 20  |sets icon where |
00016920  61 20 62 75 66 66 65 72  20 69 73 20 61 6c 74 65  |a buffer is alte|
00016930  72 65 64 2e 0d 7a f8 26  21 62 6c 6f 63 6b 25 3d  |red..z.&!block%=|
00016940  77 68 61 6e 64 6c 65 25  3a 62 6c 6f 63 6b 25 21  |whandle%:block%!|
00016950  34 3d 69 68 61 6e 64 6c  65 25 0d 7b 02 1a 62 6c  |4=ihandle%.{..bl|
00016960  6f 63 6b 25 21 38 3d 30  3a 62 6c 6f 63 6b 25 21  |ock%!8=0:block%!|
00016970  31 32 3d 30 0d 7b 0c 21  c8 99 22 57 69 6d 70 5f  |12=0.{.!.."Wimp_|
00016980  53 65 74 49 63 6f 6e 53  74 61 74 65 22 2c 2c 62  |SetIconState",,b|
00016990  6c 6f 63 6b 25 0d 7b 16  05 e1 0d 7b 20 04 0d 7b  |lock%.{....{ ..{|
000169a0  2a 04 0d 7b 34 27 dd 20  a4 69 63 6f 6e 5f 73 65  |*..{4'. .icon_se|
000169b0  6c 65 63 74 65 64 28 77  68 61 6e 64 6c 65 25 2c  |lected(whandle%,|
000169c0  69 68 61 6e 64 6c 65 25  29 0d 7b 3e 2e f4 20 54  |ihandle%).{>.. T|
000169d0  65 73 74 73 20 69 66 20  72 61 64 69 6f 20 69 63  |ests if radio ic|
000169e0  6f 6e 20 69 73 20 69 6e  20 73 65 6c 65 63 74 65  |on is in selecte|
000169f0  64 20 73 74 61 74 65 0d  7b 48 26 21 62 6c 6f 63  |d state.{H&!bloc|
00016a00  6b 25 3d 77 68 61 6e 64  6c 65 25 3a 62 6c 6f 63  |k%=whandle%:bloc|
00016a10  6b 25 21 34 3d 69 68 61  6e 64 6c 65 25 0d 7b 52  |k%!4=ihandle%.{R|
00016a20  21 c8 99 22 57 69 6d 70  5f 47 65 74 49 63 6f 6e  |!.."Wimp_GetIcon|
00016a30  53 74 61 74 65 22 2c 2c  62 6c 6f 63 6b 25 0d 7b  |State",,block%.{|
00016a40  5c 1a 3d 28 28 62 6c 6f  63 6b 25 3f 32 36 20 80  |\.=((block%?26 .|
00016a50  20 33 32 29 3d 33 32 29  0d 7b 66 04 0d 7b 70 04  | 32)=32).{f..{p.|
00016a60  0d 7b 7a 31 dd 20 f2 73  65 74 5f 69 63 6f 6e 5f  |.{z1. .set_icon_|
00016a70  66 6c 61 67 28 77 68 61  6e 64 6c 65 25 2c 69 68  |flag(whandle%,ih|
00016a80  61 6e 64 6c 65 25 2c 62  69 74 25 2c 73 65 74 25  |andle%,bit%,set%|
00016a90  29 0d 7b 84 48 f4 20 41  6c 74 65 72 73 20 61 6e  |).{.H. Alters an|
00016aa0  20 69 63 6f 6e 20 66 6c  61 67 2e 20 49 66 20 73  | icon flag. If s|
00016ab0  65 74 25 20 69 73 20 73  65 74 20 74 68 65 6e 20  |et% is set then |
00016ac0  73 65 74 73 20 66 6c 61  67 20 65 6c 73 65 20 75  |sets flag else u|
00016ad0  6e 73 65 74 73 20 69 74  2e 0d 7b 8e 26 21 62 6c  |nsets it..{.&!bl|
00016ae0  6f 63 6b 25 3d 77 68 61  6e 64 6c 65 25 3a 62 6c  |ock%=whandle%:bl|
00016af0  6f 63 6b 25 21 34 3d 69  68 61 6e 64 6c 65 25 0d  |ock%!4=ihandle%.|
00016b00  7b 98 4e e7 20 73 65 74  25 20 8c 20 62 6c 6f 63  |{.N. set% . bloc|
00016b10  6b 25 21 38 3d 31 3c 3c  62 69 74 25 3a 62 6c 6f  |k%!8=1<<bit%:blo|
00016b20  63 6b 25 21 31 32 3d 31  3c 3c 62 69 74 25 20 8b  |ck%!12=1<<bit% .|
00016b30  20 62 6c 6f 63 6b 25 21  38 3d 30 3a 62 6c 6f 63  | block%!8=0:bloc|
00016b40  6b 25 21 31 32 3d 31 3c  3c 62 69 74 25 0d 7b a2  |k%!12=1<<bit%.{.|
00016b50  21 c8 99 22 57 69 6d 70  5f 53 65 74 49 63 6f 6e  |!.."Wimp_SetIcon|
00016b60  53 74 61 74 65 22 2c 2c  62 6c 6f 63 6b 25 0d 7b  |State",,block%.{|
00016b70  ac 05 e1 0d 7b b6 04 0d  7b c0 04 0d 7b ca 31 dd  |....{...{...{.1.|
00016b80  20 f2 61 6c 74 65 72 5f  62 75 74 74 6f 6e 5f 74  | .alter_button_t|
00016b90  79 70 65 28 77 68 61 6e  64 6c 65 25 2c 69 68 61  |ype(whandle%,iha|
00016ba0  6e 64 6c 65 25 2c 74 79  70 65 25 29 0d 7b d4 23  |ndle%,type%).{.#|
00016bb0  f4 20 41 6c 74 65 72 73  20 62 75 74 74 6f 6e 20  |. Alters button |
00016bc0  74 79 70 65 20 6f 66 20  61 6e 20 69 63 6f 6e 0d  |type of an icon.|
00016bd0  7b de 0b ea 20 4e 25 2c  50 25 0d 7b e8 0e e3 20  |{... N%,P%.{... |
00016be0  4e 25 3d 30 20 b8 20 33  0d 7b f2 18 20 50 25 3d  |N%=0 . 3.{.. P%=|
00016bf0  28 74 79 70 65 25 20 80  20 28 32 5e 4e 25 29 29  |(type% . (2^N%))|
00016c00  0d 7b fc 2f 20 f2 73 65  74 5f 69 63 6f 6e 5f 66  |.{./ .set_icon_f|
00016c10  6c 61 67 28 77 68 61 6e  64 6c 65 25 2c 69 68 61  |lag(whandle%,iha|
00016c20  6e 64 6c 65 25 2c 31 32  2b 4e 25 2c 50 25 29 0d  |ndle%,12+N%,P%).|
00016c30  7c 06 05 ed 0d 7c 10 05  e1 0d 7c 1a 04 0d 7c 24  ||....|....|...|$|
00016c40  04 0d 7c 2e 2a dd 20 f2  73 65 6c 65 63 74 5f 69  |..|.*. .select_i|
00016c50  63 6f 6e 28 77 68 61 6e  64 6c 65 25 2c 69 68 61  |con(whandle%,iha|
00016c60  6e 64 6c 65 25 2c 73 65  74 25 29 0d 7c 38 2d f2  |ndle%,set%).|8-.|
00016c70  73 65 74 5f 69 63 6f 6e  5f 66 6c 61 67 28 77 68  |set_icon_flag(wh|
00016c80  61 6e 64 6c 65 25 2c 69  68 61 6e 64 6c 65 25 2c  |andle%,ihandle%,|
00016c90  32 31 2c 73 65 74 25 29  0d 7c 42 05 e1 0d 7c 4c  |21,set%).|B...|L|
00016ca0  04 0d 7c 56 04 0d 7c 60  29 dd 20 f2 73 68 61 64  |..|V..|`). .shad|
00016cb0  65 5f 69 63 6f 6e 28 77  68 61 6e 64 6c 65 25 2c  |e_icon(whandle%,|
00016cc0  69 68 61 6e 64 6c 65 25  2c 73 65 74 25 29 0d 7c  |ihandle%,set%).||
00016cd0  6a 2d f2 73 65 74 5f 69  63 6f 6e 5f 66 6c 61 67  |j-.set_icon_flag|
00016ce0  28 77 68 61 6e 64 6c 65  25 2c 69 68 61 6e 64 6c  |(whandle%,ihandl|
00016cf0  65 25 2c 32 32 2c 73 65  74 25 29 0d 7c 74 05 e1  |e%,22,set%).|t..|
00016d00  0d 7c 7e 04 0d 7c 88 04  0d 7c 92 2a dd 20 f2 64  |.|~..|...|.*. .d|
00016d10  65 6c 65 74 65 5f 69 63  6f 6e 28 77 68 61 6e 64  |elete_icon(whand|
00016d20  6c 65 25 2c 69 68 61 6e  64 6c 65 25 2c 73 65 74  |le%,ihandle%,set|
00016d30  25 29 0d 7c 9c 2d f2 73  65 74 5f 69 63 6f 6e 5f  |%).|.-.set_icon_|
00016d40  66 6c 61 67 28 77 68 61  6e 64 6c 65 25 2c 69 68  |flag(whandle%,ih|
00016d50  61 6e 64 6c 65 25 2c 32  33 2c 73 65 74 25 29 0d  |andle%,23,set%).|
00016d60  7c a6 05 e1 0d 7c b0 04  0d 7c ba 4e 2a 2a 2a 2a  ||....|...|.N****|
00016d70  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00016db0  2a 2a 2a 2a 2a 2a 0d 7c  c4 04 0d 7c ce 0d f4 20  |******.|...|... |
00016dc0  57 69 6e 64 6f 77 73 0d  7c d8 04 0d 7c e2 30 dd  |Windows.|...|.0.|
00016dd0  20 a4 74 65 6d 70 5f 77  69 6e 64 6f 77 28 62 75  | .temp_window(bu|
00016de0  66 66 25 2c 6c 65 6e 25  2c 6e 61 6d 65 25 2c 6e  |ff%,len%,name%,n|
00016df0  61 6d 65 24 2c 66 6f 6e  74 25 29 0d 7c ec 25 f4  |ame$,font%).|.%.|
00016e00  20 4c 6f 61 64 73 20 77  69 6e 64 6f 77 20 66 72  | Loads window fr|
00016e10  6f 6d 20 74 65 6d 70 6c  61 74 65 20 66 69 6c 65  |om template file|
00016e20  0d 7c f6 1a ea 20 68 61  6e 64 6c 65 25 3a 24 6e  |.|... handle%:$n|
00016e30  61 6d 65 25 3d 6e 61 6d  65 24 0d 7d 00 40 c8 99  |ame%=name$.}.@..|
00016e40  22 57 69 6d 70 5f 4c 6f  61 64 54 65 6d 70 6c 61  |"Wimp_LoadTempla|
00016e50  74 65 22 2c 2c 62 6c 6f  63 6b 25 2c 62 75 66 66  |te",,block%,buff|
00016e60  25 2c 62 75 66 66 25 2b  6c 65 6e 25 2c 66 6f 6e  |%,buff%+len%,fon|
00016e70  74 25 2c 6e 61 6d 65 25  2c 30 0d 7d 0a 14 62 6c  |t%,name%,0.}..bl|
00016e80  6f 63 6b 25 21 36 34 3d  73 61 72 65 61 25 0d 7d  |ock%!64=sarea%.}|
00016e90  14 2b c8 99 22 57 69 6d  70 5f 43 72 65 61 74 65  |.+.."Wimp_Create|
00016ea0  57 69 6e 64 6f 77 22 2c  2c 62 6c 6f 63 6b 25 20  |Window",,block% |
00016eb0  b8 20 68 61 6e 64 6c 65  25 0d 7d 1e 0c 3d 68 61  |. handle%.}..=ha|
00016ec0  6e 64 6c 65 25 0d 7d 28  04 0d 7d 32 04 0d 7d 3c  |ndle%.}(..}2..}<|
00016ed0  23 dd 20 a4 77 68 6f 6c  65 5f 73 63 72 65 65 6e  |#. .whole_screen|
00016ee0  5f 77 69 6e 64 6f 77 28  68 61 6e 64 6c 65 25 29  |_window(handle%)|
00016ef0  0d 7d 46 35 ea 20 77 25  2c 68 25 2c 78 73 68 69  |.}F5. w%,h%,xshi|
00016f00  66 74 25 2c 79 73 68 69  66 74 25 2c 6f 70 65 6e  |ft%,yshift%,open|
00016f10  25 2c 70 72 65 76 25 3a  70 72 65 76 25 3d 68 61  |%,prev%:prev%=ha|
00016f20  6e 64 6c 65 25 0d 7d 50  26 e7 20 a4 77 69 6e 64  |ndle%.}P&. .wind|
00016f30  6f 77 5f 6f 70 65 6e 28  68 61 6e 64 6c 65 25 29  |ow_open(handle%)|
00016f40  20 8c 20 6f 70 65 6e 25  3d 2d 31 0d 7d 5a 32 21  | . open%=-1.}Z2!|
00016f50  62 6c 6f 63 6b 25 3d 68  61 6e 64 6c 65 25 3a c8  |block%=handle%:.|
00016f60  99 22 57 69 6d 70 5f 47  65 74 57 69 6e 64 6f 77  |."Wimp_GetWindow|
00016f70  49 6e 66 6f 22 2c 2c 62  6c 6f 63 6b 25 0d 7d 64  |Info",,block%.}d|
00016f80  1b f2 6d 6f 64 65 5f 64  69 6d 65 6e 73 69 6f 6e  |..mode_dimension|
00016f90  73 28 77 25 2c 68 25 29  0d 7d 6e 33 62 6c 6f 63  |s(w%,h%).}n3bloc|
00016fa0  6b 25 21 34 3d 30 3a 62  6c 6f 63 6b 25 21 38 3d  |k%!4=0:block%!8=|
00016fb0  30 3a 62 6c 6f 63 6b 25  21 31 32 3d 77 25 3a 62  |0:block%!12=w%:b|
00016fc0  6c 6f 63 6b 25 21 31 36  3d 68 25 0d 7d 78 28 78  |lock%!16=h%.}x(x|
00016fd0  73 68 69 66 74 25 3d 28  77 25 2d 28 62 6c 6f 63  |shift%=(w%-(bloc|
00016fe0  6b 25 21 35 32 2d 62 6c  6f 63 6b 25 21 34 34 29  |k%!52-block%!44)|
00016ff0  29 2f 32 0d 7d 82 28 79  73 68 69 66 74 25 3d 28  |)/2.}.(yshift%=(|
00017000  68 25 2d 28 62 6c 6f 63  6b 25 21 35 36 2d 62 6c  |h%-(block%!56-bl|
00017010  6f 63 6b 25 21 34 38 29  29 2f 32 0d 7d 8c 2b 62  |ock%!48))/2.}.+b|
00017020  6c 6f 63 6b 25 21 32 30  20 2d 3d 78 73 68 69 66  |lock%!20 -=xshif|
00017030  74 25 3a 62 6c 6f 63 6b  25 21 32 34 20 2b 3d 79  |t%:block%!24 +=y|
00017040  73 68 69 66 74 25 0d 7d  96 2b 62 6c 6f 63 6b 25  |shift%.}.+block%|
00017050  21 34 34 20 2d 3d 78 73  68 69 66 74 25 3a 62 6c  |!44 -=xshift%:bl|
00017060  6f 63 6b 25 21 35 32 20  2b 3d 78 73 68 69 66 74  |ock%!52 +=xshift|
00017070  25 0d 7d a0 2b 62 6c 6f  63 6b 25 21 35 36 20 2b  |%.}.+block%!56 +|
00017080  3d 79 73 68 69 66 74 25  3a 62 6c 6f 63 6b 25 21  |=yshift%:block%!|
00017090  34 38 20 2d 3d 79 73 68  69 66 74 25 0d 7d aa 25  |48 -=yshift%.}.%|
000170a0  62 6c 6f 63 6b 25 21 33  32 3d 28 62 6c 6f 63 6b  |block%!32=(block|
000170b0  25 21 33 32 20 80 20 26  38 30 46 46 46 46 46 46  |%!32 . &80FFFFFF|
000170c0  29 0d 7d b4 2d c8 99 22  57 69 6d 70 5f 43 72 65  |).}.-.."Wimp_Cre|
000170d0  61 74 65 57 69 6e 64 6f  77 22 2c 2c 62 6c 6f 63  |ateWindow",,bloc|
000170e0  6b 25 2b 34 20 b8 20 68  61 6e 64 6c 65 25 0d 7d  |k%+4 . handle%.}|
000170f0  be 23 e7 20 6f 70 65 6e  25 20 8c 20 f2 6f 70 65  |.#. open% . .ope|
00017100  6e 5f 77 69 6e 64 6f 77  28 68 61 6e 64 6c 65 25  |n_window(handle%|
00017110  29 0d 7d c8 2f 21 62 6c  6f 63 6b 25 3d 70 72 65  |).}./!block%=pre|
00017120  76 25 3a c8 99 22 57 69  6d 70 5f 44 65 6c 65 74  |v%:.."Wimp_Delet|
00017130  65 57 69 6e 64 6f 77 22  2c 2c 62 6c 6f 63 6b 25  |eWindow",,block%|
00017140  0d 7d d2 0c 3d 68 61 6e  64 6c 65 25 0d 7d dc 04  |.}..=handle%.}..|
00017150  0d 7d e6 04 0d 7d f0 2f  dd 20 a4 6f 72 64 69 6e  |.}...}./. .ordin|
00017160  61 72 79 5f 77 69 6e 64  6f 77 28 68 61 6e 64 6c  |ary_window(handl|
00017170  65 25 2c 77 25 2c 68 25  2c 63 79 24 2c 66 6c 67  |e%,w%,h%,cy$,flg|
00017180  73 25 29 0d 7d fa 2b ea  20 6f 70 65 6e 25 2c 70  |s%).}.+. open%,p|
00017190  72 65 76 25 2c 56 62 61  72 25 2c 48 62 61 72 25  |rev%,Vbar%,Hbar%|
000171a0  3a 70 72 65 76 25 3d 68  61 6e 64 6c 65 25 0d 7e  |:prev%=handle%.~|
000171b0  04 24 e7 20 28 66 6c 67  73 25 20 80 20 26 31 30  |.$. (flgs% . &10|
000171c0  30 30 30 30 30 30 29 20  8c 20 56 62 61 72 25 3d  |000000) . Vbar%=|
000171d0  34 34 0d 7e 0e 24 e7 20  28 66 6c 67 73 25 20 80  |44.~.$. (flgs% .|
000171e0  20 26 34 30 30 30 30 30  30 30 29 20 8c 20 48 62  | &40000000) . Hb|
000171f0  61 72 25 3d 34 34 0d 7e  18 1f f2 6d 6f 64 65 5f  |ar%=44.~...mode_|
00017200  64 69 6d 65 6e 73 69 6f  6e 73 28 53 43 77 25 2c  |dimensions(SCw%,|
00017210  53 43 68 25 29 0d 7e 22  26 e7 20 a4 77 69 6e 64  |SCh%).~"&. .wind|
00017220  6f 77 5f 6f 70 65 6e 28  68 61 6e 64 6c 65 25 29  |ow_open(handle%)|
00017230  20 8c 20 6f 70 65 6e 25  3d 2d 31 0d 7e 2c 32 21  | . open%=-1.~,2!|
00017240  62 6c 6f 63 6b 25 3d 68  61 6e 64 6c 65 25 3a c8  |block%=handle%:.|
00017250  99 22 57 69 6d 70 5f 47  65 74 57 69 6e 64 6f 77  |."Wimp_GetWindow|
00017260  49 6e 66 6f 22 2c 2c 62  6c 6f 63 6b 25 0d 7e 36  |Info",,block%.~6|
00017270  1e 62 6c 6f 63 6b 25 21  34 3d 28 53 43 77 25 2d  |.block%!4=(SCw%-|
00017280  77 25 2d 56 62 61 72 25  29 2f 32 0d 7e 40 37 e7  |w%-Vbar%)/2.~@7.|
00017290  20 63 79 24 3d 22 59 22  20 8c 20 62 6c 6f 63 6b  | cy$="Y" . block|
000172a0  25 21 38 3d 28 53 43 68  25 2d 68 25 2d 48 62 61  |%!8=(SCh%-h%-Hba|
000172b0  72 25 29 2f 32 20 8b 20  62 6c 6f 63 6b 25 21 38  |r%)/2 . block%!8|
000172c0  3d 30 0d 7e 4a 2f 62 6c  6f 63 6b 25 21 31 32 3d  |=0.~J/block%!12=|
000172d0  62 6c 6f 63 6b 25 21 34  2b 77 25 3a 62 6c 6f 63  |block%!4+w%:bloc|
000172e0  6b 25 21 31 36 3d 62 6c  6f 63 6b 25 21 38 2b 68  |k%!16=block%!8+h|
000172f0  25 0d 7e 54 1b 62 6c 6f  63 6b 25 21 32 30 3d 30  |%.~T.block%!20=0|
00017300  3a 62 6c 6f 63 6b 25 21  32 34 3d 30 0d 7e 5e 36  |:block%!24=0.~^6|
00017310  62 6c 6f 63 6b 25 21 34  34 3d 30 3a 62 6c 6f 63  |block%!44=0:bloc|
00017320  6b 25 21 34 38 3d 2d 68  25 3a 62 6c 6f 63 6b 25  |k%!48=-h%:block%|
00017330  21 35 32 3d 77 25 3a 62  6c 6f 63 6b 25 21 35 36  |!52=w%:block%!56|
00017340  3d 30 0d 7e 68 13 62 6c  6f 63 6b 25 21 33 32 3d  |=0.~h.block%!32=|
00017350  66 6c 67 73 25 0d 7e 72  2d c8 99 22 57 69 6d 70  |flgs%.~r-.."Wimp|
00017360  5f 43 72 65 61 74 65 57  69 6e 64 6f 77 22 2c 2c  |_CreateWindow",,|
00017370  62 6c 6f 63 6b 25 2b 34  20 b8 20 68 61 6e 64 6c  |block%+4 . handl|
00017380  65 25 0d 7e 7c 23 e7 20  6f 70 65 6e 25 20 8c 20  |e%.~|#. open% . |
00017390  f2 6f 70 65 6e 5f 77 69  6e 64 6f 77 28 68 61 6e  |.open_window(han|
000173a0  64 6c 65 25 29 0d 7e 86  2f 21 62 6c 6f 63 6b 25  |dle%).~./!block%|
000173b0  3d 70 72 65 76 25 3a c8  99 22 57 69 6d 70 5f 44  |=prev%:.."Wimp_D|
000173c0  65 6c 65 74 65 57 69 6e  64 6f 77 22 2c 2c 62 6c  |eleteWindow",,bl|
000173d0  6f 63 6b 25 0d 7e 90 0c  3d 68 61 6e 64 6c 65 25  |ock%.~..=handle%|
000173e0  0d 7e 9a 04 0d 7e a4 04  0d 7e ae 22 dd 20 a4 70  |.~...~...~.". .p|
000173f0  6c 61 63 65 5f 77 69 6e  64 6f 77 28 68 61 6e 64  |lace_window(hand|
00017400  6c 65 25 2c 78 25 2c 79  25 29 0d 7e b8 11 ea 20  |le%,x%,y%).~... |
00017410  77 25 2c 68 25 2c 70 72  65 76 25 0d 7e c2 11 70  |w%,h%,prev%.~..p|
00017420  72 65 76 25 3d 68 61 6e  64 6c 65 25 0d 7e cc 32  |rev%=handle%.~.2|
00017430  21 62 6c 6f 63 6b 25 3d  68 61 6e 64 6c 65 25 3a  |!block%=handle%:|
00017440  c8 99 22 57 69 6d 70 5f  47 65 74 57 69 6e 64 6f  |.."Wimp_GetWindo|
00017450  77 49 6e 66 6f 22 2c 2c  62 6c 6f 63 6b 25 0d 7e  |wInfo",,block%.~|
00017460  d6 2f 77 25 3d 62 6c 6f  63 6b 25 21 31 32 2d 62  |./w%=block%!12-b|
00017470  6c 6f 63 6b 25 21 34 3a  68 25 3d 62 6c 6f 63 6b  |lock%!4:h%=block|
00017480  25 21 31 36 2d 62 6c 6f  63 6b 25 21 38 0d 7e e0  |%!16-block%!8.~.|
00017490  3b 62 6c 6f 63 6b 25 21  34 3d 78 25 3a 62 6c 6f  |;block%!4=x%:blo|
000174a0  63 6b 25 21 38 3d 79 25  3a 62 6c 6f 63 6b 25 21  |ck%!8=y%:block%!|
000174b0  31 32 3d 78 25 2b 77 25  3a 62 6c 6f 63 6b 25 21  |12=x%+w%:block%!|
000174c0  31 36 3d 79 25 2b 68 25  0d 7e ea 2d c8 99 22 57  |16=y%+h%.~.-.."W|
000174d0  69 6d 70 5f 43 72 65 61  74 65 57 69 6e 64 6f 77  |imp_CreateWindow|
000174e0  22 2c 2c 62 6c 6f 63 6b  25 2b 34 20 b8 20 68 61  |",,block%+4 . ha|
000174f0  6e 64 6c 65 25 0d 7e f4  19 f2 6f 70 65 6e 5f 77  |ndle%.~...open_w|
00017500  69 6e 64 6f 77 28 68 61  6e 64 6c 65 25 29 0d 7e  |indow(handle%).~|
00017510  fe 2f 21 62 6c 6f 63 6b  25 3d 70 72 65 76 25 3a  |./!block%=prev%:|
00017520  c8 99 22 57 69 6d 70 5f  44 65 6c 65 74 65 57 69  |.."Wimp_DeleteWi|
00017530  6e 64 6f 77 22 2c 2c 62  6c 6f 63 6b 25 0d 7f 08  |ndow",,block%...|
00017540  0c 3d 68 61 6e 64 6c 65  25 0d 7f 12 04 0d 7f 1c  |.=handle%.......|
00017550  04 0d 7f 26 2f dd 20 a4  72 65 6c 61 74 69 76 65  |...&/. .relative|
00017560  5f 77 69 6e 64 6f 77 28  4d 68 61 6e 64 6c 65 25  |_window(Mhandle%|
00017570  2c 54 68 61 6e 64 6c 65  25 2c 78 25 2c 79 25 29  |,Thandle%,x%,y%)|
00017580  0d 7f 30 0d ea 20 4d 78  25 2c 4d 79 25 0d 7f 3a  |..0.. Mx%,My%..:|
00017590  33 21 62 6c 6f 63 6b 25  3d 4d 68 61 6e 64 6c 65  |3!block%=Mhandle|
000175a0  25 3a c8 99 22 57 69 6d  70 5f 47 65 74 57 69 6e  |%:.."Wimp_GetWin|
000175b0  64 6f 77 49 6e 66 6f 22  2c 2c 62 6c 6f 63 6b 25  |dowInfo",,block%|
000175c0  0d 7f 44 1d 4d 78 25 3d  62 6c 6f 63 6b 25 21 34  |..D.Mx%=block%!4|
000175d0  3a 4d 79 25 3d 62 6c 6f  63 6b 25 21 38 0d 7f 4e  |:My%=block%!8..N|
000175e0  2a 3d a4 70 6c 61 63 65  5f 77 69 6e 64 6f 77 28  |*=.place_window(|
000175f0  54 68 61 6e 64 6c 65 25  2c 4d 78 25 2b 78 25 2c  |Thandle%,Mx%+x%,|
00017600  4d 79 25 2b 79 25 29 0d  7f 58 04 0d 7f 62 04 0d  |My%+y%)..X...b..|
00017610  7f 6c 21 dd 20 a4 63 65  6e 74 72 65 5f 77 69 6e  |.l!. .centre_win|
00017620  64 6f 77 28 68 61 6e 64  6c 65 25 2c 63 79 24 29  |dow(handle%,cy$)|
00017630  0d 7f 76 2d ea 20 53 43  77 25 2c 53 43 68 25 2c  |..v-. SCw%,SCh%,|
00017640  77 25 2c 68 25 2c 70 72  65 76 25 2c 66 6c 67 73  |w%,h%,prev%,flgs|
00017650  25 2c 48 62 61 72 25 2c  56 62 61 72 25 0d 7f 80  |%,Hbar%,Vbar%...|
00017660  11 70 72 65 76 25 3d 68  61 6e 64 6c 65 25 0d 7f  |.prev%=handle%..|
00017670  8a 1f f2 6d 6f 64 65 5f  64 69 6d 65 6e 73 69 6f  |...mode_dimensio|
00017680  6e 73 28 53 43 77 25 2c  53 43 68 25 29 0d 7f 94  |ns(SCw%,SCh%)...|
00017690  32 21 62 6c 6f 63 6b 25  3d 68 61 6e 64 6c 65 25  |2!block%=handle%|
000176a0  3a c8 99 22 57 69 6d 70  5f 47 65 74 57 69 6e 64  |:.."Wimp_GetWind|
000176b0  6f 77 49 6e 66 6f 22 2c  2c 62 6c 6f 63 6b 25 0d  |owInfo",,block%.|
000176c0  7f 9e 13 66 6c 67 73 25  3d 62 6c 6f 63 6b 25 21  |...flgs%=block%!|
000176d0  33 32 0d 7f a8 24 e7 20  28 66 6c 67 73 25 20 80  |32...$. (flgs% .|
000176e0  20 26 31 30 30 30 30 30  30 30 29 20 8c 20 56 62  | &10000000) . Vb|
000176f0  61 72 25 3d 34 34 0d 7f  b2 24 e7 20 28 66 6c 67  |ar%=44...$. (flg|
00017700  73 25 20 80 20 26 34 30  30 30 30 30 30 30 29 20  |s% . &40000000) |
00017710  8c 20 48 62 61 72 25 3d  34 34 0d 7f bc 2f 77 25  |. Hbar%=44.../w%|
00017720  3d 62 6c 6f 63 6b 25 21  31 32 2d 62 6c 6f 63 6b  |=block%!12-block|
00017730  25 21 34 3a 68 25 3d 62  6c 6f 63 6b 25 21 31 36  |%!4:h%=block%!16|
00017740  2d 62 6c 6f 63 6b 25 21  38 0d 7f c6 37 e7 20 63  |-block%!8...7. c|
00017750  79 24 3d 22 59 22 20 8c  20 62 6c 6f 63 6b 25 21  |y$="Y" . block%!|
00017760  38 3d 28 53 43 68 25 2d  68 25 2d 48 62 61 72 25  |8=(SCh%-h%-Hbar%|
00017770  29 2f 32 20 8b 20 62 6c  6f 63 6b 25 21 38 3d 30  |)/2 . block%!8=0|
00017780  0d 7f d0 1e 62 6c 6f 63  6b 25 21 34 3d 28 53 43  |....block%!4=(SC|
00017790  77 25 2d 77 25 2d 56 62  61 72 25 29 2f 32 0d 7f  |w%-w%-Vbar%)/2..|
000177a0  da 2f 62 6c 6f 63 6b 25  21 31 32 3d 62 6c 6f 63  |./block%!12=bloc|
000177b0  6b 25 21 34 2b 77 25 3a  62 6c 6f 63 6b 25 21 31  |k%!4+w%:block%!1|
000177c0  36 3d 62 6c 6f 63 6b 25  21 38 2b 68 25 0d 7f e4  |6=block%!8+h%...|
000177d0  2d c8 99 22 57 69 6d 70  5f 43 72 65 61 74 65 57  |-.."Wimp_CreateW|
000177e0  69 6e 64 6f 77 22 2c 2c  62 6c 6f 63 6b 25 2b 34  |indow",,block%+4|
000177f0  20 b8 20 68 61 6e 64 6c  65 25 0d 7f ee 19 f2 6f  | . handle%.....o|
00017800  70 65 6e 5f 77 69 6e 64  6f 77 28 68 61 6e 64 6c  |pen_window(handl|
00017810  65 25 29 0d 7f f8 2f 21  62 6c 6f 63 6b 25 3d 70  |e%).../!block%=p|
00017820  72 65 76 25 3a c8 99 22  57 69 6d 70 5f 44 65 6c  |rev%:.."Wimp_Del|
00017830  65 74 65 57 69 6e 64 6f  77 22 2c 2c 62 6c 6f 63  |eteWindow",,bloc|
00017840  6b 25 0d 80 02 0c 3d 68  61 6e 64 6c 65 25 0d 80  |k%....=handle%..|
00017850  0c 04 0d 80 16 04 0d 80  20 21 dd 20 f2 6d 6f 64  |........ !. .mod|
00017860  65 5f 64 69 6d 65 6e 73  69 6f 6e 73 28 f8 20 77  |e_dimensions(. w|
00017870  25 2c f8 20 68 25 29 0d  80 2a 15 ea 20 72 78 25  |%,. h%)..*.. rx%|
00017880  2c 72 79 25 2c 65 78 25  2c 65 79 25 0d 80 34 29  |,ry%,ex%,ey%..4)|
00017890  c8 99 22 4f 53 5f 52 65  61 64 4d 6f 64 65 56 61  |.."OS_ReadModeVa|
000178a0  72 69 61 62 6c 65 22 2c  2d 31 2c 31 31 20 b8 20  |riable",-1,11 . |
000178b0  2c 2c 72 78 25 0d 80 3e  28 c8 99 22 4f 53 5f 52  |,,rx%..>(.."OS_R|
000178c0  65 61 64 4d 6f 64 65 56  61 72 69 61 62 6c 65 22  |eadModeVariable"|
000178d0  2c 2d 31 2c 34 20 b8 20  2c 2c 65 78 25 0d 80 48  |,-1,4 . ,,ex%..H|
000178e0  29 c8 99 22 4f 53 5f 52  65 61 64 4d 6f 64 65 56  |).."OS_ReadModeV|
000178f0  61 72 69 61 62 6c 65 22  2c 2d 31 2c 31 32 20 b8  |ariable",-1,12 .|
00017900  20 2c 2c 72 79 25 0d 80  52 29 20 c8 99 22 4f 53  | ,,ry%..R) .."OS|
00017910  5f 52 65 61 64 4d 6f 64  65 56 61 72 69 61 62 6c  |_ReadModeVariabl|
00017920  65 22 2c 2d 31 2c 35 20  b8 20 2c 2c 65 79 25 0d  |e",-1,5 . ,,ey%.|
00017930  80 5c 25 77 25 3d 28 72  78 25 2b 31 29 2a 32 5e  |.\%w%=(rx%+1)*2^|
00017940  65 78 25 3a 68 25 3d 28  72 79 25 2b 31 29 2a 32  |ex%:h%=(ry%+1)*2|
00017950  5e 65 79 25 0d 80 66 05  e1 0d 80 70 04 0d 80 7a  |^ey%..f....p...z|
00017960  04 0d 80 84 1c dd 20 f2  6f 70 65 6e 5f 77 69 6e  |...... .open_win|
00017970  64 6f 77 28 77 68 61 6e  64 6c 65 25 29 0d 80 8e  |dow(whandle%)...|
00017980  20 f4 20 4f 70 65 6e 73  20 77 69 6e 64 6f 77 20  | . Opens window |
00017990  67 69 76 65 6e 20 68 61  6e 64 6c 65 2e 0d 80 98  |given handle....|
000179a0  14 21 62 6c 6f 63 6b 25  3d 77 68 61 6e 64 6c 65  |.!block%=whandle|
000179b0  25 0d 80 a2 23 c8 99 22  57 69 6d 70 5f 47 65 74  |%...#.."Wimp_Get|
000179c0  57 69 6e 64 6f 77 53 74  61 74 65 22 2c 2c 62 6c  |WindowState",,bl|
000179d0  6f 63 6b 25 0d 80 ac 10  62 6c 6f 63 6b 25 21 32  |ock%....block%!2|
000179e0  38 3d 2d 31 0d 80 b6 1f  c8 99 22 57 69 6d 70 5f  |8=-1......"Wimp_|
000179f0  4f 70 65 6e 57 69 6e 64  6f 77 22 2c 2c 62 6c 6f  |OpenWindow",,blo|
00017a00  63 6b 25 0d 80 c0 05 e1  0d 80 ca 04 0d 80 d4 04  |ck%.............|
00017a10  0d 80 de 1d dd 20 f2 63  6c 6f 73 65 5f 77 69 6e  |..... .close_win|
00017a20  64 6f 77 28 77 68 61 6e  64 6c 65 25 29 0d 80 e8  |dow(whandle%)...|
00017a30  21 f4 20 43 6c 6f 73 65  73 20 77 69 6e 64 6f 77  |!. Closes window|
00017a40  20 67 69 76 65 6e 20 68  61 6e 64 6c 65 2e 0d 80  | given handle...|
00017a50  f2 14 21 62 6c 6f 63 6b  25 3d 77 68 61 6e 64 6c  |..!block%=whandl|
00017a60  65 25 0d 80 fc 23 c8 99  22 57 69 6d 70 5f 47 65  |e%...#.."Wimp_Ge|
00017a70  74 57 69 6e 64 6f 77 53  74 61 74 65 22 2c 2c 62  |tWindowState",,b|
00017a80  6c 6f 63 6b 25 0d 81 06  20 c8 99 22 57 69 6d 70  |lock%... .."Wimp|
00017a90  5f 43 6c 6f 73 65 57 69  6e 64 6f 77 22 2c 2c 62  |_CloseWindow",,b|
00017aa0  6c 6f 63 6b 25 0d 81 10  05 e1 0d 81 1a 04 0d 81  |lock%...........|
00017ab0  24 04 0d 81 2e 35 dd 20  a4 74 6f 70 5f 77 69 6e  |$....5. .top_win|
00017ac0  64 6f 77 28 77 68 61 6e  64 6c 65 25 29 3d a4 77  |dow(whandle%)=.w|
00017ad0  69 6e 64 6f 77 5f 66 6c  61 67 73 28 77 68 61 6e  |indow_flags(whan|
00017ae0  64 6c 65 25 2c 32 29 0d  81 38 36 dd 20 a4 77 69  |dle%,2)..86. .wi|
00017af0  6e 64 6f 77 5f 6f 70 65  6e 28 77 68 61 6e 64 6c  |ndow_open(whandl|
00017b00  65 25 29 3d a4 77 69 6e  64 6f 77 5f 66 6c 61 67  |e%)=.window_flag|
00017b10  73 28 77 68 61 6e 64 6c  65 25 2c 31 29 0d 81 42  |s(whandle%,1)..B|
00017b20  3b dd 20 a4 77 69 6e 64  6f 77 5f 66 75 6c 6c 5f  |;. .window_full_|
00017b30  73 69 7a 65 28 77 68 61  6e 64 6c 65 25 29 3d a4  |size(whandle%)=.|
00017b40  77 69 6e 64 6f 77 5f 66  6c 61 67 73 28 77 68 61  |window_flags(wha|
00017b50  6e 64 6c 65 25 2c 34 29  0d 81 4c 04 0d 81 56 22  |ndle%,4)..L...V"|
00017b60  dd 20 a4 77 69 6e 64 6f  77 5f 66 6c 61 67 73 28  |. .window_flags(|
00017b70  77 68 61 6e 64 6c 65 25  2c 62 69 74 25 29 0d 81  |whandle%,bit%)..|
00017b80  60 14 21 62 6c 6f 63 6b  25 3d 77 68 61 6e 64 6c  |`.!block%=whandl|
00017b90  65 25 0d 81 6a 23 c8 99  22 57 69 6d 70 5f 47 65  |e%..j#.."Wimp_Ge|
00017ba0  74 57 69 6e 64 6f 77 53  74 61 74 65 22 2c 2c 62  |tWindowState",,b|
00017bb0  6c 6f 63 6b 25 0d 81 74  1e 3d 28 28 62 6c 6f 63  |lock%..t.=((bloc|
00017bc0  6b 25 3f 33 34 20 80 20  62 69 74 25 29 3d 62 69  |k%?34 . bit%)=bi|
00017bd0  74 25 29 0d 81 7e 04 0d  81 88 04 0d 81 92 2e dd  |t%)..~..........|
00017be0  20 a4 75 70 64 61 74 65  5f 77 69 6e 64 6f 77 28  | .update_window(|
00017bf0  77 68 61 6e 64 6c 65 25  2c 78 31 25 2c 79 31 25  |whandle%,x1%,y1%|
00017c00  2c 78 32 25 2c 79 32 25  29 0d 81 9c 0b ea 20 66  |,x2%,y2%)..... f|
00017c10  6c 61 67 25 0d 81 a6 14  21 62 6c 6f 63 6b 25 3d  |lag%....!block%=|
00017c20  77 68 61 6e 64 6c 65 25  0d 81 b0 39 62 6c 6f 63  |whandle%...9bloc|
00017c30  6b 25 21 34 3d 78 31 25  3a 62 6c 6f 63 6b 25 21  |k%!4=x1%:block%!|
00017c40  38 3d 79 31 25 3a 62 6c  6f 63 6b 25 21 31 32 3d  |8=y1%:block%!12=|
00017c50  78 32 25 3a 62 6c 6f 63  6b 25 21 31 36 3d 79 32  |x2%:block%!16=y2|
00017c60  25 0d 81 ba 29 c8 99 22  57 69 6d 70 5f 55 70 64  |%...).."Wimp_Upd|
00017c70  61 74 65 57 69 6e 64 6f  77 22 2c 2c 62 6c 6f 63  |ateWindow",,bloc|
00017c80  6b 25 20 b8 20 66 6c 61  67 25 0d 81 c4 0a 3d 66  |k% . flag%....=f|
00017c90  6c 61 67 25 0d 81 ce 04  0d 81 d8 04 0d 81 e2 2d  |lag%...........-|
00017ca0  dd 20 f2 77 6f 72 6b 5f  61 72 65 61 5f 6f 72 69  |. .work_area_ori|
00017cb0  67 69 6e 28 77 68 61 6e  64 6c 65 25 2c f8 20 6f  |gin(whandle%,. o|
00017cc0  78 25 2c f8 20 6f 79 25  29 0d 81 ec 14 21 62 6c  |x%,. oy%)....!bl|
00017cd0  6f 63 6b 25 3d 77 68 61  6e 64 6c 65 25 0d 81 f6  |ock%=whandle%...|
00017ce0  23 c8 99 22 57 69 6d 70  5f 47 65 74 57 69 6e 64  |#.."Wimp_GetWind|
00017cf0  6f 77 53 74 61 74 65 22  2c 2c 62 6c 6f 63 6b 25  |owState",,block%|
00017d00  0d 82 00 1a 6f 78 25 3d  62 6c 6f 63 6b 25 21 34  |....ox%=block%!4|
00017d10  2d 62 6c 6f 63 6b 25 21  32 30 0d 82 0a 1b 6f 79  |-block%!20....oy|
00017d20  25 3d 62 6c 6f 63 6b 25  21 31 36 2d 62 6c 6f 63  |%=block%!16-bloc|
00017d30  6b 25 21 32 34 0d 82 14  05 e1 0d 82 1e 04 0d 82  |k%!24...........|
00017d40  28 04 0d 82 32 4e 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |(...2N**********|
00017d50  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00017d90  0d 82 3c 04 0d 82 46 0b  f4 20 4d 65 6e 75 73 0d  |..<...F.. Menus.|
00017da0  82 50 04 0d 82 5a 38 dd  20 f2 73 65 74 5f 75 70  |.P...Z8. .set_up|
00017db0  5f 6d 65 6e 75 28 74 69  74 6c 65 24 2c 61 64 64  |_menu(title$,add|
00017dc0  72 65 73 73 25 2c 6e 75  6d 25 2c 69 74 65 6d 24  |ress%,num%,item$|
00017dd0  28 29 2c 64 61 74 61 25  28 29 29 0d 82 64 3a f4  |(),data%())..d:.|
00017de0  20 53 65 74 73 20 75 70  20 6d 65 6e 75 20 62 6c  | Sets up menu bl|
00017df0  6f 63 6b 2e 49 74 65 6d  20 64 61 74 61 20 69 73  |ock.Item data is|
00017e00  20 72 65 61 64 20 66 72  6f 6d 20 64 61 74 61 20  | read from data |
00017e10  6c 69 73 74 2e 0d 82 6e  52 f4 20 44 61 74 61 20  |list...nR. Data |
00017e20  73 75 62 73 63 72 69 70  74 73 20 2d 20 30 20 6d  |subscripts - 0 m|
00017e30  65 6e 75 20 66 6c 61 67  73 2c 31 20 73 75 62 70  |enu flags,1 subp|
00017e40  6f 69 6e 74 65 72 2c 32  20 73 68 61 64 65 2c 33  |ointer,2 shade,3|
00017e50  20 62 75 66 66 65 72 2c  34 20 62 75 66 66 65 72  | buffer,4 buffer|
00017e60  20 6c 65 6e 67 74 68 0d  82 78 04 0d 82 82 10 ea  | length..x......|
00017e70  20 70 74 72 25 2c 69 74  65 6d 25 0d 82 8c 27 24  | ptr%,item%...'$|
00017e80  61 64 64 72 65 73 73 25  3d 74 69 74 6c 65 24 3a  |address%=title$:|
00017e90  77 69 64 74 68 25 3d a9  20 74 69 74 6c 65 24 20  |width%=. title$ |
00017ea0  2d 33 0d 82 96 33 61 64  64 72 65 73 73 25 21 31  |-3...3address%!1|
00017eb0  32 3d 26 37 30 32 30 37  3a 61 64 64 72 65 73 73  |2=&70207:address|
00017ec0  25 21 32 30 3d 34 34 3a  61 64 64 72 65 73 73 25  |%!20=44:address%|
00017ed0  21 32 34 3d 30 0d 82 a0  14 70 74 72 25 3d 61 64  |!24=0....ptr%=ad|
00017ee0  64 72 65 73 73 25 2b 32  38 0d 82 aa 04 0d 82 b4  |dress%+28.......|
00017ef0  14 e3 20 69 74 65 6d 25  3d 30 20 b8 20 6e 75 6d  |.. item%=0 . num|
00017f00  25 0d 82 be 40 20 70 74  72 25 21 30 3d 64 61 74  |%...@ ptr%!0=dat|
00017f10  61 25 28 69 74 65 6d 25  2c 30 29 3a 70 74 72 25  |a%(item%,0):ptr%|
00017f20  21 34 3d 64 61 74 61 25  28 69 74 65 6d 25 2c 31  |!4=data%(item%,1|
00017f30  29 3a 70 74 72 25 21 38  3d 26 37 30 30 30 30 32  |):ptr%!8=&700002|
00017f40  31 0d 82 c8 31 20 e7 20  64 61 74 61 25 28 69 74  |1...1 . data%(it|
00017f50  65 6d 25 2c 32 29 20 8c  20 70 74 72 25 21 38 3d  |em%,2) . ptr%!8=|
00017f60  28 70 74 72 25 21 38 20  84 20 26 34 30 30 30 30  |(ptr%!8 . &40000|
00017f70  30 29 0d 82 d2 04 0d 82  dc 17 20 e7 20 64 61 74  |0)........ . dat|
00017f80  61 25 28 69 74 65 6d 25  2c 33 29 20 8c 0d 82 e6  |a%(item%,3) ....|
00017f90  1e 20 20 f4 20 49 6e 64  69 72 65 63 74 65 64 20  |.  . Indirected |
00017fa0  28 6c 65 6e 67 74 68 3e  31 32 29 0d 82 f0 1c 20  |(length>12).... |
00017fb0  20 70 74 72 25 21 38 3d  28 70 74 72 25 21 38 20  | ptr%!8=(ptr%!8 |
00017fc0  84 20 26 31 30 30 29 0d  82 fa 24 20 20 24 28 64  |. &100)...$  $(d|
00017fd0  61 74 61 25 28 69 74 65  6d 25 2c 33 29 29 3d 69  |ata%(item%,3))=i|
00017fe0  74 65 6d 24 28 69 74 65  6d 25 29 0d 83 04 3e 20  |tem$(item%)...> |
00017ff0  20 70 74 72 25 21 31 32  3d 64 61 74 61 25 28 69  | ptr%!12=data%(i|
00018000  74 65 6d 25 2c 33 29 3a  70 74 72 25 21 31 36 3d  |tem%,3):ptr%!16=|
00018010  2d 31 3a 70 74 72 25 21  32 30 3d 64 61 74 61 25  |-1:ptr%!20=data%|
00018020  28 69 74 65 6d 25 2c 34  29 0d 83 0e 06 20 cc 0d  |(item%,4).... ..|
00018030  83 18 1d 20 20 24 28 70  74 72 25 2b 31 32 29 3d  |...  $(ptr%+12)=|
00018040  69 74 65 6d 24 28 69 74  65 6d 25 29 0d 83 22 06  |item$(item%)..".|
00018050  20 cd 0d 83 2c 04 0d 83  36 10 70 74 72 25 3d 70  | ...,...6.ptr%=p|
00018060  74 72 25 2b 32 34 0d 83  40 52 e7 20 a9 20 69 74  |tr%+24..@R. . it|
00018070  65 6d 24 28 69 74 65 6d  25 29 3e 77 69 64 74 68  |em$(item%)>width|
00018080  25 20 8c 20 77 69 64 74  68 25 3d a9 20 69 74 65  |% . width%=. ite|
00018090  6d 24 28 69 74 65 6d 25  29 3a f4 20 57 69 64 74  |m$(item%):. Widt|
000180a0  68 20 73 65 74 20 66 72  6f 6d 20 6c 6f 6e 67 65  |h set from longe|
000180b0  73 74 20 69 74 65 6d 2e  0d 83 4a 05 ed 0d 83 54  |st item...J....T|
000180c0  04 0d 83 5e 1d 61 64 64  72 65 73 73 25 21 31 36  |...^.address%!16|
000180d0  3d 28 77 69 64 74 68 25  2b 31 29 2a 31 36 0d 83  |=(width%+1)*16..|
000180e0  68 05 e1 0d 83 72 04 0d  83 7c 04 0d 83 86 21 dd  |h....r...|....!.|
000180f0  20 f2 73 68 6f 77 5f 6d  65 6e 75 28 6d 62 6c 6f  | .show_menu(mblo|
00018100  63 6b 25 2c 78 25 2c 6e  75 6d 25 29 0d 83 90 34  |ck%,x%,num%)...4|
00018110  f4 20 46 6f 72 20 73 68  6f 77 69 6e 67 20 61 20  |. For showing a |
00018120  73 74 61 6e 64 61 72 64  20 6d 65 6e 75 20 66 72  |standard menu fr|
00018130  6f 6d 20 74 68 65 20 69  63 6f 6e 20 62 61 72 2e  |om the icon bar.|
00018140  0d 83 9a 08 ea 20 79 25  0d 83 a4 1a 78 25 20 2d  |..... y%....x% -|
00018150  3d 36 34 3a 79 25 3d 31  34 30 2b 34 34 2a 6e 75  |=64:y%=140+44*nu|
00018160  6d 25 0d 83 ae 26 c8 99  22 57 69 6d 70 5f 43 72  |m%...&.."Wimp_Cr|
00018170  65 61 74 65 4d 65 6e 75  22 2c 2c 6d 62 6c 6f 63  |eateMenu",,mbloc|
00018180  6b 25 2c 78 25 2c 79 25  0d 83 b8 05 e1 0d 83 c2  |k%,x%,y%........|
00018190  04 0d 83 cc 04 0d 83 d6  23 dd 20 f2 61 6c 74 65  |........#. .alte|
000181a0  72 5f 74 69 63 6b 28 6d  65 6e 75 25 2c 69 74 65  |r_tick(menu%,ite|
000181b0  6d 25 2c 6e 75 6d 25 29  0d 83 e0 41 f4 20 53 65  |m%,num%)...A. Se|
000181c0  74 73 20 74 69 63 6b 20  62 69 74 20 66 6f 72 20  |ts tick bit for |
000181d0  69 74 65 6d 20 70 6f 73  69 74 69 6f 6e 20 69 74  |item position it|
000181e0  65 6d 25 20 75 6e 73 65  74 73 20 69 74 20 66 6f  |em% unsets it fo|
000181f0  72 20 6f 74 68 65 72 73  2e 0d 83 ea 0d ea 20 61  |r others...... a|
00018200  64 64 25 2c 6e 25 0d 83  f4 11 e3 20 6e 25 3d 30  |dd%,n%..... n%=0|
00018210  20 b8 20 6e 75 6d 25 0d  83 fe 18 20 61 64 64 25  | . num%.... add%|
00018220  3d 6d 65 6e 75 25 2b 32  38 2b 32 34 2a 6e 25 0d  |=menu%+28+24*n%.|
00018230  84 08 39 20 e7 20 6e 25  3d 69 74 65 6d 25 20 8c  |..9 . n%=item% .|
00018240  20 3f 61 64 64 25 3d 28  3f 61 64 64 25 20 84 20  | ?add%=(?add% . |
00018250  31 29 20 8b 20 3f 61 64  64 25 3d 28 3f 61 64 64  |1) . ?add%=(?add|
00018260  25 20 80 20 32 35 34 29  0d 84 12 05 ed 0d 84 1c  |% . 254)........|
00018270  05 e1 0d 84 26 04 0d 84  30 04 0d 84 3a 24 dd 20  |....&...0...:$. |
00018280  f2 73 69 6e 67 6c 65 5f  74 69 63 6b 28 6d 65 6e  |.single_tick(men|
00018290  75 25 2c 69 74 65 6d 25  2c 73 65 74 25 29 0d 84  |u%,item%,set%)..|
000182a0  44 0a ea 20 61 64 64 25  0d 84 4e 1a 61 64 64 25  |D.. add%..N.add%|
000182b0  3d 6d 65 6e 75 25 2b 32  38 2b 32 34 2a 69 74 65  |=menu%+28+24*ite|
000182c0  6d 25 0d 84 58 34 e7 20  73 65 74 25 20 8c 20 3f  |m%..X4. set% . ?|
000182d0  61 64 64 25 3d 28 3f 61  64 64 25 20 84 20 31 29  |add%=(?add% . 1)|
000182e0  20 8b 20 3f 61 64 64 25  3d 28 3f 61 64 64 25 20  | . ?add%=(?add% |
000182f0  80 20 32 35 34 29 0d 84  62 05 e1 0d 84 6c 04 0d  |. 254)..b....l..|
00018300  84 76 04 0d 84 80 23 dd  20 f2 73 68 61 64 65 5f  |.v....#. .shade_|
00018310  69 74 65 6d 28 6d 65 6e  75 25 2c 69 74 65 6d 25  |item(menu%,item%|
00018320  2c 73 65 74 25 29 0d 84  8a 0a ea 20 70 74 72 25  |,set%)..... ptr%|
00018330  0d 84 94 1a 70 74 72 25  3d 6d 65 6e 75 25 2b 32  |....ptr%=menu%+2|
00018340  38 2b 32 34 2a 69 74 65  6d 25 0d 84 9e 44 e7 20  |8+24*item%...D. |
00018350  73 65 74 25 20 8c 20 70  74 72 25 21 38 3d 28 70  |set% . ptr%!8=(p|
00018360  74 72 25 21 38 20 84 20  26 34 30 30 30 30 30 29  |tr%!8 . &400000)|
00018370  20 8b 20 70 74 72 25 21  38 3d 28 70 74 72 25 21  | . ptr%!8=(ptr%!|
00018380  38 20 80 20 26 46 46 42  46 46 46 46 46 29 0d 84  |8 . &FFBFFFFF)..|
00018390  a8 05 e1 0d 84 b2 04 0d  84 bc 4e 2a 2a 2a 2a 2a  |..........N*****|
000183a0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
000183e0  2a 2a 2a 2a 2a 0d 84 c6  04 0d 84 d0 17 f4 20 4d  |*****......... M|
000183f0  6f 64 65 20 69 6e 64 65  70 65 6e 64 65 6e 63 65  |ode independence|
00018400  0d 84 da 04 0d 84 e4 29  dd 20 f2 70 61 6c 65 74  |.......). .palet|
00018410  74 65 5f 62 6c 6f 63 6b  28 73 70 72 69 74 65 24  |te_block(sprite$|
00018420  2c 73 61 72 65 61 25 2c  70 61 6c 25 29 0d 84 ee  |,sarea%,pal%)...|
00018430  55 f4 20 54 61 6b 65 73  20 73 70 72 69 74 65 20  |U. Takes sprite |
00018440  70 61 6c 65 74 74 65 20  61 6e 64 20 70 75 74 73  |palette and puts|
00018450  20 69 74 20 69 6e 74 6f  20 61 20 62 6c 6f 63 6b  | it into a block|
00018460  20 66 6f 72 20 6d 61 6b  69 6e 67 20 74 68 65 20  | for making the |
00018470  74 72 61 6e 73 63 6f 6c  6f 75 72 20 74 61 62 6c  |transcolour tabl|
00018480  65 2e 0d 84 f8 16 ea 20  70 74 72 25 2c 63 25 2c  |e...... ptr%,c%,|
00018490  61 64 64 72 65 73 73 25  0d 85 02 34 c8 99 22 4f  |address%...4.."O|
000184a0  53 5f 53 70 72 69 74 65  4f 70 22 2c 26 31 31 38  |S_SpriteOp",&118|
000184b0  2c 73 61 72 65 61 25 2c  73 70 72 69 74 65 24 20  |,sarea%,sprite$ |
000184c0  b8 20 2c 2c 61 64 64 72  65 73 73 25 0d 85 0c 14  |. ,,address%....|
000184d0  70 74 72 25 3d 61 64 64  72 65 73 73 25 2b 34 34  |ptr%=address%+44|
000184e0  0d 85 16 0f e3 20 63 25  3d 30 20 b8 20 31 35 0d  |..... c%=0 . 15.|
000184f0  85 20 16 20 70 61 6c 25  21 28 63 25 2a 34 29 3d  |. . pal%!(c%*4)=|
00018500  21 70 74 72 25 0d 85 2a  10 20 70 74 72 25 3d 70  |!ptr%..*. ptr%=p|
00018510  74 72 25 2b 38 0d 85 34  05 ed 0d 85 3e 05 e1 0d  |tr%+8..4....>...|
00018520  85 48 04 0d 85 52 04 0d  85 5c 28 dd 20 f2 73 6f  |.H...R...\(. .so|
00018530  75 72 63 65 5f 6d 6f 64  65 5f 66 61 63 74 6f 72  |urce_mode_factor|
00018540  73 28 6d 6f 64 65 25 2c  73 63 61 6c 65 25 29 0d  |s(mode%,scale%).|
00018550  85 66 3d f4 20 43 61 6c  63 61 6c 61 74 65 20 74  |.f=. Calcalate t|
00018560  68 65 20 73 63 61 6c 65  20 66 61 63 74 6f 72 73  |he scale factors|
00018570  20 66 6f 72 20 74 68 65  20 73 70 72 69 74 65 73  | for the sprites|
00018580  20 73 6f 75 72 63 65 20  6d 6f 64 65 0d 85 70 2d  | source mode..p-|
00018590  c8 99 22 4f 53 5f 52 65  61 64 4d 6f 64 65 56 61  |.."OS_ReadModeVa|
000185a0  72 69 61 62 6c 65 22 2c  6d 6f 64 65 25 2c 34 20  |riable",mode%,4 |
000185b0  b8 20 2c 2c 78 65 69 67  25 0d 85 7a 2d c8 99 22  |. ,,xeig%..z-.."|
000185c0  4f 53 5f 52 65 61 64 4d  6f 64 65 56 61 72 69 61  |OS_ReadModeVaria|
000185d0  62 6c 65 22 2c 6d 6f 64  65 25 2c 35 20 b8 20 2c  |ble",mode%,5 . ,|
000185e0  2c 79 65 69 67 25 0d 85  84 27 73 63 61 6c 65 25  |,yeig%...'scale%|
000185f0  21 30 3d 31 3c 3c 78 65  69 67 25 3a 73 63 61 6c  |!0=1<<xeig%:scal|
00018600  65 25 21 34 3d 31 3c 3c  79 65 69 67 25 0d 85 8e  |e%!4=1<<yeig%...|
00018610  05 e1 0d 85 98 04 0d 85  a2 04 0d 85 ac 23 dd 20  |.............#. |
00018620  f2 63 75 72 72 65 6e 74  5f 6d 6f 64 65 5f 66 61  |.current_mode_fa|
00018630  63 74 6f 72 73 28 73 63  61 6c 65 25 29 0d 85 b6  |ctors(scale%)...|
00018640  34 f4 20 50 72 6f 64 75  63 65 20 74 68 65 20 73  |4. Produce the s|
00018650  63 61 6c 65 20 66 61 63  74 6f 72 73 20 66 6f 72  |cale factors for|
00018660  20 74 68 65 20 63 75 72  72 65 6e 74 20 6d 6f 64  | the current mod|
00018670  65 0d 85 c0 2a c8 99 22  4f 53 5f 52 65 61 64 4d  |e...*.."OS_ReadM|
00018680  6f 64 65 56 61 72 69 61  62 6c 65 22 2c 2d 31 2c  |odeVariable",-1,|
00018690  34 20 b8 20 2c 2c 78 65  69 67 25 0d 85 ca 2a c8  |4 . ,,xeig%...*.|
000186a0  99 22 4f 53 5f 52 65 61  64 4d 6f 64 65 56 61 72  |."OS_ReadModeVar|
000186b0  69 61 62 6c 65 22 2c 2d  31 2c 35 20 b8 20 2c 2c  |iable",-1,5 . ,,|
000186c0  79 65 69 67 25 0d 85 d4  28 73 63 61 6c 65 25 21  |yeig%...(scale%!|
000186d0  38 3d 31 3c 3c 78 65 69  67 25 3a 73 63 61 6c 65  |8=1<<xeig%:scale|
000186e0  25 21 31 32 3d 31 3c 3c  79 65 69 67 25 0d 85 de  |%!12=1<<yeig%...|
000186f0  05 e1 0d 85 e8 04 0d 85  f2 04 0d 85 fc 2a dd 20  |.............*. |
00018700  f2 6f 73 5f 74 6f 5f 70  69 78 65 6c 73 28 77 4f  |.os_to_pixels(wO|
00018710  53 25 2c 68 4f 53 25 2c  f8 20 77 50 25 2c f8 20  |S%,hOS%,. wP%,. |
00018720  68 50 25 29 0d 86 06 2a  f4 20 43 6f 6e 76 65 72  |hP%)...*. Conver|
00018730  74 73 20 6f 73 20 75 6e  69 74 73 20 74 6f 20 70  |ts os units to p|
00018740  69 78 65 6c 73 20 66 6f  72 20 6d 6f 64 65 0d 86  |ixels for mode..|
00018750  10 2a c8 99 22 4f 53 5f  52 65 61 64 4d 6f 64 65  |.*.."OS_ReadMode|
00018760  56 61 72 69 61 62 6c 65  22 2c 2d 31 2c 34 20 b8  |Variable",-1,4 .|
00018770  20 2c 2c 78 65 69 67 25  0d 86 1a 2a c8 99 22 4f  | ,,xeig%...*.."O|
00018780  53 5f 52 65 61 64 4d 6f  64 65 56 61 72 69 61 62  |S_ReadModeVariab|
00018790  6c 65 22 2c 2d 31 2c 35  20 b8 20 2c 2c 79 65 69  |le",-1,5 . ,,yei|
000187a0  67 25 0d 86 24 25 77 50  25 3d 77 4f 53 25 2f 32  |g%..$%wP%=wOS%/2|
000187b0  5e 78 65 69 67 25 3a 68  50 25 3d 68 4f 53 25 2f  |^xeig%:hP%=hOS%/|
000187c0  32 5e 79 65 69 67 25 0d  86 2e 05 e1 0d 86 38 04  |2^yeig%.......8.|
000187d0  0d 86 42 04 0d 86 4c 30  dd 20 f2 74 72 61 6e 73  |..B...L0. .trans|
000187e0  74 61 62 6c 65 28 6d 6f  64 65 25 2c 53 70 61 6c  |table(mode%,Spal|
000187f0  25 2c 44 70 61 6c 25 2c  74 72 61 6e 73 74 61 62  |%,Dpal%,transtab|
00018800  6c 65 25 29 0d 86 56 3b  f4 20 50 72 6f 64 75 63  |le%)..V;. Produc|
00018810  65 20 63 6f 6c 6f 75 72  20 74 72 61 6e 73 6c 61  |e colour transla|
00018820  74 69 6f 6e 20 74 61 62  6c 65 20 66 6f 72 20 74  |tion table for t|
00018830  68 65 20 63 75 72 72 65  6e 74 20 6d 6f 64 65 0d  |he current mode.|
00018840  86 60 40 c8 99 22 43 6f  6c 6f 75 72 54 72 61 6e  |.`@.."ColourTran|
00018850  73 5f 53 65 6c 65 63 74  54 61 62 6c 65 22 2c 6d  |s_SelectTable",m|
00018860  6f 64 65 25 2c 53 70 61  6c 25 2c 2d 31 2c 44 70  |ode%,Spal%,-1,Dp|
00018870  61 6c 25 2c 74 72 61 6e  73 74 61 62 6c 65 25 0d  |al%,transtable%.|
00018880  86 6a 05 e1 0d 86 74 04  0d 86 7e 04 0d 86 88 1a  |.j....t...~.....|
00018890  dd 20 f2 73 65 74 5f 47  43 4f 4c 28 63 6f 6c 25  |. .set_GCOL(col%|
000188a0  2c 70 61 6c 25 29 0d 86  92 0b ea 20 62 61 63 6b  |,pal%)..... back|
000188b0  25 0d 86 9c 30 e7 20 63  6f 6c 25 3e 3d 31 32 38  |%...0. col%>=128|
000188c0  20 8c 20 63 6f 6c 25 20  2d 3d 31 32 38 3a 62 61  | . col% -=128:ba|
000188d0  63 6b 25 3d 31 32 38 20  8b 20 62 61 63 6b 25 3d  |ck%=128 . back%=|
000188e0  30 0d 86 a6 31 c8 99 22  43 6f 6c 6f 75 72 54 72  |0...1.."ColourTr|
000188f0  61 6e 73 5f 53 65 74 47  43 4f 4c 22 2c 70 61 6c  |ans_SetGCOL",pal|
00018900  25 21 28 34 2a 63 6f 6c  25 29 2c 62 61 63 6b 25  |%!(4*col%),back%|
00018910  2c 30 0d 86 b0 05 e1 0d  86 ba 04 0d 86 c4 04 0d  |,0..............|
00018920  86 ce 23 dd 20 f2 70 61  6c 66 69 6c 65 5f 74 6f  |..#. .palfile_to|
00018930  5f 62 6c 6f 63 6b 28 66  69 6c 65 24 2c 70 61 6c  |_block(file$,pal|
00018940  25 29 0d 86 d8 10 ea 20  78 25 2c 63 6f 6c 25 2c  |%)..... x%,col%,|
00018950  4e 25 0d 86 e2 0e 78 25  3d 8e 20 66 69 6c 65 24  |N%....x%=. file$|
00018960  0d 86 ec 11 e3 20 63 6f  6c 25 3d 30 20 b8 20 31  |..... col%=0 . 1|
00018970  35 0d 86 f6 0f 20 e3 20  4e 25 3d 30 20 b8 20 32  |5.... . N%=0 . 2|
00018980  0d 87 00 16 20 20 cf 23  78 25 3d 36 2a 63 6f 6c  |....  .#x%=6*col|
00018990  25 2b 33 2b 4e 25 0d 87  0a 1d 20 20 70 61 6c 25  |%+3+N%....  pal%|
000189a0  3f 28 34 2a 63 6f 6c 25  2b 4e 25 2b 31 29 3d 9a  |?(4*col%+N%+1)=.|
000189b0  23 78 25 0d 87 14 06 20  ed 0d 87 1e 05 ed 0d 87  |#x%.... ........|
000189c0  28 08 d9 23 78 25 0d 87  32 05 e1 0d 87 3c 04 0d  |(..#x%..2....<..|
000189d0  87 46 04 0d 87 50 17 dd  a4 6e 75 6d 62 65 72 5f  |.F...P...number_|
000189e0  6f 66 5f 63 6f 6c 6f 75  72 73 0d 87 5a 28 f4 20  |of_colours..Z(. |
000189f0  47 69 76 65 73 20 6e 75  6d 62 65 72 20 6f 66 20  |Gives number of |
00018a00  63 6f 6c 6f 75 72 73 20  69 6e 20 61 20 6d 6f 64  |colours in a mod|
00018a10  65 2e 0d 87 64 0d ea 20  6e 75 6d 63 6f 6c 25 0d  |e...d.. numcol%.|
00018a20  87 6e 2c c8 99 22 4f 53  5f 52 65 61 64 4d 6f 64  |.n,.."OS_ReadMod|
00018a30  65 56 61 72 69 61 62 6c  65 22 2c 2d 31 2c 33 20  |eVariable",-1,3 |
00018a40  b8 20 2c 2c 6e 75 6d 63  6f 6c 25 0d 87 78 0e 3d  |. ,,numcol%..x.=|
00018a50  6e 75 6d 63 6f 6c 25 2b  31 0d 87 82 04 0d 87 8c  |numcol%+1.......|
00018a60  04 0d 87 96 20 dd f2 73  63 61 6c 65 5f 74 65 78  |.... ..scale_tex|
00018a70  74 28 73 78 25 2c 73 79  25 2c 73 63 61 6c 65 25  |t(sx%,sy%,scale%|
00018a80  29 0d 87 a0 22 f4 20 4b  65 65 70 73 20 74 65 78  |)...". Keeps tex|
00018a90  74 20 6d 6f 64 65 20 69  6e 64 65 70 65 6e 64 65  |t mode independe|
00018aa0  6e 74 2e 0d 87 aa 0d ea  20 78 73 63 2c 79 73 63  |nt...... xsc,ysc|
00018ab0  0d 87 b4 25 78 73 63 3d  73 63 61 6c 65 25 21 30  |...%xsc=scale%!0|
00018ac0  2f 73 63 61 6c 65 25 21  38 3a 73 78 25 3d 73 78  |/scale%!8:sx%=sx|
00018ad0  25 2a 78 73 63 0d 87 be  26 79 73 63 3d 73 63 61  |%*xsc...&ysc=sca|
00018ae0  6c 65 25 21 34 2f 73 63  61 6c 65 25 21 31 32 3a  |le%!4/scale%!12:|
00018af0  73 79 25 3d 73 79 25 2a  79 73 63 0d 87 c8 19 ef  |sy%=sy%*ysc.....|
00018b00  32 33 2c 31 37 2c 37 2c  36 2c 73 78 25 3b 73 79  |23,17,7,6,sx%;sy|
00018b10  25 3b 30 3b 0d 87 d2 05  e1 0d 87 dc 04 0d 87 e6  |%;0;............|
00018b20  04 0d 87 f0 4e 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |....N***********|
00018b30  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00018b60  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 0d  |***************.|
00018b70  87 fa 04 0d 88 04 14 f4  20 45 72 72 6f 72 20 72  |........ Error r|
00018b80  6f 75 74 69 6e 65 73 0d  88 0e 04 0d 88 18 12 dd  |outines.........|
00018b90  f2 65 72 72 6f 72 28 74  61 73 6b 24 29 0d 88 22  |.error(task$).."|
00018ba0  33 f4 20 44 69 73 70 6c  61 79 73 20 65 72 72 6f  |3. Displays erro|
00018bb0  72 20 6d 65 73 73 61 67  65 20 66 72 6f 6d 20 6f  |r message from o|
00018bc0  70 65 72 61 74 69 6e 67  20 73 79 73 74 65 6d 2e  |perating system.|
00018bd0  0d 88 2c 0f 21 62 6c 6f  63 6b 25 3d 32 35 35 0d  |..,.!block%=255.|
00018be0  88 36 10 61 24 3d f6 24  2b 22 20 22 2b c3 9e 0d  |.6.a$=.$+" "+...|
00018bf0  88 40 15 24 28 62 6c 6f  63 6b 25 2b 34 29 3d 61  |.@.$(block%+4)=a|
00018c00  24 2b bd 30 0d 88 4a 27  c8 99 22 57 69 6d 70 5f  |$+.0..J'.."Wimp_|
00018c10  52 65 70 6f 72 74 45 72  72 6f 72 22 2c 62 6c 6f  |ReportError",blo|
00018c20  63 6b 25 2c 31 2c 74 61  73 6b 24 0d 88 54 05 e1  |ck%,1,task$..T..|
00018c30  0d 88 5e 04 0d 88 68 04  0d 88 72 2b dd 20 a4 65  |..^...h...r+. .e|
00018c40  72 72 6f 72 5f 6d 65 73  73 61 67 65 28 6d 65 73  |rror_message(mes|
00018c50  73 61 67 65 24 2c 74 61  73 6b 24 2c 66 6c 61 67  |sage$,task$,flag|
00018c60  73 25 29 0d 88 7c 25 f4  20 44 69 73 70 6c 61 79  |s%)..|%. Display|
00018c70  73 20 70 65 72 73 6f 6e  61 6c 20 65 72 72 6f 72  |s personal error|
00018c80  20 6d 65 73 73 61 67 65  0d 88 86 27 21 62 6c 6f  | message...'!blo|
00018c90  63 6b 25 3d 32 35 35 3a  24 28 62 6c 6f 63 6b 25  |ck%=255:$(block%|
00018ca0  2b 34 29 3d 6d 65 73 73  61 67 65 24 2b bd 30 0d  |+4)=message$+.0.|
00018cb0  88 90 39 c8 99 22 57 69  6d 70 5f 52 65 70 6f 72  |..9.."Wimp_Repor|
00018cc0  74 45 72 72 6f 72 22 2c  62 6c 6f 63 6b 25 2c 66  |tError",block%,f|
00018cd0  6c 61 67 73 25 2c 74 61  73 6b 24 20 b8 20 2c 72  |lags%,task$ . ,r|
00018ce0  65 73 70 6f 6e 73 65 25  0d 88 9a 0e 3d 72 65 73  |esponse%....=res|
00018cf0  70 6f 6e 73 65 25 0d 88  a4 04 0d 88 ae 04 0d 88  |ponse%..........|
00018d00  b8 10 dd f2 74 65 73 74  28 76 61 72 24 29 0d 88  |....test(var$)..|
00018d10  c2 36 f4 20 44 69 73 70  6c 61 79 73 20 76 61 6c  |.6. Displays val|
00018d20  75 65 20 6f 66 20 73 74  72 69 6e 67 20 76 61 72  |ue of string var|
00018d30  69 61 62 6c 65 2e 44 65  62 75 67 67 69 6e 67 20  |iable.Debugging |
00018d40  61 69 64 2e 0d 88 cc 0f  21 62 6c 6f 63 6b 25 3d  |aid.....!block%=|
00018d50  32 35 35 0d 88 d6 17 24  28 62 6c 6f 63 6b 25 2b  |255....$(block%+|
00018d60  34 29 3d 76 61 72 24 2b  bd 30 0d 88 e0 2e c8 99  |4)=var$+.0......|
00018d70  22 57 69 6d 70 5f 52 65  70 6f 72 74 45 72 72 6f  |"Wimp_ReportErro|
00018d80  72 22 2c 62 6c 6f 63 6b  25 2c 31 2c 22 70 72 69  |r",block%,1,"pri|
00018d90  6e 74 5f 74 65 78 74 22  0d 88 ea 05 e1 0d 88 f4  |nt_text"........|
00018da0  04 0d 88 fe 04 0d 89 08  15 dd 20 a4 65 6e 73 75  |.......... .ensu|
00018db0  72 65 5f 50 64 72 69 76  65 72 0d 89 12 2a f4 20  |re_Pdriver...*. |
00018dc0  43 68 65 63 6b 73 20 74  68 61 74 20 70 72 69 6e  |Checks that prin|
00018dd0  74 65 72 20 64 72 69 76  65 72 20 69 73 20 6c 6f  |ter driver is lo|
00018de0  61 64 65 64 0d 89 1c 1c  ea 20 50 25 2c 70 72 69  |aded..... P%,pri|
00018df0  6e 74 65 72 25 3a 70 72  69 6e 74 65 72 25 3d 30  |nter%:printer%=0|
00018e00  0d 89 26 07 ea 20 85 0d  89 30 1c ee 20 85 20 ea  |..&.. ...0.. . .|
00018e10  3a f7 20 85 3a d9 23 50  25 3a 3d 70 72 69 6e 74  |:. .:.#P%:=print|
00018e20  65 72 25 0d 89 3a 14 50  25 3d ae 28 22 70 72 69  |er%..:.P%=.("pri|
00018e30  6e 74 65 72 3a 22 29 0d  89 44 28 c8 99 22 50 44  |nter:")..D(.."PD|
00018e40  72 69 76 65 72 5f 53 65  6c 65 63 74 4a 6f 62 22  |river_SelectJob"|
00018e50  2c 50 25 2c 22 70 72 69  6e 74 5f 6a 6f 62 22 0d  |,P%,"print_job".|
00018e60  89 4e 1b c8 99 22 50 44  72 69 76 65 72 5f 41 62  |.N..."PDriver_Ab|
00018e70  6f 72 74 4a 6f 62 22 2c  50 25 0d 89 58 0f 70 72  |ortJob",P%..X.pr|
00018e80  69 6e 74 65 72 25 3d 2d  31 0d 89 62 08 d9 23 50  |inter%=-1..b..#P|
00018e90  25 0d 89 63 07 f7 20 85  0d 89 6c 0d 3d 70 72 69  |%..c.. ...l.=pri|
00018ea0  6e 74 65 72 25 0d 89 76  04 0d 89 80 4e 2a 2a 2a  |nter%..v....N***|
00018eb0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00018ef0  2a 2a 2a 2a 2a 2a 2a 0d  89 8a 04 0d 89 94 13 44  |*******........D|
00018f00  72 61 67 20 6f 70 65 72  61 74 69 6f 6e 73 0d 89  |rag operations..|
00018f10  9e 04 0d 89 a8 2b dd 20  f2 64 72 61 67 5f 62 6f  |.....+. .drag_bo|
00018f20  78 28 74 79 70 65 25 2c  78 25 2c 79 25 2c 77 69  |x(type%,x%,y%,wi|
00018f30  64 74 68 25 2c 68 65 69  67 68 74 25 29 0d 89 b2  |dth%,height%)...|
00018f40  12 62 6c 6f 63 6b 25 21  34 3d 74 79 70 65 25 0d  |.block%!4=type%.|
00018f50  89 bc 45 62 6c 6f 63 6b  25 21 38 3d 78 25 3a 62  |..Eblock%!8=x%:b|
00018f60  6c 6f 63 6b 25 21 31 32  3d 79 25 3a 62 6c 6f 63  |lock%!12=y%:bloc|
00018f70  6b 25 21 31 36 3d 78 25  2b 77 69 64 74 68 25 3a  |k%!16=x%+width%:|
00018f80  62 6c 6f 63 6b 25 21 32  30 3d 79 25 2b 68 65 69  |block%!20=y%+hei|
00018f90  67 68 74 25 0d 89 c6 39  62 6c 6f 63 6b 25 21 32  |ght%...9block%!2|
00018fa0  34 3d 30 3a 62 6c 6f 63  6b 25 21 32 38 3d 30 3a  |4=0:block%!28=0:|
00018fb0  62 6c 6f 63 6b 25 21 33  32 3d 31 32 38 30 3a 62  |block%!32=1280:b|
00018fc0  6c 6f 63 6b 25 21 33 36  3d 31 30 32 34 0d 89 d0  |lock%!36=1024...|
00018fd0  1c c8 99 22 57 69 6d 70  5f 44 72 61 67 42 6f 78  |..."Wimp_DragBox|
00018fe0  22 2c 2c 62 6c 6f 63 6b  25 0d 89 da 05 e1 0d 89  |",,block%.......|
00018ff0  e4 04 0d 89 ee 4e 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |.....N**********|
00019000  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00019040  0d 89 f8 04 0d 8a 02 0b  f4 20 46 6f 6e 74 73 0d  |......... Fonts.|
00019050  8a 0c 04 0d 8a 16 1a dd  20 f2 6c 6f 73 65 5f 69  |........ .lose_i|
00019060  63 6f 6e 5f 66 6f 6e 74  73 28 66 25 29 0d 8a 20  |con_fonts(f%).. |
00019070  0b ea 20 6e 25 2c 6d 25  0d 8a 2a 10 e3 20 6e 25  |.. n%,m%..*.. n%|
00019080  3d 31 20 b8 20 32 35 35  0d 8a 34 13 20 e7 20 3f  |=1 . 255..4. . ?|
00019090  28 66 25 2b 6e 25 29 3e  30 20 8c 0d 8a 3e 13 20  |(f%+n%)>0 ...>. |
000190a0  20 6e 75 6d 25 3d 3f 28  66 25 2b 6e 25 29 0d 8a  | num%=?(f%+n%)..|
000190b0  48 13 20 20 e3 20 6d 25  3d 31 20 b8 20 6e 75 6d  |H.  . m%=1 . num|
000190c0  25 0d 8a 52 1b 20 20 20  c8 99 22 46 6f 6e 74 5f  |%..R.   .."Font_|
000190d0  4c 6f 73 65 46 6f 6e 74  22 2c 6e 25 0d 8a 5c 07  |LoseFont",n%..\.|
000190e0  20 20 ed 0d 8a 66 06 20  cd 0d 8a 70 05 ed 0d 8a  |  ...f. ...p....|
000190f0  7a 05 e1 0d 8a 84 04 0d  8a 8e 4e 2a 2a 2a 2a 2a  |z.........N*****|
00019100  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00019140  2a 2a 2a 2a 2a 0d 8a 98  04 0d 8a a2 18 f4 20 4c  |*****......... L|
00019150  6f 61 64 69 6e 67 20 61  6e 64 20 73 61 76 69 6e  |oading and savin|
00019160  67 0d 8a ac 04 0d 8a b6  29 dd 20 f2 64 72 61 67  |g.......). .drag|
00019170  5f 69 63 6f 6e 28 77 68  61 6e 64 6c 65 25 2c 69  |_icon(whandle%,i|
00019180  68 61 6e 64 6c 65 25 2c  74 79 70 65 25 29 0d 8a  |handle%,type%)..|
00019190  c0 13 ea 20 77 25 2c 68  25 2c 6f 78 25 2c 6f 79  |... w%,h%,ox%,oy|
000191a0  25 0d 8a ca 27 f2 77 6f  72 6b 5f 61 72 65 61 5f  |%...'.work_area_|
000191b0  6f 72 69 67 69 6e 28 77  68 61 6e 64 6c 65 25 2c  |origin(whandle%,|
000191c0  6f 78 25 2c 6f 79 25 29  0d 8a d4 26 21 62 6c 6f  |ox%,oy%)...&!blo|
000191d0  63 6b 25 3d 77 68 61 6e  64 6c 65 25 3a 62 6c 6f  |ck%=whandle%:blo|
000191e0  63 6b 25 21 34 3d 69 68  61 6e 64 6c 65 25 0d 8a  |ck%!4=ihandle%..|
000191f0  de 21 c8 99 22 57 69 6d  70 5f 47 65 74 49 63 6f  |.!.."Wimp_GetIco|
00019200  6e 53 74 61 74 65 22 2c  2c 62 6c 6f 63 6b 25 0d  |nState",,block%.|
00019210  8a e8 31 62 6c 6f 63 6b  25 21 38 3d 6f 78 25 2b  |..1block%!8=ox%+|
00019220  62 6c 6f 63 6b 25 21 38  3a 62 6c 6f 63 6b 25 21  |block%!8:block%!|
00019230  31 32 3d 6f 79 25 2b 62  6c 6f 63 6b 25 21 31 32  |12=oy%+block%!12|
00019240  0d 8a f2 33 62 6c 6f 63  6b 25 21 31 36 3d 6f 78  |...3block%!16=ox|
00019250  25 2b 62 6c 6f 63 6b 25  21 31 36 3a 62 6c 6f 63  |%+block%!16:bloc|
00019260  6b 25 21 32 30 3d 6f 79  25 2b 62 6c 6f 63 6b 25  |k%!20=oy%+block%|
00019270  21 32 30 0d 8a fc 30 77  25 3d 62 6c 6f 63 6b 25  |!20...0w%=block%|
00019280  21 31 36 2d 62 6c 6f 63  6b 25 21 38 3a 68 25 3d  |!16-block%!8:h%=|
00019290  62 6c 6f 63 6b 25 21 32  30 2d 62 6c 6f 63 6b 25  |block%!20-block%|
000192a0  21 31 32 0d 8b 06 2d f2  64 72 61 67 5f 62 6f 78  |!12...-.drag_box|
000192b0  28 74 79 70 65 25 2c 62  6c 6f 63 6b 25 21 38 2c  |(type%,block%!8,|
000192c0  62 6c 6f 63 6b 25 21 31  32 2c 77 25 2c 68 25 29  |block%!12,w%,h%)|
000192d0  0d 8b 10 05 e1 0d 8b 1a  04 0d 8b 24 04 0d 8b 2e  |...........$....|
000192e0  2a dd 20 f2 73 61 76 65  5f 72 65 71 75 65 73 74  |*. .save_request|
000192f0  28 74 79 70 65 25 2c 6e  61 6d 65 62 75 66 66 25  |(type%,namebuff%|
00019300  2c 73 69 7a 65 25 29 0d  8b 38 23 c8 99 22 57 69  |,size%)..8#.."Wi|
00019310  6d 70 5f 47 65 74 50 6f  69 6e 74 65 72 49 6e 66  |mp_GetPointerInf|
00019320  6f 22 2c 2c 62 6c 6f 63  6b 25 0d 8b 42 2b 62 6c  |o",,block%..B+bl|
00019330  6f 63 6b 25 21 32 30 3d  62 6c 6f 63 6b 25 21 31  |ock%!20=block%!1|
00019340  32 3a 62 6c 6f 63 6b 25  21 32 34 3d 62 6c 6f 63  |2:block%!24=bloc|
00019350  6b 25 21 31 36 0d 8b 4c  29 62 6c 6f 63 6b 25 21  |k%!16..L)block%!|
00019360  32 38 3d 21 62 6c 6f 63  6b 25 3a 62 6c 6f 63 6b  |28=!block%:block|
00019370  25 21 33 32 3d 62 6c 6f  63 6b 25 21 31 36 0d 8b  |%!32=block%!16..|
00019380  56 2a 62 6c 6f 63 6b 25  21 33 36 3d 73 69 7a 65  |V*block%!36=size|
00019390  25 3a 21 62 6c 6f 63 6b  25 3d 36 34 3a 62 6c 6f  |%:!block%=64:blo|
000193a0  63 6b 25 21 31 32 3d 30  0d 8b 60 1f 62 6c 6f 63  |ck%!12=0..`.bloc|
000193b0  6b 25 21 31 36 3d 31 3a  62 6c 6f 63 6b 25 21 34  |k%!16=1:block%!4|
000193c0  30 3d 74 79 70 65 25 0d  8b 6a 28 24 28 62 6c 6f  |0=type%..j($(blo|
000193d0  63 6b 25 2b 34 34 29 3d  a4 67 65 74 6c 65 61 66  |ck%+44)=.getleaf|
000193e0  28 24 6e 61 6d 65 62 75  66 66 25 2c 2d 31 29 0d  |($namebuff%,-1).|
000193f0  8b 74 36 c8 99 22 57 69  6d 70 5f 53 65 6e 64 4d  |.t6.."Wimp_SendM|
00019400  65 73 73 61 67 65 22 2c  31 38 2c 62 6c 6f 63 6b  |essage",18,block|
00019410  25 2c 62 6c 6f 63 6b 25  21 32 30 2c 62 6c 6f 63  |%,block%!20,bloc|
00019420  6b 25 21 32 34 0d 8b 7e  05 e1 0d 8b 88 04 0d 8b  |k%!24..~........|
00019430  92 04 0d 8b 9c 18 dd 20  a4 67 65 74 6c 65 61 66  |....... .getleaf|
00019440  28 61 24 2c 7a 65 72 6f  25 29 0d 8b a6 0f c8 95  |(a$,zero%)......|
00019450  20 a7 61 24 2c 22 2e 22  29 0d 8b b0 16 61 24 3d  | .a$,".")....a$=|
00019460  c1 61 24 2c a7 61 24 2c  22 2e 22 29 2b 31 29 0d  |.a$,.a$,".")+1).|
00019470  8b ba 05 ce 0d 8b c4 16  e7 20 7a 65 72 6f 25 20  |......... zero% |
00019480  8c 20 61 24 3d 61 24 2b  bd 30 0d 8b ce 07 3d 61  |. a$=a$+.0....=a|
00019490  24 0d 8b d8 04 0d 8b e2  04 0d 8b ec 13 dd 20 a4  |$............. .|
000194a0  73 74 72 69 6e 67 28 70  74 72 25 29 0d 8b f6 16  |string(ptr%)....|
000194b0  ea 20 6e 61 6d 65 25 3a  6e 61 6d 65 25 3d 70 74  |. name%:name%=pt|
000194c0  72 25 0d 8c 00 0f c8 95  20 3f 70 74 72 25 3c 3e  |r%...... ?ptr%<>|
000194d0  30 0d 8c 0a 0d 20 70 74  72 25 20 2b 3d 31 0d 8c  |0.... ptr% +=1..|
000194e0  14 05 ce 0d 8c 1e 0c 3f  70 74 72 25 3d 31 33 0d  |.......?ptr%=13.|
000194f0  8c 28 0b 3d 24 6e 61 6d  65 25 0d 8c 32 04 0d 8c  |.(.=$name%..2...|
00019500  3c 4e 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |<N**************|
00019510  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00019540  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 0d 8c 46 04  |************..F.|
00019550  0d 8c 50 12 f4 20 4d 69  73 63 65 6c 61 6e 65 6f  |..P.. Miscelaneo|
00019560  75 73 0d 8c 5a 04 0d 8c  64 13 dd 20 f2 70 61 75  |us..Z...d.. .pau|
00019570  73 65 28 74 69 6d 65 25  29 0d 8c 6e 0d 74 69 6d  |se(time%)..n.tim|
00019580  65 25 20 2b 3d 91 0d 8c  78 0e c8 95 20 74 69 6d  |e% +=...x... tim|
00019590  65 25 3e 91 0d 8c 82 05  ce 0d 8c 8c 05 e1 0d ff  |e%>.............|
000195a0