Home » Archimedes archive » Archimedes World » archimedes_world_volume_15_issue_1_scp.adf » !MathsBook_MathsBook » !MbookDem/!Runimage

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

� > !Runimage
� Division demonstration.
 � Version 0.28, 8th April 97
('� � �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$(5),digans$(8,5),digans%(8),carry$(3,5),car_dig%(5),anslim%(8),MenuBuff%(14),Ypos%(10),Lshift%(8),strike%(4,5),done$(8,5),rem$(1),doneR$(1),remans$(1)
��� answer$(8,5),answer%(8),handle%(1),dig_name$(5),colname$(5),Pdig1$(11,4),Pdig2$(11,1),Pdec%(11),PlimQ%(11),Ppos%(11),name$(48),message$(2),layerOn%(4)
�o� Dlevel%(43),Hlevel%(43),MHlevel%(43),auto%(43),autohelp%(43),force%(43),tries%(43),mode%(43),decimal%(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),saveR%(43),ownsum%(43),speech%(43),Long%(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:dragy%=0:DivType%=0:alter%=0:enprint%=0
�Icarry%=0:force5%=0:nextcheck%=0:rubber%=0:Rcnt%=0:Mflg%=0:startOwn%=0
�Nnextdig%=0:layer%=0:rubdig%=-1:rublayer%=0:stopped%=0:notsavedR%=0:newR%=0
�`CorrectAns%=0:correct%=0:nextmess%=0:layerlim%=0:path$="":dirpath$="":nextfile$="":timeup%=0
�6Pcount%=-1:Psave%=0:Pprint%=0:driver%=0:Pcolflg%=0
:CCsum=0:CCnum=0:CCnum$="":CCstart%=0:CCop%=0:CCprev%=0

�y_levels
2ș"Wimp_Initialise",200,&4B534154,"Maths_task"
"*IBhandle%=�icon_bar_icon("!MbookDem�")
,� PROCset_fonts
6�load_sprites
@�create_windows
J�icon_menu
T3Thandle%=�centre_window(Thandle%,"Y"):TLtime%=�
^�set_option_variables
h�set_mode_independance
r�
|
�
�� �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,0,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%())
��


� �create_windows
&� Load template files
0�� Dbuff% 500,Ibuff% 150,Cbuff% 800,SCbuff% 250,Nbuff% 100,N2buff% 900,calcbuff% 200,SVbuff% 300,SV2buff% 300,Pbuff% 100,STbuff% 100,Icbuff% 100,Obuff% 200,Smbuff% 100,Ebuff% 100,Edbuff% 100,font% 256
:L� Lbuff% 400,Mbuff% 500,Drbuff% 100,P2buff% 100,OSbuff% 100,Dembuff% 150
D$� n%=0 � 255 � 4:!(font%+n%)=0:�
N� name% 11
X
b3ș"Wimp_OpenTemplate",,"<Maths$Dir>.Templates2"
l;handle%(1)=�temp_window(Dbuff%,500,name%,"division",-1)
vtitlebuff1%=block%!72
�5Ihandle%=�temp_window(Ibuff%,150,name%,"info",-1)
�
�7Chandle%=�temp_window(Cbuff%,800,name%,"config",-1)
� level_buffD%=�icon_buffer(5)
�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)
�longbuff%=�icon_buffer(2)
�titlebuffC%=block%!72

;SChandle%=�temp_window(SCbuff%,275,name%,"score",font%)
Snamebuff%=�icon_buffer(1)
 SCtbuff%=�icon_buffer(2)
*SCQbuff%=�icon_buffer(4)
4SCRbuff%=�icon_buffer(6)
>SCWbuff%=�icon_buffer(8)
H
R8NGhandle%=�temp_window(N2buff%,900,name%,"name2",-1)
\Ntitlebuff%=block%!72
f
p9CChandle%=�temp_window(calcbuff%,200,name%,"calc",-1)
zCCbuff%=�icon_buffer(17)
�
�:SVhandle%=�temp_window(SVbuff%,300,name%,"savebox",-1)
�savebuff%=�icon_buffer(1)
�
�:Phandle%=�temp_window(Pbuff%,100,name%,"printmess",-1)
�=P2handle%=�temp_window(P2buff%,100,name%,"printmess2",-1)
�7Picbuff1%=�icon_buffer(0):Picbuff2%=�icon_buffer(1)
�;SThandle%=�temp_window(STbuff%,100,name%,"stopmess",-1)
�;Ichandle%=�temp_window(Icbuff%,100,name%,"iconmess",-1)
�icbuff%=�icon_buffer(0)
�;Smhandle%=�temp_window(Smbuff%,100,name%,"savemess",-1)
�5smbuff1%=�icon_buffer(0):smbuff2%=�icon_buffer(1)
�:Drhandle%=�temp_window(Drbuff%,100,name%,"dirmess",-1)
8Ehandle%=�temp_window(Ebuff%,100,name%,"endsave",-1)
Eicbuff%=�icon_buffer(1)
;Edhandle%=�temp_window(Edbuff%,100,name%,"namemess",-1)
$:OShandle%=�temp_window(OSbuff%,100,name%,"ownmess",-1)
.
83Dhandle%=�temp_window(-1,-1,name%,"dribble",-1)
B=SVhandle2%=�temp_window(SV2buff%,300,name%,"savebox2",-1)
L!savetextbuff%=�icon_buffer(1)
V
`:Ohandle%=�temp_window(Obuff%,200,name%,"ownsum",font%)
jOsum1buff%=�icon_buffer(3)
tOsum2buff%=�icon_buffer(2)
~
�;Lhandle%=�temp_window(Lbuff%,400,name%,"loadbox",font%)
�loadbuff%=�icon_buffer(2)
�
�;Mhandle%=�temp_window(Mbuff%,500,name%,"DirMenu",font%)
�0� n%=0 � 14:MenuBuff%(n%)=�icon_buffer(n%):�
�
�1Thandle%=�temp_window(-1,-1,name%,"title",-1)
�
�9Demhandle%=�temp_window(Dembuff%,150,name%,"demo",-1)
�DemIc%=�icon_buffer(1)
�ș"Wimp_CloseTemplate"
��
�
�
�� �load_sprites
/� sarea% 170200:� message 31276,rest 138856

!sarea%=170200:sarea%!8=16
ș"OS_SpriteOp",&109,sarea%
5ș"OS_SpriteOp",&10A,sarea%,"<Maths$Dir>.sprites"
(�
2
<
F� �set_mode_independance
P.� scale% 16,trans% 255,pal% 64,scale27% 16
Z#�source_mode_factors(12,scale%)
d!�current_mode_factors(scale%)
n$�palette_block("n0",sarea%,pal%)
x"�transtable(12,pal%,-1,trans%)
��message_mode_independance
�
�%�source_mode_factors(27,scale27%)
�#�current_mode_factors(scale27%)
��
�
�
�� �wimp_poll
��
�$ș"Wimp_Poll",0,block% � reason%
�Ȏ reason% �
� � 0:�null_event
� � 1:�redraw
 � 2:�open_windows
 � 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)
6 � 8:�keys
@ � 9:�select_menu
J � 17,18:�messages
T�
^
� end%=-1
h�
r
|
�� �keys
�Ȏ !block% �
� � CChandle%:�keys_calc
� � Ohandle%:�own_sum_keys
� � NGhandle%:� create%=-1 �
�(                 �keys_name(NameNo%)
�                �
�@                 � NameNo%=Ncount%+1 � �keys_name(Ncount%+1)
�E                 � NameNo%>0 � block%!24=13 � �keys_name(NameNo%)
�                �
�
�" ș"Wimp_ProcessKey",block%!24
��
�


&� �messages
0Ȏ block%!16 �
: � 0:end%=-1
DK � 2:� IF FNwindow_open(SVhandle%) PROCsave_file(FNstring(block%+44),0)
NO        � �window_open(SVhandle2%) �results_text_file(�string(block%+44),0)
X$        �close_window(Smhandle%)
b. � 3:� block%!40=&FFD � �drag_load_message
l � &400C1:�mode_change
v/ � 5:� block%!40=&1000 � �broadcast_message
��
��
�
�
�� �drag_load_message
�� file$,leaf$,whandle%
�whandle%=block%!20
�file$=�string(block%+44)
�S� IF (notsavedO% OR notsavedR%)=-1 THEN nextfile$=file$:PROCend_save(3):ENDPROC
�
��load_vars(file$)
��load_file(file$)
�
� whandle%=Lhandle% �
 �reset_icon(Lhandle%,2)
�
 ( � whandle%=-2 � �loadbox_windows(0)
*�
4�
>
H
R� �load_vars(file$)
\1$savebuff%=file$:$loadbuff%=�getleaf(file$,0)
f&path$=�file$,� file$-� $loadbuff%)
pk� �file$,"Mfiles_�") � $savetextbuff%=path$+"results."+$loadbuff% � $savetextbuff%=path$+"R"+$loadbuff%
z�
�
�
�� �broadcast_message
�5� ¤string(block%+44),8)="Mfiles_�" � create%<0 �
�, path$=�string(block%+44):dirpath$=path$
�* $loadbuff%="":�reset_icon(Lhandle%,2)
� �shade_icon(Lhandle%,1,0)
� �set_up_loadbox
��
��
�
�
�� �set_up_loadbox
	� item%,file$,n%:item%=-1
	1�loadbox_windows(-1):�close_window(Drhandle%)
	+� n%=0 � 14:$(MenuBuff%(n%))="":�:n%=-1
	$
	.H$(block%+12)=path$:ș"OS_GBPB",9,block%+12,block%,1,0,11 � ,,,,item%
	8ȕ item%>-1 � n%<14
	B file$=�string(block%)
	L7 � file$<>"results" � n% +=1:$(MenuBuff%(n%))=file$
	V: ș"OS_GBPB",9,block%+12,block%,1,item%,11 � ,,,,item%
	`�
	j
	tpath$=path$+"."
	~�
	�
	�
	�� �select_loadfile
	�� file$,error%
	�6ș"Wimp_SetCaretPosition",Lhandle%,2,46,-210,-1,-1
	�&� block%!16<>3 � $loadbuff%="" � �
	��close_window(Thandle%)
	�
	�$savebuff%=path$+$loadbuff%
	�e� �path$,"Mfiles_�") � $savetextbuff%=path$+"results."+$loadbuff% � $savetextbuff%="R"+$savebuff%
	�
	�� create% �
 � �check_file �

  �load_file($savebuff%)
 �
+  � PROCload_file("<obey$Dir>.default")
(#  � PROCsave_file($savebuff%,0)
)+  $DemIc%="allows files to be created."
*/  Demhandle%=�create_window(Demhandle%,"Y")
2 �
< �build_name_windowG
F�
P�loadbox_windows(0)
Z�
d
n
x� �select_file_menu(icon%)
�� $MenuBuff%(icon%)="" � �
�!create%=-1:path$=dirpath$+"."
��close_window(Ichandle%)
� $loadbuff%=$MenuBuff%(icon%)
��reset_icon(Lhandle%,2)
��
�
�
�� �check_file
�
� n%,flg%
��
�* � $loadbuff%=$MenuBuff%(n%) � flg%=-1
� n% +=1
� n%=15 � flg%=-1
	=flg%

"
,� �loadbox_windows(open%)
6
� open% �
@* Lhandle%=�centre_window(Lhandle%,"Y")
J7 Mhandle%=�relative_window(Lhandle%,Mhandle%,358,0)
T7 ș"Wimp_SetCaretPosition",Lhandle%,2,46,-210,-1,-1
^�
h �close_window(Lhandle%)
r �close_window(Mhandle%)
| �close_window(Ichandle%)
��
��
�
�
�� �mode_change
�"�transtable(12,pal%,-1,trans%)
�!�current_mode_factors(scale%)
�#�current_mode_factors(scale27%)
��message_mode_independance
�%drawfont%=(game%>0 � SCformat%=2)
��set_windows
�D� �window_open(Ohandle%) � Ohandle%=�centre_window(Ohandle%,"Y")
�3� �window_open(Lhandle%) � �loadbox_windows(-1)
G� �window_open(CChandle%) � CChandle%=�centre_window(CChandle%,"Y")
C� �window_open(Dhandle%) � Dhandle%=�centre_window(Dhandle%,"")
�
&
0
:� �select_menu
D	� no%
NȎ !block% �
X � 1:no%=NameNo%
b"        �set_config_title(no%)
l!        �set_preferences(no%)
v0        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%,-1)
�2        $DemIc%="saves the children's levels."
�5        Demhandle%=�centre_window(Demhandle%,"Y")
� � 5:�select_menu_results
�  � 6:� enprint%=NOT enprint%
�$        � enprint%=0 � driver%=0
�/        � PROCsingle_tick(menu%,6,enprint%)
�6        � IF NameNo% THEN PROCset_printer(NameNo%)
�)        $DemIc%="can print out sums."
�5        Demhandle%=�centre_window(Demhandle%,"Y")
� � 7:screen%=� screen%
�)        �single_tick(menu%,7,screen%)
�        �set_windows

o � 8:� IF (notsavedO% OR notsavedR%)=-1 AND path$<>"" THEN nextfile$="":PROCend_save(3):end%=1 ELSE end%=-1

        end%=-1

�

 �menu_adjust(menu%,block%,9)

 �

*

4

>� �end_save(file%)

HL� notsavedO%=-1 � (file%=1 � file%=3) � $Eicbuff%="current group file ?"

RF� notsavedR%=-1 � (file%=2 � file%=3) � $Eicbuff%="results file ?"

\S� (notsavedO% � notsavedR%)=-1 � file%=3 � $Eicbuff%="group and results file ?"

f�open_window(Ehandle%)

psavend%=file%

z�

�

�

�%� �menu_adjust(menu%,block%,num%)

�#ș"Wimp_GetPointerInfo",,block%

�0� block%!8=1 � �show_menu(menu%,block%,num%)

��

�

�

�� �select_menu_results

�Ȏ block%!4 �

�- � 0:Dhandle%=�centre_window(Dhandle%,"")

� � 1:�printout_results(-1)

� � 2:�printout_results(0)
. � 3:�results_text_file($savetextbuff%,-1)
  � 4:autosaveR%=� autosaveR%
-        �single_tick(rmenu%,4,autosaveR%)
$1 � 5:� notsavedR% � nextfile$="":�end_save(2)
.        �reset_results
8�
B�
L
V
`� �end(f%)
j� f% � �lose_fonts
t*POINTER
~*SET Maths$Running <>
�ș"Wimp_CloseDown"
��
�
�
�� �open_windows
�ș"Wimp_OpenWindow",,block%
�� !block%=handle%(game%) �
�7 � Owin%=-1 � Ohandle%=�centre_window(Ohandle%,"Y")
�6 � �window_open(Chandle%) � �open_window(Chandle%)
��
�K� !block%=Lhandle% � Mhandle%=�relative_window(Lhandle%,Mhandle%,358,0)
��



� �close_windows
Ȏ !block% �
(R � handle%(game%):SThandle%=�relative_window(handle%(game%),SThandle%,450,556)
2= � NGhandle%:create%=0:NameNo%=0:�close_window(NGhandle%)
<*                �shade_item(menu%,1,1)
F4 � P2handle%:Pcount%=-1:�close_window(P2handle%)
P. � Lhandle%:�loadbox_windows(0):create%=-2
Z
d �close_window(!block%)
n�
x�
�
�
�
� �redraw
�"� 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
6� y%
@	�grid
J
T*� SCformat%=2 � estimate%(NameNo%)=0 �
^ �sum_parts:�sum_numbers
h, � mode%(NameNo%) � �input_box(nextdig%)
r � marked% � �mark
|g � Mflg% � drawfont%=0 � ș"OS_SpriteOp",&134,sarea%,"message",ox%+�digx(0,-3),oy%+Ypos%(4),0,-1,-1
��
�T ș"OS_SpriteOp",&134,sarea%,"estimate",ox%+64,oy%+Ypos%(4)-16,8,scale27%,trans%
� �place_estimate
� �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) � ș"OS_SpriteOp",&134,sarea%,"move"+�dragval%,ox%+dragx%,oy%+dragy%,8,scale27%,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
00 � Chandle%:no%=NameNo%:�select_options(no%)
: � SChandle%:�select_score
D' � CChandle%:�calcalator(block%!16)
N: � NGhandle%:� create%=0 � �select_nameG � �edit_nameG
X% � SVhandle%:� PROCselect_savebox
b# � SVhandle2%:�select_save_text
l* � SThandle%:� block%!16=2 � �game_end
v,                �close_window(SThandle%)
�" � Ohandle%:�select_sum_window
�  � Lhandle%:�select_loadfile
�, � Mhandle%:�select_file_menu(block%!16)
�  � Ehandle%:�select_end_save
�. � P2handle%:� block%!16=2 � �sum_printout
�7                �close_window(P2handle%):Pcount%=-1
�e � Phandle%,Ichandle%,Smhandle%,Drhandle%,Edhandle%,OShandle%,Demhandle%:�close_window(block%!12)
��
��
�
�
�� �select_IBicon
�� block%!8=2 �
 �allow_print_results
  �show_menu(menu%,!block%,9)
�
  � start% �
*  � create% �
4   �open_window(Drhandle%)
>  �
H   �build_name_windowG
R   �loadbox_windows(0)
\  �
f �
p�
z�close_window(Ichandle%)
��close_window(Smhandle%)
��close_window(Thandle%)
��
�
�
�� �select_end_save
�� block%!16=2 �
�N � IF notsavedO%=-1 AND (savend% AND 1)=1 THEN PROCsave_file($savebuff%,0)
�M � notsavedR%=-1 � (savend% � 2)=2 � �results_text_file($savetextbuff%,0)
�! � savend%=2 � �reset_results
��
��close_window(Ehandle%)
�+end%=(end%=1):notsavedO%=0:notsavedR%=0
A� nextfile$<>"" � �load_vars(nextfile$):�load_file(nextfile$)
�

$
.� �select_options(no%)
8@� icon%,help%,reset%,svR%,n%,type%:reset%=0:svR%=saveR%(no%)
B%help%=Hlevel%(no%):type%=DivType%
L*notsavedO%=(path$<>""):icon%=block%!16
V+� alter%=0 � alter%=(icon%<>68 � no%=0)
`Ȏ icon% �
jH � 3:Long%(no%)=�inc_buffer(Chandle%,2,Long%(no%),longbuff%,1,3,5,0)
t=        �set_division_type(no%):reset%=-(type%<>DivType%)
~H � 4:Long%(no%)=�inc_buffer(Chandle%,2,Long%(no%),longbuff%,1,3,5,1)
�=        �set_division_type(no%):reset%=-(type%<>DivType%)
�p � 6:Dlevel%(no%)=�inc_buffer(Chandle%,5,Dlevel%(no%),level_buffD%,1,1,7,0):reset%=1:�set_division_type(no%)
�p � 7:Dlevel%(no%)=�inc_buffer(Chandle%,5,Dlevel%(no%),level_buffD%,1,1,7,1):reset%=1:�set_division_type(no%)
�P � 17:no_quest%(no%)=�inc_buffer(Chandle%,16,no_quest%(no%),Qbuff%,1,1,99,0)
�P � 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)
�I � 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)
�O � 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,1,5,0)
#         �reset_help_level(no%)

K � 33:Hlevel%(no%)=�inc_buffer(Chandle%,31,Hlevel%(no%),Hbuff%,1,1,5,1)
#         �reset_help_level(no%)
2 � 34:force%(no%)=-�icon_selected(Chandle%,34)
(N � 38:MHlevel%(no%)=�inc_buffer(Chandle%,37,MHlevel%(no%),MHbuff%,1,1,5,0)
2#         �reset_help_level(no%)
<R � 39:MHlevel%(NameNo%)=�inc_buffer(Chandle%,37,MHlevel%(no%),MHbuff%,1,0,5,1)
F#         �reset_help_level(no%)
P? � 28,29:mode%(no%)=icon%-28:�adjust_for_mode(no%):reset%=1
Z7 � 42:calc%(no%)=-�select_display(42,-calc%(no%),3)
d6         � calc%(no%)=0 � �close_window(CChandle%)
n  � 43:� PROCset_printer(no%)
o*         $DemIc%="can print out sums."
p6         Demhandle%=�centre_window(Demhandle%,"Y")
x9 � 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%)
�! � 51:�close_window(Chandle%)
�?         startOwn%=(startOwn%=1 � game%>0):reset%=startOwn%
�-         nextmess%=(Helplev%=5 � game%>0)
�Q � 54:newlevR%(no%)=�inc_buffer(Chandle%,53,newlevR%(no%),levRbuff%,1,1,10,0)
�Q � 55:newlevR%(no%)=�inc_buffer(Chandle%,53,newlevR%(no%),levRbuff%,1,1,10,1)
S � 58:newlevW%(no%)=-�inc_buffer(Chandle%,57,-newlevW%(no%),levWbuff%,1,1,10,0)
S � 59:newlevW%(no%)=-�inc_buffer(Chandle%,57,-newlevW%(no%),levWbuff%,1,1,10,1)
' � 62:�set_decimal:reset%=(Owin%=0)
"3 � 63:ownsum%(no%)=-�icon_selected(Chandle%,63)
,D         �set_own_sum(no%):startOwn%=-(ownsum%(no%)=1 � game%>0)
6?         � ownsum%(no%)=0 � �close_window(Ohandle%):Owin%=0
@7 � 64:� n%=1 � Ncount%:�set_new_name_levels(n%,0):�
J$         �close_window(Chandle%)
T% � 65:�set_new_name_levels(no%,0)
^"         �set_preferences(no%)
h! � 66:�close_window(Chandle%)
|/ � 68:� alter% � �set_new_name_levels(0,43)
�$         �close_window(Chandle%)
��
�5� game%>0 � icon%<>51 � icon%<63 � startOwn%=-1 �
� � reset% �
�  �set_sum
�-  � ownsum%(NameNo%) � �set_up_sum_window
� �
�
�: � (icon%=32 � icon%=33) � mode%(no%)=1 � DivType%=0 �
�!  �change_help_display(help%)
�!  � game%>0 � �remove_message
� �
�
] � (icon%=45 � icon%=48) � Owin%=0 � ș"Wimp_ForceRedraw",handle%(game%),0,-844,1280,-150
�
�
&
0
:� �set_next(no%)
D+next%(no%)=-�icon_selected(Chandle%,46)
N,�set_top_icon(5,(next%(no%)=1 � try%>0))
X!� marked%=-1 � next%(no%)=0 �
b3 � quest%<no_quest%(no%) � �set_sum � �game_end
l�
v�
�
�
�� �set_keep_results(no%)
�,saveR%(no%)=-�icon_selected(Chandle%,61)
�� svR%=saveR%(no%) � �
�+� saveR%(no%)=0 � newR%=0 � �end_levels
�newR%=saveR%(no%)
��
�
�
�� �set_estimate(no%)
�/estimate%(no%)=-�icon_selected(Chandle%,45)
�I� estimate%(no%)=0 � SCformat%=1 � digans%()=0:Estval%=0:digans$()=""
I� digans%(0)=0 � force5%=0 � SCformat%=2-estimate%(no%):message$()=""
;� game%>0 � �shade_icon(handle%(game%),2,(SCformat%=1))
�
 
*
4� �set_decimal
>.decimal%(no%)=-�icon_selected(Chandle%,62)
H� �window_open(Ohandle%) �
R; � decimal%(no%) � $Osum1buff%="1.00" � $Osum1buff%="0"
\ �reset_icon(Ohandle%,3)
f�
p�
z
�
�� �set_printer(no%)
�� n%
�7printer%(no%)=-�select_display(43,-printer%(no%),7)
�!� printer%(no%)=0 � driver%=0
�)�shade_icon(SChandle%,11,(driver%=0))
��set_top_icon(7,driver%)
��
�
�
�*� �shade_3icons(whandle%,ihandle%,sh%)
�� n%
�� n%=ihandle% � ihandle%+2
! �shade_icon(whandle%,n%,sh%)
�
�
$
.
8� �set_auto(no%)
B� n%
L+auto%(no%)=-�icon_selected(Chandle%,49)
V-�shade_3icons(Chandle%,53,(auto%(no%)=0))
`-�shade_3icons(Chandle%,57,(auto%(no%)=0))
j�
t
~
�� �set_autohelp(no%)
�� n%
�@�shade_3icons(Chandle%,37,(mode%(no%)=0 � autohelp%(no%)=0))
��reset_help_level(no%)
��
�
�
�� �reset_help_level(no%)
�� autohelp%(no%) �
�# � Hlevel%(no%)<MHlevel%(no%) �
�7  Hlevel%(no%)=MHlevel%(no%):$Hbuff%=�MHlevel%(no%)
�  �reset_icon(Chandle%,31)
 �

�
6 MHlevel%(no%)=Hlevel%(no%):$MHbuff%=�Hlevel%(no%)
�
('� force5%=0 � Helplev%=Hlevel%(no%)
2nextmess%=(Helplev%=5)
<"� Helplev%<5 � �remove_message
F!�set_top_icon(2,(Helplev%>1))
P�
Z
d
n*� �select_display(icon%,var%,topicon%)
x'var%=�icon_selected(Chandle%,icon%)
� �set_top_icon(topicon%,var%)
�	=var%
�
�
�� �adjust_for_mode(no%)
�� n%
�.�shade_3icons(Chandle%,31,-(mode%(no%)=0))
�A�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$()=""
�
�
"
,
6� �reset_game
@� n%,m%
Juquest%=0:try%=0:CorrectAns%=0:sesstime%=�:stopped%=0:Pcount%=-1:AnumRW%=0:SnumRW%=0:force5%=0:Ppos%()=0:timeup%=0
T� ownsum%(NameNo%)=0 �
^
 �set_sum
h�
rA � decimal%(NameNo%)=0 � $Osum1buff%="0" � $Osum1buff%="1.00"
| $Osum2buff%="0"
� �set_up_sum_window
��
��
�
�
�� �set_sum
�+rubdig%=-1:initx%=0:inity%=0:initnum%=0
�?digans$()="":carry$()="":message$()="":layerOn%()=0:Mflg%=0
�wdigans%()=0:strike%()=0:done$()="":drag%=0:rubber%=0:marked%=0:double%=0:Psave%=0:nextcheck%=0:Ltype%=0:Lcurrent%=0
�Hcarry%=0:SCformat%=2-estimate%(NameNo%):correct%=0:game%=1:reject%=0
�4rem$()="":remainder$="":remainder%=0:doneR$()=""
�'� force5%=-1 � SCformat%=2 � try%=0
�<nextmess%=-(Helplev%=5 � mode%(NameNo%)=1 � SCformat%=2)
�set_top_icon(0,0)
�set_top_icon(1,-1)

&�
0' dig1$()="":dig2$()="":car_dig%()=0
:3 answer%()=0:answer$()="":Lshift%()=0:reject%=0
D
N � force5%<>-1 �
X8  � ownsum%(NameNo%)=0 � �make_div(Dlevel%(NameNo%))
b �
l �digits(num1%,dig1$(),-1)
v �digits(num2%,dig2$(),-1)
� �layers(level%,reject%)
�$� reject%=0 � ownsum%(NameNo%)=1
�
��� ownsum%(NameNo%)=1 � force5%<>-1 � reject%=-1 � �open_window(Ohandle%):OShandle%=�relative_window(Ohandle%,OShandle%,110,300):�
�
�layer%=0
�:� DivType% � nextdig%=Lshift%(1) � nextdig%=anslim%(0)
�5nexterr%=anslim%(layerlim%)+1:nexterrL%=layerlim%
�#�shade_icon(handle%(game%),5,1)
�B�set_top_icon(2,(SCformat%=2 � mode%(NameNo%)=1 � Helplev%>1))
�4�close_window(P2handle%):�close_window(Phandle%)
�G� ownsum%(NameNo%) �close_window(Ohandle%):�close_window(OShandle%)
�8ș"Wimp_ForceRedraw",handle%(game%),0,-900,1280,-150
�


 � �place_estimate
*@� sumx1%,sumx2%,st2%,x%,y%,symbol$,power%,n2len%:y%=Ypos%(7)
4symbol$="divide"
>
Hn2len%=� � num2%
R.symb%=-8+n2len%+1:symbx%=�digx(0,symb%)+13
\equals%=�digx(0,-8)+13
f
pș"Wimp_SetColour",7
z� pos%=0 � 4
� x1%=�digx(pos%,symb%+1)+17
� x2%=�digx(pos%,-7)+17
�g � dig1$(pos%)<>"" � ș"OS_SpriteOp",&134,sarea%,"n"+dig1$(pos%),ox%+x1%,oy%+y%+8,0,scale27%,trans%
�g � dig2$(pos%)<>"" � ș"OS_SpriteOp",&134,sarea%,"n"+dig2$(pos%),ox%+x2%,oy%+y%+8,0,scale27%,trans%
�
� � colname%(NameNo%) �
�[  x%=�digx(pos%,-13)+2-13*(decimal%(NameNo%)=0 � pos%<4 � decimal%(NameNo%)=1 � pos%>1)
�)  power%=pos%+2*(decimal%(NameNo%)=1)
�P  ș"OS_SpriteOp",&134,sarea%,"dig"+�power%,ox%+x%,oy%+y%+75,0,scale%,trans%
� �
��
�
�� decimal%(NameNo%) �
0 x1%=�digx(2,symb%+1)-12:x2%=�digx(2,-13)-12
L ș"OS_SpriteOp",&134,sarea%,"decpoint",ox%+x1%,oy%+y%-8,8,scale%,trans%
L ș"OS_SpriteOp",&134,sarea%,"decpoint",ox%+x2%,oy%+y%-8,8,scale%,trans%
$�
.
8Pș"OS_SpriteOp",&134,sarea%,symbol$,ox%+symbx%+2,oy%+y%+12,0,scale27%,trans%
BNș"OS_SpriteOp",&134,sarea%,"equals",ox%+equals%,oy%+y%+12,0,scale%,trans%
LOș"OS_SpriteOp",&134,sarea%,"equals2",ox%+1160,oy%+Ypos%(4),0,scale%,trans%
V&ȓ Ȑ ox%+928,oy%+Ypos%(7)-8,290,4
`�
j
t
~� �set_format2
�<EstVal%=digans%(0):digans%(0)=0:digans$()="":SCformat%=2
�#�shade_icon(handle%(game%),2,0)
�� Helplev%=5 � nextmess%=-1
�8ș"Wimp_ForceRedraw",handle%(game%),0,-900,1280,-150
��
�
�
�� �icon_selection
�� icon%:icon%=block%!16
�� Owin%=-1 � icon%<>6 � �
�Ȏ icon% �
�1 � 0:� correct%=0 � nextcheck%=0 � �check_sum
Q � 1:� rubber%=0 � �set_up_rub_out � �replace_number(10):rubber%=0:*POINTER 1

 � 2:�message("?")
o � 3:� �window_open(CChandle%)=0 � $CCbuff%="0":CCsum=0:CCnum=0:CCop%=0:CCprev%=0:�reset_icon(CChandle%,17)
3        CChandle%=�centre_window(CChandle%,"Y")
(;        ș"Wimp_SetCaretPosition",CChandle%,-1,0,0,0,-1
2  � 4:�show_score("")
<T � 5:� printer%(NameNo%)=1 � driver%=-1 � correct%=0 � Psave%=0 � �save_sum("S")
F$        � marked%=0 � quest% +=1
P        force5%=0
Z)        � quest%<no_quest%(NameNo%) �
dP         � auto%(NameNo%)=1 � ownsum%(NameNo%)=0 � �new_auto_level(correct%)
nA         � ownsum%(NameNo%)=0 � �set_sum � �set_up_sum_window
x
        �
�         �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,57:� 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,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,75,76,77,78,79:� drag% �
�N                      � rubber%=0 � �place_number(icon%) � �rub_out(icon%)
�                     �
�.                      �remove_digit(icon%)
                     �
K � 58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74:�carry_pos(icon%)
 � 23,24,25,26:� drag% �
"N                � rubber%=0 � �place_strike(icon%) � �rubout_strike(icon%)
,               �
6)                �remove_strike(icon%)
@               �
J& � 80:� SCformat%=1 � �set_format2
T � 81,82:� drag% �
^Q             � rubber%=0 � �place_remainder(icon%) � �rubout_remainder(icon%)
h            �
r)             �remove_remainder(icon%)
|            �
��
��
�
�
�� �carry_pos(icon%)
�#� SCformat%=1 � dragval%=49 � �
�
� drag% �
�> � rubber%=0 � �place_carry(icon%) � �rub_out_carry(icon%)
��
� �remove_carry(icon%)
��
��
�
 
 � �select_digit(num%)
 � x%,y%
 &"� rubber% � rubber%=0:*POINTER
 0!� mode%(NameNo%) � double%=-1
 :S� drag% � ș"Wimp_ForceRedraw",handle%(game%),dragx%,dragy%,dragx%+75,dragy%+75
 Ddragval%=num%:nextcheck%=0
 N�pick_up_number
 X�
 b
 l
 v� �remove_strike(icon%)
 � � x%,Y%,Layer%,dig%,flg%,st%
 �4�number_pos_strike(icon%,x%,Y%,Layer%,dig%,flg%)
 �� flg%=-1 � �
 �$�digit_removed(Layer%,dig%,flg%)
 �� flg%=0 � �
 �9ș"Wimp_ForceRedraw",handle%(game%),x%,Y%,x%+58,Y%+58
 ��pick_up_number
 ��
 �
 �
 �� �rubout_strike(icon%)
 �� x%,Y%,Layer%,dig%,flg%
 �4�number_pos_strike(icon%,x%,Y%,Layer%,dig%,flg%)
!� flg% � �
!$�digit_removed(Layer%,dig%,flg%)
!� flg%=0 � �
! dragval%=10
!*9ș"Wimp_ForceRedraw",handle%(game%),x%,Y%,x%+58,Y%+58
!4�
!>
!H
!R� �rubout_remainder(icon%)
!\� x%,y%,dig%
!f!dig%=icon%-81:y%=�layerY(0,0)
!p%� rem$(dig%)="" � SCformat%=1 � �
!zx%=�digx(dig%,-3)
!�/rem$(dig%)="":remainder%=�(rem$(1)+rem$(0))
!�9ș"Wimp_ForceRedraw",handle%(game%),x%,y%,x%+58,y%+58
!��
!�
!�
!�� �remove_remainder(icon%)
!�� x%,y%,dig%
!�!dig%=icon%-81:y%=�layerY(0,0)
!�%� rem$(dig%)="" � SCformat%=1 � �
!�x%=�digx(dig%,-3)
!�dragval%=� rem$(dig%)
!�/rem$(dig%)="":remainder%=�(rem$(1)+rem$(0))
!�6� mode%(NameNo%)=1 � �delete_current_box(0,dig%-3)
"9ș"Wimp_ForceRedraw",handle%(game%),x%,y%,x%+58,y%+58
"�pick_up_number
"�
"$
".
"8� �remove_digit(icon%)
"B6� x%,Y%,Mode%,flg%,dig%,Layer%,st%,cond%:rubber%=0
"L+Mode%=-(mode%(NameNo%)=1 � SCformat%=2)
"V2�number_position(icon%,x%,Y%,Layer%,dig%,flg%)
"`&cond%=(Layer%=0 � dig%>anslim%(0))
"j'� message$(0)<>"" � �remove_message
"t
"~� flg% � �
"�!� digans$(Layer%,dig%)="" � �
"�
"�#�digit_removed(Layer%,dig%,st%)
"�
"�P� Mode%=1 � SCformat%=2 � st%=0 � cond%=0 � �delete_current_box(Layer%,dig%)
"�9ș"Wimp_ForceRedraw",handle%(game%),x%,Y%,x%+58,Y%+58
"��pick_up_number
"�%nextmess%=-(Helplev%=5 � Mode%=1)
"�'� digans%(0)=0 � �set_top_icon(0,0)
"��
"�
"�
#'� �digit_removed(Layer%,dig%,� st%)
#
;� strike%(Layer%/2,dig%)=0 � Layer% � 2=1 � Layer%<=6 �
#$ dragval%=� digans$(Layer%,dig%)
#? digans$(Layer%,dig%)="":digans%(Layer%) -=dragval%*10^dig%
#(�
#20 dragval%=49:strike%(Layer%/2,dig%)=0:st%=-1
#<�
#F�
#P
#Z
#d&� �delete_current_box(Layer%,dig%)
#n8� x%,h%,olddig%,oldlayer%,level%,c%,cond%:olddig%=-1
#x2level%=Dlevel%(NameNo%):c%=carry%*(Helplev%>3)
#��cond%=(Layer%>0 � (dig%<rubdig% � Layer%=rublayer% � Layer%<rublayer%� rublayer%>0 � Layer%>rublayer% � rublayer%=0) � Layer%=0 � dig%>rubdig%)
#�
#�"� Clears box in next position.
#�� rubdig%=-1 �
#�& olddig%=nextdig%:oldlayer%=layer%
#�" rubdig%=dig%:rublayer%=Layer%
#��
#ȁ � dig%>rubdig% � DivType%=0 � DivType%=1 � cond%=-1 � olddig%=rubdig%:c%=0:oldlayer%=rublayer%:rubdig%=dig%:rublayer%=Layer%
#��
#�7� olddig%<>-1 � �digit_redraw(oldlayer%,olddig%,c%)
#��
#�
#�
$� �pick_up_number
$� w%,h%
$*� rubber%=0 � w%=18:h%=22 � w%=6:h%=12
$" x%=!block%-w%:y%=block%!4-h%
$,-�work_area_origin(handle%(game%),ox%,oy%)
$6,dragx%=x%+4-ox%:dragy%=y%+8-oy%:drag%=-1
$@1initx%=dragx%:inity%=dragy%:initnum%=dragval%
$J�move_number
$T�
$^
$h
$r� �set_up_rub_out
$|S� drag% � ș"Wimp_ForceRedraw",handle%(game%),dragx%,dragy%,dragx%+58,dragy%+58
$�dragval%=10:rubber%=-1
$�*POINTER 0
$��pick_up_number
$��
$�
$�
$�� �rub_out(icon%)
$�,� x%,Y%,Mode%,flg%,dig%,Layer%,st%,cond%
$�+Mode%=-(mode%(NameNo%)=1 � SCformat%=2)
$�'� message$(0)<>"" � �remove_message
$�2�number_position(icon%,x%,Y%,Layer%,dig%,flg%)
$�+� flg%=-1 � digans$(Layer%,dig%)="" � �
$�3cond%=(Layer%=0 � dig%>Lshift%(0) � DivType%=1)
%
%#�digit_removed(Layer%,dig%,st%)
%� flg% � �
%&2nextmess%=-(Helplev%=5 � Mode%=-1):dragval%=10
%0B� Mode%=1 � st%=0 � cond%=0 � �delete_current_box(Layer%,dig%)
%:9ș"Wimp_ForceRedraw",handle%(game%),x%,Y%,x%+58,Y%+58
%D/� digans%(layerlim%)=0 � �set_top_icon(0,0)
%N�
%X
%b
%l� �check_rubout
%v*� y%,x%,flg%,lowlim%:rubdig%=-1:flg%=0
%�I� IF rem$(1)="" AND doneR$(1)="d" THEN flg%=-1:rubdig%=-2:rublayer%=0
%�
%�� y%=1 � 6
%�# � x%=Lshift%(y%) � anslim%(y%)
%�  � flg%=0 �
%�2   flg%=(digans$(y%,x%)="" � done$(y%,x%)="d")
%�'   � flg% � rubdig%=x%:rublayer%=y%
%�  �
%� �
%��
%�
%�� x%=anslim%(0) � 0 � -1
%� � flg%=0 �
&/  flg%=(digans$(0,x%)="" � done$(0,x%)="d")
&%  � flg% � rubdig%=x%:rublayer%=0
& �
& �
&*
&4B� flg%=0 � rem$(1)="" � doneR$(1)="d" � rubdig%=-2:rublayer%=0
&>
&H=rubdig%
&R
&\� y%=0 � 6
&f- � y%=0 � lowlim%=0 � lowlim%=Lshift%(y%)
&p � x%=lowlim% � anslim%(y%)
&z  � flg%=0 �
&�2   flg%=(digans$(y%,x%)="" � done$(y%,x%)="d")
&�'   � flg% � rubdig%=x%:rublayer%=y%
&�  �
&� �
&��
&�=rubdig%
&�
&�
&�!� �carryposY(� Layer%,� pos%)
&�� double%=0 �
&� Ȏ pos% �
&�)  � 58,59,60,61,62:pos% -=58:Layer%=0
&�)  � 63,64,65,66,67:pos% -=63:Layer%=2
'&  � 68,69,70,71:pos% -=68:Layer%=4
'#  � 72,73,74:pos% -=72:Layer%=6
' �
'$�
'.
 Layer%=0
'8�
'B�
'L
'V
'`� �place_carry(pos%)
'j"� x%,x2%,h%,valid%,Layer%,flg%
't�carryposY(Layer%,pos%)
'~
double%=0
'�@� Mflg%=-1 � Helplev%<5 � mode%(NameNo%)=1 � �remove_message
'�Hvalid%=(Lcurrent%>Layer% � DivType%=1 � pos%>=nextdig% � DivType%=0)
'�
'�0� mode%(NameNo%)=1 � Helplev%>2 � valid%=0 �
'� flg%=-1
'�" � DivType%=0 � �message("pl")
'��
'�� flg% �
'�
'�c� mode%(NameNo%)=1 � DivType%=0 � Helplev%=5 � �check_dig_val(Layer%,pos%)=0 � �message("ck"):�
'�1� mode%(NameNo%)=0 � pos%>anslim%(Layer%) � �
'�
(Inextmess%=-(Helplev%=5 � nextdig%>-1 � DivType%=0 � mode%(NameNo%)=1)
(

(Iș"Wimp_ForceRedraw",handle%(game%),dragx%,dragy%,dragx%+58,dragy%+58
(
((1� carry$(Layer%/2,pos%)<>"" � �dragval%="1" �
(24 carry$(Layer%/2,pos%)="1"+carry$(Layer%/2,pos%)
(<�
(F$ carry$(Layer%/2,pos%)=�dragval%
(P�
(Zdrag%=0
(d!�digit_redraw(Layer%,pos%,-1)
(n
(x4� mode%(NameNo%)=1 � pos%=nextdig% � carry%=-1 �
(�
 carry%=0
(�% �digit_redraw(layer%,nextdig%,0)
(��
(��
(�
(�
(�� �remove_carry(pos%)
(�� x%,h%,flg%,Layer%
(��carryposY(Layer%,pos%)
(�$�carry_removed(Layer%,pos%,flg%)
(�� flg% � �
(�
(�!�digit_redraw(Layer%,pos%,-1)
)
rubber%=0
)#ș"Wimp_GetPointerInfo",,block%
)�pick_up_number
)"�move_number
),�
)6
)@
)J(� �carry_removed(Layer%,pos%,� flg%)
)T
� car$
)^&flg%=-1:car$=carry$(Layer%/2,pos%)
)h� car$<>"" �
)r flg%=0
)| � � car$=1 �
)�  dragval%=� car$:car$=""
)� �
)�  dragval%=1:car$=�car$,1)
)� �
)� carry$(Layer%/2,pos%)=car$
)��
)��
)�
)�
)�� �rub_out_carry(pos%)
)�%� x%,h%,flg%,xco%,l%:xco%=!block%
)��carryposY(Layer%,pos%)
)�$�carry_removed(Layer%,pos%,flg%)
*� flg% � �
*dragval%=10
*!�digit_redraw(Layer%,pos%,-1)
*&�
*0
*:
*D� �grid
*N� x%,y%
*Xș"Wimp_SetColour",15
*b� x%=0 � 1276 � 58
*l& � ox%+x%,oy%-904:� ox%+x%,oy%-150
*v�
*�� y%=-904 � -150 � 58
*�# � ox%,oy%+y%:� ox%+1276,oy%+y%
*��
*�� ox%,oy%:� ox%+1276,oy%
*�
*�Jș"OS_SpriteOp",&134,sarea%,"numbers",ox%+58,oy%-904,0,scale27%,trans%
*�Jș"OS_SpriteOp",&134,sarea%,"strike",ox%+696,oy%-904,0,scale27%,trans%
*��
*�
*�
*�� �sum_parts
*�A� x%,y%,d%,dig$,shift%,x1%,x2%,symbol%,lim%,level%,len%,remL%
*�
+ș"Wimp_SetColour",1
+� shaded areas
+� DivType%=0 �
+  � d%=0 � 4
+*  x%=�digx(d%,0)-8
+4  y%=�layerY(0,-1)+28
+>1  � d%<� �num1%-1 � ȓ Ȑ ox%+x%,oy%+y%,22,26
+H �
+R�
+\ � l%=0 � 6 � 2
+f  � d%=0 � 4
+p   x%=�digx(d%,0)-8
+z   y%=�layerY(l%,(l%=0))+28
+�2   � l%=0 � lim%=� �num1%-1 � lim%=anslim%(l%)
+�N   � d%<=lim% � d%>=Lshift%(l%) � l%<layerlim% � ȓ Ȑ ox%+x%,oy%+y%,22,26
+�  �
+� �
+��
+�
+�ș"Wimp_SetColour",7
+�� Sum lines
+� x1%=�num1pos-6:len%=� �num1%
+�*ȓ Ȑ ox%+x1%,oy%+Ypos%(1),58*len%+6,4
+�#ȓ Ȑ ox%+x1%,oy%+Ypos%(2),6,58
+�
+�� DivType%=1 �
, � Lines for subtraction
,2 x1%=�digx(len%-1,0):x2%=�digx(0,Lshift%(1)-1)
,+ ȓ Ȑ ox%+x1%,oy%+Ypos%(3)-4,x2%-x1%,4
,$
,. � l%=2 � 6 � 2
,8  � layerlim%>l% �
,B:   x1%=�digx(anslim%(l%),0):x2%=�digx(0,Lshift%(l%)-1)
,L0   ȓ Ȑ ox%+x1%,oy%+Ypos%(l%+3)-4,x2%-x1%,4
,V  �
,` �
,j�
,t
,~
� Columns
,�� colname%(NameNo%) �
,� � d%=0 � len%-1
,�S  x%=�digx(d%,0)+2-13*(decimal%(NameNo%)=0 � d%<4 � decimal%(NameNo%)=1 � d%>1)
,�'  power%=d%+2*(decimal%(NameNo%)=1)
,�S  ș"OS_SpriteOp",&134,sarea%,"dig"+�power%,ox%+x%,oy%+Ypos%(0),0,scale%,trans%
,� �
,��
,�
,�� Remainder
,�%x%=�digx(0,-1)+19:remL%=layerlim%
,�*� DivType% � remL%=layerlim% � remL%=1
,�c� answer%(remL%)>0 � ș"OS_SpriteOp",&134,sarea%,"rem",ox%+x%,oy%+Ypos%(1)+12,0,scale27%,trans%
-�
-

-
-.� �digx(d%,shift%)=174+58*(4-d%)-58*shift%
-(=� �layerY(layer%,c%)=Ypos%(layer%+2)-58*(layer%=0 � c%=0)
-2
-<� �num1pos
-F� len%:len%=� �num1%-1
-P=�digx(len%,0)
-Z
-d
-n� �sum_numbers
-x+� d%,x%,y%,Y%,Layer%,Yadj%,len%,y1%,y2%
-�len%=� �num1%
-�
-�� d%=0 � len%-1
-�- x1%=�digx(d%,0)+19:x2%=�digx(d%,len%)+19
-�i � dig1$(d%)<>"" � ș"OS_SpriteOp",&134,sarea%,"n"+dig1$(d%),ox%+x1%,oy%+Ypos%(2)+8,0,scale27%,trans%
-�i � dig2$(d%)<>"" � ș"OS_SpriteOp",&134,sarea%,"n"+dig2$(d%),ox%+x2%,oy%+Ypos%(2)+8,0,scale27%,trans%
-�w � digans$(0,d%)<>"" � ș"OS_SpriteOp",&134,sarea%,"move"+digans$(0,d%),ox%+x1%-5,oy%+Ypos%(1)+12,8,scale27%,trans%
-�
-� � Layer%=0 � layerlim%
-�)  x%=�digx(d%,0):y%=�layerY(Layer%,0)
-�
-�  � digans$(Layer%,d%)<>"" � Layer%>0 � ș"OS_SpriteOp",&134,sarea%,"move"+digans$(Layer%,d%),ox%+x%+14,oy%+y%+12,8,scale27%,trans%
-�
."  � Layer% � 2=0 � Layer%<=6 �
.)   y%=�layerY(Layer%,-1)+4*(Layer%>0)
.l   � strike%(Layer%/2,d%)=-1 � ș"OS_SpriteOp",&134,sarea%,"move49",ox%+x%+12,oy%+y%+8,8,scale27%,trans%
."   y% +=28
.,
.6"   � carry$(Layer%/2,d%)<>"" �
.@#    � � carry$(Layer%/2,d%)>1 �
.J$     c1$=�carry$(Layer%/2,d%),1)
.T$     c2$=�carry$(Layer%/2,d%),1)
.^Q     ș"OS_SpriteOp",&134,sarea%,"carry"+c1$,ox%+x%-10,oy%+y%,8,scale%,trans%
.hP     ș"OS_SpriteOp",&134,sarea%,"carry"+c2$,ox%+x%+4,oy%+y%,8,scale%,trans%
.r	    �
.|3     � Layer%=0 � d%=len%-1 � Layer%>0 � x% +=4
.�`     ș"OS_SpriteOp",&134,sarea%,"carry"+carry$(Layer%/2,d%),ox%+x%,oy%+y%+4,8,scale%,trans%
.�	    �
.�   �
.�  �
.� �
.��
.�
.�� answer%(layerlim%)>0 �
.� � n%=0 � 1
.�+  x%=�digx(n%,-3)+14:y%=�layerY(0,0)+12
.�b  � rem$(n%)<>"" � ș"OS_SpriteOp",&134,sarea%,"move"+rem$(n%),ox%+x%,oy%+y%,0,scale27%,trans%
.� �
.��
/
/� decimal%(NameNo%) �
/= y1%=�layerY(0,-1)-16:y2%=�layerY(0,0)-8:x%=�digx(2,0)-12
/&J ș"OS_SpriteOp",&134,sarea%,"decpoint",ox%+x%,oy%+y1%,8,scale%,trans%
/0J ș"OS_SpriteOp",&134,sarea%,"decpoint",ox%+x%,oy%+y2%,8,scale%,trans%
/:�
/D�
/N
/X
/b� �sum_numbers_est
/l� d%,x%
/v� d%=0 � 4
/� x%=�digx(d%,-13)
/�w � digans$(0,d%)<>"" � ș"OS_SpriteOp",&134,sarea%,"move"+digans$(0,d%),ox%+x%+12,oy%+Ypos%(7)+12,8,scale27%,trans%
/��
/��
/�
/�
/�� �make_div(level%)
/�� f%,s%,a%
/�Ȏ level% �
/� � 1:�make_level1
/� � 2:�make_level2
/� � 3:�make_level3_4(3)
/� � 4:�make_level3_4(4)
0 � 5:s%=�(9)+10
0&        f%=�make_levels567(2,3,s%)
0 � 6:s%=�(40)+10
0 &        f%=�make_levels567(3,4,s%)
0* � 7:s%=�(80)+19
04&        f%=�make_levels567(3,4,s%)
0>�
0Hnum1%=f%:num2%=s%
0R�
0\
0f
0p � level%=2 �
0z!  f%=9999+�(90000):s%=9+�(90)
0�  a%=f%/s%:f%=a%*s%
0� �
0�  f%=999+�(9000):s%=�(8)+1
0�  a%=f%/s%:f%=a%*s%
0� �
0�� f%>999
0�num1%=f%:num2%=s%
0��
0�
0�
0�!� �make_levels567(d1%,d2%,s%)
0�� n1%,n2%,n3%,n4%,a%
0�(n1%=� �d1%,"9"):n2%=�("9"+�d1%,"0"))
1(n3%=� �d2%,"9"):n4%=�("9"+�d2%,"0"))
1�
1- � �(2)=1 � f%=n1%+�(n2%) � f%=n3%+�(n4%)
1$. � decimal%(NameNo%)=1 � a%=f%/s%:f%=a%*s%
1.� � � f%>d1%
18=f%
1B
1L
1V� �make_level2
1`�
1j s%=�(4)+1:f%=99+�(90)
1t a%=f%/s%:f%=a%*s%
1~� f%>99
1��
1�
1�
1�� �make_level3_4(level%)
1��
1� s%=�(8)+1:f%=9999+�(90000)
1�9 � level%=3 � decimal%(NameNo%)=1 � a%=f%/s%:f%=a%*s%
1�
� f%>9999
1��
1�
1�
1�� �make_level1
2� p%,n%,lim%,Lim%
2

s%=1+�(3)
2p%=1+�(3):lim%=9/s%
2� n%=0 � p%
2(/ � �(lim%+1)=1 � n%<p% � Lim%=0 � Lim%=lim%
22$ � Lim% � f%=f%+s%*�(Lim%)*10^n%
2<�
2F�
2P
2Z
2d� �results_sum
2n)� st$,op$,down%,num1$,num2$,ans$,rem%
2x(� DivType% � rem%=layerlim% � rem%=1
2�Ddown%=1-(quest%=0 � Rcnt%=4):Rcnt% +=down%:notsavedR%=-1:newR%=0
2�� decimal%(NameNo%) �
2�  num1$=�insert_point(�num1%)
2� num2$=�num2%
2�$ ans$=�insert_point(�answer%(0))
2��
2�/ num1$=�num1%:num2$=�num2%:ans$=�answer%(0)
2�4 � answer%(rem%) � ans$=ans$+"R"+� answer%(rem%)
2��
2�
2�!fill$=�12-�(num1$+num2$)," ")
2�"fill2$=�8-�ans$," "):op$=" � "
2�Jst$=" ("+�(quest%+1)+") "+num1$+op$+num2$+fill$+" = ("+ans$+")"+fill2$
3&Rptr%=�add_string(Rptr%,st$,down%)
3�
3
3"
3,� �insert_point(num$)
36� len%,left$,right$
3@len%=� num$-2
3J%left$=�num$,len%):right$=�num$,2)
3T=left$+"."+right$
3^
3h
3r!� �digits(num%,dig$(),layer%)
3|
� d%,lim%
3�7� num%=0 � dig$(layerlim%,Lshift%(layerlim%))="0":�
3�
3�� d%=0 � 4
3� � layer%=-1 �
3�4  � num%>0 � dig$(d%)=�(num% � 10) � dig$(d%)=""
3� �
3�B  � num%>0 � dig$(layer%,d%)=�(num% � 10) � dig$(layer%,d%)=""
3� �
3� num%=num% � 10
3��
3��
3�� decimal%(NameNo%)=1 �
3� � layer%=-1 �
4  � d%=1 � 2
4#   � dig$(d%)="" � dig$(d%)="0"
4  �
4& �
40  lim%=anslim%(layer%)
4:4  � dig$(layer%,lim%)="" � dig$(layer%,lim%)="0"
4D �
4N�
4X�
4b
4l
4v� �rem_digits
4�
� num$
4�>� DivType%=1 � num$=�answer%(layerlim%) � num$=�answer%(1)
4�
4�� � num$=1 �
4�" remans$(1)=num$:remans$(0)=""
4��
4�, remans$(1)=�num$,1):remans$(0)=�num$,1)
4��
4��
4�
4�
4�� �find_error
4�$� x%,y%,flg%,lim%,remlim%:flg%=0
5� DivType%=0 �
5' � nexterr%<0 � nexterr%=-1:flg%=-1
5) � nextdig%<>-1 � nexterr%=-1:flg%=-1
5 �
5*D � nexterr%=anslim%(layerlim%)+1 � nexterrL%=layerlim% � flg%=-1
54L � nextdig%<anslim%(layerlim%)+1 � layer%=layerlim% � layer%<layerlim% �
5>?  nexterr%=anslim%(layerlim%)+1:nexterrL%=layerlim%:flg%=-1
5H&  �digit_redraw(layer%,nextdig%,0)
5R �
5\�
5f� flg% � �
5p
5z� DivType%=0 �
5� �
5�  nexterr% +=(nexterr%>-1)
5�J  � nexterr%>=0 � � digans$(0,nexterr%)<>answer$(0,nexterr%) � flg%=-1
5� � flg%=-1 � nexterr%=-1
5�
5�, � answer%(1)>0 � nexterr%=-1 � flg%=0 �
5�1  � rem$(1)<>remans$(1) � nexterr%=-2:flg%=-1
5� �
5�
5�9 � flg% � rubdig%=nexterr%:�digit_redraw(0,rubdig%,0)
5��
5�& remlim%=-� � answer%(layerlim%)-1
5� �
6  flg%=0
6  � nexterr%>=0 �
6�   � digans$(nexterrL%,nexterr%)<>answer$(nexterrL%,nexterr%) � flg%=-1 � �box_position2(nexterr%,nexterrL%,Lcurr2%,Ltype2%)
6$   � nexterr%=-2 �
6.H    � rem$(nexterr%+3)<>remans$(nexterr%+3) � flg%=-1 � nexterr% -=1
68   �
6B  �
6L   � nexterr%>=remlim% �
6VH    � rem$(nexterr%+3)<>remans$(nexterr%+3) � flg%=-1 � nexterr% -=1
6`   �
6j-    nexterr%=nextdig%:nexterrL%=layerlim%
6t   �
6~  �
6�
6�5 � flg%=-1 � nexterr%=nextdig% � nexterrL%=layer%
6�A � nexterr%<>nextdig% � nexterrL%=layer% � nexterrL%<layer% �
6�*  rubdig%=nexterr%:rublayer%=nexterrL%
6�(  �digit_redraw(rublayer%,rubdig%,0)
6� �
6�V � IF nexterr%=nextdig% AND nexterrL%=layerlim% THEN nexterr%=anslim%(layerlim%)+1
6�v � nexterr%=nextdig% � nexterrL%=layer% � nexterr%=anslim%(layerlim%)+1:nexterrL%=layerlim%:rubdig%=-1:rublayer%=0
6�
6��
6��
6�
7
7
� �null_event
7� drag% � �move_number
7
7(`� �-sesstime%>timelim%(NameNo%)*6000 � Notimer%(NameNo%)=0 � game%>0 � timeup%=0 � timeup%=1
72� timeup%=2 �
7<> message$(0)="Time's up":message$(1)="":�7:�font_to_screen
7F$ �pause(400):�game_end:timeup%=0
7P�
7Z
7dB� drawfont% � �font_to_screen:�message_sprite_back:drawfont%=0
7nF� nextmess% � �pause(100*(nextmess%-1)):�message("pr"):nextmess%=0
7x5� printer%(NameNo%)=1 � driver%=0 � enprint%=-1 �
7� driver%=�ensure_Pdriver
7�@ � driver% � �set_top_icon(7,-1):�shade_icon(SChandle%,11,0)
7��
7�N� �window_open(Lhandle%)=-1 � create%=-2 � �loadbox_windows(-1):create%=-1
7�:� �-TLtime%>1000 � �close_window(Thandle%):TLtime%=1E7
7��
7�
7�
7�� �move_number
7�A� x%,y%,x1%,x2%,y1%,y2%,w%,h%,flg%,r0%,r1%,r2%,r3%,cond%,win%
7�#ș"Wimp_GetPointerInfo",,block%
7�win%=block%!12
7�
8� rubber% �
8, w%=75:h%=75:x%=!block%-6:y%=block%!4-12
8�
8"A w%=36-6*(dragval%=49):h%=44:x%=!block%-w%/2:y%=block%!4-h%/2
8,�
86
8@-�work_area_origin(handle%(game%),ox%,oy%)
8Jx% -=ox%:y% -=oy%
8T
8^,� rubber%=-1 � (y%>-266 � dragy%>-266) �
8h? ș"OS_SpriteOp",&13C,sarea%,"backtop1",1 � r0%,r1%,r2%,r3%
8r3 ș"OS_SpriteOp",&134,sarea%,"top1",0,0,0,-1,-1
8|? ș"OS_SpriteOp",&134,sarea%,"move10",x%-150,150+y%,8,-1,-1
8�0 ș"OS_SpriteOp",r0%,r1%,r2%,r3%:flg%=-1:�26
8��
8�
8�)� �(x%-dragx%)<4 � �(y%-dragy%)<8 � �
8�
8�=� x%>dragx% � x2%=x%+w%:x1%=dragx% � x2%=dragx%+w%:x1%=x%
8�=� y%>dragy% � y2%=y%+h%:y1%=dragy% � y2%=dragy%+h%:y1%=y%
8�dragx%=x%:dragy%=y%
8�;� �(initx%-dragx%)>12 � �(inity%-dragy%)>12 � double%=0
8�
8�� rubber% �
8�3 cond%=-((x2%<170 � x1%>285) � y1%>-165 � y%>0)
8�% � win%<>handle%(game%) � cond%=1
9 �"POINTER "+� cond%
9�
9
9&� y2%>-150 �
90 � y1%>-150 � y1%=-150
9: � y2%>-150 � y2%=-150
9D�
9NR� �(y1%=-150 � y2%=-150) � ș"Wimp_ForceRedraw",handle%(game%),x1%,y1%,x2%,y2%
9X
9b� flg%=-1 �
9l7 flg%=�update_window(handle%(game%),152,-150,300,0)
9v ȕ flg%
9�L  ș"OS_SpriteOp",&134,sarea%,"backtop1",ox%+150,oy%-146,0,scale%,trans%
9�*  ș"Wimp_GetRectangle",,block% � flg%
9� �
9�F � y1%<-146 � ș"Wimp_ForceRedraw",handle%(game%),x1%,y1%,x2%,-146
9��
9��
9�
9�
9�A� �number_position(ICdrag%,� x%,� Y%,� Layer%,� dig%,� flag%)
9�� shift%:shift%=0
9�� SCformat%=2 �
9� � double%=0 �
9�  Ȏ ICdrag% �
:0   � 18,19,20,21,22:dig%=ICdrag%-18:Layer%=0
:-   � 27,28,29,30:dig%=ICdrag%-26:Layer%=1
:0   � 31,32,33,34,35:dig%=ICdrag%-31:Layer%=2
: 0   � 36,37,38,39,40:dig%=ICdrag%-36:Layer%=3
:*-   � 41,42,43,44:dig%=ICdrag%-41:Layer%=4
:4-   � 45,46,47,48:dig%=ICdrag%-45:Layer%=5
:>*   � 49,50,51:dig%=ICdrag%-49:Layer%=6
:H*   � 52,53,54:dig%=ICdrag%-52:Layer%=7
:R'   � 55,56:dig%=ICdrag%-55:Layer%=8
:\  �
:f  Y%=�layerY(Layer%,0)
:p  flag%=(ICdrag%>56)
:z �
:�6  � rubdig%<>-1 � Layer%=rublayer% � Layer%=layer%
:�'  dig%=ICdrag%:Y%=�layerY(Layer%,0)
:� �
:� x%=�digx(dig%,0)
:��
:�- dig%=ICdrag%-75:Layer%=0:Y%=�layerY(5,0)
:�* x%=�digx(dig%,-13):flag%=(ICdrag%<75)
:��
:��
:�
:�
:�B� �number_pos_strike(ICdrag%,� x%,� Y%,� Layer%,� dig%,� flg%)
:�Ȏ ICdrag% �
;+ � 23,24,25,26:dig%=ICdrag%-22:Layer%=0
;+ � 32,33,34,35:dig%=ICdrag%-31:Layer%=2
;( � 42,43,44:dig%=ICdrag%-41:Layer%=4
;$% � 50,51:dig%=ICdrag%-49:Layer%=6
;.
;8 flg%=-1
;B�
;L
;Vx%=�digx(dig%,0)
;`Y%=�layerY(Layer%,-1)
;j�
;t
;~
;�� �place_strike(ICdrag%)
;�� x%,Y%,Layer%,dig%,flg%
;�� dragval%<>49 � �
;�Iș"Wimp_ForceRedraw",handle%(game%),dragx%,dragy%,dragx%+58,dragy%+58
;�-�work_area_origin(handle%(game%),ox%,oy%)
;�6�number_pos_strike(ICdrag%,x%,Y%,Layer%,dig%,flg%)
;�6� Layer%>0 � digans$(Layer%,dig%)="" � flg%=-1 � �
;�strike%(Layer%/2,dig%)=-1
;�+drag%=0:dragx%=0:dragy%=-825:dragval%=0
;�Iș"Wimp_ForceRedraw",handle%(game%),x%,Y%,x%+58,Y%+58:� Current digit
;��
;�
<
<
� �place_remainder(ICdrag%)
<� dig%,x%,y%,Layer%,flg%
<� SCformat%=1 � �
<(@� Mflg%=-1 � Helplev%<5 � mode%(NameNo%)=1 � �remove_message
<2#dig%=ICdrag%-81:y%=�layerY(0,0)
<<x%=�digx(dig%,-3)
<FN� mode%(NameNo%)=1 � Helplev%>2 � (dig%-3<>nextdig% � doneR$(dig%)="") � �
<PIș"Wimp_ForceRedraw",handle%(game%),dragx%,dragy%,dragx%+58,dragy%+58
<Z*dragx%=0:dragy%=-950:drag%=0:double%=0
<d
<n*rem$(dig%)=� dragval%:doneR$(dig%)="d"
<x!remainder%=�(rem$(1)+rem$(0))
<�dragval%=0
<�
<�9ș"Wimp_ForceRedraw",handle%(game%),x%,y%,x%+58,y%+58
<�
<�� mode%(NameNo%)=1 �
<�# � dig%-3=nextdig% � layer%=0 �
<�  �
<�
   flg%=0
<�   �rem_box
<�P   � DivType%=1 � layer%=0 � � nextdig%<0 � doneR$(3+nextdig%)="d" � flg%=-1
<�  � flg%=0
<� �
<�
=% � dig%-3=rubdig% � rublayer%=0 �
=  rubdig%=�check_rubout
= �
="{ � try%>0 � rubdig%=-1 � DivType%=1 � �(nexterr%=anslim%(layerlim%)+1 � nexterrL%=layerlim%) � nexterr% -=1:�find_error
=,P � rubdig%<>-1 � dig%=rubdig%:Layer%=rublayer% � dig%=nextdig%:Layer%=layer%
=6! �digit_redraw(Layer%,dig%,0)
=@�
=J�nextmess%=-(mode%(NameNo%)=1 � Helplev%=5 � ((nextdig%<>-1 � DivType%=0 � nextdig%<anslim%(layerlim%) � DivType%=1) � rubdig%<>-1))
=T�
=^
=h
=r� �place_number(ICdrag%)
=|B� x%,y%,Y%,dig%,Mode%,flg%,flg2%,ylev%,Layer%,Dtype%,Dig%,Lay%
=�Dtype%=DivType%
=�,� dragval%=49 � �place_strike(ICdrag%):�
=�*Mode%=(mode%(NameNo%)=1 � SCformat%=2)
=�ylev%=�layerY(layer%,0)
=�
check%=-1
=�Iș"Wimp_ForceRedraw",handle%(game%),dragx%,dragy%,dragx%+58,dragy%+58
=�-� Mflg%=-1 � Helplev%<5 � �remove_message
=�-�work_area_origin(handle%(game%),ox%,oy%)
=�
=�4�number_position(ICdrag%,x%,Y%,Layer%,dig%,flg%)
=�� flg% � �
=�
=�
flg%=0
>0� dig%=nextdig% � carry%=-1 � Helplev%>3 � �
>f� Mode%=-1 � Helplev%>2 � SCformat%=2 � �(dig%=nextdig% � Layer%=layer%) � done$(Layer%,dig%)="" �
> �message("pl")
>& flg%=-1
>0�
>:� flg% � �
>D
>NP� Mode%=0 � SCformat%=2 � (dig%>�answer_limit(num1%) � Layer%>layerlim%) � �
>X
>b=� Mode%=-1 � Helplev%=5 � �check_dig_val(Layer%,dig%)=0 �
>lK � rubdig%=-1 � Dig%=nextdig%:Lay%=layer% � Dig%=rubdig%:Lay%=rublayer%
>v@ � Dig%=dig% � Lay%=Layer% � �message("ck") � �message("pr")
>� flg%=-1
>��
>�� flg% � �
>�
>�*dragx%=0:dragy%=-825:drag%=0:double%=0
>�
>�Q� digans$(Layer%,dig%)<>"" � digans%(Layer%) -=� digans$(Layer%,dig%)*10^dig%
>�Fdigans$(Layer%,dig%)=� dragval%:digans%(Layer%) +=dragval%*10^dig%
>�
>�%dragval%=0:done$(Layer%,dig%)="d"
>�Iș"Wimp_ForceRedraw",handle%(game%),x%,Y%,x%+58,Y%+58:� Current digit
>�
>�� Mode%=-1 �
?& � dig%=nextdig% � layer%=Layer% �
?  �
?
   flg%=0
? U   � Dtype%=0 � �box_position1 � �box_position2(nextdig%,layer%,Lcurrent%,Ltype%)
?*   � nextdig%>=0 �
?4)    flg%=(done$(layer%,nextdig%)="d")
?>   �
?H
     �
?R8      � nextdig%<-1 � flg2%=(doneR$(nextdig%+3)="d")
?\      � flg2% � �rem_box
?fA     � flg2%=0 � layer%>0 � Dtype%=1 � nextdig%=-1 � Dtype%=0
?p   �
?z  � flg%=0
?� �
?�
?�? � rubdig%=-1 � Dtype%=0 � nextdig%>-1 � dig%<=anslim%(0) �
?�3  � car_dig%(nextdig%)>0 � carry%=-1 � carry%=0
?� �
?�
?�( � dig%=rubdig% � rublayer%=Layer% �
?�  rubdig%=�check_rubout
?� �
?�U � try%>0 � rubdig%=-1 � �(nexterr%=anslim%(layerlim%)+1 � nexterrL%=layerlim%) �
?�E  � Dtype%=1 � �box_position2(nexterr%,nexterrL%,Lcurr2%,Ltype2%)
?�  �find_error
?� �
@
@P � rubdig%<>-1 � dig%=rubdig%:Layer%=rublayer% � dig%=nextdig%:Layer%=layer%
@@ �digit_redraw(Layer%,dig%,carry%*(Helplev%>3 � rubdig%=-1))
@$�
@.
@8}nextmess%=-(Helplev%=5 � Mode%=-1 � ((nextdig%<=anslim%(layer%) � DivType%=1 � nextdig%<>-1 � DivType%=0) � rubdig%<>-1))
@BZ� digans%(0)>0 � try%<tries%(NameNo%) � SCformat%=2 � force5%=-1 � �set_top_icon(0,-1)
@L�
@V
@`
@j� �box_position1
@t� nextdig%=-1 � �
@~nextdig% +=(nextdig%>=0)
@�
@�� nextdig%=-1 �
@�
 carry%=0
@�$ � answer%(1)>0 � �start_rem_box
@��
@�" carry%=(car_dig%(nextdig%)>0)
@��
@��
@�
@�
@�>� �box_position2(� nextdig%,� layer%,� Lcurrent%,� Ltype%)
@�Ȏ Ltype% �
A/ � 1:nextdig% -=(nextdig%<=anslim%(layer%))
A
f        � nextdig%>anslim%(layer%) � nextdig%=Lshift%(layer%):layer% +=1:Ltype%=2:Lcurrent%=layer%
A? � 0:� Lcurrent%<layerlim% � nextdig%<>Lshift%(Lcurrent%) �
Aq         � nextdig%=Lshift%(Lcurrent%) � layer%=Lcurrent%+1:Ltype%=1 � nextdig% -=1:Ltype%=2:layer%=Lcurrent%
A(
        �
A2         � nextdig%=0 �
A<B          layer%=Lcurrent%:nextdig%=anslim%(layer%)+1:Ltype%=2
AF3          � answer%(layerlim%)>0 �start_rem_box
AP         �
AZ          nextdig% -=1
Ad         �
An
        �
AxM � 2:nextdig% -=(nextdig%<=anslim%(layer%) � nextdig%>=Lshift%(layer%-1))
A�M        � nextdig%<Lshift%(layer%-1) � Lcurrent%=layer%:layer%=0:Ltype%=0
A�(        � nextdig%>anslim%(layer%) �
A�7         � layer%<layerlim% � Lshift%(layer%-1)>0 �
A�*          nextdig%=Lshift%(layer%-1)-1
A�         �
A��          � anslim%(layer%)>0 � answer%(layer%)=0 � nextdig% -=2:Lcurrent%=layer%:layer%=0:Ltype%=0 � � answer%(layerlim%)>0 �start_rem_box
A�         �
A�
        �
A��
A��
A�
A�
A�� �start_rem_box
Blayer%=0:nextdig%=-2
B�
B
B"
B,� �rem_box
B6� remL%
B@,� DivType%=1 � remL%=layerlim% � remL%=1
BJnextdig% -=1
BT'� � �answer%(remL%)=-(2+nextdig%) �
B^? � DivType%=0 � nextdig%=-1 � nextdig%=anslim%(layerlim%)+1
Bh layer%=layerlim%
Br�
B|�
B�
B�
B�#� �digit_redraw(Layer%,dig%,c%)
B�� y%
B�� Division
B�*x%=�digx(dig%,0):y%=�layerY(Layer%,c%)
B�
B�� c%=0 �
B�: ș"Wimp_ForceRedraw",handle%(game%),x%,y%,x%+58,y%+58
B��
B�H ș"Wimp_ForceRedraw",handle%(game%),x%-14,y%+28,x%+16,y%+56:� Carry
B��
B��
C
C
C!� �check_dig_val(Layer%,dig%)
C&B� carry%=0 � num%=� answer$(Layer%,dig%) � num%=car_dig%(dig%)
C0=(num%=dragval%)
C:
CD
CN� �place_double_click
CX
� pos%
CbO� rubdig%<>-1 � pos%=rubdig%:Layer%=rublayer% � pos%=nextdig%:Layer%=layer%
ClN� pos%>anslim%(layer%) � Layer%=layerlim% � pos%=-1 � mode%(NameNo%)=0 � �
Cv
C�*� pos%<0 � �place_remainder(pos%+84):�
C�
C�*� carry%=0 � rubdig%>-1 � Helplev%<4 �
C� �place_number(pos%)
C��
C� �place_carry(pos%)
C��
C��
C�
C�
C�� �replace_number(num%)
C�� r0%,r1,r2%,r3%
C�� initnum%<>num% � �
D drag%=0:double%=0:dragval%=0
D� num%=10 �
D> ș"OS_SpriteOp",&13C,sarea%,"backtop1",1 � r0%,r1,r2%,r3%
D 3 ș"OS_SpriteOp",&134,sarea%,"top1",0,0,0,-1,-1
D*' ș"OS_SpriteOp",r0%,r1,r2%,r3%:�26
D4�
D>
DHIș"Wimp_ForceRedraw",handle%(game%),dragx%,dragy%,dragx%+75,dragy%+75
DR�
D\
Df
Dp� �game_end
Dz� r%
D�=�close_window(handle%(game%)):game%=0:drag%=0:startOwn%=0
D��close_window(CChandle%)
D�#�close_window(Ohandle%):Owin%=0
D��close_window(Phandle%)
D��close_window(P2handle%)
D��shade_item(menu%,2,0)
D�T� marked%=-1 � auto%(NameNo%)=1 � ownsum%(NameNo%)=0 � �new_auto_level(correct%)
D�0� saveR%(NameNo%)=1 � quest%>0 � �end_levels
D�4� IF notsavedO% THEN PROCsave_file($savebuff%,0)
D�9� autosaveR%=-1 � saveR%(NameNo%)=1 � notsavedR%=-1 �
D�) �results_text_file($savetextbuff%,0)
D��
D��show_score("E")
E�
E
E
E$� �end_levels
E.!� st$,perc$,Mlev$,Dlev$,auto$
E8Rcnt% +=2:Rcnt2% +=2
EB@� ownsum%(NameNo%)=0 � Dlev$=� Dlevel%(NameNo%) � Dlev$=" -"
ELE� quest% � perc$=�(�(100*CorrectAns%/quest%+.5))+"%" � perc$="0%"
EV2� autohelp%(NameNo%)=1 � auto$="Y" � auto$="N"
E`Ast$=" End levels: div:"+Dlev$+" ,auto help:"+auto$+"  "+perc$
Ej"Rptr%=�add_string(Rptr%,st$,2)
Et�
E~
E�
E�� �sum_filled
E�� n%,flg%,lim%
E�flg%=-1:lim%=anslim%(0)
E�� n%=0 � lim%
E�A � digans$(0,n%)="" � �(n%=lim% � answer$(0,n%)="0") � flg%=0
E��
E�	=flg%
E�
E�
E�� �correct
E�� n%,flg%,remL%
F*� DivType% � remL%=layerlim% � remL%=1
F
� n%=0 � layerlim%
F) � digans%(n%)<>answer%(n%) � flg%=-1
F�
F(*� remainder%<>answer%(remL%) � flg%=-1
F2
=(flg%=0)
F<
FF
FP� �add_results
FZ+� newR%=1 � try%=1 � �results_next_name
Fd� try%=1 � �results_sum
Fn
Fx� decimal%(NameNo%) �
F�$ sum$=�insert_point(�digans%(0))
F��
F� sum$=�digans%(0)
F�0 � remainder%>0 � sum$=sum$+"R"+� remainder%
F��
F�
F�sum$=sum$+�8-�sum$," ")
F�3� newR%=0 � Rptr%=�add_string(Rptr%," "+sum$,0)
F�
F�*� estimate%(NameNo%)=1 � correct%=-1 �
F�I � decimal%(NameNo%) � sum$=�insert_point(� EstVal%) � sum$=� EstVal%
F� sum$="Est "+sum$
F�4 � newR%=0 � Rptr%=�add_string(Rptr%," "+sum$,0)
G�
G�
G
G"
G,� �check_sum
G6(� Mcnt%,remL%,Correct%:message$()=""
G@timeup%=-2*(timeup%=1)
GJ-�work_area_origin(handle%(game%),ox%,oy%)
GT9correct%=(�correct=-1 � �sum_filled=-1):nextcheck%=-1
G^Correct%=correct%
Gh>CorrectAns% -=(correct%=-1 � force5%=0):try% -=(force5%=0)
Gr2� saveR%(NameNo%)=1 � force5%=0 � �add_results
G|
G�Xflg%=�update_window(handle%(game%),�digx(0,-1),Ypos%(10),�digx(0,-5)+29,Ypos%(1)+58)
G�ȕ flg%
G�
 �mark
G�) ș"Wimp_GetRectangle",,block% � flg%
G��
G�
G�~� (force%(NameNo%)=1 � force5%=-1) � try%>=tries%(NameNo%) � (correct%=0 � force5%=-1) � �force_right_ans:� force5%=-1 � �
G�
G�H� estimate%(NameNo%)=1 � correct%=-1 � force5%=0 � �estimate_message
G�
G�+� correct%=-1 � try%>=tries%(NameNo%) �
G� � Next question
G�7 � next%(NameNo%) � �shade_icon(handle%(game%),5,0)
H% � n%=0 � 2:�set_top_icon(n%,0):�
H^ � printer%(NameNo%)=1 � driver%=-1 � (correct%=0 � force5%=1) � Psave%=0 � �save_sum("S")
H
H& quest% +=1
H0 � correct%=0 � try%>=tries%(NameNo%) � force5%<>1 � message$(0)="     No more tries.":�font_to_screen:�message_sprite_back
H: � next%(NameNo%)=0 �
HD  �pause(200):force5%=0
HNI  � auto%(NameNo%)=1 � ownsum%(NameNo%)=0 � �new_auto_level(correct%)
HX#  � quest%<no_quest%(NameNo%) �
Hb;   � ownsum%(NameNo%)=0 � �set_sum � �set_up_sum_window
Hl  �
Hv   �game_end
H�  �
H� �
H�4 marked%=(next%(NameNo%)=1 � ownsum%(NameNo%)=1)
H��
H�B � next%(NameNo%)=1 � try%=1 � �shade_icon(handle%(game%),5,0)
H�`� DivType%=1 � nextdig%=anslim%(layerlim%)+1 � layer%=layerlim% � DivType%=0 � nextdig%=-1 �
H�
H�  � DivType%=1 �
H�:  nexterr%=anslim%(0)::nexterrL%=0:Lcurr2%=0:Ltype2%=0
H�  �
H�   nexterr%=anslim%(0)+1
H�  �
H�  �find_error
I �
I
I � tries%(NameNo%)>1 �
I W  � try%<tries%(NameNo%)-1 � message$(0)="Try again." � message$(0)="One more try."
I*%  message$(0)="     "+message$(0)
I4  �font_to_screen
I>  �message_sprite_back
IH �
IR �pause(200)
I\l ș"Wimp_ForceRedraw",handle%(game%),�digx(0,0)+80,Ypos%(10),�digx(0,-5)+29,Ypos%(1)+58:� remove crosses
If�
IpE� autohelp%(NameNo%)=1 � force5%=0 � �change_help_level(Correct%)
Iz`nextmess%=-3*(Helplev%=5 � mode%(NameNo%)=1 � force5%=0 � try%<tries%(NameNo%) � correct%=0)
I��
I�
I�
I�� �force_right_ans
I�� force5%=0 �
I� �pause(300)
I�3 � autohelp%(NameNo%)=1 � �change_help_level(0)
I� Helplev%=5:force5%=-1
I�
 �set_sum
I��
I�( Helplev%=Hlevel%(NameNo%):force5%=1
I��
I��
J
J
J� �estimate_message
J$� est:est=EstVal%
J.%� decimal%(NameNo%) � est=est/100
J8&message$(0)="You estimated "+� est
JB�font_to_screen
JL�message_sprite_back
JV�
J`
Jj
Jt� �new_auto_level(correct%)
J~*� level%,Lrange%,Hrange%:notsavedO%=-1
J�4level%=Dlevel%(NameNo%):Hrange%=7:numRW%=AnumRW%
J�
Lrange%=1
J�
J�� correct% �
J� � numRW%>=0 � numRW% +=1
J� � numRW%<0 � numRW%=1
J�E � newlevR%(NameNo%)<=numRW% � level% -=(level%<Hrange%):numRW%=0
J��
J� � numRW%<=0 � numRW% -=1
J� � numRW%>0 � numRW%=-1
J�E � newlevW%(NameNo%)>=numRW% � level% +=(level%>Lrange%):numRW%=0
J��
K
K
<Dlevel%(NameNo%)=level%:$level_buffD%=� Dlevel%(NameNo%)
KAnumRW%=numRW%
K�reset_icon(Chandle%,5)
K(�set_division_type(NameNo%)
K2�
K<
KF
KP"� �change_help_level(correct%)
KZ� correct% �
Kd< Hlevel%(NameNo%) +=(Hlevel%(NameNo%)>MHlevel%(NameNo%))
Kn�
Kx, Hlevel%(NameNo%) -=(Hlevel%(NameNo%)<5)
K�N � try%<tries%(NameNo%) � game%>0 � �change_help_display(Hlevel%(NameNo%))
K��
K�Helplev%=Hlevel%(NameNo%)
K�$Hbuff%=� Helplev%
K��reset_icon(Chandle%,31)
K��
K�
K�
K�!� �change_help_display(help%)
K�5� help%<4 � Helplev%>=4 � help%>=4 � Helplev%<4 �
K�% �digit_redraw(layer%,nextdig%,0)
K�& �digit_redraw(layer%,nextdig%,-1)
K��
L8� �window_open(Chandle%)=0 � nextmess%=-(Helplev%=5)
Lu� help%=5 � Helplev%<5 � message$()="":ș"Wimp_ForceRedraw",handle%(game%),�digx(0,-3),Ypos%(10),1276,Ypos%(1)+58
L�
L"
L,
L6� �show_score(when$)
L@#� off%,to_go%:off%=-(when$="E")
LJstart%=off%
LT
L^"�delete_icon(SChandle%,9,off%)
Lh%�delete_icon(SChandle%,10,1-off%)
Lr%�delete_icon(SChandle%,11,1-off%)
L|%�delete_icon(SChandle%,12,1-off%)
L�L�shade_icon(SChandle%,11,(printer%(NameNo%)=0 � driver%=0 � enprint%=0))
L�
L�$SCRbuff%=� CorrectAns%
L�$SCQbuff%=� quest%
L�$$SCWbuff%=� (quest%-CorrectAns%)
L�($Snamebuff%="Name : "+name$(NameNo%)
L�
L�� when$="E" �
L�< $SCtbuff%="Time limit : "+� timelim%(NameNo%)+" minute"
L�5 � timelim%(NameNo%)<>1 � $SCtbuff%=$SCtbuff%+"s"
L��
L�: to_go%=(6000*timelim%(NameNo%)-�+sesstime%+3000)/6000
L�- $SCtbuff%="You have "+� to_go%+" minute"
M5 � timelim%(NameNo%)<>1 � $SCtbuff%=$SCtbuff%+"s"
M" $SCtbuff%=$SCtbuff%+" to go."
M�
M&7� Notimer%(NameNo%) � $SCtbuff%="Time limit : None"
M0+SChandle%=�centre_window(SChandle%,"Y")
M:�
MD
MN
MX� �mark
Mb� sp$,tens%,x%,y%,Layer%,p%
Ml.� DivType%=1 � Layer%=layerlim% � Layer%=1
Mv6� answer%(Layer%)=0 � p%=0 � p%=� �answer%(Layer%)
M�-x2%=�digx(0,0)+80:x1%=�digx(0,-(1+p%))+80
M�
M�,� correct%=-1 � sp$="tick" � sp$="cross"
M�Hș"OS_SpriteOp",&134,sarea%,sp$,ox%+x1%,oy%+Ypos%(1),8,scale%,trans%
M�
M�� correct%=0 � DivType%=1 �
M� � Layer%=1 � layerlim%
MƁ  � answer%(Layer%)<>digans%(Layer%) � ș"OS_SpriteOp",&134,sarea%,"smallcross",ox%+x2%,oy%+�layerY(Layer%,0),8,scale%,trans%
M� �
M��
M��
M�
M�
N� �input_box(dig%)
N� x%,h%,Layer%,start%
NA� rubdig%<>-1 � dig%=rubdig%:Layer%=rublayer% � Layer%=layer%
N 1� dig%>anslim%(Layer%) � Layer%=layerlim% � �
N*-�work_area_origin(handle%(game%),ox%,oy%)
N4ș"Wimp_SetColour",11
N>*� carry%=0 � Helplev%<4 � rubdig%>-1 �
NH � dig%<>-1 �
NR  x%=�digx(dig%,0)+8
N\-  ȓ ox%+x%,oy%+�layerY(Layer%,0)+8,42,42
Nf �
Np�
Nz  x%=�digx(dig%,0)-8
N�  y%=�layerY(Layer%,-1)+28
N�  ȓ ox%+x%,oy%+y%,22,26
N��
N��
N�
N�
N�� �layers(level%,� reject%)
N�$� layer%,d%,left%,num%:reject%=0
N�
N�answer%(0)=num1%/num2%
N�
N�d%=4:layer%=1:left%=num1%
N��
O �
O  num%=left% � 10^d%
O  � num%<num2% � d% -=1
O$ � num%>=num2%
O.
O8 � DivType%=1 �
OB
OL  � layer%>1 �
OV?   answer%(layer%)=num%*10^d%:Lshift%(layer%)=d%:layer% +=1
O`  �
Oj
Ot0  answer%(layer%)=num2%*(num% � num2%)*10^d%
O~  left% -=answer%(layer%)
O�#  Lshift%(layer%)=d%:layer% +=1
O�
O� �
O�/  left% -=num2%*(num% � num2%)*10^d%:d% -=1
O�'  � d%>-1 car_dig%(d%)=num% � num2%
O�  layer%=0
O� �
O�� left%<num2% � layer%=8
O�
O�,� layer%=8 � left%>=num2% � reject%=-1:�
O�
O�� DivType%=1 �
P- Lshift%(layer%)=d%:answer%(layer%)=left%
P
�
P answer%(1)=left%
P�
P(layerlim%=layer%
P2�answer_limits(layerlim%)
P<0� level%=1 � carry%=(car_dig%(anslim%(0))>0)
PFLshift%(0)=Lshift%(1)
PP
PZ� n%=0 � layerlim%
Pd& �digits(answer%(n%),answer$(),n%)
Pn�
Px
P��rem_digits
P�Lshift%(layerlim%)=0
P��layer_to_ans
P��leading_zeros
P��
P�
P�
P�� �layer_to_ans
P�� x%,y%
P�x%=Lshift%(1):y%=0
P��
P�
 y%+=2
P� �
Q  x% +=(x%>0)
Q  layerOn%(x%)=y%
Q � x%=Lshift%(y%)
Q"� y%=layerlim% � x%=0
Q,�
Q6
Q@
QJ� �answer_limits(lim%)
QT� layer%
Q^� layer%=0 � lim%
Qh3 anslim%(layer%)=�answer_limit(answer%(layer%))
QrH � anslim%(layer%)<Lshift%(layer%) � anslim%(layer%)=Lshift%(layer%)
Q|�
Q��
Q�
Q�
Q�� �leading_zeros
Q�
� x1%,x2%
Q�+x1%=�answer_limit(num1%):x2%=anslim%(0)
Q�� x2%=x1% � �
Q�
Q�� x%=x2%+1 � x1%
Q� done$(0,x%)="d"
Q��
Q��
Q�
R
R� �answer_limit(ans%)
R� ans$,len%
R&ans$=� ans%:len%=� ans$-1
R0	=len%
R:
RD
RN� �quest_limit
RX
� n1$,n2$
Rb#n1%=� � num1%-1:n2%=� � num2%-1
Rl� n1%>n2% � =n1% � =n2%
Rv
R�
R�� �message_div(dig%,Layer%)
R�� dig%<0 � �
R�L� DivType%=1 � �message_div_long(dig%,Layer%) � �message_div_short(dig%)
R��
R�
R�
R�� �message_div_short(dig%)
R�� num$,car$
R�� carry%=0 �
R�b � �carry$(0,dig%)<>car_dig%(dig%) � message$(1)="You need to divide " � message$(1)="Divide "
R� num$=�message_short(dig%)
R�0 message$(1)=message$(1)+num$+" by "+� num2%
S�
Sk � answer$(0,dig%+1)<>digans$(0,dig%+1) � message$(1)="You need to multiply " � message$(1)="Multiply "
S  num$=�message_short(dig%+1)
S @ message$(1)=message$(1)+answer$(0,dig%+1)+" by "+�num2%+"."
S*1 message$(2)="Subtract result from "+num$+"."
S4�
S>�
SH
SR
S\� �message_short(dig%)
Sf� car$,num$
Sp� car_dig%(dig%) �
Sz car$=� car_dig%(dig%)
S� num$=car$+dig1$(dig%)
S��
S�e � � dig1$(dig%+1)<num2% � car_dig%(dig%+1)=0 � num$=dig1$(dig%+1)+dig1$(dig%) � num$=dig1$(dig%)
S��
S�	=num$
S�
S�
S�$� �message_div_long(dig%,Layer%)
S�"� Ltype%,ans%(),pos%:� ans%(8)
S�pos%=layerOn%(dig%)
S�6� n%=1 � 8:ans%(n%)=answer%(n%) � 10^Lshift%(n%):�
S�!ans%(0)=num1% � 10^Lshift%(1)
S�
T� Layer%=0 �
Te � ans%(pos%)<>digans%(pos%) � pos%>0 � message$(1)="You need to divide " � message$(1)="Divide "
T> � dig%>Lshift%(pos%) � ans%(pos%)=answer%(pos%) � 10^dig%
T$: message$(1)=message$(1)+�ans%(pos%)+" by "+�num2%+"."
T.�
T8� Layer%=0 � �
TB
TLLtype%=-(Layer% � 2=1)
TV� Ltype%=1 �
T`y � answer$(0,Lshift%(pos%))<>digans$(0,Lshift%(pos%)) � message$(1)="You need to multiply " � message$(1)="Multiply "
TjG message$(1)=message$(1)+�num2%+" by "+answer$(0,Lshift%(pos%))+"."
Tt�
T~  � dig%>=Lshift%(Layer%-1) �
T��  � answer%(Layer%-1)<>digans%(Layer%-1) � answer%(Layer%-2)<>digans%(Layer%-2) � Layer%>2 � message$(1)="You need to subtract " � message$(1)="Subtract "
T�J  message$(1)=message$(1)+�ans%(Layer%-1)+" from "+�ans%(Layer%-2)+"."
T� �
T��
T��
T�
T�
T�� �message(source$)
T�&� dig%,c%,x%,Y%,flg%,Layer%,place%
T�^� rubdig%<>-1 � dig%=rubdig%:Layer%=rublayer%:c%=0 � dig%=nextdig%:c%=carry%:Layer%=layer%
T�q� (DivType%=0 � nextdig%=-1 � DivType%=1 � nextdig%=anslim%(layerlim%)+1 � Layer%=layerlim%) � rubdig%=-1 � �
T�message$()=""
U.� Helplev%=5 � source$="pl" � source$="pr"
U
�remove_message
U
UȎ source$ �
U($ � "?","pr":place%=-(Helplev%>0)
U26          � Helplev%>1 � �mess_column(dig%,Layer%)
U<7          � Helplev%>=4 � �message_div(dig%,Layer%)
UF4 � "pl":� Helplev%>2 � �mess_column(dig%,Layer%)
UP& � "ck":�wrong_number(dig%,Layer%)
UZ�
Ud
Un�font_to_screen
Ux�message_sprite_back
U��
U�
U�
U� � �wrong_number(dig%,Layer%)
U�$message$(0)="No; that's not it."
U��message_div(dig%,Layer%)
U��
U�
U�
U�� �mess_column(dig%,Layer%)
U�� var$,op$,Ltype%
U�Ltype%=-(Layer% � 2=1)
U�2� dig%<0 � message$(0)="Find the remainder.":�
V
V�column_name
V� DivType%=0 �
V"< � carry%=0 � message$(0)="Divide" � message$(0)="Carry"
V,% message$(0)=message$(0)+" next."
V6�
V@ � Ltype%=0 � Layer%>0 �
VJ"  message$(0)="Subtract next."
VT �
V^0  � Layer%>0 � op$="Multiply" � op$="Divide"
Vh  message$(0)=op$+" next. "
Vr �
V|� � Layer%>0 � � dig%<Lshift%(Layer%-1) � dig%>=Lshift%(Layer%) � Ltype%=0 � Layer%>0 � message$(0)="Bring down the next figure."
V��
V��
V�
V�
V�� �column_name
V�� decimal%(NameNo%) �
V�@ dig_name$()="hundredths","tenths","units","tens","hundreds"
V��
V�F dig_name$()="units","tens","hundreds","thousands","ten thousands"
V��
V��
V�
V�
W� �remove_message
WMflg%=0:message$()=""
WT� game% � ș"Wimp_ForceRedraw",handle%(game%),�digx(0,-3),Ypos%(4),1276,Ypos%(1)
W&�
W0
W:
WD� �font_to_screen
WN� y%,Y%,n%,flg%,resp%:� �
WXt� � �:� �:resp%=�error_message("Fonts not seen, double click on directory !Fonts","MathsBook",1):message$()="":�
Wb
Wl!ș"Wimp_SetFontColours",,0,11
Wv0ș"Font_FindFont",,"Jarman",290,320 � Fmess%
W�ș"Font_SetFont",Fmess%
W�=ș"OS_SpriteOp",&13C,sarea%,"message",1 � r0%,r1%,r2%,r3%
W��message_sprite_lines
W�#ș"OS_SpriteOp",r0%,r1%,r2%,r3%
W�-�work_area_origin(handle%(game%),ox%,oy%)
W�
W�Jflg%=�update_window(handle%(game%),�digx(0,-3),Ypos%(4),1276,Ypos%(1))
W�ȕ flg%
W�O ș"OS_SpriteOp",&134,sarea%,"message",ox%+�digx(0,-3),oy%+Ypos%(4),0,-1,-1
W� y%=�layerY(0,-1)+58
W� � n%=0 � 2
W�
  y% -=58
W�6  ș"Font_Paint",,message$(n%),16,ox%+580,oy%+y%+4
X �
X) ș"Wimp_GetRectangle",,block% � flg%
X�
X � �
X*�
X4
X>
XH� �message_sprite_back
XR"� r0%,r1%,r2%,r3%:� �:Mflg%=-1
X\� � �:� �:�
Xf!ș"Wimp_SetFontColours",,0,11
Xpș"Font_SetFont",Fmess%
Xz=ș"OS_SpriteOp",&13C,sarea%,"message",1 � r0%,r1%,r2%,r3%
X��message_sprite_lines
X�
X�y%=174:� 58*2+26=142
X�� n%=0 � 2
X� y% -=58
X�+ ș"Font_Paint",,message$(n%),16,0,y%+4
X��
X�
X�'ș"OS_SpriteOp",r0%,r1%,r2%,r3%:�26
X�ș"Font_LoseFont",Fmess%
X�� �
X��
X�
Y
Y � �message_mode_independance
Y)� wOS%,hOS%,wP%,hP%:wOS%=696:hOS%=174
Y$$�os_to_pixels(wOS%,hOS%,wP%,hP%)
Y.5ș"OS_SpriteOp",&10F,sarea%,"message",1,wP%,hP%,�
Y8�
YB
YL
YV� �message_sprite_lines
Y`� r0%,r1%,r2%,r3%,x%,y%
Yjș"Wimp_SetColour",0
Ytȓ Ȑ 0,0,696,200
Y~ș"Wimp_SetColour",15
Y�
Y�Y%=Ypos%(4):� -26
Y�� x%=-580 � 696 � 58
Y� � x%,-904-Y%:� x%,-150-Y%
Y��
Y�� y%=-904 � -150 � 58
Y� � -580,y%-Y%:� 696,y%-Y%
Y��
Y��
Y�
Y�
Y�� �save_sum(source$)
Z� d%,resp%,Llim%,Elim%
Z
<� DivType%=1 � Llim%=layerlim%:Elim%=8 � Llim%=1:Elim%=1
Z:Pcount% +=1:Psave%=-1:Pdec%(Pcount%)=decimal%(NameNo%)
ZPlimQ%(Pcount%)=� � num1%-1
Z(
Z2+Ppos%(Pcount%+1)=Ppos%(Pcount%)+Llim%+3
Z<� Pcount%>0 � Pcolflg%=0 �
ZFB � Ppos%(Pcount%)+Llim%+2=25 � Ppos%(Pcount%+1)=25:Pcolflg%=-1
ZPZ � Ppos%(Pcount%)+Llim%+2>25 � Ppos%(Pcount%)=25:Ppos%(Pcount%+1)=Llim%+28:Pcolflg%=-1
ZZ�
Zd
Zn� d%=0 � 4
Zx! Pdig1$(Pcount%,d%)=dig1$(d%)
Z�* � d%<2 � Pdig2$(Pcount%,d%)=dig2$(d%)
Z��
Z�
Z�1� Ppos%(Pcount%+1)+Elim%+3>50 � source$="S" �
Z�F $Picbuff1%="Do you want incorrect":$Picbuff2%="sums printed out."
Z�A P2handle%=�relative_window(handle%(game%),P2handle%,900,406)
Z��
Z��
Z�
Z�
Z�� �print_out_sums
Z�&� start%,rej%,Elim%:start%=Pcount%
Z�$� DivType%=1 � Elim%=8 � Elim%=1
[car_dig%()=0
[3� Ppos%(Pcount%+1)+Elim%+3>50 � �sum_printout:�
[�
[" �
[,!  �make_div(Dlevel%(NameNo%))
[6  �digits(num1%,dig1$(),-1)
[@  �digits(num2%,dig2$(),-1)
[J  �layers(0,rej%)
[T
 � rej%=0
[^ �save_sum("P")
[h#� Ppos%(Pcount%)+layerlim%+3>50
[rPcount% -=1:�sum_printout
[|�
[�
[�
[�%� �set_up_printout(� ch%,height%)
[�� left%,top%
[�ș"Hourglass_On"
[�ch%=�("printer:")
[�)ș"PDriver_SelectJob",ch%,"print_job"
[�*ș"PDriver_PageSize" � ,,,left%,,,top%
[�8!Prect%=0:Prect%!4=height%:Prect%!8=1280:Prect%!12=0
[�;!Ptrans%=1<<16:Ptrans%!4=0:Ptrans%!8=0:Ptrans%!12=1<<16
[�0!Pplot%=left%+9000:Pplot%!4=top%+height%*400
[�?ș"PDriver_GiveRectangle",0,Prect%,Ptrans%,Pplot%,&FFFFFF00
[��
\
\
\� �end_printout(ch%)
\&ș"PDriver_EndJob",ch%
\0ș"Hourglass_Off"
\:	�#ch%
\D�
\N
\X
\b� �sum_printout
\l� flg%,ch%
\v� �
\�`� � �:� �:ș"PDriver_AbortJob",ch%:�#ch%:ș"Hourglass_Off":Pcolflg%=0:�error("Maths_task"):�
\�
\��set_up_printout(ch%,-1740)
\�ș"Font_SetFont",Fsum%
\�
\�,ș"PDriver_DrawPage",1,block%,0,0 � flg%
\�ȕ flg%
\� �printout_sum
\�, ș"PDriver_GetRectangle",,block% � flg%
\��
\��end_printout(ch%)
\�Pcolflg%=0
\�� �
]�
]
]
] $� �printdigx(x%,d%)=x%+75*(4-d%)
]*
]4� �sumY(pos%)
]>=-290-58*pos%
]H
]R!� �sumX(pos%)=77-675*(pos%>4)
]\
]f� �height(no%)
]p� no%>4 � no%=4
]z=-566-300*no%
]�
]�
]�� �printout_sum
]�O� x%,X1%,d%,symb%,symb$,colx%,limQ%,Y5%,Y4%,Y3%,Y2%,Y%,Y0%,sum%,pos%,shift%
]�%ș"ColourTrans_SetGCOL",&33333300
]�ș"Font_SetFont",Fsum%
]�
]�
� Grid
]�� x%=0 � 1276 � 58
]�) � x%,116*(x%>0 � x%<1276):� x%,-1740
]��
]�� y%=0 � -1740 � -58
]� ȓ Ȑ 0,y%-1,1276,1
^�
^ȓ Ȑ 0,-1738,1276,1
^
^$ș"ColourTrans_SetGCOL",0
^.1ș"ColourTrans_SetFontColours",,&FFFFFF00,0,6
^8/ș"Font_Paint",," "+name$(NameNo%),16,0,-58
^B,ș"Font_Paint",," "+$loadbuff%,16,0,-116
^L$ș"Font_Paint",,�date,16,900,-58
^V
^`� sum%=0 � Pcount%
^jS � Ppos%(sum%)>=25 � pos%=Ppos%(sum%)-25:shift%=638 � pos%=Ppos%(sum%):shift%=0
^t Y1%=�sumY(pos%):Y2%=Y1%-58
^~
^�0 len%=PlimQ%(sum%):x%=�digx(len%,0)-6+shift%
^� ȓ Ȑ x%,Y1%,58*(len%+1),4
^� ȓ Ȑ x%,Y2%,6,58
^�
^� � d%=0 � 4
^�>  x1%=�digx(d%,0)+shift%+12:x2%=�digx(d%,len%+1)+shift%+12
^�2  ș"Font_Paint",,Pdig1$(sum%,d%),16,x1%,Y2%+4
^�;  � d%<2 � ș"Font_Paint",,Pdig2$(sum%,d%),16,x2%,Y2%+4
^� �
^�
^� � Pdec%(sum%) �
^�  x%=�digx(1,0)-4+shift%
_&  ș"Font_Paint",,".",16,x%,Y1%+24
_
&  ș"Font_Paint",,".",16,x%,Y2%+24
_ �
_
_(K � (pos%=0 � Pdec%(sum%)<>Pdec%(sum%+(sum%>0))) � colname%(NameNo%)=1 �
_2  � Column names
_<`  � Pdec%(sum%)=0 � colname$()="u","t","h","th","t th" � colname$()="/100","/10","u","t","h"
_F  � d%=0 � 4
_Pe   � colname$(d%)="/100" � colname$(d%)="/10" � ș"Font_SetFont",Fcol2% � ș"Font_SetFont",Fcol1%
_Z:   colx%=�digx(d%,0)+shift%+(58-14*� colname$(d%))/2+2
_dK   � colname%(NameNo%) � ș"Font_Paint",,colname$(d%),16,colx%,Y1%+58+8
_n  �
_x  ș"Font_SetFont",Fsum%
_� �
_�
_��
_��
_�
_�
_�� �set_fonts
_�8ș"Font_FindFont",,"Homerton.Medium",324,324 � Fsum%
_�9ș"Font_FindFont",,"Homerton.Medium",220,210 � Fcol1%
_�9ș"Font_FindFont",,"Homerton.Medium",160,192 � Fcol2%
_��
_�
_�
`� �lose_fonts
`� SYS"Font_LoseFont",Fsum%
`� SYS"Font_LoseFont",Fcol1%
`"� SYS"Font_LoseFont",Fcol2%
`,�lose_icon_fonts(font%)
`6�
`@
`J
`T� �save_file(file$,Smopen%)
`^(� ch%,header$,resp%:� �:notsavedO%=0
`hT� � �:� �:resp%=�error_message(�$,"Maths_task",0):� �(�=67785 � �=67786) � �#ch%
`r� resp% � �
`|header$="groupD"
`�-$savebuff%=file$:�reset_icon(SVhandle%,1)
`�
`�ch%=� file$
`�-�#ch%,header$,autosaveR%,enprint%,screen%
`�
`�� n%=0 � Ncount%
`� �#ch%,name$(n%)
`�< �#ch%,Dlevel%(n%):�#ch%,MHlevel%(n%):�#ch%,decimal%(n%)
`�Z �#ch%,auto%(n%):�#ch%,autohelp%(n%):�#ch%,force%(n%):�#ch%,mode%(n%):�#ch%,tries%(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%)
`�M �#ch%,newlevR%(n%):�#ch%,-newlevW%(n%):�#ch%,ownsum%(n%):�#ch%,Long%(n%)
`��
a	�#ch%
a'� Smopen% � �open_window(Smhandle%)
a� �
a&�
a0
a:
aD� �select_savebox
aNȎ block%!16 �
aX2 � 0:� block%!8=64 � �drag_icon(SVhandle%,0,5)
ab; � 2:�save_file($savebuff%,-1):�close_window(SVhandle%)
al�
av�
a�
a�
a�� �select_save_text
a�Ȏ block%!16 �
a�3 � 0:� block%!8=64 � �drag_icon(SVhandle2%,0,5)
a�H � 2:�results_text_file($savetextbuff%,-1):�close_window(SVhandle2%)
a��
a��
a�
a�
a�� �set_option_variables
a�� n%,error%
a�7NameNo%=0:Ncount%=0:caretx%=0:create%=-2:name$()=""
b1notsavedO%=0:autosaveR%=0:screen%=0:start%=-1
b$savebuff%="Default"
b+�load_part("<obey$Dir>.default",error%)
b (�single_tick(menu%,6,0):�set_windows
b*�set_config_title(0)
b4�set_preferences(0)
b>�clear_windows
bH�
bR
b\
bf� �y_levels
bp� y%
bz� y%=1 � 10
b� Ypos%(y%)=-208-58*y%
b��
b�Ypos%(0)=Ypos%(1)+70
b��
b�
b�
b� � �load_part(file$,� error%)
b�� ch%:� �:error%=0
b�L� �:� �:�#ch%:$icbuff%="Wrong file.":�open_window(Ichandle%):error%=-1:�
b�ch%=� file$
b�-�#ch%,header$,autosaveR%,enprint%,screen%
b�Z� header$<>"groupD" � �#ch%:$icbuff%="Wrong file.":�open_window(Ichandle%):error%=-1:�
b�Ncount%=-1
c�
c Ncount% +=1
c �#ch%,name$(Ncount%)
c$n Dlevel%(Ncount%)=�#ch%:MHlevel%(Ncount%)=�#ch%:Hlevel%(Ncount%)=MHlevel%(Ncount%):decimal%(Ncount%)=�#ch%
c.s auto%(Ncount%)=�#ch%:autohelp%(Ncount%)=�#ch%:force%(Ncount%)=�#ch%:mode%(Ncount%)=�#ch%:tries%(Ncount%)=�#ch%
c8� 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%
cBJ estimate%(Ncount%)=�#ch%:saveR%(Ncount%)=�#ch%:speech%(Ncount%)=�#ch%
cLa newlevR%(Ncount%)=�#ch%:newlevW%(Ncount%)=-�#ch%:ownsum%(Ncount%)=�#ch%:Long%(Ncount%)=�#ch%
cV� �#ch%=-1
c`	�#ch%
cj� �
ct�
c~
c�
c�� �load_file(file$)
c�E� ch%,header$,i$,error%,default%:start%=-1:NameNo%=0:notsavedO%=0
c�;default%=(�getleaf(file$,0)="default" � $loadbuff%<>"")
c�/start%=(default%=0):name$()="":nextfile$=""
c��reset_icon(SVhandle%,1)
c�
c��load_part(file$,error%)
c�A� error% � �shade_item(rmenu%,3,-1):�shade_item(menu%,4,-1):�
c�
c�create%=(default%=-1)
c�1�shade_item(menu%,2,0):�shade_item(menu%,4,0)
d%�single_tick(rmenu%,4,autosaveR%)
d
"�single_tick(menu%,6,enprint%)
d!�single_tick(menu%,7,screen%)
d&�shade_item(menu%,1,-(default%=0))
d(�reset_results
d2�set_windows
d<�clear_windows
dF
dP+$icbuff%=�getleaf(file$,0)+" is loaded"
dZ*� default%=0 � �open_window(Ichandle%)
dd�
dn
dx
d�� �reset_results
d�1Rcnt%=2:Rcnt2%=2:Rptr%=0:notsavedR%=0:newR%=1
d�$� n%=0 � 999 � 4:results%!n%=0:�
d� file$=�getleaf($savebuff%,0)
d�date$=��$,5,11)
d�3st$=" Group file name: "+file$+"  Date: "+�date
d�"Rptr%=�add_string(Rptr%,st$,0)
d�)� n%=0 � 3:�shade_item(rmenu%,n%,1):�
d�%�single_tick(rmenu%,4,autosaveR%)
d��
d�
d�
d�� �date=��$,5,11)
e
e!� �add_string(ptr%,st$,down%)
e
� len%
e"!� down% � ?(results%+ptr%)=10
e,%� down%=2 � ?(results%+ptr%+1)=10
e6)$(results%+ptr%+down%)=st$:len%=� st$
e@)ptr% +=len%+down%:?(results%+ptr%)=32
eJ	=ptr%
eT
e^
eh� �clear_windows
er-� game%>0 � �close_window(handle%(game%))
e|�close_window(NGhandle%)
e��close_window(SChandle%)
e��close_window(Dhandle%)
e��close_window(Drhandle%)
e��
e�
e�
e�� �set_preferences(no%)
e�� n%
e��set_diff_levels(no%)
e�2$Hbuff%=�Hlevel%(no%):�reset_icon(Chandle%,31)
e�4$MHbuff%=�MHlevel%(no%):�reset_icon(Chandle%,37)
e�'� force5%=0 � Helplev%=Hlevel%(no%)
e�,�select_icon(Chandle%,50,autohelp%(no%))
f�set_autohelp(no%)
f,�select_icon(Chandle%,29,(mode%(no%)=1))
f,�select_icon(Chandle%,28,(mode%(no%)=0))
f&�adjust_for_mode(no%)
f0)�select_icon(Chandle%,34,force%(no%))
f:(�select_icon(Chandle%,49,auto%(no%))
fD�set_auto(no%)
fN
fX5$Qbuff%=� no_quest%(no%):�reset_icon(Chandle%,16)
fb2$Tbuff%=� tries%(no%):�reset_icon(Chandle%,19)
fl
fv5$Tmbuff%=� timelim%(no%):�reset_icon(Chandle%,22)
f�+�select_icon(Chandle%,25,Notimer%(no%))
f�,�shade_3icons(Chandle%,22,Notimer%(no%))
f�
f�3$longbuff%=� Long%(no%):�reset_icon(Chandle%,2)
f�
f�E�select_icon(Chandle%,42,calc%(no%)):�set_top_icon(3,-calc%(no%))
f�+�select_icon(Chandle%,43,printer%(no%))
f�G�select_icon(Chandle%,44,score%(no%)):�set_top_icon(4,-score%(no%))
f�(�select_icon(Chandle%,46,next%(no%))
f�E�select_icon(Chandle%,47,stop%(no%)):�set_top_icon(6,-stop%(no%))
f�+�select_icon(Chandle%,48,colname%(no%))
f�,�select_icon(Chandle%,45,estimate%(no%))
f�)�select_icon(Chandle%,61,saveR%(no%))
g+�select_icon(Chandle%,62,decimal%(no%))
g*�select_icon(Chandle%,67,speech%(no%))
g
g 7$levRbuff%=� newlevR%(no%):�reset_icon(Chandle%,53)
g*8$levWbuff%=� -newlevW%(no%):�reset_icon(Chandle%,59)
g4
g>�set_own_sum(no%)
gH�
gR
g\
gf� �set_own_sum(no%)
gp*�select_icon(Chandle%,63,ownsum%(no%))
gz>�shade_3icons(Chandle%,53,(ownsum%(no%)=1 � auto%(no%)=0))
g�>�shade_3icons(Chandle%,57,(ownsum%(no%)=1 � auto%(no%)=0))
g�.�shade_3icons(Chandle%,5,(ownsum%(no%)=1))
g�.�shade_3icons(Chandle%,2,(ownsum%(no%)=1))
g�)�shade_icon(Chandle%,49,ownsum%(no%))
g�� ownsum%(no%)=0 �
g� � game%=0 � start%=-1
g�P � game%>0 � � �window_open(handle%(game%))=0 � �open_window(handle%(game%))
g��
g��
g�
g�
g�� �allow_print_results
g�0� driver%=0 � � �ensure_Pdriver � driver%=-1
h@� n%=1 � 2:�shade_item(rmenu%,n%,�(driver%=-1 � Rcnt%>=4)):�
h�
h
h$
h.� �set_diff_levels(no%)
h88$level_buffD%=� Dlevel%(no%):�reset_icon(Chandle%,5)
hB�
hL
hV
h`� �set_division_type(no%)
hj(DivType%=-(Dlevel%(no%)>=Long%(no%))
ht�
h~
h�
h�� �set_top_icon(icon%,var%)
h�'�shade_icon(handle%(1),icon%,�var%)
h��
h�
h�
h�� �select_score
h�� icon%,r%:icon%=block%!16
h�>� icon%=9 � icon%=10 � icon%=12 � �close_window(SChandle%)
h�$� icon%=10 � �build_name_windowG
h� � icon%=11 � �print_out_sums
h��
i
i

i� �calcalator(icon%)
i
� flg%
i(D� CCprev%=-1 � icon%>10 � icon%<16 � CCop%=icon%:flg%=(icon%>11)
i2� flg% � �
i<� icon%<=10 �
iF# � CCop%=0 � CCsum=0:CCstart%=0
iP3 � icon%<10 � � CCnum$<8 � CCnum$=CCnum$+�icon%
iZ# � icon%=10 � CCnum$=CCnum$+"."
id CCnum=� CCnum$:CCprev%=0
in �calc_display(CCnum$,"1")
ix�
i�" CCnum$="":CCprev%=(icon%<>11)
i� � icon%=16 � CCop%=16
i� � CCstart%=0 �
i�  � CCop%=16 �
i�1   CCsum=0:CCop%=0:�calc_display(� CCsum,"2")
i�  �
i�*   CCop%=icon%:CCstart%=-1:CCsum=CCnum
i�  �
i� �
i�  Ȏ CCop% �
i�   � 12:CCsum +=CCnum
i�   � 13:CCsum -=CCnum
i�   � 14:CCsum=CCsum*CCnum
j6   � 15:� CCnum<>0 � CCsum=CCsum/CCnum � CCsum=1E9
j   � 16:CCsum=0
j  �
j"  � CCop%>=12 � CCop%<=15 �
j,   CCsum +=2E-8*� CCsum
j6   CCsum=� �� CCsum,8)
j@  �
jJ   �calc_display(� CCsum,"2")
jT3  � icon%>11 � icon%<16 � CCop%=icon% � CCop%=0
j^ �
jh�
jr�
j|
j�
j�!� �calc_display(var$,source$)
j�� � �var$<1E9 �
j�* � � �var$<1E-8 � � �var$>0 � var$="0"
j�* � �var$,"E") � var$=�remove_exp(var$)
j� var$=�var$,8)
j�K � �var$,1)="0" � �var$,".")>0 � source$="2" � var$=�remove_zeros(var$)
j� $CCbuff%=var$
j��
j�: � �var$>0 � $CCbuff%="Too big" � $CCbuff%="Too small"
j� CCsum%=0:icon%=16
j��
j��reset_icon(CChandle%,17)
k�
k
k
k&� �remove_exp(var$)
k0
� p%,sgn%
k:p%=� �var$,1):sgn%=� �var$
kDvar$=�var$,�var$-3)
kN"� sgn%<0 � var$=�var$,�var$-1)
kX3� �var$,2,1)="." � var$=�var$,1)+�var$,�var$-2)
kbvar$="."+�p%-1,"0")+var$
kl� sgn%<0 � var$="-"+var$
kv	=var$
k�
k�� �remove_zeros(var$)
k�ȕ �var$,1)="0"
k� var$=�var$,�var$-1)
k��
k�	=var$
k�
k�
k�� �keys_calc
k�� icon%:icon%=-1
k�char%=block%!24
k�,� char%>=48 � char%<=57 � icon%=char%-48
k�� !block%=CChandle% �
l Ȏ char% �
l  � 43:icon%=12
l  � 45:icon%=13
l   � 42:icon%=14
l*  � 47:icon%=15
l4!  � 35,67,99,127,&1B:icon%=16
l>  � 46:icon%=10
lH  � 13,61:icon%=11
lR �
l\�
lf@� icon%<>-1 � �calcalator(icon%) � ș"Wimp_ProcessKey",char%
lp�
lz
l�
l�� �build_name_windowG
l�� icon%,y%
l�4�delete_icon(NGhandle%,49,(create%<0)):� message
l�*�delete_icon(NGhandle%,54,(create%<0))
l�4�delete_icon(NGhandle%,46,(create%=0)):� message
l�4�delete_icon(NGhandle%,47,(create%=0)):� message
l�*�delete_icon(NGhandle%,50,(create%=0))
l�*�delete_icon(NGhandle%,51,(create%=0))
l�*�delete_icon(NGhandle%,52,(create%=0))
l�� Ncount% � �clear_spaces
l�NameNo%=-(Ncount%=0)
l�%�set_new_name_levels(Ncount%+1,0)
m� icon%=1 � 42
m$ �select_icon(NGhandle%,icon%,0)
m? �delete_icon(NGhandle%,icon%,(icon%>Ncount%-(Ncount%<42)))
m$�
m.D� Ncount%<42 � � Ncount%=0 � �select_icon(NGhandle%,Ncount%+1,1)
m8a� create% � $Ntitlebuff%=$loadbuff%+" editing screen" � $Ntitlebuff%=$loadbuff%+" name input"
mB*NGhandle%=�centre_window(NGhandle%,"")
mL�close_window(Chandle%)
mV=� Ncount%<42 � Ncount%=0 � �place_name_caret(Ncount%+1,0)
m`�
mj
mt
m~� �clear_spaces
m�� newpos%,oldpos%
m�newpos%=0:oldpos%=0
m��
m� newpos% +=1:oldpos% +=1
m�+ ȕ name$(oldpos%)="" � oldpos%<Ncount%
m�  oldpos% +=1
m� �
m� � name$(oldpos%)<>"" �
m�#  name$(newpos%)=name$(oldpos%)
m�E  Dlevel%(newpos%)=Dlevel%(oldpos%):Long%(newpos%)=Long%(oldpos%)
m�K  MHlevel%(newpos%)=MHlevel%(oldpos%):Hlevel%(newpos%)=Hlevel%(oldpos%)
m�C  tries%(newpos%)=tries%(oldpos%):mode%(newpos%)=mode%(oldpos%)
nC  force%(newpos%)=force%(oldpos%):auto%(newpos%)=auto%(oldpos%)
n
+  autohelp%(newpos%)=autohelp%(oldpos%)
nO  no_quest%(newpos%)=no_quest%(oldpos%):timelim%(newpos%)=timelim%(oldpos%)
nG  Notimer%(newpos%)=Notimer%(oldpos%):calc%(newpos%)=calc%(oldpos%)
n(C  score%(newpos%)=score%(oldpos%):next%(newpos%)=next%(oldpos%)
n2G  stop%(newpos%)=stop%(oldpos%):colname%(newpos%)=colname%(oldpos%)
n<+  estimate%(newpos%)=estimate%(oldpos%)
nFM  newlevR%(newpos%)=newlevR%(oldpos%):newlevW%(newpos%)=newlevW%(oldpos%)
nPI  saveR%(newpos%)=saveR%(oldpos%):decimal%(newpos%)=decimal%(oldpos%)
nZI  ownsum%(newpos%)=ownsum%(oldpos%):speech%(newpos%)=speech%(oldpos%)
nd �
nn  newpos% -=1
nx �
n�� oldpos%=Ncount%
n�'Ncount%=newpos%:name$(Ncount%+1)=""
n��
n�
n�
n�%� �place_name_caret(pos%,redraw%)
n�� y%
n�/caretx%=�caretx(pos%):y%=�nameposy(pos%)-28
n�8ș"Wimp_SetCaretPosition",NGhandle%,-1,caretx%,y%,32
n�"� redraw% � �redraw_name(pos%)
n��
n�
n�
o� �place_char_caret(pos%)
o� x%,y%
o.x%=�nameposx(pos%)-6:y%=�nameposy(pos%)-28
o"caretx%=�caretx(pos%)
o,8ș"Wimp_SetCaretPosition",NGhandle%,-1,caretx%,y%,32
o65ș"Wimp_ForceRedraw",NGhandle%,x%,y%,x%+298,y%+32
o@�
oJ
oT
o^� �redraw_name(pos%)
oh� x%,y%
or.x%=�nameposx(pos%)-6:y%=�nameposy(pos%)-32
o|5ș"Wimp_ForceRedraw",NGhandle%,x%,y%,x%+306,y%+44
o��
o�
o�
o�� �name_input_area(pos%)
o�.x%=�nameposx(pos%)-6:y%=�nameposy(pos%)-32
o�3ș"Wimp_SetColour",0:ȓ Ȑ ox%+x%,oy%+y%,304,40
o�0ș"Wimp_SetColour",7:ȓ ox%+x%,oy%+y%,304,40
o��
o�
o�
o�/� �nameposx(n%)=110-384*(n%>14)-384*(n%>28)
o�-� �caretx(n%)=�nameposx(n%)+16*�name$(n%)
o�6� �nameposy(n%)=-196-48*n%-672*(n%>14)-672*(n%>28)
p
p
p� �redraw_class_list
p&� x%,y%,n%
p0i� (create%=-1 � NameNo%=Ncount%+1) � �icon_selected(NGhandle%,NameNo%)=-1 � �name_input_area(NameNo%)
p:
pD� n%=1 � Ncount%+1
pN � n%<=42 �
pX'  x%=�nameposx(n%):y%=�nameposy(n%)
pb   � ox%+x%,oy%+y%:�name$(n%)
pl �
pv�
p�
p�� Ncount%<42 �
p�D � name$(Ncount%+1)="" � �icon_selected(NGhandle%,Ncount%+1)=0 �
p�5  x%=�nameposx(Ncount%+1):y%=�nameposy(Ncount%+1)
p�  ș"Wimp_SetColour",11
p�!  � ox%+x%,oy%+y%:� "I'm new"
p� �
p��
p��
p�
p�
p�� �keys_name(pos%)
p�.� ch%,valid%,len%,x%,y%,flg%:ch%=block%!24
q�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)
q� ch%=13 � flg%=�check_name
q� flg% � �
qi� pos%=Ncount%+1 � $DemIc%="can track up to 42 children.":Demhandle%=�centre_window(Demhandle%,"Y"):�
q *� valid%=0 � ș"Wimp_ProcessKey",ch%:�
q*� ch%=13 � Ncount%<42 �
q4 � create% �
q>  � pos%<Ncount%+1 �
qH%   �select_icon(NGhandle%,pos%,0)
qR'   �select_icon(NGhandle%,pos%+1,1)
q\#   block%!16=pos%+1:�edit_nameG
qf  �
qp0   � pos%=Ncount%+1 � name$(Ncount%+1)<>"" �
qz+    �new_name(-1):�redraw_name(Ncount%)
q�   �
q�  �
q� �
q�   block%!16=50:�select_nameG
q� �
q��
q�� ch%=13 � �
q�
q�'� (ch%<>127 � ch%<>8 � ch%<>&18C) �
q�! name$(pos%)=name$(pos%)+�ch%
q��
q� len%=� name$(pos%)-1
q�# name$(pos%)=�name$(pos%),len%)
r�
r
r�place_char_caret(pos%)
r$�
r.
r8
rB$� �set_new_name_levels(no%,no2%)
rL5Dlevel%(no%)=Dlevel%(no2%):Long%(no%)=Long%(no2%)
rV;MHlevel%(no%)=MHlevel%(no2%):Hlevel%(no%)=Hlevel%(no2%)
r`tries%(no%)=tries%(no2%)
rjimode%(no%)=mode%(no2%):force%(no%)=force%(no2%):auto%(no%)=auto%(no2%):autohelp%(no%)=autohelp%(no2%)
rt�no_quest%(no%)=no_quest%(no2%):timelim%(no%)=timelim%(no2%):Notimer%(no%)=Notimer%(no%):calc%(no%)=calc%(no2%):score%(no%)=score%(no2%):next%(no%)=next%(no2%):stop%(no%)=stop%(no2%):colname%(no%)=colname%(no2%)
r~�estimate%(no%)=estimate%(no2%):newlevR%(no%)=newlevR%(no2%):newlevW%(no%)=newlevW%(no2%):saveR%(no%)=saveR%(no2%):decimal%(no%)=decimal%(no2%):ownsum%(no%)=ownsum%(no2%):speech%(no%)=speech%(no2%)
r��set_preferences(no%)
r��
r�
r�
r�� �store_name_levels
r�-Dlevel%(43)=Dlevel%(0):Long%(43)=Long%(0)
r�3MHlevel%(43)=MHlevel%(0):Hlevel%(43)=Hlevel%(0)
r�tries%(43)=tries%(0)
r�Ymode%(43)=mode%(0):force%(43)=force%(0):auto%(43)=auto%(0):autohelp%(43)=autohelp%(0)
r�no_quest%(43)=no_quest%(0):timelim%(43)=timelim%(0):Notimer%(43)=Notimer%(0):calc%(43)=calc%(0):score%(43)=score%(0):next%(43)=next%(0):stop%(43)=stop%(0):colname%(43)=colname%(0)
r�estimate%(43)=estimate%(0):newlevR%(43)=newlevR%(0):newlevW%(43)=newlevW%(0):saveR%(43)=saveR%(0):decimal%(43)=decimal%(0):ownsum%(43)=ownsum%(0):speech%(43)=speech%(0)
r��
s
s

s� �default_options
s%�select_icon(NGhandle%,NameNo%,0)
s('ș"Wimp_SetCaretPosition",NGhandle%
s2?� NameNo% � ș"Wimp_ForceRedraw",NGhandle%,0,-976,1176,-170
s<
NameNo%=0
sF�set_config_title(0)
sP�set_preferences(0)
sZ�open_window(Chandle%)
sd�
sn
sx
s�� �new_name(redraw%)
s�4� Ncount%<41 � �select_icon(NGhandle%,NameNo%,0)
s�7Ncount% -=(Ncount%<42):NameNo%=Ncount%-(Ncount%<42)
s�� Ncount%=42 � �
s�'�delete_icon(NGhandle%,Ncount%+1,0)
s�'�select_icon(NGhandle%,Ncount%+1,1)
s�%�set_new_name_levels(Ncount%+1,0)
s�/� redraw% � �place_name_caret(Ncount%+1,-1)
s� �set_config_title(Ncount%+1)
s��
s�
s�
s�� �set_config_title(no%)
t
� no%=0 �
t? $titlebuffC%="Group '"+�getleaf($savebuff%,0)+"' defaults"
t�
t"' $titlebuffC%="Options "+name$(no%)
t,�
t6%�delete_icon(Chandle%,64,(no%>0))
t@%�delete_icon(Chandle%,66,(no%>0))
tJ%�delete_icon(Chandle%,68,(no%>0))
tT%�delete_icon(Chandle%,65,(no%=0))
t^%�delete_icon(Chandle%,51,(no%=0))
th&�shade_icon(Chandle%,65,(game%>0))
tr)� no%=0 � �store_name_levels:alter%=0
t|� �window_open(Chandle%) �
t� �close_window(Chandle%)
t� �open_window(Chandle%)
t��
t��
t�
t�
t�� �edit_nameG
t�� invalid%,icon%,flg%
t�!icon%=block%!16:notsavedO%=-1
t�9� icon%>=1 � icon%<=42 � icon%>=50 � flg%=�check_name
t�� flg%=-1 � icon%>=50 � �
t�h� icon%=Ncount%+1 � $DemIc%="can track up to 42 children.":Demhandle%=�centre_window(Demhandle%,"Y")
t�
t�� icon%>=1 � icon%<=42 �
u< � NameNo%=Ncount%+1 � name$(NameNo%)<>"" � Ncount%<41 �
u  � Ncount% +=1
u.  � PROCdelete_icon(NGhandle%,Ncount%+1,0)
u&,  � PROCset_new_name_levels(Ncount%+1,0)
u0"  � PROCredraw_name(Ncount%+1)
u: �
uD
uN& � NameNo% � �redraw_name(NameNo%)
uX0 NameNo%=icon%:�place_name_caret(NameNo%,-1)
ub �set_config_title(NameNo%)
ulV � NameNo%=Ncount%+1 � �set_new_name_levels(NameNo%,0) � �set_preferences(NameNo%)
uv�
u�
u�Ȏ icon% �
u�3 � -1:� NameNo% � �place_name_caret(NameNo%,-1)
u�L � 50:� IF Ncount%<42 THEN IF name$(Ncount%+1)<>"" THEN PROCnew_name(-1)
u�4         � notsavedO% � �save_file($savebuff%,0)
u�=         �close_window(NGhandle%):�close_window(Chandle%)
u�9         create%=0:NameNo%=0:�close_window(Edhandle%)
u� � 51:�default_options
u� � 52:� NameNo% �
u�B          �set_config_title(NameNo%):�set_preferences(NameNo%)
u�$          �open_window(Chandle%)
u�         �
u��
v%�shade_item(menu%,1,-(NameNo%=0))
v�
v
v 
v*� �check_name
v4� n%,flg%:n%=0:flg%=0
v>�
vH n% +=1
vRL � name$(n%)=name$(NameNo%) � n%<>NameNo% � name$(NameNo%)<>"" � flg%=-1
v\� flg%=-1 � n%=Ncount%+1
vf
vp� flg% �
vz name$(NameNo%)=""
v�" �place_name_caret(NameNo%,-1)
v�, Edhandle%=�centre_window(Edhandle%,"Y")
v��
v� �close_window(Edhandle%)
v��
v�	=flg%
v�
v�
v�� �results_next_name
v�8� n%,lev$,Mlev$,Dlev$,help$,st$:Rcnt% +=2:Rcnt2% +=2
v�
v�3� mode%(NameNo%) � lev$=�Helplev% � lev$="None"
v�@� ownsum%(NameNo%)=0 � Dlev$=� Dlevel%(NameNo%) � Dlev$=" -"
wD� autohelp%(NameNo%) � help$=" Min help:" � help$=" Help level:"
w
wHst$=" Name: "+name$(NameNo%)+"  Start levels: div:"+Dlev$+help$+lev$
w$"Rptr%=�add_string(Rptr%,st$,2)
w.�shade_item(rmenu%,0,0)
w8�shade_item(rmenu%,3,0)
wB�
wL
wV
w`� �select_nameG
wj/� invalid%,icon%,flg%,flg2%:icon%=block%!16
wtflg2%=�check_name
w~� flg2%=-1 � icon%=54 � �
w�
w�� icon%>=1 � icon%<=42 �
w�0 � NameNo%=Ncount%+1 � �redraw_name(NameNo%)
w�k � NameNo%=Ncount%+1 � $DemIc%="can track up to 42 children.":Demhandle%=�centre_window(Demhandle%,"Y")
w� NameNo%=icon%:flg%=-1
w� �set_config_title(NameNo%)
w� �set_preferences(NameNo%)
w� � icon%=Ncount%+1 �
w�#  �place_name_caret(NameNo%,-1)
w� �
w�)  ș"Wimp_SetCaretPosition",NGhandle%
w� �
w�� � Rptr%+90+45*no_quest%(NameNo%)>44000 � saveR%(NameNo%)=1 � resp%=�error_message("The results file is now full, please tell your teacher","MathsBook",17)
x�
x
%�shade_item(menu%,1,-(NameNo%=0))
x� flg% � �
x
x(h� Ncount%<42 � � icon%=-1 � �icon_selected(NGhandle%,Ncount%+1)=-1 � �place_name_caret(NameNo%,-1):�
x2Y� Ncount%<42 � � icon%=54 � (NameNo%=Ncount%+1 � NameNo%=0) � name$(Ncount%+1)="" � �
x<� icon%=54 �
xFe � IF NameNo%=Ncount%+1 AND name$(NameNo%)<>"" THEN PROCnew_name(0):NameNo%=Ncount%:notsavedO%=-1
xP, $titlebuff1%="Division "+name$(NameNo%)
xZ+ $titlebuffC%="Options "+name$(NameNo%)
xd
 start%=0
xn# � ownsum%(NameNo%)=0 � game%=1
xx �shade_item(menu%,2,1)
x� � saveR%(NameNo%) �
x�=  � Rptr%+90+45*no_quest%(NameNo%)>44000 � �reset_results
x� �
x�6 �close_window(NGhandle%):�close_window(Edhandle%)
x�& � printer%(NameNo%)=0 � driver%=0
x� �set_top_icon(7,driver%)
x�8 � ownsum%(NameNo%)=0 � �open_window(handle%(game%))
x�  �set_division_type(NameNo%)
x�& �reset_game:newR%=saveR%(NameNo%)
x��
x��
x�
x�
y� �printout_results(all%)
y� flg%,height%,ch%
y+� all% � height%=Rcnt% � height%=Rcnt2%
y"height%=-32*height%
y,� �
y6U� � �:� �:ș"PDriver_AbortJob",ch%:�#ch%:ș"Hourglass_Off":�error("Maths_Task"):�
y@
yJ!�set_up_printout(ch%,height%)
yT
y^ș"ColourTrans_SetGCOL",0
yh,ș"PDriver_DrawPage",1,block%,0,0 � flg%
yrȕ flg%
y|" �set_results_window(0,0,all%)
y�, ș"PDriver_GetRectangle",,block% � flg%
y��
y�
y��end_printout(ch%)
y�� �
y��
y�
y�
y�'� �results_text_file(file$,Smopen%)
y� � ch%,resp%:� �:notsavedR%=0
y�T� � �:� �:resp%=�error_message(�$,"Maths_task",0):� �(�=67785 � �=67786) � �#ch%
y�� resp% � �
y�ch%=� file$
z� n%=0 � Rptr%
z �#ch%,?(results%+n%)
z�
z&	�#ch%
z0� "SetType "+file$+" FFF"
z:2$savetextbuff%=file$:�reset_icon(SVhandle2%,1)
z;'� Smopen% � �open_window(Smhandle%)
zD� �
zN�
zX
zb
zl'� �set_results_window(ox%,oy%,all%)
zv� X%,y%,ptr%,ch%,ch$
z�X%=-1:y%=-32:ptr%=-1
z��
z�
 ptr% +=1
z�" ch%=?(results%+ptr%):ch$=�ch%
z�
z� � ch$="(" � all%=0 �
z�  ȕ ch%<>10 � ptr%<Rptr%
z�$   ptr% +=1:ch%=?(results%+ptr%)
z�  �
z�.  � ?(results%+ptr%+1)=10 � ptr% +=1:X%=-1
z� �
z�  � ch%<>10 �
z�a   � y%+oy%>=block%!32 � y%+oy%<=block%!40+32 � ox%=0 � oy%=0 � X% +=1:� ox%,oy%+y%:�X%);ch$
{  �
{   X%=-1:y% -=32
{  �
{  �
{*� ptr%=Rptr%
{4�
{>
{H
{R� �set_windows
{\� n%,x1%,x2%,y1%,y2%
{f� screen% �
{p0 handle%(1)=�whole_screen_window(handle%(1))
{z. NGhandle%=�whole_screen_window(NGhandle%)
{�. SChandle%=�whole_screen_window(SChandle%)
{��
{�B handle%(1)=�ordinary_window(handle%(1),1276,916,"",&87000002)
{�@ NGhandle%=�ordinary_window(NGhandle%,1176,916,"",&BF001002)
{�@ SChandle%=�ordinary_window(SChandle%,748,856,"Y",&87000012)
{��
{��
{�
{�
{�� �set_up_sum_window
{�>� decimal%(NameNo%) � $Osum1buff%="1.00" � $Osum1buff%="0"
{�$Osum2buff%="0"
{�3�reset_icon(Ohandle%,2):�reset_icon(Ohandle%,3)
|>Ohandle%=�centre_window(Ohandle%,"Y"):Owin%=-1:startOwn%=0
|7ș"Wimp_SetCaretPosition",Ohandle%,3,286,-306,-1,-1
|�
|$
|.
|8� �select_sum_window
|B� icon%:icon%=block%!16
|LȎ icon% �
|V= � -1:ș"Wimp_SetCaretPosition",Ohandle%,3,286,-306,-1,-1
|` � 7:�set_up_own_sum
|j � 6:�make_one_for_me
|t�
|~�
|�
|�
|�� �make_one_for_me
|�$� level%:level%=Dlevel%(NameNo%)
|�(DivType%=-�icon_selected(Ohandle%,8)
|�&� DivType%=1 � level%<5 � level%=5
|�C� DivType%=0 � level%>=Long%(NameNo%) � level%=Long%(NameNo%)-1
|�
|��make_div(level%)
|�� decimal%(NameNo%)=0 �
|�* $Osum1buff%=�num1%:$Osum2buff%=�num2%
|��
}7 $Osum1buff%=�set_dec(�num1%,6):$Osum2buff%=� num2%
}
�
}3�reset_icon(Ohandle%,2):�reset_icon(Ohandle%,3)
}�
}(
}2
}<� �own_sum_keys
}FȎ block%!24 �
}P? � &18E:ș"Wimp_SetCaretPosition",Ohandle%,2,196,-306,-1,-1
}Z? � &18F:ș"Wimp_SetCaretPosition",Ohandle%,3,286,-306,-1,-1
}d
}n" ș"Wimp_ProcessKey",block%!24
}x�
}��
}�
}�
}�� �set_up_own_sum
}�� buff$,flg%:flg%=0
}�(DivType%=-�icon_selected(Ohandle%,8)
}�!buff$=�set_dec($Osum1buff%,6)
}�L� buff$<>$Osum1buff% � $Osum1buff%=buff$:�reset_icon(Ohandle%,3):flg%=-1
}�$� � $Osum2buff%>1 � DivType%=0 �
}�( $Osum2buff%=�$Osum2buff%,1):flg%=-1
}� �reset_icon(Ohandle%,2)
}��
}�� flg%=-1 � �
~
~num2%=� $Osum2buff%
~� num2%=0 � �
~"
~,� decimal%(NameNo%) �
~6T � �$Osum1buff%,".") � num1%=�dec_val($Osum1buff%) � num1%=� $Osum1buff%:flg%=-1
~@ � num1% � num2%>0  �
~J!  num1%=num2%*(num1% � num2%)
~T   $Osum1buff%=�num1%:flg%=-1
~^ �
~h( $Osum1buff%=�set_dec($Osum1buff%,6)
~r �reset_icon(Ohandle%,3)
~|
~��
~� num1%=� $Osum1buff%
~��
~�
~�3� num1%=0 � num2%<2 � num2%>num1% � flg%=-1 � �
~�Owin%=0
~�4� game%=0 � game%=1:�open_window(handle%(game%))
~��set_sum
~��
~�
~�0� �dec_val(var$)=�(�var$,� var$-3)+�var$,2))
~�
~�� �set_dec(st$,Len%)
� pt%,len%,cut%,maxlen%
pt%=�st$,".")
;� � st$<1 � pt%>0 � decimal%(NameNo%)=1 � st$=�(�st$+1)
&,pt%=�st$,"."):len%=� st$:cut%=len%-pt%-2
0&maxlen%=Len%+(decimal%(NameNo%)=0)
:� decimal%(NameNo%) �
D � pt% �
N$  � cut%>0 � st$=�st$,len%-cut%)
X  � cut%=-1 � st$=st$+"0"
b  � cut%=-2 � st$=st$+"00"
l �
v  � len%<3 �
�   st$=st$+".00"
�  �
�#   st$=�st$,len%-2)+"."+�st$,2)
�  �
� �
��
� � pt% � st$=�st$,pt%-1)
� � st$="" � st$="0"
��
�len%=� st$
�&� len%>maxlen% � st$=�st$,maxlen%)
�=st$
�
�
�� >wimp_lib
�
� %� *******************************
�*%� ***WIMP AND DESKTOP ROUTINES***
�4%� *******************************
�>
�H
�R� Icons
�\
�f>� �icon(whandle%,x%,y%,w%,h%,flg%,name$,ptr1%,ptr2%,ptr3%)
�p.� General purpose icon creation procedure.
�z
� handle%
��!block%=whandle%
��;block%!4=x%:block%!8=y%:block%!12=w%+x%:block%!16=h%+y%
��block%!20=flg%
��
��� ptr1%=0 �
�� $(block%+24)=name$
���
�� � Indirected.
�� $ptr1%=name$
��4 block%!24=ptr1%:block%!28=ptr2%:block%!32=ptr3%
���
��
��)ș"Wimp_CreateIcon",,block% � handle%
�=handle%
�
�
�$� �icon_bar_icon(sprite$)
�.,=�icon(-1,0,0,68,68,&3002,sprite$,0,0,0)
�8
�B
�LC� Address of buffer of an indirected icon in window definition.
�V-� �icon_buffer(num%)=block%!(108+32*num%)
�`
�j
�t@� �increment_buffer(whandle%,ihandle%,var%,ptr%,inc%,range%)
�~� Increments an icon
��� var%=range% � =var%
��var%=� $ptr%:var% +=inc%
��$ptr%=�var%
��"�reset_icon(whandle%,ihandle%)
��	=var%
��
��
��D� �inc_buffer(whandle%,ihandle%,var%,ptr%,inc%,lowR%,highR%,up%)
��/� up% � up%=(block%!8=4) � up%=(block%!8=1)
��� up% �
��D var%=�increment_buffer(whandle%,ihandle%,var%,ptr%,inc%,highR%)
���
�D var%=�increment_buffer(whandle%,ihandle%,var%,ptr%,-inc%,lowR%)
�
�
�	=var%
�
�(
�2
�<$� �reset_icon(whandle%,ihandle%)
�FE� For auto_redraw windows. Resets icon where a buffer is altered.
�P&!block%=whandle%:block%!4=ihandle%
�Zblock%!8=0:block%!12=0
�d!ș"Wimp_SetIconState",,block%
�n�
�x
��
��'� �icon_selected(whandle%,ihandle%)
��.� Tests if radio icon is in selected state
��&!block%=whandle%:block%!4=ihandle%
��!ș"Wimp_GetIconState",,block%
��=((block%?26 � 32)=32)
��
��
��1� �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
�6� N%,P%
�@� N%=0 � 3
�J P%=(type% � (2^N%))
�T/ �set_icon_flag(whandle%,ihandle%,12+N%,P%)
�^�
�h�
�r
�|
��*� �select_icon(whandle%,ihandle%,set%)
��-�set_icon_flag(whandle%,ihandle%,21,set%)
���
��
��
��)� �shade_icon(whandle%,ihandle%,set%)
��-�set_icon_flag(whandle%,ihandle%,22,set%)
���
��
��
��*� �delete_icon(whandle%,ihandle%,set%)
��-�set_icon_flag(whandle%,ihandle%,23,set%)
���
�
�N**************************************************************************
�
�&
� Windows
�0
�:0� �temp_window(buff%,len%,name%,name$,font%)
�D%� Loads window from template file
�N� handle%:$name%=name$
�X@ș"Wimp_LoadTemplate",,block%,buff%,buff%+len%,font%,name%,0
�bblock%!64=sarea%
�l+ș"Wimp_CreateWindow",,block% � handle%
�v=handle%
��
��
��#� �whole_screen_window(handle%)
��5� w%,h%,xshift%,yshift%,open%,prev%:prev%=handle%
��&� �window_open(handle%) � open%=-1
��2!block%=handle%:ș"Wimp_GetWindowInfo",,block%
���mode_dimensions(w%,h%)
��3block%!4=0:block%!8=0:block%!12=w%:block%!16=h%
��(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%
�4
�>
�H/� �ordinary_window(handle%,w%,h%,cy$,flgs%)
�R5� open%,prev%,Vbar%,Hbar%,SCw%,SCh%:prev%=handle%
�\$� (flgs% � &10000000) � Vbar%=44
�f$� (flgs% � &40000000) � Hbar%=44
�p�mode_dimensions(SCw%,SCh%)
�z&� �window_open(handle%) � open%=-1
��2!block%=handle%:ș"Wimp_GetWindowInfo",,block%
��block%!4=(SCw%-w%-Vbar%)/2
��7� cy$="Y" � block%!8=(SCh%-h%-Hbar%)/2 � block%!8=0
��/block%!12=block%!4+w%:block%!16=block%!8+h%
��block%!20=0:block%!24=0
��6block%!44=0:block%!48=-h%:block%!52=w%:block%!56=0
��block%!32=flgs%
��-ș"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
�8;block%!4=x%:block%!8=y%:block%!12=x%+w%:block%!16=y%+h%
�B-ș"Wimp_CreateWindow",,block%+4 � handle%
�L�open_window(handle%)
�V/!block%=prev%:ș"Wimp_DeleteWindow",,block%
�`=handle%
�j
�t
�~/� �relative_window(Mhandle%,Rhandle%,x%,y%)
��
� Mx%,My%
��3!block%=Mhandle%:ș"Wimp_GetWindowInfo",,block%
��Mx%=block%!4:My%=block%!8
��*=�place_window(Rhandle%,Mx%+x%,My%+y%)
��
��
��!� �centre_window(handle%,cy$)
��-� 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
�2/block%!12=block%!4+w%:block%!16=block%!8+h%
�<-ș"Wimp_CreateWindow",,block%+4 � handle%
�F�open_window(handle%)
�P/!block%=prev%:ș"Wimp_DeleteWindow",,block%
�Z=handle%
�d
�n
�x!� �mode_dimensions(� w%,� h%)
��� rx%,ry%,ex%,ey%
��)ș"OS_ReadModeVariable",-1,11 � ,,rx%
��(ș"OS_ReadModeVariable",-1,4 � ,,ex%
��)ș"OS_ReadModeVariable",-1,12 � ,,ry%
��(ș"OS_ReadModeVariable",-1,5 � ,,ey%
��%w%=(rx%+1)*2^ex%:h%=(ry%+1)*2^ey%
���
��
��
��� �open_window(whandle%)
�� � Opens window given handle.
��!block%=whandle%
��#ș"Wimp_GetWindowState",,block%
�block%!28=-1
�ș"Wimp_OpenWindow",,block%
��
�"
�,
�6� �close_window(whandle%)
�@!� Closes window given handle.
�J!block%=whandle%
�T#ș"Wimp_GetWindowState",,block%
�^ ș"Wimp_CloseWindow",,block%
�h�
�r
�|
��5� �top_window(whandle%)=�window_flags(whandle%,2)
��6� �window_open(whandle%)=�window_flags(whandle%,1)
��;� �window_full_size(whandle%)=�window_flags(whandle%,4)
��
��"� �window_flags(whandle%,bit%)
��!block%=whandle%
��#ș"Wimp_GetWindowState",,block%
��=((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%
�&
�0
�:-� �work_area_origin(whandle%,� ox%,� oy%)
�D!block%=whandle%
�N#ș"Wimp_GetWindowState",,block%
�Xox%=block%!4-block%!20
�boy%=block%!16-block%!24
�l�
�v
��
��N**************************************************************************
��
��� Menus
��
��8� �set_up_menu(title$,address%,num%,item$(),data%())
��:� Sets up menu block.Item data is read from data list.
��R� Data subscripts - 0 menu flags,1 subpointer,2 shade,3 buffer,4 buffer length
��
��� 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)
�*
�4 � data%(item%,3) �
�>  � Indirected (length>12)
�H  ptr%!8=(ptr%!8 � &100)
�R$  $(data%(item%,3))=item$(item%)
�\>  ptr%!12=data%(item%,3):ptr%!16=-1:ptr%!20=data%(item%,4)
�f �
�p  $(ptr%+12)=item$(item%)
�z �
��
��ptr%=ptr%+24
��R� � item$(item%)>width% � width%=� item$(item%):� Width set from longest item.
���
��
��address%!16=(width%+1)*16
���
��
��
��!� �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%)
�8A� Sets tick bit for item position item% unsets it for others.
�B
� add%,n%
�L� n%=0 � num%
�V add%=menu%+28+24*n%
�`9 � n%=item% � ?add%=(?add% � 1) � ?add%=(?add% � 254)
�j�
�t�
�~
��
��$� �single_tick(menu%,item%,set%)
��
� add%
��add%=menu%+28+24*item%
��4� set% � ?add%=(?add% � 1) � ?add%=(?add% � 254)
���
��
��
��#� �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
�2
�<)� �palette_block(sprite$,sarea%,pal%)
�FU� Takes sprite palette and puts it into a block for making the transcolour table.
�P� ptr%,c%,address%
�Z4ș"OS_SpriteOp",&118,sarea%,sprite$ � ,,address%
�dptr%=address%+44
�n� c%=0 � 15
�x pal%!(c%*4)=!ptr%
�� ptr%=ptr%+8
���
���
��
��
��(� �source_mode_factors(mode%,scale%)
��=� Calcalate the scale factors for the sprites source mode
��-ș"OS_ReadModeVariable",mode%,4 � ,,xeig%
��-ș"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%
�6�
�@
�J
�T*� �os_to_pixels(wOS%,hOS%,� wP%,� hP%)
�^*� Converts os units to pixels for mode
�h*ș"OS_ReadModeVariable",-1,4 � ,,xeig%
�r*ș"OS_ReadModeVariable",-1,5 � ,,yeig%
�|%wP%=wOS%/2^xeig%:hP%=hOS%/2^yeig%
���
��
��
��0� �transtable(mode%,Spal%,Dpal%,transtable%)
��;� Produce colour translation table for the current mode
��@ș"ColourTrans_SelectTable",mode%,Spal%,-1,Dpal%,transtable%
���
��
��
��� �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%)
�0� x%,col%,N%
�:x%=� file$
�D� col%=0 � 15
�N � N%=0 � 2
�X  �#x%=6*col%+3+N%
�b  pal%?(4*col%+N%+1)=�#x%
�l �
�v�
���#x%
���
��
��
��ݤnumber_of_colours
��(� Gives number of colours in a mode.
��
� numcol%
��,ș"OS_ReadModeVariable",-1,3 � ,,numcol%
��=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;
�*�
�4
�>
�HN**************************************************************************
�R
�\� Error routines
�f
�p��error(task$)
�z3� Displays error message from operating system.
��!block%=255
��a$=�$+" "+Þ
��$(block%+4)=a$+�0
��'ș"Wimp_ReportError",block%,1,task$
���
��
��
��+� �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
�8.ș"Wimp_ReportError",block%,1,"print_text"
�B�
�L
�V
�`� �ensure_Pdriver
�j*� Checks that printer driver is loaded
�t� P%,printer%:printer%=0
�~� �
��� � �:� �:�#P%:=printer%
��P%=�("printer:")
��(ș"PDriver_SelectJob",P%,"print_job"
��ș"PDriver_AbortJob",P%
��printer%=-1
���#P%
��� �
��
=printer%
��
��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
�2ș"Wimp_DragBox",,block%
�<�
�F
�PN**************************************************************************
�Z
�d� Fonts
�n
�x� �lose_icon_fonts(f%)
��� n%,m%
��� n%=1 � 255
�� � ?(f%+n%)>0 �
��  num%=?(f%+n%)
��  � m%=1 � num%
��   ș"Font_LoseFont",n%
��  �
�� �
���
���
��
��N**************************************************************************
��
�� Loading and saving
�
�)� �drag_icon(whandle%,ihandle%,type%)
�"� w%,h%,ox%,oy%
�,'�work_area_origin(whandle%,ox%,oy%)
�6&!block%=whandle%:block%!4=ihandle%
�@!ș"Wimp_GetIconState",,block%
�J1block%!8=ox%+block%!8:block%!12=oy%+block%!12
�T3block%!16=ox%+block%!16:block%!20=oy%+block%!20
�^0w%=block%!16-block%!8:h%=block%!20-block%!12
�h-�drag_box(type%,block%!8,block%!12,w%,h%)
�r�
�|
��
��*� �save_request(type%,namebuff%,size%)
��#ș"Wimp_GetPointerInfo",,block%
��+block%!20=block%!12:block%!24=block%!16
��)block%!28=!block%:block%!32=block%!16
��*block%!36=size%:!block%=64:block%!12=0
��block%!16=1:block%!40=type%
��($(block%+44)=�getleaf($namebuff%,-1)
��6ș"Wimp_SendMessage",18,block%,block%!20,block%!24
���
��
��
��� �getleaf(a$,zero%)
�ȕ �a$,".")
�a$=�a$,�a$,".")+1)
��
�&� zero% � a$=a$+�0
�0=a$
�:
�D
�N� �string(ptr%)
�X� name%:name%=ptr%
�bȕ ?ptr%<>0
�l
 ptr% +=1
�v�
��?ptr%=13
��=$name%
��
��N**************************************************************************
��
��� Miscelaneous
��
��� �pause(time%)
��
time% +=�
��ȕ time%>�
���
���
�
00000000  0d 00 0a 11 f4 20 3e 20  21 52 75 6e 69 6d 61 67  |..... > !Runimag|
00000010  65 0d 00 14 1d f4 20 44  69 76 69 73 69 6f 6e 20  |e..... Division |
00000020  64 65 6d 6f 6e 73 74 72  61 74 69 6f 6e 2e 0d 00  |demonstration...|
00000030  1e 20 f4 20 56 65 72 73  69 6f 6e 20 30 2e 32 38  |. . Version 0.28|
00000040  2c 20 38 74 68 20 41 70  72 69 6c 20 39 37 0d 00  |, 8th April 97..|
00000050  28 27 ee 20 85 20 f2 65  72 72 6f 72 28 22 4d 61  |('. . .error("Ma|
00000060  74 68 73 5f 74 61 73 6b  22 29 3a f2 65 6e 64 28  |ths_task"):.end(|
00000070  2d 31 29 3a e0 0d 00 32  04 0d 00 3c 0f f2 69 6e  |-1):...2...<..in|
00000080  69 74 69 61 6c 69 73 65  0d 00 46 0e f2 77 69 6d  |itialise..F..wim|
00000090  70 5f 70 6f 6c 6c 0d 00  50 0c f2 65 6e 64 28 2d  |p_poll..P..end(-|
000000a0  31 29 0d 00 5a 05 e0 0d  00 64 04 0d 00 6e 04 0d  |1)..Z....d...n..|
000000b0  00 78 11 dd 20 f2 69 6e  69 74 69 61 6c 69 73 65  |.x.. .initialise|
000000c0  0d 00 82 08 ea 20 6e 25  0d 00 8c 2b de 20 62 6c  |..... n%...+. bl|
000000d0  6f 63 6b 25 20 33 30 30  30 2c 62 6c 6f 63 6b 32  |ock% 3000,block2|
000000e0  25 20 36 30 2c 72 65 73  75 6c 74 73 25 20 34 34  |% 60,results% 44|
000000f0  30 30 30 0d 00 96 34 de  20 50 72 65 63 74 25 20  |000...4. Prect% |
00000100  31 36 2c 50 74 72 61 6e  73 25 20 31 36 2c 50 70  |16,Ptrans% 16,Pp|
00000110  6c 6f 74 25 20 38 2c 6c  65 76 25 20 34 38 2c 48  |lot% 8,lev% 48,H|
00000120  6c 65 76 25 20 34 38 0d  00 a0 aa de 20 64 69 67  |lev% 48..... dig|
00000130  31 24 28 35 29 2c 64 69  67 32 24 28 35 29 2c 64  |1$(5),dig2$(5),d|
00000140  69 67 61 6e 73 24 28 38  2c 35 29 2c 64 69 67 61  |igans$(8,5),diga|
00000150  6e 73 25 28 38 29 2c 63  61 72 72 79 24 28 33 2c  |ns%(8),carry$(3,|
00000160  35 29 2c 63 61 72 5f 64  69 67 25 28 35 29 2c 61  |5),car_dig%(5),a|
00000170  6e 73 6c 69 6d 25 28 38  29 2c 4d 65 6e 75 42 75  |nslim%(8),MenuBu|
00000180  66 66 25 28 31 34 29 2c  59 70 6f 73 25 28 31 30  |ff%(14),Ypos%(10|
00000190  29 2c 4c 73 68 69 66 74  25 28 38 29 2c 73 74 72  |),Lshift%(8),str|
000001a0  69 6b 65 25 28 34 2c 35  29 2c 64 6f 6e 65 24 28  |ike%(4,5),done$(|
000001b0  38 2c 35 29 2c 72 65 6d  24 28 31 29 2c 64 6f 6e  |8,5),rem$(1),don|
000001c0  65 52 24 28 31 29 2c 72  65 6d 61 6e 73 24 28 31  |eR$(1),remans$(1|
000001d0  29 0d 00 aa 9c de 20 61  6e 73 77 65 72 24 28 38  |)..... answer$(8|
000001e0  2c 35 29 2c 61 6e 73 77  65 72 25 28 38 29 2c 68  |,5),answer%(8),h|
000001f0  61 6e 64 6c 65 25 28 31  29 2c 64 69 67 5f 6e 61  |andle%(1),dig_na|
00000200  6d 65 24 28 35 29 2c 63  6f 6c 6e 61 6d 65 24 28  |me$(5),colname$(|
00000210  35 29 2c 50 64 69 67 31  24 28 31 31 2c 34 29 2c  |5),Pdig1$(11,4),|
00000220  50 64 69 67 32 24 28 31  31 2c 31 29 2c 50 64 65  |Pdig2$(11,1),Pde|
00000230  63 25 28 31 31 29 2c 50  6c 69 6d 51 25 28 31 31  |c%(11),PlimQ%(11|
00000240  29 2c 50 70 6f 73 25 28  31 31 29 2c 6e 61 6d 65  |),Ppos%(11),name|
00000250  24 28 34 38 29 2c 6d 65  73 73 61 67 65 24 28 32  |$(48),message$(2|
00000260  29 2c 6c 61 79 65 72 4f  6e 25 28 34 29 0d 00 b4  |),layerOn%(4)...|
00000270  6f de 20 44 6c 65 76 65  6c 25 28 34 33 29 2c 48  |o. Dlevel%(43),H|
00000280  6c 65 76 65 6c 25 28 34  33 29 2c 4d 48 6c 65 76  |level%(43),MHlev|
00000290  65 6c 25 28 34 33 29 2c  61 75 74 6f 25 28 34 33  |el%(43),auto%(43|
000002a0  29 2c 61 75 74 6f 68 65  6c 70 25 28 34 33 29 2c  |),autohelp%(43),|
000002b0  66 6f 72 63 65 25 28 34  33 29 2c 74 72 69 65 73  |force%(43),tries|
000002c0  25 28 34 33 29 2c 6d 6f  64 65 25 28 34 33 29 2c  |%(43),mode%(43),|
000002d0  64 65 63 69 6d 61 6c 25  28 34 33 29 0d 00 be c5  |decimal%(43)....|
000002e0  de 20 6e 6f 5f 71 75 65  73 74 25 28 34 33 29 2c  |. no_quest%(43),|
000002f0  74 69 6d 65 6c 69 6d 25  28 34 33 29 2c 4e 6f 74  |timelim%(43),Not|
00000300  69 6d 65 72 25 28 34 33  29 2c 63 61 6c 63 25 28  |imer%(43),calc%(|
00000310  34 33 29 2c 70 72 69 6e  74 65 72 25 28 34 33 29  |43),printer%(43)|
00000320  2c 73 63 6f 72 65 25 28  34 33 29 2c 6e 65 78 74  |,score%(43),next|
00000330  25 28 34 33 29 2c 73 74  6f 70 25 28 34 33 29 2c  |%(43),stop%(43),|
00000340  63 6f 6c 6e 61 6d 65 25  28 34 33 29 2c 65 73 74  |colname%(43),est|
00000350  69 6d 61 74 65 25 28 34  33 29 2c 6e 65 77 6c 65  |imate%(43),newle|
00000360  76 52 25 28 34 33 29 2c  6e 65 77 6c 65 76 57 25  |vR%(43),newlevW%|
00000370  28 34 33 29 2c 73 61 76  65 52 25 28 34 33 29 2c  |(43),saveR%(43),|
00000380  6f 77 6e 73 75 6d 25 28  34 33 29 2c 73 70 65 65  |ownsum%(43),spee|
00000390  63 68 25 28 34 33 29 2c  4c 6f 6e 67 25 28 34 33  |ch%(43),Long%(43|
000003a0  29 0d 00 c8 4e 65 6e 64  25 3d 30 3a 64 72 61 67  |)...Nend%=0:drag|
000003b0  25 3d 30 3a 64 6f 75 62  6c 65 25 3d 30 3a 69 6e  |%=0:double%=0:in|
000003c0  69 74 78 25 3d 30 3a 69  6e 69 74 79 25 3d 30 3a  |itx%=0:inity%=0:|
000003d0  69 6e 69 74 6e 75 6d 25  3d 30 3a 64 72 61 67 76  |initnum%=0:dragv|
000003e0  61 6c 25 3d 30 3a 50 72  65 76 4f 70 25 3d 30 0d  |al%=0:PrevOp%=0.|
000003f0  00 d2 8d 71 75 65 73 74  25 3d 30 3a 74 72 79 25  |...quest%=0:try%|
00000400  3d 30 3a 73 65 73 73 74  69 6d 65 25 3d 30 3a 67  |=0:sesstime%=0:g|
00000410  61 6d 65 25 3d 30 3a 73  74 61 72 74 25 3d 2d 31  |ame%=0:start%=-1|
00000420  3a 64 72 61 77 66 6f 6e  74 25 3d 30 3a 53 43 66  |:drawfont%=0:SCf|
00000430  6f 72 6d 61 74 25 3d 31  3a 45 73 74 56 61 6c 25  |ormat%=1:EstVal%|
00000440  3d 30 3a 6d 61 72 6b 65  64 25 3d 30 3a 4f 77 69  |=0:marked%=0:Owi|
00000450  6e 25 3d 30 3a 64 72 61  67 79 25 3d 30 3a 44 69  |n%=0:dragy%=0:Di|
00000460  76 54 79 70 65 25 3d 30  3a 61 6c 74 65 72 25 3d  |vType%=0:alter%=|
00000470  30 3a 65 6e 70 72 69 6e  74 25 3d 30 0d 00 dc 49  |0:enprint%=0...I|
00000480  63 61 72 72 79 25 3d 30  3a 66 6f 72 63 65 35 25  |carry%=0:force5%|
00000490  3d 30 3a 6e 65 78 74 63  68 65 63 6b 25 3d 30 3a  |=0:nextcheck%=0:|
000004a0  72 75 62 62 65 72 25 3d  30 3a 52 63 6e 74 25 3d  |rubber%=0:Rcnt%=|
000004b0  30 3a 4d 66 6c 67 25 3d  30 3a 73 74 61 72 74 4f  |0:Mflg%=0:startO|
000004c0  77 6e 25 3d 30 0d 00 e6  4e 6e 65 78 74 64 69 67  |wn%=0...Nnextdig|
000004d0  25 3d 30 3a 6c 61 79 65  72 25 3d 30 3a 72 75 62  |%=0:layer%=0:rub|
000004e0  64 69 67 25 3d 2d 31 3a  72 75 62 6c 61 79 65 72  |dig%=-1:rublayer|
000004f0  25 3d 30 3a 73 74 6f 70  70 65 64 25 3d 30 3a 6e  |%=0:stopped%=0:n|
00000500  6f 74 73 61 76 65 64 52  25 3d 30 3a 6e 65 77 52  |otsavedR%=0:newR|
00000510  25 3d 30 0d 00 f0 60 43  6f 72 72 65 63 74 41 6e  |%=0...`CorrectAn|
00000520  73 25 3d 30 3a 63 6f 72  72 65 63 74 25 3d 30 3a  |s%=0:correct%=0:|
00000530  6e 65 78 74 6d 65 73 73  25 3d 30 3a 6c 61 79 65  |nextmess%=0:laye|
00000540  72 6c 69 6d 25 3d 30 3a  70 61 74 68 24 3d 22 22  |rlim%=0:path$=""|
00000550  3a 64 69 72 70 61 74 68  24 3d 22 22 3a 6e 65 78  |:dirpath$="":nex|
00000560  74 66 69 6c 65 24 3d 22  22 3a 74 69 6d 65 75 70  |tfile$="":timeup|
00000570  25 3d 30 0d 00 fa 36 50  63 6f 75 6e 74 25 3d 2d  |%=0...6Pcount%=-|
00000580  31 3a 50 73 61 76 65 25  3d 30 3a 50 70 72 69 6e  |1:Psave%=0:Pprin|
00000590  74 25 3d 30 3a 64 72 69  76 65 72 25 3d 30 3a 50  |t%=0:driver%=0:P|
000005a0  63 6f 6c 66 6c 67 25 3d  30 0d 01 04 3a 43 43 73  |colflg%=0...:CCs|
000005b0  75 6d 3d 30 3a 43 43 6e  75 6d 3d 30 3a 43 43 6e  |um=0:CCnum=0:CCn|
000005c0  75 6d 24 3d 22 22 3a 43  43 73 74 61 72 74 25 3d  |um$="":CCstart%=|
000005d0  30 3a 43 43 6f 70 25 3d  30 3a 43 43 70 72 65 76  |0:CCop%=0:CCprev|
000005e0  25 3d 30 0d 01 0e 0d f2  79 5f 6c 65 76 65 6c 73  |%=0.....y_levels|
000005f0  0d 01 18 32 c8 99 22 57  69 6d 70 5f 49 6e 69 74  |...2.."Wimp_Init|
00000600  69 61 6c 69 73 65 22 2c  32 30 30 2c 26 34 42 35  |ialise",200,&4B5|
00000610  33 34 31 35 34 2c 22 4d  61 74 68 73 5f 74 61 73  |34154,"Maths_tas|
00000620  6b 22 0d 01 22 2a 49 42  68 61 6e 64 6c 65 25 3d  |k".."*IBhandle%=|
00000630  a4 69 63 6f 6e 5f 62 61  72 5f 69 63 6f 6e 28 22  |.icon_bar_icon("|
00000640  21 4d 62 6f 6f 6b 44 65  6d f7 22 29 0d 01 2c 13  |!MbookDem.")..,.|
00000650  f4 20 50 52 4f 43 73 65  74 5f 66 6f 6e 74 73 0d  |. PROCset_fonts.|
00000660  01 36 11 f2 6c 6f 61 64  5f 73 70 72 69 74 65 73  |.6..load_sprites|
00000670  0d 01 40 13 f2 63 72 65  61 74 65 5f 77 69 6e 64  |..@..create_wind|
00000680  6f 77 73 0d 01 4a 0e f2  69 63 6f 6e 5f 6d 65 6e  |ows..J..icon_men|
00000690  75 0d 01 54 33 54 68 61  6e 64 6c 65 25 3d a4 63  |u..T3Thandle%=.c|
000006a0  65 6e 74 72 65 5f 77 69  6e 64 6f 77 28 54 68 61  |entre_window(Tha|
000006b0  6e 64 6c 65 25 2c 22 59  22 29 3a 54 4c 74 69 6d  |ndle%,"Y"):TLtim|
000006c0  65 25 3d 91 0d 01 5e 19  f2 73 65 74 5f 6f 70 74  |e%=...^..set_opt|
000006d0  69 6f 6e 5f 76 61 72 69  61 62 6c 65 73 0d 01 68  |ion_variables..h|
000006e0  1a f2 73 65 74 5f 6d 6f  64 65 5f 69 6e 64 65 70  |..set_mode_indep|
000006f0  65 6e 64 61 6e 63 65 0d  01 72 05 e1 0d 01 7c 04  |endance..r....|.|
00000700  0d 01 86 04 0d 01 90 10  dd 20 f2 69 63 6f 6e 5f  |......... .icon_|
00000710  6d 65 6e 75 0d 01 9a 12  f4 20 53 65 74 73 20 75  |menu..... Sets u|
00000720  70 20 6d 65 6e 75 0d 01  a4 25 de 20 6d 65 6e 75  |p menu...%. menu|
00000730  25 20 32 34 34 2c 72 6d  65 6e 75 25 20 31 37 32  |% 244,rmenu% 172|
00000740  2c 6d 62 75 66 66 25 20  31 31 35 0d 01 ae 19 de  |,mbuff% 115.....|
00000750  20 69 74 65 6d 24 28 38  29 2c 64 61 74 61 25 28  | item$(8),data%(|
00000760  38 2c 34 29 0d 01 b8 80  69 74 65 6d 24 28 29 3d  |8,4)....item$()=|
00000770  22 49 6e 66 6f 22 2c 22  53 65 65 20 6f 70 74 69  |"Info","See opti|
00000780  6f 6e 73 22 2c 22 53 65  65 2f 65 64 69 74 20 67  |ons","See/edit g|
00000790  72 6f 75 70 22 2c 22 4c  6f 61 64 2f 6e 65 77 20  |roup","Load/new |
000007a0  67 72 6f 75 70 22 2c 22  53 61 76 65 20 67 72 6f  |group","Save gro|
000007b0  75 70 22 2c 22 52 65 73  75 6c 74 73 22 2c 22 45  |up","Results","E|
000007c0  6e 61 62 6c 65 20 70 72  69 6e 74 65 72 22 2c 22  |nable printer","|
000007d0  57 68 6f 6c 65 20 73 63  72 65 65 6e 22 2c 22 51  |Whole screen","Q|
000007e0  75 69 74 22 0d 01 c2 93  64 61 74 61 25 28 29 3d  |uit"....data%()=|
000007f0  32 2c 49 68 61 6e 64 6c  65 25 2c 30 2c 30 2c 30  |2,Ihandle%,0,0,0|
00000800  2c 30 2c 2d 31 2c 31 2c  30 2c 30 2c 30 2c 2d 31  |,0,-1,1,0,0,0,-1|
00000810  2c 31 2c 6d 62 75 66 66  25 2c 31 35 2c 30 2c 2d  |,1,mbuff%,15,0,-|
00000820  31 2c 30 2c 6d 62 75 66  66 25 2b 38 34 2c 31 35  |1,0,mbuff%+84,15|
00000830  2c 30 2c 2d 31 2c 31 2c  30 2c 30 2c 32 2c 72 6d  |,0,-1,1,0,0,2,rm|
00000840  65 6e 75 25 2c 30 2c 30  2c 30 2c 30 2c 2d 31 2c  |enu%,0,0,0,0,-1,|
00000850  30 2c 6d 62 75 66 66 25  2b 31 30 30 2c 31 35 2c  |0,mbuff%+100,15,|
00000860  30 2c 2d 31 2c 30 2c 30  2c 30 2c 26 38 30 2c 2d  |0,-1,0,0,0,&80,-|
00000870  31 2c 30 2c 30 2c 30 0d  01 cc 35 f2 73 65 74 5f  |1,0,0,0...5.set_|
00000880  75 70 5f 6d 65 6e 75 28  22 4d 61 74 68 73 42 6f  |up_menu("MathsBo|
00000890  6f 6b 22 2c 6d 65 6e 75  25 2c 38 2c 69 74 65 6d  |ok",menu%,8,item|
000008a0  24 28 29 2c 64 61 74 61  25 28 29 29 0d 01 d6 04  |$(),data%())....|
000008b0  0d 01 e0 6b 69 74 65 6d  24 28 29 3d 22 53 65 65  |...kitem$()="See|
000008c0  20 72 65 73 75 6c 74 73  22 2c 22 50 72 69 6e 74  | results","Print|
*
000008e0  20 73 75 6d 6d 61 72 79  22 2c 22 53 61 76 65 20  | summary","Save |
000008f0  72 65 73 75 6c 74 73 22  2c 22 41 75 74 6f 20 73  |results","Auto s|
00000900  61 76 65 20 72 65 73 75  6c 74 73 22 2c 22 57 69  |ave results","Wi|
00000910  70 65 20 72 65 73 75 6c  74 73 22 0d 01 ea 72 64  |pe results"...rd|
00000920  61 74 61 25 28 29 3d 30  2c 2d 31 2c 30 2c 30 2c  |ata%()=0,-1,0,0,|
00000930  30 2c 30 2c 2d 31 2c 30  2c 6d 62 75 66 66 25 2b  |0,0,-1,0,mbuff%+|
00000940  33 35 2c 31 34 2c 30 2c  2d 31 2c 30 2c 6d 62 75  |35,14,0,-1,0,mbu|
00000950  66 66 25 2b 35 30 2c 31  34 2c 30 2c 53 56 68 61  |ff%+50,14,0,SVha|
00000960  6e 64 6c 65 32 25 2c 31  2c 30 2c 30 2c 30 2c 2d  |ndle2%,1,0,0,0,-|
00000970  31 2c 30 2c 6d 62 75 66  66 25 2b 36 35 2c 31 38  |1,0,mbuff%+65,18|
00000980  2c 26 38 30 2c 2d 31 2c  30 2c 30 2c 30 0d 01 f4  |,&80,-1,0,0,0...|
00000990  34 f2 73 65 74 5f 75 70  5f 6d 65 6e 75 28 22 52  |4.set_up_menu("R|
000009a0  65 73 75 6c 74 73 22 2c  72 6d 65 6e 75 25 2c 35  |esults",rmenu%,5|
000009b0  2c 69 74 65 6d 24 28 29  2c 64 61 74 61 25 28 29  |,item$(),data%()|
000009c0  29 0d 01 fe 05 e1 0d 02  08 04 0d 02 12 04 0d 02  |)...............|
000009d0  1c 15 dd 20 f2 63 72 65  61 74 65 5f 77 69 6e 64  |... .create_wind|
000009e0  6f 77 73 0d 02 26 19 f4  20 4c 6f 61 64 20 74 65  |ows..&.. Load te|
000009f0  6d 70 6c 61 74 65 20 66  69 6c 65 73 0d 02 30 cb  |mplate files..0.|
00000a00  de 20 44 62 75 66 66 25  20 35 30 30 2c 49 62 75  |. Dbuff% 500,Ibu|
00000a10  66 66 25 20 31 35 30 2c  43 62 75 66 66 25 20 38  |ff% 150,Cbuff% 8|
00000a20  30 30 2c 53 43 62 75 66  66 25 20 32 35 30 2c 4e  |00,SCbuff% 250,N|
00000a30  62 75 66 66 25 20 31 30  30 2c 4e 32 62 75 66 66  |buff% 100,N2buff|
00000a40  25 20 39 30 30 2c 63 61  6c 63 62 75 66 66 25 20  |% 900,calcbuff% |
00000a50  32 30 30 2c 53 56 62 75  66 66 25 20 33 30 30 2c  |200,SVbuff% 300,|
00000a60  53 56 32 62 75 66 66 25  20 33 30 30 2c 50 62 75  |SV2buff% 300,Pbu|
00000a70  66 66 25 20 31 30 30 2c  53 54 62 75 66 66 25 20  |ff% 100,STbuff% |
00000a80  31 30 30 2c 49 63 62 75  66 66 25 20 31 30 30 2c  |100,Icbuff% 100,|
00000a90  4f 62 75 66 66 25 20 32  30 30 2c 53 6d 62 75 66  |Obuff% 200,Smbuf|
00000aa0  66 25 20 31 30 30 2c 45  62 75 66 66 25 20 31 30  |f% 100,Ebuff% 10|
00000ab0  30 2c 45 64 62 75 66 66  25 20 31 30 30 2c 66 6f  |0,Edbuff% 100,fo|
00000ac0  6e 74 25 20 32 35 36 0d  02 3a 4c de 20 4c 62 75  |nt% 256..:L. Lbu|
00000ad0  66 66 25 20 34 30 30 2c  4d 62 75 66 66 25 20 35  |ff% 400,Mbuff% 5|
00000ae0  30 30 2c 44 72 62 75 66  66 25 20 31 30 30 2c 50  |00,Drbuff% 100,P|
00000af0  32 62 75 66 66 25 20 31  30 30 2c 4f 53 62 75 66  |2buff% 100,OSbuf|
00000b00  66 25 20 31 30 30 2c 44  65 6d 62 75 66 66 25 20  |f% 100,Dembuff% |
00000b10  31 35 30 0d 02 44 24 e3  20 6e 25 3d 30 20 b8 20  |150..D$. n%=0 . |
00000b20  32 35 35 20 88 20 34 3a  21 28 66 6f 6e 74 25 2b  |255 . 4:!(font%+|
00000b30  6e 25 29 3d 30 3a ed 0d  02 4e 0e de 20 6e 61 6d  |n%)=0:...N.. nam|
00000b40  65 25 20 31 31 0d 02 58  04 0d 02 62 33 c8 99 22  |e% 11..X...b3.."|
00000b50  57 69 6d 70 5f 4f 70 65  6e 54 65 6d 70 6c 61 74  |Wimp_OpenTemplat|
00000b60  65 22 2c 2c 22 3c 4d 61  74 68 73 24 44 69 72 3e  |e",,"<Maths$Dir>|
00000b70  2e 54 65 6d 70 6c 61 74  65 73 32 22 0d 02 6c 3b  |.Templates2"..l;|
00000b80  68 61 6e 64 6c 65 25 28  31 29 3d a4 74 65 6d 70  |handle%(1)=.temp|
00000b90  5f 77 69 6e 64 6f 77 28  44 62 75 66 66 25 2c 35  |_window(Dbuff%,5|
00000ba0  30 30 2c 6e 61 6d 65 25  2c 22 64 69 76 69 73 69  |00,name%,"divisi|
00000bb0  6f 6e 22 2c 2d 31 29 0d  02 76 19 74 69 74 6c 65  |on",-1)..v.title|
00000bc0  62 75 66 66 31 25 3d 62  6c 6f 63 6b 25 21 37 32  |buff1%=block%!72|
00000bd0  0d 02 80 35 49 68 61 6e  64 6c 65 25 3d a4 74 65  |...5Ihandle%=.te|
00000be0  6d 70 5f 77 69 6e 64 6f  77 28 49 62 75 66 66 25  |mp_window(Ibuff%|
00000bf0  2c 31 35 30 2c 6e 61 6d  65 25 2c 22 69 6e 66 6f  |,150,name%,"info|
00000c00  22 2c 2d 31 29 0d 02 8a  04 0d 02 94 37 43 68 61  |",-1).......7Cha|
00000c10  6e 64 6c 65 25 3d a4 74  65 6d 70 5f 77 69 6e 64  |ndle%=.temp_wind|
00000c20  6f 77 28 43 62 75 66 66  25 2c 38 30 30 2c 6e 61  |ow(Cbuff%,800,na|
00000c30  6d 65 25 2c 22 63 6f 6e  66 69 67 22 2c 2d 31 29  |me%,"config",-1)|
00000c40  0d 02 9e 20 6c 65 76 65  6c 5f 62 75 66 66 44 25  |... level_buffD%|
00000c50  3d a4 69 63 6f 6e 5f 62  75 66 66 65 72 28 35 29  |=.icon_buffer(5)|
00000c60  0d 02 a8 1b 51 62 75 66  66 25 3d a4 69 63 6f 6e  |....Qbuff%=.icon|
00000c70  5f 62 75 66 66 65 72 28  31 36 29 0d 02 b2 1b 54  |_buffer(16)....T|
00000c80  62 75 66 66 25 3d a4 69  63 6f 6e 5f 62 75 66 66  |buff%=.icon_buff|
00000c90  65 72 28 31 39 29 0d 02  bc 1c 54 6d 62 75 66 66  |er(19)....Tmbuff|
00000ca0  25 3d a4 69 63 6f 6e 5f  62 75 66 66 65 72 28 32  |%=.icon_buffer(2|
00000cb0  32 29 0d 02 c6 1b 48 62  75 66 66 25 3d a4 69 63  |2)....Hbuff%=.ic|
00000cc0  6f 6e 5f 62 75 66 66 65  72 28 33 31 29 0d 02 d0  |on_buffer(31)...|
00000cd0  1c 4d 48 62 75 66 66 25  3d a4 69 63 6f 6e 5f 62  |.MHbuff%=.icon_b|
00000ce0  75 66 66 65 72 28 33 37  29 0d 02 da 1e 6c 65 76  |uffer(37)....lev|
00000cf0  52 62 75 66 66 25 3d a4  69 63 6f 6e 5f 62 75 66  |Rbuff%=.icon_buf|
00000d00  66 65 72 28 35 33 29 0d  02 e4 1e 6c 65 76 57 62  |fer(53)....levWb|
00000d10  75 66 66 25 3d a4 69 63  6f 6e 5f 62 75 66 66 65  |uff%=.icon_buffe|
00000d20  72 28 35 37 29 0d 02 ee  1d 6c 6f 6e 67 62 75 66  |r(57)....longbuf|
00000d30  66 25 3d a4 69 63 6f 6e  5f 62 75 66 66 65 72 28  |f%=.icon_buffer(|
00000d40  32 29 0d 02 f8 19 74 69  74 6c 65 62 75 66 66 43  |2)....titlebuffC|
00000d50  25 3d 62 6c 6f 63 6b 25  21 37 32 0d 03 02 04 0d  |%=block%!72.....|
00000d60  03 0c 3b 53 43 68 61 6e  64 6c 65 25 3d a4 74 65  |..;SChandle%=.te|
00000d70  6d 70 5f 77 69 6e 64 6f  77 28 53 43 62 75 66 66  |mp_window(SCbuff|
00000d80  25 2c 32 37 35 2c 6e 61  6d 65 25 2c 22 73 63 6f  |%,275,name%,"sco|
00000d90  72 65 22 2c 66 6f 6e 74  25 29 0d 03 16 1e 53 6e  |re",font%)....Sn|
00000da0  61 6d 65 62 75 66 66 25  3d a4 69 63 6f 6e 5f 62  |amebuff%=.icon_b|
00000db0  75 66 66 65 72 28 31 29  0d 03 20 1c 53 43 74 62  |uffer(1).. .SCtb|
00000dc0  75 66 66 25 3d a4 69 63  6f 6e 5f 62 75 66 66 65  |uff%=.icon_buffe|
00000dd0  72 28 32 29 0d 03 2a 1c  53 43 51 62 75 66 66 25  |r(2)..*.SCQbuff%|
00000de0  3d a4 69 63 6f 6e 5f 62  75 66 66 65 72 28 34 29  |=.icon_buffer(4)|
00000df0  0d 03 34 1c 53 43 52 62  75 66 66 25 3d a4 69 63  |..4.SCRbuff%=.ic|
00000e00  6f 6e 5f 62 75 66 66 65  72 28 36 29 0d 03 3e 1c  |on_buffer(6)..>.|
00000e10  53 43 57 62 75 66 66 25  3d a4 69 63 6f 6e 5f 62  |SCWbuff%=.icon_b|
00000e20  75 66 66 65 72 28 38 29  0d 03 48 04 0d 03 52 38  |uffer(8)..H...R8|
00000e30  4e 47 68 61 6e 64 6c 65  25 3d a4 74 65 6d 70 5f  |NGhandle%=.temp_|
00000e40  77 69 6e 64 6f 77 28 4e  32 62 75 66 66 25 2c 39  |window(N2buff%,9|
00000e50  30 30 2c 6e 61 6d 65 25  2c 22 6e 61 6d 65 32 22  |00,name%,"name2"|
00000e60  2c 2d 31 29 0d 03 5c 19  4e 74 69 74 6c 65 62 75  |,-1)..\.Ntitlebu|
00000e70  66 66 25 3d 62 6c 6f 63  6b 25 21 37 32 0d 03 66  |ff%=block%!72..f|
00000e80  04 0d 03 70 39 43 43 68  61 6e 64 6c 65 25 3d a4  |...p9CChandle%=.|
00000e90  74 65 6d 70 5f 77 69 6e  64 6f 77 28 63 61 6c 63  |temp_window(calc|
00000ea0  62 75 66 66 25 2c 32 30  30 2c 6e 61 6d 65 25 2c  |buff%,200,name%,|
00000eb0  22 63 61 6c 63 22 2c 2d  31 29 0d 03 7a 1c 43 43  |"calc",-1)..z.CC|
00000ec0  62 75 66 66 25 3d a4 69  63 6f 6e 5f 62 75 66 66  |buff%=.icon_buff|
00000ed0  65 72 28 31 37 29 0d 03  84 04 0d 03 8e 3a 53 56  |er(17).......:SV|
00000ee0  68 61 6e 64 6c 65 25 3d  a4 74 65 6d 70 5f 77 69  |handle%=.temp_wi|
00000ef0  6e 64 6f 77 28 53 56 62  75 66 66 25 2c 33 30 30  |ndow(SVbuff%,300|
00000f00  2c 6e 61 6d 65 25 2c 22  73 61 76 65 62 6f 78 22  |,name%,"savebox"|
00000f10  2c 2d 31 29 0d 03 98 1d  73 61 76 65 62 75 66 66  |,-1)....savebuff|
00000f20  25 3d a4 69 63 6f 6e 5f  62 75 66 66 65 72 28 31  |%=.icon_buffer(1|
00000f30  29 0d 03 a2 04 0d 03 ac  3a 50 68 61 6e 64 6c 65  |).......:Phandle|
00000f40  25 3d a4 74 65 6d 70 5f  77 69 6e 64 6f 77 28 50  |%=.temp_window(P|
00000f50  62 75 66 66 25 2c 31 30  30 2c 6e 61 6d 65 25 2c  |buff%,100,name%,|
00000f60  22 70 72 69 6e 74 6d 65  73 73 22 2c 2d 31 29 0d  |"printmess",-1).|
00000f70  03 b6 3d 50 32 68 61 6e  64 6c 65 25 3d a4 74 65  |..=P2handle%=.te|
00000f80  6d 70 5f 77 69 6e 64 6f  77 28 50 32 62 75 66 66  |mp_window(P2buff|
00000f90  25 2c 31 30 30 2c 6e 61  6d 65 25 2c 22 70 72 69  |%,100,name%,"pri|
00000fa0  6e 74 6d 65 73 73 32 22  2c 2d 31 29 0d 03 c0 37  |ntmess2",-1)...7|
00000fb0  50 69 63 62 75 66 66 31  25 3d a4 69 63 6f 6e 5f  |Picbuff1%=.icon_|
00000fc0  62 75 66 66 65 72 28 30  29 3a 50 69 63 62 75 66  |buffer(0):Picbuf|
00000fd0  66 32 25 3d a4 69 63 6f  6e 5f 62 75 66 66 65 72  |f2%=.icon_buffer|
00000fe0  28 31 29 0d 03 ca 3b 53  54 68 61 6e 64 6c 65 25  |(1)...;SThandle%|
00000ff0  3d a4 74 65 6d 70 5f 77  69 6e 64 6f 77 28 53 54  |=.temp_window(ST|
00001000  62 75 66 66 25 2c 31 30  30 2c 6e 61 6d 65 25 2c  |buff%,100,name%,|
00001010  22 73 74 6f 70 6d 65 73  73 22 2c 2d 31 29 0d 03  |"stopmess",-1)..|
00001020  d4 3b 49 63 68 61 6e 64  6c 65 25 3d a4 74 65 6d  |.;Ichandle%=.tem|
00001030  70 5f 77 69 6e 64 6f 77  28 49 63 62 75 66 66 25  |p_window(Icbuff%|
00001040  2c 31 30 30 2c 6e 61 6d  65 25 2c 22 69 63 6f 6e  |,100,name%,"icon|
00001050  6d 65 73 73 22 2c 2d 31  29 0d 03 de 1b 69 63 62  |mess",-1)....icb|
00001060  75 66 66 25 3d a4 69 63  6f 6e 5f 62 75 66 66 65  |uff%=.icon_buffe|
00001070  72 28 30 29 0d 03 e8 3b  53 6d 68 61 6e 64 6c 65  |r(0)...;Smhandle|
00001080  25 3d a4 74 65 6d 70 5f  77 69 6e 64 6f 77 28 53  |%=.temp_window(S|
00001090  6d 62 75 66 66 25 2c 31  30 30 2c 6e 61 6d 65 25  |mbuff%,100,name%|
000010a0  2c 22 73 61 76 65 6d 65  73 73 22 2c 2d 31 29 0d  |,"savemess",-1).|
000010b0  03 f2 35 73 6d 62 75 66  66 31 25 3d a4 69 63 6f  |..5smbuff1%=.ico|
000010c0  6e 5f 62 75 66 66 65 72  28 30 29 3a 73 6d 62 75  |n_buffer(0):smbu|
000010d0  66 66 32 25 3d a4 69 63  6f 6e 5f 62 75 66 66 65  |ff2%=.icon_buffe|
000010e0  72 28 31 29 0d 03 fc 3a  44 72 68 61 6e 64 6c 65  |r(1)...:Drhandle|
000010f0  25 3d a4 74 65 6d 70 5f  77 69 6e 64 6f 77 28 44  |%=.temp_window(D|
00001100  72 62 75 66 66 25 2c 31  30 30 2c 6e 61 6d 65 25  |rbuff%,100,name%|
00001110  2c 22 64 69 72 6d 65 73  73 22 2c 2d 31 29 0d 04  |,"dirmess",-1)..|
00001120  06 38 45 68 61 6e 64 6c  65 25 3d a4 74 65 6d 70  |.8Ehandle%=.temp|
00001130  5f 77 69 6e 64 6f 77 28  45 62 75 66 66 25 2c 31  |_window(Ebuff%,1|
00001140  30 30 2c 6e 61 6d 65 25  2c 22 65 6e 64 73 61 76  |00,name%,"endsav|
00001150  65 22 2c 2d 31 29 0d 04  10 1c 45 69 63 62 75 66  |e",-1)....Eicbuf|
00001160  66 25 3d a4 69 63 6f 6e  5f 62 75 66 66 65 72 28  |f%=.icon_buffer(|
00001170  31 29 0d 04 1a 3b 45 64  68 61 6e 64 6c 65 25 3d  |1)...;Edhandle%=|
00001180  a4 74 65 6d 70 5f 77 69  6e 64 6f 77 28 45 64 62  |.temp_window(Edb|
00001190  75 66 66 25 2c 31 30 30  2c 6e 61 6d 65 25 2c 22  |uff%,100,name%,"|
000011a0  6e 61 6d 65 6d 65 73 73  22 2c 2d 31 29 0d 04 24  |namemess",-1)..$|
000011b0  3a 4f 53 68 61 6e 64 6c  65 25 3d a4 74 65 6d 70  |:OShandle%=.temp|
000011c0  5f 77 69 6e 64 6f 77 28  4f 53 62 75 66 66 25 2c  |_window(OSbuff%,|
000011d0  31 30 30 2c 6e 61 6d 65  25 2c 22 6f 77 6e 6d 65  |100,name%,"ownme|
000011e0  73 73 22 2c 2d 31 29 0d  04 2e 04 0d 04 38 33 44  |ss",-1)......83D|
000011f0  68 61 6e 64 6c 65 25 3d  a4 74 65 6d 70 5f 77 69  |handle%=.temp_wi|
00001200  6e 64 6f 77 28 2d 31 2c  2d 31 2c 6e 61 6d 65 25  |ndow(-1,-1,name%|
00001210  2c 22 64 72 69 62 62 6c  65 22 2c 2d 31 29 0d 04  |,"dribble",-1)..|
00001220  42 3d 53 56 68 61 6e 64  6c 65 32 25 3d a4 74 65  |B=SVhandle2%=.te|
00001230  6d 70 5f 77 69 6e 64 6f  77 28 53 56 32 62 75 66  |mp_window(SV2buf|
00001240  66 25 2c 33 30 30 2c 6e  61 6d 65 25 2c 22 73 61  |f%,300,name%,"sa|
00001250  76 65 62 6f 78 32 22 2c  2d 31 29 0d 04 4c 21 73  |vebox2",-1)..L!s|
00001260  61 76 65 74 65 78 74 62  75 66 66 25 3d a4 69 63  |avetextbuff%=.ic|
00001270  6f 6e 5f 62 75 66 66 65  72 28 31 29 0d 04 56 04  |on_buffer(1)..V.|
00001280  0d 04 60 3a 4f 68 61 6e  64 6c 65 25 3d a4 74 65  |..`:Ohandle%=.te|
00001290  6d 70 5f 77 69 6e 64 6f  77 28 4f 62 75 66 66 25  |mp_window(Obuff%|
000012a0  2c 32 30 30 2c 6e 61 6d  65 25 2c 22 6f 77 6e 73  |,200,name%,"owns|
000012b0  75 6d 22 2c 66 6f 6e 74  25 29 0d 04 6a 1e 4f 73  |um",font%)..j.Os|
000012c0  75 6d 31 62 75 66 66 25  3d a4 69 63 6f 6e 5f 62  |um1buff%=.icon_b|
000012d0  75 66 66 65 72 28 33 29  0d 04 74 1e 4f 73 75 6d  |uffer(3)..t.Osum|
000012e0  32 62 75 66 66 25 3d a4  69 63 6f 6e 5f 62 75 66  |2buff%=.icon_buf|
000012f0  66 65 72 28 32 29 0d 04  7e 04 0d 04 88 3b 4c 68  |fer(2)..~....;Lh|
00001300  61 6e 64 6c 65 25 3d a4  74 65 6d 70 5f 77 69 6e  |andle%=.temp_win|
00001310  64 6f 77 28 4c 62 75 66  66 25 2c 34 30 30 2c 6e  |dow(Lbuff%,400,n|
00001320  61 6d 65 25 2c 22 6c 6f  61 64 62 6f 78 22 2c 66  |ame%,"loadbox",f|
00001330  6f 6e 74 25 29 0d 04 92  1d 6c 6f 61 64 62 75 66  |ont%)....loadbuf|
00001340  66 25 3d a4 69 63 6f 6e  5f 62 75 66 66 65 72 28  |f%=.icon_buffer(|
00001350  32 29 0d 04 9c 04 0d 04  a6 3b 4d 68 61 6e 64 6c  |2).......;Mhandl|
00001360  65 25 3d a4 74 65 6d 70  5f 77 69 6e 64 6f 77 28  |e%=.temp_window(|
00001370  4d 62 75 66 66 25 2c 35  30 30 2c 6e 61 6d 65 25  |Mbuff%,500,name%|
00001380  2c 22 44 69 72 4d 65 6e  75 22 2c 66 6f 6e 74 25  |,"DirMenu",font%|
00001390  29 0d 04 b0 30 e3 20 6e  25 3d 30 20 b8 20 31 34  |)...0. n%=0 . 14|
000013a0  3a 4d 65 6e 75 42 75 66  66 25 28 6e 25 29 3d a4  |:MenuBuff%(n%)=.|
000013b0  69 63 6f 6e 5f 62 75 66  66 65 72 28 6e 25 29 3a  |icon_buffer(n%):|
000013c0  ed 0d 04 ba 04 0d 04 c4  31 54 68 61 6e 64 6c 65  |........1Thandle|
000013d0  25 3d a4 74 65 6d 70 5f  77 69 6e 64 6f 77 28 2d  |%=.temp_window(-|
000013e0  31 2c 2d 31 2c 6e 61 6d  65 25 2c 22 74 69 74 6c  |1,-1,name%,"titl|
000013f0  65 22 2c 2d 31 29 0d 04  c5 04 0d 04 c6 39 44 65  |e",-1).......9De|
00001400  6d 68 61 6e 64 6c 65 25  3d a4 74 65 6d 70 5f 77  |mhandle%=.temp_w|
00001410  69 6e 64 6f 77 28 44 65  6d 62 75 66 66 25 2c 31  |indow(Dembuff%,1|
00001420  35 30 2c 6e 61 6d 65 25  2c 22 64 65 6d 6f 22 2c  |50,name%,"demo",|
00001430  2d 31 29 0d 04 c7 1a 44  65 6d 49 63 25 3d a4 69  |-1)....DemIc%=.i|
00001440  63 6f 6e 5f 62 75 66 66  65 72 28 31 29 0d 04 ce  |con_buffer(1)...|
00001450  1a c8 99 22 57 69 6d 70  5f 43 6c 6f 73 65 54 65  |..."Wimp_CloseTe|
00001460  6d 70 6c 61 74 65 22 0d  04 d8 05 e1 0d 04 e2 04  |mplate".........|
00001470  0d 04 ec 04 0d 04 f6 13  dd 20 f2 6c 6f 61 64 5f  |......... .load_|
00001480  73 70 72 69 74 65 73 0d  05 00 2f de 20 73 61 72  |sprites.../. sar|
00001490  65 61 25 20 31 37 30 32  30 30 3a f4 20 6d 65 73  |ea% 170200:. mes|
000014a0  73 61 67 65 20 33 31 32  37 36 2c 72 65 73 74 20  |sage 31276,rest |
000014b0  31 33 38 38 35 36 0d 05  0a 1e 21 73 61 72 65 61  |138856....!sarea|
000014c0  25 3d 31 37 30 32 30 30  3a 73 61 72 65 61 25 21  |%=170200:sarea%!|
000014d0  38 3d 31 36 0d 05 14 1f  c8 99 22 4f 53 5f 53 70  |8=16......"OS_Sp|
000014e0  72 69 74 65 4f 70 22 2c  26 31 30 39 2c 73 61 72  |riteOp",&109,sar|
000014f0  65 61 25 0d 05 1e 35 c8  99 22 4f 53 5f 53 70 72  |ea%...5.."OS_Spr|
00001500  69 74 65 4f 70 22 2c 26  31 30 41 2c 73 61 72 65  |iteOp",&10A,sare|
00001510  61 25 2c 22 3c 4d 61 74  68 73 24 44 69 72 3e 2e  |a%,"<Maths$Dir>.|
00001520  73 70 72 69 74 65 73 22  0d 05 28 05 e1 0d 05 32  |sprites"..(....2|
00001530  04 0d 05 3c 04 0d 05 46  1c dd 20 f2 73 65 74 5f  |...<...F.. .set_|
00001540  6d 6f 64 65 5f 69 6e 64  65 70 65 6e 64 61 6e 63  |mode_independanc|
00001550  65 0d 05 50 2e de 20 73  63 61 6c 65 25 20 31 36  |e..P.. scale% 16|
00001560  2c 74 72 61 6e 73 25 20  32 35 35 2c 70 61 6c 25  |,trans% 255,pal%|
00001570  20 36 34 2c 73 63 61 6c  65 32 37 25 20 31 36 0d  | 64,scale27% 16.|
00001580  05 5a 23 f2 73 6f 75 72  63 65 5f 6d 6f 64 65 5f  |.Z#.source_mode_|
00001590  66 61 63 74 6f 72 73 28  31 32 2c 73 63 61 6c 65  |factors(12,scale|
000015a0  25 29 0d 05 64 21 f2 63  75 72 72 65 6e 74 5f 6d  |%)..d!.current_m|
000015b0  6f 64 65 5f 66 61 63 74  6f 72 73 28 73 63 61 6c  |ode_factors(scal|
000015c0  65 25 29 0d 05 6e 24 f2  70 61 6c 65 74 74 65 5f  |e%)..n$.palette_|
000015d0  62 6c 6f 63 6b 28 22 6e  30 22 2c 73 61 72 65 61  |block("n0",sarea|
000015e0  25 2c 70 61 6c 25 29 0d  05 78 22 f2 74 72 61 6e  |%,pal%)..x".tran|
000015f0  73 74 61 62 6c 65 28 31  32 2c 70 61 6c 25 2c 2d  |stable(12,pal%,-|
00001600  31 2c 74 72 61 6e 73 25  29 0d 05 82 1e f2 6d 65  |1,trans%).....me|
00001610  73 73 61 67 65 5f 6d 6f  64 65 5f 69 6e 64 65 70  |ssage_mode_indep|
00001620  65 6e 64 61 6e 63 65 0d  05 8c 04 0d 05 96 25 f2  |endance.......%.|
00001630  73 6f 75 72 63 65 5f 6d  6f 64 65 5f 66 61 63 74  |source_mode_fact|
00001640  6f 72 73 28 32 37 2c 73  63 61 6c 65 32 37 25 29  |ors(27,scale27%)|
00001650  0d 05 a0 23 f2 63 75 72  72 65 6e 74 5f 6d 6f 64  |...#.current_mod|
00001660  65 5f 66 61 63 74 6f 72  73 28 73 63 61 6c 65 32  |e_factors(scale2|
00001670  37 25 29 0d 05 aa 05 e1  0d 05 b4 04 0d 05 be 04  |7%).............|
00001680  0d 05 c8 10 dd 20 f2 77  69 6d 70 5f 70 6f 6c 6c  |..... .wimp_poll|
00001690  0d 05 d2 05 f5 0d 05 dc  24 c8 99 22 57 69 6d 70  |........$.."Wimp|
000016a0  5f 50 6f 6c 6c 22 2c 30  2c 62 6c 6f 63 6b 25 20  |_Poll",0,block% |
000016b0  b8 20 72 65 61 73 6f 6e  25 0d 05 e6 10 c8 8e 20  |. reason%...... |
000016c0  72 65 61 73 6f 6e 25 20  ca 0d 05 f0 14 20 c9 20  |reason% ..... . |
000016d0  30 3a f2 6e 75 6c 6c 5f  65 76 65 6e 74 0d 05 fa  |0:.null_event...|
000016e0  10 20 c9 20 31 3a f2 72  65 64 72 61 77 0d 06 04  |. . 1:.redraw...|
000016f0  16 20 c9 20 32 3a f2 6f  70 65 6e 5f 77 69 6e 64  |. . 2:.open_wind|
00001700  6f 77 73 0d 06 0e 17 20  c9 20 33 3a f2 63 6c 6f  |ows.... . 3:.clo|
00001710  73 65 5f 77 69 6e 64 6f  77 73 0d 06 18 17 20 c9  |se_windows.... .|
00001720  20 36 3a f2 62 75 74 74  6f 6e 5f 63 6c 69 63 6b  | 6:.button_click|
00001730  73 0d 06 22 50 20 c9 20  37 3a e7 20 a4 77 69 6e  |s.."P . 7:. .win|
00001740  64 6f 77 5f 6f 70 65 6e  28 53 56 68 61 6e 64 6c  |dow_open(SVhandl|
00001750  65 25 29 20 8c 20 f2 73  61 76 65 5f 72 65 71 75  |e%) . .save_requ|
00001760  65 73 74 28 26 46 46 44  2c 73 61 76 65 62 75 66  |est(&FFD,savebuf|
00001770  66 25 2c 37 32 2b 32 30  2a 4e 63 6f 75 6e 74 25  |f%,72+20*Ncount%|
00001780  29 0d 06 2c 52 20 20 20  20 20 20 20 20 e7 20 a4  |)..,R        . .|
00001790  77 69 6e 64 6f 77 5f 6f  70 65 6e 28 53 56 68 61  |window_open(SVha|
000017a0  6e 64 6c 65 32 25 29 20  8c 20 f2 73 61 76 65 5f  |ndle2%) . .save_|
000017b0  72 65 71 75 65 73 74 28  26 46 46 46 2c 73 61 76  |request(&FFF,sav|
000017c0  65 74 65 78 74 62 75 66  66 25 2c 52 70 74 72 25  |etextbuff%,Rptr%|
000017d0  2b 31 29 0d 06 36 0e 20  c9 20 38 3a f2 6b 65 79  |+1)..6. . 8:.key|
000017e0  73 0d 06 40 15 20 c9 20  39 3a f2 73 65 6c 65 63  |s..@. . 9:.selec|
000017f0  74 5f 6d 65 6e 75 0d 06  4a 16 20 c9 20 31 37 2c  |t_menu..J. . 17,|
00001800  31 38 3a f2 6d 65 73 73  61 67 65 73 0d 06 54 05  |18:.messages..T.|
00001810  cb 0d 06 5e 0d fd 20 65  6e 64 25 3d 2d 31 0d 06  |...^.. end%=-1..|
00001820  68 05 e1 0d 06 72 04 0d  06 7c 04 0d 06 86 0b dd  |h....r...|......|
00001830  20 f2 6b 65 79 73 0d 06  90 10 c8 8e 20 21 62 6c  | .keys...... !bl|
00001840  6f 63 6b 25 20 ca 0d 06  9a 1b 20 c9 20 43 43 68  |ock% ..... . CCh|
00001850  61 6e 64 6c 65 25 3a f2  6b 65 79 73 5f 63 61 6c  |andle%:.keys_cal|
00001860  63 0d 06 a4 1d 20 c9 20  4f 68 61 6e 64 6c 65 25  |c.... . Ohandle%|
00001870  3a f2 6f 77 6e 5f 73 75  6d 5f 6b 65 79 73 0d 06  |:.own_sum_keys..|
00001880  ae 1f 20 c9 20 4e 47 68  61 6e 64 6c 65 25 3a e7  |.. . NGhandle%:.|
00001890  20 63 72 65 61 74 65 25  3d 2d 31 20 8c 0d 06 b8  | create%=-1 ....|
000018a0  28 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |(               |
000018b0  20 20 f2 6b 65 79 73 5f  6e 61 6d 65 28 4e 61 6d  |  .keys_name(Nam|
000018c0  65 4e 6f 25 29 0d 06 c2  15 20 20 20 20 20 20 20  |eNo%)....       |
000018d0  20 20 20 20 20 20 20 20  20 cc 0d 06 cc 40 20 20  |         ....@  |
000018e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 e7  |               .|
000018f0  20 4e 61 6d 65 4e 6f 25  3d 4e 63 6f 75 6e 74 25  | NameNo%=Ncount%|
00001900  2b 31 20 8c 20 f2 6b 65  79 73 5f 6e 61 6d 65 28  |+1 . .keys_name(|
00001910  4e 63 6f 75 6e 74 25 2b  31 29 0d 06 d6 45 20 20  |Ncount%+1)...E  |
00001920  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 e7  |               .|
00001930  20 4e 61 6d 65 4e 6f 25  3e 30 20 80 20 62 6c 6f  | NameNo%>0 . blo|
00001940  63 6b 25 21 32 34 3d 31  33 20 8c 20 f2 6b 65 79  |ck%!24=13 . .key|
00001950  73 5f 6e 61 6d 65 28 4e  61 6d 65 4e 6f 25 29 0d  |s_name(NameNo%).|
00001960  06 e0 15 20 20 20 20 20  20 20 20 20 20 20 20 20  |...             |
00001970  20 20 20 cd 0d 06 ea 05  7f 0d 06 f4 22 20 c8 99  |   ........." ..|
00001980  22 57 69 6d 70 5f 50 72  6f 63 65 73 73 4b 65 79  |"Wimp_ProcessKey|
00001990  22 2c 62 6c 6f 63 6b 25  21 32 34 0d 06 fe 05 cb  |",block%!24.....|
000019a0  0d 07 08 05 e1 0d 07 12  04 0d 07 1c 04 0d 07 26  |...............&|
000019b0  0f dd 20 f2 6d 65 73 73  61 67 65 73 0d 07 30 12  |.. .messages..0.|
000019c0  c8 8e 20 62 6c 6f 63 6b  25 21 31 36 20 ca 0d 07  |.. block%!16 ...|
000019d0  3a 10 20 c9 20 30 3a 65  6e 64 25 3d 2d 31 0d 07  |:. . 0:end%=-1..|
000019e0  44 4b 20 c9 20 32 3a f4  20 49 46 20 46 4e 77 69  |DK . 2:. IF FNwi|
000019f0  6e 64 6f 77 5f 6f 70 65  6e 28 53 56 68 61 6e 64  |ndow_open(SVhand|
00001a00  6c 65 25 29 20 50 52 4f  43 73 61 76 65 5f 66 69  |le%) PROCsave_fi|
00001a10  6c 65 28 46 4e 73 74 72  69 6e 67 28 62 6c 6f 63  |le(FNstring(bloc|
00001a20  6b 25 2b 34 34 29 2c 30  29 0d 07 4e 4f 20 20 20  |k%+44),0)..NO   |
00001a30  20 20 20 20 20 e7 20 a4  77 69 6e 64 6f 77 5f 6f  |     . .window_o|
00001a40  70 65 6e 28 53 56 68 61  6e 64 6c 65 32 25 29 20  |pen(SVhandle2%) |
00001a50  f2 72 65 73 75 6c 74 73  5f 74 65 78 74 5f 66 69  |.results_text_fi|
00001a60  6c 65 28 a4 73 74 72 69  6e 67 28 62 6c 6f 63 6b  |le(.string(block|
00001a70  25 2b 34 34 29 2c 30 29  0d 07 58 24 20 20 20 20  |%+44),0)..X$    |
00001a80  20 20 20 20 f2 63 6c 6f  73 65 5f 77 69 6e 64 6f  |    .close_windo|
00001a90  77 28 53 6d 68 61 6e 64  6c 65 25 29 0d 07 62 2e  |w(Smhandle%)..b.|
00001aa0  20 c9 20 33 3a e7 20 62  6c 6f 63 6b 25 21 34 30  | . 3:. block%!40|
00001ab0  3d 26 46 46 44 20 8c 20  f2 64 72 61 67 5f 6c 6f  |=&FFD . .drag_lo|
00001ac0  61 64 5f 6d 65 73 73 61  67 65 0d 07 6c 1a 20 c9  |ad_message..l. .|
00001ad0  20 26 34 30 30 43 31 3a  f2 6d 6f 64 65 5f 63 68  | &400C1:.mode_ch|
00001ae0  61 6e 67 65 0d 07 76 2f  20 c9 20 35 3a e7 20 62  |ange..v/ . 5:. b|
00001af0  6c 6f 63 6b 25 21 34 30  3d 26 31 30 30 30 20 8c  |lock%!40=&1000 .|
00001b00  20 f2 62 72 6f 61 64 63  61 73 74 5f 6d 65 73 73  | .broadcast_mess|
00001b10  61 67 65 0d 07 80 05 cb  0d 07 8a 05 e1 0d 07 94  |age.............|
00001b20  04 0d 07 9e 04 0d 07 a8  18 dd 20 f2 64 72 61 67  |.......... .drag|
00001b30  5f 6c 6f 61 64 5f 6d 65  73 73 61 67 65 0d 07 b2  |_load_message...|
00001b40  1a ea 20 66 69 6c 65 24  2c 6c 65 61 66 24 2c 77  |.. file$,leaf$,w|
00001b50  68 61 6e 64 6c 65 25 0d  07 bc 16 77 68 61 6e 64  |handle%....whand|
00001b60  6c 65 25 3d 62 6c 6f 63  6b 25 21 32 30 0d 07 c6  |le%=block%!20...|
00001b70  1c 66 69 6c 65 24 3d a4  73 74 72 69 6e 67 28 62  |.file$=.string(b|
00001b80  6c 6f 63 6b 25 2b 34 34  29 0d 07 d0 53 f4 20 49  |lock%+44)...S. I|
00001b90  46 20 28 6e 6f 74 73 61  76 65 64 4f 25 20 4f 52  |F (notsavedO% OR|
00001ba0  20 6e 6f 74 73 61 76 65  64 52 25 29 3d 2d 31 20  | notsavedR%)=-1 |
00001bb0  54 48 45 4e 20 6e 65 78  74 66 69 6c 65 24 3d 66  |THEN nextfile$=f|
00001bc0  69 6c 65 24 3a 50 52 4f  43 65 6e 64 5f 73 61 76  |ile$:PROCend_sav|
00001bd0  65 28 33 29 3a 45 4e 44  50 52 4f 43 0d 07 da 04  |e(3):ENDPROC....|
00001be0  0d 07 e4 15 f2 6c 6f 61  64 5f 76 61 72 73 28 66  |.....load_vars(f|
00001bf0  69 6c 65 24 29 0d 07 ee  15 f2 6c 6f 61 64 5f 66  |ile$).....load_f|
00001c00  69 6c 65 28 66 69 6c 65  24 29 0d 07 f8 04 0d 08  |ile(file$)......|
00001c10  02 19 e7 20 77 68 61 6e  64 6c 65 25 3d 4c 68 61  |... whandle%=Lha|
00001c20  6e 64 6c 65 25 20 8c 0d  08 0c 1c 20 f2 72 65 73  |ndle% ..... .res|
00001c30  65 74 5f 69 63 6f 6e 28  4c 68 61 6e 64 6c 65 25  |et_icon(Lhandle%|
00001c40  2c 32 29 0d 08 16 05 cc  0d 08 20 28 20 e7 20 77  |,2)....... ( . w|
00001c50  68 61 6e 64 6c 65 25 3d  2d 32 20 8c 20 f2 6c 6f  |handle%=-2 . .lo|
00001c60  61 64 62 6f 78 5f 77 69  6e 64 6f 77 73 28 30 29  |adbox_windows(0)|
00001c70  0d 08 2a 05 cd 0d 08 34  05 e1 0d 08 3e 04 0d 08  |..*....4....>...|
00001c80  48 04 0d 08 52 17 dd 20  f2 6c 6f 61 64 5f 76 61  |H...R.. .load_va|
00001c90  72 73 28 66 69 6c 65 24  29 0d 08 5c 31 24 73 61  |rs(file$)..\1$sa|
00001ca0  76 65 62 75 66 66 25 3d  66 69 6c 65 24 3a 24 6c  |vebuff%=file$:$l|
00001cb0  6f 61 64 62 75 66 66 25  3d a4 67 65 74 6c 65 61  |oadbuff%=.getlea|
00001cc0  66 28 66 69 6c 65 24 2c  30 29 0d 08 66 26 70 61  |f(file$,0)..f&pa|
00001cd0  74 68 24 3d c0 66 69 6c  65 24 2c a9 20 66 69 6c  |th$=.file$,. fil|
00001ce0  65 24 2d a9 20 24 6c 6f  61 64 62 75 66 66 25 29  |e$-. $loadbuff%)|
00001cf0  0d 08 70 6b e7 20 a7 66  69 6c 65 24 2c 22 4d 66  |..pk. .file$,"Mf|
00001d00  69 6c 65 73 5f f7 22 29  20 8c 20 24 73 61 76 65  |iles_.") . $save|
00001d10  74 65 78 74 62 75 66 66  25 3d 70 61 74 68 24 2b  |textbuff%=path$+|
00001d20  22 72 65 73 75 6c 74 73  2e 22 2b 24 6c 6f 61 64  |"results."+$load|
00001d30  62 75 66 66 25 20 8b 20  24 73 61 76 65 74 65 78  |buff% . $savetex|
00001d40  74 62 75 66 66 25 3d 70  61 74 68 24 2b 22 52 22  |tbuff%=path$+"R"|
00001d50  2b 24 6c 6f 61 64 62 75  66 66 25 0d 08 7a 05 e1  |+$loadbuff%..z..|
00001d60  0d 08 84 04 0d 08 8e 04  0d 08 98 18 dd 20 f2 62  |............. .b|
00001d70  72 6f 61 64 63 61 73 74  5f 6d 65 73 73 61 67 65  |roadcast_message|
00001d80  0d 08 a2 35 e7 20 c2 a4  73 74 72 69 6e 67 28 62  |...5. ..string(b|
00001d90  6c 6f 63 6b 25 2b 34 34  29 2c 38 29 3d 22 4d 66  |lock%+44),8)="Mf|
00001da0  69 6c 65 73 5f f7 22 20  80 20 63 72 65 61 74 65  |iles_." . create|
00001db0  25 3c 30 20 8c 0d 08 ac  2c 20 70 61 74 68 24 3d  |%<0 ...., path$=|
00001dc0  a4 73 74 72 69 6e 67 28  62 6c 6f 63 6b 25 2b 34  |.string(block%+4|
00001dd0  34 29 3a 64 69 72 70 61  74 68 24 3d 70 61 74 68  |4):dirpath$=path|
00001de0  24 0d 08 b6 2a 20 24 6c  6f 61 64 62 75 66 66 25  |$...* $loadbuff%|
00001df0  3d 22 22 3a f2 72 65 73  65 74 5f 69 63 6f 6e 28  |="":.reset_icon(|
00001e00  4c 68 61 6e 64 6c 65 25  2c 32 29 0d 08 c0 1e 20  |Lhandle%,2).... |
00001e10  f2 73 68 61 64 65 5f 69  63 6f 6e 28 4c 68 61 6e  |.shade_icon(Lhan|
00001e20  64 6c 65 25 2c 31 2c 30  29 0d 08 ca 14 20 f2 73  |dle%,1,0).... .s|
00001e30  65 74 5f 75 70 5f 6c 6f  61 64 62 6f 78 0d 08 d4  |et_up_loadbox...|
00001e40  05 cd 0d 08 de 05 e1 0d  08 e8 04 0d 08 f2 04 0d  |................|
00001e50  08 fc 15 dd 20 f2 73 65  74 5f 75 70 5f 6c 6f 61  |.... .set_up_loa|
00001e60  64 62 6f 78 0d 09 06 1d  ea 20 69 74 65 6d 25 2c  |dbox..... item%,|
00001e70  66 69 6c 65 24 2c 6e 25  3a 69 74 65 6d 25 3d 2d  |file$,n%:item%=-|
00001e80  31 0d 09 10 31 f2 6c 6f  61 64 62 6f 78 5f 77 69  |1...1.loadbox_wi|
00001e90  6e 64 6f 77 73 28 2d 31  29 3a f2 63 6c 6f 73 65  |ndows(-1):.close|
00001ea0  5f 77 69 6e 64 6f 77 28  44 72 68 61 6e 64 6c 65  |_window(Drhandle|
00001eb0  25 29 0d 09 1a 2b e3 20  6e 25 3d 30 20 b8 20 31  |%)...+. n%=0 . 1|
00001ec0  34 3a 24 28 4d 65 6e 75  42 75 66 66 25 28 6e 25  |4:$(MenuBuff%(n%|
00001ed0  29 29 3d 22 22 3a ed 3a  6e 25 3d 2d 31 0d 09 24  |))="":.:n%=-1..$|
00001ee0  04 0d 09 2e 48 24 28 62  6c 6f 63 6b 25 2b 31 32  |....H$(block%+12|
00001ef0  29 3d 70 61 74 68 24 3a  c8 99 22 4f 53 5f 47 42  |)=path$:.."OS_GB|
00001f00  50 42 22 2c 39 2c 62 6c  6f 63 6b 25 2b 31 32 2c  |PB",9,block%+12,|
00001f10  62 6c 6f 63 6b 25 2c 31  2c 30 2c 31 31 20 b8 20  |block%,1,0,11 . |
00001f20  2c 2c 2c 2c 69 74 65 6d  25 0d 09 38 17 c8 95 20  |,,,,item%..8... |
00001f30  69 74 65 6d 25 3e 2d 31  20 80 20 6e 25 3c 31 34  |item%>-1 . n%<14|
00001f40  0d 09 42 1a 20 66 69 6c  65 24 3d a4 73 74 72 69  |..B. file$=.stri|
00001f50  6e 67 28 62 6c 6f 63 6b  25 29 0d 09 4c 37 20 e7  |ng(block%)..L7 .|
00001f60  20 66 69 6c 65 24 3c 3e  22 72 65 73 75 6c 74 73  | file$<>"results|
00001f70  22 20 8c 20 6e 25 20 2b  3d 31 3a 24 28 4d 65 6e  |" . n% +=1:$(Men|
00001f80  75 42 75 66 66 25 28 6e  25 29 29 3d 66 69 6c 65  |uBuff%(n%))=file|
00001f90  24 0d 09 56 3a 20 c8 99  22 4f 53 5f 47 42 50 42  |$..V: .."OS_GBPB|
00001fa0  22 2c 39 2c 62 6c 6f 63  6b 25 2b 31 32 2c 62 6c  |",9,block%+12,bl|
00001fb0  6f 63 6b 25 2c 31 2c 69  74 65 6d 25 2c 31 31 20  |ock%,1,item%,11 |
00001fc0  b8 20 2c 2c 2c 2c 69 74  65 6d 25 0d 09 60 05 ce  |. ,,,,item%..`..|
00001fd0  0d 09 6a 04 0d 09 74 13  70 61 74 68 24 3d 70 61  |..j...t.path$=pa|
00001fe0  74 68 24 2b 22 2e 22 0d  09 7e 05 e1 0d 09 88 04  |th$+"."..~......|
00001ff0  0d 09 92 04 0d 09 9c 16  dd 20 f2 73 65 6c 65 63  |......... .selec|
00002000  74 5f 6c 6f 61 64 66 69  6c 65 0d 09 a6 12 ea 20  |t_loadfile..... |
00002010  66 69 6c 65 24 2c 65 72  72 6f 72 25 0d 09 b0 36  |file$,error%...6|
00002020  c8 99 22 57 69 6d 70 5f  53 65 74 43 61 72 65 74  |.."Wimp_SetCaret|
00002030  50 6f 73 69 74 69 6f 6e  22 2c 4c 68 61 6e 64 6c  |Position",Lhandl|
00002040  65 25 2c 32 2c 34 36 2c  2d 32 31 30 2c 2d 31 2c  |e%,2,46,-210,-1,|
00002050  2d 31 0d 09 ba 26 e7 20  62 6c 6f 63 6b 25 21 31  |-1...&. block%!1|
00002060  36 3c 3e 33 20 84 20 24  6c 6f 61 64 62 75 66 66  |6<>3 . $loadbuff|
00002070  25 3d 22 22 20 8c 20 e1  0d 09 c4 1b f2 63 6c 6f  |%="" . ......clo|
00002080  73 65 5f 77 69 6e 64 6f  77 28 54 68 61 6e 64 6c  |se_window(Thandl|
00002090  65 25 29 0d 09 ce 04 0d  09 d8 1f 24 73 61 76 65  |e%)........$save|
000020a0  62 75 66 66 25 3d 70 61  74 68 24 2b 24 6c 6f 61  |buff%=path$+$loa|
000020b0  64 62 75 66 66 25 0d 09  e2 65 e7 20 a7 70 61 74  |dbuff%...e. .pat|
000020c0  68 24 2c 22 4d 66 69 6c  65 73 5f f7 22 29 20 8c  |h$,"Mfiles_.") .|
000020d0  20 24 73 61 76 65 74 65  78 74 62 75 66 66 25 3d  | $savetextbuff%=|
000020e0  70 61 74 68 24 2b 22 72  65 73 75 6c 74 73 2e 22  |path$+"results."|
000020f0  2b 24 6c 6f 61 64 62 75  66 66 25 20 8b 20 24 73  |+$loadbuff% . $s|
00002100  61 76 65 74 65 78 74 62  75 66 66 25 3d 22 52 22  |avetextbuff%="R"|
00002110  2b 24 73 61 76 65 62 75  66 66 25 0d 09 ec 04 0d  |+$savebuff%.....|
00002120  09 f6 0f e7 20 63 72 65  61 74 65 25 20 8c 0d 0a  |.... create% ...|
00002130  00 14 20 e7 20 a4 63 68  65 63 6b 5f 66 69 6c 65  |.. . .check_file|
00002140  20 8c 0d 0a 0a 1c 20 20  f2 6c 6f 61 64 5f 66 69  | .....  .load_fi|
00002150  6c 65 28 24 73 61 76 65  62 75 66 66 25 29 0d 0a  |le($savebuff%)..|
00002160  14 06 20 cc 0d 0a 1e 2b  20 20 f4 20 50 52 4f 43  |.. ....+  . PROC|
00002170  6c 6f 61 64 5f 66 69 6c  65 28 22 3c 6f 62 65 79  |load_file("<obey|
00002180  24 44 69 72 3e 2e 64 65  66 61 75 6c 74 22 29 0d  |$Dir>.default").|
00002190  0a 28 23 20 20 f4 20 50  52 4f 43 73 61 76 65 5f  |.(#  . PROCsave_|
000021a0  66 69 6c 65 28 24 73 61  76 65 62 75 66 66 25 2c  |file($savebuff%,|
000021b0  30 29 0d 0a 29 2b 20 20  24 44 65 6d 49 63 25 3d  |0)..)+  $DemIc%=|
000021c0  22 61 6c 6c 6f 77 73 20  66 69 6c 65 73 20 74 6f  |"allows files to|
000021d0  20 62 65 20 63 72 65 61  74 65 64 2e 22 0d 0a 2a  | be created."..*|
000021e0  2f 20 20 44 65 6d 68 61  6e 64 6c 65 25 3d a4 63  |/  Demhandle%=.c|
000021f0  72 65 61 74 65 5f 77 69  6e 64 6f 77 28 44 65 6d  |reate_window(Dem|
00002200  68 61 6e 64 6c 65 25 2c  22 59 22 29 0d 0a 32 06  |handle%,"Y")..2.|
00002210  20 cd 0d 0a 3c 18 20 f2  62 75 69 6c 64 5f 6e 61  | ...<. .build_na|
00002220  6d 65 5f 77 69 6e 64 6f  77 47 0d 0a 46 05 cd 0d  |me_windowG..F...|
00002230  0a 50 17 f2 6c 6f 61 64  62 6f 78 5f 77 69 6e 64  |.P..loadbox_wind|
00002240  6f 77 73 28 30 29 0d 0a  5a 05 e1 0d 0a 64 04 0d  |ows(0)..Z....d..|
00002250  0a 6e 04 0d 0a 78 1e dd  20 f2 73 65 6c 65 63 74  |.n...x.. .select|
00002260  5f 66 69 6c 65 5f 6d 65  6e 75 28 69 63 6f 6e 25  |_file_menu(icon%|
00002270  29 0d 0a 82 1e e7 20 24  4d 65 6e 75 42 75 66 66  |)..... $MenuBuff|
00002280  25 28 69 63 6f 6e 25 29  3d 22 22 20 8c 20 e1 0d  |%(icon%)="" . ..|
00002290  0a 8c 21 63 72 65 61 74  65 25 3d 2d 31 3a 70 61  |..!create%=-1:pa|
000022a0  74 68 24 3d 64 69 72 70  61 74 68 24 2b 22 2e 22  |th$=dirpath$+"."|
000022b0  0d 0a 96 1c f2 63 6c 6f  73 65 5f 77 69 6e 64 6f  |.....close_windo|
000022c0  77 28 49 63 68 61 6e 64  6c 65 25 29 0d 0a a0 20  |w(Ichandle%)... |
000022d0  24 6c 6f 61 64 62 75 66  66 25 3d 24 4d 65 6e 75  |$loadbuff%=$Menu|
000022e0  42 75 66 66 25 28 69 63  6f 6e 25 29 0d 0a aa 1b  |Buff%(icon%)....|
000022f0  f2 72 65 73 65 74 5f 69  63 6f 6e 28 4c 68 61 6e  |.reset_icon(Lhan|
00002300  64 6c 65 25 2c 32 29 0d  0a b4 05 e1 0d 0a be 04  |dle%,2).........|
00002310  0d 0a c8 04 0d 0a d2 11  dd 20 a4 63 68 65 63 6b  |......... .check|
00002320  5f 66 69 6c 65 0d 0a dc  0d ea 20 6e 25 2c 66 6c  |_file..... n%,fl|
00002330  67 25 0d 0a e6 05 f5 0d  0a f0 2a 20 e7 20 24 6c  |g%........* . $l|
00002340  6f 61 64 62 75 66 66 25  3d 24 4d 65 6e 75 42 75  |oadbuff%=$MenuBu|
00002350  66 66 25 28 6e 25 29 20  8c 20 66 6c 67 25 3d 2d  |ff%(n%) . flg%=-|
00002360  31 0d 0a fa 0b 20 6e 25  20 2b 3d 31 0d 0b 04 15  |1.... n% +=1....|
00002370  fd 20 6e 25 3d 31 35 20  84 20 66 6c 67 25 3d 2d  |. n%=15 . flg%=-|
00002380  31 0d 0b 0e 09 3d 66 6c  67 25 0d 0b 18 04 0d 0b  |1....=flg%......|
00002390  22 04 0d 0b 2c 1d dd 20  f2 6c 6f 61 64 62 6f 78  |"...,.. .loadbox|
000023a0  5f 77 69 6e 64 6f 77 73  28 6f 70 65 6e 25 29 0d  |_windows(open%).|
000023b0  0b 36 0d e7 20 6f 70 65  6e 25 20 8c 0d 0b 40 2a  |.6.. open% ...@*|
000023c0  20 4c 68 61 6e 64 6c 65  25 3d a4 63 65 6e 74 72  | Lhandle%=.centr|
000023d0  65 5f 77 69 6e 64 6f 77  28 4c 68 61 6e 64 6c 65  |e_window(Lhandle|
000023e0  25 2c 22 59 22 29 0d 0b  4a 37 20 4d 68 61 6e 64  |%,"Y")..J7 Mhand|
000023f0  6c 65 25 3d a4 72 65 6c  61 74 69 76 65 5f 77 69  |le%=.relative_wi|
00002400  6e 64 6f 77 28 4c 68 61  6e 64 6c 65 25 2c 4d 68  |ndow(Lhandle%,Mh|
00002410  61 6e 64 6c 65 25 2c 33  35 38 2c 30 29 0d 0b 54  |andle%,358,0)..T|
00002420  37 20 c8 99 22 57 69 6d  70 5f 53 65 74 43 61 72  |7 .."Wimp_SetCar|
00002430  65 74 50 6f 73 69 74 69  6f 6e 22 2c 4c 68 61 6e  |etPosition",Lhan|
00002440  64 6c 65 25 2c 32 2c 34  36 2c 2d 32 31 30 2c 2d  |dle%,2,46,-210,-|
00002450  31 2c 2d 31 0d 0b 5e 05  cc 0d 0b 68 1c 20 f2 63  |1,-1..^....h. .c|
00002460  6c 6f 73 65 5f 77 69 6e  64 6f 77 28 4c 68 61 6e  |lose_window(Lhan|
00002470  64 6c 65 25 29 0d 0b 72  1c 20 f2 63 6c 6f 73 65  |dle%)..r. .close|
00002480  5f 77 69 6e 64 6f 77 28  4d 68 61 6e 64 6c 65 25  |_window(Mhandle%|
00002490  29 0d 0b 7c 1d 20 f2 63  6c 6f 73 65 5f 77 69 6e  |)..|. .close_win|
000024a0  64 6f 77 28 49 63 68 61  6e 64 6c 65 25 29 0d 0b  |dow(Ichandle%)..|
000024b0  86 05 cd 0d 0b 90 05 e1  0d 0b 9a 04 0d 0b a4 04  |................|
000024c0  0d 0b ae 12 dd 20 f2 6d  6f 64 65 5f 63 68 61 6e  |..... .mode_chan|
000024d0  67 65 0d 0b b8 22 f2 74  72 61 6e 73 74 61 62 6c  |ge...".transtabl|
000024e0  65 28 31 32 2c 70 61 6c  25 2c 2d 31 2c 74 72 61  |e(12,pal%,-1,tra|
000024f0  6e 73 25 29 0d 0b c2 21  f2 63 75 72 72 65 6e 74  |ns%)...!.current|
00002500  5f 6d 6f 64 65 5f 66 61  63 74 6f 72 73 28 73 63  |_mode_factors(sc|
00002510  61 6c 65 25 29 0d 0b cc  23 f2 63 75 72 72 65 6e  |ale%)...#.curren|
00002520  74 5f 6d 6f 64 65 5f 66  61 63 74 6f 72 73 28 73  |t_mode_factors(s|
00002530  63 61 6c 65 32 37 25 29  0d 0b d6 1e f2 6d 65 73  |cale27%).....mes|
00002540  73 61 67 65 5f 6d 6f 64  65 5f 69 6e 64 65 70 65  |sage_mode_indepe|
00002550  6e 64 61 6e 63 65 0d 0b  e0 25 64 72 61 77 66 6f  |ndance...%drawfo|
00002560  6e 74 25 3d 28 67 61 6d  65 25 3e 30 20 80 20 53  |nt%=(game%>0 . S|
00002570  43 66 6f 72 6d 61 74 25  3d 32 29 0d 0b ea 10 f2  |Cformat%=2).....|
00002580  73 65 74 5f 77 69 6e 64  6f 77 73 0d 0b f4 44 e7  |set_windows...D.|
00002590  20 a4 77 69 6e 64 6f 77  5f 6f 70 65 6e 28 4f 68  | .window_open(Oh|
000025a0  61 6e 64 6c 65 25 29 20  8c 20 4f 68 61 6e 64 6c  |andle%) . Ohandl|
000025b0  65 25 3d a4 63 65 6e 74  72 65 5f 77 69 6e 64 6f  |e%=.centre_windo|
000025c0  77 28 4f 68 61 6e 64 6c  65 25 2c 22 59 22 29 0d  |w(Ohandle%,"Y").|
000025d0  0b fe 33 e7 20 a4 77 69  6e 64 6f 77 5f 6f 70 65  |..3. .window_ope|
000025e0  6e 28 4c 68 61 6e 64 6c  65 25 29 20 8c 20 f2 6c  |n(Lhandle%) . .l|
000025f0  6f 61 64 62 6f 78 5f 77  69 6e 64 6f 77 73 28 2d  |oadbox_windows(-|
00002600  31 29 0d 0c 08 47 e7 20  a4 77 69 6e 64 6f 77 5f  |1)...G. .window_|
00002610  6f 70 65 6e 28 43 43 68  61 6e 64 6c 65 25 29 20  |open(CChandle%) |
00002620  8c 20 43 43 68 61 6e 64  6c 65 25 3d a4 63 65 6e  |. CChandle%=.cen|
00002630  74 72 65 5f 77 69 6e 64  6f 77 28 43 43 68 61 6e  |tre_window(CChan|
00002640  64 6c 65 25 2c 22 59 22  29 0d 0c 12 43 e7 20 a4  |dle%,"Y")...C. .|
00002650  77 69 6e 64 6f 77 5f 6f  70 65 6e 28 44 68 61 6e  |window_open(Dhan|
00002660  64 6c 65 25 29 20 8c 20  44 68 61 6e 64 6c 65 25  |dle%) . Dhandle%|
00002670  3d a4 63 65 6e 74 72 65  5f 77 69 6e 64 6f 77 28  |=.centre_window(|
00002680  44 68 61 6e 64 6c 65 25  2c 22 22 29 0d 0c 1c 05  |Dhandle%,"")....|
00002690  e1 0d 0c 26 04 0d 0c 30  04 0d 0c 3a 12 dd 20 f2  |...&...0...:.. .|
000026a0  73 65 6c 65 63 74 5f 6d  65 6e 75 0d 0c 44 09 ea  |select_menu..D..|
000026b0  20 6e 6f 25 0d 0c 4e 10  c8 8e 20 21 62 6c 6f 63  | no%..N... !bloc|
000026c0  6b 25 20 ca 0d 0c 58 14  20 c9 20 31 3a 6e 6f 25  |k% ...X. . 1:no%|
000026d0  3d 4e 61 6d 65 4e 6f 25  0d 0c 62 22 20 20 20 20  |=NameNo%..b"    |
000026e0  20 20 20 20 f2 73 65 74  5f 63 6f 6e 66 69 67 5f  |    .set_config_|
000026f0  74 69 74 6c 65 28 6e 6f  25 29 0d 0c 6c 21 20 20  |title(no%)..l!  |
00002700  20 20 20 20 20 20 f2 73  65 74 5f 70 72 65 66 65  |      .set_prefe|
00002710  72 65 6e 63 65 73 28 6e  6f 25 29 0d 0c 76 30 20  |rences(no%)..v0 |
00002720  20 20 20 20 20 20 20 43  68 61 6e 64 6c 65 25 3d  |       Chandle%=|
00002730  a4 63 65 6e 74 72 65 5f  77 69 6e 64 6f 77 28 43  |.centre_window(C|
00002740  68 61 6e 64 6c 65 25 2c  22 22 29 0d 0c 80 27 20  |handle%,"")...' |
00002750  c9 20 32 3a 63 72 65 61  74 65 25 3d 2d 31 3a f2  |. 2:create%=-1:.|
00002760  62 75 69 6c 64 5f 6e 61  6d 65 5f 77 69 6e 64 6f  |build_name_windo|
00002770  77 47 0d 0c 8a 38 20 c9  20 33 3a 63 72 65 61 74  |wG...8 . 3:creat|
00002780  65 25 3d 2d 32 3a f2 6f  70 65 6e 5f 77 69 6e 64  |e%=-2:.open_wind|
00002790  6f 77 28 44 72 68 61 6e  64 6c 65 25 29 3a 6e 65  |ow(Drhandle%):ne|
000027a0  78 74 66 69 6c 65 24 3d  22 22 0d 0c 94 3b 20 20  |xtfile$=""...;  |
000027b0  20 20 20 20 20 20 e7 20  67 61 6d 65 25 20 8c 20  |      . game% . |
000027c0  f2 63 6c 6f 73 65 5f 77  69 6e 64 6f 77 28 68 61  |.close_window(ha|
000027d0  6e 64 6c 65 25 28 67 61  6d 65 25 29 29 3a 67 61  |ndle%(game%)):ga|
000027e0  6d 65 25 3d 30 0d 0c 9e  43 20 20 20 20 20 20 20  |me%=0...C       |
000027f0  20 f4 20 49 46 20 28 6e  6f 74 73 61 76 65 64 4f  | . IF (notsavedO|
00002800  25 20 4f 52 20 6e 6f 74  73 61 76 65 64 52 25 29  |% OR notsavedR%)|
00002810  3d 2d 31 20 54 48 45 4e  20 50 52 4f 43 65 6e 64  |=-1 THEN PROCend|
00002820  5f 73 61 76 65 28 33 29  0d 0c a8 27 20 c9 20 34  |_save(3)...' . 4|
00002830  3a f4 20 50 52 4f 43 73  61 76 65 5f 66 69 6c 65  |:. PROCsave_file|
00002840  28 24 73 61 76 65 62 75  66 66 25 2c 2d 31 29 0d  |($savebuff%,-1).|
00002850  0c a9 32 20 20 20 20 20  20 20 20 24 44 65 6d 49  |..2        $DemI|
00002860  63 25 3d 22 73 61 76 65  73 20 74 68 65 20 63 68  |c%="saves the ch|
00002870  69 6c 64 72 65 6e 27 73  20 6c 65 76 65 6c 73 2e  |ildren's levels.|
00002880  22 0d 0c aa 35 20 20 20  20 20 20 20 20 44 65 6d  |"...5        Dem|
00002890  68 61 6e 64 6c 65 25 3d  a4 63 65 6e 74 72 65 5f  |handle%=.centre_|
000028a0  77 69 6e 64 6f 77 28 44  65 6d 68 61 6e 64 6c 65  |window(Demhandle|
000028b0  25 2c 22 59 22 29 0d 0c  b2 1d 20 c9 20 35 3a f2  |%,"Y").... . 5:.|
000028c0  73 65 6c 65 63 74 5f 6d  65 6e 75 5f 72 65 73 75  |select_menu_resu|
000028d0  6c 74 73 0d 0c bc 20 20  c9 20 36 3a f4 20 65 6e  |lts...  . 6:. en|
000028e0  70 72 69 6e 74 25 3d 4e  4f 54 20 65 6e 70 72 69  |print%=NOT enpri|
000028f0  6e 74 25 0d 0c c6 24 20  20 20 20 20 20 20 20 e7  |nt%...$        .|
00002900  20 65 6e 70 72 69 6e 74  25 3d 30 20 8c 20 64 72  | enprint%=0 . dr|
00002910  69 76 65 72 25 3d 30 0d  0c d0 2f 20 20 20 20 20  |iver%=0.../     |
00002920  20 20 20 f4 20 50 52 4f  43 73 69 6e 67 6c 65 5f  |   . PROCsingle_|
00002930  74 69 63 6b 28 6d 65 6e  75 25 2c 36 2c 65 6e 70  |tick(menu%,6,enp|
00002940  72 69 6e 74 25 29 0d 0c  da 36 20 20 20 20 20 20  |rint%)...6      |
00002950  20 20 f4 20 49 46 20 4e  61 6d 65 4e 6f 25 20 54  |  . IF NameNo% T|
00002960  48 45 4e 20 50 52 4f 43  73 65 74 5f 70 72 69 6e  |HEN PROCset_prin|
00002970  74 65 72 28 4e 61 6d 65  4e 6f 25 29 0d 0c db 29  |ter(NameNo%)...)|
00002980  20 20 20 20 20 20 20 20  24 44 65 6d 49 63 25 3d  |        $DemIc%=|
00002990  22 63 61 6e 20 70 72 69  6e 74 20 6f 75 74 20 73  |"can print out s|
000029a0  75 6d 73 2e 22 0d 0c dc  35 20 20 20 20 20 20 20  |ums."...5       |
000029b0  20 44 65 6d 68 61 6e 64  6c 65 25 3d a4 63 65 6e  | Demhandle%=.cen|
000029c0  74 72 65 5f 77 69 6e 64  6f 77 28 44 65 6d 68 61  |tre_window(Demha|
000029d0  6e 64 6c 65 25 2c 22 59  22 29 0d 0c e4 1a 20 c9  |ndle%,"Y").... .|
000029e0  20 37 3a 73 63 72 65 65  6e 25 3d ac 20 73 63 72  | 7:screen%=. scr|
000029f0  65 65 6e 25 0d 0c ee 29  20 20 20 20 20 20 20 20  |een%...)        |
00002a00  f2 73 69 6e 67 6c 65 5f  74 69 63 6b 28 6d 65 6e  |.single_tick(men|
00002a10  75 25 2c 37 2c 73 63 72  65 65 6e 25 29 0d 0c f8  |u%,7,screen%)...|
00002a20  18 20 20 20 20 20 20 20  20 f2 73 65 74 5f 77 69  |.        .set_wi|
00002a30  6e 64 6f 77 73 0d 0d 02  6f 20 c9 20 38 3a f4 20  |ndows...o . 8:. |
00002a40  49 46 20 28 6e 6f 74 73  61 76 65 64 4f 25 20 4f  |IF (notsavedO% O|
00002a50  52 20 6e 6f 74 73 61 76  65 64 52 25 29 3d 2d 31  |R notsavedR%)=-1|
00002a60  20 41 4e 44 20 70 61 74  68 24 3c 3e 22 22 20 54  | AND path$<>"" T|
00002a70  48 45 4e 20 6e 65 78 74  66 69 6c 65 24 3d 22 22  |HEN nextfile$=""|
00002a80  3a 50 52 4f 43 65 6e 64  5f 73 61 76 65 28 33 29  |:PROCend_save(3)|
00002a90  3a 65 6e 64 25 3d 31 20  45 4c 53 45 20 65 6e 64  |:end%=1 ELSE end|
00002aa0  25 3d 2d 31 0d 0d 03 13  20 20 20 20 20 20 20 20  |%=-1....        |
00002ab0  65 6e 64 25 3d 2d 31 0d  0d 0c 05 cb 0d 0d 16 20  |end%=-1........ |
00002ac0  f2 6d 65 6e 75 5f 61 64  6a 75 73 74 28 6d 65 6e  |.menu_adjust(men|
00002ad0  75 25 2c 62 6c 6f 63 6b  25 2c 39 29 0d 0d 20 05  |u%,block%,9).. .|
00002ae0  e1 0d 0d 2a 04 0d 0d 34  04 0d 0d 3e 16 dd 20 f2  |...*...4...>.. .|
00002af0  65 6e 64 5f 73 61 76 65  28 66 69 6c 65 25 29 0d  |end_save(file%).|
00002b00  0d 48 4c e7 20 6e 6f 74  73 61 76 65 64 4f 25 3d  |.HL. notsavedO%=|
00002b10  2d 31 20 80 20 28 66 69  6c 65 25 3d 31 20 84 20  |-1 . (file%=1 . |
00002b20  66 69 6c 65 25 3d 33 29  20 8c 20 24 45 69 63 62  |file%=3) . $Eicb|
00002b30  75 66 66 25 3d 22 63 75  72 72 65 6e 74 20 67 72  |uff%="current gr|
00002b40  6f 75 70 20 66 69 6c 65  20 3f 22 0d 0d 52 46 e7  |oup file ?"..RF.|
00002b50  20 6e 6f 74 73 61 76 65  64 52 25 3d 2d 31 20 80  | notsavedR%=-1 .|
00002b60  20 28 66 69 6c 65 25 3d  32 20 84 20 66 69 6c 65  | (file%=2 . file|
00002b70  25 3d 33 29 20 8c 20 24  45 69 63 62 75 66 66 25  |%=3) . $Eicbuff%|
00002b80  3d 22 72 65 73 75 6c 74  73 20 66 69 6c 65 20 3f  |="results file ?|
00002b90  22 0d 0d 5c 53 e7 20 28  6e 6f 74 73 61 76 65 64  |"..\S. (notsaved|
00002ba0  4f 25 20 80 20 6e 6f 74  73 61 76 65 64 52 25 29  |O% . notsavedR%)|
00002bb0  3d 2d 31 20 80 20 66 69  6c 65 25 3d 33 20 8c 20  |=-1 . file%=3 . |
00002bc0  24 45 69 63 62 75 66 66  25 3d 22 67 72 6f 75 70  |$Eicbuff%="group|
00002bd0  20 61 6e 64 20 72 65 73  75 6c 74 73 20 66 69 6c  | and results fil|
00002be0  65 20 3f 22 0d 0d 66 1a  f2 6f 70 65 6e 5f 77 69  |e ?"..f..open_wi|
00002bf0  6e 64 6f 77 28 45 68 61  6e 64 6c 65 25 29 0d 0d  |ndow(Ehandle%)..|
00002c00  70 11 73 61 76 65 6e 64  25 3d 66 69 6c 65 25 0d  |p.savend%=file%.|
00002c10  0d 7a 05 e1 0d 0d 84 04  0d 0d 8e 04 0d 0d 98 25  |.z.............%|
00002c20  dd 20 f2 6d 65 6e 75 5f  61 64 6a 75 73 74 28 6d  |. .menu_adjust(m|
00002c30  65 6e 75 25 2c 62 6c 6f  63 6b 25 2c 6e 75 6d 25  |enu%,block%,num%|
00002c40  29 0d 0d a2 23 c8 99 22  57 69 6d 70 5f 47 65 74  |)...#.."Wimp_Get|
00002c50  50 6f 69 6e 74 65 72 49  6e 66 6f 22 2c 2c 62 6c  |PointerInfo",,bl|
00002c60  6f 63 6b 25 0d 0d ac 30  e7 20 62 6c 6f 63 6b 25  |ock%...0. block%|
00002c70  21 38 3d 31 20 8c 20 f2  73 68 6f 77 5f 6d 65 6e  |!8=1 . .show_men|
00002c80  75 28 6d 65 6e 75 25 2c  62 6c 6f 63 6b 25 2c 6e  |u(menu%,block%,n|
00002c90  75 6d 25 29 0d 0d b6 05  e1 0d 0d c0 04 0d 0d ca  |um%)............|
00002ca0  04 0d 0d d4 1a dd 20 f2  73 65 6c 65 63 74 5f 6d  |...... .select_m|
00002cb0  65 6e 75 5f 72 65 73 75  6c 74 73 0d 0d de 11 c8  |enu_results.....|
00002cc0  8e 20 62 6c 6f 63 6b 25  21 34 20 ca 0d 0d e8 2d  |. block%!4 ....-|
00002cd0  20 c9 20 30 3a 44 68 61  6e 64 6c 65 25 3d a4 63  | . 0:Dhandle%=.c|
00002ce0  65 6e 74 72 65 5f 77 69  6e 64 6f 77 28 44 68 61  |entre_window(Dha|
00002cf0  6e 64 6c 65 25 2c 22 22  29 0d 0d f2 1e 20 c9 20  |ndle%,"").... . |
00002d00  31 3a f2 70 72 69 6e 74  6f 75 74 5f 72 65 73 75  |1:.printout_resu|
00002d10  6c 74 73 28 2d 31 29 0d  0d fc 1d 20 c9 20 32 3a  |lts(-1).... . 2:|
00002d20  f2 70 72 69 6e 74 6f 75  74 5f 72 65 73 75 6c 74  |.printout_result|
00002d30  73 28 30 29 0d 0e 06 2e  20 c9 20 33 3a f2 72 65  |s(0).... . 3:.re|
00002d40  73 75 6c 74 73 5f 74 65  78 74 5f 66 69 6c 65 28  |sults_text_file(|
00002d50  24 73 61 76 65 74 65 78  74 62 75 66 66 25 2c 2d  |$savetextbuff%,-|
00002d60  31 29 0d 0e 10 20 20 c9  20 34 3a 61 75 74 6f 73  |1)...  . 4:autos|
00002d70  61 76 65 52 25 3d ac 20  61 75 74 6f 73 61 76 65  |aveR%=. autosave|
00002d80  52 25 0d 0e 1a 2d 20 20  20 20 20 20 20 20 f2 73  |R%...-        .s|
00002d90  69 6e 67 6c 65 5f 74 69  63 6b 28 72 6d 65 6e 75  |ingle_tick(rmenu|
00002da0  25 2c 34 2c 61 75 74 6f  73 61 76 65 52 25 29 0d  |%,4,autosaveR%).|
00002db0  0e 24 31 20 c9 20 35 3a  e7 20 6e 6f 74 73 61 76  |.$1 . 5:. notsav|
00002dc0  65 64 52 25 20 8c 20 6e  65 78 74 66 69 6c 65 24  |edR% . nextfile$|
00002dd0  3d 22 22 3a f2 65 6e 64  5f 73 61 76 65 28 32 29  |="":.end_save(2)|
00002de0  0d 0e 2e 1a 20 20 20 20  20 20 20 20 f2 72 65 73  |....        .res|
00002df0  65 74 5f 72 65 73 75 6c  74 73 0d 0e 38 05 cb 0d  |et_results..8...|
00002e00  0e 42 05 e1 0d 0e 4c 04  0d 0e 56 04 0d 0e 60 0e  |.B....L...V...`.|
00002e10  dd 20 f2 65 6e 64 28 66  25 29 0d 0e 6a 16 e7 20  |. .end(f%)..j.. |
00002e20  66 25 20 8c 20 f2 6c 6f  73 65 5f 66 6f 6e 74 73  |f% . .lose_fonts|
00002e30  0d 0e 74 0c 2a 50 4f 49  4e 54 45 52 0d 0e 7e 19  |..t.*POINTER..~.|
00002e40  2a 53 45 54 20 4d 61 74  68 73 24 52 75 6e 6e 69  |*SET Maths$Runni|
00002e50  6e 67 20 3c 3e 0d 0e 88  16 c8 99 22 57 69 6d 70  |ng <>......"Wimp|
00002e60  5f 43 6c 6f 73 65 44 6f  77 6e 22 0d 0e 92 05 e1  |_CloseDown".....|
00002e70  0d 0e 9c 04 0d 0e a6 04  0d 0e b0 13 dd 20 f2 6f  |............. .o|
00002e80  70 65 6e 5f 77 69 6e 64  6f 77 73 0d 0e ba 1f c8  |pen_windows.....|
00002e90  99 22 57 69 6d 70 5f 4f  70 65 6e 57 69 6e 64 6f  |."Wimp_OpenWindo|
00002ea0  77 22 2c 2c 62 6c 6f 63  6b 25 0d 0e c4 1e e7 20  |w",,block%..... |
00002eb0  21 62 6c 6f 63 6b 25 3d  68 61 6e 64 6c 65 25 28  |!block%=handle%(|
00002ec0  67 61 6d 65 25 29 20 8c  0d 0e ce 37 20 e7 20 4f  |game%) ....7 . O|
00002ed0  77 69 6e 25 3d 2d 31 20  8c 20 4f 68 61 6e 64 6c  |win%=-1 . Ohandl|
00002ee0  65 25 3d a4 63 65 6e 74  72 65 5f 77 69 6e 64 6f  |e%=.centre_windo|
00002ef0  77 28 4f 68 61 6e 64 6c  65 25 2c 22 59 22 29 0d  |w(Ohandle%,"Y").|
00002f00  0e d8 36 20 e7 20 a4 77  69 6e 64 6f 77 5f 6f 70  |..6 . .window_op|
00002f10  65 6e 28 43 68 61 6e 64  6c 65 25 29 20 8c 20 f2  |en(Chandle%) . .|
00002f20  6f 70 65 6e 5f 77 69 6e  64 6f 77 28 43 68 61 6e  |open_window(Chan|
00002f30  64 6c 65 25 29 0d 0e e2  05 cd 0d 0e ec 4b e7 20  |dle%)........K. |
00002f40  21 62 6c 6f 63 6b 25 3d  4c 68 61 6e 64 6c 65 25  |!block%=Lhandle%|
00002f50  20 8c 20 4d 68 61 6e 64  6c 65 25 3d a4 72 65 6c  | . Mhandle%=.rel|
00002f60  61 74 69 76 65 5f 77 69  6e 64 6f 77 28 4c 68 61  |ative_window(Lha|
00002f70  6e 64 6c 65 25 2c 4d 68  61 6e 64 6c 65 25 2c 33  |ndle%,Mhandle%,3|
00002f80  35 38 2c 30 29 0d 0e f6  05 e1 0d 0f 00 04 0d 0f  |58,0)...........|
00002f90  0a 04 0d 0f 14 14 dd 20  f2 63 6c 6f 73 65 5f 77  |....... .close_w|
00002fa0  69 6e 64 6f 77 73 0d 0f  1e 10 c8 8e 20 21 62 6c  |indows...... !bl|
00002fb0  6f 63 6b 25 20 ca 0d 0f  28 52 20 c9 20 68 61 6e  |ock% ...(R . han|
00002fc0  64 6c 65 25 28 67 61 6d  65 25 29 3a 53 54 68 61  |dle%(game%):STha|
00002fd0  6e 64 6c 65 25 3d a4 72  65 6c 61 74 69 76 65 5f  |ndle%=.relative_|
00002fe0  77 69 6e 64 6f 77 28 68  61 6e 64 6c 65 25 28 67  |window(handle%(g|
00002ff0  61 6d 65 25 29 2c 53 54  68 61 6e 64 6c 65 25 2c  |ame%),SThandle%,|
00003000  34 35 30 2c 35 35 36 29  0d 0f 32 3d 20 c9 20 4e  |450,556)..2= . N|
00003010  47 68 61 6e 64 6c 65 25  3a 63 72 65 61 74 65 25  |Ghandle%:create%|
00003020  3d 30 3a 4e 61 6d 65 4e  6f 25 3d 30 3a f2 63 6c  |=0:NameNo%=0:.cl|
00003030  6f 73 65 5f 77 69 6e 64  6f 77 28 4e 47 68 61 6e  |ose_window(NGhan|
00003040  64 6c 65 25 29 0d 0f 3c  2a 20 20 20 20 20 20 20  |dle%)..<*       |
00003050  20 20 20 20 20 20 20 20  20 f2 73 68 61 64 65 5f  |         .shade_|
00003060  69 74 65 6d 28 6d 65 6e  75 25 2c 31 2c 31 29 0d  |item(menu%,1,1).|
00003070  0f 46 34 20 c9 20 50 32  68 61 6e 64 6c 65 25 3a  |.F4 . P2handle%:|
00003080  50 63 6f 75 6e 74 25 3d  2d 31 3a f2 63 6c 6f 73  |Pcount%=-1:.clos|
00003090  65 5f 77 69 6e 64 6f 77  28 50 32 68 61 6e 64 6c  |e_window(P2handl|
000030a0  65 25 29 0d 0f 50 2e 20  c9 20 4c 68 61 6e 64 6c  |e%)..P. . Lhandl|
000030b0  65 25 3a f2 6c 6f 61 64  62 6f 78 5f 77 69 6e 64  |e%:.loadbox_wind|
000030c0  6f 77 73 28 30 29 3a 63  72 65 61 74 65 25 3d 2d  |ows(0):create%=-|
000030d0  32 0d 0f 5a 05 7f 0d 0f  64 1b 20 f2 63 6c 6f 73  |2..Z....d. .clos|
000030e0  65 5f 77 69 6e 64 6f 77  28 21 62 6c 6f 63 6b 25  |e_window(!block%|
000030f0  29 0d 0f 6e 05 cb 0d 0f  78 05 e1 0d 0f 82 04 0d  |)..n....x.......|
00003100  0f 8c 04 0d 0f 96 0d dd  20 f2 72 65 64 72 61 77  |........ .redraw|
00003110  0d 0f a0 22 ea 20 66 6c  67 25 2c 48 61 6e 64 6c  |...". flg%,Handl|
00003120  65 25 3a 48 61 6e 64 6c  65 25 3d 21 62 6c 6f 63  |e%:Handle%=!bloc|
00003130  6b 25 0d 0f aa 26 f2 77  6f 72 6b 5f 61 72 65 61  |k%...&.work_area|
00003140  5f 6f 72 69 67 69 6e 28  21 62 6c 6f 63 6b 25 2c  |_origin(!block%,|
00003150  6f 78 25 2c 6f 79 25 29  0d 0f b4 28 c8 99 22 57  |ox%,oy%)...(.."W|
00003160  69 6d 70 5f 52 65 64 72  61 77 57 69 6e 64 6f 77  |imp_RedrawWindow|
00003170  22 2c 2c 62 6c 6f 63 6b  25 20 b8 20 66 6c 67 25  |",,block% . flg%|
00003180  0d 0f be 0b c8 95 20 66  6c 67 25 0d 0f c8 11 20  |...... flg%.... |
00003190  c8 8e 20 48 61 6e 64 6c  65 25 20 ca 0d 0f d2 23  |.. Handle% ....#|
000031a0  20 20 c9 20 68 61 6e 64  6c 65 25 28 67 61 6d 65  |  . handle%(game|
000031b0  25 29 3a f2 72 65 64 72  61 77 5f 67 61 6d 65 0d  |%):.redraw_game.|
000031c0  0f dc 24 20 20 c9 20 4e  47 68 61 6e 64 6c 65 25  |..$  . NGhandle%|
000031d0  3a f2 72 65 64 72 61 77  5f 63 6c 61 73 73 5f 6c  |:.redraw_class_l|
000031e0  69 73 74 0d 0f e6 30 20  20 c9 20 44 68 61 6e 64  |ist...0  . Dhand|
000031f0  6c 65 25 3a f2 73 65 74  5f 72 65 73 75 6c 74 73  |le%:.set_results|
00003200  5f 77 69 6e 64 6f 77 28  6f 78 25 2c 6f 79 25 2c  |_window(ox%,oy%,|
00003210  2d 31 29 0d 0f f0 06 20  cb 0d 0f fa 29 20 c8 99  |-1).... ....) ..|
00003220  22 57 69 6d 70 5f 47 65  74 52 65 63 74 61 6e 67  |"Wimp_GetRectang|
00003230  6c 65 22 2c 2c 62 6c 6f  63 6b 25 20 b8 20 66 6c  |le",,block% . fl|
00003240  67 25 0d 10 04 05 ce 0d  10 0e 05 e1 0d 10 18 04  |g%..............|
00003250  0d 10 22 04 0d 10 2c 12  dd 20 f2 72 65 64 72 61  |.."...,.. .redra|
00003260  77 5f 67 61 6d 65 0d 10  36 08 ea 20 79 25 0d 10  |w_game..6.. y%..|
00003270  40 09 f2 67 72 69 64 0d  10 4a 04 0d 10 54 2a e7  |@..grid..J...T*.|
00003280  20 53 43 66 6f 72 6d 61  74 25 3d 32 20 84 20 65  | SCformat%=2 . e|
00003290  73 74 69 6d 61 74 65 25  28 4e 61 6d 65 4e 6f 25  |stimate%(NameNo%|
000032a0  29 3d 30 20 8c 0d 10 5e  1c 20 f2 73 75 6d 5f 70  |)=0 ...^. .sum_p|
000032b0  61 72 74 73 3a f2 73 75  6d 5f 6e 75 6d 62 65 72  |arts:.sum_number|
000032c0  73 0d 10 68 2c 20 e7 20  6d 6f 64 65 25 28 4e 61  |s..h, . mode%(Na|
000032d0  6d 65 4e 6f 25 29 20 8c  20 f2 69 6e 70 75 74 5f  |meNo%) . .input_|
000032e0  62 6f 78 28 6e 65 78 74  64 69 67 25 29 0d 10 72  |box(nextdig%)..r|
000032f0  16 20 e7 20 6d 61 72 6b  65 64 25 20 8c 20 f2 6d  |. . marked% . .m|
00003300  61 72 6b 0d 10 7c 67 20  e7 20 4d 66 6c 67 25 20  |ark..|g . Mflg% |
00003310  80 20 64 72 61 77 66 6f  6e 74 25 3d 30 20 8c 20  |. drawfont%=0 . |
00003320  c8 99 22 4f 53 5f 53 70  72 69 74 65 4f 70 22 2c  |.."OS_SpriteOp",|
00003330  26 31 33 34 2c 73 61 72  65 61 25 2c 22 6d 65 73  |&134,sarea%,"mes|
00003340  73 61 67 65 22 2c 6f 78  25 2b a4 64 69 67 78 28  |sage",ox%+.digx(|
00003350  30 2c 2d 33 29 2c 6f 79  25 2b 59 70 6f 73 25 28  |0,-3),oy%+Ypos%(|
00003360  34 29 2c 30 2c 2d 31 2c  2d 31 0d 10 86 05 cc 0d  |4),0,-1,-1......|
00003370  10 90 54 20 c8 99 22 4f  53 5f 53 70 72 69 74 65  |..T .."OS_Sprite|
00003380  4f 70 22 2c 26 31 33 34  2c 73 61 72 65 61 25 2c  |Op",&134,sarea%,|
00003390  22 65 73 74 69 6d 61 74  65 22 2c 6f 78 25 2b 36  |"estimate",ox%+6|
000033a0  34 2c 6f 79 25 2b 59 70  6f 73 25 28 34 29 2d 31  |4,oy%+Ypos%(4)-1|
000033b0  36 2c 38 2c 73 63 61 6c  65 32 37 25 2c 74 72 61  |6,8,scale27%,tra|
000033c0  6e 73 25 0d 10 9a 14 20  f2 70 6c 61 63 65 5f 65  |ns%.... .place_e|
000033d0  73 74 69 6d 61 74 65 0d  10 a4 15 20 f2 73 75 6d  |stimate.... .sum|
000033e0  5f 6e 75 6d 62 65 72 73  5f 65 73 74 0d 10 ae 05  |_numbers_est....|
000033f0  cd 0d 10 b8 04 0d 10 c2  54 c8 99 22 4f 53 5f 53  |........T.."OS_S|
00003400  70 72 69 74 65 4f 70 22  2c 26 31 33 34 2c 73 61  |priteOp",&134,sa|
00003410  72 65 61 25 2c 22 62 61  63 6b 74 6f 70 31 22 2c  |rea%,"backtop1",|
00003420  6f 78 25 2b 31 35 30 2c  6f 79 25 2d 31 34 36 2c  |ox%+150,oy%-146,|
00003430  30 2c 73 63 61 6c 65 25  2c 74 72 61 6e 73 25 3a  |0,scale%,trans%:|
00003440  f4 20 72 75 62 20 6f 75  74 0d 10 cc 92 e7 20 64  |. rub out..... d|
00003450  72 61 67 25 3d 2d 31 20  80 20 28 64 72 61 67 76  |rag%=-1 . (dragv|
00003460  61 6c 25 3c 3e 31 30 20  84 20 64 72 61 67 76 61  |al%<>10 . dragva|
00003470  6c 25 3d 31 30 20 80 20  64 72 61 67 79 25 3c 2d  |l%=10 . dragy%<-|
00003480  31 35 30 29 20 8c 20 c8  99 22 4f 53 5f 53 70 72  |150) . .."OS_Spr|
00003490  69 74 65 4f 70 22 2c 26  31 33 34 2c 73 61 72 65  |iteOp",&134,sare|
000034a0  61 25 2c 22 6d 6f 76 65  22 2b c3 64 72 61 67 76  |a%,"move"+.dragv|
000034b0  61 6c 25 2c 6f 78 25 2b  64 72 61 67 78 25 2c 6f  |al%,ox%+dragx%,o|
000034c0  79 25 2b 64 72 61 67 79  25 2c 38 2c 73 63 61 6c  |y%+dragy%,8,scal|
000034d0  65 32 37 25 2c 74 72 61  6e 73 25 0d 10 d6 05 e1  |e27%,trans%.....|
000034e0  0d 10 e0 04 0d 10 ea 04  0d 10 f4 14 dd 20 f2 62  |............. .b|
000034f0  75 74 74 6f 6e 5f 63 6c  69 63 6b 73 0d 10 fe 09  |utton_clicks....|
00003500  ea 20 6e 6f 25 0d 11 08  24 e7 20 62 6c 6f 63 6b  |. no%...$. block|
00003510  25 21 38 3d 32 20 80 20  62 6c 6f 63 6b 25 21 31  |%!8=2 . block%!1|
00003520  32 3c 3e 2d 32 20 8c 20  e1 0d 11 12 12 c8 8e 20  |2<>-2 . ....... |
00003530  62 6c 6f 63 6b 25 21 31  32 20 ca 0d 11 1c 30 20  |block%!12 ....0 |
00003540  c9 20 2d 32 3a e7 20 62  6c 6f 63 6b 25 21 31 36  |. -2:. block%!16|
00003550  3d 49 42 68 61 6e 64 6c  65 25 20 8c 20 f2 73 65  |=IBhandle% . .se|
00003560  6c 65 63 74 5f 49 42 69  63 6f 6e 0d 11 26 34 20  |lect_IBicon..&4 |
00003570  c9 20 68 61 6e 64 6c 65  25 28 67 61 6d 65 25 29  |. handle%(game%)|
00003580  3a e7 20 62 6c 6f 63 6b  25 21 38 3d 34 20 8c 20  |:. block%!8=4 . |
00003590  f2 69 63 6f 6e 5f 73 65  6c 65 63 74 69 6f 6e 0d  |.icon_selection.|
000035a0  11 30 30 20 c9 20 43 68  61 6e 64 6c 65 25 3a 6e  |.00 . Chandle%:n|
000035b0  6f 25 3d 4e 61 6d 65 4e  6f 25 3a f2 73 65 6c 65  |o%=NameNo%:.sele|
000035c0  63 74 5f 6f 70 74 69 6f  6e 73 28 6e 6f 25 29 0d  |ct_options(no%).|
000035d0  11 3a 1e 20 c9 20 53 43  68 61 6e 64 6c 65 25 3a  |.:. . SChandle%:|
000035e0  f2 73 65 6c 65 63 74 5f  73 63 6f 72 65 0d 11 44  |.select_score..D|
000035f0  27 20 c9 20 43 43 68 61  6e 64 6c 65 25 3a f2 63  |' . CChandle%:.c|
00003600  61 6c 63 61 6c 61 74 6f  72 28 62 6c 6f 63 6b 25  |alcalator(block%|
00003610  21 31 36 29 0d 11 4e 3a  20 c9 20 4e 47 68 61 6e  |!16)..N: . NGhan|
00003620  64 6c 65 25 3a e7 20 63  72 65 61 74 65 25 3d 30  |dle%:. create%=0|
00003630  20 8c 20 f2 73 65 6c 65  63 74 5f 6e 61 6d 65 47  | . .select_nameG|
00003640  20 8b 20 f2 65 64 69 74  5f 6e 61 6d 65 47 0d 11  | . .edit_nameG..|
00003650  58 25 20 c9 20 53 56 68  61 6e 64 6c 65 25 3a f4  |X% . SVhandle%:.|
00003660  20 50 52 4f 43 73 65 6c  65 63 74 5f 73 61 76 65  | PROCselect_save|
00003670  62 6f 78 0d 11 62 23 20  c9 20 53 56 68 61 6e 64  |box..b# . SVhand|
00003680  6c 65 32 25 3a f2 73 65  6c 65 63 74 5f 73 61 76  |le2%:.select_sav|
00003690  65 5f 74 65 78 74 0d 11  6c 2a 20 c9 20 53 54 68  |e_text..l* . STh|
000036a0  61 6e 64 6c 65 25 3a e7  20 62 6c 6f 63 6b 25 21  |andle%:. block%!|
000036b0  31 36 3d 32 20 8c 20 f2  67 61 6d 65 5f 65 6e 64  |16=2 . .game_end|
000036c0  0d 11 76 2c 20 20 20 20  20 20 20 20 20 20 20 20  |..v,            |
000036d0  20 20 20 20 f2 63 6c 6f  73 65 5f 77 69 6e 64 6f  |    .close_windo|
000036e0  77 28 53 54 68 61 6e 64  6c 65 25 29 0d 11 80 22  |w(SThandle%)..."|
000036f0  20 c9 20 4f 68 61 6e 64  6c 65 25 3a f2 73 65 6c  | . Ohandle%:.sel|
00003700  65 63 74 5f 73 75 6d 5f  77 69 6e 64 6f 77 0d 11  |ect_sum_window..|
00003710  8a 20 20 c9 20 4c 68 61  6e 64 6c 65 25 3a f2 73  |.  . Lhandle%:.s|
00003720  65 6c 65 63 74 5f 6c 6f  61 64 66 69 6c 65 0d 11  |elect_loadfile..|
00003730  94 2c 20 c9 20 4d 68 61  6e 64 6c 65 25 3a f2 73  |., . Mhandle%:.s|
00003740  65 6c 65 63 74 5f 66 69  6c 65 5f 6d 65 6e 75 28  |elect_file_menu(|
00003750  62 6c 6f 63 6b 25 21 31  36 29 0d 11 9e 20 20 c9  |block%!16)...  .|
00003760  20 45 68 61 6e 64 6c 65  25 3a f2 73 65 6c 65 63  | Ehandle%:.selec|
00003770  74 5f 65 6e 64 5f 73 61  76 65 0d 11 a8 2e 20 c9  |t_end_save.... .|
00003780  20 50 32 68 61 6e 64 6c  65 25 3a e7 20 62 6c 6f  | P2handle%:. blo|
00003790  63 6b 25 21 31 36 3d 32  20 8c 20 f2 73 75 6d 5f  |ck%!16=2 . .sum_|
000037a0  70 72 69 6e 74 6f 75 74  0d 11 b2 37 20 20 20 20  |printout...7    |
000037b0  20 20 20 20 20 20 20 20  20 20 20 20 f2 63 6c 6f  |            .clo|
000037c0  73 65 5f 77 69 6e 64 6f  77 28 50 32 68 61 6e 64  |se_window(P2hand|
000037d0  6c 65 25 29 3a 50 63 6f  75 6e 74 25 3d 2d 31 0d  |le%):Pcount%=-1.|
000037e0  11 bc 65 20 c9 20 50 68  61 6e 64 6c 65 25 2c 49  |..e . Phandle%,I|
000037f0  63 68 61 6e 64 6c 65 25  2c 53 6d 68 61 6e 64 6c  |chandle%,Smhandl|
00003800  65 25 2c 44 72 68 61 6e  64 6c 65 25 2c 45 64 68  |e%,Drhandle%,Edh|
00003810  61 6e 64 6c 65 25 2c 4f  53 68 61 6e 64 6c 65 25  |andle%,OShandle%|
00003820  2c 44 65 6d 68 61 6e 64  6c 65 25 3a f2 63 6c 6f  |,Demhandle%:.clo|
00003830  73 65 5f 77 69 6e 64 6f  77 28 62 6c 6f 63 6b 25  |se_window(block%|
00003840  21 31 32 29 0d 11 c6 05  cb 0d 11 d0 05 e1 0d 11  |!12)............|
00003850  da 04 0d 11 e4 04 0d 11  ee 14 dd 20 f2 73 65 6c  |........... .sel|
00003860  65 63 74 5f 49 42 69 63  6f 6e 0d 11 f8 12 e7 20  |ect_IBicon..... |
00003870  62 6c 6f 63 6b 25 21 38  3d 32 20 8c 0d 12 02 19  |block%!8=2 .....|
00003880  20 f2 61 6c 6c 6f 77 5f  70 72 69 6e 74 5f 72 65  | .allow_print_re|
00003890  73 75 6c 74 73 0d 12 0c  20 20 f2 73 68 6f 77 5f  |sults...  .show_|
000038a0  6d 65 6e 75 28 6d 65 6e  75 25 2c 21 62 6c 6f 63  |menu(menu%,!bloc|
000038b0  6b 25 2c 39 29 0d 12 16  05 cc 0d 12 20 0f 20 e7  |k%,9)....... . .|
000038c0  20 73 74 61 72 74 25 20  8c 0d 12 2a 11 20 20 e7  | start% ...*.  .|
000038d0  20 63 72 65 61 74 65 25  20 8c 0d 12 34 1e 20 20  | create% ...4.  |
000038e0  20 f2 6f 70 65 6e 5f 77  69 6e 64 6f 77 28 44 72  | .open_window(Dr|
000038f0  68 61 6e 64 6c 65 25 29  0d 12 3e 07 20 20 cc 0d  |handle%)..>.  ..|
00003900  12 48 1a 20 20 20 f2 62  75 69 6c 64 5f 6e 61 6d  |.H.   .build_nam|
00003910  65 5f 77 69 6e 64 6f 77  47 0d 12 52 1a 20 20 20  |e_windowG..R.   |
00003920  f2 6c 6f 61 64 62 6f 78  5f 77 69 6e 64 6f 77 73  |.loadbox_windows|
00003930  28 30 29 0d 12 5c 07 20  20 cd 0d 12 66 06 20 cd  |(0)..\.  ...f. .|
00003940  0d 12 70 05 cd 0d 12 7a  1c f2 63 6c 6f 73 65 5f  |..p....z..close_|
00003950  77 69 6e 64 6f 77 28 49  63 68 61 6e 64 6c 65 25  |window(Ichandle%|
00003960  29 0d 12 84 1c f2 63 6c  6f 73 65 5f 77 69 6e 64  |).....close_wind|
00003970  6f 77 28 53 6d 68 61 6e  64 6c 65 25 29 0d 12 8e  |ow(Smhandle%)...|
00003980  1b f2 63 6c 6f 73 65 5f  77 69 6e 64 6f 77 28 54  |..close_window(T|
00003990  68 61 6e 64 6c 65 25 29  0d 12 98 05 e1 0d 12 a2  |handle%)........|
000039a0  04 0d 12 ac 04 0d 12 b6  16 dd 20 f2 73 65 6c 65  |.......... .sele|
000039b0  63 74 5f 65 6e 64 5f 73  61 76 65 0d 12 c0 13 e7  |ct_end_save.....|
000039c0  20 62 6c 6f 63 6b 25 21  31 36 3d 32 20 8c 0d 12  | block%!16=2 ...|
000039d0  ca 4e 20 f4 20 49 46 20  6e 6f 74 73 61 76 65 64  |.N . IF notsaved|
000039e0  4f 25 3d 2d 31 20 41 4e  44 20 28 73 61 76 65 6e  |O%=-1 AND (saven|
000039f0  64 25 20 41 4e 44 20 31  29 3d 31 20 54 48 45 4e  |d% AND 1)=1 THEN|
00003a00  20 50 52 4f 43 73 61 76  65 5f 66 69 6c 65 28 24  | PROCsave_file($|
00003a10  73 61 76 65 62 75 66 66  25 2c 30 29 0d 12 d4 4d  |savebuff%,0)...M|
00003a20  20 e7 20 6e 6f 74 73 61  76 65 64 52 25 3d 2d 31  | . notsavedR%=-1|
00003a30  20 80 20 28 73 61 76 65  6e 64 25 20 80 20 32 29  | . (savend% . 2)|
00003a40  3d 32 20 8c 20 f2 72 65  73 75 6c 74 73 5f 74 65  |=2 . .results_te|
00003a50  78 74 5f 66 69 6c 65 28  24 73 61 76 65 74 65 78  |xt_file($savetex|
00003a60  74 62 75 66 66 25 2c 30  29 0d 12 de 21 20 e7 20  |tbuff%,0)...! . |
00003a70  73 61 76 65 6e 64 25 3d  32 20 8c 20 f2 72 65 73  |savend%=2 . .res|
00003a80  65 74 5f 72 65 73 75 6c  74 73 0d 12 e8 05 cd 0d  |et_results......|
00003a90  12 f2 1b f2 63 6c 6f 73  65 5f 77 69 6e 64 6f 77  |....close_window|
00003aa0  28 45 68 61 6e 64 6c 65  25 29 0d 12 fc 2b 65 6e  |(Ehandle%)...+en|
00003ab0  64 25 3d 28 65 6e 64 25  3d 31 29 3a 6e 6f 74 73  |d%=(end%=1):nots|
00003ac0  61 76 65 64 4f 25 3d 30  3a 6e 6f 74 73 61 76 65  |avedO%=0:notsave|
00003ad0  64 52 25 3d 30 0d 13 06  41 e7 20 6e 65 78 74 66  |dR%=0...A. nextf|
00003ae0  69 6c 65 24 3c 3e 22 22  20 8c 20 f2 6c 6f 61 64  |ile$<>"" . .load|
00003af0  5f 76 61 72 73 28 6e 65  78 74 66 69 6c 65 24 29  |_vars(nextfile$)|
00003b00  3a f2 6c 6f 61 64 5f 66  69 6c 65 28 6e 65 78 74  |:.load_file(next|
00003b10  66 69 6c 65 24 29 0d 13  10 05 e1 0d 13 1a 04 0d  |file$)..........|
00003b20  13 24 04 0d 13 2e 1a dd  20 f2 73 65 6c 65 63 74  |.$...... .select|
00003b30  5f 6f 70 74 69 6f 6e 73  28 6e 6f 25 29 0d 13 38  |_options(no%)..8|
00003b40  40 ea 20 69 63 6f 6e 25  2c 68 65 6c 70 25 2c 72  |@. icon%,help%,r|
00003b50  65 73 65 74 25 2c 73 76  52 25 2c 6e 25 2c 74 79  |eset%,svR%,n%,ty|
00003b60  70 65 25 3a 72 65 73 65  74 25 3d 30 3a 73 76 52  |pe%:reset%=0:svR|
00003b70  25 3d 73 61 76 65 52 25  28 6e 6f 25 29 0d 13 42  |%=saveR%(no%)..B|
00003b80  25 68 65 6c 70 25 3d 48  6c 65 76 65 6c 25 28 6e  |%help%=Hlevel%(n|
00003b90  6f 25 29 3a 74 79 70 65  25 3d 44 69 76 54 79 70  |o%):type%=DivTyp|
00003ba0  65 25 0d 13 4c 2a 6e 6f  74 73 61 76 65 64 4f 25  |e%..L*notsavedO%|
00003bb0  3d 28 70 61 74 68 24 3c  3e 22 22 29 3a 69 63 6f  |=(path$<>""):ico|
00003bc0  6e 25 3d 62 6c 6f 63 6b  25 21 31 36 0d 13 56 2b  |n%=block%!16..V+|
00003bd0  e7 20 61 6c 74 65 72 25  3d 30 20 8c 20 61 6c 74  |. alter%=0 . alt|
00003be0  65 72 25 3d 28 69 63 6f  6e 25 3c 3e 36 38 20 80  |er%=(icon%<>68 .|
00003bf0  20 6e 6f 25 3d 30 29 0d  13 60 0e c8 8e 20 69 63  | no%=0)..`... ic|
00003c00  6f 6e 25 20 ca 0d 13 6a  48 20 c9 20 33 3a 4c 6f  |on% ...jH . 3:Lo|
00003c10  6e 67 25 28 6e 6f 25 29  3d a4 69 6e 63 5f 62 75  |ng%(no%)=.inc_bu|
00003c20  66 66 65 72 28 43 68 61  6e 64 6c 65 25 2c 32 2c  |ffer(Chandle%,2,|
00003c30  4c 6f 6e 67 25 28 6e 6f  25 29 2c 6c 6f 6e 67 62  |Long%(no%),longb|
00003c40  75 66 66 25 2c 31 2c 33  2c 35 2c 30 29 0d 13 74  |uff%,1,3,5,0)..t|
00003c50  3d 20 20 20 20 20 20 20  20 f2 73 65 74 5f 64 69  |=        .set_di|
00003c60  76 69 73 69 6f 6e 5f 74  79 70 65 28 6e 6f 25 29  |vision_type(no%)|
00003c70  3a 72 65 73 65 74 25 3d  2d 28 74 79 70 65 25 3c  |:reset%=-(type%<|
00003c80  3e 44 69 76 54 79 70 65  25 29 0d 13 7e 48 20 c9  |>DivType%)..~H .|
00003c90  20 34 3a 4c 6f 6e 67 25  28 6e 6f 25 29 3d a4 69  | 4:Long%(no%)=.i|
00003ca0  6e 63 5f 62 75 66 66 65  72 28 43 68 61 6e 64 6c  |nc_buffer(Chandl|
00003cb0  65 25 2c 32 2c 4c 6f 6e  67 25 28 6e 6f 25 29 2c  |e%,2,Long%(no%),|
00003cc0  6c 6f 6e 67 62 75 66 66  25 2c 31 2c 33 2c 35 2c  |longbuff%,1,3,5,|
00003cd0  31 29 0d 13 88 3d 20 20  20 20 20 20 20 20 f2 73  |1)...=        .s|
00003ce0  65 74 5f 64 69 76 69 73  69 6f 6e 5f 74 79 70 65  |et_division_type|
00003cf0  28 6e 6f 25 29 3a 72 65  73 65 74 25 3d 2d 28 74  |(no%):reset%=-(t|
00003d00  79 70 65 25 3c 3e 44 69  76 54 79 70 65 25 29 0d  |ype%<>DivType%).|
00003d10  13 92 70 20 c9 20 36 3a  44 6c 65 76 65 6c 25 28  |..p . 6:Dlevel%(|
00003d20  6e 6f 25 29 3d a4 69 6e  63 5f 62 75 66 66 65 72  |no%)=.inc_buffer|
00003d30  28 43 68 61 6e 64 6c 65  25 2c 35 2c 44 6c 65 76  |(Chandle%,5,Dlev|
00003d40  65 6c 25 28 6e 6f 25 29  2c 6c 65 76 65 6c 5f 62  |el%(no%),level_b|
00003d50  75 66 66 44 25 2c 31 2c  31 2c 37 2c 30 29 3a 72  |uffD%,1,1,7,0):r|
00003d60  65 73 65 74 25 3d 31 3a  f2 73 65 74 5f 64 69 76  |eset%=1:.set_div|
00003d70  69 73 69 6f 6e 5f 74 79  70 65 28 6e 6f 25 29 0d  |ision_type(no%).|
00003d80  13 9c 70 20 c9 20 37 3a  44 6c 65 76 65 6c 25 28  |..p . 7:Dlevel%(|
00003d90  6e 6f 25 29 3d a4 69 6e  63 5f 62 75 66 66 65 72  |no%)=.inc_buffer|
00003da0  28 43 68 61 6e 64 6c 65  25 2c 35 2c 44 6c 65 76  |(Chandle%,5,Dlev|
00003db0  65 6c 25 28 6e 6f 25 29  2c 6c 65 76 65 6c 5f 62  |el%(no%),level_b|
00003dc0  75 66 66 44 25 2c 31 2c  31 2c 37 2c 31 29 3a 72  |uffD%,1,1,7,1):r|
00003dd0  65 73 65 74 25 3d 31 3a  f2 73 65 74 5f 64 69 76  |eset%=1:.set_div|
00003de0  69 73 69 6f 6e 5f 74 79  70 65 28 6e 6f 25 29 0d  |ision_type(no%).|
00003df0  13 a6 50 20 c9 20 31 37  3a 6e 6f 5f 71 75 65 73  |..P . 17:no_ques|
00003e00  74 25 28 6e 6f 25 29 3d  a4 69 6e 63 5f 62 75 66  |t%(no%)=.inc_buf|
00003e10  66 65 72 28 43 68 61 6e  64 6c 65 25 2c 31 36 2c  |fer(Chandle%,16,|
00003e20  6e 6f 5f 71 75 65 73 74  25 28 6e 6f 25 29 2c 51  |no_quest%(no%),Q|
00003e30  62 75 66 66 25 2c 31 2c  31 2c 39 39 2c 30 29 0d  |buff%,1,1,99,0).|
00003e40  13 b0 50 20 c9 20 31 38  3a 6e 6f 5f 71 75 65 73  |..P . 18:no_ques|
00003e50  74 25 28 6e 6f 25 29 3d  a4 69 6e 63 5f 62 75 66  |t%(no%)=.inc_buf|
00003e60  66 65 72 28 43 68 61 6e  64 6c 65 25 2c 31 36 2c  |fer(Chandle%,16,|
00003e70  6e 6f 5f 71 75 65 73 74  25 28 6e 6f 25 29 2c 51  |no_quest%(no%),Q|
00003e80  62 75 66 66 25 2c 31 2c  31 2c 39 39 2c 31 29 0d  |buff%,1,1,99,1).|
00003e90  13 ba 49 20 c9 20 32 30  3a 74 72 69 65 73 25 28  |..I . 20:tries%(|
00003ea0  6e 6f 25 29 3d a4 69 6e  63 5f 62 75 66 66 65 72  |no%)=.inc_buffer|
00003eb0  28 43 68 61 6e 64 6c 65  25 2c 31 39 2c 74 72 69  |(Chandle%,19,tri|
00003ec0  65 73 25 28 6e 6f 25 29  2c 54 62 75 66 66 25 2c  |es%(no%),Tbuff%,|
00003ed0  31 2c 31 2c 33 2c 30 29  0d 13 c4 49 20 c9 20 32  |1,1,3,0)...I . 2|
00003ee0  31 3a 74 72 69 65 73 25  28 6e 6f 25 29 3d a4 69  |1:tries%(no%)=.i|
00003ef0  6e 63 5f 62 75 66 66 65  72 28 43 68 61 6e 64 6c  |nc_buffer(Chandl|
00003f00  65 25 2c 31 39 2c 74 72  69 65 73 25 28 6e 6f 25  |e%,19,tries%(no%|
00003f10  29 2c 54 62 75 66 66 25  2c 31 2c 31 2c 33 2c 31  |),Tbuff%,1,1,3,1|
00003f20  29 0d 13 ce 4f 20 c9 20  32 33 3a 74 69 6d 65 6c  |)...O . 23:timel|
00003f30  69 6d 25 28 6e 6f 25 29  3d a4 69 6e 63 5f 62 75  |im%(no%)=.inc_bu|
00003f40  66 66 65 72 28 43 68 61  6e 64 6c 65 25 2c 32 32  |ffer(Chandle%,22|
00003f50  2c 74 69 6d 65 6c 69 6d  25 28 6e 6f 25 29 2c 54  |,timelim%(no%),T|
00003f60  6d 62 75 66 66 25 2c 31  2c 31 2c 33 30 2c 30 29  |mbuff%,1,1,30,0)|
00003f70  0d 13 d8 4f 20 c9 20 32  34 3a 74 69 6d 65 6c 69  |...O . 24:timeli|
00003f80  6d 25 28 6e 6f 25 29 3d  a4 69 6e 63 5f 62 75 66  |m%(no%)=.inc_buf|
00003f90  66 65 72 28 43 68 61 6e  64 6c 65 25 2c 32 32 2c  |fer(Chandle%,22,|
00003fa0  74 69 6d 65 6c 69 6d 25  28 6e 6f 25 29 2c 54 6d  |timelim%(no%),Tm|
00003fb0  62 75 66 66 25 2c 31 2c  31 2c 33 30 2c 31 29 0d  |buff%,1,1,30,1).|
00003fc0  13 e2 34 20 c9 20 32 35  3a 4e 6f 74 69 6d 65 72  |..4 . 25:Notimer|
00003fd0  25 28 6e 6f 25 29 3d 2d  a4 69 63 6f 6e 5f 73 65  |%(no%)=-.icon_se|
00003fe0  6c 65 63 74 65 64 28 43  68 61 6e 64 6c 65 25 2c  |lected(Chandle%,|
00003ff0  32 35 29 0d 13 ec 35 20  20 20 20 20 20 20 20 20  |25)...5         |
00004000  f2 73 68 61 64 65 5f 33  69 63 6f 6e 73 28 43 68  |.shade_3icons(Ch|
00004010  61 6e 64 6c 65 25 2c 32  32 2c 4e 6f 74 69 6d 65  |andle%,22,Notime|
00004020  72 25 28 6e 6f 25 29 29  0d 13 f6 4b 20 c9 20 33  |r%(no%))...K . 3|
00004030  32 3a 48 6c 65 76 65 6c  25 28 6e 6f 25 29 3d a4  |2:Hlevel%(no%)=.|
00004040  69 6e 63 5f 62 75 66 66  65 72 28 43 68 61 6e 64  |inc_buffer(Chand|
00004050  6c 65 25 2c 33 31 2c 48  6c 65 76 65 6c 25 28 6e  |le%,31,Hlevel%(n|
00004060  6f 25 29 2c 48 62 75 66  66 25 2c 31 2c 31 2c 35  |o%),Hbuff%,1,1,5|
00004070  2c 30 29 0d 14 00 23 20  20 20 20 20 20 20 20 20  |,0)...#         |
00004080  f2 72 65 73 65 74 5f 68  65 6c 70 5f 6c 65 76 65  |.reset_help_leve|
00004090  6c 28 6e 6f 25 29 0d 14  0a 4b 20 c9 20 33 33 3a  |l(no%)...K . 33:|
000040a0  48 6c 65 76 65 6c 25 28  6e 6f 25 29 3d a4 69 6e  |Hlevel%(no%)=.in|
000040b0  63 5f 62 75 66 66 65 72  28 43 68 61 6e 64 6c 65  |c_buffer(Chandle|
000040c0  25 2c 33 31 2c 48 6c 65  76 65 6c 25 28 6e 6f 25  |%,31,Hlevel%(no%|
000040d0  29 2c 48 62 75 66 66 25  2c 31 2c 31 2c 35 2c 31  |),Hbuff%,1,1,5,1|
000040e0  29 0d 14 14 23 20 20 20  20 20 20 20 20 20 f2 72  |)...#         .r|
000040f0  65 73 65 74 5f 68 65 6c  70 5f 6c 65 76 65 6c 28  |eset_help_level(|
00004100  6e 6f 25 29 0d 14 1e 32  20 c9 20 33 34 3a 66 6f  |no%)...2 . 34:fo|
00004110  72 63 65 25 28 6e 6f 25  29 3d 2d a4 69 63 6f 6e  |rce%(no%)=-.icon|
00004120  5f 73 65 6c 65 63 74 65  64 28 43 68 61 6e 64 6c  |_selected(Chandl|
00004130  65 25 2c 33 34 29 0d 14  28 4e 20 c9 20 33 38 3a  |e%,34)..(N . 38:|
00004140  4d 48 6c 65 76 65 6c 25  28 6e 6f 25 29 3d a4 69  |MHlevel%(no%)=.i|
00004150  6e 63 5f 62 75 66 66 65  72 28 43 68 61 6e 64 6c  |nc_buffer(Chandl|
00004160  65 25 2c 33 37 2c 4d 48  6c 65 76 65 6c 25 28 6e  |e%,37,MHlevel%(n|
00004170  6f 25 29 2c 4d 48 62 75  66 66 25 2c 31 2c 31 2c  |o%),MHbuff%,1,1,|
00004180  35 2c 30 29 0d 14 32 23  20 20 20 20 20 20 20 20  |5,0)..2#        |
00004190  20 f2 72 65 73 65 74 5f  68 65 6c 70 5f 6c 65 76  | .reset_help_lev|
000041a0  65 6c 28 6e 6f 25 29 0d  14 3c 52 20 c9 20 33 39  |el(no%)..<R . 39|
000041b0  3a 4d 48 6c 65 76 65 6c  25 28 4e 61 6d 65 4e 6f  |:MHlevel%(NameNo|
000041c0  25 29 3d a4 69 6e 63 5f  62 75 66 66 65 72 28 43  |%)=.inc_buffer(C|
000041d0  68 61 6e 64 6c 65 25 2c  33 37 2c 4d 48 6c 65 76  |handle%,37,MHlev|
000041e0  65 6c 25 28 6e 6f 25 29  2c 4d 48 62 75 66 66 25  |el%(no%),MHbuff%|
000041f0  2c 31 2c 30 2c 35 2c 31  29 0d 14 46 23 20 20 20  |,1,0,5,1)..F#   |
00004200  20 20 20 20 20 20 f2 72  65 73 65 74 5f 68 65 6c  |      .reset_hel|
00004210  70 5f 6c 65 76 65 6c 28  6e 6f 25 29 0d 14 50 3f  |p_level(no%)..P?|
00004220  20 c9 20 32 38 2c 32 39  3a 6d 6f 64 65 25 28 6e  | . 28,29:mode%(n|
00004230  6f 25 29 3d 69 63 6f 6e  25 2d 32 38 3a f2 61 64  |o%)=icon%-28:.ad|
00004240  6a 75 73 74 5f 66 6f 72  5f 6d 6f 64 65 28 6e 6f  |just_for_mode(no|
00004250  25 29 3a 72 65 73 65 74  25 3d 31 0d 14 5a 37 20  |%):reset%=1..Z7 |
00004260  c9 20 34 32 3a 63 61 6c  63 25 28 6e 6f 25 29 3d  |. 42:calc%(no%)=|
00004270  2d a4 73 65 6c 65 63 74  5f 64 69 73 70 6c 61 79  |-.select_display|
00004280  28 34 32 2c 2d 63 61 6c  63 25 28 6e 6f 25 29 2c  |(42,-calc%(no%),|
00004290  33 29 0d 14 64 36 20 20  20 20 20 20 20 20 20 e7  |3)..d6         .|
000042a0  20 63 61 6c 63 25 28 6e  6f 25 29 3d 30 20 8c 20  | calc%(no%)=0 . |
000042b0  f2 63 6c 6f 73 65 5f 77  69 6e 64 6f 77 28 43 43  |.close_window(CC|
000042c0  68 61 6e 64 6c 65 25 29  0d 14 6e 20 20 c9 20 34  |handle%)..n  . 4|
000042d0  33 3a f4 20 50 52 4f 43  73 65 74 5f 70 72 69 6e  |3:. PROCset_prin|
000042e0  74 65 72 28 6e 6f 25 29  0d 14 6f 2a 20 20 20 20  |ter(no%)..o*    |
000042f0  20 20 20 20 20 24 44 65  6d 49 63 25 3d 22 63 61  |     $DemIc%="ca|
00004300  6e 20 70 72 69 6e 74 20  6f 75 74 20 73 75 6d 73  |n print out sums|
00004310  2e 22 0d 14 70 36 20 20  20 20 20 20 20 20 20 44  |."..p6         D|
00004320  65 6d 68 61 6e 64 6c 65  25 3d a4 63 65 6e 74 72  |emhandle%=.centr|
00004330  65 5f 77 69 6e 64 6f 77  28 44 65 6d 68 61 6e 64  |e_window(Demhand|
00004340  6c 65 25 2c 22 59 22 29  0d 14 78 39 20 c9 20 34  |le%,"Y")..x9 . 4|
00004350  34 3a 73 63 6f 72 65 25  28 6e 6f 25 29 3d 2d a4  |4:score%(no%)=-.|
00004360  73 65 6c 65 63 74 5f 64  69 73 70 6c 61 79 28 34  |select_display(4|
00004370  34 2c 2d 73 63 6f 72 65  25 28 6e 6f 25 29 2c 34  |4,-score%(no%),4|
00004380  29 0d 14 82 18 20 c9 20  34 36 3a f2 73 65 74 5f  |).... . 46:.set_|
00004390  6e 65 78 74 28 6e 6f 25  29 0d 14 8c 37 20 c9 20  |next(no%)...7 . |
000043a0  34 37 3a 73 74 6f 70 25  28 6e 6f 25 29 3d 2d a4  |47:stop%(no%)=-.|
000043b0  73 65 6c 65 63 74 5f 64  69 73 70 6c 61 79 28 34  |select_display(4|
000043c0  37 2c 2d 73 74 6f 70 25  28 6e 6f 25 29 2c 36 29  |7,-stop%(no%),6)|
000043d0  0d 14 96 34 20 c9 20 34  38 3a 63 6f 6c 6e 61 6d  |...4 . 48:colnam|
000043e0  65 25 28 6e 6f 25 29 3d  2d a4 69 63 6f 6e 5f 73  |e%(no%)=-.icon_s|
000043f0  65 6c 65 63 74 65 64 28  43 68 61 6e 64 6c 65 25  |elected(Chandle%|
00004400  2c 34 38 29 0d 14 a0 1c  20 c9 20 34 35 3a f2 73  |,48).... . 45:.s|
00004410  65 74 5f 65 73 74 69 6d  61 74 65 28 6e 6f 25 29  |et_estimate(no%)|
00004420  0d 14 aa 20 20 c9 20 36  31 3a f2 73 65 74 5f 6b  |...  . 61:.set_k|
00004430  65 65 70 5f 72 65 73 75  6c 74 73 28 6e 6f 25 29  |eep_results(no%)|
00004440  0d 14 b4 18 20 c9 20 34  39 3a f2 73 65 74 5f 61  |.... . 49:.set_a|
00004450  75 74 6f 28 6e 6f 25 29  0d 14 be 35 20 c9 20 35  |uto(no%)...5 . 5|
00004460  30 3a 61 75 74 6f 68 65  6c 70 25 28 6e 6f 25 29  |0:autohelp%(no%)|
00004470  3d 2d a4 69 63 6f 6e 5f  73 65 6c 65 63 74 65 64  |=-.icon_selected|
00004480  28 43 68 61 6e 64 6c 65  25 2c 35 30 29 0d 14 c8  |(Chandle%,50)...|
00004490  1f 20 20 20 20 20 20 20  20 20 f2 73 65 74 5f 61  |.         .set_a|
000044a0  75 74 6f 68 65 6c 70 28  6e 6f 25 29 0d 14 d2 21  |utohelp(no%)...!|
000044b0  20 c9 20 35 31 3a f2 63  6c 6f 73 65 5f 77 69 6e  | . 51:.close_win|
000044c0  64 6f 77 28 43 68 61 6e  64 6c 65 25 29 0d 14 dc  |dow(Chandle%)...|
000044d0  3f 20 20 20 20 20 20 20  20 20 73 74 61 72 74 4f  |?         startO|
000044e0  77 6e 25 3d 28 73 74 61  72 74 4f 77 6e 25 3d 31  |wn%=(startOwn%=1|
000044f0  20 80 20 67 61 6d 65 25  3e 30 29 3a 72 65 73 65  | . game%>0):rese|
00004500  74 25 3d 73 74 61 72 74  4f 77 6e 25 0d 14 e6 2d  |t%=startOwn%...-|
00004510  20 20 20 20 20 20 20 20  20 6e 65 78 74 6d 65 73  |         nextmes|
00004520  73 25 3d 28 48 65 6c 70  6c 65 76 25 3d 35 20 80  |s%=(Helplev%=5 .|
00004530  20 67 61 6d 65 25 3e 30  29 0d 14 f0 51 20 c9 20  | game%>0)...Q . |
00004540  35 34 3a 6e 65 77 6c 65  76 52 25 28 6e 6f 25 29  |54:newlevR%(no%)|
00004550  3d a4 69 6e 63 5f 62 75  66 66 65 72 28 43 68 61  |=.inc_buffer(Cha|
00004560  6e 64 6c 65 25 2c 35 33  2c 6e 65 77 6c 65 76 52  |ndle%,53,newlevR|
00004570  25 28 6e 6f 25 29 2c 6c  65 76 52 62 75 66 66 25  |%(no%),levRbuff%|
00004580  2c 31 2c 31 2c 31 30 2c  30 29 0d 14 fa 51 20 c9  |,1,1,10,0)...Q .|
00004590  20 35 35 3a 6e 65 77 6c  65 76 52 25 28 6e 6f 25  | 55:newlevR%(no%|
000045a0  29 3d a4 69 6e 63 5f 62  75 66 66 65 72 28 43 68  |)=.inc_buffer(Ch|
000045b0  61 6e 64 6c 65 25 2c 35  33 2c 6e 65 77 6c 65 76  |andle%,53,newlev|
000045c0  52 25 28 6e 6f 25 29 2c  6c 65 76 52 62 75 66 66  |R%(no%),levRbuff|
000045d0  25 2c 31 2c 31 2c 31 30  2c 31 29 0d 15 04 53 20  |%,1,1,10,1)...S |
000045e0  c9 20 35 38 3a 6e 65 77  6c 65 76 57 25 28 6e 6f  |. 58:newlevW%(no|
000045f0  25 29 3d 2d a4 69 6e 63  5f 62 75 66 66 65 72 28  |%)=-.inc_buffer(|
00004600  43 68 61 6e 64 6c 65 25  2c 35 37 2c 2d 6e 65 77  |Chandle%,57,-new|
00004610  6c 65 76 57 25 28 6e 6f  25 29 2c 6c 65 76 57 62  |levW%(no%),levWb|
00004620  75 66 66 25 2c 31 2c 31  2c 31 30 2c 30 29 0d 15  |uff%,1,1,10,0)..|
00004630  0e 53 20 c9 20 35 39 3a  6e 65 77 6c 65 76 57 25  |.S . 59:newlevW%|
00004640  28 6e 6f 25 29 3d 2d a4  69 6e 63 5f 62 75 66 66  |(no%)=-.inc_buff|
00004650  65 72 28 43 68 61 6e 64  6c 65 25 2c 35 37 2c 2d  |er(Chandle%,57,-|
00004660  6e 65 77 6c 65 76 57 25  28 6e 6f 25 29 2c 6c 65  |newlevW%(no%),le|
00004670  76 57 62 75 66 66 25 2c  31 2c 31 2c 31 30 2c 31  |vWbuff%,1,1,10,1|
00004680  29 0d 15 18 27 20 c9 20  36 32 3a f2 73 65 74 5f  |)...' . 62:.set_|
00004690  64 65 63 69 6d 61 6c 3a  72 65 73 65 74 25 3d 28  |decimal:reset%=(|
000046a0  4f 77 69 6e 25 3d 30 29  0d 15 22 33 20 c9 20 36  |Owin%=0).."3 . 6|
000046b0  33 3a 6f 77 6e 73 75 6d  25 28 6e 6f 25 29 3d 2d  |3:ownsum%(no%)=-|
000046c0  a4 69 63 6f 6e 5f 73 65  6c 65 63 74 65 64 28 43  |.icon_selected(C|
000046d0  68 61 6e 64 6c 65 25 2c  36 33 29 0d 15 2c 44 20  |handle%,63)..,D |
000046e0  20 20 20 20 20 20 20 20  f2 73 65 74 5f 6f 77 6e  |        .set_own|
000046f0  5f 73 75 6d 28 6e 6f 25  29 3a 73 74 61 72 74 4f  |_sum(no%):startO|
00004700  77 6e 25 3d 2d 28 6f 77  6e 73 75 6d 25 28 6e 6f  |wn%=-(ownsum%(no|
00004710  25 29 3d 31 20 80 20 67  61 6d 65 25 3e 30 29 0d  |%)=1 . game%>0).|
00004720  15 36 3f 20 20 20 20 20  20 20 20 20 e7 20 6f 77  |.6?         . ow|
00004730  6e 73 75 6d 25 28 6e 6f  25 29 3d 30 20 8c 20 f2  |nsum%(no%)=0 . .|
00004740  63 6c 6f 73 65 5f 77 69  6e 64 6f 77 28 4f 68 61  |close_window(Oha|
00004750  6e 64 6c 65 25 29 3a 4f  77 69 6e 25 3d 30 0d 15  |ndle%):Owin%=0..|
00004760  40 37 20 c9 20 36 34 3a  e3 20 6e 25 3d 31 20 b8  |@7 . 64:. n%=1 .|
00004770  20 4e 63 6f 75 6e 74 25  3a f2 73 65 74 5f 6e 65  | Ncount%:.set_ne|
00004780  77 5f 6e 61 6d 65 5f 6c  65 76 65 6c 73 28 6e 25  |w_name_levels(n%|
00004790  2c 30 29 3a ed 0d 15 4a  24 20 20 20 20 20 20 20  |,0):...J$       |
000047a0  20 20 f2 63 6c 6f 73 65  5f 77 69 6e 64 6f 77 28  |  .close_window(|
000047b0  43 68 61 6e 64 6c 65 25  29 0d 15 54 25 20 c9 20  |Chandle%)..T% . |
000047c0  36 35 3a f2 73 65 74 5f  6e 65 77 5f 6e 61 6d 65  |65:.set_new_name|
000047d0  5f 6c 65 76 65 6c 73 28  6e 6f 25 2c 30 29 0d 15  |_levels(no%,0)..|
000047e0  5e 22 20 20 20 20 20 20  20 20 20 f2 73 65 74 5f  |^"         .set_|
000047f0  70 72 65 66 65 72 65 6e  63 65 73 28 6e 6f 25 29  |preferences(no%)|
00004800  0d 15 68 21 20 c9 20 36  36 3a f2 63 6c 6f 73 65  |..h! . 66:.close|
00004810  5f 77 69 6e 64 6f 77 28  43 68 61 6e 64 6c 65 25  |_window(Chandle%|
00004820  29 0d 15 7c 2f 20 c9 20  36 38 3a e7 20 61 6c 74  |)..|/ . 68:. alt|
00004830  65 72 25 20 8c 20 f2 73  65 74 5f 6e 65 77 5f 6e  |er% . .set_new_n|
00004840  61 6d 65 5f 6c 65 76 65  6c 73 28 30 2c 34 33 29  |ame_levels(0,43)|
00004850  0d 15 86 24 20 20 20 20  20 20 20 20 20 f2 63 6c  |...$         .cl|
00004860  6f 73 65 5f 77 69 6e 64  6f 77 28 43 68 61 6e 64  |ose_window(Chand|
00004870  6c 65 25 29 0d 15 90 05  cb 0d 15 9a 35 e7 20 67  |le%)........5. g|
00004880  61 6d 65 25 3e 30 20 80  20 69 63 6f 6e 25 3c 3e  |ame%>0 . icon%<>|
00004890  35 31 20 80 20 69 63 6f  6e 25 3c 36 33 20 84 20  |51 . icon%<63 . |
000048a0  73 74 61 72 74 4f 77 6e  25 3d 2d 31 20 8c 0d 15  |startOwn%=-1 ...|
000048b0  a4 0f 20 e7 20 72 65 73  65 74 25 20 8c 0d 15 ae  |.. . reset% ....|
000048c0  0e 20 20 f2 73 65 74 5f  73 75 6d 0d 15 b8 2d 20  |.  .set_sum...- |
000048d0  20 e7 20 6f 77 6e 73 75  6d 25 28 4e 61 6d 65 4e  | . ownsum%(NameN|
000048e0  6f 25 29 20 8c 20 f2 73  65 74 5f 75 70 5f 73 75  |o%) . .set_up_su|
000048f0  6d 5f 77 69 6e 64 6f 77  0d 15 c2 06 20 cd 0d 15  |m_window.... ...|
00004900  cc 04 0d 15 d6 3a 20 e7  20 28 69 63 6f 6e 25 3d  |.....: . (icon%=|
00004910  33 32 20 84 20 69 63 6f  6e 25 3d 33 33 29 20 80  |32 . icon%=33) .|
00004920  20 6d 6f 64 65 25 28 6e  6f 25 29 3d 31 20 80 20  | mode%(no%)=1 . |
00004930  44 69 76 54 79 70 65 25  3d 30 20 8c 0d 15 e0 21  |DivType%=0 ....!|
00004940  20 20 f2 63 68 61 6e 67  65 5f 68 65 6c 70 5f 64  |  .change_help_d|
00004950  69 73 70 6c 61 79 28 68  65 6c 70 25 29 0d 15 ea  |isplay(help%)...|
00004960  21 20 20 e7 20 67 61 6d  65 25 3e 30 20 8c 20 f2  |!  . game%>0 . .|
00004970  72 65 6d 6f 76 65 5f 6d  65 73 73 61 67 65 0d 15  |remove_message..|
00004980  f4 06 20 cd 0d 15 fe 04  0d 16 08 5d 20 e7 20 28  |.. ........] . (|
00004990  69 63 6f 6e 25 3d 34 35  20 84 20 69 63 6f 6e 25  |icon%=45 . icon%|
000049a0  3d 34 38 29 20 80 20 4f  77 69 6e 25 3d 30 20 8c  |=48) . Owin%=0 .|
000049b0  20 c8 99 22 57 69 6d 70  5f 46 6f 72 63 65 52 65  | .."Wimp_ForceRe|
000049c0  64 72 61 77 22 2c 68 61  6e 64 6c 65 25 28 67 61  |draw",handle%(ga|
000049d0  6d 65 25 29 2c 30 2c 2d  38 34 34 2c 31 32 38 30  |me%),0,-844,1280|
000049e0  2c 2d 31 35 30 0d 16 12  05 cd 0d 16 1c 05 e1 0d  |,-150...........|
000049f0  16 26 04 0d 16 30 04 0d  16 3a 14 dd 20 f2 73 65  |.&...0...:.. .se|
00004a00  74 5f 6e 65 78 74 28 6e  6f 25 29 0d 16 44 2b 6e  |t_next(no%)..D+n|
00004a10  65 78 74 25 28 6e 6f 25  29 3d 2d a4 69 63 6f 6e  |ext%(no%)=-.icon|
00004a20  5f 73 65 6c 65 63 74 65  64 28 43 68 61 6e 64 6c  |_selected(Chandl|
00004a30  65 25 2c 34 36 29 0d 16  4e 2c f2 73 65 74 5f 74  |e%,46)..N,.set_t|
00004a40  6f 70 5f 69 63 6f 6e 28  35 2c 28 6e 65 78 74 25  |op_icon(5,(next%|
00004a50  28 6e 6f 25 29 3d 31 20  80 20 74 72 79 25 3e 30  |(no%)=1 . try%>0|
00004a60  29 29 0d 16 58 21 e7 20  6d 61 72 6b 65 64 25 3d  |))..X!. marked%=|
00004a70  2d 31 20 80 20 6e 65 78  74 25 28 6e 6f 25 29 3d  |-1 . next%(no%)=|
00004a80  30 20 8c 0d 16 62 33 20  e7 20 71 75 65 73 74 25  |0 ...b3 . quest%|
00004a90  3c 6e 6f 5f 71 75 65 73  74 25 28 6e 6f 25 29 20  |<no_quest%(no%) |
00004aa0  8c 20 f2 73 65 74 5f 73  75 6d 20 8b 20 f2 67 61  |. .set_sum . .ga|
00004ab0  6d 65 5f 65 6e 64 0d 16  6c 05 cd 0d 16 76 05 e1  |me_end..l....v..|
00004ac0  0d 16 80 04 0d 16 8a 04  0d 16 94 1c dd 20 f2 73  |............. .s|
00004ad0  65 74 5f 6b 65 65 70 5f  72 65 73 75 6c 74 73 28  |et_keep_results(|
00004ae0  6e 6f 25 29 0d 16 9e 2c  73 61 76 65 52 25 28 6e  |no%)...,saveR%(n|
00004af0  6f 25 29 3d 2d a4 69 63  6f 6e 5f 73 65 6c 65 63  |o%)=-.icon_selec|
00004b00  74 65 64 28 43 68 61 6e  64 6c 65 25 2c 36 31 29  |ted(Chandle%,61)|
00004b10  0d 16 a8 1a e7 20 73 76  52 25 3d 73 61 76 65 52  |..... svR%=saveR|
00004b20  25 28 6e 6f 25 29 20 8c  20 e1 0d 16 b2 2b e7 20  |%(no%) . ....+. |
00004b30  73 61 76 65 52 25 28 6e  6f 25 29 3d 30 20 80 20  |saveR%(no%)=0 . |
00004b40  6e 65 77 52 25 3d 30 20  8c 20 f2 65 6e 64 5f 6c  |newR%=0 . .end_l|
00004b50  65 76 65 6c 73 0d 16 bc  15 6e 65 77 52 25 3d 73  |evels....newR%=s|
00004b60  61 76 65 52 25 28 6e 6f  25 29 0d 16 c6 05 e1 0d  |aveR%(no%)......|
00004b70  16 d0 04 0d 16 da 04 0d  16 e4 18 dd 20 f2 73 65  |............ .se|
00004b80  74 5f 65 73 74 69 6d 61  74 65 28 6e 6f 25 29 0d  |t_estimate(no%).|
00004b90  16 ee 2f 65 73 74 69 6d  61 74 65 25 28 6e 6f 25  |../estimate%(no%|
00004ba0  29 3d 2d a4 69 63 6f 6e  5f 73 65 6c 65 63 74 65  |)=-.icon_selecte|
00004bb0  64 28 43 68 61 6e 64 6c  65 25 2c 34 35 29 0d 16  |d(Chandle%,45)..|
00004bc0  f8 49 e7 20 65 73 74 69  6d 61 74 65 25 28 6e 6f  |.I. estimate%(no|
00004bd0  25 29 3d 30 20 80 20 53  43 66 6f 72 6d 61 74 25  |%)=0 . SCformat%|
00004be0  3d 31 20 8c 20 64 69 67  61 6e 73 25 28 29 3d 30  |=1 . digans%()=0|
00004bf0  3a 45 73 74 76 61 6c 25  3d 30 3a 64 69 67 61 6e  |:Estval%=0:digan|
00004c00  73 24 28 29 3d 22 22 0d  17 02 49 e7 20 64 69 67  |s$()=""...I. dig|
00004c10  61 6e 73 25 28 30 29 3d  30 20 80 20 66 6f 72 63  |ans%(0)=0 . forc|
00004c20  65 35 25 3d 30 20 8c 20  53 43 66 6f 72 6d 61 74  |e5%=0 . SCformat|
00004c30  25 3d 32 2d 65 73 74 69  6d 61 74 65 25 28 6e 6f  |%=2-estimate%(no|
00004c40  25 29 3a 6d 65 73 73 61  67 65 24 28 29 3d 22 22  |%):message$()=""|
00004c50  0d 17 0c 3b e7 20 67 61  6d 65 25 3e 30 20 8c 20  |...;. game%>0 . |
00004c60  f2 73 68 61 64 65 5f 69  63 6f 6e 28 68 61 6e 64  |.shade_icon(hand|
00004c70  6c 65 25 28 67 61 6d 65  25 29 2c 32 2c 28 53 43  |le%(game%),2,(SC|
00004c80  66 6f 72 6d 61 74 25 3d  31 29 29 0d 17 16 05 e1  |format%=1)).....|
00004c90  0d 17 20 04 0d 17 2a 04  0d 17 34 12 dd 20 f2 73  |.. ...*...4.. .s|
00004ca0  65 74 5f 64 65 63 69 6d  61 6c 0d 17 3e 2e 64 65  |et_decimal..>.de|
00004cb0  63 69 6d 61 6c 25 28 6e  6f 25 29 3d 2d a4 69 63  |cimal%(no%)=-.ic|
00004cc0  6f 6e 5f 73 65 6c 65 63  74 65 64 28 43 68 61 6e  |on_selected(Chan|
00004cd0  64 6c 65 25 2c 36 32 29  0d 17 48 1e e7 20 a4 77  |dle%,62)..H.. .w|
00004ce0  69 6e 64 6f 77 5f 6f 70  65 6e 28 4f 68 61 6e 64  |indow_open(Ohand|
00004cf0  6c 65 25 29 20 8c 0d 17  52 3b 20 e7 20 64 65 63  |le%) ...R; . dec|
00004d00  69 6d 61 6c 25 28 6e 6f  25 29 20 8c 20 24 4f 73  |imal%(no%) . $Os|
00004d10  75 6d 31 62 75 66 66 25  3d 22 31 2e 30 30 22 20  |um1buff%="1.00" |
00004d20  8b 20 24 4f 73 75 6d 31  62 75 66 66 25 3d 22 30  |. $Osum1buff%="0|
00004d30  22 0d 17 5c 1c 20 f2 72  65 73 65 74 5f 69 63 6f  |"..\. .reset_ico|
00004d40  6e 28 4f 68 61 6e 64 6c  65 25 2c 33 29 0d 17 66  |n(Ohandle%,3)..f|
00004d50  05 cd 0d 17 70 05 e1 0d  17 7a 04 0d 17 84 04 0d  |....p....z......|
00004d60  17 8e 17 dd 20 f2 73 65  74 5f 70 72 69 6e 74 65  |.... .set_printe|
00004d70  72 28 6e 6f 25 29 0d 17  98 08 ea 20 6e 25 0d 17  |r(no%)..... n%..|
00004d80  a2 37 70 72 69 6e 74 65  72 25 28 6e 6f 25 29 3d  |.7printer%(no%)=|
00004d90  2d a4 73 65 6c 65 63 74  5f 64 69 73 70 6c 61 79  |-.select_display|
00004da0  28 34 33 2c 2d 70 72 69  6e 74 65 72 25 28 6e 6f  |(43,-printer%(no|
00004db0  25 29 2c 37 29 0d 17 ac  21 e7 20 70 72 69 6e 74  |%),7)...!. print|
00004dc0  65 72 25 28 6e 6f 25 29  3d 30 20 8c 20 64 72 69  |er%(no%)=0 . dri|
00004dd0  76 65 72 25 3d 30 0d 17  b6 29 f2 73 68 61 64 65  |ver%=0...).shade|
00004de0  5f 69 63 6f 6e 28 53 43  68 61 6e 64 6c 65 25 2c  |_icon(SChandle%,|
00004df0  31 31 2c 28 64 72 69 76  65 72 25 3d 30 29 29 0d  |11,(driver%=0)).|
00004e00  17 c0 1c f2 73 65 74 5f  74 6f 70 5f 69 63 6f 6e  |....set_top_icon|
00004e10  28 37 2c 64 72 69 76 65  72 25 29 0d 17 ca 05 e1  |(7,driver%).....|
00004e20  0d 17 d4 04 0d 17 de 04  0d 17 e8 2a dd 20 f2 73  |...........*. .s|
00004e30  68 61 64 65 5f 33 69 63  6f 6e 73 28 77 68 61 6e  |hade_3icons(whan|
00004e40  64 6c 65 25 2c 69 68 61  6e 64 6c 65 25 2c 73 68  |dle%,ihandle%,sh|
00004e50  25 29 0d 17 f2 08 ea 20  6e 25 0d 17 fc 1e e3 20  |%)..... n%..... |
00004e60  6e 25 3d 69 68 61 6e 64  6c 65 25 20 b8 20 69 68  |n%=ihandle% . ih|
00004e70  61 6e 64 6c 65 25 2b 32  0d 18 06 21 20 f2 73 68  |andle%+2...! .sh|
00004e80  61 64 65 5f 69 63 6f 6e  28 77 68 61 6e 64 6c 65  |ade_icon(whandle|
00004e90  25 2c 6e 25 2c 73 68 25  29 0d 18 10 05 ed 0d 18  |%,n%,sh%).......|
00004ea0  1a 05 e1 0d 18 24 04 0d  18 2e 04 0d 18 38 14 dd  |.....$.......8..|
00004eb0  20 f2 73 65 74 5f 61 75  74 6f 28 6e 6f 25 29 0d  | .set_auto(no%).|
00004ec0  18 42 08 ea 20 6e 25 0d  18 4c 2b 61 75 74 6f 25  |.B.. n%..L+auto%|
00004ed0  28 6e 6f 25 29 3d 2d a4  69 63 6f 6e 5f 73 65 6c  |(no%)=-.icon_sel|
00004ee0  65 63 74 65 64 28 43 68  61 6e 64 6c 65 25 2c 34  |ected(Chandle%,4|
00004ef0  39 29 0d 18 56 2d f2 73  68 61 64 65 5f 33 69 63  |9)..V-.shade_3ic|
00004f00  6f 6e 73 28 43 68 61 6e  64 6c 65 25 2c 35 33 2c  |ons(Chandle%,53,|
00004f10  28 61 75 74 6f 25 28 6e  6f 25 29 3d 30 29 29 0d  |(auto%(no%)=0)).|
00004f20  18 60 2d f2 73 68 61 64  65 5f 33 69 63 6f 6e 73  |.`-.shade_3icons|
00004f30  28 43 68 61 6e 64 6c 65  25 2c 35 37 2c 28 61 75  |(Chandle%,57,(au|
00004f40  74 6f 25 28 6e 6f 25 29  3d 30 29 29 0d 18 6a 05  |to%(no%)=0))..j.|
00004f50  e1 0d 18 74 04 0d 18 7e  04 0d 18 88 18 dd 20 f2  |...t...~...... .|
00004f60  73 65 74 5f 61 75 74 6f  68 65 6c 70 28 6e 6f 25  |set_autohelp(no%|
00004f70  29 0d 18 92 08 ea 20 6e  25 0d 18 9c 40 f2 73 68  |)..... n%...@.sh|
00004f80  61 64 65 5f 33 69 63 6f  6e 73 28 43 68 61 6e 64  |ade_3icons(Chand|
00004f90  6c 65 25 2c 33 37 2c 28  6d 6f 64 65 25 28 6e 6f  |le%,37,(mode%(no|
00004fa0  25 29 3d 30 20 84 20 61  75 74 6f 68 65 6c 70 25  |%)=0 . autohelp%|
00004fb0  28 6e 6f 25 29 3d 30 29  29 0d 18 a6 1a f2 72 65  |(no%)=0)).....re|
00004fc0  73 65 74 5f 68 65 6c 70  5f 6c 65 76 65 6c 28 6e  |set_help_level(n|
00004fd0  6f 25 29 0d 18 b0 05 e1  0d 18 ba 04 0d 18 c4 04  |o%).............|
00004fe0  0d 18 ce 1c dd 20 f2 72  65 73 65 74 5f 68 65 6c  |..... .reset_hel|
00004ff0  70 5f 6c 65 76 65 6c 28  6e 6f 25 29 0d 18 d8 16  |p_level(no%)....|
00005000  e7 20 61 75 74 6f 68 65  6c 70 25 28 6e 6f 25 29  |. autohelp%(no%)|
00005010  20 8c 0d 18 e2 23 20 e7  20 48 6c 65 76 65 6c 25  | ....# . Hlevel%|
00005020  28 6e 6f 25 29 3c 4d 48  6c 65 76 65 6c 25 28 6e  |(no%)<MHlevel%(n|
00005030  6f 25 29 20 8c 0d 18 ec  37 20 20 48 6c 65 76 65  |o%) ....7  Hleve|
00005040  6c 25 28 6e 6f 25 29 3d  4d 48 6c 65 76 65 6c 25  |l%(no%)=MHlevel%|
00005050  28 6e 6f 25 29 3a 24 48  62 75 66 66 25 3d c3 4d  |(no%):$Hbuff%=.M|
00005060  48 6c 65 76 65 6c 25 28  6e 6f 25 29 0d 18 f6 1e  |Hlevel%(no%)....|
00005070  20 20 f2 72 65 73 65 74  5f 69 63 6f 6e 28 43 68  |  .reset_icon(Ch|
00005080  61 6e 64 6c 65 25 2c 33  31 29 0d 19 00 06 20 cd  |andle%,31).... .|
00005090  0d 19 0a 05 cc 0d 19 14  36 20 4d 48 6c 65 76 65  |........6 MHleve|
000050a0  6c 25 28 6e 6f 25 29 3d  48 6c 65 76 65 6c 25 28  |l%(no%)=Hlevel%(|
000050b0  6e 6f 25 29 3a 24 4d 48  62 75 66 66 25 3d c3 48  |no%):$MHbuff%=.H|
000050c0  6c 65 76 65 6c 25 28 6e  6f 25 29 0d 19 1e 05 cd  |level%(no%).....|
000050d0  0d 19 28 27 e7 20 66 6f  72 63 65 35 25 3d 30 20  |..('. force5%=0 |
000050e0  8c 20 48 65 6c 70 6c 65  76 25 3d 48 6c 65 76 65  |. Helplev%=Hleve|
000050f0  6c 25 28 6e 6f 25 29 0d  19 32 1a 6e 65 78 74 6d  |l%(no%)..2.nextm|
00005100  65 73 73 25 3d 28 48 65  6c 70 6c 65 76 25 3d 35  |ess%=(Helplev%=5|
00005110  29 0d 19 3c 22 e7 20 48  65 6c 70 6c 65 76 25 3c  |)..<". Helplev%<|
00005120  35 20 8c 20 f2 72 65 6d  6f 76 65 5f 6d 65 73 73  |5 . .remove_mess|
00005130  61 67 65 0d 19 46 21 f2  73 65 74 5f 74 6f 70 5f  |age..F!.set_top_|
00005140  69 63 6f 6e 28 32 2c 28  48 65 6c 70 6c 65 76 25  |icon(2,(Helplev%|
00005150  3e 31 29 29 0d 19 50 05  e1 0d 19 5a 04 0d 19 64  |>1))..P....Z...d|
00005160  04 0d 19 6e 2a dd 20 a4  73 65 6c 65 63 74 5f 64  |...n*. .select_d|
00005170  69 73 70 6c 61 79 28 69  63 6f 6e 25 2c 76 61 72  |isplay(icon%,var|
00005180  25 2c 74 6f 70 69 63 6f  6e 25 29 0d 19 78 27 76  |%,topicon%)..x'v|
00005190  61 72 25 3d a4 69 63 6f  6e 5f 73 65 6c 65 63 74  |ar%=.icon_select|
000051a0  65 64 28 43 68 61 6e 64  6c 65 25 2c 69 63 6f 6e  |ed(Chandle%,icon|
000051b0  25 29 0d 19 82 20 f2 73  65 74 5f 74 6f 70 5f 69  |%)... .set_top_i|
000051c0  63 6f 6e 28 74 6f 70 69  63 6f 6e 25 2c 76 61 72  |con(topicon%,var|
000051d0  25 29 0d 19 8c 09 3d 76  61 72 25 0d 19 96 04 0d  |%)....=var%.....|
000051e0  19 a0 04 0d 19 aa 1b dd  20 f2 61 64 6a 75 73 74  |........ .adjust|
000051f0  5f 66 6f 72 5f 6d 6f 64  65 28 6e 6f 25 29 0d 19  |_for_mode(no%)..|
00005200  b4 08 ea 20 6e 25 0d 19  be 2e f2 73 68 61 64 65  |... n%.....shade|
00005210  5f 33 69 63 6f 6e 73 28  43 68 61 6e 64 6c 65 25  |_3icons(Chandle%|
00005220  2c 33 31 2c 2d 28 6d 6f  64 65 25 28 6e 6f 25 29  |,31,-(mode%(no%)|
00005230  3d 30 29 29 0d 19 c8 41  f2 73 68 61 64 65 5f 33  |=0))...A.shade_3|
00005240  69 63 6f 6e 73 28 43 68  61 6e 64 6c 65 25 2c 33  |icons(Chandle%,3|
00005250  37 2c 2d 28 6d 6f 64 65  25 28 6e 6f 25 29 3d 30  |7,-(mode%(no%)=0|
00005260  20 84 20 61 75 74 6f 68  65 6c 70 25 28 6e 6f 25  | . autohelp%(no%|
00005270  29 3d 30 29 29 0d 19 d2  2b f2 73 68 61 64 65 5f  |)=0))...+.shade_|
00005280  69 63 6f 6e 28 43 68 61  6e 64 6c 65 25 2c 35 30  |icon(Chandle%,50|
00005290  2c 28 6d 6f 64 65 25 28  6e 6f 25 29 3d 30 29 29  |,(mode%(no%)=0))|
000052a0  0d 19 dc 2b f2 73 68 61  64 65 5f 69 63 6f 6e 28  |...+.shade_icon(|
000052b0  43 68 61 6e 64 6c 65 25  2c 33 34 2c 28 6d 6f 64  |Chandle%,34,(mod|
000052c0  65 25 28 6e 6f 25 29 3d  30 29 29 0d 19 e6 14 e7  |e%(no%)=0)).....|
000052d0  20 6d 6f 64 65 25 28 6e  6f 25 29 3d 30 20 8c 0d  | mode%(no%)=0 ..|
000052e0  19 f0 31 20 61 75 74 6f  68 65 6c 70 25 28 6e 6f  |..1 autohelp%(no|
000052f0  25 29 3d 30 3a f2 73 65  6c 65 63 74 5f 69 63 6f  |%)=0:.select_ico|
00005300  6e 28 43 68 61 6e 64 6c  65 25 2c 35 30 2c 30 29  |n(Chandle%,50,0)|
00005310  0d 19 fa 2e 20 66 6f 72  63 65 25 28 6e 6f 25 29  |.... force%(no%)|
00005320  3d 30 3a f2 73 65 6c 65  63 74 5f 69 63 6f 6e 28  |=0:.select_icon(|
00005330  43 68 61 6e 64 6c 65 25  2c 33 34 2c 30 29 0d 1a  |Chandle%,34,0)..|
00005340  04 12 20 6d 65 73 73 61  67 65 24 28 29 3d 22 22  |.. message$()=""|
00005350  0d 1a 0e 05 cd 0d 1a 18  05 e1 0d 1a 22 04 0d 1a  |............"...|
00005360  2c 04 0d 1a 36 11 dd 20  f2 72 65 73 65 74 5f 67  |,...6.. .reset_g|
00005370  61 6d 65 0d 1a 40 0b ea  20 6e 25 2c 6d 25 0d 1a  |ame..@.. n%,m%..|
00005380  4a 75 71 75 65 73 74 25  3d 30 3a 74 72 79 25 3d  |Juquest%=0:try%=|
00005390  30 3a 43 6f 72 72 65 63  74 41 6e 73 25 3d 30 3a  |0:CorrectAns%=0:|
000053a0  73 65 73 73 74 69 6d 65  25 3d 91 3a 73 74 6f 70  |sesstime%=.:stop|
000053b0  70 65 64 25 3d 30 3a 50  63 6f 75 6e 74 25 3d 2d  |ped%=0:Pcount%=-|
000053c0  31 3a 41 6e 75 6d 52 57  25 3d 30 3a 53 6e 75 6d  |1:AnumRW%=0:Snum|
000053d0  52 57 25 3d 30 3a 66 6f  72 63 65 35 25 3d 30 3a  |RW%=0:force5%=0:|
000053e0  50 70 6f 73 25 28 29 3d  30 3a 74 69 6d 65 75 70  |Ppos%()=0:timeup|
000053f0  25 3d 30 0d 1a 54 1a e7  20 6f 77 6e 73 75 6d 25  |%=0..T.. ownsum%|
00005400  28 4e 61 6d 65 4e 6f 25  29 3d 30 20 8c 0d 1a 5e  |(NameNo%)=0 ...^|
00005410  0d 20 f2 73 65 74 5f 73  75 6d 0d 1a 68 05 cc 0d  |. .set_sum..h...|
00005420  1a 72 41 20 e7 20 64 65  63 69 6d 61 6c 25 28 4e  |.rA . decimal%(N|
00005430  61 6d 65 4e 6f 25 29 3d  30 20 8c 20 24 4f 73 75  |ameNo%)=0 . $Osu|
00005440  6d 31 62 75 66 66 25 3d  22 30 22 20 8b 20 24 4f  |m1buff%="0" . $O|
00005450  73 75 6d 31 62 75 66 66  25 3d 22 31 2e 30 30 22  |sum1buff%="1.00"|
00005460  0d 1a 7c 14 20 24 4f 73  75 6d 32 62 75 66 66 25  |..|. $Osum2buff%|
00005470  3d 22 30 22 0d 1a 86 17  20 f2 73 65 74 5f 75 70  |="0".... .set_up|
00005480  5f 73 75 6d 5f 77 69 6e  64 6f 77 0d 1a 90 05 cd  |_sum_window.....|
00005490  0d 1a 9a 05 e1 0d 1a a4  04 0d 1a ae 04 0d 1a b8  |................|
000054a0  0e dd 20 f2 73 65 74 5f  73 75 6d 0d 1a c2 2b 72  |.. .set_sum...+r|
000054b0  75 62 64 69 67 25 3d 2d  31 3a 69 6e 69 74 78 25  |ubdig%=-1:initx%|
000054c0  3d 30 3a 69 6e 69 74 79  25 3d 30 3a 69 6e 69 74  |=0:inity%=0:init|
000054d0  6e 75 6d 25 3d 30 0d 1a  cc 3f 64 69 67 61 6e 73  |num%=0...?digans|
000054e0  24 28 29 3d 22 22 3a 63  61 72 72 79 24 28 29 3d  |$()="":carry$()=|
000054f0  22 22 3a 6d 65 73 73 61  67 65 24 28 29 3d 22 22  |"":message$()=""|
00005500  3a 6c 61 79 65 72 4f 6e  25 28 29 3d 30 3a 4d 66  |:layerOn%()=0:Mf|
00005510  6c 67 25 3d 30 0d 1a d6  77 64 69 67 61 6e 73 25  |lg%=0...wdigans%|
00005520  28 29 3d 30 3a 73 74 72  69 6b 65 25 28 29 3d 30  |()=0:strike%()=0|
00005530  3a 64 6f 6e 65 24 28 29  3d 22 22 3a 64 72 61 67  |:done$()="":drag|
00005540  25 3d 30 3a 72 75 62 62  65 72 25 3d 30 3a 6d 61  |%=0:rubber%=0:ma|
00005550  72 6b 65 64 25 3d 30 3a  64 6f 75 62 6c 65 25 3d  |rked%=0:double%=|
00005560  30 3a 50 73 61 76 65 25  3d 30 3a 6e 65 78 74 63  |0:Psave%=0:nextc|
00005570  68 65 63 6b 25 3d 30 3a  4c 74 79 70 65 25 3d 30  |heck%=0:Ltype%=0|
00005580  3a 4c 63 75 72 72 65 6e  74 25 3d 30 0d 1a e0 48  |:Lcurrent%=0...H|
00005590  63 61 72 72 79 25 3d 30  3a 53 43 66 6f 72 6d 61  |carry%=0:SCforma|
000055a0  74 25 3d 32 2d 65 73 74  69 6d 61 74 65 25 28 4e  |t%=2-estimate%(N|
000055b0  61 6d 65 4e 6f 25 29 3a  63 6f 72 72 65 63 74 25  |ameNo%):correct%|
000055c0  3d 30 3a 67 61 6d 65 25  3d 31 3a 72 65 6a 65 63  |=0:game%=1:rejec|
000055d0  74 25 3d 30 0d 1a ea 34  72 65 6d 24 28 29 3d 22  |t%=0...4rem$()="|
000055e0  22 3a 72 65 6d 61 69 6e  64 65 72 24 3d 22 22 3a  |":remainder$="":|
000055f0  72 65 6d 61 69 6e 64 65  72 25 3d 30 3a 64 6f 6e  |remainder%=0:don|
00005600  65 52 24 28 29 3d 22 22  0d 1a f4 27 e7 20 66 6f  |eR$()=""...'. fo|
00005610  72 63 65 35 25 3d 2d 31  20 8c 20 53 43 66 6f 72  |rce5%=-1 . SCfor|
00005620  6d 61 74 25 3d 32 20 8b  20 74 72 79 25 3d 30 0d  |mat%=2 . try%=0.|
00005630  1a fe 3c 6e 65 78 74 6d  65 73 73 25 3d 2d 28 48  |..<nextmess%=-(H|
00005640  65 6c 70 6c 65 76 25 3d  35 20 80 20 6d 6f 64 65  |elplev%=5 . mode|
00005650  25 28 4e 61 6d 65 4e 6f  25 29 3d 31 20 80 20 53  |%(NameNo%)=1 . S|
00005660  43 66 6f 72 6d 61 74 25  3d 32 29 0d 1b 08 16 f2  |Cformat%=2).....|
00005670  73 65 74 5f 74 6f 70 5f  69 63 6f 6e 28 30 2c 30  |set_top_icon(0,0|
00005680  29 0d 1b 12 17 f2 73 65  74 5f 74 6f 70 5f 69 63  |).....set_top_ic|
00005690  6f 6e 28 31 2c 2d 31 29  0d 1b 1c 04 0d 1b 26 05  |on(1,-1)......&.|
000056a0  f5 0d 1b 30 27 20 64 69  67 31 24 28 29 3d 22 22  |...0' dig1$()=""|
000056b0  3a 64 69 67 32 24 28 29  3d 22 22 3a 63 61 72 5f  |:dig2$()="":car_|
000056c0  64 69 67 25 28 29 3d 30  0d 1b 3a 33 20 61 6e 73  |dig%()=0..:3 ans|
000056d0  77 65 72 25 28 29 3d 30  3a 61 6e 73 77 65 72 24  |wer%()=0:answer$|
000056e0  28 29 3d 22 22 3a 4c 73  68 69 66 74 25 28 29 3d  |()="":Lshift%()=|
000056f0  30 3a 72 65 6a 65 63 74  25 3d 30 0d 1b 44 04 0d  |0:reject%=0..D..|
00005700  1b 4e 14 20 e7 20 66 6f  72 63 65 35 25 3c 3e 2d  |.N. . force5%<>-|
00005710  31 20 8c 0d 1b 58 38 20  20 e7 20 6f 77 6e 73 75  |1 ...X8  . ownsu|
00005720  6d 25 28 4e 61 6d 65 4e  6f 25 29 3d 30 20 8c 20  |m%(NameNo%)=0 . |
00005730  f2 6d 61 6b 65 5f 64 69  76 28 44 6c 65 76 65 6c  |.make_div(Dlevel|
00005740  25 28 4e 61 6d 65 4e 6f  25 29 29 0d 1b 62 06 20  |%(NameNo%))..b. |
00005750  cd 0d 1b 6c 1e 20 f2 64  69 67 69 74 73 28 6e 75  |...l. .digits(nu|
00005760  6d 31 25 2c 64 69 67 31  24 28 29 2c 2d 31 29 0d  |m1%,dig1$(),-1).|
00005770  1b 76 1e 20 f2 64 69 67  69 74 73 28 6e 75 6d 32  |.v. .digits(num2|
00005780  25 2c 64 69 67 32 24 28  29 2c 2d 31 29 0d 1b 80  |%,dig2$(),-1)...|
00005790  1c 20 f2 6c 61 79 65 72  73 28 6c 65 76 65 6c 25  |. .layers(level%|
000057a0  2c 72 65 6a 65 63 74 25  29 0d 1b 8a 24 fd 20 72  |,reject%)...$. r|
000057b0  65 6a 65 63 74 25 3d 30  20 84 20 6f 77 6e 73 75  |eject%=0 . ownsu|
000057c0  6d 25 28 4e 61 6d 65 4e  6f 25 29 3d 31 0d 1b 94  |m%(NameNo%)=1...|
000057d0  04 0d 1b 9e 85 e7 20 6f  77 6e 73 75 6d 25 28 4e  |...... ownsum%(N|
000057e0  61 6d 65 4e 6f 25 29 3d  31 20 80 20 66 6f 72 63  |ameNo%)=1 . forc|
000057f0  65 35 25 3c 3e 2d 31 20  80 20 72 65 6a 65 63 74  |e5%<>-1 . reject|
00005800  25 3d 2d 31 20 8c 20 f2  6f 70 65 6e 5f 77 69 6e  |%=-1 . .open_win|
00005810  64 6f 77 28 4f 68 61 6e  64 6c 65 25 29 3a 4f 53  |dow(Ohandle%):OS|
00005820  68 61 6e 64 6c 65 25 3d  a4 72 65 6c 61 74 69 76  |handle%=.relativ|
00005830  65 5f 77 69 6e 64 6f 77  28 4f 68 61 6e 64 6c 65  |e_window(Ohandle|
00005840  25 2c 4f 53 68 61 6e 64  6c 65 25 2c 31 31 30 2c  |%,OShandle%,110,|
00005850  33 30 30 29 3a e1 0d 1b  a8 04 0d 1b b2 0c 6c 61  |300):.........la|
00005860  79 65 72 25 3d 30 0d 1b  bc 3a e7 20 44 69 76 54  |yer%=0...:. DivT|
00005870  79 70 65 25 20 8c 20 6e  65 78 74 64 69 67 25 3d  |ype% . nextdig%=|
00005880  4c 73 68 69 66 74 25 28  31 29 20 8b 20 6e 65 78  |Lshift%(1) . nex|
00005890  74 64 69 67 25 3d 61 6e  73 6c 69 6d 25 28 30 29  |tdig%=anslim%(0)|
000058a0  0d 1b c6 35 6e 65 78 74  65 72 72 25 3d 61 6e 73  |...5nexterr%=ans|
000058b0  6c 69 6d 25 28 6c 61 79  65 72 6c 69 6d 25 29 2b  |lim%(layerlim%)+|
000058c0  31 3a 6e 65 78 74 65 72  72 4c 25 3d 6c 61 79 65  |1:nexterrL%=laye|
000058d0  72 6c 69 6d 25 0d 1b d0  23 f2 73 68 61 64 65 5f  |rlim%...#.shade_|
000058e0  69 63 6f 6e 28 68 61 6e  64 6c 65 25 28 67 61 6d  |icon(handle%(gam|
000058f0  65 25 29 2c 35 2c 31 29  0d 1b da 42 f2 73 65 74  |e%),5,1)...B.set|
00005900  5f 74 6f 70 5f 69 63 6f  6e 28 32 2c 28 53 43 66  |_top_icon(2,(SCf|
00005910  6f 72 6d 61 74 25 3d 32  20 80 20 6d 6f 64 65 25  |ormat%=2 . mode%|
00005920  28 4e 61 6d 65 4e 6f 25  29 3d 31 20 80 20 48 65  |(NameNo%)=1 . He|
00005930  6c 70 6c 65 76 25 3e 31  29 29 0d 1b e4 34 f2 63  |lplev%>1))...4.c|
00005940  6c 6f 73 65 5f 77 69 6e  64 6f 77 28 50 32 68 61  |lose_window(P2ha|
00005950  6e 64 6c 65 25 29 3a f2  63 6c 6f 73 65 5f 77 69  |ndle%):.close_wi|
00005960  6e 64 6f 77 28 50 68 61  6e 64 6c 65 25 29 0d 1b  |ndow(Phandle%)..|
00005970  ee 47 e7 20 6f 77 6e 73  75 6d 25 28 4e 61 6d 65  |.G. ownsum%(Name|
00005980  4e 6f 25 29 20 f2 63 6c  6f 73 65 5f 77 69 6e 64  |No%) .close_wind|
00005990  6f 77 28 4f 68 61 6e 64  6c 65 25 29 3a f2 63 6c  |ow(Ohandle%):.cl|
000059a0  6f 73 65 5f 77 69 6e 64  6f 77 28 4f 53 68 61 6e  |ose_window(OShan|
000059b0  64 6c 65 25 29 0d 1b f8  38 c8 99 22 57 69 6d 70  |dle%)...8.."Wimp|
000059c0  5f 46 6f 72 63 65 52 65  64 72 61 77 22 2c 68 61  |_ForceRedraw",ha|
000059d0  6e 64 6c 65 25 28 67 61  6d 65 25 29 2c 30 2c 2d  |ndle%(game%),0,-|
000059e0  39 30 30 2c 31 32 38 30  2c 2d 31 35 30 0d 1c 02  |900,1280,-150...|
000059f0  05 e1 0d 1c 0c 04 0d 1c  16 04 0d 1c 20 15 dd 20  |............ .. |
00005a00  f2 70 6c 61 63 65 5f 65  73 74 69 6d 61 74 65 0d  |.place_estimate.|
00005a10  1c 2a 40 ea 20 73 75 6d  78 31 25 2c 73 75 6d 78  |.*@. sumx1%,sumx|
00005a20  32 25 2c 73 74 32 25 2c  78 25 2c 79 25 2c 73 79  |2%,st2%,x%,y%,sy|
00005a30  6d 62 6f 6c 24 2c 70 6f  77 65 72 25 2c 6e 32 6c  |mbol$,power%,n2l|
00005a40  65 6e 25 3a 79 25 3d 59  70 6f 73 25 28 37 29 0d  |en%:y%=Ypos%(7).|
00005a50  1c 34 14 73 79 6d 62 6f  6c 24 3d 22 64 69 76 69  |.4.symbol$="divi|
00005a60  64 65 22 0d 1c 3e 04 0d  1c 48 14 6e 32 6c 65 6e  |de"..>...H.n2len|
00005a70  25 3d a9 20 c3 20 6e 75  6d 32 25 0d 1c 52 2e 73  |%=. . num2%..R.s|
00005a80  79 6d 62 25 3d 2d 38 2b  6e 32 6c 65 6e 25 2b 31  |ymb%=-8+n2len%+1|
00005a90  3a 73 79 6d 62 78 25 3d  a4 64 69 67 78 28 30 2c  |:symbx%=.digx(0,|
00005aa0  73 79 6d 62 25 29 2b 31  33 0d 1c 5c 1a 65 71 75  |symb%)+13..\.equ|
00005ab0  61 6c 73 25 3d a4 64 69  67 78 28 30 2c 2d 38 29  |als%=.digx(0,-8)|
00005ac0  2b 31 33 0d 1c 66 04 0d  1c 70 18 c8 99 22 57 69  |+13..f...p..."Wi|
00005ad0  6d 70 5f 53 65 74 43 6f  6c 6f 75 72 22 2c 37 0d  |mp_SetColour",7.|
00005ae0  1c 7a 10 e3 20 70 6f 73  25 3d 30 20 b8 20 34 0d  |.z.. pos%=0 . 4.|
00005af0  1c 84 1f 20 78 31 25 3d  a4 64 69 67 78 28 70 6f  |... x1%=.digx(po|
00005b00  73 25 2c 73 79 6d 62 25  2b 31 29 2b 31 37 0d 1c  |s%,symb%+1)+17..|
00005b10  8e 1a 20 78 32 25 3d a4  64 69 67 78 28 70 6f 73  |.. x2%=.digx(pos|
00005b20  25 2c 2d 37 29 2b 31 37  0d 1c 98 67 20 e7 20 64  |%,-7)+17...g . d|
00005b30  69 67 31 24 28 70 6f 73  25 29 3c 3e 22 22 20 8c  |ig1$(pos%)<>"" .|
00005b40  20 c8 99 22 4f 53 5f 53  70 72 69 74 65 4f 70 22  | .."OS_SpriteOp"|
00005b50  2c 26 31 33 34 2c 73 61  72 65 61 25 2c 22 6e 22  |,&134,sarea%,"n"|
00005b60  2b 64 69 67 31 24 28 70  6f 73 25 29 2c 6f 78 25  |+dig1$(pos%),ox%|
00005b70  2b 78 31 25 2c 6f 79 25  2b 79 25 2b 38 2c 30 2c  |+x1%,oy%+y%+8,0,|
00005b80  73 63 61 6c 65 32 37 25  2c 74 72 61 6e 73 25 0d  |scale27%,trans%.|
00005b90  1c a2 67 20 e7 20 64 69  67 32 24 28 70 6f 73 25  |..g . dig2$(pos%|
00005ba0  29 3c 3e 22 22 20 8c 20  c8 99 22 4f 53 5f 53 70  |)<>"" . .."OS_Sp|
00005bb0  72 69 74 65 4f 70 22 2c  26 31 33 34 2c 73 61 72  |riteOp",&134,sar|
00005bc0  65 61 25 2c 22 6e 22 2b  64 69 67 32 24 28 70 6f  |ea%,"n"+dig2$(po|
00005bd0  73 25 29 2c 6f 78 25 2b  78 32 25 2c 6f 79 25 2b  |s%),ox%+x2%,oy%+|
00005be0  79 25 2b 38 2c 30 2c 73  63 61 6c 65 32 37 25 2c  |y%+8,0,scale27%,|
00005bf0  74 72 61 6e 73 25 0d 1c  ac 04 0d 1c b6 1a 20 e7  |trans%........ .|
00005c00  20 63 6f 6c 6e 61 6d 65  25 28 4e 61 6d 65 4e 6f  | colname%(NameNo|
00005c10  25 29 20 8c 0d 1c c0 5b  20 20 78 25 3d a4 64 69  |%) ....[  x%=.di|
00005c20  67 78 28 70 6f 73 25 2c  2d 31 33 29 2b 32 2d 31  |gx(pos%,-13)+2-1|
00005c30  33 2a 28 64 65 63 69 6d  61 6c 25 28 4e 61 6d 65  |3*(decimal%(Name|
00005c40  4e 6f 25 29 3d 30 20 80  20 70 6f 73 25 3c 34 20  |No%)=0 . pos%<4 |
00005c50  84 20 64 65 63 69 6d 61  6c 25 28 4e 61 6d 65 4e  |. decimal%(NameN|
00005c60  6f 25 29 3d 31 20 80 20  70 6f 73 25 3e 31 29 0d  |o%)=1 . pos%>1).|
00005c70  1c ca 29 20 20 70 6f 77  65 72 25 3d 70 6f 73 25  |..)  power%=pos%|
00005c80  2b 32 2a 28 64 65 63 69  6d 61 6c 25 28 4e 61 6d  |+2*(decimal%(Nam|
00005c90  65 4e 6f 25 29 3d 31 29  0d 1c d4 50 20 20 c8 99  |eNo%)=1)...P  ..|
00005ca0  22 4f 53 5f 53 70 72 69  74 65 4f 70 22 2c 26 31  |"OS_SpriteOp",&1|
00005cb0  33 34 2c 73 61 72 65 61  25 2c 22 64 69 67 22 2b  |34,sarea%,"dig"+|
00005cc0  c3 70 6f 77 65 72 25 2c  6f 78 25 2b 78 25 2c 6f  |.power%,ox%+x%,o|
00005cd0  79 25 2b 79 25 2b 37 35  2c 30 2c 73 63 61 6c 65  |y%+y%+75,0,scale|
00005ce0  25 2c 74 72 61 6e 73 25  0d 1c de 06 20 cd 0d 1c  |%,trans%.... ...|
00005cf0  e8 05 ed 0d 1c f2 04 0d  1c fc 19 e7 20 64 65 63  |............ dec|
00005d00  69 6d 61 6c 25 28 4e 61  6d 65 4e 6f 25 29 20 8c  |imal%(NameNo%) .|
00005d10  0d 1d 06 30 20 78 31 25  3d a4 64 69 67 78 28 32  |...0 x1%=.digx(2|
00005d20  2c 73 79 6d 62 25 2b 31  29 2d 31 32 3a 78 32 25  |,symb%+1)-12:x2%|
00005d30  3d a4 64 69 67 78 28 32  2c 2d 31 33 29 2d 31 32  |=.digx(2,-13)-12|
00005d40  0d 1d 10 4c 20 c8 99 22  4f 53 5f 53 70 72 69 74  |...L .."OS_Sprit|
00005d50  65 4f 70 22 2c 26 31 33  34 2c 73 61 72 65 61 25  |eOp",&134,sarea%|
00005d60  2c 22 64 65 63 70 6f 69  6e 74 22 2c 6f 78 25 2b  |,"decpoint",ox%+|
00005d70  78 31 25 2c 6f 79 25 2b  79 25 2d 38 2c 38 2c 73  |x1%,oy%+y%-8,8,s|
00005d80  63 61 6c 65 25 2c 74 72  61 6e 73 25 0d 1d 1a 4c  |cale%,trans%...L|
00005d90  20 c8 99 22 4f 53 5f 53  70 72 69 74 65 4f 70 22  | .."OS_SpriteOp"|
00005da0  2c 26 31 33 34 2c 73 61  72 65 61 25 2c 22 64 65  |,&134,sarea%,"de|
00005db0  63 70 6f 69 6e 74 22 2c  6f 78 25 2b 78 32 25 2c  |cpoint",ox%+x2%,|
00005dc0  6f 79 25 2b 79 25 2d 38  2c 38 2c 73 63 61 6c 65  |oy%+y%-8,8,scale|
00005dd0  25 2c 74 72 61 6e 73 25  0d 1d 24 05 cd 0d 1d 2e  |%,trans%..$.....|
00005de0  04 0d 1d 38 50 c8 99 22  4f 53 5f 53 70 72 69 74  |...8P.."OS_Sprit|
00005df0  65 4f 70 22 2c 26 31 33  34 2c 73 61 72 65 61 25  |eOp",&134,sarea%|
00005e00  2c 73 79 6d 62 6f 6c 24  2c 6f 78 25 2b 73 79 6d  |,symbol$,ox%+sym|
00005e10  62 78 25 2b 32 2c 6f 79  25 2b 79 25 2b 31 32 2c  |bx%+2,oy%+y%+12,|
00005e20  30 2c 73 63 61 6c 65 32  37 25 2c 74 72 61 6e 73  |0,scale27%,trans|
00005e30  25 0d 1d 42 4e c8 99 22  4f 53 5f 53 70 72 69 74  |%..BN.."OS_Sprit|
00005e40  65 4f 70 22 2c 26 31 33  34 2c 73 61 72 65 61 25  |eOp",&134,sarea%|
00005e50  2c 22 65 71 75 61 6c 73  22 2c 6f 78 25 2b 65 71  |,"equals",ox%+eq|
00005e60  75 61 6c 73 25 2c 6f 79  25 2b 79 25 2b 31 32 2c  |uals%,oy%+y%+12,|
00005e70  30 2c 73 63 61 6c 65 25  2c 74 72 61 6e 73 25 0d  |0,scale%,trans%.|
00005e80  1d 4c 4f c8 99 22 4f 53  5f 53 70 72 69 74 65 4f  |.LO.."OS_SpriteO|
00005e90  70 22 2c 26 31 33 34 2c  73 61 72 65 61 25 2c 22  |p",&134,sarea%,"|
00005ea0  65 71 75 61 6c 73 32 22  2c 6f 78 25 2b 31 31 36  |equals2",ox%+116|
00005eb0  30 2c 6f 79 25 2b 59 70  6f 73 25 28 34 29 2c 30  |0,oy%+Ypos%(4),0|
00005ec0  2c 73 63 61 6c 65 25 2c  74 72 61 6e 73 25 0d 1d  |,scale%,trans%..|
00005ed0  56 26 c8 93 20 c8 90 20  6f 78 25 2b 39 32 38 2c  |V&.. .. ox%+928,|
00005ee0  6f 79 25 2b 59 70 6f 73  25 28 37 29 2d 38 2c 32  |oy%+Ypos%(7)-8,2|
00005ef0  39 30 2c 34 0d 1d 60 05  e1 0d 1d 6a 04 0d 1d 74  |90,4..`....j...t|
00005f00  04 0d 1d 7e 12 dd 20 f2  73 65 74 5f 66 6f 72 6d  |...~.. .set_form|
00005f10  61 74 32 0d 1d 88 3c 45  73 74 56 61 6c 25 3d 64  |at2...<EstVal%=d|
00005f20  69 67 61 6e 73 25 28 30  29 3a 64 69 67 61 6e 73  |igans%(0):digans|
00005f30  25 28 30 29 3d 30 3a 64  69 67 61 6e 73 24 28 29  |%(0)=0:digans$()|
00005f40  3d 22 22 3a 53 43 66 6f  72 6d 61 74 25 3d 32 0d  |="":SCformat%=2.|
00005f50  1d 92 23 f2 73 68 61 64  65 5f 69 63 6f 6e 28 68  |..#.shade_icon(h|
00005f60  61 6e 64 6c 65 25 28 67  61 6d 65 25 29 2c 32 2c  |andle%(game%),2,|
00005f70  30 29 0d 1d 9c 1f e7 20  48 65 6c 70 6c 65 76 25  |0)..... Helplev%|
00005f80  3d 35 20 8c 20 6e 65 78  74 6d 65 73 73 25 3d 2d  |=5 . nextmess%=-|
00005f90  31 0d 1d a6 38 c8 99 22  57 69 6d 70 5f 46 6f 72  |1...8.."Wimp_For|
00005fa0  63 65 52 65 64 72 61 77  22 2c 68 61 6e 64 6c 65  |ceRedraw",handle|
00005fb0  25 28 67 61 6d 65 25 29  2c 30 2c 2d 39 30 30 2c  |%(game%),0,-900,|
00005fc0  31 32 38 30 2c 2d 31 35  30 0d 1d b0 05 e1 0d 1d  |1280,-150.......|
00005fd0  ba 04 0d 1d c4 04 0d 1d  ce 15 dd 20 f2 69 63 6f  |........... .ico|
00005fe0  6e 5f 73 65 6c 65 63 74  69 6f 6e 0d 1d d8 1b ea  |n_selection.....|
00005ff0  20 69 63 6f 6e 25 3a 69  63 6f 6e 25 3d 62 6c 6f  | icon%:icon%=blo|
00006000  63 6b 25 21 31 36 0d 1d  e2 1d e7 20 4f 77 69 6e  |ck%!16..... Owin|
00006010  25 3d 2d 31 20 80 20 69  63 6f 6e 25 3c 3e 36 20  |%=-1 . icon%<>6 |
00006020  8c 20 e1 0d 1d ec 0e c8  8e 20 69 63 6f 6e 25 20  |. ....... icon% |
00006030  ca 0d 1d f6 31 20 c9 20  30 3a e7 20 63 6f 72 72  |....1 . 0:. corr|
00006040  65 63 74 25 3d 30 20 80  20 6e 65 78 74 63 68 65  |ect%=0 . nextche|
00006050  63 6b 25 3d 30 20 8c 20  f2 63 68 65 63 6b 5f 73  |ck%=0 . .check_s|
00006060  75 6d 0d 1e 00 51 20 c9  20 31 3a e7 20 72 75 62  |um...Q . 1:. rub|
00006070  62 65 72 25 3d 30 20 8c  20 f2 73 65 74 5f 75 70  |ber%=0 . .set_up|
00006080  5f 72 75 62 5f 6f 75 74  20 8b 20 f2 72 65 70 6c  |_rub_out . .repl|
00006090  61 63 65 5f 6e 75 6d 62  65 72 28 31 30 29 3a 72  |ace_number(10):r|
000060a0  75 62 62 65 72 25 3d 30  3a 2a 50 4f 49 4e 54 45  |ubber%=0:*POINTE|
000060b0  52 20 31 0d 1e 0a 16 20  c9 20 32 3a f2 6d 65 73  |R 1.... . 2:.mes|
000060c0  73 61 67 65 28 22 3f 22  29 0d 1e 14 6f 20 c9 20  |sage("?")...o . |
000060d0  33 3a e7 20 a4 77 69 6e  64 6f 77 5f 6f 70 65 6e  |3:. .window_open|
000060e0  28 43 43 68 61 6e 64 6c  65 25 29 3d 30 20 8c 20  |(CChandle%)=0 . |
000060f0  24 43 43 62 75 66 66 25  3d 22 30 22 3a 43 43 73  |$CCbuff%="0":CCs|
00006100  75 6d 3d 30 3a 43 43 6e  75 6d 3d 30 3a 43 43 6f  |um=0:CCnum=0:CCo|
00006110  70 25 3d 30 3a 43 43 70  72 65 76 25 3d 30 3a f2  |p%=0:CCprev%=0:.|
00006120  72 65 73 65 74 5f 69 63  6f 6e 28 43 43 68 61 6e  |reset_icon(CChan|
00006130  64 6c 65 25 2c 31 37 29  0d 1e 1e 33 20 20 20 20  |dle%,17)...3    |
00006140  20 20 20 20 43 43 68 61  6e 64 6c 65 25 3d a4 63  |    CChandle%=.c|
00006150  65 6e 74 72 65 5f 77 69  6e 64 6f 77 28 43 43 68  |entre_window(CCh|
00006160  61 6e 64 6c 65 25 2c 22  59 22 29 0d 1e 28 3b 20  |andle%,"Y")..(; |
00006170  20 20 20 20 20 20 20 c8  99 22 57 69 6d 70 5f 53  |       .."Wimp_S|
00006180  65 74 43 61 72 65 74 50  6f 73 69 74 69 6f 6e 22  |etCaretPosition"|
00006190  2c 43 43 68 61 6e 64 6c  65 25 2c 2d 31 2c 30 2c  |,CChandle%,-1,0,|
000061a0  30 2c 30 2c 2d 31 0d 1e  32 19 20 20 c9 20 34 3a  |0,0,-1..2.  . 4:|
000061b0  f2 73 68 6f 77 5f 73 63  6f 72 65 28 22 22 29 0d  |.show_score("").|
000061c0  1e 3c 54 20 c9 20 35 3a  e7 20 70 72 69 6e 74 65  |.<T . 5:. printe|
000061d0  72 25 28 4e 61 6d 65 4e  6f 25 29 3d 31 20 80 20  |r%(NameNo%)=1 . |
000061e0  64 72 69 76 65 72 25 3d  2d 31 20 80 20 63 6f 72  |driver%=-1 . cor|
000061f0  72 65 63 74 25 3d 30 20  80 20 50 73 61 76 65 25  |rect%=0 . Psave%|
00006200  3d 30 20 8c 20 f2 73 61  76 65 5f 73 75 6d 28 22  |=0 . .save_sum("|
00006210  53 22 29 0d 1e 46 24 20  20 20 20 20 20 20 20 e7  |S")..F$        .|
00006220  20 6d 61 72 6b 65 64 25  3d 30 20 8c 20 71 75 65  | marked%=0 . que|
00006230  73 74 25 20 2b 3d 31 0d  1e 50 15 20 20 20 20 20  |st% +=1..P.     |
00006240  20 20 20 66 6f 72 63 65  35 25 3d 30 0d 1e 5a 29  |   force5%=0..Z)|
00006250  20 20 20 20 20 20 20 20  e7 20 71 75 65 73 74 25  |        . quest%|
00006260  3c 6e 6f 5f 71 75 65 73  74 25 28 4e 61 6d 65 4e  |<no_quest%(NameN|
00006270  6f 25 29 20 8c 0d 1e 64  50 20 20 20 20 20 20 20  |o%) ...dP       |
00006280  20 20 e7 20 61 75 74 6f  25 28 4e 61 6d 65 4e 6f  |  . auto%(NameNo|
00006290  25 29 3d 31 20 80 20 6f  77 6e 73 75 6d 25 28 4e  |%)=1 . ownsum%(N|
000062a0  61 6d 65 4e 6f 25 29 3d  30 20 8c 20 f2 6e 65 77  |ameNo%)=0 . .new|
000062b0  5f 61 75 74 6f 5f 6c 65  76 65 6c 28 63 6f 72 72  |_auto_level(corr|
000062c0  65 63 74 25 29 0d 1e 6e  41 20 20 20 20 20 20 20  |ect%)..nA       |
000062d0  20 20 e7 20 6f 77 6e 73  75 6d 25 28 4e 61 6d 65  |  . ownsum%(Name|
000062e0  4e 6f 25 29 3d 30 20 8c  20 f2 73 65 74 5f 73 75  |No%)=0 . .set_su|
000062f0  6d 20 8b 20 f2 73 65 74  5f 75 70 5f 73 75 6d 5f  |m . .set_up_sum_|
00006300  77 69 6e 64 6f 77 0d 1e  78 0d 20 20 20 20 20 20  |window..x.      |
00006310  20 20 cc 0d 1e 82 16 20  20 20 20 20 20 20 20 20  |  .....         |
00006320  f2 67 61 6d 65 5f 65 6e  64 0d 1e 8c 0d 20 20 20  |.game_end....   |
00006330  20 20 20 20 20 cd 0d 1e  96 45 20 c9 20 36 3a 53  |     ....E . 6:S|
00006340  54 68 61 6e 64 6c 65 25  3d a4 72 65 6c 61 74 69  |Thandle%=.relati|
00006350  76 65 5f 77 69 6e 64 6f  77 28 68 61 6e 64 6c 65  |ve_window(handle|
00006360  25 28 67 61 6d 65 25 29  2c 53 54 68 61 6e 64 6c  |%(game%),SThandl|
00006370  65 25 2c 34 35 30 2c 35  35 36 29 0d 1e a0 75 20  |e%,450,556)...u |
00006380  c9 20 37 3a e7 20 70 72  69 6e 74 65 72 25 28 4e  |. 7:. printer%(N|
00006390  61 6d 65 4e 6f 25 29 3d  31 20 80 20 50 73 61 76  |ameNo%)=1 . Psav|
000063a0  65 25 3d 30 20 8c 20 f2  73 61 76 65 5f 73 75 6d  |e%=0 . .save_sum|
000063b0  28 22 53 22 29 3a 50 68  61 6e 64 6c 65 25 3d a4  |("S"):Phandle%=.|
000063c0  72 65 6c 61 74 69 76 65  5f 77 69 6e 64 6f 77 28  |relative_window(|
000063d0  68 61 6e 64 6c 65 25 28  67 61 6d 65 25 29 2c 50  |handle%(game%),P|
000063e0  68 61 6e 64 6c 65 25 2c  39 30 30 2c 34 30 36 29  |handle%,900,406)|
000063f0  0d 1e aa 34 20 c9 20 38  2c 39 2c 31 30 2c 31 31  |...4 . 8,9,10,11|
00006400  2c 31 32 2c 31 33 2c 31  34 2c 31 35 2c 31 36 2c  |,12,13,14,15,16,|
00006410  31 37 2c 35 37 3a e7 20  64 6f 75 62 6c 65 25 3d  |17,57:. double%=|
00006420  2d 31 20 8c 0d 1e b4 44  20 20 20 20 20 20 20 20  |-1 ....D        |
00006430  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00006440  e7 20 6d 6f 64 65 25 28  4e 61 6d 65 4e 6f 25 29  |. mode%(NameNo%)|
00006450  3d 31 20 8c 20 f2 70 6c  61 63 65 5f 64 6f 75 62  |=1 . .place_doub|
00006460  6c 65 5f 63 6c 69 63 6b  0d 1e be 1c 20 20 20 20  |le_click....    |
00006470  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00006480  20 20 20 cc 0d 1e c8 6a  20 20 20 20 20 20 20 20  |   ....j        |
00006490  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000064a0  e7 20 64 72 61 67 25 20  80 20 69 6e 69 74 6e 75  |. drag% . initnu|
000064b0  6d 25 3d 69 63 6f 6e 25  2d 38 20 8c 20 f2 72 65  |m%=icon%-8 . .re|
000064c0  70 6c 61 63 65 5f 6e 75  6d 62 65 72 28 69 63 6f  |place_number(ico|
000064d0  6e 25 2d 38 29 20 8b 20  f2 73 65 6c 65 63 74 5f  |n%-8) . .select_|
000064e0  64 69 67 69 74 28 69 63  6f 6e 25 2d 38 29 0d 1e  |digit(icon%-8)..|
000064f0  d2 1c 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |..              |
00006500  20 20 20 20 20 20 20 20  20 cd 0d 1e dc 88 20 c9  |         ..... .|
00006510  20 31 38 2c 31 39 2c 32  30 2c 32 31 2c 32 32 2c  | 18,19,20,21,22,|
00006520  32 37 2c 32 38 2c 32 39  2c 33 30 2c 33 31 2c 33  |27,28,29,30,31,3|
00006530  32 2c 33 33 2c 33 34 2c  33 35 2c 33 36 2c 33 37  |2,33,34,35,36,37|
00006540  2c 33 38 2c 33 39 2c 34  30 2c 34 31 2c 34 32 2c  |,38,39,40,41,42,|
00006550  34 33 2c 34 34 2c 34 35  2c 34 36 2c 34 37 2c 34  |43,44,45,46,47,4|
00006560  38 2c 34 39 2c 35 30 2c  35 31 2c 35 32 2c 35 33  |8,49,50,51,52,53|
00006570  2c 35 34 2c 35 35 2c 35  36 2c 37 35 2c 37 36 2c  |,54,55,56,75,76,|
00006580  37 37 2c 37 38 2c 37 39  3a e7 20 64 72 61 67 25  |77,78,79:. drag%|
00006590  20 8c 0d 1e e6 4e 20 20  20 20 20 20 20 20 20 20  | ....N          |
000065a0  20 20 20 20 20 20 20 20  20 20 20 20 e7 20 72 75  |            . ru|
000065b0  62 62 65 72 25 3d 30 20  8c 20 f2 70 6c 61 63 65  |bber%=0 . .place|
000065c0  5f 6e 75 6d 62 65 72 28  69 63 6f 6e 25 29 20 8b  |_number(icon%) .|
000065d0  20 f2 72 75 62 5f 6f 75  74 28 69 63 6f 6e 25 29  | .rub_out(icon%)|
000065e0  0d 1e f0 1a 20 20 20 20  20 20 20 20 20 20 20 20  |....            |
000065f0  20 20 20 20 20 20 20 20  20 cc 0d 1e fa 2e 20 20  |         .....  |
00006600  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00006610  20 20 20 20 f2 72 65 6d  6f 76 65 5f 64 69 67 69  |    .remove_digi|
00006620  74 28 69 63 6f 6e 25 29  0d 1f 04 1a 20 20 20 20  |t(icon%)....    |
00006630  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00006640  20 cd 0d 1f 0e 4b 20 c9  20 35 38 2c 35 39 2c 36  | ....K . 58,59,6|
00006650  30 2c 36 31 2c 36 32 2c  36 33 2c 36 34 2c 36 35  |0,61,62,63,64,65|
00006660  2c 36 36 2c 36 37 2c 36  38 2c 36 39 2c 37 30 2c  |,66,67,68,69,70,|
00006670  37 31 2c 37 32 2c 37 33  2c 37 34 3a f2 63 61 72  |71,72,73,74:.car|
00006680  72 79 5f 70 6f 73 28 69  63 6f 6e 25 29 0d 1f 18  |ry_pos(icon%)...|
00006690  1c 20 c9 20 32 33 2c 32  34 2c 32 35 2c 32 36 3a  |. . 23,24,25,26:|
000066a0  e7 20 64 72 61 67 25 20  8c 0d 1f 22 4e 20 20 20  |. drag% ..."N   |
000066b0  20 20 20 20 20 20 20 20  20 20 20 20 20 e7 20 72  |             . r|
000066c0  75 62 62 65 72 25 3d 30  20 8c 20 f2 70 6c 61 63  |ubber%=0 . .plac|
000066d0  65 5f 73 74 72 69 6b 65  28 69 63 6f 6e 25 29 20  |e_strike(icon%) |
000066e0  8b 20 f2 72 75 62 6f 75  74 5f 73 74 72 69 6b 65  |. .rubout_strike|
000066f0  28 69 63 6f 6e 25 29 0d  1f 2c 14 20 20 20 20 20  |(icon%)..,.     |
00006700  20 20 20 20 20 20 20 20  20 20 cc 0d 1f 36 29 20  |          ...6) |
00006710  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 f2  |               .|
00006720  72 65 6d 6f 76 65 5f 73  74 72 69 6b 65 28 69 63  |remove_strike(ic|
00006730  6f 6e 25 29 0d 1f 40 14  20 20 20 20 20 20 20 20  |on%)..@.        |
00006740  20 20 20 20 20 20 20 cd  0d 1f 4a 26 20 c9 20 38  |       ...J& . 8|
00006750  30 3a e7 20 53 43 66 6f  72 6d 61 74 25 3d 31 20  |0:. SCformat%=1 |
00006760  8c 20 f2 73 65 74 5f 66  6f 72 6d 61 74 32 0d 1f  |. .set_format2..|
00006770  54 16 20 c9 20 38 31 2c  38 32 3a e7 20 64 72 61  |T. . 81,82:. dra|
00006780  67 25 20 8c 0d 1f 5e 51  20 20 20 20 20 20 20 20  |g% ...^Q        |
00006790  20 20 20 20 20 e7 20 72  75 62 62 65 72 25 3d 30  |     . rubber%=0|
000067a0  20 8c 20 f2 70 6c 61 63  65 5f 72 65 6d 61 69 6e  | . .place_remain|
000067b0  64 65 72 28 69 63 6f 6e  25 29 20 8b 20 f2 72 75  |der(icon%) . .ru|
000067c0  62 6f 75 74 5f 72 65 6d  61 69 6e 64 65 72 28 69  |bout_remainder(i|
000067d0  63 6f 6e 25 29 0d 1f 68  11 20 20 20 20 20 20 20  |con%)..h.       |
000067e0  20 20 20 20 20 cc 0d 1f  72 29 20 20 20 20 20 20  |     ...r)      |
000067f0  20 20 20 20 20 20 20 f2  72 65 6d 6f 76 65 5f 72  |       .remove_r|
00006800  65 6d 61 69 6e 64 65 72  28 69 63 6f 6e 25 29 0d  |emainder(icon%).|
00006810  1f 7c 11 20 20 20 20 20  20 20 20 20 20 20 20 cd  |.|.            .|
00006820  0d 1f 86 05 cb 0d 1f 90  05 e1 0d 1f 9a 04 0d 1f  |................|
00006830  a4 04 0d 1f ae 17 dd 20  f2 63 61 72 72 79 5f 70  |....... .carry_p|
00006840  6f 73 28 69 63 6f 6e 25  29 0d 1f b8 23 e7 20 53  |os(icon%)...#. S|
00006850  43 66 6f 72 6d 61 74 25  3d 31 20 84 20 64 72 61  |Cformat%=1 . dra|
00006860  67 76 61 6c 25 3d 34 39  20 8c 20 e1 0d 1f c2 0d  |gval%=49 . .....|
00006870  e7 20 64 72 61 67 25 20  8c 0d 1f cc 3e 20 e7 20  |. drag% ....> . |
00006880  72 75 62 62 65 72 25 3d  30 20 8c 20 f2 70 6c 61  |rubber%=0 . .pla|
00006890  63 65 5f 63 61 72 72 79  28 69 63 6f 6e 25 29 20  |ce_carry(icon%) |
000068a0  8b 20 f2 72 75 62 5f 6f  75 74 5f 63 61 72 72 79  |. .rub_out_carry|
000068b0  28 69 63 6f 6e 25 29 0d  1f d6 05 cc 0d 1f e0 19  |(icon%).........|
000068c0  20 f2 72 65 6d 6f 76 65  5f 63 61 72 72 79 28 69  | .remove_carry(i|
000068d0  63 6f 6e 25 29 0d 1f ea  05 cd 0d 1f f4 05 e1 0d  |con%)...........|
000068e0  1f fe 04 0d 20 08 04 0d  20 12 19 dd 20 f2 73 65  |.... ... ... .se|
000068f0  6c 65 63 74 5f 64 69 67  69 74 28 6e 75 6d 25 29  |lect_digit(num%)|
00006900  0d 20 1c 0b ea 20 78 25  2c 79 25 0d 20 26 22 e7  |. ... x%,y%. &".|
00006910  20 72 75 62 62 65 72 25  20 8c 20 72 75 62 62 65  | rubber% . rubbe|
00006920  72 25 3d 30 3a 2a 50 4f  49 4e 54 45 52 0d 20 30  |r%=0:*POINTER. 0|
00006930  21 e7 20 6d 6f 64 65 25  28 4e 61 6d 65 4e 6f 25  |!. mode%(NameNo%|
00006940  29 20 8c 20 64 6f 75 62  6c 65 25 3d 2d 31 0d 20  |) . double%=-1. |
00006950  3a 53 e7 20 64 72 61 67  25 20 8c 20 c8 99 22 57  |:S. drag% . .."W|
00006960  69 6d 70 5f 46 6f 72 63  65 52 65 64 72 61 77 22  |imp_ForceRedraw"|
00006970  2c 68 61 6e 64 6c 65 25  28 67 61 6d 65 25 29 2c  |,handle%(game%),|
00006980  64 72 61 67 78 25 2c 64  72 61 67 79 25 2c 64 72  |dragx%,dragy%,dr|
00006990  61 67 78 25 2b 37 35 2c  64 72 61 67 79 25 2b 37  |agx%+75,dragy%+7|
000069a0  35 0d 20 44 1e 64 72 61  67 76 61 6c 25 3d 6e 75  |5. D.dragval%=nu|
000069b0  6d 25 3a 6e 65 78 74 63  68 65 63 6b 25 3d 30 0d  |m%:nextcheck%=0.|
000069c0  20 4e 13 f2 70 69 63 6b  5f 75 70 5f 6e 75 6d 62  | N..pick_up_numb|
000069d0  65 72 0d 20 58 05 e1 0d  20 62 04 0d 20 6c 04 0d  |er. X... b.. l..|
000069e0  20 76 1b dd 20 f2 72 65  6d 6f 76 65 5f 73 74 72  | v.. .remove_str|
000069f0  69 6b 65 28 69 63 6f 6e  25 29 0d 20 80 20 ea 20  |ike(icon%). . . |
00006a00  78 25 2c 59 25 2c 4c 61  79 65 72 25 2c 64 69 67  |x%,Y%,Layer%,dig|
00006a10  25 2c 66 6c 67 25 2c 73  74 25 0d 20 8a 34 f2 6e  |%,flg%,st%. .4.n|
00006a20  75 6d 62 65 72 5f 70 6f  73 5f 73 74 72 69 6b 65  |umber_pos_strike|
00006a30  28 69 63 6f 6e 25 2c 78  25 2c 59 25 2c 4c 61 79  |(icon%,x%,Y%,Lay|
00006a40  65 72 25 2c 64 69 67 25  2c 66 6c 67 25 29 0d 20  |er%,dig%,flg%). |
00006a50  94 11 e7 20 66 6c 67 25  3d 2d 31 20 8c 20 e1 0d  |... flg%=-1 . ..|
00006a60  20 9e 24 f2 64 69 67 69  74 5f 72 65 6d 6f 76 65  | .$.digit_remove|
00006a70  64 28 4c 61 79 65 72 25  2c 64 69 67 25 2c 66 6c  |d(Layer%,dig%,fl|
00006a80  67 25 29 0d 20 a8 10 e7  20 66 6c 67 25 3d 30 20  |g%). ... flg%=0 |
00006a90  8c 20 e1 0d 20 b2 39 c8  99 22 57 69 6d 70 5f 46  |. .. .9.."Wimp_F|
00006aa0  6f 72 63 65 52 65 64 72  61 77 22 2c 68 61 6e 64  |orceRedraw",hand|
00006ab0  6c 65 25 28 67 61 6d 65  25 29 2c 78 25 2c 59 25  |le%(game%),x%,Y%|
00006ac0  2c 78 25 2b 35 38 2c 59  25 2b 35 38 0d 20 bc 13  |,x%+58,Y%+58. ..|
00006ad0  f2 70 69 63 6b 5f 75 70  5f 6e 75 6d 62 65 72 0d  |.pick_up_number.|
00006ae0  20 c6 05 e1 0d 20 d0 04  0d 20 da 04 0d 20 e4 1b  | .... ... ... ..|
00006af0  dd 20 f2 72 75 62 6f 75  74 5f 73 74 72 69 6b 65  |. .rubout_strike|
00006b00  28 69 63 6f 6e 25 29 0d  20 ee 1c ea 20 78 25 2c  |(icon%). ... x%,|
00006b10  59 25 2c 4c 61 79 65 72  25 2c 64 69 67 25 2c 66  |Y%,Layer%,dig%,f|
00006b20  6c 67 25 0d 20 f8 34 f2  6e 75 6d 62 65 72 5f 70  |lg%. .4.number_p|
00006b30  6f 73 5f 73 74 72 69 6b  65 28 69 63 6f 6e 25 2c  |os_strike(icon%,|
00006b40  78 25 2c 59 25 2c 4c 61  79 65 72 25 2c 64 69 67  |x%,Y%,Layer%,dig|
00006b50  25 2c 66 6c 67 25 29 0d  21 02 0e e7 20 66 6c 67  |%,flg%).!... flg|
00006b60  25 20 8c 20 e1 0d 21 0c  24 f2 64 69 67 69 74 5f  |% . ..!.$.digit_|
00006b70  72 65 6d 6f 76 65 64 28  4c 61 79 65 72 25 2c 64  |removed(Layer%,d|
00006b80  69 67 25 2c 66 6c 67 25  29 0d 21 16 10 e7 20 66  |ig%,flg%).!... f|
00006b90  6c 67 25 3d 30 20 8c 20  e1 0d 21 20 0f 64 72 61  |lg%=0 . ..! .dra|
00006ba0  67 76 61 6c 25 3d 31 30  0d 21 2a 39 c8 99 22 57  |gval%=10.!*9.."W|
00006bb0  69 6d 70 5f 46 6f 72 63  65 52 65 64 72 61 77 22  |imp_ForceRedraw"|
00006bc0  2c 68 61 6e 64 6c 65 25  28 67 61 6d 65 25 29 2c  |,handle%(game%),|
00006bd0  78 25 2c 59 25 2c 78 25  2b 35 38 2c 59 25 2b 35  |x%,Y%,x%+58,Y%+5|
00006be0  38 0d 21 34 05 e1 0d 21  3e 04 0d 21 48 04 0d 21  |8.!4...!>..!H..!|
00006bf0  52 1e dd 20 f2 72 75 62  6f 75 74 5f 72 65 6d 61  |R.. .rubout_rema|
00006c00  69 6e 64 65 72 28 69 63  6f 6e 25 29 0d 21 5c 10  |inder(icon%).!\.|
00006c10  ea 20 78 25 2c 79 25 2c  64 69 67 25 0d 21 66 21  |. x%,y%,dig%.!f!|
00006c20  64 69 67 25 3d 69 63 6f  6e 25 2d 38 31 3a 79 25  |dig%=icon%-81:y%|
00006c30  3d a4 6c 61 79 65 72 59  28 30 2c 30 29 0d 21 70  |=.layerY(0,0).!p|
00006c40  25 e7 20 72 65 6d 24 28  64 69 67 25 29 3d 22 22  |%. rem$(dig%)=""|
00006c50  20 84 20 53 43 66 6f 72  6d 61 74 25 3d 31 20 8c  | . SCformat%=1 .|
00006c60  20 e1 0d 21 7a 15 78 25  3d a4 64 69 67 78 28 64  | ..!z.x%=.digx(d|
00006c70  69 67 25 2c 2d 33 29 0d  21 84 2f 72 65 6d 24 28  |ig%,-3).!./rem$(|
00006c80  64 69 67 25 29 3d 22 22  3a 72 65 6d 61 69 6e 64  |dig%)="":remaind|
00006c90  65 72 25 3d bb 28 72 65  6d 24 28 31 29 2b 72 65  |er%=.(rem$(1)+re|
00006ca0  6d 24 28 30 29 29 0d 21  8e 39 c8 99 22 57 69 6d  |m$(0)).!.9.."Wim|
00006cb0  70 5f 46 6f 72 63 65 52  65 64 72 61 77 22 2c 68  |p_ForceRedraw",h|
00006cc0  61 6e 64 6c 65 25 28 67  61 6d 65 25 29 2c 78 25  |andle%(game%),x%|
00006cd0  2c 79 25 2c 78 25 2b 35  38 2c 79 25 2b 35 38 0d  |,y%,x%+58,y%+58.|
00006ce0  21 98 05 e1 0d 21 a2 04  0d 21 ac 04 0d 21 b6 1e  |!....!...!...!..|
00006cf0  dd 20 f2 72 65 6d 6f 76  65 5f 72 65 6d 61 69 6e  |. .remove_remain|
00006d00  64 65 72 28 69 63 6f 6e  25 29 0d 21 c0 10 ea 20  |der(icon%).!... |
00006d10  78 25 2c 79 25 2c 64 69  67 25 0d 21 ca 21 64 69  |x%,y%,dig%.!.!di|
00006d20  67 25 3d 69 63 6f 6e 25  2d 38 31 3a 79 25 3d a4  |g%=icon%-81:y%=.|
00006d30  6c 61 79 65 72 59 28 30  2c 30 29 0d 21 d4 25 e7  |layerY(0,0).!.%.|
00006d40  20 72 65 6d 24 28 64 69  67 25 29 3d 22 22 20 84  | rem$(dig%)="" .|
00006d50  20 53 43 66 6f 72 6d 61  74 25 3d 31 20 8c 20 e1  | SCformat%=1 . .|
00006d60  0d 21 de 15 78 25 3d a4  64 69 67 78 28 64 69 67  |.!..x%=.digx(dig|
00006d70  25 2c 2d 33 29 0d 21 e8  19 64 72 61 67 76 61 6c  |%,-3).!..dragval|
00006d80  25 3d bb 20 72 65 6d 24  28 64 69 67 25 29 0d 21  |%=. rem$(dig%).!|
00006d90  f2 2f 72 65 6d 24 28 64  69 67 25 29 3d 22 22 3a  |./rem$(dig%)="":|
00006da0  72 65 6d 61 69 6e 64 65  72 25 3d bb 28 72 65 6d  |remainder%=.(rem|
00006db0  24 28 31 29 2b 72 65 6d  24 28 30 29 29 0d 21 fc  |$(1)+rem$(0)).!.|
00006dc0  36 e7 20 6d 6f 64 65 25  28 4e 61 6d 65 4e 6f 25  |6. mode%(NameNo%|
00006dd0  29 3d 31 20 8c 20 f2 64  65 6c 65 74 65 5f 63 75  |)=1 . .delete_cu|
00006de0  72 72 65 6e 74 5f 62 6f  78 28 30 2c 64 69 67 25  |rrent_box(0,dig%|
00006df0  2d 33 29 0d 22 06 39 c8  99 22 57 69 6d 70 5f 46  |-3).".9.."Wimp_F|
00006e00  6f 72 63 65 52 65 64 72  61 77 22 2c 68 61 6e 64  |orceRedraw",hand|
00006e10  6c 65 25 28 67 61 6d 65  25 29 2c 78 25 2c 79 25  |le%(game%),x%,y%|
00006e20  2c 78 25 2b 35 38 2c 79  25 2b 35 38 0d 22 10 13  |,x%+58,y%+58."..|
00006e30  f2 70 69 63 6b 5f 75 70  5f 6e 75 6d 62 65 72 0d  |.pick_up_number.|
00006e40  22 1a 05 e1 0d 22 24 04  0d 22 2e 04 0d 22 38 1a  |"...."$.."..."8.|
00006e50  dd 20 f2 72 65 6d 6f 76  65 5f 64 69 67 69 74 28  |. .remove_digit(|
00006e60  69 63 6f 6e 25 29 0d 22  42 36 ea 20 78 25 2c 59  |icon%)."B6. x%,Y|
00006e70  25 2c 4d 6f 64 65 25 2c  66 6c 67 25 2c 64 69 67  |%,Mode%,flg%,dig|
00006e80  25 2c 4c 61 79 65 72 25  2c 73 74 25 2c 63 6f 6e  |%,Layer%,st%,con|
00006e90  64 25 3a 72 75 62 62 65  72 25 3d 30 0d 22 4c 2b  |d%:rubber%=0."L+|
00006ea0  4d 6f 64 65 25 3d 2d 28  6d 6f 64 65 25 28 4e 61  |Mode%=-(mode%(Na|
00006eb0  6d 65 4e 6f 25 29 3d 31  20 80 20 53 43 66 6f 72  |meNo%)=1 . SCfor|
00006ec0  6d 61 74 25 3d 32 29 0d  22 56 32 f2 6e 75 6d 62  |mat%=2)."V2.numb|
00006ed0  65 72 5f 70 6f 73 69 74  69 6f 6e 28 69 63 6f 6e  |er_position(icon|
00006ee0  25 2c 78 25 2c 59 25 2c  4c 61 79 65 72 25 2c 64  |%,x%,Y%,Layer%,d|
00006ef0  69 67 25 2c 66 6c 67 25  29 0d 22 60 26 63 6f 6e  |ig%,flg%)."`&con|
00006f00  64 25 3d 28 4c 61 79 65  72 25 3d 30 20 80 20 64  |d%=(Layer%=0 . d|
00006f10  69 67 25 3e 61 6e 73 6c  69 6d 25 28 30 29 29 0d  |ig%>anslim%(0)).|
00006f20  22 6a 27 e7 20 6d 65 73  73 61 67 65 24 28 30 29  |"j'. message$(0)|
00006f30  3c 3e 22 22 20 8c 20 f2  72 65 6d 6f 76 65 5f 6d  |<>"" . .remove_m|
00006f40  65 73 73 61 67 65 0d 22  74 04 0d 22 7e 0e e7 20  |essage."t.."~.. |
00006f50  66 6c 67 25 20 8c 20 e1  0d 22 88 21 e7 20 64 69  |flg% . ..".!. di|
00006f60  67 61 6e 73 24 28 4c 61  79 65 72 25 2c 64 69 67  |gans$(Layer%,dig|
00006f70  25 29 3d 22 22 20 8c 20  e1 0d 22 92 04 0d 22 9c  |%)="" . .."...".|
00006f80  23 f2 64 69 67 69 74 5f  72 65 6d 6f 76 65 64 28  |#.digit_removed(|
00006f90  4c 61 79 65 72 25 2c 64  69 67 25 2c 73 74 25 29  |Layer%,dig%,st%)|
00006fa0  0d 22 a6 04 0d 22 b0 50  e7 20 4d 6f 64 65 25 3d  |."...".P. Mode%=|
00006fb0  31 20 80 20 53 43 66 6f  72 6d 61 74 25 3d 32 20  |1 . SCformat%=2 |
00006fc0  80 20 73 74 25 3d 30 20  80 20 63 6f 6e 64 25 3d  |. st%=0 . cond%=|
00006fd0  30 20 8c 20 f2 64 65 6c  65 74 65 5f 63 75 72 72  |0 . .delete_curr|
00006fe0  65 6e 74 5f 62 6f 78 28  4c 61 79 65 72 25 2c 64  |ent_box(Layer%,d|
00006ff0  69 67 25 29 0d 22 ba 39  c8 99 22 57 69 6d 70 5f  |ig%).".9.."Wimp_|
00007000  46 6f 72 63 65 52 65 64  72 61 77 22 2c 68 61 6e  |ForceRedraw",han|
00007010  64 6c 65 25 28 67 61 6d  65 25 29 2c 78 25 2c 59  |dle%(game%),x%,Y|
00007020  25 2c 78 25 2b 35 38 2c  59 25 2b 35 38 0d 22 c4  |%,x%+58,Y%+58.".|
00007030  13 f2 70 69 63 6b 5f 75  70 5f 6e 75 6d 62 65 72  |..pick_up_number|
00007040  0d 22 ce 25 6e 65 78 74  6d 65 73 73 25 3d 2d 28  |.".%nextmess%=-(|
00007050  48 65 6c 70 6c 65 76 25  3d 35 20 80 20 4d 6f 64  |Helplev%=5 . Mod|
00007060  65 25 3d 31 29 0d 22 d8  27 e7 20 64 69 67 61 6e  |e%=1).".'. digan|
00007070  73 25 28 30 29 3d 30 20  8c 20 f2 73 65 74 5f 74  |s%(0)=0 . .set_t|
00007080  6f 70 5f 69 63 6f 6e 28  30 2c 30 29 0d 22 e2 05  |op_icon(0,0)."..|
00007090  e1 0d 22 ec 04 0d 22 f6  04 0d 23 00 27 dd 20 f2  |.."..."...#.'. .|
000070a0  64 69 67 69 74 5f 72 65  6d 6f 76 65 64 28 4c 61  |digit_removed(La|
000070b0  79 65 72 25 2c 64 69 67  25 2c f8 20 73 74 25 29  |yer%,dig%,. st%)|
000070c0  0d 23 0a 3b e7 20 73 74  72 69 6b 65 25 28 4c 61  |.#.;. strike%(La|
000070d0  79 65 72 25 2f 32 2c 64  69 67 25 29 3d 30 20 84  |yer%/2,dig%)=0 .|
000070e0  20 4c 61 79 65 72 25 20  83 20 32 3d 31 20 80 20  | Layer% . 2=1 . |
000070f0  4c 61 79 65 72 25 3c 3d  36 20 8c 0d 23 14 24 20  |Layer%<=6 ..#.$ |
00007100  64 72 61 67 76 61 6c 25  3d bb 20 64 69 67 61 6e  |dragval%=. digan|
00007110  73 24 28 4c 61 79 65 72  25 2c 64 69 67 25 29 0d  |s$(Layer%,dig%).|
00007120  23 1e 3f 20 64 69 67 61  6e 73 24 28 4c 61 79 65  |#.? digans$(Laye|
00007130  72 25 2c 64 69 67 25 29  3d 22 22 3a 64 69 67 61  |r%,dig%)="":diga|
00007140  6e 73 25 28 4c 61 79 65  72 25 29 20 2d 3d 64 72  |ns%(Layer%) -=dr|
00007150  61 67 76 61 6c 25 2a 31  30 5e 64 69 67 25 0d 23  |agval%*10^dig%.#|
00007160  28 05 cc 0d 23 32 30 20  64 72 61 67 76 61 6c 25  |(...#20 dragval%|
00007170  3d 34 39 3a 73 74 72 69  6b 65 25 28 4c 61 79 65  |=49:strike%(Laye|
00007180  72 25 2f 32 2c 64 69 67  25 29 3d 30 3a 73 74 25  |r%/2,dig%)=0:st%|
00007190  3d 2d 31 0d 23 3c 05 cd  0d 23 46 05 e1 0d 23 50  |=-1.#<...#F...#P|
000071a0  04 0d 23 5a 04 0d 23 64  26 dd 20 f2 64 65 6c 65  |..#Z..#d&. .dele|
000071b0  74 65 5f 63 75 72 72 65  6e 74 5f 62 6f 78 28 4c  |te_current_box(L|
000071c0  61 79 65 72 25 2c 64 69  67 25 29 0d 23 6e 38 ea  |ayer%,dig%).#n8.|
000071d0  20 78 25 2c 68 25 2c 6f  6c 64 64 69 67 25 2c 6f  | x%,h%,olddig%,o|
000071e0  6c 64 6c 61 79 65 72 25  2c 6c 65 76 65 6c 25 2c  |ldlayer%,level%,|
000071f0  63 25 2c 63 6f 6e 64 25  3a 6f 6c 64 64 69 67 25  |c%,cond%:olddig%|
00007200  3d 2d 31 0d 23 78 32 6c  65 76 65 6c 25 3d 44 6c  |=-1.#x2level%=Dl|
00007210  65 76 65 6c 25 28 4e 61  6d 65 4e 6f 25 29 3a 63  |evel%(NameNo%):c|
00007220  25 3d 63 61 72 72 79 25  2a 28 48 65 6c 70 6c 65  |%=carry%*(Helple|
00007230  76 25 3e 33 29 0d 23 82  93 63 6f 6e 64 25 3d 28  |v%>3).#..cond%=(|
00007240  4c 61 79 65 72 25 3e 30  20 80 20 28 64 69 67 25  |Layer%>0 . (dig%|
00007250  3c 72 75 62 64 69 67 25  20 80 20 4c 61 79 65 72  |<rubdig% . Layer|
00007260  25 3d 72 75 62 6c 61 79  65 72 25 20 84 20 4c 61  |%=rublayer% . La|
00007270  79 65 72 25 3c 72 75 62  6c 61 79 65 72 25 80 20  |yer%<rublayer%. |
00007280  72 75 62 6c 61 79 65 72  25 3e 30 20 84 20 4c 61  |rublayer%>0 . La|
00007290  79 65 72 25 3e 72 75 62  6c 61 79 65 72 25 20 80  |yer%>rublayer% .|
000072a0  20 72 75 62 6c 61 79 65  72 25 3d 30 29 20 84 20  | rublayer%=0) . |
000072b0  4c 61 79 65 72 25 3d 30  20 80 20 64 69 67 25 3e  |Layer%=0 . dig%>|
000072c0  72 75 62 64 69 67 25 29  0d 23 8c 04 0d 23 96 22  |rubdig%).#...#."|
000072d0  f4 20 43 6c 65 61 72 73  20 62 6f 78 20 69 6e 20  |. Clears box in |
000072e0  6e 65 78 74 20 70 6f 73  69 74 69 6f 6e 2e 0d 23  |next position..#|
000072f0  a0 12 e7 20 72 75 62 64  69 67 25 3d 2d 31 20 8c  |... rubdig%=-1 .|
00007300  0d 23 aa 26 20 6f 6c 64  64 69 67 25 3d 6e 65 78  |.#.& olddig%=nex|
00007310  74 64 69 67 25 3a 6f 6c  64 6c 61 79 65 72 25 3d  |tdig%:oldlayer%=|
00007320  6c 61 79 65 72 25 0d 23  b4 22 20 72 75 62 64 69  |layer%.#." rubdi|
00007330  67 25 3d 64 69 67 25 3a  72 75 62 6c 61 79 65 72  |g%=dig%:rublayer|
00007340  25 3d 4c 61 79 65 72 25  0d 23 be 05 cc 0d 23 c8  |%=Layer%.#....#.|
00007350  81 20 e7 20 64 69 67 25  3e 72 75 62 64 69 67 25  |. . dig%>rubdig%|
00007360  20 80 20 44 69 76 54 79  70 65 25 3d 30 20 84 20  | . DivType%=0 . |
00007370  44 69 76 54 79 70 65 25  3d 31 20 80 20 63 6f 6e  |DivType%=1 . con|
00007380  64 25 3d 2d 31 20 8c 20  6f 6c 64 64 69 67 25 3d  |d%=-1 . olddig%=|
00007390  72 75 62 64 69 67 25 3a  63 25 3d 30 3a 6f 6c 64  |rubdig%:c%=0:old|
000073a0  6c 61 79 65 72 25 3d 72  75 62 6c 61 79 65 72 25  |layer%=rublayer%|
000073b0  3a 72 75 62 64 69 67 25  3d 64 69 67 25 3a 72 75  |:rubdig%=dig%:ru|
000073c0  62 6c 61 79 65 72 25 3d  4c 61 79 65 72 25 0d 23  |blayer%=Layer%.#|
000073d0  d2 05 cd 0d 23 dc 37 e7  20 6f 6c 64 64 69 67 25  |....#.7. olddig%|
000073e0  3c 3e 2d 31 20 8c 20 f2  64 69 67 69 74 5f 72 65  |<>-1 . .digit_re|
000073f0  64 72 61 77 28 6f 6c 64  6c 61 79 65 72 25 2c 6f  |draw(oldlayer%,o|
00007400  6c 64 64 69 67 25 2c 63  25 29 0d 23 e6 05 e1 0d  |lddig%,c%).#....|
00007410  23 f0 04 0d 23 fa 04 0d  24 04 15 dd 20 f2 70 69  |#...#...$... .pi|
00007420  63 6b 5f 75 70 5f 6e 75  6d 62 65 72 0d 24 0e 0b  |ck_up_number.$..|
00007430  ea 20 77 25 2c 68 25 0d  24 18 2a e7 20 72 75 62  |. w%,h%.$.*. rub|
00007440  62 65 72 25 3d 30 20 8c  20 77 25 3d 31 38 3a 68  |ber%=0 . w%=18:h|
00007450  25 3d 32 32 20 8b 20 77  25 3d 36 3a 68 25 3d 31  |%=22 . w%=6:h%=1|
00007460  32 0d 24 22 20 78 25 3d  21 62 6c 6f 63 6b 25 2d  |2.$" x%=!block%-|
00007470  77 25 3a 79 25 3d 62 6c  6f 63 6b 25 21 34 2d 68  |w%:y%=block%!4-h|
00007480  25 0d 24 2c 2d f2 77 6f  72 6b 5f 61 72 65 61 5f  |%.$,-.work_area_|
00007490  6f 72 69 67 69 6e 28 68  61 6e 64 6c 65 25 28 67  |origin(handle%(g|
000074a0  61 6d 65 25 29 2c 6f 78  25 2c 6f 79 25 29 0d 24  |ame%),ox%,oy%).$|
000074b0  36 2c 64 72 61 67 78 25  3d 78 25 2b 34 2d 6f 78  |6,dragx%=x%+4-ox|
000074c0  25 3a 64 72 61 67 79 25  3d 79 25 2b 38 2d 6f 79  |%:dragy%=y%+8-oy|
000074d0  25 3a 64 72 61 67 25 3d  2d 31 0d 24 40 31 69 6e  |%:drag%=-1.$@1in|
000074e0  69 74 78 25 3d 64 72 61  67 78 25 3a 69 6e 69 74  |itx%=dragx%:init|
000074f0  79 25 3d 64 72 61 67 79  25 3a 69 6e 69 74 6e 75  |y%=dragy%:initnu|
00007500  6d 25 3d 64 72 61 67 76  61 6c 25 0d 24 4a 10 f2  |m%=dragval%.$J..|
00007510  6d 6f 76 65 5f 6e 75 6d  62 65 72 0d 24 54 05 e1  |move_number.$T..|
00007520  0d 24 5e 04 0d 24 68 04  0d 24 72 15 dd 20 f2 73  |.$^..$h..$r.. .s|
00007530  65 74 5f 75 70 5f 72 75  62 5f 6f 75 74 0d 24 7c  |et_up_rub_out.$||
00007540  53 e7 20 64 72 61 67 25  20 8c 20 c8 99 22 57 69  |S. drag% . .."Wi|
00007550  6d 70 5f 46 6f 72 63 65  52 65 64 72 61 77 22 2c  |mp_ForceRedraw",|
00007560  68 61 6e 64 6c 65 25 28  67 61 6d 65 25 29 2c 64  |handle%(game%),d|
00007570  72 61 67 78 25 2c 64 72  61 67 79 25 2c 64 72 61  |ragx%,dragy%,dra|
00007580  67 78 25 2b 35 38 2c 64  72 61 67 79 25 2b 35 38  |gx%+58,dragy%+58|
00007590  0d 24 86 1a 64 72 61 67  76 61 6c 25 3d 31 30 3a  |.$..dragval%=10:|
000075a0  72 75 62 62 65 72 25 3d  2d 31 0d 24 90 0e 2a 50  |rubber%=-1.$..*P|
000075b0  4f 49 4e 54 45 52 20 30  0d 24 9a 13 f2 70 69 63  |OINTER 0.$...pic|
000075c0  6b 5f 75 70 5f 6e 75 6d  62 65 72 0d 24 a4 05 e1  |k_up_number.$...|
000075d0  0d 24 ae 04 0d 24 b8 04  0d 24 c2 15 dd 20 f2 72  |.$...$...$... .r|
000075e0  75 62 5f 6f 75 74 28 69  63 6f 6e 25 29 0d 24 cc  |ub_out(icon%).$.|
000075f0  2c ea 20 78 25 2c 59 25  2c 4d 6f 64 65 25 2c 66  |,. x%,Y%,Mode%,f|
00007600  6c 67 25 2c 64 69 67 25  2c 4c 61 79 65 72 25 2c  |lg%,dig%,Layer%,|
00007610  73 74 25 2c 63 6f 6e 64  25 0d 24 d6 2b 4d 6f 64  |st%,cond%.$.+Mod|
00007620  65 25 3d 2d 28 6d 6f 64  65 25 28 4e 61 6d 65 4e  |e%=-(mode%(NameN|
00007630  6f 25 29 3d 31 20 80 20  53 43 66 6f 72 6d 61 74  |o%)=1 . SCformat|
00007640  25 3d 32 29 0d 24 e0 27  e7 20 6d 65 73 73 61 67  |%=2).$.'. messag|
00007650  65 24 28 30 29 3c 3e 22  22 20 8c 20 f2 72 65 6d  |e$(0)<>"" . .rem|
00007660  6f 76 65 5f 6d 65 73 73  61 67 65 0d 24 ea 32 f2  |ove_message.$.2.|
00007670  6e 75 6d 62 65 72 5f 70  6f 73 69 74 69 6f 6e 28  |number_position(|
00007680  69 63 6f 6e 25 2c 78 25  2c 59 25 2c 4c 61 79 65  |icon%,x%,Y%,Laye|
00007690  72 25 2c 64 69 67 25 2c  66 6c 67 25 29 0d 24 f4  |r%,dig%,flg%).$.|
000076a0  2b e7 20 66 6c 67 25 3d  2d 31 20 84 20 64 69 67  |+. flg%=-1 . dig|
000076b0  61 6e 73 24 28 4c 61 79  65 72 25 2c 64 69 67 25  |ans$(Layer%,dig%|
000076c0  29 3d 22 22 20 8c 20 e1  0d 24 fe 33 63 6f 6e 64  |)="" . ..$.3cond|
000076d0  25 3d 28 4c 61 79 65 72  25 3d 30 20 80 20 64 69  |%=(Layer%=0 . di|
000076e0  67 25 3e 4c 73 68 69 66  74 25 28 30 29 20 80 20  |g%>Lshift%(0) . |
000076f0  44 69 76 54 79 70 65 25  3d 31 29 0d 25 08 04 0d  |DivType%=1).%...|
00007700  25 12 23 f2 64 69 67 69  74 5f 72 65 6d 6f 76 65  |%.#.digit_remove|
00007710  64 28 4c 61 79 65 72 25  2c 64 69 67 25 2c 73 74  |d(Layer%,dig%,st|
00007720  25 29 0d 25 1c 0e e7 20  66 6c 67 25 20 8c 20 e1  |%).%... flg% . .|
00007730  0d 25 26 32 6e 65 78 74  6d 65 73 73 25 3d 2d 28  |.%&2nextmess%=-(|
00007740  48 65 6c 70 6c 65 76 25  3d 35 20 80 20 4d 6f 64  |Helplev%=5 . Mod|
00007750  65 25 3d 2d 31 29 3a 64  72 61 67 76 61 6c 25 3d  |e%=-1):dragval%=|
00007760  31 30 0d 25 30 42 e7 20  4d 6f 64 65 25 3d 31 20  |10.%0B. Mode%=1 |
00007770  80 20 73 74 25 3d 30 20  80 20 63 6f 6e 64 25 3d  |. st%=0 . cond%=|
00007780  30 20 8c 20 f2 64 65 6c  65 74 65 5f 63 75 72 72  |0 . .delete_curr|
00007790  65 6e 74 5f 62 6f 78 28  4c 61 79 65 72 25 2c 64  |ent_box(Layer%,d|
000077a0  69 67 25 29 0d 25 3a 39  c8 99 22 57 69 6d 70 5f  |ig%).%:9.."Wimp_|
000077b0  46 6f 72 63 65 52 65 64  72 61 77 22 2c 68 61 6e  |ForceRedraw",han|
000077c0  64 6c 65 25 28 67 61 6d  65 25 29 2c 78 25 2c 59  |dle%(game%),x%,Y|
000077d0  25 2c 78 25 2b 35 38 2c  59 25 2b 35 38 0d 25 44  |%,x%+58,Y%+58.%D|
000077e0  2f e7 20 64 69 67 61 6e  73 25 28 6c 61 79 65 72  |/. digans%(layer|
000077f0  6c 69 6d 25 29 3d 30 20  8c 20 f2 73 65 74 5f 74  |lim%)=0 . .set_t|
00007800  6f 70 5f 69 63 6f 6e 28  30 2c 30 29 0d 25 4e 05  |op_icon(0,0).%N.|
00007810  e1 0d 25 58 04 0d 25 62  04 0d 25 6c 13 dd 20 a4  |..%X..%b..%l.. .|
00007820  63 68 65 63 6b 5f 72 75  62 6f 75 74 0d 25 76 2a  |check_rubout.%v*|
00007830  ea 20 79 25 2c 78 25 2c  66 6c 67 25 2c 6c 6f 77  |. y%,x%,flg%,low|
00007840  6c 69 6d 25 3a 72 75 62  64 69 67 25 3d 2d 31 3a  |lim%:rubdig%=-1:|
00007850  66 6c 67 25 3d 30 0d 25  80 49 f4 20 49 46 20 72  |flg%=0.%.I. IF r|
00007860  65 6d 24 28 31 29 3d 22  22 20 41 4e 44 20 64 6f  |em$(1)="" AND do|
00007870  6e 65 52 24 28 31 29 3d  22 64 22 20 54 48 45 4e  |neR$(1)="d" THEN|
00007880  20 66 6c 67 25 3d 2d 31  3a 72 75 62 64 69 67 25  | flg%=-1:rubdig%|
00007890  3d 2d 32 3a 72 75 62 6c  61 79 65 72 25 3d 30 0d  |=-2:rublayer%=0.|
000078a0  25 8a 04 0d 25 94 0e e3  20 79 25 3d 31 20 b8 20  |%...%... y%=1 . |
000078b0  36 0d 25 9e 23 20 e3 20  78 25 3d 4c 73 68 69 66  |6.%.# . x%=Lshif|
000078c0  74 25 28 79 25 29 20 b8  20 61 6e 73 6c 69 6d 25  |t%(y%) . anslim%|
000078d0  28 79 25 29 0d 25 a8 10  20 20 e7 20 66 6c 67 25  |(y%).%..  . flg%|
000078e0  3d 30 20 8c 0d 25 b2 32  20 20 20 66 6c 67 25 3d  |=0 ..%.2   flg%=|
000078f0  28 64 69 67 61 6e 73 24  28 79 25 2c 78 25 29 3d  |(digans$(y%,x%)=|
00007900  22 22 20 80 20 64 6f 6e  65 24 28 79 25 2c 78 25  |"" . done$(y%,x%|
00007910  29 3d 22 64 22 29 0d 25  bc 27 20 20 20 e7 20 66  |)="d").%.'   . f|
00007920  6c 67 25 20 8c 20 72 75  62 64 69 67 25 3d 78 25  |lg% . rubdig%=x%|
00007930  3a 72 75 62 6c 61 79 65  72 25 3d 79 25 0d 25 c6  |:rublayer%=y%.%.|
00007940  07 20 20 cd 0d 25 d0 06  20 ed 0d 25 da 05 ed 0d  |.  ..%.. ..%....|
00007950  25 e4 04 0d 25 ee 1c e3  20 78 25 3d 61 6e 73 6c  |%...%... x%=ansl|
00007960  69 6d 25 28 30 29 20 b8  20 30 20 88 20 2d 31 0d  |im%(0) . 0 . -1.|
00007970  25 f8 0f 20 e7 20 66 6c  67 25 3d 30 20 8c 0d 26  |%.. . flg%=0 ..&|
00007980  02 2f 20 20 66 6c 67 25  3d 28 64 69 67 61 6e 73  |./  flg%=(digans|
00007990  24 28 30 2c 78 25 29 3d  22 22 20 80 20 64 6f 6e  |$(0,x%)="" . don|
000079a0  65 24 28 30 2c 78 25 29  3d 22 64 22 29 0d 26 0c  |e$(0,x%)="d").&.|
000079b0  25 20 20 e7 20 66 6c 67  25 20 8c 20 72 75 62 64  |%  . flg% . rubd|
000079c0  69 67 25 3d 78 25 3a 72  75 62 6c 61 79 65 72 25  |ig%=x%:rublayer%|
000079d0  3d 30 0d 26 16 06 20 cd  0d 26 20 05 ed 0d 26 2a  |=0.&.. ..& ...&*|
000079e0  04 0d 26 34 42 e7 20 66  6c 67 25 3d 30 20 80 20  |..&4B. flg%=0 . |
000079f0  72 65 6d 24 28 31 29 3d  22 22 20 80 20 64 6f 6e  |rem$(1)="" . don|
00007a00  65 52 24 28 31 29 3d 22  64 22 20 8c 20 72 75 62  |eR$(1)="d" . rub|
00007a10  64 69 67 25 3d 2d 32 3a  72 75 62 6c 61 79 65 72  |dig%=-2:rublayer|
00007a20  25 3d 30 0d 26 3e 04 0d  26 48 0c 3d 72 75 62 64  |%=0.&>..&H.=rubd|
00007a30  69 67 25 0d 26 52 04 0d  26 5c 0e e3 20 79 25 3d  |ig%.&R..&\.. y%=|
00007a40  30 20 b8 20 36 0d 26 66  2d 20 e7 20 79 25 3d 30  |0 . 6.&f- . y%=0|
00007a50  20 8c 20 6c 6f 77 6c 69  6d 25 3d 30 20 8b 20 6c  | . lowlim%=0 . l|
00007a60  6f 77 6c 69 6d 25 3d 4c  73 68 69 66 74 25 28 79  |owlim%=Lshift%(y|
00007a70  25 29 0d 26 70 1f 20 e3  20 78 25 3d 6c 6f 77 6c  |%).&p. . x%=lowl|
00007a80  69 6d 25 20 b8 20 61 6e  73 6c 69 6d 25 28 79 25  |im% . anslim%(y%|
00007a90  29 0d 26 7a 10 20 20 e7  20 66 6c 67 25 3d 30 20  |).&z.  . flg%=0 |
00007aa0  8c 0d 26 84 32 20 20 20  66 6c 67 25 3d 28 64 69  |..&.2   flg%=(di|
00007ab0  67 61 6e 73 24 28 79 25  2c 78 25 29 3d 22 22 20  |gans$(y%,x%)="" |
00007ac0  80 20 64 6f 6e 65 24 28  79 25 2c 78 25 29 3d 22  |. done$(y%,x%)="|
00007ad0  64 22 29 0d 26 8e 27 20  20 20 e7 20 66 6c 67 25  |d").&.'   . flg%|
00007ae0  20 8c 20 72 75 62 64 69  67 25 3d 78 25 3a 72 75  | . rubdig%=x%:ru|
00007af0  62 6c 61 79 65 72 25 3d  79 25 0d 26 98 07 20 20  |blayer%=y%.&..  |
00007b00  cd 0d 26 a2 06 20 ed 0d  26 ac 05 ed 0d 26 b6 0c  |..&.. ..&....&..|
00007b10  3d 72 75 62 64 69 67 25  0d 26 c0 04 0d 26 ca 04  |=rubdig%.&...&..|
00007b20  0d 26 d4 21 dd 20 f2 63  61 72 72 79 70 6f 73 59  |.&.!. .carryposY|
00007b30  28 f8 20 4c 61 79 65 72  25 2c f8 20 70 6f 73 25  |(. Layer%,. pos%|
00007b40  29 0d 26 de 11 e7 20 64  6f 75 62 6c 65 25 3d 30  |).&... double%=0|
00007b50  20 8c 0d 26 e8 0e 20 c8  8e 20 70 6f 73 25 20 ca  | ..&.. .. pos% .|
00007b60  0d 26 f2 29 20 20 c9 20  35 38 2c 35 39 2c 36 30  |.&.)  . 58,59,60|
00007b70  2c 36 31 2c 36 32 3a 70  6f 73 25 20 2d 3d 35 38  |,61,62:pos% -=58|
00007b80  3a 4c 61 79 65 72 25 3d  30 0d 26 fc 29 20 20 c9  |:Layer%=0.&.)  .|
00007b90  20 36 33 2c 36 34 2c 36  35 2c 36 36 2c 36 37 3a  | 63,64,65,66,67:|
00007ba0  70 6f 73 25 20 2d 3d 36  33 3a 4c 61 79 65 72 25  |pos% -=63:Layer%|
00007bb0  3d 32 0d 27 06 26 20 20  c9 20 36 38 2c 36 39 2c  |=2.'.&  . 68,69,|
00007bc0  37 30 2c 37 31 3a 70 6f  73 25 20 2d 3d 36 38 3a  |70,71:pos% -=68:|
00007bd0  4c 61 79 65 72 25 3d 34  0d 27 10 23 20 20 c9 20  |Layer%=4.'.#  . |
00007be0  37 32 2c 37 33 2c 37 34  3a 70 6f 73 25 20 2d 3d  |72,73,74:pos% -=|
00007bf0  37 32 3a 4c 61 79 65 72  25 3d 36 0d 27 1a 06 20  |72:Layer%=6.'.. |
00007c00  cb 0d 27 24 05 cc 0d 27  2e 0d 20 4c 61 79 65 72  |..'$...'.. Layer|
00007c10  25 3d 30 0d 27 38 05 cd  0d 27 42 05 e1 0d 27 4c  |%=0.'8...'B...'L|
00007c20  04 0d 27 56 04 0d 27 60  18 dd 20 f2 70 6c 61 63  |..'V..'`.. .plac|
00007c30  65 5f 63 61 72 72 79 28  70 6f 73 25 29 0d 27 6a  |e_carry(pos%).'j|
00007c40  22 ea 20 78 25 2c 78 32  25 2c 68 25 2c 76 61 6c  |". x%,x2%,h%,val|
00007c50  69 64 25 2c 4c 61 79 65  72 25 2c 66 6c 67 25 0d  |id%,Layer%,flg%.|
00007c60  27 74 1b f2 63 61 72 72  79 70 6f 73 59 28 4c 61  |'t..carryposY(La|
00007c70  79 65 72 25 2c 70 6f 73  25 29 0d 27 7e 0d 64 6f  |yer%,pos%).'~.do|
00007c80  75 62 6c 65 25 3d 30 0d  27 88 40 e7 20 4d 66 6c  |uble%=0.'.@. Mfl|
00007c90  67 25 3d 2d 31 20 80 20  48 65 6c 70 6c 65 76 25  |g%=-1 . Helplev%|
00007ca0  3c 35 20 80 20 6d 6f 64  65 25 28 4e 61 6d 65 4e  |<5 . mode%(NameN|
00007cb0  6f 25 29 3d 31 20 8c 20  f2 72 65 6d 6f 76 65 5f  |o%)=1 . .remove_|
00007cc0  6d 65 73 73 61 67 65 0d  27 92 48 76 61 6c 69 64  |message.'.Hvalid|
00007cd0  25 3d 28 4c 63 75 72 72  65 6e 74 25 3e 4c 61 79  |%=(Lcurrent%>Lay|
00007ce0  65 72 25 20 80 20 44 69  76 54 79 70 65 25 3d 31  |er% . DivType%=1|
00007cf0  20 84 20 70 6f 73 25 3e  3d 6e 65 78 74 64 69 67  | . pos%>=nextdig|
00007d00  25 20 80 20 44 69 76 54  79 70 65 25 3d 30 29 0d  |% . DivType%=0).|
00007d10  27 9c 04 0d 27 a6 30 e7  20 6d 6f 64 65 25 28 4e  |'...'.0. mode%(N|
00007d20  61 6d 65 4e 6f 25 29 3d  31 20 80 20 48 65 6c 70  |ameNo%)=1 . Help|
00007d30  6c 65 76 25 3e 32 20 80  20 76 61 6c 69 64 25 3d  |lev%>2 . valid%=|
00007d40  30 20 8c 0d 27 b0 0c 20  66 6c 67 25 3d 2d 31 0d  |0 ..'.. flg%=-1.|
00007d50  27 ba 22 20 e7 20 44 69  76 54 79 70 65 25 3d 30  |'." . DivType%=0|
00007d60  20 8c 20 f2 6d 65 73 73  61 67 65 28 22 70 6c 22  | . .message("pl"|
00007d70  29 0d 27 c4 05 cd 0d 27  ce 0c e7 20 66 6c 67 25  |).'....'... flg%|
00007d80  20 e1 0d 27 d8 04 0d 27  e2 63 e7 20 6d 6f 64 65  | ..'...'.c. mode|
00007d90  25 28 4e 61 6d 65 4e 6f  25 29 3d 31 20 80 20 44  |%(NameNo%)=1 . D|
00007da0  69 76 54 79 70 65 25 3d  30 20 80 20 48 65 6c 70  |ivType%=0 . Help|
00007db0  6c 65 76 25 3d 35 20 80  20 a4 63 68 65 63 6b 5f  |lev%=5 . .check_|
00007dc0  64 69 67 5f 76 61 6c 28  4c 61 79 65 72 25 2c 70  |dig_val(Layer%,p|
00007dd0  6f 73 25 29 3d 30 20 8c  20 f2 6d 65 73 73 61 67  |os%)=0 . .messag|
00007de0  65 28 22 63 6b 22 29 3a  e1 0d 27 ec 31 e7 20 6d  |e("ck"):..'.1. m|
00007df0  6f 64 65 25 28 4e 61 6d  65 4e 6f 25 29 3d 30 20  |ode%(NameNo%)=0 |
00007e00  80 20 70 6f 73 25 3e 61  6e 73 6c 69 6d 25 28 4c  |. pos%>anslim%(L|
00007e10  61 79 65 72 25 29 20 8c  20 e1 0d 27 f6 04 0d 28  |ayer%) . ..'...(|
00007e20  00 49 6e 65 78 74 6d 65  73 73 25 3d 2d 28 48 65  |.Inextmess%=-(He|
00007e30  6c 70 6c 65 76 25 3d 35  20 80 20 6e 65 78 74 64  |lplev%=5 . nextd|
00007e40  69 67 25 3e 2d 31 20 80  20 44 69 76 54 79 70 65  |ig%>-1 . DivType|
00007e50  25 3d 30 20 80 20 6d 6f  64 65 25 28 4e 61 6d 65  |%=0 . mode%(Name|
00007e60  4e 6f 25 29 3d 31 29 0d  28 0a 04 0d 28 14 49 c8  |No%)=1).(...(.I.|
00007e70  99 22 57 69 6d 70 5f 46  6f 72 63 65 52 65 64 72  |."Wimp_ForceRedr|
00007e80  61 77 22 2c 68 61 6e 64  6c 65 25 28 67 61 6d 65  |aw",handle%(game|
00007e90  25 29 2c 64 72 61 67 78  25 2c 64 72 61 67 79 25  |%),dragx%,dragy%|
00007ea0  2c 64 72 61 67 78 25 2b  35 38 2c 64 72 61 67 79  |,dragx%+58,dragy|
00007eb0  25 2b 35 38 0d 28 1e 04  0d 28 28 31 e7 20 63 61  |%+58.(...((1. ca|
00007ec0  72 72 79 24 28 4c 61 79  65 72 25 2f 32 2c 70 6f  |rry$(Layer%/2,po|
00007ed0  73 25 29 3c 3e 22 22 20  80 20 c3 64 72 61 67 76  |s%)<>"" . .dragv|
00007ee0  61 6c 25 3d 22 31 22 20  8c 0d 28 32 34 20 63 61  |al%="1" ..(24 ca|
00007ef0  72 72 79 24 28 4c 61 79  65 72 25 2f 32 2c 70 6f  |rry$(Layer%/2,po|
00007f00  73 25 29 3d 22 31 22 2b  63 61 72 72 79 24 28 4c  |s%)="1"+carry$(L|
00007f10  61 79 65 72 25 2f 32 2c  70 6f 73 25 29 0d 28 3c  |ayer%/2,pos%).(<|
00007f20  05 cc 0d 28 46 24 20 63  61 72 72 79 24 28 4c 61  |...(F$ carry$(La|
00007f30  79 65 72 25 2f 32 2c 70  6f 73 25 29 3d c3 64 72  |yer%/2,pos%)=.dr|
00007f40  61 67 76 61 6c 25 0d 28  50 05 cd 0d 28 5a 0b 64  |agval%.(P...(Z.d|
00007f50  72 61 67 25 3d 30 0d 28  64 21 f2 64 69 67 69 74  |rag%=0.(d!.digit|
00007f60  5f 72 65 64 72 61 77 28  4c 61 79 65 72 25 2c 70  |_redraw(Layer%,p|
00007f70  6f 73 25 2c 2d 31 29 0d  28 6e 04 0d 28 78 34 e7  |os%,-1).(n..(x4.|
00007f80  20 6d 6f 64 65 25 28 4e  61 6d 65 4e 6f 25 29 3d  | mode%(NameNo%)=|
00007f90  31 20 80 20 70 6f 73 25  3d 6e 65 78 74 64 69 67  |1 . pos%=nextdig|
00007fa0  25 20 80 20 63 61 72 72  79 25 3d 2d 31 20 8c 0d  |% . carry%=-1 ..|
00007fb0  28 82 0d 20 63 61 72 72  79 25 3d 30 0d 28 8c 25  |(.. carry%=0.(.%|
00007fc0  20 f2 64 69 67 69 74 5f  72 65 64 72 61 77 28 6c  | .digit_redraw(l|
00007fd0  61 79 65 72 25 2c 6e 65  78 74 64 69 67 25 2c 30  |ayer%,nextdig%,0|
00007fe0  29 0d 28 96 05 cd 0d 28  a0 05 e1 0d 28 aa 04 0d  |).(....(....(...|
00007ff0  28 b4 04 0d 28 be 19 dd  20 f2 72 65 6d 6f 76 65  |(...(... .remove|
00008000  5f 63 61 72 72 79 28 70  6f 73 25 29 0d 28 c8 17  |_carry(pos%).(..|
00008010  ea 20 78 25 2c 68 25 2c  66 6c 67 25 2c 4c 61 79  |. x%,h%,flg%,Lay|
00008020  65 72 25 0d 28 d2 1b f2  63 61 72 72 79 70 6f 73  |er%.(...carrypos|
00008030  59 28 4c 61 79 65 72 25  2c 70 6f 73 25 29 0d 28  |Y(Layer%,pos%).(|
00008040  dc 24 f2 63 61 72 72 79  5f 72 65 6d 6f 76 65 64  |.$.carry_removed|
00008050  28 4c 61 79 65 72 25 2c  70 6f 73 25 2c 66 6c 67  |(Layer%,pos%,flg|
00008060  25 29 0d 28 e6 0e e7 20  66 6c 67 25 20 8c 20 e1  |%).(... flg% . .|
00008070  0d 28 f0 04 0d 28 fa 21  f2 64 69 67 69 74 5f 72  |.(...(.!.digit_r|
00008080  65 64 72 61 77 28 4c 61  79 65 72 25 2c 70 6f 73  |edraw(Layer%,pos|
00008090  25 2c 2d 31 29 0d 29 04  0d 72 75 62 62 65 72 25  |%,-1).)..rubber%|
000080a0  3d 30 0d 29 0e 23 c8 99  22 57 69 6d 70 5f 47 65  |=0.).#.."Wimp_Ge|
000080b0  74 50 6f 69 6e 74 65 72  49 6e 66 6f 22 2c 2c 62  |tPointerInfo",,b|
000080c0  6c 6f 63 6b 25 0d 29 18  13 f2 70 69 63 6b 5f 75  |lock%.)...pick_u|
000080d0  70 5f 6e 75 6d 62 65 72  0d 29 22 10 f2 6d 6f 76  |p_number.)"..mov|
000080e0  65 5f 6e 75 6d 62 65 72  0d 29 2c 05 e1 0d 29 36  |e_number.),...)6|
000080f0  04 0d 29 40 04 0d 29 4a  28 dd 20 f2 63 61 72 72  |..)@..)J(. .carr|
00008100  79 5f 72 65 6d 6f 76 65  64 28 4c 61 79 65 72 25  |y_removed(Layer%|
00008110  2c 70 6f 73 25 2c f8 20  66 6c 67 25 29 0d 29 54  |,pos%,. flg%).)T|
00008120  0a ea 20 63 61 72 24 0d  29 5e 26 66 6c 67 25 3d  |.. car$.)^&flg%=|
00008130  2d 31 3a 63 61 72 24 3d  63 61 72 72 79 24 28 4c  |-1:car$=carry$(L|
00008140  61 79 65 72 25 2f 32 2c  70 6f 73 25 29 0d 29 68  |ayer%/2,pos%).)h|
00008150  10 e7 20 63 61 72 24 3c  3e 22 22 20 8c 0d 29 72  |.. car$<>"" ..)r|
00008160  0b 20 66 6c 67 25 3d 30  0d 29 7c 11 20 e7 20 a9  |. flg%=0.)|. . .|
00008170  20 63 61 72 24 3d 31 20  8c 0d 29 86 1d 20 20 64  | car$=1 ..)..  d|
00008180  72 61 67 76 61 6c 25 3d  bb 20 63 61 72 24 3a 63  |ragval%=. car$:c|
00008190  61 72 24 3d 22 22 0d 29  90 06 20 cc 0d 29 9a 1e  |ar$="".).. ..)..|
000081a0  20 20 64 72 61 67 76 61  6c 25 3d 31 3a 63 61 72  |  dragval%=1:car|
000081b0  24 3d c2 63 61 72 24 2c  31 29 0d 29 a4 06 20 cd  |$=.car$,1).).. .|
000081c0  0d 29 ae 1f 20 63 61 72  72 79 24 28 4c 61 79 65  |.).. carry$(Laye|
000081d0  72 25 2f 32 2c 70 6f 73  25 29 3d 63 61 72 24 0d  |r%/2,pos%)=car$.|
000081e0  29 b8 05 cd 0d 29 c2 05  e1 0d 29 cc 04 0d 29 d6  |)....)....)...).|
000081f0  04 0d 29 e0 1a dd 20 f2  72 75 62 5f 6f 75 74 5f  |..)... .rub_out_|
00008200  63 61 72 72 79 28 70 6f  73 25 29 0d 29 ea 25 ea  |carry(pos%).).%.|
00008210  20 78 25 2c 68 25 2c 66  6c 67 25 2c 78 63 6f 25  | x%,h%,flg%,xco%|
00008220  2c 6c 25 3a 78 63 6f 25  3d 21 62 6c 6f 63 6b 25  |,l%:xco%=!block%|
00008230  0d 29 f4 1b f2 63 61 72  72 79 70 6f 73 59 28 4c  |.)...carryposY(L|
00008240  61 79 65 72 25 2c 70 6f  73 25 29 0d 29 fe 24 f2  |ayer%,pos%).).$.|
00008250  63 61 72 72 79 5f 72 65  6d 6f 76 65 64 28 4c 61  |carry_removed(La|
00008260  79 65 72 25 2c 70 6f 73  25 2c 66 6c 67 25 29 0d  |yer%,pos%,flg%).|
00008270  2a 08 0e e7 20 66 6c 67  25 20 8c 20 e1 0d 2a 12  |*... flg% . ..*.|
00008280  0f 64 72 61 67 76 61 6c  25 3d 31 30 0d 2a 1c 21  |.dragval%=10.*.!|
00008290  f2 64 69 67 69 74 5f 72  65 64 72 61 77 28 4c 61  |.digit_redraw(La|
000082a0  79 65 72 25 2c 70 6f 73  25 2c 2d 31 29 0d 2a 26  |yer%,pos%,-1).*&|
000082b0  05 e1 0d 2a 30 04 0d 2a  3a 04 0d 2a 44 0b dd 20  |...*0..*:..*D.. |
000082c0  f2 67 72 69 64 0d 2a 4e  0b ea 20 78 25 2c 79 25  |.grid.*N.. x%,y%|
000082d0  0d 2a 58 19 c8 99 22 57  69 6d 70 5f 53 65 74 43  |.*X..."Wimp_SetC|
000082e0  6f 6c 6f 75 72 22 2c 31  35 0d 2a 62 16 e3 20 78  |olour",15.*b.. x|
000082f0  25 3d 30 20 b8 20 31 32  37 36 20 88 20 35 38 0d  |%=0 . 1276 . 58.|
00008300  2a 6c 26 20 ec 20 6f 78  25 2b 78 25 2c 6f 79 25  |*l& . ox%+x%,oy%|
00008310  2d 39 30 34 3a df 20 6f  78 25 2b 78 25 2c 6f 79  |-904:. ox%+x%,oy|
00008320  25 2d 31 35 30 0d 2a 76  05 ed 0d 2a 80 19 e3 20  |%-150.*v...*... |
00008330  79 25 3d 2d 39 30 34 20  b8 20 2d 31 35 30 20 88  |y%=-904 . -150 .|
00008340  20 35 38 0d 2a 8a 23 20  ec 20 6f 78 25 2c 6f 79  | 58.*.# . ox%,oy|
00008350  25 2b 79 25 3a df 20 6f  78 25 2b 31 32 37 36 2c  |%+y%:. ox%+1276,|
00008360  6f 79 25 2b 79 25 0d 2a  94 05 ed 0d 2a 9e 1c ec  |oy%+y%.*....*...|
00008370  20 6f 78 25 2c 6f 79 25  3a df 20 6f 78 25 2b 31  | ox%,oy%:. ox%+1|
00008380  32 37 36 2c 6f 79 25 0d  2a a8 04 0d 2a b2 4a c8  |276,oy%.*...*.J.|
00008390  99 22 4f 53 5f 53 70 72  69 74 65 4f 70 22 2c 26  |."OS_SpriteOp",&|
000083a0  31 33 34 2c 73 61 72 65  61 25 2c 22 6e 75 6d 62  |134,sarea%,"numb|
000083b0  65 72 73 22 2c 6f 78 25  2b 35 38 2c 6f 79 25 2d  |ers",ox%+58,oy%-|
000083c0  39 30 34 2c 30 2c 73 63  61 6c 65 32 37 25 2c 74  |904,0,scale27%,t|
000083d0  72 61 6e 73 25 0d 2a bc  4a c8 99 22 4f 53 5f 53  |rans%.*.J.."OS_S|
000083e0  70 72 69 74 65 4f 70 22  2c 26 31 33 34 2c 73 61  |priteOp",&134,sa|
000083f0  72 65 61 25 2c 22 73 74  72 69 6b 65 22 2c 6f 78  |rea%,"strike",ox|
00008400  25 2b 36 39 36 2c 6f 79  25 2d 39 30 34 2c 30 2c  |%+696,oy%-904,0,|
00008410  73 63 61 6c 65 32 37 25  2c 74 72 61 6e 73 25 0d  |scale27%,trans%.|
00008420  2a c6 05 e1 0d 2a d0 04  0d 2a da 04 0d 2a e4 10  |*....*...*...*..|
00008430  dd 20 f2 73 75 6d 5f 70  61 72 74 73 0d 2a ee 41  |. .sum_parts.*.A|
00008440  ea 20 78 25 2c 79 25 2c  64 25 2c 64 69 67 24 2c  |. x%,y%,d%,dig$,|
00008450  73 68 69 66 74 25 2c 78  31 25 2c 78 32 25 2c 73  |shift%,x1%,x2%,s|
00008460  79 6d 62 6f 6c 25 2c 6c  69 6d 25 2c 6c 65 76 65  |ymbol%,lim%,leve|
00008470  6c 25 2c 6c 65 6e 25 2c  72 65 6d 4c 25 0d 2a f8  |l%,len%,remL%.*.|
00008480  04 0d 2b 02 18 c8 99 22  57 69 6d 70 5f 53 65 74  |..+...."Wimp_Set|
00008490  43 6f 6c 6f 75 72 22 2c  31 0d 2b 0c 12 f4 20 73  |Colour",1.+... s|
000084a0  68 61 64 65 64 20 61 72  65 61 73 0d 2b 16 12 e7  |haded areas.+...|
000084b0  20 44 69 76 54 79 70 65  25 3d 30 20 8c 0d 2b 20  | DivType%=0 ..+ |
000084c0  0f 20 e3 20 64 25 3d 30  20 b8 20 34 0d 2b 2a 16  |. . d%=0 . 4.+*.|
000084d0  20 20 78 25 3d a4 64 69  67 78 28 64 25 2c 30 29  |  x%=.digx(d%,0)|
000084e0  2d 38 0d 2b 34 19 20 20  79 25 3d a4 6c 61 79 65  |-8.+4.  y%=.laye|
000084f0  72 59 28 30 2c 2d 31 29  2b 32 38 0d 2b 3e 31 20  |rY(0,-1)+28.+>1 |
00008500  20 e7 20 64 25 3c a9 20  c3 6e 75 6d 31 25 2d 31  | . d%<. .num1%-1|
00008510  20 8c 20 c8 93 20 c8 90  20 6f 78 25 2b 78 25 2c  | . .. .. ox%+x%,|
00008520  6f 79 25 2b 79 25 2c 32  32 2c 32 36 0d 2b 48 06  |oy%+y%,22,26.+H.|
00008530  20 ed 0d 2b 52 05 cc 0d  2b 5c 13 20 e3 20 6c 25  | ..+R...+\. . l%|
00008540  3d 30 20 b8 20 36 20 88  20 32 0d 2b 66 10 20 20  |=0 . 6 . 2.+f.  |
00008550  e3 20 64 25 3d 30 20 b8  20 34 0d 2b 70 17 20 20  |. d%=0 . 4.+p.  |
00008560  20 78 25 3d a4 64 69 67  78 28 64 25 2c 30 29 2d  | x%=.digx(d%,0)-|
00008570  38 0d 2b 7a 1f 20 20 20  79 25 3d a4 6c 61 79 65  |8.+z.   y%=.laye|
00008580  72 59 28 6c 25 2c 28 6c  25 3d 30 29 29 2b 32 38  |rY(l%,(l%=0))+28|
00008590  0d 2b 84 32 20 20 20 e7  20 6c 25 3d 30 20 8c 20  |.+.2   . l%=0 . |
000085a0  6c 69 6d 25 3d a9 20 c3  6e 75 6d 31 25 2d 31 20  |lim%=. .num1%-1 |
000085b0  8b 20 6c 69 6d 25 3d 61  6e 73 6c 69 6d 25 28 6c  |. lim%=anslim%(l|
000085c0  25 29 0d 2b 8e 4e 20 20  20 e7 20 64 25 3c 3d 6c  |%).+.N   . d%<=l|
000085d0  69 6d 25 20 80 20 64 25  3e 3d 4c 73 68 69 66 74  |im% . d%>=Lshift|
000085e0  25 28 6c 25 29 20 80 20  6c 25 3c 6c 61 79 65 72  |%(l%) . l%<layer|
000085f0  6c 69 6d 25 20 8c 20 c8  93 20 c8 90 20 6f 78 25  |lim% . .. .. ox%|
00008600  2b 78 25 2c 6f 79 25 2b  79 25 2c 32 32 2c 32 36  |+x%,oy%+y%,22,26|
00008610  0d 2b 98 07 20 20 ed 0d  2b a2 06 20 ed 0d 2b ac  |.+..  ..+.. ..+.|
00008620  05 cd 0d 2b b6 04 0d 2b  c0 18 c8 99 22 57 69 6d  |...+...+...."Wim|
00008630  70 5f 53 65 74 43 6f 6c  6f 75 72 22 2c 37 0d 2b  |p_SetColour",7.+|
00008640  ca 0f f4 20 53 75 6d 20  6c 69 6e 65 73 0d 2b d4  |... Sum lines.+.|
00008650  20 78 31 25 3d a4 6e 75  6d 31 70 6f 73 2d 36 3a  | x1%=.num1pos-6:|
00008660  6c 65 6e 25 3d a9 20 c3  6e 75 6d 31 25 0d 2b de  |len%=. .num1%.+.|
00008670  2a c8 93 20 c8 90 20 6f  78 25 2b 78 31 25 2c 6f  |*.. .. ox%+x1%,o|
00008680  79 25 2b 59 70 6f 73 25  28 31 29 2c 35 38 2a 6c  |y%+Ypos%(1),58*l|
00008690  65 6e 25 2b 36 2c 34 0d  2b e8 23 c8 93 20 c8 90  |en%+6,4.+.#.. ..|
000086a0  20 6f 78 25 2b 78 31 25  2c 6f 79 25 2b 59 70 6f  | ox%+x1%,oy%+Ypo|
000086b0  73 25 28 32 29 2c 36 2c  35 38 0d 2b f2 04 0d 2b  |s%(2),6,58.+...+|
000086c0  fc 12 e7 20 44 69 76 54  79 70 65 25 3d 31 20 8c  |... DivType%=1 .|
000086d0  0d 2c 06 1c 20 f4 20 4c  69 6e 65 73 20 66 6f 72  |.,.. . Lines for|
000086e0  20 73 75 62 74 72 61 63  74 69 6f 6e 0d 2c 10 32  | subtraction.,.2|
000086f0  20 78 31 25 3d a4 64 69  67 78 28 6c 65 6e 25 2d  | x1%=.digx(len%-|
00008700  31 2c 30 29 3a 78 32 25  3d a4 64 69 67 78 28 30  |1,0):x2%=.digx(0|
00008710  2c 4c 73 68 69 66 74 25  28 31 29 2d 31 29 0d 2c  |,Lshift%(1)-1).,|
00008720  1a 2b 20 c8 93 20 c8 90  20 6f 78 25 2b 78 31 25  |.+ .. .. ox%+x1%|
00008730  2c 6f 79 25 2b 59 70 6f  73 25 28 33 29 2d 34 2c  |,oy%+Ypos%(3)-4,|
00008740  78 32 25 2d 78 31 25 2c  34 0d 2c 24 04 0d 2c 2e  |x2%-x1%,4.,$..,.|
00008750  13 20 e3 20 6c 25 3d 32  20 b8 20 36 20 88 20 32  |. . l%=2 . 6 . 2|
00008760  0d 2c 38 16 20 20 e7 20  6c 61 79 65 72 6c 69 6d  |.,8.  . layerlim|
00008770  25 3e 6c 25 20 8c 0d 2c  42 3a 20 20 20 78 31 25  |%>l% ..,B:   x1%|
00008780  3d a4 64 69 67 78 28 61  6e 73 6c 69 6d 25 28 6c  |=.digx(anslim%(l|
00008790  25 29 2c 30 29 3a 78 32  25 3d a4 64 69 67 78 28  |%),0):x2%=.digx(|
000087a0  30 2c 4c 73 68 69 66 74  25 28 6c 25 29 2d 31 29  |0,Lshift%(l%)-1)|
000087b0  0d 2c 4c 30 20 20 20 c8  93 20 c8 90 20 6f 78 25  |.,L0   .. .. ox%|
000087c0  2b 78 31 25 2c 6f 79 25  2b 59 70 6f 73 25 28 6c  |+x1%,oy%+Ypos%(l|
000087d0  25 2b 33 29 2d 34 2c 78  32 25 2d 78 31 25 2c 34  |%+3)-4,x2%-x1%,4|
000087e0  0d 2c 56 07 20 20 cd 0d  2c 60 06 20 ed 0d 2c 6a  |.,V.  ..,`. ..,j|
000087f0  05 cd 0d 2c 74 04 0d 2c  7e 0d f4 20 43 6f 6c 75  |...,t..,~.. Colu|
00008800  6d 6e 73 0d 2c 88 19 e7  20 63 6f 6c 6e 61 6d 65  |mns.,... colname|
00008810  25 28 4e 61 6d 65 4e 6f  25 29 20 8c 0d 2c 92 14  |%(NameNo%) ..,..|
00008820  20 e3 20 64 25 3d 30 20  b8 20 6c 65 6e 25 2d 31  | . d%=0 . len%-1|
00008830  0d 2c 9c 53 20 20 78 25  3d a4 64 69 67 78 28 64  |.,.S  x%=.digx(d|
00008840  25 2c 30 29 2b 32 2d 31  33 2a 28 64 65 63 69 6d  |%,0)+2-13*(decim|
00008850  61 6c 25 28 4e 61 6d 65  4e 6f 25 29 3d 30 20 80  |al%(NameNo%)=0 .|
00008860  20 64 25 3c 34 20 84 20  64 65 63 69 6d 61 6c 25  | d%<4 . decimal%|
00008870  28 4e 61 6d 65 4e 6f 25  29 3d 31 20 80 20 64 25  |(NameNo%)=1 . d%|
00008880  3e 31 29 0d 2c a6 27 20  20 70 6f 77 65 72 25 3d  |>1).,.'  power%=|
00008890  64 25 2b 32 2a 28 64 65  63 69 6d 61 6c 25 28 4e  |d%+2*(decimal%(N|
000088a0  61 6d 65 4e 6f 25 29 3d  31 29 0d 2c b0 53 20 20  |ameNo%)=1).,.S  |
000088b0  c8 99 22 4f 53 5f 53 70  72 69 74 65 4f 70 22 2c  |.."OS_SpriteOp",|
000088c0  26 31 33 34 2c 73 61 72  65 61 25 2c 22 64 69 67  |&134,sarea%,"dig|
000088d0  22 2b c3 70 6f 77 65 72  25 2c 6f 78 25 2b 78 25  |"+.power%,ox%+x%|
000088e0  2c 6f 79 25 2b 59 70 6f  73 25 28 30 29 2c 30 2c  |,oy%+Ypos%(0),0,|
000088f0  73 63 61 6c 65 25 2c 74  72 61 6e 73 25 0d 2c ba  |scale%,trans%.,.|
00008900  06 20 ed 0d 2c c4 05 cd  0d 2c ce 04 0d 2c d8 0f  |. ..,....,...,..|
00008910  f4 20 52 65 6d 61 69 6e  64 65 72 0d 2c e2 25 78  |. Remainder.,.%x|
00008920  25 3d a4 64 69 67 78 28  30 2c 2d 31 29 2b 31 39  |%=.digx(0,-1)+19|
00008930  3a 72 65 6d 4c 25 3d 6c  61 79 65 72 6c 69 6d 25  |:remL%=layerlim%|
00008940  0d 2c ec 2a e7 20 44 69  76 54 79 70 65 25 20 8c  |.,.*. DivType% .|
00008950  20 72 65 6d 4c 25 3d 6c  61 79 65 72 6c 69 6d 25  | remL%=layerlim%|
00008960  20 8b 20 72 65 6d 4c 25  3d 31 0d 2c f6 63 e7 20  | . remL%=1.,.c. |
00008970  61 6e 73 77 65 72 25 28  72 65 6d 4c 25 29 3e 30  |answer%(remL%)>0|
00008980  20 8c 20 c8 99 22 4f 53  5f 53 70 72 69 74 65 4f  | . .."OS_SpriteO|
00008990  70 22 2c 26 31 33 34 2c  73 61 72 65 61 25 2c 22  |p",&134,sarea%,"|
000089a0  72 65 6d 22 2c 6f 78 25  2b 78 25 2c 6f 79 25 2b  |rem",ox%+x%,oy%+|
000089b0  59 70 6f 73 25 28 31 29  2b 31 32 2c 30 2c 73 63  |Ypos%(1)+12,0,sc|
000089c0  61 6c 65 32 37 25 2c 74  72 61 6e 73 25 0d 2d 00  |ale27%,trans%.-.|
000089d0  05 e1 0d 2d 0a 04 0d 2d  14 04 0d 2d 1e 2e dd 20  |...-...-...-... |
000089e0  a4 64 69 67 78 28 64 25  2c 73 68 69 66 74 25 29  |.digx(d%,shift%)|
000089f0  3d 31 37 34 2b 35 38 2a  28 34 2d 64 25 29 2d 35  |=174+58*(4-d%)-5|
00008a00  38 2a 73 68 69 66 74 25  0d 2d 28 3d dd 20 a4 6c  |8*shift%.-(=. .l|
00008a10  61 79 65 72 59 28 6c 61  79 65 72 25 2c 63 25 29  |ayerY(layer%,c%)|
00008a20  3d 59 70 6f 73 25 28 6c  61 79 65 72 25 2b 32 29  |=Ypos%(layer%+2)|
00008a30  2d 35 38 2a 28 6c 61 79  65 72 25 3d 30 20 80 20  |-58*(layer%=0 . |
00008a40  63 25 3d 30 29 0d 2d 32  04 0d 2d 3c 0e dd 20 a4  |c%=0).-2..-<.. .|
00008a50  6e 75 6d 31 70 6f 73 0d  2d 46 1a ea 20 6c 65 6e  |num1pos.-F.. len|
00008a60  25 3a 6c 65 6e 25 3d a9  20 c3 6e 75 6d 31 25 2d  |%:len%=. .num1%-|
00008a70  31 0d 2d 50 12 3d a4 64  69 67 78 28 6c 65 6e 25  |1.-P.=.digx(len%|
00008a80  2c 30 29 0d 2d 5a 04 0d  2d 64 04 0d 2d 6e 12 dd  |,0).-Z..-d..-n..|
00008a90  20 f2 73 75 6d 5f 6e 75  6d 62 65 72 73 0d 2d 78  | .sum_numbers.-x|
00008aa0  2b ea 20 64 25 2c 78 25  2c 79 25 2c 59 25 2c 4c  |+. d%,x%,y%,Y%,L|
00008ab0  61 79 65 72 25 2c 59 61  64 6a 25 2c 6c 65 6e 25  |ayer%,Yadj%,len%|
00008ac0  2c 79 31 25 2c 79 32 25  0d 2d 82 11 6c 65 6e 25  |,y1%,y2%.-..len%|
00008ad0  3d a9 20 c3 6e 75 6d 31  25 0d 2d 8c 04 0d 2d 96  |=. .num1%.-...-.|
00008ae0  13 e3 20 64 25 3d 30 20  b8 20 6c 65 6e 25 2d 31  |.. d%=0 . len%-1|
00008af0  0d 2d a0 2d 20 78 31 25  3d a4 64 69 67 78 28 64  |.-.- x1%=.digx(d|
00008b00  25 2c 30 29 2b 31 39 3a  78 32 25 3d a4 64 69 67  |%,0)+19:x2%=.dig|
00008b10  78 28 64 25 2c 6c 65 6e  25 29 2b 31 39 0d 2d aa  |x(d%,len%)+19.-.|
00008b20  69 20 e7 20 64 69 67 31  24 28 64 25 29 3c 3e 22  |i . dig1$(d%)<>"|
00008b30  22 20 8c 20 c8 99 22 4f  53 5f 53 70 72 69 74 65  |" . .."OS_Sprite|
00008b40  4f 70 22 2c 26 31 33 34  2c 73 61 72 65 61 25 2c  |Op",&134,sarea%,|
00008b50  22 6e 22 2b 64 69 67 31  24 28 64 25 29 2c 6f 78  |"n"+dig1$(d%),ox|
00008b60  25 2b 78 31 25 2c 6f 79  25 2b 59 70 6f 73 25 28  |%+x1%,oy%+Ypos%(|
00008b70  32 29 2b 38 2c 30 2c 73  63 61 6c 65 32 37 25 2c  |2)+8,0,scale27%,|
00008b80  74 72 61 6e 73 25 0d 2d  b4 69 20 e7 20 64 69 67  |trans%.-.i . dig|
00008b90  32 24 28 64 25 29 3c 3e  22 22 20 8c 20 c8 99 22  |2$(d%)<>"" . .."|
00008ba0  4f 53 5f 53 70 72 69 74  65 4f 70 22 2c 26 31 33  |OS_SpriteOp",&13|
00008bb0  34 2c 73 61 72 65 61 25  2c 22 6e 22 2b 64 69 67  |4,sarea%,"n"+dig|
00008bc0  32 24 28 64 25 29 2c 6f  78 25 2b 78 32 25 2c 6f  |2$(d%),ox%+x2%,o|
00008bd0  79 25 2b 59 70 6f 73 25  28 32 29 2b 38 2c 30 2c  |y%+Ypos%(2)+8,0,|
00008be0  73 63 61 6c 65 32 37 25  2c 74 72 61 6e 73 25 0d  |scale27%,trans%.|
00008bf0  2d be 77 20 e7 20 64 69  67 61 6e 73 24 28 30 2c  |-.w . digans$(0,|
00008c00  64 25 29 3c 3e 22 22 20  8c 20 c8 99 22 4f 53 5f  |d%)<>"" . .."OS_|
00008c10  53 70 72 69 74 65 4f 70  22 2c 26 31 33 34 2c 73  |SpriteOp",&134,s|
00008c20  61 72 65 61 25 2c 22 6d  6f 76 65 22 2b 64 69 67  |area%,"move"+dig|
00008c30  61 6e 73 24 28 30 2c 64  25 29 2c 6f 78 25 2b 78  |ans$(0,d%),ox%+x|
00008c40  31 25 2d 35 2c 6f 79 25  2b 59 70 6f 73 25 28 31  |1%-5,oy%+Ypos%(1|
00008c50  29 2b 31 32 2c 38 2c 73  63 61 6c 65 32 37 25 2c  |)+12,8,scale27%,|
00008c60  74 72 61 6e 73 25 0d 2d  c8 04 0d 2d d2 1b 20 e3  |trans%.-...-.. .|
00008c70  20 4c 61 79 65 72 25 3d  30 20 b8 20 6c 61 79 65  | Layer%=0 . laye|
00008c80  72 6c 69 6d 25 0d 2d dc  29 20 20 78 25 3d a4 64  |rlim%.-.)  x%=.d|
00008c90  69 67 78 28 64 25 2c 30  29 3a 79 25 3d a4 6c 61  |igx(d%,0):y%=.la|
00008ca0  79 65 72 59 28 4c 61 79  65 72 25 2c 30 29 0d 2d  |yerY(Layer%,0).-|
00008cb0  e6 04 0d 2d f0 87 20 20  e7 20 64 69 67 61 6e 73  |...-..  . digans|
00008cc0  24 28 4c 61 79 65 72 25  2c 64 25 29 3c 3e 22 22  |$(Layer%,d%)<>""|
00008cd0  20 80 20 4c 61 79 65 72  25 3e 30 20 8c 20 c8 99  | . Layer%>0 . ..|
00008ce0  22 4f 53 5f 53 70 72 69  74 65 4f 70 22 2c 26 31  |"OS_SpriteOp",&1|
00008cf0  33 34 2c 73 61 72 65 61  25 2c 22 6d 6f 76 65 22  |34,sarea%,"move"|
00008d00  2b 64 69 67 61 6e 73 24  28 4c 61 79 65 72 25 2c  |+digans$(Layer%,|
00008d10  64 25 29 2c 6f 78 25 2b  78 25 2b 31 34 2c 6f 79  |d%),ox%+x%+14,oy|
00008d20  25 2b 79 25 2b 31 32 2c  38 2c 73 63 61 6c 65 32  |%+y%+12,8,scale2|
00008d30  37 25 2c 74 72 61 6e 73  25 0d 2d fa 04 0d 2e 04  |7%,trans%.-.....|
00008d40  22 20 20 e7 20 4c 61 79  65 72 25 20 83 20 32 3d  |"  . Layer% . 2=|
00008d50  30 20 80 20 4c 61 79 65  72 25 3c 3d 36 20 8c 0d  |0 . Layer%<=6 ..|
00008d60  2e 0e 29 20 20 20 79 25  3d a4 6c 61 79 65 72 59  |..)   y%=.layerY|
00008d70  28 4c 61 79 65 72 25 2c  2d 31 29 2b 34 2a 28 4c  |(Layer%,-1)+4*(L|
00008d80  61 79 65 72 25 3e 30 29  0d 2e 18 6c 20 20 20 e7  |ayer%>0)...l   .|
00008d90  20 73 74 72 69 6b 65 25  28 4c 61 79 65 72 25 2f  | strike%(Layer%/|
00008da0  32 2c 64 25 29 3d 2d 31  20 8c 20 c8 99 22 4f 53  |2,d%)=-1 . .."OS|
00008db0  5f 53 70 72 69 74 65 4f  70 22 2c 26 31 33 34 2c  |_SpriteOp",&134,|
00008dc0  73 61 72 65 61 25 2c 22  6d 6f 76 65 34 39 22 2c  |sarea%,"move49",|
00008dd0  6f 78 25 2b 78 25 2b 31  32 2c 6f 79 25 2b 79 25  |ox%+x%+12,oy%+y%|
00008de0  2b 38 2c 38 2c 73 63 61  6c 65 32 37 25 2c 74 72  |+8,8,scale27%,tr|
00008df0  61 6e 73 25 0d 2e 22 0e  20 20 20 79 25 20 2b 3d  |ans%..".   y% +=|
00008e00  32 38 0d 2e 2c 04 0d 2e  36 22 20 20 20 e7 20 63  |28..,...6"   . c|
00008e10  61 72 72 79 24 28 4c 61  79 65 72 25 2f 32 2c 64  |arry$(Layer%/2,d|
00008e20  25 29 3c 3e 22 22 20 8c  0d 2e 40 23 20 20 20 20  |%)<>"" ...@#    |
00008e30  e7 20 a9 20 63 61 72 72  79 24 28 4c 61 79 65 72  |. . carry$(Layer|
00008e40  25 2f 32 2c 64 25 29 3e  31 20 8c 0d 2e 4a 24 20  |%/2,d%)>1 ...J$ |
00008e50  20 20 20 20 63 31 24 3d  c0 63 61 72 72 79 24 28  |    c1$=.carry$(|
00008e60  4c 61 79 65 72 25 2f 32  2c 64 25 29 2c 31 29 0d  |Layer%/2,d%),1).|
00008e70  2e 54 24 20 20 20 20 20  63 32 24 3d c2 63 61 72  |.T$     c2$=.car|
00008e80  72 79 24 28 4c 61 79 65  72 25 2f 32 2c 64 25 29  |ry$(Layer%/2,d%)|
00008e90  2c 31 29 0d 2e 5e 51 20  20 20 20 20 c8 99 22 4f  |,1)..^Q     .."O|
00008ea0  53 5f 53 70 72 69 74 65  4f 70 22 2c 26 31 33 34  |S_SpriteOp",&134|
00008eb0  2c 73 61 72 65 61 25 2c  22 63 61 72 72 79 22 2b  |,sarea%,"carry"+|
00008ec0  63 31 24 2c 6f 78 25 2b  78 25 2d 31 30 2c 6f 79  |c1$,ox%+x%-10,oy|
00008ed0  25 2b 79 25 2c 38 2c 73  63 61 6c 65 25 2c 74 72  |%+y%,8,scale%,tr|
00008ee0  61 6e 73 25 0d 2e 68 50  20 20 20 20 20 c8 99 22  |ans%..hP     .."|
00008ef0  4f 53 5f 53 70 72 69 74  65 4f 70 22 2c 26 31 33  |OS_SpriteOp",&13|
00008f00  34 2c 73 61 72 65 61 25  2c 22 63 61 72 72 79 22  |4,sarea%,"carry"|
00008f10  2b 63 32 24 2c 6f 78 25  2b 78 25 2b 34 2c 6f 79  |+c2$,ox%+x%+4,oy|
00008f20  25 2b 79 25 2c 38 2c 73  63 61 6c 65 25 2c 74 72  |%+y%,8,scale%,tr|
00008f30  61 6e 73 25 0d 2e 72 09  20 20 20 20 cc 0d 2e 7c  |ans%..r.    ...||
00008f40  33 20 20 20 20 20 e7 20  4c 61 79 65 72 25 3d 30  |3     . Layer%=0|
00008f50  20 80 20 64 25 3d 6c 65  6e 25 2d 31 20 84 20 4c  | . d%=len%-1 . L|
00008f60  61 79 65 72 25 3e 30 20  8c 20 78 25 20 2b 3d 34  |ayer%>0 . x% +=4|
00008f70  0d 2e 86 60 20 20 20 20  20 c8 99 22 4f 53 5f 53  |...`     .."OS_S|
00008f80  70 72 69 74 65 4f 70 22  2c 26 31 33 34 2c 73 61  |priteOp",&134,sa|
00008f90  72 65 61 25 2c 22 63 61  72 72 79 22 2b 63 61 72  |rea%,"carry"+car|
00008fa0  72 79 24 28 4c 61 79 65  72 25 2f 32 2c 64 25 29  |ry$(Layer%/2,d%)|
00008fb0  2c 6f 78 25 2b 78 25 2c  6f 79 25 2b 79 25 2b 34  |,ox%+x%,oy%+y%+4|
00008fc0  2c 38 2c 73 63 61 6c 65  25 2c 74 72 61 6e 73 25  |,8,scale%,trans%|
00008fd0  0d 2e 90 09 20 20 20 20  cd 0d 2e 9a 08 20 20 20  |....    .....   |
00008fe0  cd 0d 2e a4 07 20 20 cd  0d 2e ae 06 20 ed 0d 2e  |.....  ..... ...|
00008ff0  b8 05 ed 0d 2e c2 04 0d  2e cc 1c e7 20 61 6e 73  |............ ans|
00009000  77 65 72 25 28 6c 61 79  65 72 6c 69 6d 25 29 3e  |wer%(layerlim%)>|
00009010  30 20 8c 0d 2e d6 0f 20  e3 20 6e 25 3d 30 20 b8  |0 ..... . n%=0 .|
00009020  20 31 0d 2e e0 2b 20 20  78 25 3d a4 64 69 67 78  | 1...+  x%=.digx|
00009030  28 6e 25 2c 2d 33 29 2b  31 34 3a 79 25 3d a4 6c  |(n%,-3)+14:y%=.l|
00009040  61 79 65 72 59 28 30 2c  30 29 2b 31 32 0d 2e ea  |ayerY(0,0)+12...|
00009050  62 20 20 e7 20 72 65 6d  24 28 6e 25 29 3c 3e 22  |b  . rem$(n%)<>"|
00009060  22 20 8c 20 c8 99 22 4f  53 5f 53 70 72 69 74 65  |" . .."OS_Sprite|
00009070  4f 70 22 2c 26 31 33 34  2c 73 61 72 65 61 25 2c  |Op",&134,sarea%,|
00009080  22 6d 6f 76 65 22 2b 72  65 6d 24 28 6e 25 29 2c  |"move"+rem$(n%),|
00009090  6f 78 25 2b 78 25 2c 6f  79 25 2b 79 25 2c 30 2c  |ox%+x%,oy%+y%,0,|
000090a0  73 63 61 6c 65 32 37 25  2c 74 72 61 6e 73 25 0d  |scale27%,trans%.|
000090b0  2e f4 06 20 ed 0d 2e fe  05 cd 0d 2f 08 04 0d 2f  |... ......./.../|
000090c0  12 19 e7 20 64 65 63 69  6d 61 6c 25 28 4e 61 6d  |... decimal%(Nam|
000090d0  65 4e 6f 25 29 20 8c 0d  2f 1c 3d 20 79 31 25 3d  |eNo%) ../.= y1%=|
000090e0  a4 6c 61 79 65 72 59 28  30 2c 2d 31 29 2d 31 36  |.layerY(0,-1)-16|
000090f0  3a 79 32 25 3d a4 6c 61  79 65 72 59 28 30 2c 30  |:y2%=.layerY(0,0|
00009100  29 2d 38 3a 78 25 3d a4  64 69 67 78 28 32 2c 30  |)-8:x%=.digx(2,0|
00009110  29 2d 31 32 0d 2f 26 4a  20 c8 99 22 4f 53 5f 53  |)-12./&J .."OS_S|
00009120  70 72 69 74 65 4f 70 22  2c 26 31 33 34 2c 73 61  |priteOp",&134,sa|
00009130  72 65 61 25 2c 22 64 65  63 70 6f 69 6e 74 22 2c  |rea%,"decpoint",|
00009140  6f 78 25 2b 78 25 2c 6f  79 25 2b 79 31 25 2c 38  |ox%+x%,oy%+y1%,8|
00009150  2c 73 63 61 6c 65 25 2c  74 72 61 6e 73 25 0d 2f  |,scale%,trans%./|
00009160  30 4a 20 c8 99 22 4f 53  5f 53 70 72 69 74 65 4f  |0J .."OS_SpriteO|
00009170  70 22 2c 26 31 33 34 2c  73 61 72 65 61 25 2c 22  |p",&134,sarea%,"|
00009180  64 65 63 70 6f 69 6e 74  22 2c 6f 78 25 2b 78 25  |decpoint",ox%+x%|
00009190  2c 6f 79 25 2b 79 32 25  2c 38 2c 73 63 61 6c 65  |,oy%+y2%,8,scale|
000091a0  25 2c 74 72 61 6e 73 25  0d 2f 3a 05 cd 0d 2f 44  |%,trans%./:.../D|
000091b0  05 e1 0d 2f 4e 04 0d 2f  58 04 0d 2f 62 16 dd 20  |.../N../X../b.. |
000091c0  f2 73 75 6d 5f 6e 75 6d  62 65 72 73 5f 65 73 74  |.sum_numbers_est|
000091d0  0d 2f 6c 0b ea 20 64 25  2c 78 25 0d 2f 76 0e e3  |./l.. d%,x%./v..|
000091e0  20 64 25 3d 30 20 b8 20  34 0d 2f 80 15 20 78 25  | d%=0 . 4./.. x%|
000091f0  3d a4 64 69 67 78 28 64  25 2c 2d 31 33 29 0d 2f  |=.digx(d%,-13)./|
00009200  8a 77 20 e7 20 64 69 67  61 6e 73 24 28 30 2c 64  |.w . digans$(0,d|
00009210  25 29 3c 3e 22 22 20 8c  20 c8 99 22 4f 53 5f 53  |%)<>"" . .."OS_S|
00009220  70 72 69 74 65 4f 70 22  2c 26 31 33 34 2c 73 61  |priteOp",&134,sa|
00009230  72 65 61 25 2c 22 6d 6f  76 65 22 2b 64 69 67 61  |rea%,"move"+diga|
00009240  6e 73 24 28 30 2c 64 25  29 2c 6f 78 25 2b 78 25  |ns$(0,d%),ox%+x%|
00009250  2b 31 32 2c 6f 79 25 2b  59 70 6f 73 25 28 37 29  |+12,oy%+Ypos%(7)|
00009260  2b 31 32 2c 38 2c 73 63  61 6c 65 32 37 25 2c 74  |+12,8,scale27%,t|
00009270  72 61 6e 73 25 0d 2f 94  05 ed 0d 2f 9e 05 e1 0d  |rans%./..../....|
00009280  2f a8 04 0d 2f b2 04 0d  2f bc 17 dd 20 f2 6d 61  |/.../.../... .ma|
00009290  6b 65 5f 64 69 76 28 6c  65 76 65 6c 25 29 0d 2f  |ke_div(level%)./|
000092a0  c6 0e ea 20 66 25 2c 73  25 2c 61 25 0d 2f d0 0f  |... f%,s%,a%./..|
000092b0  c8 8e 20 6c 65 76 65 6c  25 20 ca 0d 2f da 15 20  |.. level% ../.. |
000092c0  c9 20 31 3a f2 6d 61 6b  65 5f 6c 65 76 65 6c 31  |. 1:.make_level1|
000092d0  0d 2f e4 15 20 c9 20 32  3a f2 6d 61 6b 65 5f 6c  |./.. . 2:.make_l|
000092e0  65 76 65 6c 32 0d 2f ee  1a 20 c9 20 33 3a f2 6d  |evel2./.. . 3:.m|
000092f0  61 6b 65 5f 6c 65 76 65  6c 33 5f 34 28 33 29 0d  |ake_level3_4(3).|
00009300  2f f8 1a 20 c9 20 34 3a  f2 6d 61 6b 65 5f 6c 65  |/.. . 4:.make_le|
00009310  76 65 6c 33 5f 34 28 34  29 0d 30 02 13 20 c9 20  |vel3_4(4).0.. . |
00009320  35 3a 73 25 3d b3 28 39  29 2b 31 30 0d 30 0c 26  |5:s%=.(9)+10.0.&|
00009330  20 20 20 20 20 20 20 20  66 25 3d a4 6d 61 6b 65  |        f%=.make|
00009340  5f 6c 65 76 65 6c 73 35  36 37 28 32 2c 33 2c 73  |_levels567(2,3,s|
00009350  25 29 0d 30 16 14 20 c9  20 36 3a 73 25 3d b3 28  |%).0.. . 6:s%=.(|
00009360  34 30 29 2b 31 30 0d 30  20 26 20 20 20 20 20 20  |40)+10.0 &      |
00009370  20 20 66 25 3d a4 6d 61  6b 65 5f 6c 65 76 65 6c  |  f%=.make_level|
00009380  73 35 36 37 28 33 2c 34  2c 73 25 29 0d 30 2a 14  |s567(3,4,s%).0*.|
00009390  20 c9 20 37 3a 73 25 3d  b3 28 38 30 29 2b 31 39  | . 7:s%=.(80)+19|
000093a0  0d 30 34 26 20 20 20 20  20 20 20 20 66 25 3d a4  |.04&        f%=.|
000093b0  6d 61 6b 65 5f 6c 65 76  65 6c 73 35 36 37 28 33  |make_levels567(3|
000093c0  2c 34 2c 73 25 29 0d 30  3e 05 cb 0d 30 48 15 6e  |,4,s%).0>...0H.n|
000093d0  75 6d 31 25 3d 66 25 3a  6e 75 6d 32 25 3d 73 25  |um1%=f%:num2%=s%|
000093e0  0d 30 52 05 e1 0d 30 5c  04 0d 30 66 04 0d 30 70  |.0R...0\..0f..0p|
000093f0  11 20 e7 20 6c 65 76 65  6c 25 3d 32 20 8c 0d 30  |. . level%=2 ..0|
00009400  7a 21 20 20 66 25 3d 39  39 39 39 2b b3 28 39 30  |z!  f%=9999+.(90|
00009410  30 30 30 29 3a 73 25 3d  39 2b b3 28 39 30 29 0d  |000):s%=9+.(90).|
00009420  30 84 17 20 20 61 25 3d  66 25 2f 73 25 3a 66 25  |0..  a%=f%/s%:f%|
00009430  3d 61 25 2a 73 25 0d 30  8e 06 20 cc 0d 30 98 1e  |=a%*s%.0.. ..0..|
00009440  20 20 66 25 3d 39 39 39  2b b3 28 39 30 30 30 29  |  f%=999+.(9000)|
00009450  3a 73 25 3d b3 28 38 29  2b 31 0d 30 a2 17 20 20  |:s%=.(8)+1.0..  |
00009460  61 25 3d 66 25 2f 73 25  3a 66 25 3d 61 25 2a 73  |a%=f%/s%:f%=a%*s|
00009470  25 0d 30 ac 06 20 cd 0d  30 b6 0c fd 20 66 25 3e  |%.0.. ..0... f%>|
00009480  39 39 39 0d 30 c0 15 6e  75 6d 31 25 3d 66 25 3a  |999.0..num1%=f%:|
00009490  6e 75 6d 32 25 3d 73 25  0d 30 ca 05 e1 0d 30 d4  |num2%=s%.0....0.|
000094a0  04 0d 30 de 04 0d 30 e8  21 dd 20 a4 6d 61 6b 65  |..0...0.!. .make|
000094b0  5f 6c 65 76 65 6c 73 35  36 37 28 64 31 25 2c 64  |_levels567(d1%,d|
000094c0  32 25 2c 73 25 29 0d 30  f2 18 ea 20 6e 31 25 2c  |2%,s%).0... n1%,|
000094d0  6e 32 25 2c 6e 33 25 2c  6e 34 25 2c 61 25 0d 30  |n2%,n3%,n4%,a%.0|
000094e0  fc 28 6e 31 25 3d bb 20  c4 64 31 25 2c 22 39 22  |.(n1%=. .d1%,"9"|
000094f0  29 3a 6e 32 25 3d bb 28  22 39 22 2b c4 64 31 25  |):n2%=.("9"+.d1%|
00009500  2c 22 30 22 29 29 0d 31  06 28 6e 33 25 3d bb 20  |,"0")).1.(n3%=. |
00009510  c4 64 32 25 2c 22 39 22  29 3a 6e 34 25 3d bb 28  |.d2%,"9"):n4%=.(|
00009520  22 39 22 2b c4 64 32 25  2c 22 30 22 29 29 0d 31  |"9"+.d2%,"0")).1|
00009530  10 05 f5 0d 31 1a 2d 20  e7 20 b3 28 32 29 3d 31  |....1.- . .(2)=1|
00009540  20 8c 20 66 25 3d 6e 31  25 2b b3 28 6e 32 25 29  | . f%=n1%+.(n2%)|
00009550  20 8b 20 66 25 3d 6e 33  25 2b b3 28 6e 34 25 29  | . f%=n3%+.(n4%)|
00009560  0d 31 24 2e 20 e7 20 64  65 63 69 6d 61 6c 25 28  |.1$. . decimal%(|
00009570  4e 61 6d 65 4e 6f 25 29  3d 31 20 8c 20 61 25 3d  |NameNo%)=1 . a%=|
00009580  66 25 2f 73 25 3a 66 25  3d 61 25 2a 73 25 0d 31  |f%/s%:f%=a%*s%.1|
00009590  2e 10 fd 20 a9 20 c3 20  66 25 3e 64 31 25 0d 31  |... . . f%>d1%.1|
000095a0  38 07 3d 66 25 0d 31 42  04 0d 31 4c 04 0d 31 56  |8.=f%.1B..1L..1V|
000095b0  12 dd 20 f2 6d 61 6b 65  5f 6c 65 76 65 6c 32 0d  |.. .make_level2.|
000095c0  31 60 05 f5 0d 31 6a 1a  20 73 25 3d b3 28 34 29  |1`...1j. s%=.(4)|
000095d0  2b 31 3a 66 25 3d 39 39  2b b3 28 39 30 29 0d 31  |+1:f%=99+.(90).1|
000095e0  74 16 20 61 25 3d 66 25  2f 73 25 3a 66 25 3d 61  |t. a%=f%/s%:f%=a|
000095f0  25 2a 73 25 0d 31 7e 0b  fd 20 66 25 3e 39 39 0d  |%*s%.1~.. f%>99.|
00009600  31 88 05 e1 0d 31 92 04  0d 31 9c 04 0d 31 a6 1c  |1....1...1...1..|
00009610  dd 20 f2 6d 61 6b 65 5f  6c 65 76 65 6c 33 5f 34  |. .make_level3_4|
00009620  28 6c 65 76 65 6c 25 29  0d 31 b0 05 f5 0d 31 ba  |(level%).1....1.|
00009630  1f 20 73 25 3d b3 28 38  29 2b 31 3a 66 25 3d 39  |. s%=.(8)+1:f%=9|
00009640  39 39 39 2b b3 28 39 30  30 30 30 29 0d 31 c4 39  |999+.(90000).1.9|
00009650  20 e7 20 6c 65 76 65 6c  25 3d 33 20 84 20 64 65  | . level%=3 . de|
00009660  63 69 6d 61 6c 25 28 4e  61 6d 65 4e 6f 25 29 3d  |cimal%(NameNo%)=|
00009670  31 20 8c 20 61 25 3d 66  25 2f 73 25 3a 66 25 3d  |1 . a%=f%/s%:f%=|
00009680  61 25 2a 73 25 0d 31 ce  0d fd 20 66 25 3e 39 39  |a%*s%.1... f%>99|
00009690  39 39 0d 31 d8 05 e1 0d  31 e2 04 0d 31 ec 04 0d  |99.1....1...1...|
000096a0  31 f6 12 dd 20 f2 6d 61  6b 65 5f 6c 65 76 65 6c  |1... .make_level|
000096b0  31 0d 32 00 15 ea 20 70  25 2c 6e 25 2c 6c 69 6d  |1.2... p%,n%,lim|
000096c0  25 2c 4c 69 6d 25 0d 32  0a 0d 73 25 3d 31 2b b3  |%,Lim%.2..s%=1+.|
000096d0  28 33 29 0d 32 14 17 70  25 3d 31 2b b3 28 33 29  |(3).2..p%=1+.(3)|
000096e0  3a 6c 69 6d 25 3d 39 2f  73 25 0d 32 1e 0f e3 20  |:lim%=9/s%.2... |
000096f0  6e 25 3d 30 20 b8 20 70  25 0d 32 28 2f 20 e7 20  |n%=0 . p%.2(/ . |
00009700  b3 28 6c 69 6d 25 2b 31  29 3d 31 20 80 20 6e 25  |.(lim%+1)=1 . n%|
00009710  3c 70 25 20 8c 20 4c 69  6d 25 3d 30 20 8b 20 4c  |<p% . Lim%=0 . L|
00009720  69 6d 25 3d 6c 69 6d 25  0d 32 32 24 20 e7 20 4c  |im%=lim%.22$ . L|
00009730  69 6d 25 20 8c 20 66 25  3d 66 25 2b 73 25 2a b3  |im% . f%=f%+s%*.|
00009740  28 4c 69 6d 25 29 2a 31  30 5e 6e 25 0d 32 3c 05  |(Lim%)*10^n%.2<.|
00009750  ed 0d 32 46 05 e1 0d 32  50 04 0d 32 5a 04 0d 32  |..2F...2P..2Z..2|
00009760  64 12 dd 20 f2 72 65 73  75 6c 74 73 5f 73 75 6d  |d.. .results_sum|
00009770  0d 32 6e 29 ea 20 73 74  24 2c 6f 70 24 2c 64 6f  |.2n). st$,op$,do|
00009780  77 6e 25 2c 6e 75 6d 31  24 2c 6e 75 6d 32 24 2c  |wn%,num1$,num2$,|
00009790  61 6e 73 24 2c 72 65 6d  25 0d 32 78 28 e7 20 44  |ans$,rem%.2x(. D|
000097a0  69 76 54 79 70 65 25 20  8c 20 72 65 6d 25 3d 6c  |ivType% . rem%=l|
000097b0  61 79 65 72 6c 69 6d 25  20 8b 20 72 65 6d 25 3d  |ayerlim% . rem%=|
000097c0  31 0d 32 82 44 64 6f 77  6e 25 3d 31 2d 28 71 75  |1.2.Ddown%=1-(qu|
000097d0  65 73 74 25 3d 30 20 84  20 52 63 6e 74 25 3d 34  |est%=0 . Rcnt%=4|
000097e0  29 3a 52 63 6e 74 25 20  2b 3d 64 6f 77 6e 25 3a  |):Rcnt% +=down%:|
000097f0  6e 6f 74 73 61 76 65 64  52 25 3d 2d 31 3a 6e 65  |notsavedR%=-1:ne|
00009800  77 52 25 3d 30 0d 32 8c  19 e7 20 64 65 63 69 6d  |wR%=0.2... decim|
00009810  61 6c 25 28 4e 61 6d 65  4e 6f 25 29 20 8c 0d 32  |al%(NameNo%) ..2|
00009820  96 20 20 6e 75 6d 31 24  3d a4 69 6e 73 65 72 74  |.  num1$=.insert|
00009830  5f 70 6f 69 6e 74 28 c3  6e 75 6d 31 25 29 0d 32  |_point(.num1%).2|
00009840  a0 11 20 6e 75 6d 32 24  3d c3 6e 75 6d 32 25 0d  |.. num2$=.num2%.|
00009850  32 aa 24 20 61 6e 73 24  3d a4 69 6e 73 65 72 74  |2.$ ans$=.insert|
00009860  5f 70 6f 69 6e 74 28 c3  61 6e 73 77 65 72 25 28  |_point(.answer%(|
00009870  30 29 29 0d 32 b4 05 cc  0d 32 be 2f 20 6e 75 6d  |0)).2....2./ num|
00009880  31 24 3d c3 6e 75 6d 31  25 3a 6e 75 6d 32 24 3d  |1$=.num1%:num2$=|
00009890  c3 6e 75 6d 32 25 3a 61  6e 73 24 3d c3 61 6e 73  |.num2%:ans$=.ans|
000098a0  77 65 72 25 28 30 29 0d  32 c8 34 20 e7 20 61 6e  |wer%(0).2.4 . an|
000098b0  73 77 65 72 25 28 72 65  6d 25 29 20 8c 20 61 6e  |swer%(rem%) . an|
000098c0  73 24 3d 61 6e 73 24 2b  22 52 22 2b c3 20 61 6e  |s$=ans$+"R"+. an|
000098d0  73 77 65 72 25 28 72 65  6d 25 29 0d 32 d2 05 cd  |swer%(rem%).2...|
000098e0  0d 32 dc 04 0d 32 e6 21  66 69 6c 6c 24 3d c4 31  |.2...2.!fill$=.1|
000098f0  32 2d a9 28 6e 75 6d 31  24 2b 6e 75 6d 32 24 29  |2-.(num1$+num2$)|
00009900  2c 22 20 22 29 0d 32 f0  22 66 69 6c 6c 32 24 3d  |," ").2."fill2$=|
00009910  c4 38 2d a9 61 6e 73 24  2c 22 20 22 29 3a 6f 70  |.8-.ans$," "):op|
00009920  24 3d 22 20 f7 20 22 0d  32 fa 4a 73 74 24 3d 22  |$=" . ".2.Jst$="|
00009930  20 28 22 2b c3 28 71 75  65 73 74 25 2b 31 29 2b  | ("+.(quest%+1)+|
00009940  22 29 20 22 2b 6e 75 6d  31 24 2b 6f 70 24 2b 6e  |") "+num1$+op$+n|
00009950  75 6d 32 24 2b 66 69 6c  6c 24 2b 22 20 3d 20 28  |um2$+fill$+" = (|
00009960  22 2b 61 6e 73 24 2b 22  29 22 2b 66 69 6c 6c 32  |"+ans$+")"+fill2|
00009970  24 0d 33 04 26 52 70 74  72 25 3d a4 61 64 64 5f  |$.3.&Rptr%=.add_|
00009980  73 74 72 69 6e 67 28 52  70 74 72 25 2c 73 74 24  |string(Rptr%,st$|
00009990  2c 64 6f 77 6e 25 29 0d  33 0e 05 e1 0d 33 18 04  |,down%).3....3..|
000099a0  0d 33 22 04 0d 33 2c 19  dd 20 a4 69 6e 73 65 72  |.3"..3,.. .inser|
000099b0  74 5f 70 6f 69 6e 74 28  6e 75 6d 24 29 0d 33 36  |t_point(num$).36|
000099c0  17 ea 20 6c 65 6e 25 2c  6c 65 66 74 24 2c 72 69  |.. len%,left$,ri|
000099d0  67 68 74 24 0d 33 40 11  6c 65 6e 25 3d a9 20 6e  |ght$.3@.len%=. n|
000099e0  75 6d 24 2d 32 0d 33 4a  25 6c 65 66 74 24 3d c0  |um$-2.3J%left$=.|
000099f0  6e 75 6d 24 2c 6c 65 6e  25 29 3a 72 69 67 68 74  |num$,len%):right|
00009a00  24 3d c2 6e 75 6d 24 2c  32 29 0d 33 54 15 3d 6c  |$=.num$,2).3T.=l|
00009a10  65 66 74 24 2b 22 2e 22  2b 72 69 67 68 74 24 0d  |eft$+"."+right$.|
00009a20  33 5e 04 0d 33 68 04 0d  33 72 21 dd 20 f2 64 69  |3^..3h..3r!. .di|
00009a30  67 69 74 73 28 6e 75 6d  25 2c 64 69 67 24 28 29  |gits(num%,dig$()|
00009a40  2c 6c 61 79 65 72 25 29  0d 33 7c 0d ea 20 64 25  |,layer%).3|.. d%|
00009a50  2c 6c 69 6d 25 0d 33 86  37 e7 20 6e 75 6d 25 3d  |,lim%.3.7. num%=|
00009a60  30 20 8c 20 64 69 67 24  28 6c 61 79 65 72 6c 69  |0 . dig$(layerli|
00009a70  6d 25 2c 4c 73 68 69 66  74 25 28 6c 61 79 65 72  |m%,Lshift%(layer|
00009a80  6c 69 6d 25 29 29 3d 22  30 22 3a e1 0d 33 90 04  |lim%))="0":..3..|
00009a90  0d 33 9a 0e e3 20 64 25  3d 30 20 b8 20 34 0d 33  |.3... d%=0 . 4.3|
00009aa0  a4 12 20 e7 20 6c 61 79  65 72 25 3d 2d 31 20 8c  |.. . layer%=-1 .|
00009ab0  0d 33 ae 34 20 20 e7 20  6e 75 6d 25 3e 30 20 8c  |.3.4  . num%>0 .|
00009ac0  20 64 69 67 24 28 64 25  29 3d c3 28 6e 75 6d 25  | dig$(d%)=.(num%|
00009ad0  20 83 20 31 30 29 20 8b  20 64 69 67 24 28 64 25  | . 10) . dig$(d%|
00009ae0  29 3d 22 22 0d 33 b8 06  20 cc 0d 33 c2 42 20 20  |)="".3.. ..3.B  |
00009af0  e7 20 6e 75 6d 25 3e 30  20 8c 20 64 69 67 24 28  |. num%>0 . dig$(|
00009b00  6c 61 79 65 72 25 2c 64  25 29 3d c3 28 6e 75 6d  |layer%,d%)=.(num|
00009b10  25 20 83 20 31 30 29 20  8b 20 64 69 67 24 28 6c  |% . 10) . dig$(l|
00009b20  61 79 65 72 25 2c 64 25  29 3d 22 22 0d 33 cc 06  |ayer%,d%)="".3..|
00009b30  20 cd 0d 33 d6 13 20 6e  75 6d 25 3d 6e 75 6d 25  | ..3.. num%=num%|
00009b40  20 81 20 31 30 0d 33 e0  05 ed 0d 33 ea 05 e1 0d  | . 10.3....3....|
00009b50  33 f4 1b e7 20 64 65 63  69 6d 61 6c 25 28 4e 61  |3... decimal%(Na|
00009b60  6d 65 4e 6f 25 29 3d 31  20 8c 0d 33 fe 12 20 e7  |meNo%)=1 ..3.. .|
00009b70  20 6c 61 79 65 72 25 3d  2d 31 20 8c 0d 34 08 10  | layer%=-1 ..4..|
00009b80  20 20 e3 20 64 25 3d 31  20 b8 20 32 0d 34 12 23  |  . d%=1 . 2.4.#|
00009b90  20 20 20 e7 20 64 69 67  24 28 64 25 29 3d 22 22  |   . dig$(d%)=""|
00009ba0  20 8c 20 64 69 67 24 28  64 25 29 3d 22 30 22 0d  | . dig$(d%)="0".|
00009bb0  34 1c 07 20 20 ed 0d 34  26 06 20 cc 0d 34 30 1a  |4..  ..4&. ..40.|
00009bc0  20 20 6c 69 6d 25 3d 61  6e 73 6c 69 6d 25 28 6c  |  lim%=anslim%(l|
00009bd0  61 79 65 72 25 29 0d 34  3a 34 20 20 e7 20 64 69  |ayer%).4:4  . di|
00009be0  67 24 28 6c 61 79 65 72  25 2c 6c 69 6d 25 29 3d  |g$(layer%,lim%)=|
00009bf0  22 22 20 8c 20 64 69 67  24 28 6c 61 79 65 72 25  |"" . dig$(layer%|
00009c00  2c 6c 69 6d 25 29 3d 22  30 22 0d 34 44 06 20 cd  |,lim%)="0".4D. .|
00009c10  0d 34 4e 05 cd 0d 34 58  05 e1 0d 34 62 04 0d 34  |.4N...4X...4b..4|
00009c20  6c 04 0d 34 76 11 dd 20  f2 72 65 6d 5f 64 69 67  |l..4v.. .rem_dig|
00009c30  69 74 73 0d 34 80 0a ea  20 6e 75 6d 24 0d 34 8a  |its.4... num$.4.|
00009c40  3e e7 20 44 69 76 54 79  70 65 25 3d 31 20 8c 20  |>. DivType%=1 . |
00009c50  6e 75 6d 24 3d c3 61 6e  73 77 65 72 25 28 6c 61  |num$=.answer%(la|
00009c60  79 65 72 6c 69 6d 25 29  20 8b 20 6e 75 6d 24 3d  |yerlim%) . num$=|
00009c70  c3 61 6e 73 77 65 72 25  28 31 29 0d 34 94 04 0d  |.answer%(1).4...|
00009c80  34 9e 10 e7 20 a9 20 6e  75 6d 24 3d 31 20 8c 0d  |4... . num$=1 ..|
00009c90  34 a8 22 20 72 65 6d 61  6e 73 24 28 31 29 3d 6e  |4." remans$(1)=n|
00009ca0  75 6d 24 3a 72 65 6d 61  6e 73 24 28 30 29 3d 22  |um$:remans$(0)="|
00009cb0  22 0d 34 b2 05 cc 0d 34  bc 2c 20 72 65 6d 61 6e  |".4....4., reman|
00009cc0  73 24 28 31 29 3d c0 6e  75 6d 24 2c 31 29 3a 72  |s$(1)=.num$,1):r|
00009cd0  65 6d 61 6e 73 24 28 30  29 3d c2 6e 75 6d 24 2c  |emans$(0)=.num$,|
00009ce0  31 29 0d 34 c6 05 cd 0d  34 d0 05 e1 0d 34 da 04  |1).4....4....4..|
00009cf0  0d 34 e4 04 0d 34 ee 11  dd 20 f2 66 69 6e 64 5f  |.4...4... .find_|
00009d00  65 72 72 6f 72 0d 34 f8  24 ea 20 78 25 2c 79 25  |error.4.$. x%,y%|
00009d10  2c 66 6c 67 25 2c 6c 69  6d 25 2c 72 65 6d 6c 69  |,flg%,lim%,remli|
00009d20  6d 25 3a 66 6c 67 25 3d  30 0d 35 02 12 e7 20 44  |m%:flg%=0.5... D|
00009d30  69 76 54 79 70 65 25 3d  30 20 8c 0d 35 0c 27 20  |ivType%=0 ..5.' |
00009d40  e7 20 6e 65 78 74 65 72  72 25 3c 30 20 8c 20 6e  |. nexterr%<0 . n|
00009d50  65 78 74 65 72 72 25 3d  2d 31 3a 66 6c 67 25 3d  |exterr%=-1:flg%=|
00009d60  2d 31 0d 35 16 29 20 e7  20 6e 65 78 74 64 69 67  |-1.5.) . nextdig|
00009d70  25 3c 3e 2d 31 20 8c 20  6e 65 78 74 65 72 72 25  |%<>-1 . nexterr%|
00009d80  3d 2d 31 3a 66 6c 67 25  3d 2d 31 0d 35 20 05 cc  |=-1:flg%=-1.5 ..|
00009d90  0d 35 2a 44 20 e7 20 6e  65 78 74 65 72 72 25 3d  |.5*D . nexterr%=|
00009da0  61 6e 73 6c 69 6d 25 28  6c 61 79 65 72 6c 69 6d  |anslim%(layerlim|
00009db0  25 29 2b 31 20 80 20 6e  65 78 74 65 72 72 4c 25  |%)+1 . nexterrL%|
00009dc0  3d 6c 61 79 65 72 6c 69  6d 25 20 8c 20 66 6c 67  |=layerlim% . flg|
00009dd0  25 3d 2d 31 0d 35 34 4c  20 e7 20 6e 65 78 74 64  |%=-1.54L . nextd|
00009de0  69 67 25 3c 61 6e 73 6c  69 6d 25 28 6c 61 79 65  |ig%<anslim%(laye|
00009df0  72 6c 69 6d 25 29 2b 31  20 80 20 6c 61 79 65 72  |rlim%)+1 . layer|
00009e00  25 3d 6c 61 79 65 72 6c  69 6d 25 20 84 20 6c 61  |%=layerlim% . la|
00009e10  79 65 72 25 3c 6c 61 79  65 72 6c 69 6d 25 20 8c  |yer%<layerlim% .|
00009e20  0d 35 3e 3f 20 20 6e 65  78 74 65 72 72 25 3d 61  |.5>?  nexterr%=a|
00009e30  6e 73 6c 69 6d 25 28 6c  61 79 65 72 6c 69 6d 25  |nslim%(layerlim%|
00009e40  29 2b 31 3a 6e 65 78 74  65 72 72 4c 25 3d 6c 61  |)+1:nexterrL%=la|
00009e50  79 65 72 6c 69 6d 25 3a  66 6c 67 25 3d 2d 31 0d  |yerlim%:flg%=-1.|
00009e60  35 48 26 20 20 f2 64 69  67 69 74 5f 72 65 64 72  |5H&  .digit_redr|
00009e70  61 77 28 6c 61 79 65 72  25 2c 6e 65 78 74 64 69  |aw(layer%,nextdi|
00009e80  67 25 2c 30 29 0d 35 52  06 20 cd 0d 35 5c 05 cd  |g%,0).5R. ..5\..|
00009e90  0d 35 66 0e e7 20 66 6c  67 25 20 8c 20 e1 0d 35  |.5f.. flg% . ..5|
00009ea0  70 04 0d 35 7a 12 e7 20  44 69 76 54 79 70 65 25  |p..5z.. DivType%|
00009eb0  3d 30 20 8c 0d 35 84 06  20 f5 0d 35 8e 1e 20 20  |=0 ..5.. ..5..  |
00009ec0  6e 65 78 74 65 72 72 25  20 2b 3d 28 6e 65 78 74  |nexterr% +=(next|
00009ed0  65 72 72 25 3e 2d 31 29  0d 35 98 4a 20 20 e7 20  |err%>-1).5.J  . |
00009ee0  6e 65 78 74 65 72 72 25  3e 3d 30 20 8c 20 e7 20  |nexterr%>=0 . . |
00009ef0  64 69 67 61 6e 73 24 28  30 2c 6e 65 78 74 65 72  |digans$(0,nexter|
00009f00  72 25 29 3c 3e 61 6e 73  77 65 72 24 28 30 2c 6e  |r%)<>answer$(0,n|
00009f10  65 78 74 65 72 72 25 29  20 8c 20 66 6c 67 25 3d  |exterr%) . flg%=|
00009f20  2d 31 0d 35 a2 1c 20 fd  20 66 6c 67 25 3d 2d 31  |-1.5.. . flg%=-1|
00009f30  20 84 20 6e 65 78 74 65  72 72 25 3d 2d 31 0d 35  | . nexterr%=-1.5|
00009f40  ac 04 0d 35 b6 2c 20 e7  20 61 6e 73 77 65 72 25  |...5., . answer%|
00009f50  28 31 29 3e 30 20 80 20  6e 65 78 74 65 72 72 25  |(1)>0 . nexterr%|
00009f60  3d 2d 31 20 80 20 66 6c  67 25 3d 30 20 8c 0d 35  |=-1 . flg%=0 ..5|
00009f70  c0 31 20 20 e7 20 72 65  6d 24 28 31 29 3c 3e 72  |.1  . rem$(1)<>r|
00009f80  65 6d 61 6e 73 24 28 31  29 20 8c 20 6e 65 78 74  |emans$(1) . next|
00009f90  65 72 72 25 3d 2d 32 3a  66 6c 67 25 3d 2d 31 0d  |err%=-2:flg%=-1.|
00009fa0  35 ca 06 20 cd 0d 35 d4  04 0d 35 de 39 20 e7 20  |5.. ..5...5.9 . |
00009fb0  66 6c 67 25 20 8c 20 72  75 62 64 69 67 25 3d 6e  |flg% . rubdig%=n|
00009fc0  65 78 74 65 72 72 25 3a  f2 64 69 67 69 74 5f 72  |exterr%:.digit_r|
00009fd0  65 64 72 61 77 28 30 2c  72 75 62 64 69 67 25 2c  |edraw(0,rubdig%,|
00009fe0  30 29 0d 35 e8 05 cc 0d  35 f2 26 20 72 65 6d 6c  |0).5....5.& reml|
00009ff0  69 6d 25 3d 2d a9 20 c3  20 61 6e 73 77 65 72 25  |im%=-. . answer%|
0000a000  28 6c 61 79 65 72 6c 69  6d 25 29 2d 31 0d 35 fc  |(layerlim%)-1.5.|
0000a010  06 20 f5 0d 36 06 0c 20  20 66 6c 67 25 3d 30 0d  |. ..6..  flg%=0.|
0000a020  36 10 15 20 20 e7 20 6e  65 78 74 65 72 72 25 3e  |6..  . nexterr%>|
0000a030  3d 30 20 8c 0d 36 1a 80  20 20 20 e7 20 64 69 67  |=0 ..6..   . dig|
0000a040  61 6e 73 24 28 6e 65 78  74 65 72 72 4c 25 2c 6e  |ans$(nexterrL%,n|
0000a050  65 78 74 65 72 72 25 29  3c 3e 61 6e 73 77 65 72  |exterr%)<>answer|
0000a060  24 28 6e 65 78 74 65 72  72 4c 25 2c 6e 65 78 74  |$(nexterrL%,next|
0000a070  65 72 72 25 29 20 8c 20  66 6c 67 25 3d 2d 31 20  |err%) . flg%=-1 |
0000a080  8b 20 f2 62 6f 78 5f 70  6f 73 69 74 69 6f 6e 32  |. .box_position2|
0000a090  28 6e 65 78 74 65 72 72  25 2c 6e 65 78 74 65 72  |(nexterr%,nexter|
0000a0a0  72 4c 25 2c 4c 63 75 72  72 32 25 2c 4c 74 79 70  |rL%,Lcurr2%,Ltyp|
0000a0b0  65 32 25 29 0d 36 24 16  20 20 20 e7 20 6e 65 78  |e2%).6$.   . nex|
0000a0c0  74 65 72 72 25 3d 2d 32  20 8c 0d 36 2e 48 20 20  |terr%=-2 ..6.H  |
0000a0d0  20 20 e7 20 72 65 6d 24  28 6e 65 78 74 65 72 72  |  . rem$(nexterr|
0000a0e0  25 2b 33 29 3c 3e 72 65  6d 61 6e 73 24 28 6e 65  |%+3)<>remans$(ne|
0000a0f0  78 74 65 72 72 25 2b 33  29 20 8c 20 66 6c 67 25  |xterr%+3) . flg%|
0000a100  3d 2d 31 20 8b 20 6e 65  78 74 65 72 72 25 20 2d  |=-1 . nexterr% -|
0000a110  3d 31 0d 36 38 08 20 20  20 cd 0d 36 42 07 20 20  |=1.68.   ..6B.  |
0000a120  cc 0d 36 4c 1c 20 20 20  e7 20 6e 65 78 74 65 72  |..6L.   . nexter|
0000a130  72 25 3e 3d 72 65 6d 6c  69 6d 25 20 8c 0d 36 56  |r%>=remlim% ..6V|
0000a140  48 20 20 20 20 e7 20 72  65 6d 24 28 6e 65 78 74  |H    . rem$(next|
0000a150  65 72 72 25 2b 33 29 3c  3e 72 65 6d 61 6e 73 24  |err%+3)<>remans$|
0000a160  28 6e 65 78 74 65 72 72  25 2b 33 29 20 8c 20 66  |(nexterr%+3) . f|
0000a170  6c 67 25 3d 2d 31 20 8b  20 6e 65 78 74 65 72 72  |lg%=-1 . nexterr|
0000a180  25 20 2d 3d 31 0d 36 60  08 20 20 20 cc 0d 36 6a  |% -=1.6`.   ..6j|
0000a190  2d 20 20 20 20 6e 65 78  74 65 72 72 25 3d 6e 65  |-    nexterr%=ne|
0000a1a0  78 74 64 69 67 25 3a 6e  65 78 74 65 72 72 4c 25  |xtdig%:nexterrL%|
0000a1b0  3d 6c 61 79 65 72 6c 69  6d 25 0d 36 74 08 20 20  |=layerlim%.6t.  |
0000a1c0  20 cd 0d 36 7e 07 20 20  cd 0d 36 88 04 0d 36 92  | ..6~.  ..6...6.|
0000a1d0  35 20 fd 20 66 6c 67 25  3d 2d 31 20 84 20 6e 65  |5 . flg%=-1 . ne|
0000a1e0  78 74 65 72 72 25 3d 6e  65 78 74 64 69 67 25 20  |xterr%=nextdig% |
0000a1f0  80 20 6e 65 78 74 65 72  72 4c 25 3d 6c 61 79 65  |. nexterrL%=laye|
0000a200  72 25 0d 36 9c 41 20 e7  20 6e 65 78 74 65 72 72  |r%.6.A . nexterr|
0000a210  25 3c 3e 6e 65 78 74 64  69 67 25 20 80 20 6e 65  |%<>nextdig% . ne|
0000a220  78 74 65 72 72 4c 25 3d  6c 61 79 65 72 25 20 84  |xterrL%=layer% .|
0000a230  20 6e 65 78 74 65 72 72  4c 25 3c 6c 61 79 65 72  | nexterrL%<layer|
0000a240  25 20 8c 0d 36 a6 2a 20  20 72 75 62 64 69 67 25  |% ..6.*  rubdig%|
0000a250  3d 6e 65 78 74 65 72 72  25 3a 72 75 62 6c 61 79  |=nexterr%:rublay|
0000a260  65 72 25 3d 6e 65 78 74  65 72 72 4c 25 0d 36 b0  |er%=nexterrL%.6.|
0000a270  28 20 20 f2 64 69 67 69  74 5f 72 65 64 72 61 77  |(  .digit_redraw|
0000a280  28 72 75 62 6c 61 79 65  72 25 2c 72 75 62 64 69  |(rublayer%,rubdi|
0000a290  67 25 2c 30 29 0d 36 ba  06 20 cd 0d 36 c4 56 20  |g%,0).6.. ..6.V |
0000a2a0  f4 20 49 46 20 6e 65 78  74 65 72 72 25 3d 6e 65  |. IF nexterr%=ne|
0000a2b0  78 74 64 69 67 25 20 41  4e 44 20 6e 65 78 74 65  |xtdig% AND nexte|
0000a2c0  72 72 4c 25 3d 6c 61 79  65 72 6c 69 6d 25 20 54  |rrL%=layerlim% T|
0000a2d0  48 45 4e 20 6e 65 78 74  65 72 72 25 3d 61 6e 73  |HEN nexterr%=ans|
0000a2e0  6c 69 6d 25 28 6c 61 79  65 72 6c 69 6d 25 29 2b  |lim%(layerlim%)+|
0000a2f0  31 0d 36 ce 76 20 e7 20  6e 65 78 74 65 72 72 25  |1.6.v . nexterr%|
0000a300  3d 6e 65 78 74 64 69 67  25 20 80 20 6e 65 78 74  |=nextdig% . next|
0000a310  65 72 72 4c 25 3d 6c 61  79 65 72 25 20 8c 20 6e  |errL%=layer% . n|
0000a320  65 78 74 65 72 72 25 3d  61 6e 73 6c 69 6d 25 28  |exterr%=anslim%(|
0000a330  6c 61 79 65 72 6c 69 6d  25 29 2b 31 3a 6e 65 78  |layerlim%)+1:nex|
0000a340  74 65 72 72 4c 25 3d 6c  61 79 65 72 6c 69 6d 25  |terrL%=layerlim%|
0000a350  3a 72 75 62 64 69 67 25  3d 2d 31 3a 72 75 62 6c  |:rubdig%=-1:rubl|
0000a360  61 79 65 72 25 3d 30 0d  36 d8 04 0d 36 e2 05 cd  |ayer%=0.6...6...|
0000a370  0d 36 ec 05 e1 0d 36 f6  04 0d 37 00 04 0d 37 0a  |.6....6...7...7.|
0000a380  11 dd 20 f2 6e 75 6c 6c  5f 65 76 65 6e 74 0d 37  |.. .null_event.7|
0000a390  14 1a e7 20 64 72 61 67  25 20 8c 20 f2 6d 6f 76  |... drag% . .mov|
0000a3a0  65 5f 6e 75 6d 62 65 72  0d 37 1e 04 0d 37 28 60  |e_number.7...7(`|
0000a3b0  e7 20 91 2d 73 65 73 73  74 69 6d 65 25 3e 74 69  |. .-sesstime%>ti|
0000a3c0  6d 65 6c 69 6d 25 28 4e  61 6d 65 4e 6f 25 29 2a  |melim%(NameNo%)*|
0000a3d0  36 30 30 30 20 80 20 4e  6f 74 69 6d 65 72 25 28  |6000 . Notimer%(|
0000a3e0  4e 61 6d 65 4e 6f 25 29  3d 30 20 80 20 67 61 6d  |NameNo%)=0 . gam|
0000a3f0  65 25 3e 30 20 80 20 74  69 6d 65 75 70 25 3d 30  |e%>0 . timeup%=0|
0000a400  20 8c 20 74 69 6d 65 75  70 25 3d 31 0d 37 32 11  | . timeup%=1.72.|
0000a410  e7 20 74 69 6d 65 75 70  25 3d 32 20 8c 0d 37 3c  |. timeup%=2 ..7<|
0000a420  3e 20 6d 65 73 73 61 67  65 24 28 30 29 3d 22 54  |> message$(0)="T|
0000a430  69 6d 65 27 73 20 75 70  22 3a 6d 65 73 73 61 67  |ime's up":messag|
0000a440  65 24 28 31 29 3d 22 22  3a ef 37 3a f2 66 6f 6e  |e$(1)="":.7:.fon|
0000a450  74 5f 74 6f 5f 73 63 72  65 65 6e 0d 37 46 24 20  |t_to_screen.7F$ |
0000a460  f2 70 61 75 73 65 28 34  30 30 29 3a f2 67 61 6d  |.pause(400):.gam|
0000a470  65 5f 65 6e 64 3a 74 69  6d 65 75 70 25 3d 30 0d  |e_end:timeup%=0.|
0000a480  37 50 05 cd 0d 37 5a 04  0d 37 64 42 e7 20 64 72  |7P...7Z..7dB. dr|
0000a490  61 77 66 6f 6e 74 25 20  8c 20 f2 66 6f 6e 74 5f  |awfont% . .font_|
0000a4a0  74 6f 5f 73 63 72 65 65  6e 3a f2 6d 65 73 73 61  |to_screen:.messa|
0000a4b0  67 65 5f 73 70 72 69 74  65 5f 62 61 63 6b 3a 64  |ge_sprite_back:d|
0000a4c0  72 61 77 66 6f 6e 74 25  3d 30 0d 37 6e 46 e7 20  |rawfont%=0.7nF. |
0000a4d0  6e 65 78 74 6d 65 73 73  25 20 8c 20 f2 70 61 75  |nextmess% . .pau|
0000a4e0  73 65 28 31 30 30 2a 28  6e 65 78 74 6d 65 73 73  |se(100*(nextmess|
0000a4f0  25 2d 31 29 29 3a f2 6d  65 73 73 61 67 65 28 22  |%-1)):.message("|
0000a500  70 72 22 29 3a 6e 65 78  74 6d 65 73 73 25 3d 30  |pr"):nextmess%=0|
0000a510  0d 37 78 35 e7 20 70 72  69 6e 74 65 72 25 28 4e  |.7x5. printer%(N|
0000a520  61 6d 65 4e 6f 25 29 3d  31 20 80 20 64 72 69 76  |ameNo%)=1 . driv|
0000a530  65 72 25 3d 30 20 80 20  65 6e 70 72 69 6e 74 25  |er%=0 . enprint%|
0000a540  3d 2d 31 20 8c 0d 37 82  1c 20 64 72 69 76 65 72  |=-1 ..7.. driver|
0000a550  25 3d a4 65 6e 73 75 72  65 5f 50 64 72 69 76 65  |%=.ensure_Pdrive|
0000a560  72 0d 37 8c 40 20 e7 20  64 72 69 76 65 72 25 20  |r.7.@ . driver% |
0000a570  8c 20 f2 73 65 74 5f 74  6f 70 5f 69 63 6f 6e 28  |. .set_top_icon(|
0000a580  37 2c 2d 31 29 3a f2 73  68 61 64 65 5f 69 63 6f  |7,-1):.shade_ico|
0000a590  6e 28 53 43 68 61 6e 64  6c 65 25 2c 31 31 2c 30  |n(SChandle%,11,0|
0000a5a0  29 0d 37 96 05 cd 0d 37  a0 4e e7 20 a4 77 69 6e  |).7....7.N. .win|
0000a5b0  64 6f 77 5f 6f 70 65 6e  28 4c 68 61 6e 64 6c 65  |dow_open(Lhandle|
0000a5c0  25 29 3d 2d 31 20 80 20  63 72 65 61 74 65 25 3d  |%)=-1 . create%=|
0000a5d0  2d 32 20 8c 20 f2 6c 6f  61 64 62 6f 78 5f 77 69  |-2 . .loadbox_wi|
0000a5e0  6e 64 6f 77 73 28 2d 31  29 3a 63 72 65 61 74 65  |ndows(-1):create|
0000a5f0  25 3d 2d 31 0d 37 aa 3a  e7 20 91 2d 54 4c 74 69  |%=-1.7.:. .-TLti|
0000a600  6d 65 25 3e 31 30 30 30  20 8c 20 f2 63 6c 6f 73  |me%>1000 . .clos|
0000a610  65 5f 77 69 6e 64 6f 77  28 54 68 61 6e 64 6c 65  |e_window(Thandle|
0000a620  25 29 3a 54 4c 74 69 6d  65 25 3d 31 45 37 0d 37  |%):TLtime%=1E7.7|
0000a630  b4 05 e1 0d 37 be 04 0d  37 c8 04 0d 37 d2 12 dd  |....7...7...7...|
0000a640  20 f2 6d 6f 76 65 5f 6e  75 6d 62 65 72 0d 37 dc  | .move_number.7.|
0000a650  41 ea 20 78 25 2c 79 25  2c 78 31 25 2c 78 32 25  |A. x%,y%,x1%,x2%|
0000a660  2c 79 31 25 2c 79 32 25  2c 77 25 2c 68 25 2c 66  |,y1%,y2%,w%,h%,f|
0000a670  6c 67 25 2c 72 30 25 2c  72 31 25 2c 72 32 25 2c  |lg%,r0%,r1%,r2%,|
0000a680  72 33 25 2c 63 6f 6e 64  25 2c 77 69 6e 25 0d 37  |r3%,cond%,win%.7|
0000a690  e6 23 c8 99 22 57 69 6d  70 5f 47 65 74 50 6f 69  |.#.."Wimp_GetPoi|
0000a6a0  6e 74 65 72 49 6e 66 6f  22 2c 2c 62 6c 6f 63 6b  |nterInfo",,block|
0000a6b0  25 0d 37 f0 12 77 69 6e  25 3d 62 6c 6f 63 6b 25  |%.7..win%=block%|
0000a6c0  21 31 32 0d 37 fa 04 0d  38 04 0f e7 20 72 75 62  |!12.7...8... rub|
0000a6d0  62 65 72 25 20 8c 0d 38  0e 2c 20 77 25 3d 37 35  |ber% ..8., w%=75|
0000a6e0  3a 68 25 3d 37 35 3a 78  25 3d 21 62 6c 6f 63 6b  |:h%=75:x%=!block|
0000a6f0  25 2d 36 3a 79 25 3d 62  6c 6f 63 6b 25 21 34 2d  |%-6:y%=block%!4-|
0000a700  31 32 0d 38 18 05 cc 0d  38 22 41 20 77 25 3d 33  |12.8....8"A w%=3|
0000a710  36 2d 36 2a 28 64 72 61  67 76 61 6c 25 3d 34 39  |6-6*(dragval%=49|
0000a720  29 3a 68 25 3d 34 34 3a  78 25 3d 21 62 6c 6f 63  |):h%=44:x%=!bloc|
0000a730  6b 25 2d 77 25 2f 32 3a  79 25 3d 62 6c 6f 63 6b  |k%-w%/2:y%=block|
0000a740  25 21 34 2d 68 25 2f 32  0d 38 2c 05 cd 0d 38 36  |%!4-h%/2.8,...86|
0000a750  04 0d 38 40 2d f2 77 6f  72 6b 5f 61 72 65 61 5f  |..8@-.work_area_|
0000a760  6f 72 69 67 69 6e 28 68  61 6e 64 6c 65 25 28 67  |origin(handle%(g|
0000a770  61 6d 65 25 29 2c 6f 78  25 2c 6f 79 25 29 0d 38  |ame%),ox%,oy%).8|
0000a780  4a 15 78 25 20 2d 3d 6f  78 25 3a 79 25 20 2d 3d  |J.x% -=ox%:y% -=|
0000a790  6f 79 25 0d 38 54 04 0d  38 5e 2c e7 20 72 75 62  |oy%.8T..8^,. rub|
0000a7a0  62 65 72 25 3d 2d 31 20  80 20 28 79 25 3e 2d 32  |ber%=-1 . (y%>-2|
0000a7b0  36 36 20 84 20 64 72 61  67 79 25 3e 2d 32 36 36  |66 . dragy%>-266|
0000a7c0  29 20 8c 0d 38 68 3f 20  c8 99 22 4f 53 5f 53 70  |) ..8h? .."OS_Sp|
0000a7d0  72 69 74 65 4f 70 22 2c  26 31 33 43 2c 73 61 72  |riteOp",&13C,sar|
0000a7e0  65 61 25 2c 22 62 61 63  6b 74 6f 70 31 22 2c 31  |ea%,"backtop1",1|
0000a7f0  20 b8 20 72 30 25 2c 72  31 25 2c 72 32 25 2c 72  | . r0%,r1%,r2%,r|
0000a800  33 25 0d 38 72 33 20 c8  99 22 4f 53 5f 53 70 72  |3%.8r3 .."OS_Spr|
0000a810  69 74 65 4f 70 22 2c 26  31 33 34 2c 73 61 72 65  |iteOp",&134,sare|
0000a820  61 25 2c 22 74 6f 70 31  22 2c 30 2c 30 2c 30 2c  |a%,"top1",0,0,0,|
0000a830  2d 31 2c 2d 31 0d 38 7c  3f 20 c8 99 22 4f 53 5f  |-1,-1.8|? .."OS_|
0000a840  53 70 72 69 74 65 4f 70  22 2c 26 31 33 34 2c 73  |SpriteOp",&134,s|
0000a850  61 72 65 61 25 2c 22 6d  6f 76 65 31 30 22 2c 78  |area%,"move10",x|
0000a860  25 2d 31 35 30 2c 31 35  30 2b 79 25 2c 38 2c 2d  |%-150,150+y%,8,-|
0000a870  31 2c 2d 31 0d 38 86 30  20 c8 99 22 4f 53 5f 53  |1,-1.8.0 .."OS_S|
0000a880  70 72 69 74 65 4f 70 22  2c 72 30 25 2c 72 31 25  |priteOp",r0%,r1%|
0000a890  2c 72 32 25 2c 72 33 25  3a 66 6c 67 25 3d 2d 31  |,r2%,r3%:flg%=-1|
0000a8a0  3a ef 32 36 0d 38 90 05  cd 0d 38 9a 04 0d 38 a4  |:.26.8....8...8.|
0000a8b0  29 e7 20 94 28 78 25 2d  64 72 61 67 78 25 29 3c  |). .(x%-dragx%)<|
0000a8c0  34 20 80 20 94 28 79 25  2d 64 72 61 67 79 25 29  |4 . .(y%-dragy%)|
0000a8d0  3c 38 20 8c 20 e1 0d 38  ae 04 0d 38 b8 3d e7 20  |<8 . ..8...8.=. |
0000a8e0  78 25 3e 64 72 61 67 78  25 20 8c 20 78 32 25 3d  |x%>dragx% . x2%=|
0000a8f0  78 25 2b 77 25 3a 78 31  25 3d 64 72 61 67 78 25  |x%+w%:x1%=dragx%|
0000a900  20 8b 20 78 32 25 3d 64  72 61 67 78 25 2b 77 25  | . x2%=dragx%+w%|
0000a910  3a 78 31 25 3d 78 25 0d  38 c2 3d e7 20 79 25 3e  |:x1%=x%.8.=. y%>|
0000a920  64 72 61 67 79 25 20 8c  20 79 32 25 3d 79 25 2b  |dragy% . y2%=y%+|
0000a930  68 25 3a 79 31 25 3d 64  72 61 67 79 25 20 8b 20  |h%:y1%=dragy% . |
0000a940  79 32 25 3d 64 72 61 67  79 25 2b 68 25 3a 79 31  |y2%=dragy%+h%:y1|
0000a950  25 3d 79 25 0d 38 cc 17  64 72 61 67 78 25 3d 78  |%=y%.8..dragx%=x|
0000a960  25 3a 64 72 61 67 79 25  3d 79 25 0d 38 d6 3b e7  |%:dragy%=y%.8.;.|
0000a970  20 94 28 69 6e 69 74 78  25 2d 64 72 61 67 78 25  | .(initx%-dragx%|
0000a980  29 3e 31 32 20 84 20 94  28 69 6e 69 74 79 25 2d  |)>12 . .(inity%-|
0000a990  64 72 61 67 79 25 29 3e  31 32 20 8c 20 64 6f 75  |dragy%)>12 . dou|
0000a9a0  62 6c 65 25 3d 30 0d 38  e0 04 0d 38 ea 0f e7 20  |ble%=0.8...8... |
0000a9b0  72 75 62 62 65 72 25 20  8c 0d 38 f4 33 20 63 6f  |rubber% ..8.3 co|
0000a9c0  6e 64 25 3d 2d 28 28 78  32 25 3c 31 37 30 20 84  |nd%=-((x2%<170 .|
0000a9d0  20 78 31 25 3e 32 38 35  29 20 80 20 79 31 25 3e  | x1%>285) . y1%>|
0000a9e0  2d 31 36 35 20 84 20 79  25 3e 30 29 0d 38 fe 25  |-165 . y%>0).8.%|
0000a9f0  20 e7 20 77 69 6e 25 3c  3e 68 61 6e 64 6c 65 25  | . win%<>handle%|
0000aa00  28 67 61 6d 65 25 29 20  8c 20 63 6f 6e 64 25 3d  |(game%) . cond%=|
0000aa10  31 0d 39 08 18 20 ff 22  50 4f 49 4e 54 45 52 20  |1.9.. ."POINTER |
0000aa20  22 2b c3 20 63 6f 6e 64  25 0d 39 12 05 cd 0d 39  |"+. cond%.9....9|
0000aa30  1c 04 0d 39 26 10 e7 20  79 32 25 3e 2d 31 35 30  |...9&.. y2%>-150|
0000aa40  20 8c 0d 39 30 1a 20 e7  20 79 31 25 3e 2d 31 35  | ..90. . y1%>-15|
0000aa50  30 20 8c 20 79 31 25 3d  2d 31 35 30 0d 39 3a 1a  |0 . y1%=-150.9:.|
0000aa60  20 e7 20 79 32 25 3e 2d  31 35 30 20 8c 20 79 32  | . y2%>-150 . y2|
0000aa70  25 3d 2d 31 35 30 0d 39  44 05 cd 0d 39 4e 52 e7  |%=-150.9D...9NR.|
0000aa80  20 ac 28 79 31 25 3d 2d  31 35 30 20 80 20 79 32  | .(y1%=-150 . y2|
0000aa90  25 3d 2d 31 35 30 29 20  8c 20 c8 99 22 57 69 6d  |%=-150) . .."Wim|
0000aaa0  70 5f 46 6f 72 63 65 52  65 64 72 61 77 22 2c 68  |p_ForceRedraw",h|
0000aab0  61 6e 64 6c 65 25 28 67  61 6d 65 25 29 2c 78 31  |andle%(game%),x1|
0000aac0  25 2c 79 31 25 2c 78 32  25 2c 79 32 25 0d 39 58  |%,y1%,x2%,y2%.9X|
0000aad0  04 0d 39 62 0f e7 20 66  6c 67 25 3d 2d 31 20 8c  |..9b.. flg%=-1 .|
0000aae0  0d 39 6c 37 20 66 6c 67  25 3d a4 75 70 64 61 74  |.9l7 flg%=.updat|
0000aaf0  65 5f 77 69 6e 64 6f 77  28 68 61 6e 64 6c 65 25  |e_window(handle%|
0000ab00  28 67 61 6d 65 25 29 2c  31 35 32 2c 2d 31 35 30  |(game%),152,-150|
0000ab10  2c 33 30 30 2c 30 29 0d  39 76 0c 20 c8 95 20 66  |,300,0).9v. .. f|
0000ab20  6c 67 25 0d 39 80 4c 20  20 c8 99 22 4f 53 5f 53  |lg%.9.L  .."OS_S|
0000ab30  70 72 69 74 65 4f 70 22  2c 26 31 33 34 2c 73 61  |priteOp",&134,sa|
0000ab40  72 65 61 25 2c 22 62 61  63 6b 74 6f 70 31 22 2c  |rea%,"backtop1",|
0000ab50  6f 78 25 2b 31 35 30 2c  6f 79 25 2d 31 34 36 2c  |ox%+150,oy%-146,|
0000ab60  30 2c 73 63 61 6c 65 25  2c 74 72 61 6e 73 25 0d  |0,scale%,trans%.|
0000ab70  39 8a 2a 20 20 c8 99 22  57 69 6d 70 5f 47 65 74  |9.*  .."Wimp_Get|
0000ab80  52 65 63 74 61 6e 67 6c  65 22 2c 2c 62 6c 6f 63  |Rectangle",,bloc|
0000ab90  6b 25 20 b8 20 66 6c 67  25 0d 39 94 06 20 ce 0d  |k% . flg%.9.. ..|
0000aba0  39 9e 46 20 e7 20 79 31  25 3c 2d 31 34 36 20 8c  |9.F . y1%<-146 .|
0000abb0  20 c8 99 22 57 69 6d 70  5f 46 6f 72 63 65 52 65  | .."Wimp_ForceRe|
0000abc0  64 72 61 77 22 2c 68 61  6e 64 6c 65 25 28 67 61  |draw",handle%(ga|
0000abd0  6d 65 25 29 2c 78 31 25  2c 79 31 25 2c 78 32 25  |me%),x1%,y1%,x2%|
0000abe0  2c 2d 31 34 36 0d 39 a8  05 cd 0d 39 b2 05 e1 0d  |,-146.9....9....|
0000abf0  39 bc 04 0d 39 c6 04 0d  39 d0 41 dd 20 f2 6e 75  |9...9...9.A. .nu|
0000ac00  6d 62 65 72 5f 70 6f 73  69 74 69 6f 6e 28 49 43  |mber_position(IC|
0000ac10  64 72 61 67 25 2c f8 20  78 25 2c f8 20 59 25 2c  |drag%,. x%,. Y%,|
0000ac20  f8 20 4c 61 79 65 72 25  2c f8 20 64 69 67 25 2c  |. Layer%,. dig%,|
0000ac30  f8 20 66 6c 61 67 25 29  0d 39 da 15 ea 20 73 68  |. flag%).9... sh|
0000ac40  69 66 74 25 3a 73 68 69  66 74 25 3d 30 0d 39 e4  |ift%:shift%=0.9.|
0000ac50  13 e7 20 53 43 66 6f 72  6d 61 74 25 3d 32 20 8c  |.. SCformat%=2 .|
0000ac60  0d 39 ee 12 20 e7 20 64  6f 75 62 6c 65 25 3d 30  |.9.. . double%=0|
0000ac70  20 8c 0d 39 f8 12 20 20  c8 8e 20 49 43 64 72 61  | ..9..  .. ICdra|
0000ac80  67 25 20 ca 0d 3a 02 30  20 20 20 c9 20 31 38 2c  |g% ..:.0   . 18,|
0000ac90  31 39 2c 32 30 2c 32 31  2c 32 32 3a 64 69 67 25  |19,20,21,22:dig%|
0000aca0  3d 49 43 64 72 61 67 25  2d 31 38 3a 4c 61 79 65  |=ICdrag%-18:Laye|
0000acb0  72 25 3d 30 0d 3a 0c 2d  20 20 20 c9 20 32 37 2c  |r%=0.:.-   . 27,|
0000acc0  32 38 2c 32 39 2c 33 30  3a 64 69 67 25 3d 49 43  |28,29,30:dig%=IC|
0000acd0  64 72 61 67 25 2d 32 36  3a 4c 61 79 65 72 25 3d  |drag%-26:Layer%=|
0000ace0  31 0d 3a 16 30 20 20 20  c9 20 33 31 2c 33 32 2c  |1.:.0   . 31,32,|
0000acf0  33 33 2c 33 34 2c 33 35  3a 64 69 67 25 3d 49 43  |33,34,35:dig%=IC|
0000ad00  64 72 61 67 25 2d 33 31  3a 4c 61 79 65 72 25 3d  |drag%-31:Layer%=|
0000ad10  32 0d 3a 20 30 20 20 20  c9 20 33 36 2c 33 37 2c  |2.: 0   . 36,37,|
0000ad20  33 38 2c 33 39 2c 34 30  3a 64 69 67 25 3d 49 43  |38,39,40:dig%=IC|
0000ad30  64 72 61 67 25 2d 33 36  3a 4c 61 79 65 72 25 3d  |drag%-36:Layer%=|
0000ad40  33 0d 3a 2a 2d 20 20 20  c9 20 34 31 2c 34 32 2c  |3.:*-   . 41,42,|
0000ad50  34 33 2c 34 34 3a 64 69  67 25 3d 49 43 64 72 61  |43,44:dig%=ICdra|
0000ad60  67 25 2d 34 31 3a 4c 61  79 65 72 25 3d 34 0d 3a  |g%-41:Layer%=4.:|
0000ad70  34 2d 20 20 20 c9 20 34  35 2c 34 36 2c 34 37 2c  |4-   . 45,46,47,|
0000ad80  34 38 3a 64 69 67 25 3d  49 43 64 72 61 67 25 2d  |48:dig%=ICdrag%-|
0000ad90  34 35 3a 4c 61 79 65 72  25 3d 35 0d 3a 3e 2a 20  |45:Layer%=5.:>* |
0000ada0  20 20 c9 20 34 39 2c 35  30 2c 35 31 3a 64 69 67  |  . 49,50,51:dig|
0000adb0  25 3d 49 43 64 72 61 67  25 2d 34 39 3a 4c 61 79  |%=ICdrag%-49:Lay|
0000adc0  65 72 25 3d 36 0d 3a 48  2a 20 20 20 c9 20 35 32  |er%=6.:H*   . 52|
0000add0  2c 35 33 2c 35 34 3a 64  69 67 25 3d 49 43 64 72  |,53,54:dig%=ICdr|
0000ade0  61 67 25 2d 35 32 3a 4c  61 79 65 72 25 3d 37 0d  |ag%-52:Layer%=7.|
0000adf0  3a 52 27 20 20 20 c9 20  35 35 2c 35 36 3a 64 69  |:R'   . 55,56:di|
0000ae00  67 25 3d 49 43 64 72 61  67 25 2d 35 35 3a 4c 61  |g%=ICdrag%-55:La|
0000ae10  79 65 72 25 3d 38 0d 3a  5c 07 20 20 cb 0d 3a 66  |yer%=8.:\.  ..:f|
0000ae20  1a 20 20 59 25 3d a4 6c  61 79 65 72 59 28 4c 61  |.  Y%=.layerY(La|
0000ae30  79 65 72 25 2c 30 29 0d  3a 70 18 20 20 66 6c 61  |yer%,0).:p.  fla|
0000ae40  67 25 3d 28 49 43 64 72  61 67 25 3e 35 36 29 0d  |g%=(ICdrag%>56).|
0000ae50  3a 7a 06 20 cc 0d 3a 84  36 20 20 e7 20 72 75 62  |:z. ..:.6  . rub|
0000ae60  64 69 67 25 3c 3e 2d 31  20 8c 20 4c 61 79 65 72  |dig%<>-1 . Layer|
0000ae70  25 3d 72 75 62 6c 61 79  65 72 25 20 8b 20 4c 61  |%=rublayer% . La|
0000ae80  79 65 72 25 3d 6c 61 79  65 72 25 0d 3a 8e 27 20  |yer%=layer%.:.' |
0000ae90  20 64 69 67 25 3d 49 43  64 72 61 67 25 3a 59 25  | dig%=ICdrag%:Y%|
0000aea0  3d a4 6c 61 79 65 72 59  28 4c 61 79 65 72 25 2c  |=.layerY(Layer%,|
0000aeb0  30 29 0d 3a 98 06 20 cd  0d 3a a2 15 20 78 25 3d  |0).:.. ..:.. x%=|
0000aec0  a4 64 69 67 78 28 64 69  67 25 2c 30 29 0d 3a ac  |.digx(dig%,0).:.|
0000aed0  05 cc 0d 3a b6 2d 20 64  69 67 25 3d 49 43 64 72  |...:.- dig%=ICdr|
0000aee0  61 67 25 2d 37 35 3a 4c  61 79 65 72 25 3d 30 3a  |ag%-75:Layer%=0:|
0000aef0  59 25 3d a4 6c 61 79 65  72 59 28 35 2c 30 29 0d  |Y%=.layerY(5,0).|
0000af00  3a c0 2a 20 78 25 3d a4  64 69 67 78 28 64 69 67  |:.* x%=.digx(dig|
0000af10  25 2c 2d 31 33 29 3a 66  6c 61 67 25 3d 28 49 43  |%,-13):flag%=(IC|
0000af20  64 72 61 67 25 3c 37 35  29 0d 3a ca 05 cd 0d 3a  |drag%<75).:....:|
0000af30  d4 05 e1 0d 3a de 04 0d  3a e8 04 0d 3a f2 42 dd  |....:...:...:.B.|
0000af40  20 f2 6e 75 6d 62 65 72  5f 70 6f 73 5f 73 74 72  | .number_pos_str|
0000af50  69 6b 65 28 49 43 64 72  61 67 25 2c f8 20 78 25  |ike(ICdrag%,. x%|
0000af60  2c f8 20 59 25 2c f8 20  4c 61 79 65 72 25 2c f8  |,. Y%,. Layer%,.|
0000af70  20 64 69 67 25 2c f8 20  66 6c 67 25 29 0d 3a fc  | dig%,. flg%).:.|
0000af80  10 c8 8e 20 49 43 64 72  61 67 25 20 ca 0d 3b 06  |... ICdrag% ..;.|
0000af90  2b 20 c9 20 32 33 2c 32  34 2c 32 35 2c 32 36 3a  |+ . 23,24,25,26:|
0000afa0  64 69 67 25 3d 49 43 64  72 61 67 25 2d 32 32 3a  |dig%=ICdrag%-22:|
0000afb0  4c 61 79 65 72 25 3d 30  0d 3b 10 2b 20 c9 20 33  |Layer%=0.;.+ . 3|
0000afc0  32 2c 33 33 2c 33 34 2c  33 35 3a 64 69 67 25 3d  |2,33,34,35:dig%=|
0000afd0  49 43 64 72 61 67 25 2d  33 31 3a 4c 61 79 65 72  |ICdrag%-31:Layer|
0000afe0  25 3d 32 0d 3b 1a 28 20  c9 20 34 32 2c 34 33 2c  |%=2.;.( . 42,43,|
0000aff0  34 34 3a 64 69 67 25 3d  49 43 64 72 61 67 25 2d  |44:dig%=ICdrag%-|
0000b000  34 31 3a 4c 61 79 65 72  25 3d 34 0d 3b 24 25 20  |41:Layer%=4.;$% |
0000b010  c9 20 35 30 2c 35 31 3a  64 69 67 25 3d 49 43 64  |. 50,51:dig%=ICd|
0000b020  72 61 67 25 2d 34 39 3a  4c 61 79 65 72 25 3d 36  |rag%-49:Layer%=6|
0000b030  0d 3b 2e 05 7f 0d 3b 38  0c 20 66 6c 67 25 3d 2d  |.;....;8. flg%=-|
0000b040  31 0d 3b 42 05 cb 0d 3b  4c 04 0d 3b 56 14 78 25  |1.;B...;L..;V.x%|
0000b050  3d a4 64 69 67 78 28 64  69 67 25 2c 30 29 0d 3b  |=.digx(dig%,0).;|
0000b060  60 19 59 25 3d a4 6c 61  79 65 72 59 28 4c 61 79  |`.Y%=.layerY(Lay|
0000b070  65 72 25 2c 2d 31 29 0d  3b 6a 05 e1 0d 3b 74 04  |er%,-1).;j...;t.|
0000b080  0d 3b 7e 04 0d 3b 88 1c  dd 20 f2 70 6c 61 63 65  |.;~..;... .place|
0000b090  5f 73 74 72 69 6b 65 28  49 43 64 72 61 67 25 29  |_strike(ICdrag%)|
0000b0a0  0d 3b 92 1c ea 20 78 25  2c 59 25 2c 4c 61 79 65  |.;... x%,Y%,Laye|
0000b0b0  72 25 2c 64 69 67 25 2c  66 6c 67 25 0d 3b 9c 16  |r%,dig%,flg%.;..|
0000b0c0  e7 20 64 72 61 67 76 61  6c 25 3c 3e 34 39 20 8c  |. dragval%<>49 .|
0000b0d0  20 e1 0d 3b a6 49 c8 99  22 57 69 6d 70 5f 46 6f  | ..;.I.."Wimp_Fo|
0000b0e0  72 63 65 52 65 64 72 61  77 22 2c 68 61 6e 64 6c  |rceRedraw",handl|
0000b0f0  65 25 28 67 61 6d 65 25  29 2c 64 72 61 67 78 25  |e%(game%),dragx%|
0000b100  2c 64 72 61 67 79 25 2c  64 72 61 67 78 25 2b 35  |,dragy%,dragx%+5|
0000b110  38 2c 64 72 61 67 79 25  2b 35 38 0d 3b b0 2d f2  |8,dragy%+58.;.-.|
0000b120  77 6f 72 6b 5f 61 72 65  61 5f 6f 72 69 67 69 6e  |work_area_origin|
0000b130  28 68 61 6e 64 6c 65 25  28 67 61 6d 65 25 29 2c  |(handle%(game%),|
0000b140  6f 78 25 2c 6f 79 25 29  0d 3b ba 36 f2 6e 75 6d  |ox%,oy%).;.6.num|
0000b150  62 65 72 5f 70 6f 73 5f  73 74 72 69 6b 65 28 49  |ber_pos_strike(I|
0000b160  43 64 72 61 67 25 2c 78  25 2c 59 25 2c 4c 61 79  |Cdrag%,x%,Y%,Lay|
0000b170  65 72 25 2c 64 69 67 25  2c 66 6c 67 25 29 0d 3b  |er%,dig%,flg%).;|
0000b180  c4 36 e7 20 4c 61 79 65  72 25 3e 30 20 80 20 64  |.6. Layer%>0 . d|
0000b190  69 67 61 6e 73 24 28 4c  61 79 65 72 25 2c 64 69  |igans$(Layer%,di|
0000b1a0  67 25 29 3d 22 22 20 84  20 66 6c 67 25 3d 2d 31  |g%)="" . flg%=-1|
0000b1b0  20 8c 20 e1 0d 3b ce 1d  73 74 72 69 6b 65 25 28  | . ..;..strike%(|
0000b1c0  4c 61 79 65 72 25 2f 32  2c 64 69 67 25 29 3d 2d  |Layer%/2,dig%)=-|
0000b1d0  31 0d 3b d8 2b 64 72 61  67 25 3d 30 3a 64 72 61  |1.;.+drag%=0:dra|
0000b1e0  67 78 25 3d 30 3a 64 72  61 67 79 25 3d 2d 38 32  |gx%=0:dragy%=-82|
0000b1f0  35 3a 64 72 61 67 76 61  6c 25 3d 30 0d 3b e2 49  |5:dragval%=0.;.I|
0000b200  c8 99 22 57 69 6d 70 5f  46 6f 72 63 65 52 65 64  |.."Wimp_ForceRed|
0000b210  72 61 77 22 2c 68 61 6e  64 6c 65 25 28 67 61 6d  |raw",handle%(gam|
0000b220  65 25 29 2c 78 25 2c 59  25 2c 78 25 2b 35 38 2c  |e%),x%,Y%,x%+58,|
0000b230  59 25 2b 35 38 3a f4 20  43 75 72 72 65 6e 74 20  |Y%+58:. Current |
0000b240  64 69 67 69 74 0d 3b ec  05 e1 0d 3b f6 04 0d 3c  |digit.;....;...<|
0000b250  00 04 0d 3c 0a 1f dd 20  f2 70 6c 61 63 65 5f 72  |...<... .place_r|
0000b260  65 6d 61 69 6e 64 65 72  28 49 43 64 72 61 67 25  |emainder(ICdrag%|
0000b270  29 0d 3c 14 1c ea 20 64  69 67 25 2c 78 25 2c 79  |).<... dig%,x%,y|
0000b280  25 2c 4c 61 79 65 72 25  2c 66 6c 67 25 0d 3c 1e  |%,Layer%,flg%.<.|
0000b290  15 e7 20 53 43 66 6f 72  6d 61 74 25 3d 31 20 8c  |.. SCformat%=1 .|
0000b2a0  20 e1 0d 3c 28 40 e7 20  4d 66 6c 67 25 3d 2d 31  | ..<(@. Mflg%=-1|
0000b2b0  20 80 20 48 65 6c 70 6c  65 76 25 3c 35 20 80 20  | . Helplev%<5 . |
0000b2c0  6d 6f 64 65 25 28 4e 61  6d 65 4e 6f 25 29 3d 31  |mode%(NameNo%)=1|
0000b2d0  20 8c 20 f2 72 65 6d 6f  76 65 5f 6d 65 73 73 61  | . .remove_messa|
0000b2e0  67 65 0d 3c 32 23 64 69  67 25 3d 49 43 64 72 61  |ge.<2#dig%=ICdra|
0000b2f0  67 25 2d 38 31 3a 79 25  3d a4 6c 61 79 65 72 59  |g%-81:y%=.layerY|
0000b300  28 30 2c 30 29 0d 3c 3c  15 78 25 3d a4 64 69 67  |(0,0).<<.x%=.dig|
0000b310  78 28 64 69 67 25 2c 2d  33 29 0d 3c 46 4e e7 20  |x(dig%,-3).<FN. |
0000b320  6d 6f 64 65 25 28 4e 61  6d 65 4e 6f 25 29 3d 31  |mode%(NameNo%)=1|
0000b330  20 80 20 48 65 6c 70 6c  65 76 25 3e 32 20 80 20  | . Helplev%>2 . |
0000b340  28 64 69 67 25 2d 33 3c  3e 6e 65 78 74 64 69 67  |(dig%-3<>nextdig|
0000b350  25 20 80 20 64 6f 6e 65  52 24 28 64 69 67 25 29  |% . doneR$(dig%)|
0000b360  3d 22 22 29 20 8c 20 e1  0d 3c 50 49 c8 99 22 57  |="") . ..<PI.."W|
0000b370  69 6d 70 5f 46 6f 72 63  65 52 65 64 72 61 77 22  |imp_ForceRedraw"|
0000b380  2c 68 61 6e 64 6c 65 25  28 67 61 6d 65 25 29 2c  |,handle%(game%),|
0000b390  64 72 61 67 78 25 2c 64  72 61 67 79 25 2c 64 72  |dragx%,dragy%,dr|
0000b3a0  61 67 78 25 2b 35 38 2c  64 72 61 67 79 25 2b 35  |agx%+58,dragy%+5|
0000b3b0  38 0d 3c 5a 2a 64 72 61  67 78 25 3d 30 3a 64 72  |8.<Z*dragx%=0:dr|
0000b3c0  61 67 79 25 3d 2d 39 35  30 3a 64 72 61 67 25 3d  |agy%=-950:drag%=|
0000b3d0  30 3a 64 6f 75 62 6c 65  25 3d 30 0d 3c 64 04 0d  |0:double%=0.<d..|
0000b3e0  3c 6e 2a 72 65 6d 24 28  64 69 67 25 29 3d c3 20  |<n*rem$(dig%)=. |
0000b3f0  64 72 61 67 76 61 6c 25  3a 64 6f 6e 65 52 24 28  |dragval%:doneR$(|
0000b400  64 69 67 25 29 3d 22 64  22 0d 3c 78 21 72 65 6d  |dig%)="d".<x!rem|
0000b410  61 69 6e 64 65 72 25 3d  bb 28 72 65 6d 24 28 31  |ainder%=.(rem$(1|
0000b420  29 2b 72 65 6d 24 28 30  29 29 0d 3c 82 0e 64 72  |)+rem$(0)).<..dr|
0000b430  61 67 76 61 6c 25 3d 30  0d 3c 8c 04 0d 3c 96 39  |agval%=0.<...<.9|
0000b440  c8 99 22 57 69 6d 70 5f  46 6f 72 63 65 52 65 64  |.."Wimp_ForceRed|
0000b450  72 61 77 22 2c 68 61 6e  64 6c 65 25 28 67 61 6d  |raw",handle%(gam|
0000b460  65 25 29 2c 78 25 2c 79  25 2c 78 25 2b 35 38 2c  |e%),x%,y%,x%+58,|
0000b470  79 25 2b 35 38 0d 3c a0  04 0d 3c aa 18 e7 20 6d  |y%+58.<...<... m|
0000b480  6f 64 65 25 28 4e 61 6d  65 4e 6f 25 29 3d 31 20  |ode%(NameNo%)=1 |
0000b490  8c 0d 3c b4 23 20 e7 20  64 69 67 25 2d 33 3d 6e  |..<.# . dig%-3=n|
0000b4a0  65 78 74 64 69 67 25 20  80 20 6c 61 79 65 72 25  |extdig% . layer%|
0000b4b0  3d 30 20 8c 0d 3c be 07  20 20 f5 0d 3c c8 0d 20  |=0 ..<..  ..<.. |
0000b4c0  20 20 66 6c 67 25 3d 30  0d 3c d2 0f 20 20 20 f2  |  flg%=0.<..   .|
0000b4d0  72 65 6d 5f 62 6f 78 0d  3c dc 50 20 20 20 e7 20  |rem_box.<.P   . |
0000b4e0  44 69 76 54 79 70 65 25  3d 31 20 80 20 6c 61 79  |DivType%=1 . lay|
0000b4f0  65 72 25 3d 30 20 8c 20  e7 20 6e 65 78 74 64 69  |er%=0 . . nextdi|
0000b500  67 25 3c 30 20 80 20 64  6f 6e 65 52 24 28 33 2b  |g%<0 . doneR$(3+|
0000b510  6e 65 78 74 64 69 67 25  29 3d 22 64 22 20 8c 20  |nextdig%)="d" . |
0000b520  66 6c 67 25 3d 2d 31 0d  3c e6 0e 20 20 fd 20 66  |flg%=-1.<..  . f|
0000b530  6c 67 25 3d 30 0d 3c f0  06 20 cd 0d 3c fa 04 0d  |lg%=0.<.. ..<...|
0000b540  3d 04 25 20 e7 20 64 69  67 25 2d 33 3d 72 75 62  |=.% . dig%-3=rub|
0000b550  64 69 67 25 20 80 20 72  75 62 6c 61 79 65 72 25  |dig% . rublayer%|
0000b560  3d 30 20 8c 0d 3d 0e 1b  20 20 72 75 62 64 69 67  |=0 ..=..  rubdig|
0000b570  25 3d a4 63 68 65 63 6b  5f 72 75 62 6f 75 74 0d  |%=.check_rubout.|
0000b580  3d 18 06 20 cd 0d 3d 22  7b 20 e7 20 74 72 79 25  |=.. ..="{ . try%|
0000b590  3e 30 20 80 20 72 75 62  64 69 67 25 3d 2d 31 20  |>0 . rubdig%=-1 |
0000b5a0  80 20 44 69 76 54 79 70  65 25 3d 31 20 80 20 ac  |. DivType%=1 . .|
0000b5b0  28 6e 65 78 74 65 72 72  25 3d 61 6e 73 6c 69 6d  |(nexterr%=anslim|
0000b5c0  25 28 6c 61 79 65 72 6c  69 6d 25 29 2b 31 20 80  |%(layerlim%)+1 .|
0000b5d0  20 6e 65 78 74 65 72 72  4c 25 3d 6c 61 79 65 72  | nexterrL%=layer|
0000b5e0  6c 69 6d 25 29 20 8c 20  6e 65 78 74 65 72 72 25  |lim%) . nexterr%|
0000b5f0  20 2d 3d 31 3a f2 66 69  6e 64 5f 65 72 72 6f 72  | -=1:.find_error|
0000b600  0d 3d 2c 50 20 e7 20 72  75 62 64 69 67 25 3c 3e  |.=,P . rubdig%<>|
0000b610  2d 31 20 8c 20 64 69 67  25 3d 72 75 62 64 69 67  |-1 . dig%=rubdig|
0000b620  25 3a 4c 61 79 65 72 25  3d 72 75 62 6c 61 79 65  |%:Layer%=rublaye|
0000b630  72 25 20 8b 20 64 69 67  25 3d 6e 65 78 74 64 69  |r% . dig%=nextdi|
0000b640  67 25 3a 4c 61 79 65 72  25 3d 6c 61 79 65 72 25  |g%:Layer%=layer%|
0000b650  0d 3d 36 21 20 f2 64 69  67 69 74 5f 72 65 64 72  |.=6! .digit_redr|
0000b660  61 77 28 4c 61 79 65 72  25 2c 64 69 67 25 2c 30  |aw(Layer%,dig%,0|
0000b670  29 0d 3d 40 05 cd 0d 3d  4a 87 6e 65 78 74 6d 65  |).=@...=J.nextme|
0000b680  73 73 25 3d 2d 28 6d 6f  64 65 25 28 4e 61 6d 65  |ss%=-(mode%(Name|
0000b690  4e 6f 25 29 3d 31 20 80  20 48 65 6c 70 6c 65 76  |No%)=1 . Helplev|
0000b6a0  25 3d 35 20 80 20 28 28  6e 65 78 74 64 69 67 25  |%=5 . ((nextdig%|
0000b6b0  3c 3e 2d 31 20 80 20 44  69 76 54 79 70 65 25 3d  |<>-1 . DivType%=|
0000b6c0  30 20 84 20 6e 65 78 74  64 69 67 25 3c 61 6e 73  |0 . nextdig%<ans|
0000b6d0  6c 69 6d 25 28 6c 61 79  65 72 6c 69 6d 25 29 20  |lim%(layerlim%) |
0000b6e0  80 20 44 69 76 54 79 70  65 25 3d 31 29 20 84 20  |. DivType%=1) . |
0000b6f0  72 75 62 64 69 67 25 3c  3e 2d 31 29 29 0d 3d 54  |rubdig%<>-1)).=T|
0000b700  05 e1 0d 3d 5e 04 0d 3d  68 04 0d 3d 72 1c dd 20  |...=^..=h..=r.. |
0000b710  f2 70 6c 61 63 65 5f 6e  75 6d 62 65 72 28 49 43  |.place_number(IC|
0000b720  64 72 61 67 25 29 0d 3d  7c 42 ea 20 78 25 2c 79  |drag%).=|B. x%,y|
0000b730  25 2c 59 25 2c 64 69 67  25 2c 4d 6f 64 65 25 2c  |%,Y%,dig%,Mode%,|
0000b740  66 6c 67 25 2c 66 6c 67  32 25 2c 79 6c 65 76 25  |flg%,flg2%,ylev%|
0000b750  2c 4c 61 79 65 72 25 2c  44 74 79 70 65 25 2c 44  |,Layer%,Dtype%,D|
0000b760  69 67 25 2c 4c 61 79 25  0d 3d 86 13 44 74 79 70  |ig%,Lay%.=..Dtyp|
0000b770  65 25 3d 44 69 76 54 79  70 65 25 0d 3d 90 2c e7  |e%=DivType%.=.,.|
0000b780  20 64 72 61 67 76 61 6c  25 3d 34 39 20 8c 20 f2  | dragval%=49 . .|
0000b790  70 6c 61 63 65 5f 73 74  72 69 6b 65 28 49 43 64  |place_strike(ICd|
0000b7a0  72 61 67 25 29 3a e1 0d  3d 9a 2a 4d 6f 64 65 25  |rag%):..=.*Mode%|
0000b7b0  3d 28 6d 6f 64 65 25 28  4e 61 6d 65 4e 6f 25 29  |=(mode%(NameNo%)|
0000b7c0  3d 31 20 80 20 53 43 66  6f 72 6d 61 74 25 3d 32  |=1 . SCformat%=2|
0000b7d0  29 0d 3d a4 1b 79 6c 65  76 25 3d a4 6c 61 79 65  |).=..ylev%=.laye|
0000b7e0  72 59 28 6c 61 79 65 72  25 2c 30 29 0d 3d ae 0d  |rY(layer%,0).=..|
0000b7f0  63 68 65 63 6b 25 3d 2d  31 0d 3d b8 49 c8 99 22  |check%=-1.=.I.."|
0000b800  57 69 6d 70 5f 46 6f 72  63 65 52 65 64 72 61 77  |Wimp_ForceRedraw|
0000b810  22 2c 68 61 6e 64 6c 65  25 28 67 61 6d 65 25 29  |",handle%(game%)|
0000b820  2c 64 72 61 67 78 25 2c  64 72 61 67 79 25 2c 64  |,dragx%,dragy%,d|
0000b830  72 61 67 78 25 2b 35 38  2c 64 72 61 67 79 25 2b  |ragx%+58,dragy%+|
0000b840  35 38 0d 3d c2 2d e7 20  4d 66 6c 67 25 3d 2d 31  |58.=.-. Mflg%=-1|
0000b850  20 80 20 48 65 6c 70 6c  65 76 25 3c 35 20 8c 20  | . Helplev%<5 . |
0000b860  f2 72 65 6d 6f 76 65 5f  6d 65 73 73 61 67 65 0d  |.remove_message.|
0000b870  3d cc 2d f2 77 6f 72 6b  5f 61 72 65 61 5f 6f 72  |=.-.work_area_or|
0000b880  69 67 69 6e 28 68 61 6e  64 6c 65 25 28 67 61 6d  |igin(handle%(gam|
0000b890  65 25 29 2c 6f 78 25 2c  6f 79 25 29 0d 3d d6 04  |e%),ox%,oy%).=..|
0000b8a0  0d 3d e0 34 f2 6e 75 6d  62 65 72 5f 70 6f 73 69  |.=.4.number_posi|
0000b8b0  74 69 6f 6e 28 49 43 64  72 61 67 25 2c 78 25 2c  |tion(ICdrag%,x%,|
0000b8c0  59 25 2c 4c 61 79 65 72  25 2c 64 69 67 25 2c 66  |Y%,Layer%,dig%,f|
0000b8d0  6c 67 25 29 0d 3d ea 0e  e7 20 66 6c 67 25 20 8c  |lg%).=... flg% .|
0000b8e0  20 e1 0d 3d f4 04 0d 3d  fe 0a 66 6c 67 25 3d 30  | ..=...=..flg%=0|
0000b8f0  0d 3e 08 30 e7 20 64 69  67 25 3d 6e 65 78 74 64  |.>.0. dig%=nextd|
0000b900  69 67 25 20 80 20 63 61  72 72 79 25 3d 2d 31 20  |ig% . carry%=-1 |
0000b910  80 20 48 65 6c 70 6c 65  76 25 3e 33 20 8c 20 e1  |. Helplev%>3 . .|
0000b920  0d 3e 12 66 e7 20 4d 6f  64 65 25 3d 2d 31 20 80  |.>.f. Mode%=-1 .|
0000b930  20 48 65 6c 70 6c 65 76  25 3e 32 20 80 20 53 43  | Helplev%>2 . SC|
0000b940  66 6f 72 6d 61 74 25 3d  32 20 80 20 ac 28 64 69  |format%=2 . .(di|
0000b950  67 25 3d 6e 65 78 74 64  69 67 25 20 80 20 4c 61  |g%=nextdig% . La|
0000b960  79 65 72 25 3d 6c 61 79  65 72 25 29 20 80 20 64  |yer%=layer%) . d|
0000b970  6f 6e 65 24 28 4c 61 79  65 72 25 2c 64 69 67 25  |one$(Layer%,dig%|
0000b980  29 3d 22 22 20 8c 0d 3e  1c 13 20 f2 6d 65 73 73  |)="" ..>.. .mess|
0000b990  61 67 65 28 22 70 6c 22  29 0d 3e 26 0c 20 66 6c  |age("pl").>&. fl|
0000b9a0  67 25 3d 2d 31 0d 3e 30  05 cd 0d 3e 3a 0e e7 20  |g%=-1.>0...>:.. |
0000b9b0  66 6c 67 25 20 8c 20 e1  0d 3e 44 04 0d 3e 4e 50  |flg% . ..>D..>NP|
0000b9c0  e7 20 4d 6f 64 65 25 3d  30 20 80 20 53 43 66 6f  |. Mode%=0 . SCfo|
0000b9d0  72 6d 61 74 25 3d 32 20  80 20 28 64 69 67 25 3e  |rmat%=2 . (dig%>|
0000b9e0  a4 61 6e 73 77 65 72 5f  6c 69 6d 69 74 28 6e 75  |.answer_limit(nu|
0000b9f0  6d 31 25 29 20 84 20 4c  61 79 65 72 25 3e 6c 61  |m1%) . Layer%>la|
0000ba00  79 65 72 6c 69 6d 25 29  20 8c 20 e1 0d 3e 58 04  |yerlim%) . ..>X.|
0000ba10  0d 3e 62 3d e7 20 4d 6f  64 65 25 3d 2d 31 20 80  |.>b=. Mode%=-1 .|
0000ba20  20 48 65 6c 70 6c 65 76  25 3d 35 20 80 20 a4 63  | Helplev%=5 . .c|
0000ba30  68 65 63 6b 5f 64 69 67  5f 76 61 6c 28 4c 61 79  |heck_dig_val(Lay|
0000ba40  65 72 25 2c 64 69 67 25  29 3d 30 20 8c 0d 3e 6c  |er%,dig%)=0 ..>l|
0000ba50  4b 20 e7 20 72 75 62 64  69 67 25 3d 2d 31 20 8c  |K . rubdig%=-1 .|
0000ba60  20 44 69 67 25 3d 6e 65  78 74 64 69 67 25 3a 4c  | Dig%=nextdig%:L|
0000ba70  61 79 25 3d 6c 61 79 65  72 25 20 8b 20 44 69 67  |ay%=layer% . Dig|
0000ba80  25 3d 72 75 62 64 69 67  25 3a 4c 61 79 25 3d 72  |%=rubdig%:Lay%=r|
0000ba90  75 62 6c 61 79 65 72 25  0d 3e 76 40 20 e7 20 44  |ublayer%.>v@ . D|
0000baa0  69 67 25 3d 64 69 67 25  20 80 20 4c 61 79 25 3d  |ig%=dig% . Lay%=|
0000bab0  4c 61 79 65 72 25 20 8c  20 f2 6d 65 73 73 61 67  |Layer% . .messag|
0000bac0  65 28 22 63 6b 22 29 20  8b 20 f2 6d 65 73 73 61  |e("ck") . .messa|
0000bad0  67 65 28 22 70 72 22 29  0d 3e 80 0c 20 66 6c 67  |ge("pr").>.. flg|
0000bae0  25 3d 2d 31 0d 3e 8a 05  cd 0d 3e 94 0e e7 20 66  |%=-1.>....>... f|
0000baf0  6c 67 25 20 8c 20 e1 0d  3e 9e 04 0d 3e a8 2a 64  |lg% . ..>...>.*d|
0000bb00  72 61 67 78 25 3d 30 3a  64 72 61 67 79 25 3d 2d  |ragx%=0:dragy%=-|
0000bb10  38 32 35 3a 64 72 61 67  25 3d 30 3a 64 6f 75 62  |825:drag%=0:doub|
0000bb20  6c 65 25 3d 30 0d 3e b2  04 0d 3e bc 51 e7 20 64  |le%=0.>...>.Q. d|
0000bb30  69 67 61 6e 73 24 28 4c  61 79 65 72 25 2c 64 69  |igans$(Layer%,di|
0000bb40  67 25 29 3c 3e 22 22 20  8c 20 64 69 67 61 6e 73  |g%)<>"" . digans|
0000bb50  25 28 4c 61 79 65 72 25  29 20 2d 3d bb 20 64 69  |%(Layer%) -=. di|
0000bb60  67 61 6e 73 24 28 4c 61  79 65 72 25 2c 64 69 67  |gans$(Layer%,dig|
0000bb70  25 29 2a 31 30 5e 64 69  67 25 0d 3e c6 46 64 69  |%)*10^dig%.>.Fdi|
0000bb80  67 61 6e 73 24 28 4c 61  79 65 72 25 2c 64 69 67  |gans$(Layer%,dig|
0000bb90  25 29 3d c3 20 64 72 61  67 76 61 6c 25 3a 64 69  |%)=. dragval%:di|
0000bba0  67 61 6e 73 25 28 4c 61  79 65 72 25 29 20 2b 3d  |gans%(Layer%) +=|
0000bbb0  64 72 61 67 76 61 6c 25  2a 31 30 5e 64 69 67 25  |dragval%*10^dig%|
0000bbc0  0d 3e d0 04 0d 3e da 25  64 72 61 67 76 61 6c 25  |.>...>.%dragval%|
0000bbd0  3d 30 3a 64 6f 6e 65 24  28 4c 61 79 65 72 25 2c  |=0:done$(Layer%,|
0000bbe0  64 69 67 25 29 3d 22 64  22 0d 3e e4 49 c8 99 22  |dig%)="d".>.I.."|
0000bbf0  57 69 6d 70 5f 46 6f 72  63 65 52 65 64 72 61 77  |Wimp_ForceRedraw|
0000bc00  22 2c 68 61 6e 64 6c 65  25 28 67 61 6d 65 25 29  |",handle%(game%)|
0000bc10  2c 78 25 2c 59 25 2c 78  25 2b 35 38 2c 59 25 2b  |,x%,Y%,x%+58,Y%+|
0000bc20  35 38 3a f4 20 43 75 72  72 65 6e 74 20 64 69 67  |58:. Current dig|
0000bc30  69 74 0d 3e ee 04 0d 3e  f8 10 e7 20 4d 6f 64 65  |it.>...>... Mode|
0000bc40  25 3d 2d 31 20 8c 0d 3f  02 26 20 e7 20 64 69 67  |%=-1 ..?.& . dig|
0000bc50  25 3d 6e 65 78 74 64 69  67 25 20 80 20 6c 61 79  |%=nextdig% . lay|
0000bc60  65 72 25 3d 4c 61 79 65  72 25 20 8c 0d 3f 0c 07  |er%=Layer% ..?..|
0000bc70  20 20 f5 0d 3f 16 0d 20  20 20 66 6c 67 25 3d 30  |  ..?..   flg%=0|
0000bc80  0d 3f 20 55 20 20 20 e7  20 44 74 79 70 65 25 3d  |.? U   . Dtype%=|
0000bc90  30 20 8c 20 f2 62 6f 78  5f 70 6f 73 69 74 69 6f  |0 . .box_positio|
0000bca0  6e 31 20 8b 20 f2 62 6f  78 5f 70 6f 73 69 74 69  |n1 . .box_positi|
0000bcb0  6f 6e 32 28 6e 65 78 74  64 69 67 25 2c 6c 61 79  |on2(nextdig%,lay|
0000bcc0  65 72 25 2c 4c 63 75 72  72 65 6e 74 25 2c 4c 74  |er%,Lcurrent%,Lt|
0000bcd0  79 70 65 25 29 0d 3f 2a  16 20 20 20 e7 20 6e 65  |ype%).?*.   . ne|
0000bce0  78 74 64 69 67 25 3e 3d  30 20 8c 0d 3f 34 29 20  |xtdig%>=0 ..?4) |
0000bcf0  20 20 20 66 6c 67 25 3d  28 64 6f 6e 65 24 28 6c  |   flg%=(done$(l|
0000bd00  61 79 65 72 25 2c 6e 65  78 74 64 69 67 25 29 3d  |ayer%,nextdig%)=|
0000bd10  22 64 22 29 0d 3f 3e 08  20 20 20 cc 0d 3f 48 0a  |"d").?>.   ..?H.|
0000bd20  20 20 20 20 20 f5 0d 3f  52 38 20 20 20 20 20 20  |     ..?R8      |
0000bd30  e7 20 6e 65 78 74 64 69  67 25 3c 2d 31 20 8c 20  |. nextdig%<-1 . |
0000bd40  66 6c 67 32 25 3d 28 64  6f 6e 65 52 24 28 6e 65  |flg2%=(doneR$(ne|
0000bd50  78 74 64 69 67 25 2b 33  29 3d 22 64 22 29 0d 3f  |xtdig%+3)="d").?|
0000bd60  5c 1c 20 20 20 20 20 20  e7 20 66 6c 67 32 25 20  |\.      . flg2% |
0000bd70  8c 20 f2 72 65 6d 5f 62  6f 78 0d 3f 66 41 20 20  |. .rem_box.?fA  |
0000bd80  20 20 20 fd 20 66 6c 67  32 25 3d 30 20 84 20 6c  |   . flg2%=0 . l|
0000bd90  61 79 65 72 25 3e 30 20  80 20 44 74 79 70 65 25  |ayer%>0 . Dtype%|
0000bda0  3d 31 20 84 20 6e 65 78  74 64 69 67 25 3d 2d 31  |=1 . nextdig%=-1|
0000bdb0  20 80 20 44 74 79 70 65  25 3d 30 0d 3f 70 08 20  | . Dtype%=0.?p. |
0000bdc0  20 20 cd 0d 3f 7a 0e 20  20 fd 20 66 6c 67 25 3d  |  ..?z.  . flg%=|
0000bdd0  30 0d 3f 84 06 20 cd 0d  3f 8e 04 0d 3f 98 3f 20  |0.?.. ..?...?.? |
0000bde0  e7 20 72 75 62 64 69 67  25 3d 2d 31 20 80 20 44  |. rubdig%=-1 . D|
0000bdf0  74 79 70 65 25 3d 30 20  80 20 6e 65 78 74 64 69  |type%=0 . nextdi|
0000be00  67 25 3e 2d 31 20 80 20  64 69 67 25 3c 3d 61 6e  |g%>-1 . dig%<=an|
0000be10  73 6c 69 6d 25 28 30 29  20 8c 0d 3f a2 33 20 20  |slim%(0) ..?.3  |
0000be20  e7 20 63 61 72 5f 64 69  67 25 28 6e 65 78 74 64  |. car_dig%(nextd|
0000be30  69 67 25 29 3e 30 20 8c  20 63 61 72 72 79 25 3d  |ig%)>0 . carry%=|
0000be40  2d 31 20 8b 20 63 61 72  72 79 25 3d 30 0d 3f ac  |-1 . carry%=0.?.|
0000be50  06 20 cd 0d 3f b6 04 0d  3f c0 28 20 e7 20 64 69  |. ..?...?.( . di|
0000be60  67 25 3d 72 75 62 64 69  67 25 20 80 20 72 75 62  |g%=rubdig% . rub|
0000be70  6c 61 79 65 72 25 3d 4c  61 79 65 72 25 20 8c 0d  |layer%=Layer% ..|
0000be80  3f ca 1b 20 20 72 75 62  64 69 67 25 3d a4 63 68  |?..  rubdig%=.ch|
0000be90  65 63 6b 5f 72 75 62 6f  75 74 0d 3f d4 06 20 cd  |eck_rubout.?.. .|
0000bea0  0d 3f de 55 20 e7 20 74  72 79 25 3e 30 20 80 20  |.?.U . try%>0 . |
0000beb0  72 75 62 64 69 67 25 3d  2d 31 20 80 20 ac 28 6e  |rubdig%=-1 . .(n|
0000bec0  65 78 74 65 72 72 25 3d  61 6e 73 6c 69 6d 25 28  |exterr%=anslim%(|
0000bed0  6c 61 79 65 72 6c 69 6d  25 29 2b 31 20 80 20 6e  |layerlim%)+1 . n|
0000bee0  65 78 74 65 72 72 4c 25  3d 6c 61 79 65 72 6c 69  |exterrL%=layerli|
0000bef0  6d 25 29 20 8c 0d 3f e8  45 20 20 e7 20 44 74 79  |m%) ..?.E  . Dty|
0000bf00  70 65 25 3d 31 20 8c 20  f2 62 6f 78 5f 70 6f 73  |pe%=1 . .box_pos|
0000bf10  69 74 69 6f 6e 32 28 6e  65 78 74 65 72 72 25 2c  |ition2(nexterr%,|
0000bf20  6e 65 78 74 65 72 72 4c  25 2c 4c 63 75 72 72 32  |nexterrL%,Lcurr2|
0000bf30  25 2c 4c 74 79 70 65 32  25 29 0d 3f f2 11 20 20  |%,Ltype2%).?..  |
0000bf40  f2 66 69 6e 64 5f 65 72  72 6f 72 0d 3f fc 06 20  |.find_error.?.. |
0000bf50  cd 0d 40 06 04 0d 40 10  50 20 e7 20 72 75 62 64  |..@...@.P . rubd|
0000bf60  69 67 25 3c 3e 2d 31 20  8c 20 64 69 67 25 3d 72  |ig%<>-1 . dig%=r|
0000bf70  75 62 64 69 67 25 3a 4c  61 79 65 72 25 3d 72 75  |ubdig%:Layer%=ru|
0000bf80  62 6c 61 79 65 72 25 20  8b 20 64 69 67 25 3d 6e  |blayer% . dig%=n|
0000bf90  65 78 74 64 69 67 25 3a  4c 61 79 65 72 25 3d 6c  |extdig%:Layer%=l|
0000bfa0  61 79 65 72 25 0d 40 1a  40 20 f2 64 69 67 69 74  |ayer%.@.@ .digit|
0000bfb0  5f 72 65 64 72 61 77 28  4c 61 79 65 72 25 2c 64  |_redraw(Layer%,d|
0000bfc0  69 67 25 2c 63 61 72 72  79 25 2a 28 48 65 6c 70  |ig%,carry%*(Help|
0000bfd0  6c 65 76 25 3e 33 20 80  20 72 75 62 64 69 67 25  |lev%>3 . rubdig%|
0000bfe0  3d 2d 31 29 29 0d 40 24  05 cd 0d 40 2e 04 0d 40  |=-1)).@$...@...@|
0000bff0  38 7d 6e 65 78 74 6d 65  73 73 25 3d 2d 28 48 65  |8}nextmess%=-(He|
0000c000  6c 70 6c 65 76 25 3d 35  20 80 20 4d 6f 64 65 25  |lplev%=5 . Mode%|
0000c010  3d 2d 31 20 80 20 28 28  6e 65 78 74 64 69 67 25  |=-1 . ((nextdig%|
0000c020  3c 3d 61 6e 73 6c 69 6d  25 28 6c 61 79 65 72 25  |<=anslim%(layer%|
0000c030  29 20 80 20 44 69 76 54  79 70 65 25 3d 31 20 84  |) . DivType%=1 .|
0000c040  20 6e 65 78 74 64 69 67  25 3c 3e 2d 31 20 80 20  | nextdig%<>-1 . |
0000c050  44 69 76 54 79 70 65 25  3d 30 29 20 84 20 72 75  |DivType%=0) . ru|
0000c060  62 64 69 67 25 3c 3e 2d  31 29 29 0d 40 42 5a e7  |bdig%<>-1)).@BZ.|
0000c070  20 64 69 67 61 6e 73 25  28 30 29 3e 30 20 80 20  | digans%(0)>0 . |
0000c080  74 72 79 25 3c 74 72 69  65 73 25 28 4e 61 6d 65  |try%<tries%(Name|
0000c090  4e 6f 25 29 20 80 20 53  43 66 6f 72 6d 61 74 25  |No%) . SCformat%|
0000c0a0  3d 32 20 84 20 66 6f 72  63 65 35 25 3d 2d 31 20  |=2 . force5%=-1 |
0000c0b0  8c 20 f2 73 65 74 5f 74  6f 70 5f 69 63 6f 6e 28  |. .set_top_icon(|
0000c0c0  30 2c 2d 31 29 0d 40 4c  05 e1 0d 40 56 04 0d 40  |0,-1).@L...@V..@|
0000c0d0  60 04 0d 40 6a 14 dd 20  f2 62 6f 78 5f 70 6f 73  |`..@j.. .box_pos|
0000c0e0  69 74 69 6f 6e 31 0d 40  74 15 e7 20 6e 65 78 74  |ition1.@t.. next|
0000c0f0  64 69 67 25 3d 2d 31 20  8c 20 e1 0d 40 7e 1c 6e  |dig%=-1 . ..@~.n|
0000c100  65 78 74 64 69 67 25 20  2b 3d 28 6e 65 78 74 64  |extdig% +=(nextd|
0000c110  69 67 25 3e 3d 30 29 0d  40 88 04 0d 40 92 13 e7  |ig%>=0).@...@...|
0000c120  20 6e 65 78 74 64 69 67  25 3d 2d 31 20 8c 0d 40  | nextdig%=-1 ..@|
0000c130  9c 0d 20 63 61 72 72 79  25 3d 30 0d 40 a6 24 20  |.. carry%=0.@.$ |
0000c140  e7 20 61 6e 73 77 65 72  25 28 31 29 3e 30 20 8c  |. answer%(1)>0 .|
0000c150  20 f2 73 74 61 72 74 5f  72 65 6d 5f 62 6f 78 0d  | .start_rem_box.|
0000c160  40 b0 05 cc 0d 40 ba 22  20 63 61 72 72 79 25 3d  |@....@." carry%=|
0000c170  28 63 61 72 5f 64 69 67  25 28 6e 65 78 74 64 69  |(car_dig%(nextdi|
0000c180  67 25 29 3e 30 29 0d 40  c4 05 cd 0d 40 ce 05 e1  |g%)>0).@....@...|
0000c190  0d 40 d8 04 0d 40 e2 04  0d 40 ec 3e dd 20 f2 62  |.@...@...@.>. .b|
0000c1a0  6f 78 5f 70 6f 73 69 74  69 6f 6e 32 28 f8 20 6e  |ox_position2(. n|
0000c1b0  65 78 74 64 69 67 25 2c  f8 20 6c 61 79 65 72 25  |extdig%,. layer%|
0000c1c0  2c f8 20 4c 63 75 72 72  65 6e 74 25 2c f8 20 4c  |,. Lcurrent%,. L|
0000c1d0  74 79 70 65 25 29 0d 40  f6 0f c8 8e 20 4c 74 79  |type%).@.... Lty|
0000c1e0  70 65 25 20 ca 0d 41 00  2f 20 c9 20 31 3a 6e 65  |pe% ..A./ . 1:ne|
0000c1f0  78 74 64 69 67 25 20 2d  3d 28 6e 65 78 74 64 69  |xtdig% -=(nextdi|
0000c200  67 25 3c 3d 61 6e 73 6c  69 6d 25 28 6c 61 79 65  |g%<=anslim%(laye|
0000c210  72 25 29 29 0d 41 0a 66  20 20 20 20 20 20 20 20  |r%)).A.f        |
0000c220  e7 20 6e 65 78 74 64 69  67 25 3e 61 6e 73 6c 69  |. nextdig%>ansli|
0000c230  6d 25 28 6c 61 79 65 72  25 29 20 8c 20 6e 65 78  |m%(layer%) . nex|
0000c240  74 64 69 67 25 3d 4c 73  68 69 66 74 25 28 6c 61  |tdig%=Lshift%(la|
0000c250  79 65 72 25 29 3a 6c 61  79 65 72 25 20 2b 3d 31  |yer%):layer% +=1|
0000c260  3a 4c 74 79 70 65 25 3d  32 3a 4c 63 75 72 72 65  |:Ltype%=2:Lcurre|
0000c270  6e 74 25 3d 6c 61 79 65  72 25 0d 41 14 3f 20 c9  |nt%=layer%.A.? .|
0000c280  20 30 3a e7 20 4c 63 75  72 72 65 6e 74 25 3c 6c  | 0:. Lcurrent%<l|
0000c290  61 79 65 72 6c 69 6d 25  20 84 20 6e 65 78 74 64  |ayerlim% . nextd|
0000c2a0  69 67 25 3c 3e 4c 73 68  69 66 74 25 28 4c 63 75  |ig%<>Lshift%(Lcu|
0000c2b0  72 72 65 6e 74 25 29 20  8c 0d 41 1e 71 20 20 20  |rrent%) ..A.q   |
0000c2c0  20 20 20 20 20 20 e7 20  6e 65 78 74 64 69 67 25  |      . nextdig%|
0000c2d0  3d 4c 73 68 69 66 74 25  28 4c 63 75 72 72 65 6e  |=Lshift%(Lcurren|
0000c2e0  74 25 29 20 8c 20 6c 61  79 65 72 25 3d 4c 63 75  |t%) . layer%=Lcu|
0000c2f0  72 72 65 6e 74 25 2b 31  3a 4c 74 79 70 65 25 3d  |rrent%+1:Ltype%=|
0000c300  31 20 8b 20 6e 65 78 74  64 69 67 25 20 2d 3d 31  |1 . nextdig% -=1|
0000c310  3a 4c 74 79 70 65 25 3d  32 3a 6c 61 79 65 72 25  |:Ltype%=2:layer%|
0000c320  3d 4c 63 75 72 72 65 6e  74 25 0d 41 28 0d 20 20  |=Lcurrent%.A(.  |
0000c330  20 20 20 20 20 20 cc 0d  41 32 1b 20 20 20 20 20  |      ..A2.     |
0000c340  20 20 20 20 e7 20 6e 65  78 74 64 69 67 25 3d 30  |    . nextdig%=0|
0000c350  20 8c 0d 41 3c 42 20 20  20 20 20 20 20 20 20 20  | ..A<B          |
0000c360  6c 61 79 65 72 25 3d 4c  63 75 72 72 65 6e 74 25  |layer%=Lcurrent%|
0000c370  3a 6e 65 78 74 64 69 67  25 3d 61 6e 73 6c 69 6d  |:nextdig%=anslim|
0000c380  25 28 6c 61 79 65 72 25  29 2b 31 3a 4c 74 79 70  |%(layer%)+1:Ltyp|
0000c390  65 25 3d 32 0d 41 46 33  20 20 20 20 20 20 20 20  |e%=2.AF3        |
0000c3a0  20 20 e7 20 61 6e 73 77  65 72 25 28 6c 61 79 65  |  . answer%(laye|
0000c3b0  72 6c 69 6d 25 29 3e 30  20 f2 73 74 61 72 74 5f  |rlim%)>0 .start_|
0000c3c0  72 65 6d 5f 62 6f 78 0d  41 50 0e 20 20 20 20 20  |rem_box.AP.     |
0000c3d0  20 20 20 20 cc 0d 41 5a  1a 20 20 20 20 20 20 20  |    ..AZ.       |
0000c3e0  20 20 20 6e 65 78 74 64  69 67 25 20 2d 3d 31 0d  |   nextdig% -=1.|
0000c3f0  41 64 0e 20 20 20 20 20  20 20 20 20 cd 0d 41 6e  |Ad.         ..An|
0000c400  0d 20 20 20 20 20 20 20  20 cd 0d 41 78 4d 20 c9  |.        ..AxM .|
0000c410  20 32 3a 6e 65 78 74 64  69 67 25 20 2d 3d 28 6e  | 2:nextdig% -=(n|
0000c420  65 78 74 64 69 67 25 3c  3d 61 6e 73 6c 69 6d 25  |extdig%<=anslim%|
0000c430  28 6c 61 79 65 72 25 29  20 80 20 6e 65 78 74 64  |(layer%) . nextd|
0000c440  69 67 25 3e 3d 4c 73 68  69 66 74 25 28 6c 61 79  |ig%>=Lshift%(lay|
0000c450  65 72 25 2d 31 29 29 0d  41 82 4d 20 20 20 20 20  |er%-1)).A.M     |
0000c460  20 20 20 e7 20 6e 65 78  74 64 69 67 25 3c 4c 73  |   . nextdig%<Ls|
0000c470  68 69 66 74 25 28 6c 61  79 65 72 25 2d 31 29 20  |hift%(layer%-1) |
0000c480  8c 20 4c 63 75 72 72 65  6e 74 25 3d 6c 61 79 65  |. Lcurrent%=laye|
0000c490  72 25 3a 6c 61 79 65 72  25 3d 30 3a 4c 74 79 70  |r%:layer%=0:Ltyp|
0000c4a0  65 25 3d 30 0d 41 8c 28  20 20 20 20 20 20 20 20  |e%=0.A.(        |
0000c4b0  e7 20 6e 65 78 74 64 69  67 25 3e 61 6e 73 6c 69  |. nextdig%>ansli|
0000c4c0  6d 25 28 6c 61 79 65 72  25 29 20 8c 0d 41 96 37  |m%(layer%) ..A.7|
0000c4d0  20 20 20 20 20 20 20 20  20 e7 20 6c 61 79 65 72  |         . layer|
0000c4e0  25 3c 6c 61 79 65 72 6c  69 6d 25 20 84 20 4c 73  |%<layerlim% . Ls|
0000c4f0  68 69 66 74 25 28 6c 61  79 65 72 25 2d 31 29 3e  |hift%(layer%-1)>|
0000c500  30 20 8c 0d 41 a0 2a 20  20 20 20 20 20 20 20 20  |0 ..A.*         |
0000c510  20 6e 65 78 74 64 69 67  25 3d 4c 73 68 69 66 74  | nextdig%=Lshift|
0000c520  25 28 6c 61 79 65 72 25  2d 31 29 2d 31 0d 41 aa  |%(layer%-1)-1.A.|
0000c530  0e 20 20 20 20 20 20 20  20 20 cc 0d 41 b4 8f 20  |.         ..A.. |
0000c540  20 20 20 20 20 20 20 20  20 e7 20 61 6e 73 6c 69  |         . ansli|
0000c550  6d 25 28 6c 61 79 65 72  25 29 3e 30 20 80 20 61  |m%(layer%)>0 . a|
0000c560  6e 73 77 65 72 25 28 6c  61 79 65 72 25 29 3d 30  |nswer%(layer%)=0|
0000c570  20 8c 20 6e 65 78 74 64  69 67 25 20 2d 3d 32 3a  | . nextdig% -=2:|
0000c580  4c 63 75 72 72 65 6e 74  25 3d 6c 61 79 65 72 25  |Lcurrent%=layer%|
0000c590  3a 6c 61 79 65 72 25 3d  30 3a 4c 74 79 70 65 25  |:layer%=0:Ltype%|
0000c5a0  3d 30 20 8b 20 e7 20 61  6e 73 77 65 72 25 28 6c  |=0 . . answer%(l|
0000c5b0  61 79 65 72 6c 69 6d 25  29 3e 30 20 f2 73 74 61  |ayerlim%)>0 .sta|
0000c5c0  72 74 5f 72 65 6d 5f 62  6f 78 0d 41 be 0e 20 20  |rt_rem_box.A..  |
0000c5d0  20 20 20 20 20 20 20 cd  0d 41 c8 0d 20 20 20 20  |       ..A..    |
0000c5e0  20 20 20 20 cd 0d 41 d2  05 cb 0d 41 dc 05 e1 0d  |    ..A....A....|
0000c5f0  41 e6 04 0d 41 f0 04 0d  41 fa 14 dd 20 f2 73 74  |A...A...A... .st|
0000c600  61 72 74 5f 72 65 6d 5f  62 6f 78 0d 42 04 18 6c  |art_rem_box.B..l|
0000c610  61 79 65 72 25 3d 30 3a  6e 65 78 74 64 69 67 25  |ayer%=0:nextdig%|
0000c620  3d 2d 32 0d 42 0e 05 e1  0d 42 18 04 0d 42 22 04  |=-2.B....B...B".|
0000c630  0d 42 2c 0e dd 20 f2 72  65 6d 5f 62 6f 78 0d 42  |.B,.. .rem_box.B|
0000c640  36 0b ea 20 72 65 6d 4c  25 0d 42 40 2c e7 20 44  |6.. remL%.B@,. D|
0000c650  69 76 54 79 70 65 25 3d  31 20 8c 20 72 65 6d 4c  |ivType%=1 . remL|
0000c660  25 3d 6c 61 79 65 72 6c  69 6d 25 20 8b 20 72 65  |%=layerlim% . re|
0000c670  6d 4c 25 3d 31 0d 42 4a  10 6e 65 78 74 64 69 67  |mL%=1.BJ.nextdig|
0000c680  25 20 2d 3d 31 0d 42 54  27 e7 20 a9 20 c3 61 6e  |% -=1.BT'. . .an|
0000c690  73 77 65 72 25 28 72 65  6d 4c 25 29 3d 2d 28 32  |swer%(remL%)=-(2|
0000c6a0  2b 6e 65 78 74 64 69 67  25 29 20 8c 0d 42 5e 3f  |+nextdig%) ..B^?|
0000c6b0  20 e7 20 44 69 76 54 79  70 65 25 3d 30 20 8c 20  | . DivType%=0 . |
0000c6c0  6e 65 78 74 64 69 67 25  3d 2d 31 20 8b 20 6e 65  |nextdig%=-1 . ne|
0000c6d0  78 74 64 69 67 25 3d 61  6e 73 6c 69 6d 25 28 6c  |xtdig%=anslim%(l|
0000c6e0  61 79 65 72 6c 69 6d 25  29 2b 31 0d 42 68 15 20  |ayerlim%)+1.Bh. |
0000c6f0  6c 61 79 65 72 25 3d 6c  61 79 65 72 6c 69 6d 25  |layer%=layerlim%|
0000c700  0d 42 72 05 cd 0d 42 7c  05 e1 0d 42 86 04 0d 42  |.Br...B|...B...B|
0000c710  90 04 0d 42 9a 23 dd 20  f2 64 69 67 69 74 5f 72  |...B.#. .digit_r|
0000c720  65 64 72 61 77 28 4c 61  79 65 72 25 2c 64 69 67  |edraw(Layer%,dig|
0000c730  25 2c 63 25 29 0d 42 a4  08 ea 20 79 25 0d 42 ae  |%,c%).B... y%.B.|
0000c740  0e f4 20 44 69 76 69 73  69 6f 6e 0d 42 b8 2a 78  |.. Division.B.*x|
0000c750  25 3d a4 64 69 67 78 28  64 69 67 25 2c 30 29 3a  |%=.digx(dig%,0):|
0000c760  79 25 3d a4 6c 61 79 65  72 59 28 4c 61 79 65 72  |y%=.layerY(Layer|
0000c770  25 2c 63 25 29 0d 42 c2  04 0d 42 cc 0c e7 20 63  |%,c%).B...B... c|
0000c780  25 3d 30 20 8c 0d 42 d6  3a 20 c8 99 22 57 69 6d  |%=0 ..B.: .."Wim|
0000c790  70 5f 46 6f 72 63 65 52  65 64 72 61 77 22 2c 68  |p_ForceRedraw",h|
0000c7a0  61 6e 64 6c 65 25 28 67  61 6d 65 25 29 2c 78 25  |andle%(game%),x%|
0000c7b0  2c 79 25 2c 78 25 2b 35  38 2c 79 25 2b 35 38 0d  |,y%,x%+58,y%+58.|
0000c7c0  42 e0 05 cc 0d 42 ea 48  20 c8 99 22 57 69 6d 70  |B....B.H .."Wimp|
0000c7d0  5f 46 6f 72 63 65 52 65  64 72 61 77 22 2c 68 61  |_ForceRedraw",ha|
0000c7e0  6e 64 6c 65 25 28 67 61  6d 65 25 29 2c 78 25 2d  |ndle%(game%),x%-|
0000c7f0  31 34 2c 79 25 2b 32 38  2c 78 25 2b 31 36 2c 79  |14,y%+28,x%+16,y|
0000c800  25 2b 35 36 3a f4 20 43  61 72 72 79 0d 42 f4 05  |%+56:. Carry.B..|
0000c810  cd 0d 42 fe 05 e1 0d 43  08 04 0d 43 12 04 0d 43  |..B....C...C...C|
0000c820  1c 21 dd 20 a4 63 68 65  63 6b 5f 64 69 67 5f 76  |.!. .check_dig_v|
0000c830  61 6c 28 4c 61 79 65 72  25 2c 64 69 67 25 29 0d  |al(Layer%,dig%).|
0000c840  43 26 42 e7 20 63 61 72  72 79 25 3d 30 20 8c 20  |C&B. carry%=0 . |
0000c850  6e 75 6d 25 3d bb 20 61  6e 73 77 65 72 24 28 4c  |num%=. answer$(L|
0000c860  61 79 65 72 25 2c 64 69  67 25 29 20 8b 20 6e 75  |ayer%,dig%) . nu|
0000c870  6d 25 3d 63 61 72 5f 64  69 67 25 28 64 69 67 25  |m%=car_dig%(dig%|
0000c880  29 0d 43 30 14 3d 28 6e  75 6d 25 3d 64 72 61 67  |).C0.=(num%=drag|
0000c890  76 61 6c 25 29 0d 43 3a  04 0d 43 44 04 0d 43 4e  |val%).C:..CD..CN|
0000c8a0  19 dd 20 f2 70 6c 61 63  65 5f 64 6f 75 62 6c 65  |.. .place_double|
0000c8b0  5f 63 6c 69 63 6b 0d 43  58 0a ea 20 70 6f 73 25  |_click.CX.. pos%|
0000c8c0  0d 43 62 4f e7 20 72 75  62 64 69 67 25 3c 3e 2d  |.CbO. rubdig%<>-|
0000c8d0  31 20 8c 20 70 6f 73 25  3d 72 75 62 64 69 67 25  |1 . pos%=rubdig%|
0000c8e0  3a 4c 61 79 65 72 25 3d  72 75 62 6c 61 79 65 72  |:Layer%=rublayer|
0000c8f0  25 20 8b 20 70 6f 73 25  3d 6e 65 78 74 64 69 67  |% . pos%=nextdig|
0000c900  25 3a 4c 61 79 65 72 25  3d 6c 61 79 65 72 25 0d  |%:Layer%=layer%.|
0000c910  43 6c 4e e7 20 70 6f 73  25 3e 61 6e 73 6c 69 6d  |ClN. pos%>anslim|
0000c920  25 28 6c 61 79 65 72 25  29 20 80 20 4c 61 79 65  |%(layer%) . Laye|
0000c930  72 25 3d 6c 61 79 65 72  6c 69 6d 25 20 84 20 70  |r%=layerlim% . p|
0000c940  6f 73 25 3d 2d 31 20 84  20 6d 6f 64 65 25 28 4e  |os%=-1 . mode%(N|
0000c950  61 6d 65 4e 6f 25 29 3d  30 20 8c 20 e1 0d 43 76  |ameNo%)=0 . ..Cv|
0000c960  04 0d 43 80 2a e7 20 70  6f 73 25 3c 30 20 8c 20  |..C.*. pos%<0 . |
0000c970  f2 70 6c 61 63 65 5f 72  65 6d 61 69 6e 64 65 72  |.place_remainder|
0000c980  28 70 6f 73 25 2b 38 34  29 3a e1 0d 43 8a 04 0d  |(pos%+84):..C...|
0000c990  43 94 2a e7 20 63 61 72  72 79 25 3d 30 20 84 20  |C.*. carry%=0 . |
0000c9a0  72 75 62 64 69 67 25 3e  2d 31 20 84 20 48 65 6c  |rubdig%>-1 . Hel|
0000c9b0  70 6c 65 76 25 3c 34 20  8c 0d 43 9e 18 20 f2 70  |plev%<4 ..C.. .p|
0000c9c0  6c 61 63 65 5f 6e 75 6d  62 65 72 28 70 6f 73 25  |lace_number(pos%|
0000c9d0  29 0d 43 a8 05 cc 0d 43  b2 17 20 f2 70 6c 61 63  |).C....C.. .plac|
0000c9e0  65 5f 63 61 72 72 79 28  70 6f 73 25 29 0d 43 bc  |e_carry(pos%).C.|
0000c9f0  05 cd 0d 43 c6 05 e1 0d  43 d0 04 0d 43 da 04 0d  |...C....C...C...|
0000ca00  43 e4 1b dd 20 f2 72 65  70 6c 61 63 65 5f 6e 75  |C... .replace_nu|
0000ca10  6d 62 65 72 28 6e 75 6d  25 29 0d 43 ee 14 ea 20  |mber(num%).C... |
0000ca20  72 30 25 2c 72 31 2c 72  32 25 2c 72 33 25 0d 43  |r0%,r1,r2%,r3%.C|
0000ca30  f8 18 e7 20 69 6e 69 74  6e 75 6d 25 3c 3e 6e 75  |... initnum%<>nu|
0000ca40  6d 25 20 8c 20 e1 0d 44  02 20 64 72 61 67 25 3d  |m% . ..D. drag%=|
0000ca50  30 3a 64 6f 75 62 6c 65  25 3d 30 3a 64 72 61 67  |0:double%=0:drag|
0000ca60  76 61 6c 25 3d 30 0d 44  0c 0f e7 20 6e 75 6d 25  |val%=0.D... num%|
0000ca70  3d 31 30 20 8c 0d 44 16  3e 20 c8 99 22 4f 53 5f  |=10 ..D.> .."OS_|
0000ca80  53 70 72 69 74 65 4f 70  22 2c 26 31 33 43 2c 73  |SpriteOp",&13C,s|
0000ca90  61 72 65 61 25 2c 22 62  61 63 6b 74 6f 70 31 22  |area%,"backtop1"|
0000caa0  2c 31 20 b8 20 72 30 25  2c 72 31 2c 72 32 25 2c  |,1 . r0%,r1,r2%,|
0000cab0  72 33 25 0d 44 20 33 20  c8 99 22 4f 53 5f 53 70  |r3%.D 3 .."OS_Sp|
0000cac0  72 69 74 65 4f 70 22 2c  26 31 33 34 2c 73 61 72  |riteOp",&134,sar|
0000cad0  65 61 25 2c 22 74 6f 70  31 22 2c 30 2c 30 2c 30  |ea%,"top1",0,0,0|
0000cae0  2c 2d 31 2c 2d 31 0d 44  2a 27 20 c8 99 22 4f 53  |,-1,-1.D*' .."OS|
0000caf0  5f 53 70 72 69 74 65 4f  70 22 2c 72 30 25 2c 72  |_SpriteOp",r0%,r|
0000cb00  31 2c 72 32 25 2c 72 33  25 3a ef 32 36 0d 44 34  |1,r2%,r3%:.26.D4|
0000cb10  05 cd 0d 44 3e 04 0d 44  48 49 c8 99 22 57 69 6d  |...D>..DHI.."Wim|
0000cb20  70 5f 46 6f 72 63 65 52  65 64 72 61 77 22 2c 68  |p_ForceRedraw",h|
0000cb30  61 6e 64 6c 65 25 28 67  61 6d 65 25 29 2c 64 72  |andle%(game%),dr|
0000cb40  61 67 78 25 2c 64 72 61  67 79 25 2c 64 72 61 67  |agx%,dragy%,drag|
0000cb50  78 25 2b 37 35 2c 64 72  61 67 79 25 2b 37 35 0d  |x%+75,dragy%+75.|
0000cb60  44 52 05 e1 0d 44 5c 04  0d 44 66 04 0d 44 70 0f  |DR...D\..Df..Dp.|
0000cb70  dd 20 f2 67 61 6d 65 5f  65 6e 64 0d 44 7a 08 ea  |. .game_end.Dz..|
0000cb80  20 72 25 0d 44 84 3d f2  63 6c 6f 73 65 5f 77 69  | r%.D.=.close_wi|
0000cb90  6e 64 6f 77 28 68 61 6e  64 6c 65 25 28 67 61 6d  |ndow(handle%(gam|
0000cba0  65 25 29 29 3a 67 61 6d  65 25 3d 30 3a 64 72 61  |e%)):game%=0:dra|
0000cbb0  67 25 3d 30 3a 73 74 61  72 74 4f 77 6e 25 3d 30  |g%=0:startOwn%=0|
0000cbc0  0d 44 8e 1c f2 63 6c 6f  73 65 5f 77 69 6e 64 6f  |.D...close_windo|
0000cbd0  77 28 43 43 68 61 6e 64  6c 65 25 29 0d 44 98 23  |w(CChandle%).D.#|
0000cbe0  f2 63 6c 6f 73 65 5f 77  69 6e 64 6f 77 28 4f 68  |.close_window(Oh|
0000cbf0  61 6e 64 6c 65 25 29 3a  4f 77 69 6e 25 3d 30 0d  |andle%):Owin%=0.|
0000cc00  44 a2 1b f2 63 6c 6f 73  65 5f 77 69 6e 64 6f 77  |D...close_window|
0000cc10  28 50 68 61 6e 64 6c 65  25 29 0d 44 ac 1c f2 63  |(Phandle%).D...c|
0000cc20  6c 6f 73 65 5f 77 69 6e  64 6f 77 28 50 32 68 61  |lose_window(P2ha|
0000cc30  6e 64 6c 65 25 29 0d 44  b6 1a f2 73 68 61 64 65  |ndle%).D...shade|
0000cc40  5f 69 74 65 6d 28 6d 65  6e 75 25 2c 32 2c 30 29  |_item(menu%,2,0)|
0000cc50  0d 44 c0 54 e7 20 6d 61  72 6b 65 64 25 3d 2d 31  |.D.T. marked%=-1|
0000cc60  20 80 20 61 75 74 6f 25  28 4e 61 6d 65 4e 6f 25  | . auto%(NameNo%|
0000cc70  29 3d 31 20 80 20 6f 77  6e 73 75 6d 25 28 4e 61  |)=1 . ownsum%(Na|
0000cc80  6d 65 4e 6f 25 29 3d 30  20 8c 20 f2 6e 65 77 5f  |meNo%)=0 . .new_|
0000cc90  61 75 74 6f 5f 6c 65 76  65 6c 28 63 6f 72 72 65  |auto_level(corre|
0000cca0  63 74 25 29 0d 44 ca 30  e7 20 73 61 76 65 52 25  |ct%).D.0. saveR%|
0000ccb0  28 4e 61 6d 65 4e 6f 25  29 3d 31 20 80 20 71 75  |(NameNo%)=1 . qu|
0000ccc0  65 73 74 25 3e 30 20 8c  20 f2 65 6e 64 5f 6c 65  |est%>0 . .end_le|
0000ccd0  76 65 6c 73 0d 44 d4 34  f4 20 49 46 20 6e 6f 74  |vels.D.4. IF not|
0000cce0  73 61 76 65 64 4f 25 20  54 48 45 4e 20 50 52 4f  |savedO% THEN PRO|
0000ccf0  43 73 61 76 65 5f 66 69  6c 65 28 24 73 61 76 65  |Csave_file($save|
0000cd00  62 75 66 66 25 2c 30 29  0d 44 de 39 e7 20 61 75  |buff%,0).D.9. au|
0000cd10  74 6f 73 61 76 65 52 25  3d 2d 31 20 80 20 73 61  |tosaveR%=-1 . sa|
0000cd20  76 65 52 25 28 4e 61 6d  65 4e 6f 25 29 3d 31 20  |veR%(NameNo%)=1 |
0000cd30  80 20 6e 6f 74 73 61 76  65 64 52 25 3d 2d 31 20  |. notsavedR%=-1 |
0000cd40  8c 0d 44 e8 29 20 f2 72  65 73 75 6c 74 73 5f 74  |..D.) .results_t|
0000cd50  65 78 74 5f 66 69 6c 65  28 24 73 61 76 65 74 65  |ext_file($savete|
0000cd60  78 74 62 75 66 66 25 2c  30 29 0d 44 f2 05 cd 0d  |xtbuff%,0).D....|
0000cd70  44 fc 14 f2 73 68 6f 77  5f 73 63 6f 72 65 28 22  |D...show_score("|
0000cd80  45 22 29 0d 45 06 05 e1  0d 45 10 04 0d 45 1a 04  |E").E....E...E..|
0000cd90  0d 45 24 11 dd 20 f2 65  6e 64 5f 6c 65 76 65 6c  |.E$.. .end_level|
0000cda0  73 0d 45 2e 21 ea 20 73  74 24 2c 70 65 72 63 24  |s.E.!. st$,perc$|
0000cdb0  2c 4d 6c 65 76 24 2c 44  6c 65 76 24 2c 61 75 74  |,Mlev$,Dlev$,aut|
0000cdc0  6f 24 0d 45 38 18 52 63  6e 74 25 20 2b 3d 32 3a  |o$.E8.Rcnt% +=2:|
0000cdd0  52 63 6e 74 32 25 20 2b  3d 32 0d 45 42 40 e7 20  |Rcnt2% +=2.EB@. |
0000cde0  6f 77 6e 73 75 6d 25 28  4e 61 6d 65 4e 6f 25 29  |ownsum%(NameNo%)|
0000cdf0  3d 30 20 8c 20 44 6c 65  76 24 3d c3 20 44 6c 65  |=0 . Dlev$=. Dle|
0000ce00  76 65 6c 25 28 4e 61 6d  65 4e 6f 25 29 20 8b 20  |vel%(NameNo%) . |
0000ce10  44 6c 65 76 24 3d 22 20  2d 22 0d 45 4c 45 e7 20  |Dlev$=" -".ELE. |
0000ce20  71 75 65 73 74 25 20 8c  20 70 65 72 63 24 3d c3  |quest% . perc$=.|
0000ce30  28 a8 28 31 30 30 2a 43  6f 72 72 65 63 74 41 6e  |(.(100*CorrectAn|
0000ce40  73 25 2f 71 75 65 73 74  25 2b 2e 35 29 29 2b 22  |s%/quest%+.5))+"|
0000ce50  25 22 20 8b 20 70 65 72  63 24 3d 22 30 25 22 0d  |%" . perc$="0%".|
0000ce60  45 56 32 e7 20 61 75 74  6f 68 65 6c 70 25 28 4e  |EV2. autohelp%(N|
0000ce70  61 6d 65 4e 6f 25 29 3d  31 20 8c 20 61 75 74 6f  |ameNo%)=1 . auto|
0000ce80  24 3d 22 59 22 20 8b 20  61 75 74 6f 24 3d 22 4e  |$="Y" . auto$="N|
0000ce90  22 0d 45 60 41 73 74 24  3d 22 20 45 6e 64 20 6c  |".E`Ast$=" End l|
0000cea0  65 76 65 6c 73 3a 20 64  69 76 3a 22 2b 44 6c 65  |evels: div:"+Dle|
0000ceb0  76 24 2b 22 20 2c 61 75  74 6f 20 68 65 6c 70 3a  |v$+" ,auto help:|
0000cec0  22 2b 61 75 74 6f 24 2b  22 20 20 22 2b 70 65 72  |"+auto$+"  "+per|
0000ced0  63 24 0d 45 6a 22 52 70  74 72 25 3d a4 61 64 64  |c$.Ej"Rptr%=.add|
0000cee0  5f 73 74 72 69 6e 67 28  52 70 74 72 25 2c 73 74  |_string(Rptr%,st|
0000cef0  24 2c 32 29 0d 45 74 05  e1 0d 45 7e 04 0d 45 88  |$,2).Et...E~..E.|
0000cf00  04 0d 45 92 11 dd 20 a4  73 75 6d 5f 66 69 6c 6c  |..E... .sum_fill|
0000cf10  65 64 0d 45 9c 12 ea 20  6e 25 2c 66 6c 67 25 2c  |ed.E... n%,flg%,|
0000cf20  6c 69 6d 25 0d 45 a6 1b  66 6c 67 25 3d 2d 31 3a  |lim%.E..flg%=-1:|
0000cf30  6c 69 6d 25 3d 61 6e 73  6c 69 6d 25 28 30 29 0d  |lim%=anslim%(0).|
0000cf40  45 b0 11 e3 20 6e 25 3d  30 20 b8 20 6c 69 6d 25  |E... n%=0 . lim%|
0000cf50  0d 45 ba 41 20 e7 20 64  69 67 61 6e 73 24 28 30  |.E.A . digans$(0|
0000cf60  2c 6e 25 29 3d 22 22 20  80 20 ac 28 6e 25 3d 6c  |,n%)="" . .(n%=l|
0000cf70  69 6d 25 20 80 20 61 6e  73 77 65 72 24 28 30 2c  |im% . answer$(0,|
0000cf80  6e 25 29 3d 22 30 22 29  20 8c 20 66 6c 67 25 3d  |n%)="0") . flg%=|
0000cf90  30 0d 45 c4 05 ed 0d 45  ce 09 3d 66 6c 67 25 0d  |0.E....E..=flg%.|
0000cfa0  45 d8 04 0d 45 e2 04 0d  45 ec 0e dd 20 a4 63 6f  |E...E...E... .co|
0000cfb0  72 72 65 63 74 0d 45 f6  13 ea 20 6e 25 2c 66 6c  |rrect.E... n%,fl|
0000cfc0  67 25 2c 72 65 6d 4c 25  0d 46 00 2a e7 20 44 69  |g%,remL%.F.*. Di|
0000cfd0  76 54 79 70 65 25 20 8c  20 72 65 6d 4c 25 3d 6c  |vType% . remL%=l|
0000cfe0  61 79 65 72 6c 69 6d 25  20 8b 20 72 65 6d 4c 25  |ayerlim% . remL%|
0000cff0  3d 31 0d 46 0a 16 e3 20  6e 25 3d 30 20 b8 20 6c  |=1.F... n%=0 . l|
0000d000  61 79 65 72 6c 69 6d 25  0d 46 14 29 20 e7 20 64  |ayerlim%.F.) . d|
0000d010  69 67 61 6e 73 25 28 6e  25 29 3c 3e 61 6e 73 77  |igans%(n%)<>answ|
0000d020  65 72 25 28 6e 25 29 20  8c 20 66 6c 67 25 3d 2d  |er%(n%) . flg%=-|
0000d030  31 0d 46 1e 05 ed 0d 46  28 2a e7 20 72 65 6d 61  |1.F....F(*. rema|
0000d040  69 6e 64 65 72 25 3c 3e  61 6e 73 77 65 72 25 28  |inder%<>answer%(|
0000d050  72 65 6d 4c 25 29 20 8c  20 66 6c 67 25 3d 2d 31  |remL%) . flg%=-1|
0000d060  0d 46 32 0d 3d 28 66 6c  67 25 3d 30 29 0d 46 3c  |.F2.=(flg%=0).F<|
0000d070  04 0d 46 46 04 0d 46 50  12 dd 20 f2 61 64 64 5f  |..FF..FP.. .add_|
0000d080  72 65 73 75 6c 74 73 0d  46 5a 2b e7 20 6e 65 77  |results.FZ+. new|
0000d090  52 25 3d 31 20 80 20 74  72 79 25 3d 31 20 8c 20  |R%=1 . try%=1 . |
0000d0a0  f2 72 65 73 75 6c 74 73  5f 6e 65 78 74 5f 6e 61  |.results_next_na|
0000d0b0  6d 65 0d 46 64 1b e7 20  74 72 79 25 3d 31 20 8c  |me.Fd.. try%=1 .|
0000d0c0  20 f2 72 65 73 75 6c 74  73 5f 73 75 6d 0d 46 6e  | .results_sum.Fn|
0000d0d0  04 0d 46 78 19 e7 20 64  65 63 69 6d 61 6c 25 28  |..Fx.. decimal%(|
0000d0e0  4e 61 6d 65 4e 6f 25 29  20 8c 0d 46 82 24 20 73  |NameNo%) ..F.$ s|
0000d0f0  75 6d 24 3d a4 69 6e 73  65 72 74 5f 70 6f 69 6e  |um$=.insert_poin|
0000d100  74 28 c3 64 69 67 61 6e  73 25 28 30 29 29 0d 46  |t(.digans%(0)).F|
0000d110  8c 05 cc 0d 46 96 15 20  73 75 6d 24 3d c3 64 69  |....F.. sum$=.di|
0000d120  67 61 6e 73 25 28 30 29  0d 46 a0 30 20 e7 20 72  |gans%(0).F.0 . r|
0000d130  65 6d 61 69 6e 64 65 72  25 3e 30 20 8c 20 73 75  |emainder%>0 . su|
0000d140  6d 24 3d 73 75 6d 24 2b  22 52 22 2b c3 20 72 65  |m$=sum$+"R"+. re|
0000d150  6d 61 69 6e 64 65 72 25  0d 46 aa 05 cd 0d 46 b4  |mainder%.F....F.|
0000d160  04 0d 46 be 1b 73 75 6d  24 3d 73 75 6d 24 2b c4  |..F..sum$=sum$+.|
0000d170  38 2d a9 73 75 6d 24 2c  22 20 22 29 0d 46 c8 33  |8-.sum$," ").F.3|
0000d180  e7 20 6e 65 77 52 25 3d  30 20 8c 20 52 70 74 72  |. newR%=0 . Rptr|
0000d190  25 3d a4 61 64 64 5f 73  74 72 69 6e 67 28 52 70  |%=.add_string(Rp|
0000d1a0  74 72 25 2c 22 20 22 2b  73 75 6d 24 2c 30 29 0d  |tr%," "+sum$,0).|
0000d1b0  46 d2 04 0d 46 dc 2a e7  20 65 73 74 69 6d 61 74  |F...F.*. estimat|
0000d1c0  65 25 28 4e 61 6d 65 4e  6f 25 29 3d 31 20 80 20  |e%(NameNo%)=1 . |
0000d1d0  63 6f 72 72 65 63 74 25  3d 2d 31 20 8c 0d 46 e6  |correct%=-1 ..F.|
0000d1e0  49 20 e7 20 64 65 63 69  6d 61 6c 25 28 4e 61 6d  |I . decimal%(Nam|
0000d1f0  65 4e 6f 25 29 20 8c 20  73 75 6d 24 3d a4 69 6e  |eNo%) . sum$=.in|
0000d200  73 65 72 74 5f 70 6f 69  6e 74 28 c3 20 45 73 74  |sert_point(. Est|
0000d210  56 61 6c 25 29 20 8b 20  73 75 6d 24 3d c3 20 45  |Val%) . sum$=. E|
0000d220  73 74 56 61 6c 25 0d 46  f0 15 20 73 75 6d 24 3d  |stVal%.F.. sum$=|
0000d230  22 45 73 74 20 22 2b 73  75 6d 24 0d 46 fa 34 20  |"Est "+sum$.F.4 |
0000d240  e7 20 6e 65 77 52 25 3d  30 20 8c 20 52 70 74 72  |. newR%=0 . Rptr|
0000d250  25 3d a4 61 64 64 5f 73  74 72 69 6e 67 28 52 70  |%=.add_string(Rp|
0000d260  74 72 25 2c 22 20 22 2b  73 75 6d 24 2c 30 29 0d  |tr%," "+sum$,0).|
0000d270  47 04 05 cd 0d 47 0e 05  e1 0d 47 18 04 0d 47 22  |G....G....G...G"|
0000d280  04 0d 47 2c 10 dd 20 f2  63 68 65 63 6b 5f 73 75  |..G,.. .check_su|
0000d290  6d 0d 47 36 28 ea 20 4d  63 6e 74 25 2c 72 65 6d  |m.G6(. Mcnt%,rem|
0000d2a0  4c 25 2c 43 6f 72 72 65  63 74 25 3a 6d 65 73 73  |L%,Correct%:mess|
0000d2b0  61 67 65 24 28 29 3d 22  22 0d 47 40 1a 74 69 6d  |age$()="".G@.tim|
0000d2c0  65 75 70 25 3d 2d 32 2a  28 74 69 6d 65 75 70 25  |eup%=-2*(timeup%|
0000d2d0  3d 31 29 0d 47 4a 2d f2  77 6f 72 6b 5f 61 72 65  |=1).GJ-.work_are|
0000d2e0  61 5f 6f 72 69 67 69 6e  28 68 61 6e 64 6c 65 25  |a_origin(handle%|
0000d2f0  28 67 61 6d 65 25 29 2c  6f 78 25 2c 6f 79 25 29  |(game%),ox%,oy%)|
0000d300  0d 47 54 39 63 6f 72 72  65 63 74 25 3d 28 a4 63  |.GT9correct%=(.c|
0000d310  6f 72 72 65 63 74 3d 2d  31 20 80 20 a4 73 75 6d  |orrect=-1 . .sum|
0000d320  5f 66 69 6c 6c 65 64 3d  2d 31 29 3a 6e 65 78 74  |_filled=-1):next|
0000d330  63 68 65 63 6b 25 3d 2d  31 0d 47 5e 15 43 6f 72  |check%=-1.G^.Cor|
0000d340  72 65 63 74 25 3d 63 6f  72 72 65 63 74 25 0d 47  |rect%=correct%.G|
0000d350  68 3e 43 6f 72 72 65 63  74 41 6e 73 25 20 2d 3d  |h>CorrectAns% -=|
0000d360  28 63 6f 72 72 65 63 74  25 3d 2d 31 20 80 20 66  |(correct%=-1 . f|
0000d370  6f 72 63 65 35 25 3d 30  29 3a 74 72 79 25 20 2d  |orce5%=0):try% -|
0000d380  3d 28 66 6f 72 63 65 35  25 3d 30 29 0d 47 72 32  |=(force5%=0).Gr2|
0000d390  e7 20 73 61 76 65 52 25  28 4e 61 6d 65 4e 6f 25  |. saveR%(NameNo%|
0000d3a0  29 3d 31 20 80 20 66 6f  72 63 65 35 25 3d 30 20  |)=1 . force5%=0 |
0000d3b0  8c 20 f2 61 64 64 5f 72  65 73 75 6c 74 73 0d 47  |. .add_results.G|
0000d3c0  7c 04 0d 47 86 58 66 6c  67 25 3d a4 75 70 64 61  ||..G.Xflg%=.upda|
0000d3d0  74 65 5f 77 69 6e 64 6f  77 28 68 61 6e 64 6c 65  |te_window(handle|
0000d3e0  25 28 67 61 6d 65 25 29  2c a4 64 69 67 78 28 30  |%(game%),.digx(0|
0000d3f0  2c 2d 31 29 2c 59 70 6f  73 25 28 31 30 29 2c a4  |,-1),Ypos%(10),.|
0000d400  64 69 67 78 28 30 2c 2d  35 29 2b 32 39 2c 59 70  |digx(0,-5)+29,Yp|
0000d410  6f 73 25 28 31 29 2b 35  38 29 0d 47 90 0b c8 95  |os%(1)+58).G....|
0000d420  20 66 6c 67 25 0d 47 9a  0a 20 f2 6d 61 72 6b 0d  | flg%.G.. .mark.|
0000d430  47 a4 29 20 c8 99 22 57  69 6d 70 5f 47 65 74 52  |G.) .."Wimp_GetR|
0000d440  65 63 74 61 6e 67 6c 65  22 2c 2c 62 6c 6f 63 6b  |ectangle",,block|
0000d450  25 20 b8 20 66 6c 67 25  0d 47 ae 05 ce 0d 47 b8  |% . flg%.G....G.|
0000d460  04 0d 47 c2 7e e7 20 28  66 6f 72 63 65 25 28 4e  |..G.~. (force%(N|
0000d470  61 6d 65 4e 6f 25 29 3d  31 20 84 20 66 6f 72 63  |ameNo%)=1 . forc|
0000d480  65 35 25 3d 2d 31 29 20  80 20 74 72 79 25 3e 3d  |e5%=-1) . try%>=|
0000d490  74 72 69 65 73 25 28 4e  61 6d 65 4e 6f 25 29 20  |tries%(NameNo%) |
0000d4a0  80 20 28 63 6f 72 72 65  63 74 25 3d 30 20 84 20  |. (correct%=0 . |
0000d4b0  66 6f 72 63 65 35 25 3d  2d 31 29 20 8c 20 f2 66  |force5%=-1) . .f|
0000d4c0  6f 72 63 65 5f 72 69 67  68 74 5f 61 6e 73 3a e7  |orce_right_ans:.|
0000d4d0  20 66 6f 72 63 65 35 25  3d 2d 31 20 8c 20 e1 0d  | force5%=-1 . ..|
0000d4e0  47 cc 04 0d 47 d6 48 e7  20 65 73 74 69 6d 61 74  |G...G.H. estimat|
0000d4f0  65 25 28 4e 61 6d 65 4e  6f 25 29 3d 31 20 80 20  |e%(NameNo%)=1 . |
0000d500  63 6f 72 72 65 63 74 25  3d 2d 31 20 80 20 66 6f  |correct%=-1 . fo|
0000d510  72 63 65 35 25 3d 30 20  8c 20 f2 65 73 74 69 6d  |rce5%=0 . .estim|
0000d520  61 74 65 5f 6d 65 73 73  61 67 65 0d 47 e0 04 0d  |ate_message.G...|
0000d530  47 ea 2b e7 20 63 6f 72  72 65 63 74 25 3d 2d 31  |G.+. correct%=-1|
0000d540  20 84 20 74 72 79 25 3e  3d 74 72 69 65 73 25 28  | . try%>=tries%(|
0000d550  4e 61 6d 65 4e 6f 25 29  20 8c 0d 47 f4 14 20 f4  |NameNo%) ..G.. .|
0000d560  20 4e 65 78 74 20 71 75  65 73 74 69 6f 6e 0d 47  | Next question.G|
0000d570  fe 37 20 e7 20 6e 65 78  74 25 28 4e 61 6d 65 4e  |.7 . next%(NameN|
0000d580  6f 25 29 20 8c 20 f2 73  68 61 64 65 5f 69 63 6f  |o%) . .shade_ico|
0000d590  6e 28 68 61 6e 64 6c 65  25 28 67 61 6d 65 25 29  |n(handle%(game%)|
0000d5a0  2c 35 2c 30 29 0d 48 08  25 20 e3 20 6e 25 3d 30  |,5,0).H.% . n%=0|
0000d5b0  20 b8 20 32 3a f2 73 65  74 5f 74 6f 70 5f 69 63  | . 2:.set_top_ic|
0000d5c0  6f 6e 28 6e 25 2c 30 29  3a ed 0d 48 12 5e 20 e7  |on(n%,0):..H.^ .|
0000d5d0  20 70 72 69 6e 74 65 72  25 28 4e 61 6d 65 4e 6f  | printer%(NameNo|
0000d5e0  25 29 3d 31 20 80 20 64  72 69 76 65 72 25 3d 2d  |%)=1 . driver%=-|
0000d5f0  31 20 80 20 28 63 6f 72  72 65 63 74 25 3d 30 20  |1 . (correct%=0 |
0000d600  84 20 66 6f 72 63 65 35  25 3d 31 29 20 80 20 50  |. force5%=1) . P|
0000d610  73 61 76 65 25 3d 30 20  8c 20 f2 73 61 76 65 5f  |save%=0 . .save_|
0000d620  73 75 6d 28 22 53 22 29  0d 48 1c 04 0d 48 26 0f  |sum("S").H...H&.|
0000d630  20 71 75 65 73 74 25 20  2b 3d 31 0d 48 30 7f 20  | quest% +=1.H0. |
0000d640  e7 20 63 6f 72 72 65 63  74 25 3d 30 20 80 20 74  |. correct%=0 . t|
0000d650  72 79 25 3e 3d 74 72 69  65 73 25 28 4e 61 6d 65  |ry%>=tries%(Name|
0000d660  4e 6f 25 29 20 80 20 66  6f 72 63 65 35 25 3c 3e  |No%) . force5%<>|
0000d670  31 20 8c 20 6d 65 73 73  61 67 65 24 28 30 29 3d  |1 . message$(0)=|
0000d680  22 20 20 20 20 20 4e 6f  20 6d 6f 72 65 20 74 72  |"     No more tr|
0000d690  69 65 73 2e 22 3a f2 66  6f 6e 74 5f 74 6f 5f 73  |ies.":.font_to_s|
0000d6a0  63 72 65 65 6e 3a f2 6d  65 73 73 61 67 65 5f 73  |creen:.message_s|
0000d6b0  70 72 69 74 65 5f 62 61  63 6b 0d 48 3a 19 20 e7  |prite_back.H:. .|
0000d6c0  20 6e 65 78 74 25 28 4e  61 6d 65 4e 6f 25 29 3d  | next%(NameNo%)=|
0000d6d0  30 20 8c 0d 48 44 1b 20  20 f2 70 61 75 73 65 28  |0 ..HD.  .pause(|
0000d6e0  32 30 30 29 3a 66 6f 72  63 65 35 25 3d 30 0d 48  |200):force5%=0.H|
0000d6f0  4e 49 20 20 e7 20 61 75  74 6f 25 28 4e 61 6d 65  |NI  . auto%(Name|
0000d700  4e 6f 25 29 3d 31 20 80  20 6f 77 6e 73 75 6d 25  |No%)=1 . ownsum%|
0000d710  28 4e 61 6d 65 4e 6f 25  29 3d 30 20 8c 20 f2 6e  |(NameNo%)=0 . .n|
0000d720  65 77 5f 61 75 74 6f 5f  6c 65 76 65 6c 28 63 6f  |ew_auto_level(co|
0000d730  72 72 65 63 74 25 29 0d  48 58 23 20 20 e7 20 71  |rrect%).HX#  . q|
0000d740  75 65 73 74 25 3c 6e 6f  5f 71 75 65 73 74 25 28  |uest%<no_quest%(|
0000d750  4e 61 6d 65 4e 6f 25 29  20 8c 0d 48 62 3b 20 20  |NameNo%) ..Hb;  |
0000d760  20 e7 20 6f 77 6e 73 75  6d 25 28 4e 61 6d 65 4e  | . ownsum%(NameN|
0000d770  6f 25 29 3d 30 20 8c 20  f2 73 65 74 5f 73 75 6d  |o%)=0 . .set_sum|
0000d780  20 8b 20 f2 73 65 74 5f  75 70 5f 73 75 6d 5f 77  | . .set_up_sum_w|
0000d790  69 6e 64 6f 77 0d 48 6c  07 20 20 cc 0d 48 76 10  |indow.Hl.  ..Hv.|
0000d7a0  20 20 20 f2 67 61 6d 65  5f 65 6e 64 0d 48 80 07  |   .game_end.H..|
0000d7b0  20 20 cd 0d 48 8a 06 20  cd 0d 48 94 34 20 6d 61  |  ..H.. ..H.4 ma|
0000d7c0  72 6b 65 64 25 3d 28 6e  65 78 74 25 28 4e 61 6d  |rked%=(next%(Nam|
0000d7d0  65 4e 6f 25 29 3d 31 20  84 20 6f 77 6e 73 75 6d  |eNo%)=1 . ownsum|
0000d7e0  25 28 4e 61 6d 65 4e 6f  25 29 3d 31 29 0d 48 9e  |%(NameNo%)=1).H.|
0000d7f0  05 cc 0d 48 a8 42 20 e7  20 6e 65 78 74 25 28 4e  |...H.B . next%(N|
0000d800  61 6d 65 4e 6f 25 29 3d  31 20 80 20 74 72 79 25  |ameNo%)=1 . try%|
0000d810  3d 31 20 8c 20 f2 73 68  61 64 65 5f 69 63 6f 6e  |=1 . .shade_icon|
0000d820  28 68 61 6e 64 6c 65 25  28 67 61 6d 65 25 29 2c  |(handle%(game%),|
0000d830  35 2c 30 29 0d 48 b2 60  e7 20 44 69 76 54 79 70  |5,0).H.`. DivTyp|
0000d840  65 25 3d 31 20 80 20 6e  65 78 74 64 69 67 25 3d  |e%=1 . nextdig%=|
0000d850  61 6e 73 6c 69 6d 25 28  6c 61 79 65 72 6c 69 6d  |anslim%(layerlim|
0000d860  25 29 2b 31 20 80 20 6c  61 79 65 72 25 3d 6c 61  |%)+1 . layer%=la|
0000d870  79 65 72 6c 69 6d 25 20  84 20 44 69 76 54 79 70  |yerlim% . DivTyp|
0000d880  65 25 3d 30 20 80 20 6e  65 78 74 64 69 67 25 3d  |e%=0 . nextdig%=|
0000d890  2d 31 20 8c 0d 48 bc 04  0d 48 c6 14 20 20 e7 20  |-1 ..H...H..  . |
0000d8a0  44 69 76 54 79 70 65 25  3d 31 20 8c 0d 48 d0 3a  |DivType%=1 ..H.:|
0000d8b0  20 20 6e 65 78 74 65 72  72 25 3d 61 6e 73 6c 69  |  nexterr%=ansli|
0000d8c0  6d 25 28 30 29 3a 3a 6e  65 78 74 65 72 72 4c 25  |m%(0)::nexterrL%|
0000d8d0  3d 30 3a 4c 63 75 72 72  32 25 3d 30 3a 4c 74 79  |=0:Lcurr2%=0:Lty|
0000d8e0  70 65 32 25 3d 30 0d 48  da 07 20 20 cc 0d 48 e4  |pe2%=0.H..  ..H.|
0000d8f0  1c 20 20 20 6e 65 78 74  65 72 72 25 3d 61 6e 73  |.   nexterr%=ans|
0000d900  6c 69 6d 25 28 30 29 2b  31 0d 48 ee 07 20 20 cd  |lim%(0)+1.H..  .|
0000d910  0d 48 f8 11 20 20 f2 66  69 6e 64 5f 65 72 72 6f  |.H..  .find_erro|
0000d920  72 0d 49 02 06 20 cd 0d  49 0c 04 0d 49 16 1a 20  |r.I.. ..I...I.. |
0000d930  e7 20 74 72 69 65 73 25  28 4e 61 6d 65 4e 6f 25  |. tries%(NameNo%|
0000d940  29 3e 31 20 8c 0d 49 20  57 20 20 e7 20 74 72 79  |)>1 ..I W  . try|
0000d950  25 3c 74 72 69 65 73 25  28 4e 61 6d 65 4e 6f 25  |%<tries%(NameNo%|
0000d960  29 2d 31 20 8c 20 6d 65  73 73 61 67 65 24 28 30  |)-1 . message$(0|
0000d970  29 3d 22 54 72 79 20 61  67 61 69 6e 2e 22 20 8b  |)="Try again." .|
0000d980  20 6d 65 73 73 61 67 65  24 28 30 29 3d 22 4f 6e  | message$(0)="On|
0000d990  65 20 6d 6f 72 65 20 74  72 79 2e 22 0d 49 2a 25  |e more try.".I*%|
0000d9a0  20 20 6d 65 73 73 61 67  65 24 28 30 29 3d 22 20  |  message$(0)=" |
0000d9b0  20 20 20 20 22 2b 6d 65  73 73 61 67 65 24 28 30  |    "+message$(0|
0000d9c0  29 0d 49 34 15 20 20 f2  66 6f 6e 74 5f 74 6f 5f  |).I4.  .font_to_|
0000d9d0  73 63 72 65 65 6e 0d 49  3e 1a 20 20 f2 6d 65 73  |screen.I>.  .mes|
0000d9e0  73 61 67 65 5f 73 70 72  69 74 65 5f 62 61 63 6b  |sage_sprite_back|
0000d9f0  0d 49 48 06 20 cd 0d 49  52 10 20 f2 70 61 75 73  |.IH. ..IR. .paus|
0000da00  65 28 32 30 30 29 0d 49  5c 6c 20 c8 99 22 57 69  |e(200).I\l .."Wi|
0000da10  6d 70 5f 46 6f 72 63 65  52 65 64 72 61 77 22 2c  |mp_ForceRedraw",|
0000da20  68 61 6e 64 6c 65 25 28  67 61 6d 65 25 29 2c a4  |handle%(game%),.|
0000da30  64 69 67 78 28 30 2c 30  29 2b 38 30 2c 59 70 6f  |digx(0,0)+80,Ypo|
0000da40  73 25 28 31 30 29 2c a4  64 69 67 78 28 30 2c 2d  |s%(10),.digx(0,-|
0000da50  35 29 2b 32 39 2c 59 70  6f 73 25 28 31 29 2b 35  |5)+29,Ypos%(1)+5|
0000da60  38 3a f4 20 72 65 6d 6f  76 65 20 63 72 6f 73 73  |8:. remove cross|
0000da70  65 73 0d 49 66 05 cd 0d  49 70 45 e7 20 61 75 74  |es.If...IpE. aut|
0000da80  6f 68 65 6c 70 25 28 4e  61 6d 65 4e 6f 25 29 3d  |ohelp%(NameNo%)=|
0000da90  31 20 80 20 66 6f 72 63  65 35 25 3d 30 20 8c 20  |1 . force5%=0 . |
0000daa0  f2 63 68 61 6e 67 65 5f  68 65 6c 70 5f 6c 65 76  |.change_help_lev|
0000dab0  65 6c 28 43 6f 72 72 65  63 74 25 29 0d 49 7a 60  |el(Correct%).Iz`|
0000dac0  6e 65 78 74 6d 65 73 73  25 3d 2d 33 2a 28 48 65  |nextmess%=-3*(He|
0000dad0  6c 70 6c 65 76 25 3d 35  20 80 20 6d 6f 64 65 25  |lplev%=5 . mode%|
0000dae0  28 4e 61 6d 65 4e 6f 25  29 3d 31 20 80 20 66 6f  |(NameNo%)=1 . fo|
0000daf0  72 63 65 35 25 3d 30 20  80 20 74 72 79 25 3c 74  |rce5%=0 . try%<t|
0000db00  72 69 65 73 25 28 4e 61  6d 65 4e 6f 25 29 20 80  |ries%(NameNo%) .|
0000db10  20 63 6f 72 72 65 63 74  25 3d 30 29 0d 49 84 05  | correct%=0).I..|
0000db20  e1 0d 49 8e 04 0d 49 98  04 0d 49 a2 16 dd 20 f2  |..I...I...I... .|
0000db30  66 6f 72 63 65 5f 72 69  67 68 74 5f 61 6e 73 0d  |force_right_ans.|
0000db40  49 ac 11 e7 20 66 6f 72  63 65 35 25 3d 30 20 8c  |I... force5%=0 .|
0000db50  0d 49 b6 10 20 f2 70 61  75 73 65 28 33 30 30 29  |.I.. .pause(300)|
0000db60  0d 49 c0 33 20 e7 20 61  75 74 6f 68 65 6c 70 25  |.I.3 . autohelp%|
0000db70  28 4e 61 6d 65 4e 6f 25  29 3d 31 20 8c 20 f2 63  |(NameNo%)=1 . .c|
0000db80  68 61 6e 67 65 5f 68 65  6c 70 5f 6c 65 76 65 6c  |hange_help_level|
0000db90  28 30 29 0d 49 ca 1a 20  48 65 6c 70 6c 65 76 25  |(0).I.. Helplev%|
0000dba0  3d 35 3a 66 6f 72 63 65  35 25 3d 2d 31 0d 49 d4  |=5:force5%=-1.I.|
0000dbb0  0d 20 f2 73 65 74 5f 73  75 6d 0d 49 de 05 cc 0d  |. .set_sum.I....|
0000dbc0  49 e8 28 20 48 65 6c 70  6c 65 76 25 3d 48 6c 65  |I.( Helplev%=Hle|
0000dbd0  76 65 6c 25 28 4e 61 6d  65 4e 6f 25 29 3a 66 6f  |vel%(NameNo%):fo|
0000dbe0  72 63 65 35 25 3d 31 0d  49 f2 05 cd 0d 49 fc 05  |rce5%=1.I....I..|
0000dbf0  e1 0d 4a 06 04 0d 4a 10  04 0d 4a 1a 17 dd 20 f2  |..J...J...J... .|
0000dc00  65 73 74 69 6d 61 74 65  5f 6d 65 73 73 61 67 65  |estimate_message|
0000dc10  0d 4a 24 15 ea 20 65 73  74 3a 65 73 74 3d 45 73  |.J$.. est:est=Es|
0000dc20  74 56 61 6c 25 0d 4a 2e  25 e7 20 64 65 63 69 6d  |tVal%.J.%. decim|
0000dc30  61 6c 25 28 4e 61 6d 65  4e 6f 25 29 20 8c 20 65  |al%(NameNo%) . e|
0000dc40  73 74 3d 65 73 74 2f 31  30 30 0d 4a 38 26 6d 65  |st=est/100.J8&me|
0000dc50  73 73 61 67 65 24 28 30  29 3d 22 59 6f 75 20 65  |ssage$(0)="You e|
0000dc60  73 74 69 6d 61 74 65 64  20 22 2b c3 20 65 73 74  |stimated "+. est|
0000dc70  0d 4a 42 13 f2 66 6f 6e  74 5f 74 6f 5f 73 63 72  |.JB..font_to_scr|
0000dc80  65 65 6e 0d 4a 4c 18 f2  6d 65 73 73 61 67 65 5f  |een.JL..message_|
0000dc90  73 70 72 69 74 65 5f 62  61 63 6b 0d 4a 56 05 e1  |sprite_back.JV..|
0000dca0  0d 4a 60 04 0d 4a 6a 04  0d 4a 74 1f dd 20 f2 6e  |.J`..Jj..Jt.. .n|
0000dcb0  65 77 5f 61 75 74 6f 5f  6c 65 76 65 6c 28 63 6f  |ew_auto_level(co|
0000dcc0  72 72 65 63 74 25 29 0d  4a 7e 2a ea 20 6c 65 76  |rrect%).J~*. lev|
0000dcd0  65 6c 25 2c 4c 72 61 6e  67 65 25 2c 48 72 61 6e  |el%,Lrange%,Hran|
0000dce0  67 65 25 3a 6e 6f 74 73  61 76 65 64 4f 25 3d 2d  |ge%:notsavedO%=-|
0000dcf0  31 0d 4a 88 34 6c 65 76  65 6c 25 3d 44 6c 65 76  |1.J.4level%=Dlev|
0000dd00  65 6c 25 28 4e 61 6d 65  4e 6f 25 29 3a 48 72 61  |el%(NameNo%):Hra|
0000dd10  6e 67 65 25 3d 37 3a 6e  75 6d 52 57 25 3d 41 6e  |nge%=7:numRW%=An|
0000dd20  75 6d 52 57 25 0d 4a 92  0d 4c 72 61 6e 67 65 25  |umRW%.J..Lrange%|
0000dd30  3d 31 0d 4a 9c 04 0d 4a  a6 10 e7 20 63 6f 72 72  |=1.J...J... corr|
0000dd40  65 63 74 25 20 8c 0d 4a  b0 1d 20 e7 20 6e 75 6d  |ect% ..J.. . num|
0000dd50  52 57 25 3e 3d 30 20 8c  20 6e 75 6d 52 57 25 20  |RW%>=0 . numRW% |
0000dd60  2b 3d 31 0d 4a ba 1a 20  e7 20 6e 75 6d 52 57 25  |+=1.J.. . numRW%|
0000dd70  3c 30 20 8c 20 6e 75 6d  52 57 25 3d 31 0d 4a c4  |<0 . numRW%=1.J.|
0000dd80  45 20 e7 20 6e 65 77 6c  65 76 52 25 28 4e 61 6d  |E . newlevR%(Nam|
0000dd90  65 4e 6f 25 29 3c 3d 6e  75 6d 52 57 25 20 8c 20  |eNo%)<=numRW% . |
0000dda0  6c 65 76 65 6c 25 20 2d  3d 28 6c 65 76 65 6c 25  |level% -=(level%|
0000ddb0  3c 48 72 61 6e 67 65 25  29 3a 6e 75 6d 52 57 25  |<Hrange%):numRW%|
0000ddc0  3d 30 0d 4a ce 05 cc 0d  4a d8 1d 20 e7 20 6e 75  |=0.J....J.. . nu|
0000ddd0  6d 52 57 25 3c 3d 30 20  8c 20 6e 75 6d 52 57 25  |mRW%<=0 . numRW%|
0000dde0  20 2d 3d 31 0d 4a e2 1b  20 e7 20 6e 75 6d 52 57  | -=1.J.. . numRW|
0000ddf0  25 3e 30 20 8c 20 6e 75  6d 52 57 25 3d 2d 31 0d  |%>0 . numRW%=-1.|
0000de00  4a ec 45 20 e7 20 6e 65  77 6c 65 76 57 25 28 4e  |J.E . newlevW%(N|
0000de10  61 6d 65 4e 6f 25 29 3e  3d 6e 75 6d 52 57 25 20  |ameNo%)>=numRW% |
0000de20  8c 20 6c 65 76 65 6c 25  20 2b 3d 28 6c 65 76 65  |. level% +=(leve|
0000de30  6c 25 3e 4c 72 61 6e 67  65 25 29 3a 6e 75 6d 52  |l%>Lrange%):numR|
0000de40  57 25 3d 30 0d 4a f6 05  cd 0d 4b 00 04 0d 4b 0a  |W%=0.J....K...K.|
0000de50  3c 44 6c 65 76 65 6c 25  28 4e 61 6d 65 4e 6f 25  |<Dlevel%(NameNo%|
0000de60  29 3d 6c 65 76 65 6c 25  3a 24 6c 65 76 65 6c 5f  |)=level%:$level_|
0000de70  62 75 66 66 44 25 3d c3  20 44 6c 65 76 65 6c 25  |buffD%=. Dlevel%|
0000de80  28 4e 61 6d 65 4e 6f 25  29 0d 4b 14 12 41 6e 75  |(NameNo%).K..Anu|
0000de90  6d 52 57 25 3d 6e 75 6d  52 57 25 0d 4b 1e 1b f2  |mRW%=numRW%.K...|
0000dea0  72 65 73 65 74 5f 69 63  6f 6e 28 43 68 61 6e 64  |reset_icon(Chand|
0000deb0  6c 65 25 2c 35 29 0d 4b  28 1f f2 73 65 74 5f 64  |le%,5).K(..set_d|
0000dec0  69 76 69 73 69 6f 6e 5f  74 79 70 65 28 4e 61 6d  |ivision_type(Nam|
0000ded0  65 4e 6f 25 29 0d 4b 32  05 e1 0d 4b 3c 04 0d 4b  |eNo%).K2...K<..K|
0000dee0  46 04 0d 4b 50 22 dd 20  f2 63 68 61 6e 67 65 5f  |F..KP". .change_|
0000def0  68 65 6c 70 5f 6c 65 76  65 6c 28 63 6f 72 72 65  |help_level(corre|
0000df00  63 74 25 29 0d 4b 5a 10  e7 20 63 6f 72 72 65 63  |ct%).KZ.. correc|
0000df10  74 25 20 8c 0d 4b 64 3c  20 48 6c 65 76 65 6c 25  |t% ..Kd< Hlevel%|
0000df20  28 4e 61 6d 65 4e 6f 25  29 20 2b 3d 28 48 6c 65  |(NameNo%) +=(Hle|
0000df30  76 65 6c 25 28 4e 61 6d  65 4e 6f 25 29 3e 4d 48  |vel%(NameNo%)>MH|
0000df40  6c 65 76 65 6c 25 28 4e  61 6d 65 4e 6f 25 29 29  |level%(NameNo%))|
0000df50  0d 4b 6e 05 cc 0d 4b 78  2c 20 48 6c 65 76 65 6c  |.Kn...Kx, Hlevel|
0000df60  25 28 4e 61 6d 65 4e 6f  25 29 20 2d 3d 28 48 6c  |%(NameNo%) -=(Hl|
0000df70  65 76 65 6c 25 28 4e 61  6d 65 4e 6f 25 29 3c 35  |evel%(NameNo%)<5|
0000df80  29 0d 4b 82 4e 20 e7 20  74 72 79 25 3c 74 72 69  |).K.N . try%<tri|
0000df90  65 73 25 28 4e 61 6d 65  4e 6f 25 29 20 80 20 67  |es%(NameNo%) . g|
0000dfa0  61 6d 65 25 3e 30 20 8c  20 f2 63 68 61 6e 67 65  |ame%>0 . .change|
0000dfb0  5f 68 65 6c 70 5f 64 69  73 70 6c 61 79 28 48 6c  |_help_display(Hl|
0000dfc0  65 76 65 6c 25 28 4e 61  6d 65 4e 6f 25 29 29 0d  |evel%(NameNo%)).|
0000dfd0  4b 8c 05 cd 0d 4b 96 1d  48 65 6c 70 6c 65 76 25  |K....K..Helplev%|
0000dfe0  3d 48 6c 65 76 65 6c 25  28 4e 61 6d 65 4e 6f 25  |=Hlevel%(NameNo%|
0000dff0  29 0d 4b a0 16 24 48 62  75 66 66 25 3d c3 20 48  |).K..$Hbuff%=. H|
0000e000  65 6c 70 6c 65 76 25 0d  4b aa 1c f2 72 65 73 65  |elplev%.K...rese|
0000e010  74 5f 69 63 6f 6e 28 43  68 61 6e 64 6c 65 25 2c  |t_icon(Chandle%,|
0000e020  33 31 29 0d 4b b4 05 e1  0d 4b be 04 0d 4b c8 04  |31).K....K...K..|
0000e030  0d 4b d2 21 dd 20 f2 63  68 61 6e 67 65 5f 68 65  |.K.!. .change_he|
0000e040  6c 70 5f 64 69 73 70 6c  61 79 28 68 65 6c 70 25  |lp_display(help%|
0000e050  29 0d 4b dc 35 e7 20 68  65 6c 70 25 3c 34 20 80  |).K.5. help%<4 .|
0000e060  20 48 65 6c 70 6c 65 76  25 3e 3d 34 20 84 20 68  | Helplev%>=4 . h|
0000e070  65 6c 70 25 3e 3d 34 20  80 20 48 65 6c 70 6c 65  |elp%>=4 . Helple|
0000e080  76 25 3c 34 20 8c 0d 4b  e6 25 20 f2 64 69 67 69  |v%<4 ..K.% .digi|
0000e090  74 5f 72 65 64 72 61 77  28 6c 61 79 65 72 25 2c  |t_redraw(layer%,|
0000e0a0  6e 65 78 74 64 69 67 25  2c 30 29 0d 4b f0 26 20  |nextdig%,0).K.& |
0000e0b0  f2 64 69 67 69 74 5f 72  65 64 72 61 77 28 6c 61  |.digit_redraw(la|
0000e0c0  79 65 72 25 2c 6e 65 78  74 64 69 67 25 2c 2d 31  |yer%,nextdig%,-1|
0000e0d0  29 0d 4b fa 05 cd 0d 4c  04 38 e7 20 a4 77 69 6e  |).K....L.8. .win|
0000e0e0  64 6f 77 5f 6f 70 65 6e  28 43 68 61 6e 64 6c 65  |dow_open(Chandle|
0000e0f0  25 29 3d 30 20 8c 20 6e  65 78 74 6d 65 73 73 25  |%)=0 . nextmess%|
0000e100  3d 2d 28 48 65 6c 70 6c  65 76 25 3d 35 29 0d 4c  |=-(Helplev%=5).L|
0000e110  0e 75 e7 20 68 65 6c 70  25 3d 35 20 80 20 48 65  |.u. help%=5 . He|
0000e120  6c 70 6c 65 76 25 3c 35  20 8c 20 6d 65 73 73 61  |lplev%<5 . messa|
0000e130  67 65 24 28 29 3d 22 22  3a c8 99 22 57 69 6d 70  |ge$()="":.."Wimp|
0000e140  5f 46 6f 72 63 65 52 65  64 72 61 77 22 2c 68 61  |_ForceRedraw",ha|
0000e150  6e 64 6c 65 25 28 67 61  6d 65 25 29 2c a4 64 69  |ndle%(game%),.di|
0000e160  67 78 28 30 2c 2d 33 29  2c 59 70 6f 73 25 28 31  |gx(0,-3),Ypos%(1|
0000e170  30 29 2c 31 32 37 36 2c  59 70 6f 73 25 28 31 29  |0),1276,Ypos%(1)|
0000e180  2b 35 38 0d 4c 18 05 e1  0d 4c 22 04 0d 4c 2c 04  |+58.L....L"..L,.|
0000e190  0d 4c 36 18 dd 20 f2 73  68 6f 77 5f 73 63 6f 72  |.L6.. .show_scor|
0000e1a0  65 28 77 68 65 6e 24 29  0d 4c 40 23 ea 20 6f 66  |e(when$).L@#. of|
0000e1b0  66 25 2c 74 6f 5f 67 6f  25 3a 6f 66 66 25 3d 2d  |f%,to_go%:off%=-|
0000e1c0  28 77 68 65 6e 24 3d 22  45 22 29 0d 4c 4a 0f 73  |(when$="E").LJ.s|
0000e1d0  74 61 72 74 25 3d 6f 66  66 25 0d 4c 54 04 0d 4c  |tart%=off%.LT..L|
0000e1e0  5e 22 f2 64 65 6c 65 74  65 5f 69 63 6f 6e 28 53  |^".delete_icon(S|
0000e1f0  43 68 61 6e 64 6c 65 25  2c 39 2c 6f 66 66 25 29  |Chandle%,9,off%)|
0000e200  0d 4c 68 25 f2 64 65 6c  65 74 65 5f 69 63 6f 6e  |.Lh%.delete_icon|
0000e210  28 53 43 68 61 6e 64 6c  65 25 2c 31 30 2c 31 2d  |(SChandle%,10,1-|
0000e220  6f 66 66 25 29 0d 4c 72  25 f2 64 65 6c 65 74 65  |off%).Lr%.delete|
0000e230  5f 69 63 6f 6e 28 53 43  68 61 6e 64 6c 65 25 2c  |_icon(SChandle%,|
0000e240  31 31 2c 31 2d 6f 66 66  25 29 0d 4c 7c 25 f2 64  |11,1-off%).L|%.d|
0000e250  65 6c 65 74 65 5f 69 63  6f 6e 28 53 43 68 61 6e  |elete_icon(SChan|
0000e260  64 6c 65 25 2c 31 32 2c  31 2d 6f 66 66 25 29 0d  |dle%,12,1-off%).|
0000e270  4c 86 4c f2 73 68 61 64  65 5f 69 63 6f 6e 28 53  |L.L.shade_icon(S|
0000e280  43 68 61 6e 64 6c 65 25  2c 31 31 2c 28 70 72 69  |Chandle%,11,(pri|
0000e290  6e 74 65 72 25 28 4e 61  6d 65 4e 6f 25 29 3d 30  |nter%(NameNo%)=0|
0000e2a0  20 84 20 64 72 69 76 65  72 25 3d 30 20 84 20 65  | . driver%=0 . e|
0000e2b0  6e 70 72 69 6e 74 25 3d  30 29 29 0d 4c 90 04 0d  |nprint%=0)).L...|
0000e2c0  4c 9a 1b 24 53 43 52 62  75 66 66 25 3d c3 20 43  |L..$SCRbuff%=. C|
0000e2d0  6f 72 72 65 63 74 41 6e  73 25 0d 4c a4 16 24 53  |orrectAns%.L..$S|
0000e2e0  43 51 62 75 66 66 25 3d  c3 20 71 75 65 73 74 25  |CQbuff%=. quest%|
0000e2f0  0d 4c ae 24 24 53 43 57  62 75 66 66 25 3d c3 20  |.L.$$SCWbuff%=. |
0000e300  28 71 75 65 73 74 25 2d  43 6f 72 72 65 63 74 41  |(quest%-CorrectA|
0000e310  6e 73 25 29 0d 4c b8 28  24 53 6e 61 6d 65 62 75  |ns%).L.($Snamebu|
0000e320  66 66 25 3d 22 4e 61 6d  65 20 3a 20 22 2b 6e 61  |ff%="Name : "+na|
0000e330  6d 65 24 28 4e 61 6d 65  4e 6f 25 29 0d 4c c2 04  |me$(NameNo%).L..|
0000e340  0d 4c cc 11 e7 20 77 68  65 6e 24 3d 22 45 22 20  |.L... when$="E" |
0000e350  8c 0d 4c d6 3c 20 24 53  43 74 62 75 66 66 25 3d  |..L.< $SCtbuff%=|
0000e360  22 54 69 6d 65 20 6c 69  6d 69 74 20 3a 20 22 2b  |"Time limit : "+|
0000e370  c3 20 74 69 6d 65 6c 69  6d 25 28 4e 61 6d 65 4e  |. timelim%(NameN|
0000e380  6f 25 29 2b 22 20 6d 69  6e 75 74 65 22 0d 4c e0  |o%)+" minute".L.|
0000e390  35 20 e7 20 74 69 6d 65  6c 69 6d 25 28 4e 61 6d  |5 . timelim%(Nam|
0000e3a0  65 4e 6f 25 29 3c 3e 31  20 8c 20 24 53 43 74 62  |eNo%)<>1 . $SCtb|
0000e3b0  75 66 66 25 3d 24 53 43  74 62 75 66 66 25 2b 22  |uff%=$SCtbuff%+"|
0000e3c0  73 22 0d 4c ea 05 cc 0d  4c f4 3a 20 74 6f 5f 67  |s".L....L.: to_g|
0000e3d0  6f 25 3d 28 36 30 30 30  2a 74 69 6d 65 6c 69 6d  |o%=(6000*timelim|
0000e3e0  25 28 4e 61 6d 65 4e 6f  25 29 2d 91 2b 73 65 73  |%(NameNo%)-.+ses|
0000e3f0  73 74 69 6d 65 25 2b 33  30 30 30 29 2f 36 30 30  |stime%+3000)/600|
0000e400  30 0d 4c fe 2d 20 24 53  43 74 62 75 66 66 25 3d  |0.L.- $SCtbuff%=|
0000e410  22 59 6f 75 20 68 61 76  65 20 22 2b c3 20 74 6f  |"You have "+. to|
0000e420  5f 67 6f 25 2b 22 20 6d  69 6e 75 74 65 22 0d 4d  |_go%+" minute".M|
0000e430  08 35 20 e7 20 74 69 6d  65 6c 69 6d 25 28 4e 61  |.5 . timelim%(Na|
0000e440  6d 65 4e 6f 25 29 3c 3e  31 20 8c 20 24 53 43 74  |meNo%)<>1 . $SCt|
0000e450  62 75 66 66 25 3d 24 53  43 74 62 75 66 66 25 2b  |buff%=$SCtbuff%+|
0000e460  22 73 22 0d 4d 12 22 20  24 53 43 74 62 75 66 66  |"s".M." $SCtbuff|
0000e470  25 3d 24 53 43 74 62 75  66 66 25 2b 22 20 74 6f  |%=$SCtbuff%+" to|
0000e480  20 67 6f 2e 22 0d 4d 1c  05 cd 0d 4d 26 37 e7 20  | go.".M....M&7. |
0000e490  4e 6f 74 69 6d 65 72 25  28 4e 61 6d 65 4e 6f 25  |Notimer%(NameNo%|
0000e4a0  29 20 8c 20 24 53 43 74  62 75 66 66 25 3d 22 54  |) . $SCtbuff%="T|
0000e4b0  69 6d 65 20 6c 69 6d 69  74 20 3a 20 4e 6f 6e 65  |ime limit : None|
0000e4c0  22 0d 4d 30 2b 53 43 68  61 6e 64 6c 65 25 3d a4  |".M0+SChandle%=.|
0000e4d0  63 65 6e 74 72 65 5f 77  69 6e 64 6f 77 28 53 43  |centre_window(SC|
0000e4e0  68 61 6e 64 6c 65 25 2c  22 59 22 29 0d 4d 3a 05  |handle%,"Y").M:.|
0000e4f0  e1 0d 4d 44 04 0d 4d 4e  04 0d 4d 58 0b dd 20 f2  |..MD..MN..MX.. .|
0000e500  6d 61 72 6b 0d 4d 62 1f  ea 20 73 70 24 2c 74 65  |mark.Mb.. sp$,te|
0000e510  6e 73 25 2c 78 25 2c 79  25 2c 4c 61 79 65 72 25  |ns%,x%,y%,Layer%|
0000e520  2c 70 25 0d 4d 6c 2e e7  20 44 69 76 54 79 70 65  |,p%.Ml.. DivType|
0000e530  25 3d 31 20 8c 20 4c 61  79 65 72 25 3d 6c 61 79  |%=1 . Layer%=lay|
0000e540  65 72 6c 69 6d 25 20 8b  20 4c 61 79 65 72 25 3d  |erlim% . Layer%=|
0000e550  31 0d 4d 76 36 e7 20 61  6e 73 77 65 72 25 28 4c  |1.Mv6. answer%(L|
0000e560  61 79 65 72 25 29 3d 30  20 8c 20 70 25 3d 30 20  |ayer%)=0 . p%=0 |
0000e570  8b 20 70 25 3d a9 20 c3  61 6e 73 77 65 72 25 28  |. p%=. .answer%(|
0000e580  4c 61 79 65 72 25 29 0d  4d 80 2d 78 32 25 3d a4  |Layer%).M.-x2%=.|
0000e590  64 69 67 78 28 30 2c 30  29 2b 38 30 3a 78 31 25  |digx(0,0)+80:x1%|
0000e5a0  3d a4 64 69 67 78 28 30  2c 2d 28 31 2b 70 25 29  |=.digx(0,-(1+p%)|
0000e5b0  29 2b 38 30 0d 4d 8a 04  0d 4d 94 2c e7 20 63 6f  |)+80.M...M.,. co|
0000e5c0  72 72 65 63 74 25 3d 2d  31 20 8c 20 73 70 24 3d  |rrect%=-1 . sp$=|
0000e5d0  22 74 69 63 6b 22 20 8b  20 73 70 24 3d 22 63 72  |"tick" . sp$="cr|
0000e5e0  6f 73 73 22 0d 4d 9e 48  c8 99 22 4f 53 5f 53 70  |oss".M.H.."OS_Sp|
0000e5f0  72 69 74 65 4f 70 22 2c  26 31 33 34 2c 73 61 72  |riteOp",&134,sar|
0000e600  65 61 25 2c 73 70 24 2c  6f 78 25 2b 78 31 25 2c  |ea%,sp$,ox%+x1%,|
0000e610  6f 79 25 2b 59 70 6f 73  25 28 31 29 2c 38 2c 73  |oy%+Ypos%(1),8,s|
0000e620  63 61 6c 65 25 2c 74 72  61 6e 73 25 0d 4d a8 04  |cale%,trans%.M..|
0000e630  0d 4d b2 1f e7 20 63 6f  72 72 65 63 74 25 3d 30  |.M... correct%=0|
0000e640  20 80 20 44 69 76 54 79  70 65 25 3d 31 20 8c 0d  | . DivType%=1 ..|
0000e650  4d bc 1b 20 e3 20 4c 61  79 65 72 25 3d 31 20 b8  |M.. . Layer%=1 .|
0000e660  20 6c 61 79 65 72 6c 69  6d 25 0d 4d c6 81 20 20  | layerlim%.M..  |
0000e670  e7 20 61 6e 73 77 65 72  25 28 4c 61 79 65 72 25  |. answer%(Layer%|
0000e680  29 3c 3e 64 69 67 61 6e  73 25 28 4c 61 79 65 72  |)<>digans%(Layer|
0000e690  25 29 20 8c 20 c8 99 22  4f 53 5f 53 70 72 69 74  |%) . .."OS_Sprit|
0000e6a0  65 4f 70 22 2c 26 31 33  34 2c 73 61 72 65 61 25  |eOp",&134,sarea%|
0000e6b0  2c 22 73 6d 61 6c 6c 63  72 6f 73 73 22 2c 6f 78  |,"smallcross",ox|
0000e6c0  25 2b 78 32 25 2c 6f 79  25 2b a4 6c 61 79 65 72  |%+x2%,oy%+.layer|
0000e6d0  59 28 4c 61 79 65 72 25  2c 30 29 2c 38 2c 73 63  |Y(Layer%,0),8,sc|
0000e6e0  61 6c 65 25 2c 74 72 61  6e 73 25 0d 4d d0 06 20  |ale%,trans%.M.. |
0000e6f0  ed 0d 4d da 05 cd 0d 4d  e4 05 e1 0d 4d ee 04 0d  |..M....M....M...|
0000e700  4d f8 04 0d 4e 02 16 dd  20 f2 69 6e 70 75 74 5f  |M...N... .input_|
0000e710  62 6f 78 28 64 69 67 25  29 0d 4e 0c 19 ea 20 78  |box(dig%).N... x|
0000e720  25 2c 68 25 2c 4c 61 79  65 72 25 2c 73 74 61 72  |%,h%,Layer%,star|
0000e730  74 25 0d 4e 16 41 e7 20  72 75 62 64 69 67 25 3c  |t%.N.A. rubdig%<|
0000e740  3e 2d 31 20 8c 20 64 69  67 25 3d 72 75 62 64 69  |>-1 . dig%=rubdi|
0000e750  67 25 3a 4c 61 79 65 72  25 3d 72 75 62 6c 61 79  |g%:Layer%=rublay|
0000e760  65 72 25 20 8b 20 4c 61  79 65 72 25 3d 6c 61 79  |er% . Layer%=lay|
0000e770  65 72 25 0d 4e 20 31 e7  20 64 69 67 25 3e 61 6e  |er%.N 1. dig%>an|
0000e780  73 6c 69 6d 25 28 4c 61  79 65 72 25 29 20 80 20  |slim%(Layer%) . |
0000e790  4c 61 79 65 72 25 3d 6c  61 79 65 72 6c 69 6d 25  |Layer%=layerlim%|
0000e7a0  20 8c 20 e1 0d 4e 2a 2d  f2 77 6f 72 6b 5f 61 72  | . ..N*-.work_ar|
0000e7b0  65 61 5f 6f 72 69 67 69  6e 28 68 61 6e 64 6c 65  |ea_origin(handle|
0000e7c0  25 28 67 61 6d 65 25 29  2c 6f 78 25 2c 6f 79 25  |%(game%),ox%,oy%|
0000e7d0  29 0d 4e 34 19 c8 99 22  57 69 6d 70 5f 53 65 74  |).N4..."Wimp_Set|
0000e7e0  43 6f 6c 6f 75 72 22 2c  31 31 0d 4e 3e 2a e7 20  |Colour",11.N>*. |
0000e7f0  63 61 72 72 79 25 3d 30  20 84 20 48 65 6c 70 6c  |carry%=0 . Helpl|
0000e800  65 76 25 3c 34 20 84 20  72 75 62 64 69 67 25 3e  |ev%<4 . rubdig%>|
0000e810  2d 31 20 8c 0d 4e 48 11  20 e7 20 64 69 67 25 3c  |-1 ..NH. . dig%<|
0000e820  3e 2d 31 20 8c 0d 4e 52  18 20 20 78 25 3d a4 64  |>-1 ..NR.  x%=.d|
0000e830  69 67 78 28 64 69 67 25  2c 30 29 2b 38 0d 4e 5c  |igx(dig%,0)+8.N\|
0000e840  2d 20 20 c8 93 20 6f 78  25 2b 78 25 2c 6f 79 25  |-  .. ox%+x%,oy%|
0000e850  2b a4 6c 61 79 65 72 59  28 4c 61 79 65 72 25 2c  |+.layerY(Layer%,|
0000e860  30 29 2b 38 2c 34 32 2c  34 32 0d 4e 66 06 20 cd  |0)+8,42,42.Nf. .|
0000e870  0d 4e 70 05 cc 0d 4e 7a  18 20 20 78 25 3d a4 64  |.Np...Nz.  x%=.d|
0000e880  69 67 78 28 64 69 67 25  2c 30 29 2d 38 0d 4e 84  |igx(dig%,0)-8.N.|
0000e890  1e 20 20 79 25 3d a4 6c  61 79 65 72 59 28 4c 61  |.  y%=.layerY(La|
0000e8a0  79 65 72 25 2c 2d 31 29  2b 32 38 0d 4e 8e 1c 20  |yer%,-1)+28.N.. |
0000e8b0  20 c8 93 20 6f 78 25 2b  78 25 2c 6f 79 25 2b 79  | .. ox%+x%,oy%+y|
0000e8c0  25 2c 32 32 2c 32 36 0d  4e 98 05 cd 0d 4e a2 05  |%,22,26.N....N..|
0000e8d0  e1 0d 4e ac 04 0d 4e b6  04 0d 4e c0 1f dd 20 f2  |..N...N...N... .|
0000e8e0  6c 61 79 65 72 73 28 6c  65 76 65 6c 25 2c f8 20  |layers(level%,. |
0000e8f0  72 65 6a 65 63 74 25 29  0d 4e ca 24 ea 20 6c 61  |reject%).N.$. la|
0000e900  79 65 72 25 2c 64 25 2c  6c 65 66 74 25 2c 6e 75  |yer%,d%,left%,nu|
0000e910  6d 25 3a 72 65 6a 65 63  74 25 3d 30 0d 4e d4 04  |m%:reject%=0.N..|
0000e920  0d 4e de 1a 61 6e 73 77  65 72 25 28 30 29 3d 6e  |.N..answer%(0)=n|
0000e930  75 6d 31 25 2f 6e 75 6d  32 25 0d 4e e8 04 0d 4e  |um1%/num2%.N...N|
0000e940  f2 1d 64 25 3d 34 3a 6c  61 79 65 72 25 3d 31 3a  |..d%=4:layer%=1:|
0000e950  6c 65 66 74 25 3d 6e 75  6d 31 25 0d 4e fc 05 f5  |left%=num1%.N...|
0000e960  0d 4f 06 06 20 f5 0d 4f  10 18 20 20 6e 75 6d 25  |.O.. ..O..  num%|
0000e970  3d 6c 65 66 74 25 20 81  20 31 30 5e 64 25 0d 4f  |=left% . 10^d%.O|
0000e980  1a 1b 20 20 e7 20 6e 75  6d 25 3c 6e 75 6d 32 25  |..  . num%<num2%|
0000e990  20 8c 20 64 25 20 2d 3d  31 0d 4f 24 12 20 fd 20  | . d% -=1.O$. . |
0000e9a0  6e 75 6d 25 3e 3d 6e 75  6d 32 25 0d 4f 2e 04 0d  |num%>=num2%.O...|
0000e9b0  4f 38 13 20 e7 20 44 69  76 54 79 70 65 25 3d 31  |O8. . DivType%=1|
0000e9c0  20 8c 0d 4f 42 04 0d 4f  4c 12 20 20 e7 20 6c 61  | ..OB..OL.  . la|
0000e9d0  79 65 72 25 3e 31 20 8c  0d 4f 56 3f 20 20 20 61  |yer%>1 ..OV?   a|
0000e9e0  6e 73 77 65 72 25 28 6c  61 79 65 72 25 29 3d 6e  |nswer%(layer%)=n|
0000e9f0  75 6d 25 2a 31 30 5e 64  25 3a 4c 73 68 69 66 74  |um%*10^d%:Lshift|
0000ea00  25 28 6c 61 79 65 72 25  29 3d 64 25 3a 6c 61 79  |%(layer%)=d%:lay|
0000ea10  65 72 25 20 2b 3d 31 0d  4f 60 07 20 20 cd 0d 4f  |er% +=1.O`.  ..O|
0000ea20  6a 04 0d 4f 74 30 20 20  61 6e 73 77 65 72 25 28  |j..Ot0  answer%(|
0000ea30  6c 61 79 65 72 25 29 3d  6e 75 6d 32 25 2a 28 6e  |layer%)=num2%*(n|
0000ea40  75 6d 25 20 81 20 6e 75  6d 32 25 29 2a 31 30 5e  |um% . num2%)*10^|
0000ea50  64 25 0d 4f 7e 1d 20 20  6c 65 66 74 25 20 2d 3d  |d%.O~.  left% -=|
0000ea60  61 6e 73 77 65 72 25 28  6c 61 79 65 72 25 29 0d  |answer%(layer%).|
0000ea70  4f 88 23 20 20 4c 73 68  69 66 74 25 28 6c 61 79  |O.#  Lshift%(lay|
0000ea80  65 72 25 29 3d 64 25 3a  6c 61 79 65 72 25 20 2b  |er%)=d%:layer% +|
0000ea90  3d 31 0d 4f 92 04 0d 4f  9c 06 20 cc 0d 4f a6 2f  |=1.O...O.. ..O./|
0000eaa0  20 20 6c 65 66 74 25 20  2d 3d 6e 75 6d 32 25 2a  |  left% -=num2%*|
0000eab0  28 6e 75 6d 25 20 81 20  6e 75 6d 32 25 29 2a 31  |(num% . num2%)*1|
0000eac0  30 5e 64 25 3a 64 25 20  2d 3d 31 0d 4f b0 27 20  |0^d%:d% -=1.O.' |
0000ead0  20 e7 20 64 25 3e 2d 31  20 63 61 72 5f 64 69 67  | . d%>-1 car_dig|
0000eae0  25 28 64 25 29 3d 6e 75  6d 25 20 83 20 6e 75 6d  |%(d%)=num% . num|
0000eaf0  32 25 0d 4f ba 0e 20 20  6c 61 79 65 72 25 3d 30  |2%.O..  layer%=0|
0000eb00  0d 4f c4 06 20 cd 0d 4f  ce 1c fd 20 6c 65 66 74  |.O.. ..O... left|
0000eb10  25 3c 6e 75 6d 32 25 20  84 20 6c 61 79 65 72 25  |%<num2% . layer%|
0000eb20  3d 38 0d 4f d8 04 0d 4f  e2 2c e7 20 6c 61 79 65  |=8.O...O.,. laye|
0000eb30  72 25 3d 38 20 80 20 6c  65 66 74 25 3e 3d 6e 75  |r%=8 . left%>=nu|
0000eb40  6d 32 25 20 8c 20 72 65  6a 65 63 74 25 3d 2d 31  |m2% . reject%=-1|
0000eb50  3a e1 0d 4f ec 04 0d 4f  f6 12 e7 20 44 69 76 54  |:..O...O... DivT|
0000eb60  79 70 65 25 3d 31 20 8c  0d 50 00 2d 20 4c 73 68  |ype%=1 ..P.- Lsh|
0000eb70  69 66 74 25 28 6c 61 79  65 72 25 29 3d 64 25 3a  |ift%(layer%)=d%:|
0000eb80  61 6e 73 77 65 72 25 28  6c 61 79 65 72 25 29 3d  |answer%(layer%)=|
0000eb90  6c 65 66 74 25 0d 50 0a  05 cc 0d 50 14 15 20 61  |left%.P....P.. a|
0000eba0  6e 73 77 65 72 25 28 31  29 3d 6c 65 66 74 25 0d  |nswer%(1)=left%.|
0000ebb0  50 1e 05 cd 0d 50 28 14  6c 61 79 65 72 6c 69 6d  |P....P(.layerlim|
0000ebc0  25 3d 6c 61 79 65 72 25  0d 50 32 1d f2 61 6e 73  |%=layer%.P2..ans|
0000ebd0  77 65 72 5f 6c 69 6d 69  74 73 28 6c 61 79 65 72  |wer_limits(layer|
0000ebe0  6c 69 6d 25 29 0d 50 3c  30 e7 20 6c 65 76 65 6c  |lim%).P<0. level|
0000ebf0  25 3d 31 20 8c 20 63 61  72 72 79 25 3d 28 63 61  |%=1 . carry%=(ca|
0000ec00  72 5f 64 69 67 25 28 61  6e 73 6c 69 6d 25 28 30  |r_dig%(anslim%(0|
0000ec10  29 29 3e 30 29 0d 50 46  19 4c 73 68 69 66 74 25  |))>0).PF.Lshift%|
0000ec20  28 30 29 3d 4c 73 68 69  66 74 25 28 31 29 0d 50  |(0)=Lshift%(1).P|
0000ec30  50 04 0d 50 5a 16 e3 20  6e 25 3d 30 20 b8 20 6c  |P..PZ.. n%=0 . l|
0000ec40  61 79 65 72 6c 69 6d 25  0d 50 64 26 20 f2 64 69  |ayerlim%.Pd& .di|
0000ec50  67 69 74 73 28 61 6e 73  77 65 72 25 28 6e 25 29  |gits(answer%(n%)|
0000ec60  2c 61 6e 73 77 65 72 24  28 29 2c 6e 25 29 0d 50  |,answer$(),n%).P|
0000ec70  6e 05 ed 0d 50 78 04 0d  50 82 0f f2 72 65 6d 5f  |n...Px..P...rem_|
0000ec80  64 69 67 69 74 73 0d 50  8c 18 4c 73 68 69 66 74  |digits.P..Lshift|
0000ec90  25 28 6c 61 79 65 72 6c  69 6d 25 29 3d 30 0d 50  |%(layerlim%)=0.P|
0000eca0  96 11 f2 6c 61 79 65 72  5f 74 6f 5f 61 6e 73 0d  |...layer_to_ans.|
0000ecb0  50 a0 12 f2 6c 65 61 64  69 6e 67 5f 7a 65 72 6f  |P...leading_zero|
0000ecc0  73 0d 50 aa 05 e1 0d 50  b4 04 0d 50 be 04 0d 50  |s.P....P...P...P|
0000ecd0  c8 13 dd 20 f2 6c 61 79  65 72 5f 74 6f 5f 61 6e  |... .layer_to_an|
0000ece0  73 0d 50 d2 0b ea 20 78  25 2c 79 25 0d 50 dc 16  |s.P... x%,y%.P..|
0000ecf0  78 25 3d 4c 73 68 69 66  74 25 28 31 29 3a 79 25  |x%=Lshift%(1):y%|
0000ed00  3d 30 0d 50 e6 05 f5 0d  50 f0 0a 20 79 25 2b 3d  |=0.P....P.. y%+=|
0000ed10  32 0d 50 fa 06 20 f5 0d  51 04 11 20 20 78 25 20  |2.P.. ..Q..  x% |
0000ed20  2b 3d 28 78 25 3e 30 29  0d 51 0e 15 20 20 6c 61  |+=(x%>0).Q..  la|
0000ed30  79 65 72 4f 6e 25 28 78  25 29 3d 79 25 0d 51 18  |yerOn%(x%)=y%.Q.|
0000ed40  15 20 fd 20 78 25 3d 4c  73 68 69 66 74 25 28 79  |. . x%=Lshift%(y|
0000ed50  25 29 0d 51 22 19 fd 20  79 25 3d 6c 61 79 65 72  |%).Q".. y%=layer|
0000ed60  6c 69 6d 25 20 84 20 78  25 3d 30 0d 51 2c 05 e1  |lim% . x%=0.Q,..|
0000ed70  0d 51 36 04 0d 51 40 04  0d 51 4a 1a dd 20 f2 61  |.Q6..Q@..QJ.. .a|
0000ed80  6e 73 77 65 72 5f 6c 69  6d 69 74 73 28 6c 69 6d  |nswer_limits(lim|
0000ed90  25 29 0d 51 54 0c ea 20  6c 61 79 65 72 25 0d 51  |%).QT.. layer%.Q|
0000eda0  5e 15 e3 20 6c 61 79 65  72 25 3d 30 20 b8 20 6c  |^.. layer%=0 . l|
0000edb0  69 6d 25 0d 51 68 33 20  61 6e 73 6c 69 6d 25 28  |im%.Qh3 anslim%(|
0000edc0  6c 61 79 65 72 25 29 3d  a4 61 6e 73 77 65 72 5f  |layer%)=.answer_|
0000edd0  6c 69 6d 69 74 28 61 6e  73 77 65 72 25 28 6c 61  |limit(answer%(la|
0000ede0  79 65 72 25 29 29 0d 51  72 48 20 e7 20 61 6e 73  |yer%)).QrH . ans|
0000edf0  6c 69 6d 25 28 6c 61 79  65 72 25 29 3c 4c 73 68  |lim%(layer%)<Lsh|
0000ee00  69 66 74 25 28 6c 61 79  65 72 25 29 20 8c 20 61  |ift%(layer%) . a|
0000ee10  6e 73 6c 69 6d 25 28 6c  61 79 65 72 25 29 3d 4c  |nslim%(layer%)=L|
0000ee20  73 68 69 66 74 25 28 6c  61 79 65 72 25 29 0d 51  |shift%(layer%).Q|
0000ee30  7c 05 ed 0d 51 86 05 e1  0d 51 90 04 0d 51 9a 04  ||...Q....Q...Q..|
0000ee40  0d 51 a4 14 dd 20 f2 6c  65 61 64 69 6e 67 5f 7a  |.Q... .leading_z|
0000ee50  65 72 6f 73 0d 51 ae 0d  ea 20 78 31 25 2c 78 32  |eros.Q... x1%,x2|
0000ee60  25 0d 51 b8 2b 78 31 25  3d a4 61 6e 73 77 65 72  |%.Q.+x1%=.answer|
0000ee70  5f 6c 69 6d 69 74 28 6e  75 6d 31 25 29 3a 78 32  |_limit(num1%):x2|
0000ee80  25 3d 61 6e 73 6c 69 6d  25 28 30 29 0d 51 c2 11  |%=anslim%(0).Q..|
0000ee90  e7 20 78 32 25 3d 78 31  25 20 8c 20 e1 0d 51 cc  |. x2%=x1% . ..Q.|
0000eea0  04 0d 51 d6 14 e3 20 78  25 3d 78 32 25 2b 31 20  |..Q... x%=x2%+1 |
0000eeb0  b8 20 78 31 25 0d 51 e0  14 20 64 6f 6e 65 24 28  |. x1%.Q.. done$(|
0000eec0  30 2c 78 25 29 3d 22 64  22 0d 51 ea 05 ed 0d 51  |0,x%)="d".Q....Q|
0000eed0  f4 05 e1 0d 51 fe 04 0d  52 08 04 0d 52 12 19 dd  |....Q...R...R...|
0000eee0  20 a4 61 6e 73 77 65 72  5f 6c 69 6d 69 74 28 61  | .answer_limit(a|
0000eef0  6e 73 25 29 0d 52 1c 0f  ea 20 61 6e 73 24 2c 6c  |ns%).R... ans$,l|
0000ef00  65 6e 25 0d 52 26 1d 61  6e 73 24 3d c3 20 61 6e  |en%.R&.ans$=. an|
0000ef10  73 25 3a 6c 65 6e 25 3d  a9 20 61 6e 73 24 2d 31  |s%:len%=. ans$-1|
0000ef20  0d 52 30 09 3d 6c 65 6e  25 0d 52 3a 04 0d 52 44  |.R0.=len%.R:..RD|
0000ef30  04 0d 52 4e 12 dd 20 a4  71 75 65 73 74 5f 6c 69  |..RN.. .quest_li|
0000ef40  6d 69 74 0d 52 58 0d ea  20 6e 31 24 2c 6e 32 24  |mit.RX.. n1$,n2$|
0000ef50  0d 52 62 23 6e 31 25 3d  a9 20 c3 20 6e 75 6d 31  |.Rb#n1%=. . num1|
0000ef60  25 2d 31 3a 6e 32 25 3d  a9 20 c3 20 6e 75 6d 32  |%-1:n2%=. . num2|
0000ef70  25 2d 31 0d 52 6c 1b e7  20 6e 31 25 3e 6e 32 25  |%-1.Rl.. n1%>n2%|
0000ef80  20 8c 20 3d 6e 31 25 20  8b 20 3d 6e 32 25 0d 52  | . =n1% . =n2%.R|
0000ef90  76 04 0d 52 80 04 0d 52  8a 1f dd 20 f2 6d 65 73  |v..R...R... .mes|
0000efa0  73 61 67 65 5f 64 69 76  28 64 69 67 25 2c 4c 61  |sage_div(dig%,La|
0000efb0  79 65 72 25 29 0d 52 94  10 e7 20 64 69 67 25 3c  |yer%).R... dig%<|
0000efc0  30 20 8c 20 e1 0d 52 9e  4c e7 20 44 69 76 54 79  |0 . ..R.L. DivTy|
0000efd0  70 65 25 3d 31 20 8c 20  f2 6d 65 73 73 61 67 65  |pe%=1 . .message|
0000efe0  5f 64 69 76 5f 6c 6f 6e  67 28 64 69 67 25 2c 4c  |_div_long(dig%,L|
0000eff0  61 79 65 72 25 29 20 8b  20 f2 6d 65 73 73 61 67  |ayer%) . .messag|
0000f000  65 5f 64 69 76 5f 73 68  6f 72 74 28 64 69 67 25  |e_div_short(dig%|
0000f010  29 0d 52 a8 05 e1 0d 52  b2 04 0d 52 bc 04 0d 52  |).R....R...R...R|
0000f020  c6 1e dd 20 f2 6d 65 73  73 61 67 65 5f 64 69 76  |... .message_div|
0000f030  5f 73 68 6f 72 74 28 64  69 67 25 29 0d 52 d0 0f  |_short(dig%).R..|
0000f040  ea 20 6e 75 6d 24 2c 63  61 72 24 0d 52 da 10 e7  |. num$,car$.R...|
0000f050  20 63 61 72 72 79 25 3d  30 20 8c 0d 52 e4 62 20  | carry%=0 ..R.b |
0000f060  e7 20 bb 63 61 72 72 79  24 28 30 2c 64 69 67 25  |. .carry$(0,dig%|
0000f070  29 3c 3e 63 61 72 5f 64  69 67 25 28 64 69 67 25  |)<>car_dig%(dig%|
0000f080  29 20 8c 20 6d 65 73 73  61 67 65 24 28 31 29 3d  |) . message$(1)=|
0000f090  22 59 6f 75 20 6e 65 65  64 20 74 6f 20 64 69 76  |"You need to div|
0000f0a0  69 64 65 20 22 20 8b 20  6d 65 73 73 61 67 65 24  |ide " . message$|
0000f0b0  28 31 29 3d 22 44 69 76  69 64 65 20 22 0d 52 ee  |(1)="Divide ".R.|
0000f0c0  1e 20 6e 75 6d 24 3d a4  6d 65 73 73 61 67 65 5f  |. num$=.message_|
0000f0d0  73 68 6f 72 74 28 64 69  67 25 29 0d 52 f8 30 20  |short(dig%).R.0 |
0000f0e0  6d 65 73 73 61 67 65 24  28 31 29 3d 6d 65 73 73  |message$(1)=mess|
0000f0f0  61 67 65 24 28 31 29 2b  6e 75 6d 24 2b 22 20 62  |age$(1)+num$+" b|
0000f100  79 20 22 2b c3 20 6e 75  6d 32 25 0d 53 02 05 cc  |y "+. num2%.S...|
0000f110  0d 53 0c 6b 20 e7 20 61  6e 73 77 65 72 24 28 30  |.S.k . answer$(0|
0000f120  2c 64 69 67 25 2b 31 29  3c 3e 64 69 67 61 6e 73  |,dig%+1)<>digans|
0000f130  24 28 30 2c 64 69 67 25  2b 31 29 20 8c 20 6d 65  |$(0,dig%+1) . me|
0000f140  73 73 61 67 65 24 28 31  29 3d 22 59 6f 75 20 6e  |ssage$(1)="You n|
0000f150  65 65 64 20 74 6f 20 6d  75 6c 74 69 70 6c 79 20  |eed to multiply |
0000f160  22 20 8b 20 6d 65 73 73  61 67 65 24 28 31 29 3d  |" . message$(1)=|
0000f170  22 4d 75 6c 74 69 70 6c  79 20 22 0d 53 16 20 20  |"Multiply ".S.  |
0000f180  6e 75 6d 24 3d a4 6d 65  73 73 61 67 65 5f 73 68  |num$=.message_sh|
0000f190  6f 72 74 28 64 69 67 25  2b 31 29 0d 53 20 40 20  |ort(dig%+1).S @ |
0000f1a0  6d 65 73 73 61 67 65 24  28 31 29 3d 6d 65 73 73  |message$(1)=mess|
0000f1b0  61 67 65 24 28 31 29 2b  61 6e 73 77 65 72 24 28  |age$(1)+answer$(|
0000f1c0  30 2c 64 69 67 25 2b 31  29 2b 22 20 62 79 20 22  |0,dig%+1)+" by "|
0000f1d0  2b c3 6e 75 6d 32 25 2b  22 2e 22 0d 53 2a 31 20  |+.num2%+".".S*1 |
0000f1e0  6d 65 73 73 61 67 65 24  28 32 29 3d 22 53 75 62  |message$(2)="Sub|
0000f1f0  74 72 61 63 74 20 72 65  73 75 6c 74 20 66 72 6f  |tract result fro|
0000f200  6d 20 22 2b 6e 75 6d 24  2b 22 2e 22 0d 53 34 05  |m "+num$+".".S4.|
0000f210  cd 0d 53 3e 05 e1 0d 53  48 04 0d 53 52 04 0d 53  |..S>...SH..SR..S|
0000f220  5c 1a dd 20 a4 6d 65 73  73 61 67 65 5f 73 68 6f  |\.. .message_sho|
0000f230  72 74 28 64 69 67 25 29  0d 53 66 0f ea 20 63 61  |rt(dig%).Sf.. ca|
0000f240  72 24 2c 6e 75 6d 24 0d  53 70 16 e7 20 63 61 72  |r$,num$.Sp.. car|
0000f250  5f 64 69 67 25 28 64 69  67 25 29 20 8c 0d 53 7a  |_dig%(dig%) ..Sz|
0000f260  1a 20 63 61 72 24 3d c3  20 63 61 72 5f 64 69 67  |. car$=. car_dig|
0000f270  25 28 64 69 67 25 29 0d  53 84 1a 20 6e 75 6d 24  |%(dig%).S.. num$|
0000f280  3d 63 61 72 24 2b 64 69  67 31 24 28 64 69 67 25  |=car$+dig1$(dig%|
0000f290  29 0d 53 8e 05 cc 0d 53  98 65 20 e7 20 bb 20 64  |).S....S.e . . d|
0000f2a0  69 67 31 24 28 64 69 67  25 2b 31 29 3c 6e 75 6d  |ig1$(dig%+1)<num|
0000f2b0  32 25 20 80 20 63 61 72  5f 64 69 67 25 28 64 69  |2% . car_dig%(di|
0000f2c0  67 25 2b 31 29 3d 30 20  8c 20 6e 75 6d 24 3d 64  |g%+1)=0 . num$=d|
0000f2d0  69 67 31 24 28 64 69 67  25 2b 31 29 2b 64 69 67  |ig1$(dig%+1)+dig|
0000f2e0  31 24 28 64 69 67 25 29  20 8b 20 6e 75 6d 24 3d  |1$(dig%) . num$=|
0000f2f0  64 69 67 31 24 28 64 69  67 25 29 0d 53 a2 05 cd  |dig1$(dig%).S...|
0000f300  0d 53 ac 09 3d 6e 75 6d  24 0d 53 b6 04 0d 53 c0  |.S..=num$.S...S.|
0000f310  04 0d 53 ca 24 dd 20 f2  6d 65 73 73 61 67 65 5f  |..S.$. .message_|
0000f320  64 69 76 5f 6c 6f 6e 67  28 64 69 67 25 2c 4c 61  |div_long(dig%,La|
0000f330  79 65 72 25 29 0d 53 d4  22 ea 20 4c 74 79 70 65  |yer%).S.". Ltype|
0000f340  25 2c 61 6e 73 25 28 29  2c 70 6f 73 25 3a de 20  |%,ans%(),pos%:. |
0000f350  61 6e 73 25 28 38 29 0d  53 de 17 70 6f 73 25 3d  |ans%(8).S..pos%=|
0000f360  6c 61 79 65 72 4f 6e 25  28 64 69 67 25 29 0d 53  |layerOn%(dig%).S|
0000f370  e8 36 e3 20 6e 25 3d 31  20 b8 20 38 3a 61 6e 73  |.6. n%=1 . 8:ans|
0000f380  25 28 6e 25 29 3d 61 6e  73 77 65 72 25 28 6e 25  |%(n%)=answer%(n%|
0000f390  29 20 81 20 31 30 5e 4c  73 68 69 66 74 25 28 6e  |) . 10^Lshift%(n|
0000f3a0  25 29 3a ed 0d 53 f2 21  61 6e 73 25 28 30 29 3d  |%):..S.!ans%(0)=|
0000f3b0  6e 75 6d 31 25 20 81 20  31 30 5e 4c 73 68 69 66  |num1% . 10^Lshif|
0000f3c0  74 25 28 31 29 0d 53 fc  04 0d 54 06 10 e7 20 4c  |t%(1).S...T... L|
0000f3d0  61 79 65 72 25 3d 30 20  8c 0d 54 10 65 20 e7 20  |ayer%=0 ..T.e . |
0000f3e0  61 6e 73 25 28 70 6f 73  25 29 3c 3e 64 69 67 61  |ans%(pos%)<>diga|
0000f3f0  6e 73 25 28 70 6f 73 25  29 20 80 20 70 6f 73 25  |ns%(pos%) . pos%|
0000f400  3e 30 20 8c 20 6d 65 73  73 61 67 65 24 28 31 29  |>0 . message$(1)|
0000f410  3d 22 59 6f 75 20 6e 65  65 64 20 74 6f 20 64 69  |="You need to di|
0000f420  76 69 64 65 20 22 20 8b  20 6d 65 73 73 61 67 65  |vide " . message|
0000f430  24 28 31 29 3d 22 44 69  76 69 64 65 20 22 0d 54  |$(1)="Divide ".T|
0000f440  1a 3e 20 e7 20 64 69 67  25 3e 4c 73 68 69 66 74  |.> . dig%>Lshift|
0000f450  25 28 70 6f 73 25 29 20  8c 20 61 6e 73 25 28 70  |%(pos%) . ans%(p|
0000f460  6f 73 25 29 3d 61 6e 73  77 65 72 25 28 70 6f 73  |os%)=answer%(pos|
0000f470  25 29 20 81 20 31 30 5e  64 69 67 25 0d 54 24 3a  |%) . 10^dig%.T$:|
0000f480  20 6d 65 73 73 61 67 65  24 28 31 29 3d 6d 65 73  | message$(1)=mes|
0000f490  73 61 67 65 24 28 31 29  2b c3 61 6e 73 25 28 70  |sage$(1)+.ans%(p|
0000f4a0  6f 73 25 29 2b 22 20 62  79 20 22 2b c3 6e 75 6d  |os%)+" by "+.num|
0000f4b0  32 25 2b 22 2e 22 0d 54  2e 05 cd 0d 54 38 12 e7  |2%+".".T....T8..|
0000f4c0  20 4c 61 79 65 72 25 3d  30 20 8c 20 e1 0d 54 42  | Layer%=0 . ..TB|
0000f4d0  04 0d 54 4c 1a 4c 74 79  70 65 25 3d 2d 28 4c 61  |..TL.Ltype%=-(La|
0000f4e0  79 65 72 25 20 83 20 32  3d 31 29 0d 54 56 10 e7  |yer% . 2=1).TV..|
0000f4f0  20 4c 74 79 70 65 25 3d  31 20 8c 0d 54 60 79 20  | Ltype%=1 ..T`y |
0000f500  e7 20 61 6e 73 77 65 72  24 28 30 2c 4c 73 68 69  |. answer$(0,Lshi|
0000f510  66 74 25 28 70 6f 73 25  29 29 3c 3e 64 69 67 61  |ft%(pos%))<>diga|
0000f520  6e 73 24 28 30 2c 4c 73  68 69 66 74 25 28 70 6f  |ns$(0,Lshift%(po|
0000f530  73 25 29 29 20 8c 20 6d  65 73 73 61 67 65 24 28  |s%)) . message$(|
0000f540  31 29 3d 22 59 6f 75 20  6e 65 65 64 20 74 6f 20  |1)="You need to |
0000f550  6d 75 6c 74 69 70 6c 79  20 22 20 8b 20 6d 65 73  |multiply " . mes|
0000f560  73 61 67 65 24 28 31 29  3d 22 4d 75 6c 74 69 70  |sage$(1)="Multip|
0000f570  6c 79 20 22 0d 54 6a 47  20 6d 65 73 73 61 67 65  |ly ".TjG message|
0000f580  24 28 31 29 3d 6d 65 73  73 61 67 65 24 28 31 29  |$(1)=message$(1)|
0000f590  2b c3 6e 75 6d 32 25 2b  22 20 62 79 20 22 2b 61  |+.num2%+" by "+a|
0000f5a0  6e 73 77 65 72 24 28 30  2c 4c 73 68 69 66 74 25  |nswer$(0,Lshift%|
0000f5b0  28 70 6f 73 25 29 29 2b  22 2e 22 0d 54 74 05 cc  |(pos%))+".".Tt..|
0000f5c0  0d 54 7e 20 20 e7 20 64  69 67 25 3e 3d 4c 73 68  |.T~  . dig%>=Lsh|
0000f5d0  69 66 74 25 28 4c 61 79  65 72 25 2d 31 29 20 8c  |ift%(Layer%-1) .|
0000f5e0  0d 54 88 9e 20 20 e7 20  61 6e 73 77 65 72 25 28  |.T..  . answer%(|
0000f5f0  4c 61 79 65 72 25 2d 31  29 3c 3e 64 69 67 61 6e  |Layer%-1)<>digan|
0000f600  73 25 28 4c 61 79 65 72  25 2d 31 29 20 84 20 61  |s%(Layer%-1) . a|
0000f610  6e 73 77 65 72 25 28 4c  61 79 65 72 25 2d 32 29  |nswer%(Layer%-2)|
0000f620  3c 3e 64 69 67 61 6e 73  25 28 4c 61 79 65 72 25  |<>digans%(Layer%|
0000f630  2d 32 29 20 80 20 4c 61  79 65 72 25 3e 32 20 8c  |-2) . Layer%>2 .|
0000f640  20 6d 65 73 73 61 67 65  24 28 31 29 3d 22 59 6f  | message$(1)="Yo|
0000f650  75 20 6e 65 65 64 20 74  6f 20 73 75 62 74 72 61  |u need to subtra|
0000f660  63 74 20 22 20 8b 20 6d  65 73 73 61 67 65 24 28  |ct " . message$(|
0000f670  31 29 3d 22 53 75 62 74  72 61 63 74 20 22 0d 54  |1)="Subtract ".T|
0000f680  92 4a 20 20 6d 65 73 73  61 67 65 24 28 31 29 3d  |.J  message$(1)=|
0000f690  6d 65 73 73 61 67 65 24  28 31 29 2b c3 61 6e 73  |message$(1)+.ans|
0000f6a0  25 28 4c 61 79 65 72 25  2d 31 29 2b 22 20 66 72  |%(Layer%-1)+" fr|
0000f6b0  6f 6d 20 22 2b c3 61 6e  73 25 28 4c 61 79 65 72  |om "+.ans%(Layer|
0000f6c0  25 2d 32 29 2b 22 2e 22  0d 54 9c 06 20 cd 0d 54  |%-2)+".".T.. ..T|
0000f6d0  a6 05 cd 0d 54 b0 05 e1  0d 54 ba 04 0d 54 c4 04  |....T....T...T..|
0000f6e0  0d 54 ce 17 dd 20 f2 6d  65 73 73 61 67 65 28 73  |.T... .message(s|
0000f6f0  6f 75 72 63 65 24 29 0d  54 d8 26 ea 20 64 69 67  |ource$).T.&. dig|
0000f700  25 2c 63 25 2c 78 25 2c  59 25 2c 66 6c 67 25 2c  |%,c%,x%,Y%,flg%,|
0000f710  4c 61 79 65 72 25 2c 70  6c 61 63 65 25 0d 54 e2  |Layer%,place%.T.|
0000f720  5e e7 20 72 75 62 64 69  67 25 3c 3e 2d 31 20 8c  |^. rubdig%<>-1 .|
0000f730  20 64 69 67 25 3d 72 75  62 64 69 67 25 3a 4c 61  | dig%=rubdig%:La|
0000f740  79 65 72 25 3d 72 75 62  6c 61 79 65 72 25 3a 63  |yer%=rublayer%:c|
0000f750  25 3d 30 20 8b 20 64 69  67 25 3d 6e 65 78 74 64  |%=0 . dig%=nextd|
0000f760  69 67 25 3a 63 25 3d 63  61 72 72 79 25 3a 4c 61  |ig%:c%=carry%:La|
0000f770  79 65 72 25 3d 6c 61 79  65 72 25 0d 54 ec 71 e7  |yer%=layer%.T.q.|
0000f780  20 28 44 69 76 54 79 70  65 25 3d 30 20 80 20 6e  | (DivType%=0 . n|
0000f790  65 78 74 64 69 67 25 3d  2d 31 20 84 20 44 69 76  |extdig%=-1 . Div|
0000f7a0  54 79 70 65 25 3d 31 20  80 20 6e 65 78 74 64 69  |Type%=1 . nextdi|
0000f7b0  67 25 3d 61 6e 73 6c 69  6d 25 28 6c 61 79 65 72  |g%=anslim%(layer|
0000f7c0  6c 69 6d 25 29 2b 31 20  80 20 4c 61 79 65 72 25  |lim%)+1 . Layer%|
0000f7d0  3d 6c 61 79 65 72 6c 69  6d 25 29 20 80 20 72 75  |=layerlim%) . ru|
0000f7e0  62 64 69 67 25 3d 2d 31  20 8c 20 e1 0d 54 f6 11  |bdig%=-1 . ..T..|
0000f7f0  6d 65 73 73 61 67 65 24  28 29 3d 22 22 0d 55 00  |message$()="".U.|
0000f800  2e e7 20 48 65 6c 70 6c  65 76 25 3d 35 20 80 20  |.. Helplev%=5 . |
0000f810  73 6f 75 72 63 65 24 3d  22 70 6c 22 20 8c 20 73  |source$="pl" . s|
0000f820  6f 75 72 63 65 24 3d 22  70 72 22 0d 55 0a 13 f2  |ource$="pr".U...|
0000f830  72 65 6d 6f 76 65 5f 6d  65 73 73 61 67 65 0d 55  |remove_message.U|
0000f840  14 04 0d 55 1e 10 c8 8e  20 73 6f 75 72 63 65 24  |...U.... source$|
0000f850  20 ca 0d 55 28 24 20 c9  20 22 3f 22 2c 22 70 72  | ..U($ . "?","pr|
0000f860  22 3a 70 6c 61 63 65 25  3d 2d 28 48 65 6c 70 6c  |":place%=-(Helpl|
0000f870  65 76 25 3e 30 29 0d 55  32 36 20 20 20 20 20 20  |ev%>0).U26      |
0000f880  20 20 20 20 e7 20 48 65  6c 70 6c 65 76 25 3e 31  |    . Helplev%>1|
0000f890  20 8c 20 f2 6d 65 73 73  5f 63 6f 6c 75 6d 6e 28  | . .mess_column(|
0000f8a0  64 69 67 25 2c 4c 61 79  65 72 25 29 0d 55 3c 37  |dig%,Layer%).U<7|
0000f8b0  20 20 20 20 20 20 20 20  20 20 e7 20 48 65 6c 70  |          . Help|
0000f8c0  6c 65 76 25 3e 3d 34 20  8c 20 f2 6d 65 73 73 61  |lev%>=4 . .messa|
0000f8d0  67 65 5f 64 69 76 28 64  69 67 25 2c 4c 61 79 65  |ge_div(dig%,Laye|
0000f8e0  72 25 29 0d 55 46 34 20  c9 20 22 70 6c 22 3a e7  |r%).UF4 . "pl":.|
0000f8f0  20 48 65 6c 70 6c 65 76  25 3e 32 20 8c 20 f2 6d  | Helplev%>2 . .m|
0000f900  65 73 73 5f 63 6f 6c 75  6d 6e 28 64 69 67 25 2c  |ess_column(dig%,|
0000f910  4c 61 79 65 72 25 29 0d  55 50 26 20 c9 20 22 63  |Layer%).UP& . "c|
0000f920  6b 22 3a f2 77 72 6f 6e  67 5f 6e 75 6d 62 65 72  |k":.wrong_number|
0000f930  28 64 69 67 25 2c 4c 61  79 65 72 25 29 0d 55 5a  |(dig%,Layer%).UZ|
0000f940  05 cb 0d 55 64 04 0d 55  6e 13 f2 66 6f 6e 74 5f  |...Ud..Un..font_|
0000f950  74 6f 5f 73 63 72 65 65  6e 0d 55 78 18 f2 6d 65  |to_screen.Ux..me|
0000f960  73 73 61 67 65 5f 73 70  72 69 74 65 5f 62 61 63  |ssage_sprite_bac|
0000f970  6b 0d 55 82 05 e1 0d 55  8c 04 0d 55 96 04 0d 55  |k.U....U...U...U|
0000f980  a0 20 dd 20 f2 77 72 6f  6e 67 5f 6e 75 6d 62 65  |. . .wrong_numbe|
0000f990  72 28 64 69 67 25 2c 4c  61 79 65 72 25 29 0d 55  |r(dig%,Layer%).U|
0000f9a0  aa 24 6d 65 73 73 61 67  65 24 28 30 29 3d 22 4e  |.$message$(0)="N|
0000f9b0  6f 3b 20 74 68 61 74 27  73 20 6e 6f 74 20 69 74  |o; that's not it|
0000f9c0  2e 22 0d 55 b4 1d f2 6d  65 73 73 61 67 65 5f 64  |.".U...message_d|
0000f9d0  69 76 28 64 69 67 25 2c  4c 61 79 65 72 25 29 0d  |iv(dig%,Layer%).|
0000f9e0  55 be 05 e1 0d 55 c8 04  0d 55 d2 04 0d 55 dc 1f  |U....U...U...U..|
0000f9f0  dd 20 f2 6d 65 73 73 5f  63 6f 6c 75 6d 6e 28 64  |. .mess_column(d|
0000fa00  69 67 25 2c 4c 61 79 65  72 25 29 0d 55 e6 15 ea  |ig%,Layer%).U...|
0000fa10  20 76 61 72 24 2c 6f 70  24 2c 4c 74 79 70 65 25  | var$,op$,Ltype%|
0000fa20  0d 55 f0 1a 4c 74 79 70  65 25 3d 2d 28 4c 61 79  |.U..Ltype%=-(Lay|
0000fa30  65 72 25 20 83 20 32 3d  31 29 0d 55 fa 32 e7 20  |er% . 2=1).U.2. |
0000fa40  64 69 67 25 3c 30 20 8c  20 6d 65 73 73 61 67 65  |dig%<0 . message|
0000fa50  24 28 30 29 3d 22 46 69  6e 64 20 74 68 65 20 72  |$(0)="Find the r|
0000fa60  65 6d 61 69 6e 64 65 72  2e 22 3a e1 0d 56 04 04  |emainder.":..V..|
0000fa70  0d 56 0e 10 f2 63 6f 6c  75 6d 6e 5f 6e 61 6d 65  |.V...column_name|
0000fa80  0d 56 18 12 e7 20 44 69  76 54 79 70 65 25 3d 30  |.V... DivType%=0|
0000fa90  20 8c 0d 56 22 3c 20 e7  20 63 61 72 72 79 25 3d  | ..V"< . carry%=|
0000faa0  30 20 8c 20 6d 65 73 73  61 67 65 24 28 30 29 3d  |0 . message$(0)=|
0000fab0  22 44 69 76 69 64 65 22  20 8b 20 6d 65 73 73 61  |"Divide" . messa|
0000fac0  67 65 24 28 30 29 3d 22  43 61 72 72 79 22 0d 56  |ge$(0)="Carry".V|
0000fad0  2c 25 20 6d 65 73 73 61  67 65 24 28 30 29 3d 6d  |,% message$(0)=m|
0000fae0  65 73 73 61 67 65 24 28  30 29 2b 22 20 6e 65 78  |essage$(0)+" nex|
0000faf0  74 2e 22 0d 56 36 05 cc  0d 56 40 1c 20 e7 20 4c  |t.".V6...V@. . L|
0000fb00  74 79 70 65 25 3d 30 20  80 20 4c 61 79 65 72 25  |type%=0 . Layer%|
0000fb10  3e 30 20 8c 0d 56 4a 22  20 20 6d 65 73 73 61 67  |>0 ..VJ"  messag|
0000fb20  65 24 28 30 29 3d 22 53  75 62 74 72 61 63 74 20  |e$(0)="Subtract |
0000fb30  6e 65 78 74 2e 22 0d 56  54 06 20 cc 0d 56 5e 30  |next.".VT. ..V^0|
0000fb40  20 20 e7 20 4c 61 79 65  72 25 3e 30 20 8c 20 6f  |  . Layer%>0 . o|
0000fb50  70 24 3d 22 4d 75 6c 74  69 70 6c 79 22 20 8b 20  |p$="Multiply" . |
0000fb60  6f 70 24 3d 22 44 69 76  69 64 65 22 0d 56 68 1f  |op$="Divide".Vh.|
0000fb70  20 20 6d 65 73 73 61 67  65 24 28 30 29 3d 6f 70  |  message$(0)=op|
0000fb80  24 2b 22 20 6e 65 78 74  2e 20 22 0d 56 72 06 20  |$+" next. ".Vr. |
0000fb90  cd 0d 56 7c 84 20 e7 20  4c 61 79 65 72 25 3e 30  |..V|. . Layer%>0|
0000fba0  20 8c 20 e7 20 64 69 67  25 3c 4c 73 68 69 66 74  | . . dig%<Lshift|
0000fbb0  25 28 4c 61 79 65 72 25  2d 31 29 20 80 20 64 69  |%(Layer%-1) . di|
0000fbc0  67 25 3e 3d 4c 73 68 69  66 74 25 28 4c 61 79 65  |g%>=Lshift%(Laye|
0000fbd0  72 25 29 20 80 20 4c 74  79 70 65 25 3d 30 20 80  |r%) . Ltype%=0 .|
0000fbe0  20 4c 61 79 65 72 25 3e  30 20 8c 20 6d 65 73 73  | Layer%>0 . mess|
0000fbf0  61 67 65 24 28 30 29 3d  22 42 72 69 6e 67 20 64  |age$(0)="Bring d|
0000fc00  6f 77 6e 20 74 68 65 20  6e 65 78 74 20 66 69 67  |own the next fig|
0000fc10  75 72 65 2e 22 0d 56 86  05 cd 0d 56 90 05 e1 0d  |ure.".V....V....|
0000fc20  56 9a 04 0d 56 a4 04 0d  56 ae 12 dd 20 f2 63 6f  |V...V...V... .co|
0000fc30  6c 75 6d 6e 5f 6e 61 6d  65 0d 56 b8 19 e7 20 64  |lumn_name.V... d|
0000fc40  65 63 69 6d 61 6c 25 28  4e 61 6d 65 4e 6f 25 29  |ecimal%(NameNo%)|
0000fc50  20 8c 0d 56 c2 40 20 64  69 67 5f 6e 61 6d 65 24  | ..V.@ dig_name$|
0000fc60  28 29 3d 22 68 75 6e 64  72 65 64 74 68 73 22 2c  |()="hundredths",|
0000fc70  22 74 65 6e 74 68 73 22  2c 22 75 6e 69 74 73 22  |"tenths","units"|
0000fc80  2c 22 74 65 6e 73 22 2c  22 68 75 6e 64 72 65 64  |,"tens","hundred|
0000fc90  73 22 0d 56 cc 05 cc 0d  56 d6 46 20 64 69 67 5f  |s".V....V.F dig_|
0000fca0  6e 61 6d 65 24 28 29 3d  22 75 6e 69 74 73 22 2c  |name$()="units",|
0000fcb0  22 74 65 6e 73 22 2c 22  68 75 6e 64 72 65 64 73  |"tens","hundreds|
0000fcc0  22 2c 22 74 68 6f 75 73  61 6e 64 73 22 2c 22 74  |","thousands","t|
0000fcd0  65 6e 20 74 68 6f 75 73  61 6e 64 73 22 0d 56 e0  |en thousands".V.|
0000fce0  05 cd 0d 56 ea 05 e1 0d  56 f4 04 0d 56 fe 04 0d  |...V....V...V...|
0000fcf0  57 08 15 dd 20 f2 72 65  6d 6f 76 65 5f 6d 65 73  |W... .remove_mes|
0000fd00  73 61 67 65 0d 57 12 19  4d 66 6c 67 25 3d 30 3a  |sage.W..Mflg%=0:|
0000fd10  6d 65 73 73 61 67 65 24  28 29 3d 22 22 0d 57 1c  |message$()="".W.|
0000fd20  54 e7 20 67 61 6d 65 25  20 8c 20 c8 99 22 57 69  |T. game% . .."Wi|
0000fd30  6d 70 5f 46 6f 72 63 65  52 65 64 72 61 77 22 2c  |mp_ForceRedraw",|
0000fd40  68 61 6e 64 6c 65 25 28  67 61 6d 65 25 29 2c a4  |handle%(game%),.|
0000fd50  64 69 67 78 28 30 2c 2d  33 29 2c 59 70 6f 73 25  |digx(0,-3),Ypos%|
0000fd60  28 34 29 2c 31 32 37 36  2c 59 70 6f 73 25 28 31  |(4),1276,Ypos%(1|
0000fd70  29 0d 57 26 05 e1 0d 57  30 04 0d 57 3a 04 0d 57  |).W&...W0..W:..W|
0000fd80  44 15 dd 20 f2 66 6f 6e  74 5f 74 6f 5f 73 63 72  |D.. .font_to_scr|
0000fd90  65 65 6e 0d 57 4e 1d ea  20 79 25 2c 59 25 2c 6e  |een.WN.. y%,Y%,n|
0000fda0  25 2c 66 6c 67 25 2c 72  65 73 70 25 3a ea 20 85  |%,flg%,resp%:. .|
0000fdb0  0d 57 58 74 ee 20 85 20  ea 3a f7 20 85 3a 72 65  |.WXt. . .:. .:re|
0000fdc0  73 70 25 3d a4 65 72 72  6f 72 5f 6d 65 73 73 61  |sp%=.error_messa|
0000fdd0  67 65 28 22 46 6f 6e 74  73 20 6e 6f 74 20 73 65  |ge("Fonts not se|
0000fde0  65 6e 2c 20 64 6f 75 62  6c 65 20 63 6c 69 63 6b  |en, double click|
0000fdf0  20 6f 6e 20 64 69 72 65  63 74 6f 72 79 20 21 46  | on directory !F|
0000fe00  6f 6e 74 73 22 2c 22 4d  61 74 68 73 42 6f 6f 6b  |onts","MathsBook|
0000fe10  22 2c 31 29 3a 6d 65 73  73 61 67 65 24 28 29 3d  |",1):message$()=|
0000fe20  22 22 3a e1 0d 57 62 04  0d 57 6c 21 c8 99 22 57  |"":..Wb..Wl!.."W|
0000fe30  69 6d 70 5f 53 65 74 46  6f 6e 74 43 6f 6c 6f 75  |imp_SetFontColou|
0000fe40  72 73 22 2c 2c 30 2c 31  31 0d 57 76 30 c8 99 22  |rs",,0,11.Wv0.."|
0000fe50  46 6f 6e 74 5f 46 69 6e  64 46 6f 6e 74 22 2c 2c  |Font_FindFont",,|
0000fe60  22 4a 61 72 6d 61 6e 22  2c 32 39 30 2c 33 32 30  |"Jarman",290,320|
0000fe70  20 b8 20 46 6d 65 73 73  25 0d 57 80 1b c8 99 22  | . Fmess%.W...."|
0000fe80  46 6f 6e 74 5f 53 65 74  46 6f 6e 74 22 2c 46 6d  |Font_SetFont",Fm|
0000fe90  65 73 73 25 0d 57 8a 3d  c8 99 22 4f 53 5f 53 70  |ess%.W.=.."OS_Sp|
0000fea0  72 69 74 65 4f 70 22 2c  26 31 33 43 2c 73 61 72  |riteOp",&13C,sar|
0000feb0  65 61 25 2c 22 6d 65 73  73 61 67 65 22 2c 31 20  |ea%,"message",1 |
0000fec0  b8 20 72 30 25 2c 72 31  25 2c 72 32 25 2c 72 33  |. r0%,r1%,r2%,r3|
0000fed0  25 0d 57 94 19 f2 6d 65  73 73 61 67 65 5f 73 70  |%.W...message_sp|
0000fee0  72 69 74 65 5f 6c 69 6e  65 73 0d 57 9e 23 c8 99  |rite_lines.W.#..|
0000fef0  22 4f 53 5f 53 70 72 69  74 65 4f 70 22 2c 72 30  |"OS_SpriteOp",r0|
0000ff00  25 2c 72 31 25 2c 72 32  25 2c 72 33 25 0d 57 a8  |%,r1%,r2%,r3%.W.|
0000ff10  2d f2 77 6f 72 6b 5f 61  72 65 61 5f 6f 72 69 67  |-.work_area_orig|
0000ff20  69 6e 28 68 61 6e 64 6c  65 25 28 67 61 6d 65 25  |in(handle%(game%|
0000ff30  29 2c 6f 78 25 2c 6f 79  25 29 0d 57 b2 04 0d 57  |),ox%,oy%).W...W|
0000ff40  bc 4a 66 6c 67 25 3d a4  75 70 64 61 74 65 5f 77  |.Jflg%=.update_w|
0000ff50  69 6e 64 6f 77 28 68 61  6e 64 6c 65 25 28 67 61  |indow(handle%(ga|
0000ff60  6d 65 25 29 2c a4 64 69  67 78 28 30 2c 2d 33 29  |me%),.digx(0,-3)|
0000ff70  2c 59 70 6f 73 25 28 34  29 2c 31 32 37 36 2c 59  |,Ypos%(4),1276,Y|
0000ff80  70 6f 73 25 28 31 29 29  0d 57 c6 0b c8 95 20 66  |pos%(1)).W.... f|
0000ff90  6c 67 25 0d 57 d0 4f 20  c8 99 22 4f 53 5f 53 70  |lg%.W.O .."OS_Sp|
0000ffa0  72 69 74 65 4f 70 22 2c  26 31 33 34 2c 73 61 72  |riteOp",&134,sar|
0000ffb0  65 61 25 2c 22 6d 65 73  73 61 67 65 22 2c 6f 78  |ea%,"message",ox|
0000ffc0  25 2b a4 64 69 67 78 28  30 2c 2d 33 29 2c 6f 79  |%+.digx(0,-3),oy|
0000ffd0  25 2b 59 70 6f 73 25 28  34 29 2c 30 2c 2d 31 2c  |%+Ypos%(4),0,-1,|
0000ffe0  2d 31 0d 57 da 18 20 79  25 3d a4 6c 61 79 65 72  |-1.W.. y%=.layer|
0000fff0  59 28 30 2c 2d 31 29 2b  35 38 0d 57 e4 0f 20 e3  |Y(0,-1)+58.W.. .|
00010000  20 6e 25 3d 30 20 b8 20  32 0d 57 ee 0d 20 20 79  | n%=0 . 2.W..  y|
00010010  25 20 2d 3d 35 38 0d 57  f8 36 20 20 c8 99 22 46  |% -=58.W.6  .."F|
00010020  6f 6e 74 5f 50 61 69 6e  74 22 2c 2c 6d 65 73 73  |ont_Paint",,mess|
00010030  61 67 65 24 28 6e 25 29  2c 31 36 2c 6f 78 25 2b  |age$(n%),16,ox%+|
00010040  35 38 30 2c 6f 79 25 2b  79 25 2b 34 0d 58 02 06  |580,oy%+y%+4.X..|
00010050  20 ed 0d 58 0c 29 20 c8  99 22 57 69 6d 70 5f 47  | ..X.) .."Wimp_G|
00010060  65 74 52 65 63 74 61 6e  67 6c 65 22 2c 2c 62 6c  |etRectangle",,bl|
00010070  6f 63 6b 25 20 b8 20 66  6c 67 25 0d 58 16 05 ce  |ock% . flg%.X...|
00010080  0d 58 20 07 f7 20 85 0d  58 2a 05 e1 0d 58 34 04  |.X .. ..X*...X4.|
00010090  0d 58 3e 04 0d 58 48 1a  dd 20 f2 6d 65 73 73 61  |.X>..XH.. .messa|
000100a0  67 65 5f 73 70 72 69 74  65 5f 62 61 63 6b 0d 58  |ge_sprite_back.X|
000100b0  52 22 ea 20 72 30 25 2c  72 31 25 2c 72 32 25 2c  |R". r0%,r1%,r2%,|
000100c0  72 33 25 3a ea 20 85 3a  4d 66 6c 67 25 3d 2d 31  |r3%:. .:Mflg%=-1|
000100d0  0d 58 5c 0f ee 20 85 20  ea 3a f7 20 85 3a e1 0d  |.X\.. . .:. .:..|
000100e0  58 66 21 c8 99 22 57 69  6d 70 5f 53 65 74 46 6f  |Xf!.."Wimp_SetFo|
000100f0  6e 74 43 6f 6c 6f 75 72  73 22 2c 2c 30 2c 31 31  |ntColours",,0,11|
00010100  0d 58 70 1b c8 99 22 46  6f 6e 74 5f 53 65 74 46  |.Xp..."Font_SetF|
00010110  6f 6e 74 22 2c 46 6d 65  73 73 25 0d 58 7a 3d c8  |ont",Fmess%.Xz=.|
00010120  99 22 4f 53 5f 53 70 72  69 74 65 4f 70 22 2c 26  |."OS_SpriteOp",&|
00010130  31 33 43 2c 73 61 72 65  61 25 2c 22 6d 65 73 73  |13C,sarea%,"mess|
00010140  61 67 65 22 2c 31 20 b8  20 72 30 25 2c 72 31 25  |age",1 . r0%,r1%|
00010150  2c 72 32 25 2c 72 33 25  0d 58 84 19 f2 6d 65 73  |,r2%,r3%.X...mes|
00010160  73 61 67 65 5f 73 70 72  69 74 65 5f 6c 69 6e 65  |sage_sprite_line|
00010170  73 0d 58 8e 04 0d 58 98  18 79 25 3d 31 37 34 3a  |s.X...X..y%=174:|
00010180  f4 20 35 38 2a 32 2b 32  36 3d 31 34 32 0d 58 a2  |. 58*2+26=142.X.|
00010190  0e e3 20 6e 25 3d 30 20  b8 20 32 0d 58 ac 0c 20  |.. n%=0 . 2.X.. |
000101a0  79 25 20 2d 3d 35 38 0d  58 b6 2b 20 c8 99 22 46  |y% -=58.X.+ .."F|
000101b0  6f 6e 74 5f 50 61 69 6e  74 22 2c 2c 6d 65 73 73  |ont_Paint",,mess|
000101c0  61 67 65 24 28 6e 25 29  2c 31 36 2c 30 2c 79 25  |age$(n%),16,0,y%|
000101d0  2b 34 0d 58 c0 05 ed 0d  58 ca 04 0d 58 d4 27 c8  |+4.X....X...X.'.|
000101e0  99 22 4f 53 5f 53 70 72  69 74 65 4f 70 22 2c 72  |."OS_SpriteOp",r|
000101f0  30 25 2c 72 31 25 2c 72  32 25 2c 72 33 25 3a ef  |0%,r1%,r2%,r3%:.|
00010200  32 36 0d 58 de 1c c8 99  22 46 6f 6e 74 5f 4c 6f  |26.X...."Font_Lo|
00010210  73 65 46 6f 6e 74 22 2c  46 6d 65 73 73 25 0d 58  |seFont",Fmess%.X|
00010220  e8 07 f7 20 85 0d 58 f2  05 e1 0d 58 fc 04 0d 59  |... ..X....X...Y|
00010230  06 04 0d 59 10 20 dd 20  f2 6d 65 73 73 61 67 65  |...Y. . .message|
00010240  5f 6d 6f 64 65 5f 69 6e  64 65 70 65 6e 64 61 6e  |_mode_independan|
00010250  63 65 0d 59 1a 29 ea 20  77 4f 53 25 2c 68 4f 53  |ce.Y.). wOS%,hOS|
00010260  25 2c 77 50 25 2c 68 50  25 3a 77 4f 53 25 3d 36  |%,wP%,hP%:wOS%=6|
00010270  39 36 3a 68 4f 53 25 3d  31 37 34 0d 59 24 24 f2  |96:hOS%=174.Y$$.|
00010280  6f 73 5f 74 6f 5f 70 69  78 65 6c 73 28 77 4f 53  |os_to_pixels(wOS|
00010290  25 2c 68 4f 53 25 2c 77  50 25 2c 68 50 25 29 0d  |%,hOS%,wP%,hP%).|
000102a0  59 2e 35 c8 99 22 4f 53  5f 53 70 72 69 74 65 4f  |Y.5.."OS_SpriteO|
000102b0  70 22 2c 26 31 30 46 2c  73 61 72 65 61 25 2c 22  |p",&10F,sarea%,"|
000102c0  6d 65 73 73 61 67 65 22  2c 31 2c 77 50 25 2c 68  |message",1,wP%,h|
000102d0  50 25 2c eb 0d 59 38 05  e1 0d 59 42 04 0d 59 4c  |P%,..Y8...YB..YL|
000102e0  04 0d 59 56 1b dd 20 f2  6d 65 73 73 61 67 65 5f  |..YV.. .message_|
000102f0  73 70 72 69 74 65 5f 6c  69 6e 65 73 0d 59 60 1b  |sprite_lines.Y`.|
00010300  ea 20 72 30 25 2c 72 31  25 2c 72 32 25 2c 72 33  |. r0%,r1%,r2%,r3|
00010310  25 2c 78 25 2c 79 25 0d  59 6a 18 c8 99 22 57 69  |%,x%,y%.Yj..."Wi|
00010320  6d 70 5f 53 65 74 43 6f  6c 6f 75 72 22 2c 30 0d  |mp_SetColour",0.|
00010330  59 74 15 c8 93 20 c8 90  20 30 2c 30 2c 36 39 36  |Yt... .. 0,0,696|
00010340  2c 32 30 30 0d 59 7e 19  c8 99 22 57 69 6d 70 5f  |,200.Y~..."Wimp_|
00010350  53 65 74 43 6f 6c 6f 75  72 22 2c 31 35 0d 59 88  |SetColour",15.Y.|
00010360  04 0d 59 92 15 59 25 3d  59 70 6f 73 25 28 34 29  |..Y..Y%=Ypos%(4)|
00010370  3a f4 20 2d 32 36 0d 59  9c 18 e3 20 78 25 3d 2d  |:. -26.Y... x%=-|
00010380  35 38 30 20 b8 20 36 39  36 20 88 20 35 38 0d 59  |580 . 696 . 58.Y|
00010390  a6 1e 20 ec 20 78 25 2c  2d 39 30 34 2d 59 25 3a  |.. . x%,-904-Y%:|
000103a0  df 20 78 25 2c 2d 31 35  30 2d 59 25 0d 59 b0 05  |. x%,-150-Y%.Y..|
000103b0  ed 0d 59 ba 19 e3 20 79  25 3d 2d 39 30 34 20 b8  |..Y... y%=-904 .|
000103c0  20 2d 31 35 30 20 88 20  35 38 0d 59 c4 1d 20 ec  | -150 . 58.Y.. .|
000103d0  20 2d 35 38 30 2c 79 25  2d 59 25 3a df 20 36 39  | -580,y%-Y%:. 69|
000103e0  36 2c 79 25 2d 59 25 0d  59 ce 05 ed 0d 59 d8 05  |6,y%-Y%.Y....Y..|
000103f0  e1 0d 59 e2 04 0d 59 ec  04 0d 59 f6 18 dd 20 f2  |..Y...Y...Y... .|
00010400  73 61 76 65 5f 73 75 6d  28 73 6f 75 72 63 65 24  |save_sum(source$|
00010410  29 0d 5a 00 1a ea 20 64  25 2c 72 65 73 70 25 2c  |).Z... d%,resp%,|
00010420  4c 6c 69 6d 25 2c 45 6c  69 6d 25 0d 5a 0a 3c e7  |Llim%,Elim%.Z.<.|
00010430  20 44 69 76 54 79 70 65  25 3d 31 20 8c 20 4c 6c  | DivType%=1 . Ll|
00010440  69 6d 25 3d 6c 61 79 65  72 6c 69 6d 25 3a 45 6c  |im%=layerlim%:El|
00010450  69 6d 25 3d 38 20 8b 20  4c 6c 69 6d 25 3d 31 3a  |im%=8 . Llim%=1:|
00010460  45 6c 69 6d 25 3d 31 0d  5a 14 3a 50 63 6f 75 6e  |Elim%=1.Z.:Pcoun|
00010470  74 25 20 2b 3d 31 3a 50  73 61 76 65 25 3d 2d 31  |t% +=1:Psave%=-1|
00010480  3a 50 64 65 63 25 28 50  63 6f 75 6e 74 25 29 3d  |:Pdec%(Pcount%)=|
00010490  64 65 63 69 6d 61 6c 25  28 4e 61 6d 65 4e 6f 25  |decimal%(NameNo%|
000104a0  29 0d 5a 1e 1f 50 6c 69  6d 51 25 28 50 63 6f 75  |).Z..PlimQ%(Pcou|
000104b0  6e 74 25 29 3d a9 20 c3  20 6e 75 6d 31 25 2d 31  |nt%)=. . num1%-1|
000104c0  0d 5a 28 04 0d 5a 32 2b  50 70 6f 73 25 28 50 63  |.Z(..Z2+Ppos%(Pc|
000104d0  6f 75 6e 74 25 2b 31 29  3d 50 70 6f 73 25 28 50  |ount%+1)=Ppos%(P|
000104e0  63 6f 75 6e 74 25 29 2b  4c 6c 69 6d 25 2b 33 0d  |count%)+Llim%+3.|
000104f0  5a 3c 1e e7 20 50 63 6f  75 6e 74 25 3e 30 20 80  |Z<.. Pcount%>0 .|
00010500  20 50 63 6f 6c 66 6c 67  25 3d 30 20 8c 0d 5a 46  | Pcolflg%=0 ..ZF|
00010510  42 20 e7 20 50 70 6f 73  25 28 50 63 6f 75 6e 74  |B . Ppos%(Pcount|
00010520  25 29 2b 4c 6c 69 6d 25  2b 32 3d 32 35 20 8c 20  |%)+Llim%+2=25 . |
00010530  50 70 6f 73 25 28 50 63  6f 75 6e 74 25 2b 31 29  |Ppos%(Pcount%+1)|
00010540  3d 32 35 3a 50 63 6f 6c  66 6c 67 25 3d 2d 31 0d  |=25:Pcolflg%=-1.|
00010550  5a 50 5a 20 e7 20 50 70  6f 73 25 28 50 63 6f 75  |ZPZ . Ppos%(Pcou|
00010560  6e 74 25 29 2b 4c 6c 69  6d 25 2b 32 3e 32 35 20  |nt%)+Llim%+2>25 |
00010570  8c 20 50 70 6f 73 25 28  50 63 6f 75 6e 74 25 29  |. Ppos%(Pcount%)|
00010580  3d 32 35 3a 50 70 6f 73  25 28 50 63 6f 75 6e 74  |=25:Ppos%(Pcount|
00010590  25 2b 31 29 3d 4c 6c 69  6d 25 2b 32 38 3a 50 63  |%+1)=Llim%+28:Pc|
000105a0  6f 6c 66 6c 67 25 3d 2d  31 0d 5a 5a 05 cd 0d 5a  |olflg%=-1.ZZ...Z|
000105b0  64 04 0d 5a 6e 0e e3 20  64 25 3d 30 20 b8 20 34  |d..Zn.. d%=0 . 4|
000105c0  0d 5a 78 21 20 50 64 69  67 31 24 28 50 63 6f 75  |.Zx! Pdig1$(Pcou|
000105d0  6e 74 25 2c 64 25 29 3d  64 69 67 31 24 28 64 25  |nt%,d%)=dig1$(d%|
000105e0  29 0d 5a 82 2a 20 e7 20  64 25 3c 32 20 8c 20 50  |).Z.* . d%<2 . P|
000105f0  64 69 67 32 24 28 50 63  6f 75 6e 74 25 2c 64 25  |dig2$(Pcount%,d%|
00010600  29 3d 64 69 67 32 24 28  64 25 29 0d 5a 8c 05 ed  |)=dig2$(d%).Z...|
00010610  0d 5a 96 04 0d 5a a0 31  e7 20 50 70 6f 73 25 28  |.Z...Z.1. Ppos%(|
00010620  50 63 6f 75 6e 74 25 2b  31 29 2b 45 6c 69 6d 25  |Pcount%+1)+Elim%|
00010630  2b 33 3e 35 30 20 80 20  73 6f 75 72 63 65 24 3d  |+3>50 . source$=|
00010640  22 53 22 20 8c 0d 5a aa  46 20 24 50 69 63 62 75  |"S" ..Z.F $Picbu|
00010650  66 66 31 25 3d 22 44 6f  20 79 6f 75 20 77 61 6e  |ff1%="Do you wan|
00010660  74 20 69 6e 63 6f 72 72  65 63 74 22 3a 24 50 69  |t incorrect":$Pi|
00010670  63 62 75 66 66 32 25 3d  22 73 75 6d 73 20 70 72  |cbuff2%="sums pr|
00010680  69 6e 74 65 64 20 6f 75  74 2e 22 0d 5a b4 41 20  |inted out.".Z.A |
00010690  50 32 68 61 6e 64 6c 65  25 3d a4 72 65 6c 61 74  |P2handle%=.relat|
000106a0  69 76 65 5f 77 69 6e 64  6f 77 28 68 61 6e 64 6c  |ive_window(handl|
000106b0  65 25 28 67 61 6d 65 25  29 2c 50 32 68 61 6e 64  |e%(game%),P2hand|
000106c0  6c 65 25 2c 39 30 30 2c  34 30 36 29 0d 5a be 05  |le%,900,406).Z..|
000106d0  cd 0d 5a c8 05 e1 0d 5a  d2 04 0d 5a dc 04 0d 5a  |..Z....Z...Z...Z|
000106e0  e6 15 dd 20 f2 70 72 69  6e 74 5f 6f 75 74 5f 73  |... .print_out_s|
000106f0  75 6d 73 0d 5a f0 26 ea  20 73 74 61 72 74 25 2c  |ums.Z.&. start%,|
00010700  72 65 6a 25 2c 45 6c 69  6d 25 3a 73 74 61 72 74  |rej%,Elim%:start|
00010710  25 3d 50 63 6f 75 6e 74  25 0d 5a fa 24 e7 20 44  |%=Pcount%.Z.$. D|
00010720  69 76 54 79 70 65 25 3d  31 20 8c 20 45 6c 69 6d  |ivType%=1 . Elim|
00010730  25 3d 38 20 8b 20 45 6c  69 6d 25 3d 31 0d 5b 04  |%=8 . Elim%=1.[.|
00010740  10 63 61 72 5f 64 69 67  25 28 29 3d 30 0d 5b 0e  |.car_dig%()=0.[.|
00010750  33 e7 20 50 70 6f 73 25  28 50 63 6f 75 6e 74 25  |3. Ppos%(Pcount%|
00010760  2b 31 29 2b 45 6c 69 6d  25 2b 33 3e 35 30 20 8c  |+1)+Elim%+3>50 .|
00010770  20 f2 73 75 6d 5f 70 72  69 6e 74 6f 75 74 3a e1  | .sum_printout:.|
00010780  0d 5b 18 05 f5 0d 5b 22  06 20 f5 0d 5b 2c 21 20  |.[....[". ..[,! |
00010790  20 f2 6d 61 6b 65 5f 64  69 76 28 44 6c 65 76 65  | .make_div(Dleve|
000107a0  6c 25 28 4e 61 6d 65 4e  6f 25 29 29 0d 5b 36 1f  |l%(NameNo%)).[6.|
000107b0  20 20 f2 64 69 67 69 74  73 28 6e 75 6d 31 25 2c  |  .digits(num1%,|
000107c0  64 69 67 31 24 28 29 2c  2d 31 29 0d 5b 40 1f 20  |dig1$(),-1).[@. |
000107d0  20 f2 64 69 67 69 74 73  28 6e 75 6d 32 25 2c 64  | .digits(num2%,d|
000107e0  69 67 32 24 28 29 2c 2d  31 29 0d 5b 4a 15 20 20  |ig2$(),-1).[J.  |
000107f0  f2 6c 61 79 65 72 73 28  30 2c 72 65 6a 25 29 0d  |.layers(0,rej%).|
00010800  5b 54 0d 20 fd 20 72 65  6a 25 3d 30 0d 5b 5e 13  |[T. . rej%=0.[^.|
00010810  20 f2 73 61 76 65 5f 73  75 6d 28 22 50 22 29 0d  | .save_sum("P").|
00010820  5b 68 23 fd 20 50 70 6f  73 25 28 50 63 6f 75 6e  |[h#. Ppos%(Pcoun|
00010830  74 25 29 2b 6c 61 79 65  72 6c 69 6d 25 2b 33 3e  |t%)+layerlim%+3>|
00010840  35 30 0d 5b 72 1d 50 63  6f 75 6e 74 25 20 2d 3d  |50.[r.Pcount% -=|
00010850  31 3a f2 73 75 6d 5f 70  72 69 6e 74 6f 75 74 0d  |1:.sum_printout.|
00010860  5b 7c 05 e1 0d 5b 86 04  0d 5b 90 04 0d 5b 9a 25  |[|...[...[...[.%|
00010870  dd 20 f2 73 65 74 5f 75  70 5f 70 72 69 6e 74 6f  |. .set_up_printo|
00010880  75 74 28 f8 20 63 68 25  2c 68 65 69 67 68 74 25  |ut(. ch%,height%|
00010890  29 0d 5b a4 10 ea 20 6c  65 66 74 25 2c 74 6f 70  |).[... left%,top|
000108a0  25 0d 5b ae 14 c8 99 22  48 6f 75 72 67 6c 61 73  |%.[...."Hourglas|
000108b0  73 5f 4f 6e 22 0d 5b b8  15 63 68 25 3d ae 28 22  |s_On".[..ch%=.("|
000108c0  70 72 69 6e 74 65 72 3a  22 29 0d 5b c2 29 c8 99  |printer:").[.)..|
000108d0  22 50 44 72 69 76 65 72  5f 53 65 6c 65 63 74 4a  |"PDriver_SelectJ|
000108e0  6f 62 22 2c 63 68 25 2c  22 70 72 69 6e 74 5f 6a  |ob",ch%,"print_j|
000108f0  6f 62 22 0d 5b cc 2a c8  99 22 50 44 72 69 76 65  |ob".[.*.."PDrive|
00010900  72 5f 50 61 67 65 53 69  7a 65 22 20 b8 20 2c 2c  |r_PageSize" . ,,|
00010910  2c 6c 65 66 74 25 2c 2c  2c 74 6f 70 25 0d 5b d6  |,left%,,,top%.[.|
00010920  38 21 50 72 65 63 74 25  3d 30 3a 50 72 65 63 74  |8!Prect%=0:Prect|
00010930  25 21 34 3d 68 65 69 67  68 74 25 3a 50 72 65 63  |%!4=height%:Prec|
00010940  74 25 21 38 3d 31 32 38  30 3a 50 72 65 63 74 25  |t%!8=1280:Prect%|
00010950  21 31 32 3d 30 0d 5b e0  3b 21 50 74 72 61 6e 73  |!12=0.[.;!Ptrans|
00010960  25 3d 31 3c 3c 31 36 3a  50 74 72 61 6e 73 25 21  |%=1<<16:Ptrans%!|
00010970  34 3d 30 3a 50 74 72 61  6e 73 25 21 38 3d 30 3a  |4=0:Ptrans%!8=0:|
00010980  50 74 72 61 6e 73 25 21  31 32 3d 31 3c 3c 31 36  |Ptrans%!12=1<<16|
00010990  0d 5b ea 30 21 50 70 6c  6f 74 25 3d 6c 65 66 74  |.[.0!Pplot%=left|
000109a0  25 2b 39 30 30 30 3a 50  70 6c 6f 74 25 21 34 3d  |%+9000:Pplot%!4=|
000109b0  74 6f 70 25 2b 68 65 69  67 68 74 25 2a 34 30 30  |top%+height%*400|
000109c0  0d 5b f4 3f c8 99 22 50  44 72 69 76 65 72 5f 47  |.[.?.."PDriver_G|
000109d0  69 76 65 52 65 63 74 61  6e 67 6c 65 22 2c 30 2c  |iveRectangle",0,|
000109e0  50 72 65 63 74 25 2c 50  74 72 61 6e 73 25 2c 50  |Prect%,Ptrans%,P|
000109f0  70 6c 6f 74 25 2c 26 46  46 46 46 46 46 30 30 0d  |plot%,&FFFFFF00.|
00010a00  5b fe 05 e1 0d 5c 08 04  0d 5c 12 04 0d 5c 1c 18  |[....\...\...\..|
00010a10  dd 20 f2 65 6e 64 5f 70  72 69 6e 74 6f 75 74 28  |. .end_printout(|
00010a20  63 68 25 29 0d 5c 26 1a  c8 99 22 50 44 72 69 76  |ch%).\&..."PDriv|
00010a30  65 72 5f 45 6e 64 4a 6f  62 22 2c 63 68 25 0d 5c  |er_EndJob",ch%.\|
00010a40  30 15 c8 99 22 48 6f 75  72 67 6c 61 73 73 5f 4f  |0..."Hourglass_O|
00010a50  66 66 22 0d 5c 3a 09 d9  23 63 68 25 0d 5c 44 05  |ff".\:..#ch%.\D.|
00010a60  e1 0d 5c 4e 04 0d 5c 58  04 0d 5c 62 13 dd 20 f2  |..\N..\X..\b.. .|
00010a70  73 75 6d 5f 70 72 69 6e  74 6f 75 74 0d 5c 6c 0e  |sum_printout.\l.|
00010a80  ea 20 66 6c 67 25 2c 63  68 25 0d 5c 76 07 ea 20  |. flg%,ch%.\v.. |
00010a90  85 0d 5c 80 60 ee 20 85  20 ea 3a f7 20 85 3a c8  |..\.`. . .:. .:.|
00010aa0  99 22 50 44 72 69 76 65  72 5f 41 62 6f 72 74 4a  |."PDriver_AbortJ|
00010ab0  6f 62 22 2c 63 68 25 3a  d9 23 63 68 25 3a c8 99  |ob",ch%:.#ch%:..|
00010ac0  22 48 6f 75 72 67 6c 61  73 73 5f 4f 66 66 22 3a  |"Hourglass_Off":|
00010ad0  50 63 6f 6c 66 6c 67 25  3d 30 3a f2 65 72 72 6f  |Pcolflg%=0:.erro|
00010ae0  72 28 22 4d 61 74 68 73  5f 74 61 73 6b 22 29 3a  |r("Maths_task"):|
00010af0  e1 0d 5c 8a 04 0d 5c 94  1f f2 73 65 74 5f 75 70  |..\...\...set_up|
00010b00  5f 70 72 69 6e 74 6f 75  74 28 63 68 25 2c 2d 31  |_printout(ch%,-1|
00010b10  37 34 30 29 0d 5c 9e 1a  c8 99 22 46 6f 6e 74 5f  |740).\...."Font_|
00010b20  53 65 74 46 6f 6e 74 22  2c 46 73 75 6d 25 0d 5c  |SetFont",Fsum%.\|
00010b30  a8 04 0d 5c b2 2c c8 99  22 50 44 72 69 76 65 72  |...\.,.."PDriver|
00010b40  5f 44 72 61 77 50 61 67  65 22 2c 31 2c 62 6c 6f  |_DrawPage",1,blo|
00010b50  63 6b 25 2c 30 2c 30 20  b8 20 66 6c 67 25 0d 5c  |ck%,0,0 . flg%.\|
00010b60  bc 0b c8 95 20 66 6c 67  25 0d 5c c6 12 20 f2 70  |.... flg%.\.. .p|
00010b70  72 69 6e 74 6f 75 74 5f  73 75 6d 0d 5c d0 2c 20  |rintout_sum.\., |
00010b80  c8 99 22 50 44 72 69 76  65 72 5f 47 65 74 52 65  |.."PDriver_GetRe|
00010b90  63 74 61 6e 67 6c 65 22  2c 2c 62 6c 6f 63 6b 25  |ctangle",,block%|
00010ba0  20 b8 20 66 6c 67 25 0d  5c da 05 ce 0d 5c e4 16  | . flg%.\....\..|
00010bb0  f2 65 6e 64 5f 70 72 69  6e 74 6f 75 74 28 63 68  |.end_printout(ch|
00010bc0  25 29 0d 5c ee 0e 50 63  6f 6c 66 6c 67 25 3d 30  |%).\..Pcolflg%=0|
00010bd0  0d 5c f8 07 f7 20 85 0d  5d 02 05 e1 0d 5d 0c 04  |.\... ..]....]..|
00010be0  0d 5d 16 04 0d 5d 20 24  dd 20 a4 70 72 69 6e 74  |.]...] $. .print|
00010bf0  64 69 67 78 28 78 25 2c  64 25 29 3d 78 25 2b 37  |digx(x%,d%)=x%+7|
00010c00  35 2a 28 34 2d 64 25 29  0d 5d 2a 04 0d 5d 34 11  |5*(4-d%).]*..]4.|
00010c10  dd 20 a4 73 75 6d 59 28  70 6f 73 25 29 0d 5d 3e  |. .sumY(pos%).]>|
00010c20  11 3d 2d 32 39 30 2d 35  38 2a 70 6f 73 25 0d 5d  |.=-290-58*pos%.]|
00010c30  48 04 0d 5d 52 21 dd 20  a4 73 75 6d 58 28 70 6f  |H..]R!. .sumX(po|
00010c40  73 25 29 3d 37 37 2d 36  37 35 2a 28 70 6f 73 25  |s%)=77-675*(pos%|
00010c50  3e 34 29 0d 5d 5c 04 0d  5d 66 12 dd 20 a4 68 65  |>4).]\..]f.. .he|
00010c60  69 67 68 74 28 6e 6f 25  29 0d 5d 70 13 e7 20 6e  |ight(no%).]p.. n|
00010c70  6f 25 3e 34 20 8c 20 6e  6f 25 3d 34 0d 5d 7a 11  |o%>4 . no%=4.]z.|
00010c80  3d 2d 35 36 36 2d 33 30  30 2a 6e 6f 25 0d 5d 84  |=-566-300*no%.].|
00010c90  04 0d 5d 8e 04 0d 5d 98  13 dd 20 f2 70 72 69 6e  |..]...]... .prin|
00010ca0  74 6f 75 74 5f 73 75 6d  0d 5d a2 4f ea 20 78 25  |tout_sum.].O. x%|
00010cb0  2c 58 31 25 2c 64 25 2c  73 79 6d 62 25 2c 73 79  |,X1%,d%,symb%,sy|
00010cc0  6d 62 24 2c 63 6f 6c 78  25 2c 6c 69 6d 51 25 2c  |mb$,colx%,limQ%,|
00010cd0  59 35 25 2c 59 34 25 2c  59 33 25 2c 59 32 25 2c  |Y5%,Y4%,Y3%,Y2%,|
00010ce0  59 25 2c 59 30 25 2c 73  75 6d 25 2c 70 6f 73 25  |Y%,Y0%,sum%,pos%|
00010cf0  2c 73 68 69 66 74 25 0d  5d ac 25 c8 99 22 43 6f  |,shift%.].%.."Co|
00010d00  6c 6f 75 72 54 72 61 6e  73 5f 53 65 74 47 43 4f  |lourTrans_SetGCO|
00010d10  4c 22 2c 26 33 33 33 33  33 33 30 30 0d 5d b6 1a  |L",&33333300.]..|
00010d20  c8 99 22 46 6f 6e 74 5f  53 65 74 46 6f 6e 74 22  |.."Font_SetFont"|
00010d30  2c 46 73 75 6d 25 0d 5d  c0 04 0d 5d ca 0a f4 20  |,Fsum%.]...]... |
00010d40  47 72 69 64 0d 5d d4 16  e3 20 78 25 3d 30 20 b8  |Grid.]... x%=0 .|
00010d50  20 31 32 37 36 20 88 20  35 38 0d 5d de 29 20 ec  | 1276 . 58.].) .|
00010d60  20 78 25 2c 31 31 36 2a  28 78 25 3e 30 20 80 20  | x%,116*(x%>0 . |
00010d70  78 25 3c 31 32 37 36 29  3a df 20 78 25 2c 2d 31  |x%<1276):. x%,-1|
00010d80  37 34 30 0d 5d e8 05 ed  0d 5d f2 18 e3 20 79 25  |740.]....]... y%|
00010d90  3d 30 20 b8 20 2d 31 37  34 30 20 88 20 2d 35 38  |=0 . -1740 . -58|
00010da0  0d 5d fc 18 20 c8 93 20  c8 90 20 30 2c 79 25 2d  |.].. .. .. 0,y%-|
00010db0  31 2c 31 32 37 36 2c 31  0d 5e 06 05 ed 0d 5e 10  |1,1276,1.^....^.|
00010dc0  18 c8 93 20 c8 90 20 30  2c 2d 31 37 33 38 2c 31  |... .. 0,-1738,1|
00010dd0  32 37 36 2c 31 0d 5e 1a  04 0d 5e 24 1d c8 99 22  |276,1.^...^$..."|
00010de0  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 53 65 74 47  |ColourTrans_SetG|
00010df0  43 4f 4c 22 2c 30 0d 5e  2e 31 c8 99 22 43 6f 6c  |COL",0.^.1.."Col|
00010e00  6f 75 72 54 72 61 6e 73  5f 53 65 74 46 6f 6e 74  |ourTrans_SetFont|
00010e10  43 6f 6c 6f 75 72 73 22  2c 2c 26 46 46 46 46 46  |Colours",,&FFFFF|
00010e20  46 30 30 2c 30 2c 36 0d  5e 38 2f c8 99 22 46 6f  |F00,0,6.^8/.."Fo|
00010e30  6e 74 5f 50 61 69 6e 74  22 2c 2c 22 20 22 2b 6e  |nt_Paint",," "+n|
00010e40  61 6d 65 24 28 4e 61 6d  65 4e 6f 25 29 2c 31 36  |ame$(NameNo%),16|
00010e50  2c 30 2c 2d 35 38 0d 5e  42 2c c8 99 22 46 6f 6e  |,0,-58.^B,.."Fon|
00010e60  74 5f 50 61 69 6e 74 22  2c 2c 22 20 22 2b 24 6c  |t_Paint",," "+$l|
00010e70  6f 61 64 62 75 66 66 25  2c 31 36 2c 30 2c 2d 31  |oadbuff%,16,0,-1|
00010e80  31 36 0d 5e 4c 24 c8 99  22 46 6f 6e 74 5f 50 61  |16.^L$.."Font_Pa|
00010e90  69 6e 74 22 2c 2c a4 64  61 74 65 2c 31 36 2c 39  |int",,.date,16,9|
00010ea0  30 30 2c 2d 35 38 0d 5e  56 04 0d 5e 60 16 e3 20  |00,-58.^V..^`.. |
00010eb0  73 75 6d 25 3d 30 20 b8  20 50 63 6f 75 6e 74 25  |sum%=0 . Pcount%|
00010ec0  0d 5e 6a 53 20 e7 20 50  70 6f 73 25 28 73 75 6d  |.^jS . Ppos%(sum|
00010ed0  25 29 3e 3d 32 35 20 8c  20 70 6f 73 25 3d 50 70  |%)>=25 . pos%=Pp|
00010ee0  6f 73 25 28 73 75 6d 25  29 2d 32 35 3a 73 68 69  |os%(sum%)-25:shi|
00010ef0  66 74 25 3d 36 33 38 20  8b 20 70 6f 73 25 3d 50  |ft%=638 . pos%=P|
00010f00  70 6f 73 25 28 73 75 6d  25 29 3a 73 68 69 66 74  |pos%(sum%):shift|
00010f10  25 3d 30 0d 5e 74 1f 20  59 31 25 3d a4 73 75 6d  |%=0.^t. Y1%=.sum|
00010f20  59 28 70 6f 73 25 29 3a  59 32 25 3d 59 31 25 2d  |Y(pos%):Y2%=Y1%-|
00010f30  35 38 0d 5e 7e 04 0d 5e  88 30 20 6c 65 6e 25 3d  |58.^~..^.0 len%=|
00010f40  50 6c 69 6d 51 25 28 73  75 6d 25 29 3a 78 25 3d  |PlimQ%(sum%):x%=|
00010f50  a4 64 69 67 78 28 6c 65  6e 25 2c 30 29 2d 36 2b  |.digx(len%,0)-6+|
00010f60  73 68 69 66 74 25 0d 5e  92 1f 20 c8 93 20 c8 90  |shift%.^.. .. ..|
00010f70  20 78 25 2c 59 31 25 2c  35 38 2a 28 6c 65 6e 25  | x%,Y1%,58*(len%|
00010f80  2b 31 29 2c 34 0d 5e 9c  16 20 c8 93 20 c8 90 20  |+1),4.^.. .. .. |
00010f90  78 25 2c 59 32 25 2c 36  2c 35 38 0d 5e a6 04 0d  |x%,Y2%,6,58.^...|
00010fa0  5e b0 0f 20 e3 20 64 25  3d 30 20 b8 20 34 0d 5e  |^.. . d%=0 . 4.^|
00010fb0  ba 3e 20 20 78 31 25 3d  a4 64 69 67 78 28 64 25  |.>  x1%=.digx(d%|
00010fc0  2c 30 29 2b 73 68 69 66  74 25 2b 31 32 3a 78 32  |,0)+shift%+12:x2|
00010fd0  25 3d a4 64 69 67 78 28  64 25 2c 6c 65 6e 25 2b  |%=.digx(d%,len%+|
00010fe0  31 29 2b 73 68 69 66 74  25 2b 31 32 0d 5e c4 32  |1)+shift%+12.^.2|
00010ff0  20 20 c8 99 22 46 6f 6e  74 5f 50 61 69 6e 74 22  |  .."Font_Paint"|
00011000  2c 2c 50 64 69 67 31 24  28 73 75 6d 25 2c 64 25  |,,Pdig1$(sum%,d%|
00011010  29 2c 31 36 2c 78 31 25  2c 59 32 25 2b 34 0d 5e  |),16,x1%,Y2%+4.^|
00011020  ce 3b 20 20 e7 20 64 25  3c 32 20 8c 20 c8 99 22  |.;  . d%<2 . .."|
00011030  46 6f 6e 74 5f 50 61 69  6e 74 22 2c 2c 50 64 69  |Font_Paint",,Pdi|
00011040  67 32 24 28 73 75 6d 25  2c 64 25 29 2c 31 36 2c  |g2$(sum%,d%),16,|
00011050  78 32 25 2c 59 32 25 2b  34 0d 5e d8 06 20 ed 0d  |x2%,Y2%+4.^.. ..|
00011060  5e e2 04 0d 5e ec 14 20  e7 20 50 64 65 63 25 28  |^...^.. . Pdec%(|
00011070  73 75 6d 25 29 20 8c 0d  5e f6 1c 20 20 78 25 3d  |sum%) ..^..  x%=|
00011080  a4 64 69 67 78 28 31 2c  30 29 2d 34 2b 73 68 69  |.digx(1,0)-4+shi|
00011090  66 74 25 0d 5f 00 26 20  20 c8 99 22 46 6f 6e 74  |ft%._.&  .."Font|
000110a0  5f 50 61 69 6e 74 22 2c  2c 22 2e 22 2c 31 36 2c  |_Paint",,".",16,|
000110b0  78 25 2c 59 31 25 2b 32  34 0d 5f 0a 26 20 20 c8  |x%,Y1%+24._.&  .|
000110c0  99 22 46 6f 6e 74 5f 50  61 69 6e 74 22 2c 2c 22  |."Font_Paint",,"|
000110d0  2e 22 2c 31 36 2c 78 25  2c 59 32 25 2b 32 34 0d  |.",16,x%,Y2%+24.|
000110e0  5f 14 06 20 cd 0d 5f 1e  04 0d 5f 28 4b 20 e7 20  |_.. .._..._(K . |
000110f0  28 70 6f 73 25 3d 30 20  84 20 50 64 65 63 25 28  |(pos%=0 . Pdec%(|
00011100  73 75 6d 25 29 3c 3e 50  64 65 63 25 28 73 75 6d  |sum%)<>Pdec%(sum|
00011110  25 2b 28 73 75 6d 25 3e  30 29 29 29 20 80 20 63  |%+(sum%>0))) . c|
00011120  6f 6c 6e 61 6d 65 25 28  4e 61 6d 65 4e 6f 25 29  |olname%(NameNo%)|
00011130  3d 31 20 8c 0d 5f 32 14  20 20 f4 20 43 6f 6c 75  |=1 .._2.  . Colu|
00011140  6d 6e 20 6e 61 6d 65 73  0d 5f 3c 60 20 20 e7 20  |mn names._<`  . |
00011150  50 64 65 63 25 28 73 75  6d 25 29 3d 30 20 8c 20  |Pdec%(sum%)=0 . |
00011160  63 6f 6c 6e 61 6d 65 24  28 29 3d 22 75 22 2c 22  |colname$()="u","|
00011170  74 22 2c 22 68 22 2c 22  74 68 22 2c 22 74 20 74  |t","h","th","t t|
00011180  68 22 20 8b 20 63 6f 6c  6e 61 6d 65 24 28 29 3d  |h" . colname$()=|
00011190  22 2f 31 30 30 22 2c 22  2f 31 30 22 2c 22 75 22  |"/100","/10","u"|
000111a0  2c 22 74 22 2c 22 68 22  0d 5f 46 10 20 20 e3 20  |,"t","h"._F.  . |
000111b0  64 25 3d 30 20 b8 20 34  0d 5f 50 65 20 20 20 e7  |d%=0 . 4._Pe   .|
000111c0  20 63 6f 6c 6e 61 6d 65  24 28 64 25 29 3d 22 2f  | colname$(d%)="/|
000111d0  31 30 30 22 20 84 20 63  6f 6c 6e 61 6d 65 24 28  |100" . colname$(|
000111e0  64 25 29 3d 22 2f 31 30  22 20 8c 20 c8 99 22 46  |d%)="/10" . .."F|
000111f0  6f 6e 74 5f 53 65 74 46  6f 6e 74 22 2c 46 63 6f  |ont_SetFont",Fco|
00011200  6c 32 25 20 8b 20 c8 99  22 46 6f 6e 74 5f 53 65  |l2% . .."Font_Se|
00011210  74 46 6f 6e 74 22 2c 46  63 6f 6c 31 25 0d 5f 5a  |tFont",Fcol1%._Z|
00011220  3a 20 20 20 63 6f 6c 78  25 3d a4 64 69 67 78 28  |:   colx%=.digx(|
00011230  64 25 2c 30 29 2b 73 68  69 66 74 25 2b 28 35 38  |d%,0)+shift%+(58|
00011240  2d 31 34 2a a9 20 63 6f  6c 6e 61 6d 65 24 28 64  |-14*. colname$(d|
00011250  25 29 29 2f 32 2b 32 0d  5f 64 4b 20 20 20 e7 20  |%))/2+2._dK   . |
00011260  63 6f 6c 6e 61 6d 65 25  28 4e 61 6d 65 4e 6f 25  |colname%(NameNo%|
00011270  29 20 8c 20 c8 99 22 46  6f 6e 74 5f 50 61 69 6e  |) . .."Font_Pain|
00011280  74 22 2c 2c 63 6f 6c 6e  61 6d 65 24 28 64 25 29  |t",,colname$(d%)|
00011290  2c 31 36 2c 63 6f 6c 78  25 2c 59 31 25 2b 35 38  |,16,colx%,Y1%+58|
000112a0  2b 38 0d 5f 6e 07 20 20  ed 0d 5f 78 1c 20 20 c8  |+8._n.  .._x.  .|
000112b0  99 22 46 6f 6e 74 5f 53  65 74 46 6f 6e 74 22 2c  |."Font_SetFont",|
000112c0  46 73 75 6d 25 0d 5f 82  06 20 cd 0d 5f 8c 04 0d  |Fsum%._.. .._...|
000112d0  5f 96 05 ed 0d 5f a0 05  e1 0d 5f aa 04 0d 5f b4  |_...._...._..._.|
000112e0  04 0d 5f be 10 dd 20 f2  73 65 74 5f 66 6f 6e 74  |.._... .set_font|
000112f0  73 0d 5f c8 38 c8 99 22  46 6f 6e 74 5f 46 69 6e  |s._.8.."Font_Fin|
00011300  64 46 6f 6e 74 22 2c 2c  22 48 6f 6d 65 72 74 6f  |dFont",,"Homerto|
00011310  6e 2e 4d 65 64 69 75 6d  22 2c 33 32 34 2c 33 32  |n.Medium",324,32|
00011320  34 20 b8 20 46 73 75 6d  25 0d 5f d2 39 c8 99 22  |4 . Fsum%._.9.."|
00011330  46 6f 6e 74 5f 46 69 6e  64 46 6f 6e 74 22 2c 2c  |Font_FindFont",,|
00011340  22 48 6f 6d 65 72 74 6f  6e 2e 4d 65 64 69 75 6d  |"Homerton.Medium|
00011350  22 2c 32 32 30 2c 32 31  30 20 b8 20 46 63 6f 6c  |",220,210 . Fcol|
00011360  31 25 0d 5f dc 39 c8 99  22 46 6f 6e 74 5f 46 69  |1%._.9.."Font_Fi|
00011370  6e 64 46 6f 6e 74 22 2c  2c 22 48 6f 6d 65 72 74  |ndFont",,"Homert|
00011380  6f 6e 2e 4d 65 64 69 75  6d 22 2c 31 36 30 2c 31  |on.Medium",160,1|
00011390  39 32 20 b8 20 46 63 6f  6c 32 25 0d 5f e6 05 e1  |92 . Fcol2%._...|
000113a0  0d 5f f0 04 0d 5f fa 04  0d 60 04 11 dd 20 f2 6c  |._..._...`... .l|
000113b0  6f 73 65 5f 66 6f 6e 74  73 0d 60 0e 1e f4 20 53  |ose_fonts.`... S|
000113c0  59 53 22 46 6f 6e 74 5f  4c 6f 73 65 46 6f 6e 74  |YS"Font_LoseFont|
000113d0  22 2c 46 73 75 6d 25 0d  60 18 1f f4 20 53 59 53  |",Fsum%.`... SYS|
000113e0  22 46 6f 6e 74 5f 4c 6f  73 65 46 6f 6e 74 22 2c  |"Font_LoseFont",|
000113f0  46 63 6f 6c 31 25 0d 60  22 1f f4 20 53 59 53 22  |Fcol1%.`".. SYS"|
00011400  46 6f 6e 74 5f 4c 6f 73  65 46 6f 6e 74 22 2c 46  |Font_LoseFont",F|
00011410  63 6f 6c 32 25 0d 60 2c  1b f2 6c 6f 73 65 5f 69  |col2%.`,..lose_i|
00011420  63 6f 6e 5f 66 6f 6e 74  73 28 66 6f 6e 74 25 29  |con_fonts(font%)|
00011430  0d 60 36 05 e1 0d 60 40  04 0d 60 4a 04 0d 60 54  |.`6...`@..`J..`T|
00011440  1f dd 20 f2 73 61 76 65  5f 66 69 6c 65 28 66 69  |.. .save_file(fi|
00011450  6c 65 24 2c 53 6d 6f 70  65 6e 25 29 0d 60 5e 28  |le$,Smopen%).`^(|
00011460  ea 20 63 68 25 2c 68 65  61 64 65 72 24 2c 72 65  |. ch%,header$,re|
00011470  73 70 25 3a ea 20 85 3a  6e 6f 74 73 61 76 65 64  |sp%:. .:notsaved|
00011480  4f 25 3d 30 0d 60 68 54  ee 20 85 20 ea 3a f7 20  |O%=0.`hT. . .:. |
00011490  85 3a 72 65 73 70 25 3d  a4 65 72 72 6f 72 5f 6d  |.:resp%=.error_m|
000114a0  65 73 73 61 67 65 28 f6  24 2c 22 4d 61 74 68 73  |essage(.$,"Maths|
000114b0  5f 74 61 73 6b 22 2c 30  29 3a e7 20 ac 28 9f 3d  |_task",0):. .(.=|
000114c0  36 37 37 38 35 20 84 20  9f 3d 36 37 37 38 36 29  |67785 . .=67786)|
000114d0  20 8c 20 d9 23 63 68 25  0d 60 72 0f e7 20 72 65  | . .#ch%.`r.. re|
000114e0  73 70 25 20 8c 20 e1 0d  60 7c 14 68 65 61 64 65  |sp% . ..`|.heade|
000114f0  72 24 3d 22 67 72 6f 75  70 44 22 0d 60 86 2d 24  |r$="groupD".`.-$|
00011500  73 61 76 65 62 75 66 66  25 3d 66 69 6c 65 24 3a  |savebuff%=file$:|
00011510  f2 72 65 73 65 74 5f 69  63 6f 6e 28 53 56 68 61  |.reset_icon(SVha|
00011520  6e 64 6c 65 25 2c 31 29  0d 60 90 04 0d 60 9a 0f  |ndle%,1).`...`..|
00011530  63 68 25 3d ae 20 66 69  6c 65 24 0d 60 a4 2d f1  |ch%=. file$.`.-.|
00011540  23 63 68 25 2c 68 65 61  64 65 72 24 2c 61 75 74  |#ch%,header$,aut|
00011550  6f 73 61 76 65 52 25 2c  65 6e 70 72 69 6e 74 25  |osaveR%,enprint%|
00011560  2c 73 63 72 65 65 6e 25  0d 60 ae 04 0d 60 b8 14  |,screen%.`...`..|
00011570  e3 20 6e 25 3d 30 20 b8  20 4e 63 6f 75 6e 74 25  |. n%=0 . Ncount%|
00011580  0d 60 c2 14 20 f1 23 63  68 25 2c 6e 61 6d 65 24  |.`.. .#ch%,name$|
00011590  28 6e 25 29 0d 60 cc 3c  20 d5 23 63 68 25 2c 44  |(n%).`.< .#ch%,D|
000115a0  6c 65 76 65 6c 25 28 6e  25 29 3a d5 23 63 68 25  |level%(n%):.#ch%|
000115b0  2c 4d 48 6c 65 76 65 6c  25 28 6e 25 29 3a d5 23  |,MHlevel%(n%):.#|
000115c0  63 68 25 2c 64 65 63 69  6d 61 6c 25 28 6e 25 29  |ch%,decimal%(n%)|
000115d0  0d 60 d6 5a 20 d5 23 63  68 25 2c 61 75 74 6f 25  |.`.Z .#ch%,auto%|
000115e0  28 6e 25 29 3a d5 23 63  68 25 2c 61 75 74 6f 68  |(n%):.#ch%,autoh|
000115f0  65 6c 70 25 28 6e 25 29  3a d5 23 63 68 25 2c 66  |elp%(n%):.#ch%,f|
00011600  6f 72 63 65 25 28 6e 25  29 3a d5 23 63 68 25 2c  |orce%(n%):.#ch%,|
00011610  6d 6f 64 65 25 28 6e 25  29 3a d5 23 63 68 25 2c  |mode%(n%):.#ch%,|
00011620  74 72 69 65 73 25 28 6e  25 29 0d 60 e0 04 0d 60  |tries%(n%).`...`|
00011630  ea dc 20 d5 23 63 68 25  2c 6e 6f 5f 71 75 65 73  |.. .#ch%,no_ques|
00011640  74 25 28 6e 25 29 3a d5  23 63 68 25 2c 4e 6f 74  |t%(n%):.#ch%,Not|
00011650  69 6d 65 72 25 28 6e 25  29 3a d5 23 63 68 25 2c  |imer%(n%):.#ch%,|
00011660  74 69 6d 65 6c 69 6d 25  28 6e 25 29 3a d5 23 63  |timelim%(n%):.#c|
00011670  68 25 2c 63 61 6c 63 25  28 6e 25 29 3a d5 23 63  |h%,calc%(n%):.#c|
00011680  68 25 2c 70 72 69 6e 74  65 72 25 28 6e 25 29 3a  |h%,printer%(n%):|
00011690  d5 23 63 68 25 2c 73 63  6f 72 65 25 28 6e 25 29  |.#ch%,score%(n%)|
000116a0  3a d5 23 63 68 25 2c 6e  65 78 74 25 28 6e 25 29  |:.#ch%,next%(n%)|
000116b0  3a d5 23 63 68 25 2c 73  74 6f 70 25 28 6e 25 29  |:.#ch%,stop%(n%)|
000116c0  3a d5 23 63 68 25 2c 63  6f 6c 6e 61 6d 65 25 28  |:.#ch%,colname%(|
000116d0  6e 25 29 3a d5 23 63 68  25 2c 65 73 74 69 6d 61  |n%):.#ch%,estima|
000116e0  74 65 25 28 6e 25 29 3a  d5 23 63 68 25 2c 73 61  |te%(n%):.#ch%,sa|
000116f0  76 65 52 25 28 6e 25 29  3a d5 23 63 68 25 2c 73  |veR%(n%):.#ch%,s|
00011700  70 65 65 63 68 25 28 6e  25 29 0d 60 f4 4d 20 d5  |peech%(n%).`.M .|
00011710  23 63 68 25 2c 6e 65 77  6c 65 76 52 25 28 6e 25  |#ch%,newlevR%(n%|
00011720  29 3a d5 23 63 68 25 2c  2d 6e 65 77 6c 65 76 57  |):.#ch%,-newlevW|
00011730  25 28 6e 25 29 3a d5 23  63 68 25 2c 6f 77 6e 73  |%(n%):.#ch%,owns|
00011740  75 6d 25 28 6e 25 29 3a  d5 23 63 68 25 2c 4c 6f  |um%(n%):.#ch%,Lo|
00011750  6e 67 25 28 6e 25 29 0d  60 fe 05 ed 0d 61 08 09  |ng%(n%).`....a..|
00011760  d9 23 63 68 25 0d 61 12  27 e7 20 53 6d 6f 70 65  |.#ch%.a.'. Smope|
00011770  6e 25 20 8c 20 f2 6f 70  65 6e 5f 77 69 6e 64 6f  |n% . .open_windo|
00011780  77 28 53 6d 68 61 6e 64  6c 65 25 29 0d 61 1c 07  |w(Smhandle%).a..|
00011790  f7 20 85 0d 61 26 05 e1  0d 61 30 04 0d 61 3a 04  |. ..a&...a0..a:.|
000117a0  0d 61 44 15 dd 20 f2 73  65 6c 65 63 74 5f 73 61  |.aD.. .select_sa|
000117b0  76 65 62 6f 78 0d 61 4e  12 c8 8e 20 62 6c 6f 63  |vebox.aN... bloc|
000117c0  6b 25 21 31 36 20 ca 0d  61 58 32 20 c9 20 30 3a  |k%!16 ..aX2 . 0:|
000117d0  e7 20 62 6c 6f 63 6b 25  21 38 3d 36 34 20 8c 20  |. block%!8=64 . |
000117e0  f2 64 72 61 67 5f 69 63  6f 6e 28 53 56 68 61 6e  |.drag_icon(SVhan|
000117f0  64 6c 65 25 2c 30 2c 35  29 0d 61 62 3b 20 c9 20  |dle%,0,5).ab; . |
00011800  32 3a f2 73 61 76 65 5f  66 69 6c 65 28 24 73 61  |2:.save_file($sa|
00011810  76 65 62 75 66 66 25 2c  2d 31 29 3a f2 63 6c 6f  |vebuff%,-1):.clo|
00011820  73 65 5f 77 69 6e 64 6f  77 28 53 56 68 61 6e 64  |se_window(SVhand|
00011830  6c 65 25 29 0d 61 6c 05  cb 0d 61 76 05 e1 0d 61  |le%).al...av...a|
00011840  80 04 0d 61 8a 04 0d 61  94 17 dd 20 f2 73 65 6c  |...a...a... .sel|
00011850  65 63 74 5f 73 61 76 65  5f 74 65 78 74 0d 61 9e  |ect_save_text.a.|
00011860  12 c8 8e 20 62 6c 6f 63  6b 25 21 31 36 20 ca 0d  |... block%!16 ..|
00011870  61 a8 33 20 c9 20 30 3a  e7 20 62 6c 6f 63 6b 25  |a.3 . 0:. block%|
00011880  21 38 3d 36 34 20 8c 20  f2 64 72 61 67 5f 69 63  |!8=64 . .drag_ic|
00011890  6f 6e 28 53 56 68 61 6e  64 6c 65 32 25 2c 30 2c  |on(SVhandle2%,0,|
000118a0  35 29 0d 61 b2 48 20 c9  20 32 3a f2 72 65 73 75  |5).a.H . 2:.resu|
000118b0  6c 74 73 5f 74 65 78 74  5f 66 69 6c 65 28 24 73  |lts_text_file($s|
000118c0  61 76 65 74 65 78 74 62  75 66 66 25 2c 2d 31 29  |avetextbuff%,-1)|
000118d0  3a f2 63 6c 6f 73 65 5f  77 69 6e 64 6f 77 28 53  |:.close_window(S|
000118e0  56 68 61 6e 64 6c 65 32  25 29 0d 61 bc 05 cb 0d  |Vhandle2%).a....|
000118f0  61 c6 05 e1 0d 61 d0 04  0d 61 da 04 0d 61 e4 1b  |a....a...a...a..|
00011900  dd 20 f2 73 65 74 5f 6f  70 74 69 6f 6e 5f 76 61  |. .set_option_va|
00011910  72 69 61 62 6c 65 73 0d  61 ee 0f ea 20 6e 25 2c  |riables.a... n%,|
00011920  65 72 72 6f 72 25 0d 61  f8 37 4e 61 6d 65 4e 6f  |error%.a.7NameNo|
00011930  25 3d 30 3a 4e 63 6f 75  6e 74 25 3d 30 3a 63 61  |%=0:Ncount%=0:ca|
00011940  72 65 74 78 25 3d 30 3a  63 72 65 61 74 65 25 3d  |retx%=0:create%=|
00011950  2d 32 3a 6e 61 6d 65 24  28 29 3d 22 22 0d 62 02  |-2:name$()="".b.|
00011960  31 6e 6f 74 73 61 76 65  64 4f 25 3d 30 3a 61 75  |1notsavedO%=0:au|
00011970  74 6f 73 61 76 65 52 25  3d 30 3a 73 63 72 65 65  |tosaveR%=0:scree|
00011980  6e 25 3d 30 3a 73 74 61  72 74 25 3d 2d 31 0d 62  |n%=0:start%=-1.b|
00011990  0c 18 24 73 61 76 65 62  75 66 66 25 3d 22 44 65  |..$savebuff%="De|
000119a0  66 61 75 6c 74 22 0d 62  16 2b f2 6c 6f 61 64 5f  |fault".b.+.load_|
000119b0  70 61 72 74 28 22 3c 6f  62 65 79 24 44 69 72 3e  |part("<obey$Dir>|
000119c0  2e 64 65 66 61 75 6c 74  22 2c 65 72 72 6f 72 25  |.default",error%|
000119d0  29 0d 62 20 28 f2 73 69  6e 67 6c 65 5f 74 69 63  |).b (.single_tic|
000119e0  6b 28 6d 65 6e 75 25 2c  36 2c 30 29 3a f2 73 65  |k(menu%,6,0):.se|
000119f0  74 5f 77 69 6e 64 6f 77  73 0d 62 2a 18 f2 73 65  |t_windows.b*..se|
00011a00  74 5f 63 6f 6e 66 69 67  5f 74 69 74 6c 65 28 30  |t_config_title(0|
00011a10  29 0d 62 34 17 f2 73 65  74 5f 70 72 65 66 65 72  |).b4..set_prefer|
00011a20  65 6e 63 65 73 28 30 29  0d 62 3e 12 f2 63 6c 65  |ences(0).b>..cle|
00011a30  61 72 5f 77 69 6e 64 6f  77 73 0d 62 48 05 e1 0d  |ar_windows.bH...|
00011a40  62 52 04 0d 62 5c 04 0d  62 66 0f dd 20 f2 79 5f  |bR..b\..bf.. .y_|
00011a50  6c 65 76 65 6c 73 0d 62  70 08 ea 20 79 25 0d 62  |levels.bp.. y%.b|
00011a60  7a 0f e3 20 79 25 3d 31  20 b8 20 31 30 0d 62 84  |z.. y%=1 . 10.b.|
00011a70  19 20 59 70 6f 73 25 28  79 25 29 3d 2d 32 30 38  |. Ypos%(y%)=-208|
00011a80  2d 35 38 2a 79 25 0d 62  8e 05 ed 0d 62 98 18 59  |-58*y%.b....b..Y|
00011a90  70 6f 73 25 28 30 29 3d  59 70 6f 73 25 28 31 29  |pos%(0)=Ypos%(1)|
00011aa0  2b 37 30 0d 62 a2 05 e1  0d 62 ac 04 0d 62 b6 04  |+70.b....b...b..|
00011ab0  0d 62 c0 20 dd 20 f2 6c  6f 61 64 5f 70 61 72 74  |.b. . .load_part|
00011ac0  28 66 69 6c 65 24 2c f8  20 65 72 72 6f 72 25 29  |(file$,. error%)|
00011ad0  0d 62 ca 16 ea 20 63 68  25 3a ea 20 85 3a 65 72  |.b... ch%:. .:er|
00011ae0  72 6f 72 25 3d 30 0d 62  d4 4c ee 20 85 3a f7 20  |ror%=0.b.L. .:. |
00011af0  85 3a d9 23 63 68 25 3a  24 69 63 62 75 66 66 25  |.:.#ch%:$icbuff%|
00011b00  3d 22 57 72 6f 6e 67 20  66 69 6c 65 2e 22 3a f2  |="Wrong file.":.|
00011b10  6f 70 65 6e 5f 77 69 6e  64 6f 77 28 49 63 68 61  |open_window(Icha|
00011b20  6e 64 6c 65 25 29 3a 65  72 72 6f 72 25 3d 2d 31  |ndle%):error%=-1|
00011b30  3a e1 0d 62 de 0f 63 68  25 3d 8e 20 66 69 6c 65  |:..b..ch%=. file|
00011b40  24 0d 62 e8 2d e8 23 63  68 25 2c 68 65 61 64 65  |$.b.-.#ch%,heade|
00011b50  72 24 2c 61 75 74 6f 73  61 76 65 52 25 2c 65 6e  |r$,autosaveR%,en|
00011b60  70 72 69 6e 74 25 2c 73  63 72 65 65 6e 25 0d 62  |print%,screen%.b|
00011b70  f2 5a e7 20 68 65 61 64  65 72 24 3c 3e 22 67 72  |.Z. header$<>"gr|
00011b80  6f 75 70 44 22 20 8c 20  d9 23 63 68 25 3a 24 69  |oupD" . .#ch%:$i|
00011b90  63 62 75 66 66 25 3d 22  57 72 6f 6e 67 20 66 69  |cbuff%="Wrong fi|
00011ba0  6c 65 2e 22 3a f2 6f 70  65 6e 5f 77 69 6e 64 6f  |le.":.open_windo|
00011bb0  77 28 49 63 68 61 6e 64  6c 65 25 29 3a 65 72 72  |w(Ichandle%):err|
00011bc0  6f 72 25 3d 2d 31 3a e1  0d 62 fc 0e 4e 63 6f 75  |or%=-1:..b..Ncou|
00011bd0  6e 74 25 3d 2d 31 0d 63  06 05 f5 0d 63 10 10 20  |nt%=-1.c....c.. |
00011be0  4e 63 6f 75 6e 74 25 20  2b 3d 31 0d 63 1a 19 20  |Ncount% +=1.c.. |
00011bf0  e8 23 63 68 25 2c 6e 61  6d 65 24 28 4e 63 6f 75  |.#ch%,name$(Ncou|
00011c00  6e 74 25 29 0d 63 24 6e  20 44 6c 65 76 65 6c 25  |nt%).c$n Dlevel%|
00011c10  28 4e 63 6f 75 6e 74 25  29 3d 9a 23 63 68 25 3a  |(Ncount%)=.#ch%:|
00011c20  4d 48 6c 65 76 65 6c 25  28 4e 63 6f 75 6e 74 25  |MHlevel%(Ncount%|
00011c30  29 3d 9a 23 63 68 25 3a  48 6c 65 76 65 6c 25 28  |)=.#ch%:Hlevel%(|
00011c40  4e 63 6f 75 6e 74 25 29  3d 4d 48 6c 65 76 65 6c  |Ncount%)=MHlevel|
00011c50  25 28 4e 63 6f 75 6e 74  25 29 3a 64 65 63 69 6d  |%(Ncount%):decim|
00011c60  61 6c 25 28 4e 63 6f 75  6e 74 25 29 3d 9a 23 63  |al%(Ncount%)=.#c|
00011c70  68 25 0d 63 2e 73 20 61  75 74 6f 25 28 4e 63 6f  |h%.c.s auto%(Nco|
00011c80  75 6e 74 25 29 3d 9a 23  63 68 25 3a 61 75 74 6f  |unt%)=.#ch%:auto|
00011c90  68 65 6c 70 25 28 4e 63  6f 75 6e 74 25 29 3d 9a  |help%(Ncount%)=.|
00011ca0  23 63 68 25 3a 66 6f 72  63 65 25 28 4e 63 6f 75  |#ch%:force%(Ncou|
00011cb0  6e 74 25 29 3d 9a 23 63  68 25 3a 6d 6f 64 65 25  |nt%)=.#ch%:mode%|
00011cc0  28 4e 63 6f 75 6e 74 25  29 3d 9a 23 63 68 25 3a  |(Ncount%)=.#ch%:|
00011cd0  74 72 69 65 73 25 28 4e  63 6f 75 6e 74 25 29 3d  |tries%(Ncount%)=|
00011ce0  9a 23 63 68 25 0d 63 38  d2 20 6e 6f 5f 71 75 65  |.#ch%.c8. no_que|
00011cf0  73 74 25 28 4e 63 6f 75  6e 74 25 29 3d 9a 23 63  |st%(Ncount%)=.#c|
00011d00  68 25 3a 4e 6f 74 69 6d  65 72 25 28 4e 63 6f 75  |h%:Notimer%(Ncou|
00011d10  6e 74 25 29 3d 9a 23 63  68 25 3a 74 69 6d 65 6c  |nt%)=.#ch%:timel|
00011d20  69 6d 25 28 4e 63 6f 75  6e 74 25 29 3d 9a 23 63  |im%(Ncount%)=.#c|
00011d30  68 25 3a 63 61 6c 63 25  28 4e 63 6f 75 6e 74 25  |h%:calc%(Ncount%|
00011d40  29 3d 9a 23 63 68 25 3a  70 72 69 6e 74 65 72 25  |)=.#ch%:printer%|
00011d50  28 4e 63 6f 75 6e 74 25  29 3d 9a 23 63 68 25 3a  |(Ncount%)=.#ch%:|
00011d60  73 63 6f 72 65 25 28 4e  63 6f 75 6e 74 25 29 3d  |score%(Ncount%)=|
00011d70  9a 23 63 68 25 3a 6e 65  78 74 25 28 4e 63 6f 75  |.#ch%:next%(Ncou|
00011d80  6e 74 25 29 3d 9a 23 63  68 25 3a 73 74 6f 70 25  |nt%)=.#ch%:stop%|
00011d90  28 4e 63 6f 75 6e 74 25  29 3d 9a 23 63 68 25 3a  |(Ncount%)=.#ch%:|
00011da0  63 6f 6c 6e 61 6d 65 25  28 4e 63 6f 75 6e 74 25  |colname%(Ncount%|
00011db0  29 3d 9a 23 63 68 25 0d  63 42 4a 20 65 73 74 69  |)=.#ch%.cBJ esti|
00011dc0  6d 61 74 65 25 28 4e 63  6f 75 6e 74 25 29 3d 9a  |mate%(Ncount%)=.|
00011dd0  23 63 68 25 3a 73 61 76  65 52 25 28 4e 63 6f 75  |#ch%:saveR%(Ncou|
00011de0  6e 74 25 29 3d 9a 23 63  68 25 3a 73 70 65 65 63  |nt%)=.#ch%:speec|
00011df0  68 25 28 4e 63 6f 75 6e  74 25 29 3d 9a 23 63 68  |h%(Ncount%)=.#ch|
00011e00  25 0d 63 4c 61 20 6e 65  77 6c 65 76 52 25 28 4e  |%.cLa newlevR%(N|
00011e10  63 6f 75 6e 74 25 29 3d  9a 23 63 68 25 3a 6e 65  |count%)=.#ch%:ne|
00011e20  77 6c 65 76 57 25 28 4e  63 6f 75 6e 74 25 29 3d  |wlevW%(Ncount%)=|
00011e30  2d 9a 23 63 68 25 3a 6f  77 6e 73 75 6d 25 28 4e  |-.#ch%:ownsum%(N|
00011e40  63 6f 75 6e 74 25 29 3d  9a 23 63 68 25 3a 4c 6f  |count%)=.#ch%:Lo|
00011e50  6e 67 25 28 4e 63 6f 75  6e 74 25 29 3d 9a 23 63  |ng%(Ncount%)=.#c|
00011e60  68 25 0d 63 56 0e fd 20  c5 23 63 68 25 3d 2d 31  |h%.cV.. .#ch%=-1|
00011e70  0d 63 60 09 d9 23 63 68  25 0d 63 6a 07 f7 20 85  |.c`..#ch%.cj.. .|
00011e80  0d 63 74 05 e1 0d 63 7e  04 0d 63 88 04 0d 63 92  |.ct...c~..c...c.|
00011e90  17 dd 20 f2 6c 6f 61 64  5f 66 69 6c 65 28 66 69  |.. .load_file(fi|
00011ea0  6c 65 24 29 0d 63 9c 45  ea 20 63 68 25 2c 68 65  |le$).c.E. ch%,he|
00011eb0  61 64 65 72 24 2c 69 24  2c 65 72 72 6f 72 25 2c  |ader$,i$,error%,|
00011ec0  64 65 66 61 75 6c 74 25  3a 73 74 61 72 74 25 3d  |default%:start%=|
00011ed0  2d 31 3a 4e 61 6d 65 4e  6f 25 3d 30 3a 6e 6f 74  |-1:NameNo%=0:not|
00011ee0  73 61 76 65 64 4f 25 3d  30 0d 63 a6 3b 64 65 66  |savedO%=0.c.;def|
00011ef0  61 75 6c 74 25 3d 28 a4  67 65 74 6c 65 61 66 28  |ault%=(.getleaf(|
00011f00  66 69 6c 65 24 2c 30 29  3d 22 64 65 66 61 75 6c  |file$,0)="defaul|
00011f10  74 22 20 80 20 24 6c 6f  61 64 62 75 66 66 25 3c  |t" . $loadbuff%<|
00011f20  3e 22 22 29 0d 63 b0 2f  73 74 61 72 74 25 3d 28  |>"").c./start%=(|
00011f30  64 65 66 61 75 6c 74 25  3d 30 29 3a 6e 61 6d 65  |default%=0):name|
00011f40  24 28 29 3d 22 22 3a 6e  65 78 74 66 69 6c 65 24  |$()="":nextfile$|
00011f50  3d 22 22 0d 63 ba 1c f2  72 65 73 65 74 5f 69 63  |="".c...reset_ic|
00011f60  6f 6e 28 53 56 68 61 6e  64 6c 65 25 2c 31 29 0d  |on(SVhandle%,1).|
00011f70  63 c4 04 0d 63 ce 1c f2  6c 6f 61 64 5f 70 61 72  |c...c...load_par|
00011f80  74 28 66 69 6c 65 24 2c  65 72 72 6f 72 25 29 0d  |t(file$,error%).|
00011f90  63 d8 41 e7 20 65 72 72  6f 72 25 20 8c 20 f2 73  |c.A. error% . .s|
00011fa0  68 61 64 65 5f 69 74 65  6d 28 72 6d 65 6e 75 25  |hade_item(rmenu%|
00011fb0  2c 33 2c 2d 31 29 3a f2  73 68 61 64 65 5f 69 74  |,3,-1):.shade_it|
00011fc0  65 6d 28 6d 65 6e 75 25  2c 34 2c 2d 31 29 3a e1  |em(menu%,4,-1):.|
00011fd0  0d 63 e2 04 0d 63 ec 19  63 72 65 61 74 65 25 3d  |.c...c..create%=|
00011fe0  28 64 65 66 61 75 6c 74  25 3d 2d 31 29 0d 63 f6  |(default%=-1).c.|
00011ff0  31 f2 73 68 61 64 65 5f  69 74 65 6d 28 6d 65 6e  |1.shade_item(men|
00012000  75 25 2c 32 2c 30 29 3a  f2 73 68 61 64 65 5f 69  |u%,2,0):.shade_i|
00012010  74 65 6d 28 6d 65 6e 75  25 2c 34 2c 30 29 0d 64  |tem(menu%,4,0).d|
00012020  00 25 f2 73 69 6e 67 6c  65 5f 74 69 63 6b 28 72  |.%.single_tick(r|
00012030  6d 65 6e 75 25 2c 34 2c  61 75 74 6f 73 61 76 65  |menu%,4,autosave|
00012040  52 25 29 0d 64 0a 22 f2  73 69 6e 67 6c 65 5f 74  |R%).d.".single_t|
00012050  69 63 6b 28 6d 65 6e 75  25 2c 36 2c 65 6e 70 72  |ick(menu%,6,enpr|
00012060  69 6e 74 25 29 0d 64 14  21 f2 73 69 6e 67 6c 65  |int%).d.!.single|
00012070  5f 74 69 63 6b 28 6d 65  6e 75 25 2c 37 2c 73 63  |_tick(menu%,7,sc|
00012080  72 65 65 6e 25 29 0d 64  1e 26 f2 73 68 61 64 65  |reen%).d.&.shade|
00012090  5f 69 74 65 6d 28 6d 65  6e 75 25 2c 31 2c 2d 28  |_item(menu%,1,-(|
000120a0  64 65 66 61 75 6c 74 25  3d 30 29 29 0d 64 28 12  |default%=0)).d(.|
000120b0  f2 72 65 73 65 74 5f 72  65 73 75 6c 74 73 0d 64  |.reset_results.d|
000120c0  32 10 f2 73 65 74 5f 77  69 6e 64 6f 77 73 0d 64  |2..set_windows.d|
000120d0  3c 12 f2 63 6c 65 61 72  5f 77 69 6e 64 6f 77 73  |<..clear_windows|
000120e0  0d 64 46 04 0d 64 50 2b  24 69 63 62 75 66 66 25  |.dF..dP+$icbuff%|
000120f0  3d a4 67 65 74 6c 65 61  66 28 66 69 6c 65 24 2c  |=.getleaf(file$,|
00012100  30 29 2b 22 20 69 73 20  6c 6f 61 64 65 64 22 0d  |0)+" is loaded".|
00012110  64 5a 2a e7 20 64 65 66  61 75 6c 74 25 3d 30 20  |dZ*. default%=0 |
00012120  8c 20 f2 6f 70 65 6e 5f  77 69 6e 64 6f 77 28 49  |. .open_window(I|
00012130  63 68 61 6e 64 6c 65 25  29 0d 64 64 05 e1 0d 64  |chandle%).dd...d|
00012140  6e 04 0d 64 78 04 0d 64  82 14 dd 20 f2 72 65 73  |n..dx..d... .res|
00012150  65 74 5f 72 65 73 75 6c  74 73 0d 64 8c 31 52 63  |et_results.d.1Rc|
00012160  6e 74 25 3d 32 3a 52 63  6e 74 32 25 3d 32 3a 52  |nt%=2:Rcnt2%=2:R|
00012170  70 74 72 25 3d 30 3a 6e  6f 74 73 61 76 65 64 52  |ptr%=0:notsavedR|
00012180  25 3d 30 3a 6e 65 77 52  25 3d 31 0d 64 96 24 e3  |%=0:newR%=1.d.$.|
00012190  20 6e 25 3d 30 20 b8 20  39 39 39 20 88 20 34 3a  | n%=0 . 999 . 4:|
000121a0  72 65 73 75 6c 74 73 25  21 6e 25 3d 30 3a ed 0d  |results%!n%=0:..|
000121b0  64 a0 20 66 69 6c 65 24  3d a4 67 65 74 6c 65 61  |d. file$=.getlea|
000121c0  66 28 24 73 61 76 65 62  75 66 66 25 2c 30 29 0d  |f($savebuff%,0).|
000121d0  64 aa 13 64 61 74 65 24  3d c1 91 24 2c 35 2c 31  |d..date$=..$,5,1|
000121e0  31 29 0d 64 b4 33 73 74  24 3d 22 20 47 72 6f 75  |1).d.3st$=" Grou|
000121f0  70 20 66 69 6c 65 20 6e  61 6d 65 3a 20 22 2b 66  |p file name: "+f|
00012200  69 6c 65 24 2b 22 20 20  44 61 74 65 3a 20 22 2b  |ile$+"  Date: "+|
00012210  a4 64 61 74 65 0d 64 be  22 52 70 74 72 25 3d a4  |.date.d."Rptr%=.|
00012220  61 64 64 5f 73 74 72 69  6e 67 28 52 70 74 72 25  |add_string(Rptr%|
00012230  2c 73 74 24 2c 30 29 0d  64 c8 29 e3 20 6e 25 3d  |,st$,0).d.). n%=|
00012240  30 20 b8 20 33 3a f2 73  68 61 64 65 5f 69 74 65  |0 . 3:.shade_ite|
00012250  6d 28 72 6d 65 6e 75 25  2c 6e 25 2c 31 29 3a ed  |m(rmenu%,n%,1):.|
00012260  0d 64 d2 25 f2 73 69 6e  67 6c 65 5f 74 69 63 6b  |.d.%.single_tick|
00012270  28 72 6d 65 6e 75 25 2c  34 2c 61 75 74 6f 73 61  |(rmenu%,4,autosa|
00012280  76 65 52 25 29 0d 64 dc  05 e1 0d 64 e6 04 0d 64  |veR%).d....d...d|
00012290  f0 04 0d 64 fa 15 dd 20  a4 64 61 74 65 3d c1 91  |...d... .date=..|
000122a0  24 2c 35 2c 31 31 29 0d  65 04 04 0d 65 0e 21 dd  |$,5,11).e...e.!.|
000122b0  20 a4 61 64 64 5f 73 74  72 69 6e 67 28 70 74 72  | .add_string(ptr|
000122c0  25 2c 73 74 24 2c 64 6f  77 6e 25 29 0d 65 18 0a  |%,st$,down%).e..|
000122d0  ea 20 6c 65 6e 25 0d 65  22 21 e7 20 64 6f 77 6e  |. len%.e"!. down|
000122e0  25 20 8c 20 3f 28 72 65  73 75 6c 74 73 25 2b 70  |% . ?(results%+p|
000122f0  74 72 25 29 3d 31 30 0d  65 2c 25 e7 20 64 6f 77  |tr%)=10.e,%. dow|
00012300  6e 25 3d 32 20 8c 20 3f  28 72 65 73 75 6c 74 73  |n%=2 . ?(results|
00012310  25 2b 70 74 72 25 2b 31  29 3d 31 30 0d 65 36 29  |%+ptr%+1)=10.e6)|
00012320  24 28 72 65 73 75 6c 74  73 25 2b 70 74 72 25 2b  |$(results%+ptr%+|
00012330  64 6f 77 6e 25 29 3d 73  74 24 3a 6c 65 6e 25 3d  |down%)=st$:len%=|
00012340  a9 20 73 74 24 0d 65 40  29 70 74 72 25 20 2b 3d  |. st$.e@)ptr% +=|
00012350  6c 65 6e 25 2b 64 6f 77  6e 25 3a 3f 28 72 65 73  |len%+down%:?(res|
00012360  75 6c 74 73 25 2b 70 74  72 25 29 3d 33 32 0d 65  |ults%+ptr%)=32.e|
00012370  4a 09 3d 70 74 72 25 0d  65 54 04 0d 65 5e 04 0d  |J.=ptr%.eT..e^..|
00012380  65 68 14 dd 20 f2 63 6c  65 61 72 5f 77 69 6e 64  |eh.. .clear_wind|
00012390  6f 77 73 0d 65 72 2d e7  20 67 61 6d 65 25 3e 30  |ows.er-. game%>0|
000123a0  20 8c 20 f2 63 6c 6f 73  65 5f 77 69 6e 64 6f 77  | . .close_window|
000123b0  28 68 61 6e 64 6c 65 25  28 67 61 6d 65 25 29 29  |(handle%(game%))|
000123c0  0d 65 7c 1c f2 63 6c 6f  73 65 5f 77 69 6e 64 6f  |.e|..close_windo|
000123d0  77 28 4e 47 68 61 6e 64  6c 65 25 29 0d 65 86 1c  |w(NGhandle%).e..|
000123e0  f2 63 6c 6f 73 65 5f 77  69 6e 64 6f 77 28 53 43  |.close_window(SC|
000123f0  68 61 6e 64 6c 65 25 29  0d 65 90 1b f2 63 6c 6f  |handle%).e...clo|
00012400  73 65 5f 77 69 6e 64 6f  77 28 44 68 61 6e 64 6c  |se_window(Dhandl|
00012410  65 25 29 0d 65 9a 1c f2  63 6c 6f 73 65 5f 77 69  |e%).e...close_wi|
00012420  6e 64 6f 77 28 44 72 68  61 6e 64 6c 65 25 29 0d  |ndow(Drhandle%).|
00012430  65 a4 05 e1 0d 65 ae 04  0d 65 b8 04 0d 65 c2 1b  |e....e...e...e..|
00012440  dd 20 f2 73 65 74 5f 70  72 65 66 65 72 65 6e 63  |. .set_preferenc|
00012450  65 73 28 6e 6f 25 29 0d  65 cc 08 ea 20 6e 25 0d  |es(no%).e... n%.|
00012460  65 d6 19 f2 73 65 74 5f  64 69 66 66 5f 6c 65 76  |e...set_diff_lev|
00012470  65 6c 73 28 6e 6f 25 29  0d 65 e0 32 24 48 62 75  |els(no%).e.2$Hbu|
00012480  66 66 25 3d c3 48 6c 65  76 65 6c 25 28 6e 6f 25  |ff%=.Hlevel%(no%|
00012490  29 3a f2 72 65 73 65 74  5f 69 63 6f 6e 28 43 68  |):.reset_icon(Ch|
000124a0  61 6e 64 6c 65 25 2c 33  31 29 0d 65 ea 34 24 4d  |andle%,31).e.4$M|
000124b0  48 62 75 66 66 25 3d c3  4d 48 6c 65 76 65 6c 25  |Hbuff%=.MHlevel%|
000124c0  28 6e 6f 25 29 3a f2 72  65 73 65 74 5f 69 63 6f  |(no%):.reset_ico|
000124d0  6e 28 43 68 61 6e 64 6c  65 25 2c 33 37 29 0d 65  |n(Chandle%,37).e|
000124e0  f4 27 e7 20 66 6f 72 63  65 35 25 3d 30 20 8c 20  |.'. force5%=0 . |
000124f0  48 65 6c 70 6c 65 76 25  3d 48 6c 65 76 65 6c 25  |Helplev%=Hlevel%|
00012500  28 6e 6f 25 29 0d 65 fe  2c f2 73 65 6c 65 63 74  |(no%).e.,.select|
00012510  5f 69 63 6f 6e 28 43 68  61 6e 64 6c 65 25 2c 35  |_icon(Chandle%,5|
00012520  30 2c 61 75 74 6f 68 65  6c 70 25 28 6e 6f 25 29  |0,autohelp%(no%)|
00012530  29 0d 66 08 16 f2 73 65  74 5f 61 75 74 6f 68 65  |).f...set_autohe|
00012540  6c 70 28 6e 6f 25 29 0d  66 12 2c f2 73 65 6c 65  |lp(no%).f.,.sele|
00012550  63 74 5f 69 63 6f 6e 28  43 68 61 6e 64 6c 65 25  |ct_icon(Chandle%|
00012560  2c 32 39 2c 28 6d 6f 64  65 25 28 6e 6f 25 29 3d  |,29,(mode%(no%)=|
00012570  31 29 29 0d 66 1c 2c f2  73 65 6c 65 63 74 5f 69  |1)).f.,.select_i|
00012580  63 6f 6e 28 43 68 61 6e  64 6c 65 25 2c 32 38 2c  |con(Chandle%,28,|
00012590  28 6d 6f 64 65 25 28 6e  6f 25 29 3d 30 29 29 0d  |(mode%(no%)=0)).|
000125a0  66 26 19 f2 61 64 6a 75  73 74 5f 66 6f 72 5f 6d  |f&..adjust_for_m|
000125b0  6f 64 65 28 6e 6f 25 29  0d 66 30 29 f2 73 65 6c  |ode(no%).f0).sel|
000125c0  65 63 74 5f 69 63 6f 6e  28 43 68 61 6e 64 6c 65  |ect_icon(Chandle|
000125d0  25 2c 33 34 2c 66 6f 72  63 65 25 28 6e 6f 25 29  |%,34,force%(no%)|
000125e0  29 0d 66 3a 28 f2 73 65  6c 65 63 74 5f 69 63 6f  |).f:(.select_ico|
000125f0  6e 28 43 68 61 6e 64 6c  65 25 2c 34 39 2c 61 75  |n(Chandle%,49,au|
00012600  74 6f 25 28 6e 6f 25 29  29 0d 66 44 12 f2 73 65  |to%(no%)).fD..se|
00012610  74 5f 61 75 74 6f 28 6e  6f 25 29 0d 66 4e 04 0d  |t_auto(no%).fN..|
00012620  66 58 35 24 51 62 75 66  66 25 3d c3 20 6e 6f 5f  |fX5$Qbuff%=. no_|
00012630  71 75 65 73 74 25 28 6e  6f 25 29 3a f2 72 65 73  |quest%(no%):.res|
00012640  65 74 5f 69 63 6f 6e 28  43 68 61 6e 64 6c 65 25  |et_icon(Chandle%|
00012650  2c 31 36 29 0d 66 62 32  24 54 62 75 66 66 25 3d  |,16).fb2$Tbuff%=|
00012660  c3 20 74 72 69 65 73 25  28 6e 6f 25 29 3a f2 72  |. tries%(no%):.r|
00012670  65 73 65 74 5f 69 63 6f  6e 28 43 68 61 6e 64 6c  |eset_icon(Chandl|
00012680  65 25 2c 31 39 29 0d 66  6c 04 0d 66 76 35 24 54  |e%,19).fl..fv5$T|
00012690  6d 62 75 66 66 25 3d c3  20 74 69 6d 65 6c 69 6d  |mbuff%=. timelim|
000126a0  25 28 6e 6f 25 29 3a f2  72 65 73 65 74 5f 69 63  |%(no%):.reset_ic|
000126b0  6f 6e 28 43 68 61 6e 64  6c 65 25 2c 32 32 29 0d  |on(Chandle%,22).|
000126c0  66 80 2b f2 73 65 6c 65  63 74 5f 69 63 6f 6e 28  |f.+.select_icon(|
000126d0  43 68 61 6e 64 6c 65 25  2c 32 35 2c 4e 6f 74 69  |Chandle%,25,Noti|
000126e0  6d 65 72 25 28 6e 6f 25  29 29 0d 66 8a 2c f2 73  |mer%(no%)).f.,.s|
000126f0  68 61 64 65 5f 33 69 63  6f 6e 73 28 43 68 61 6e  |hade_3icons(Chan|
00012700  64 6c 65 25 2c 32 32 2c  4e 6f 74 69 6d 65 72 25  |dle%,22,Notimer%|
00012710  28 6e 6f 25 29 29 0d 66  94 04 0d 66 9e 33 24 6c  |(no%)).f...f.3$l|
00012720  6f 6e 67 62 75 66 66 25  3d c3 20 4c 6f 6e 67 25  |ongbuff%=. Long%|
00012730  28 6e 6f 25 29 3a f2 72  65 73 65 74 5f 69 63 6f  |(no%):.reset_ico|
00012740  6e 28 43 68 61 6e 64 6c  65 25 2c 32 29 0d 66 a8  |n(Chandle%,2).f.|
00012750  04 0d 66 b2 45 f2 73 65  6c 65 63 74 5f 69 63 6f  |..f.E.select_ico|
00012760  6e 28 43 68 61 6e 64 6c  65 25 2c 34 32 2c 63 61  |n(Chandle%,42,ca|
00012770  6c 63 25 28 6e 6f 25 29  29 3a f2 73 65 74 5f 74  |lc%(no%)):.set_t|
00012780  6f 70 5f 69 63 6f 6e 28  33 2c 2d 63 61 6c 63 25  |op_icon(3,-calc%|
00012790  28 6e 6f 25 29 29 0d 66  bc 2b f2 73 65 6c 65 63  |(no%)).f.+.selec|
000127a0  74 5f 69 63 6f 6e 28 43  68 61 6e 64 6c 65 25 2c  |t_icon(Chandle%,|
000127b0  34 33 2c 70 72 69 6e 74  65 72 25 28 6e 6f 25 29  |43,printer%(no%)|
000127c0  29 0d 66 c6 47 f2 73 65  6c 65 63 74 5f 69 63 6f  |).f.G.select_ico|
000127d0  6e 28 43 68 61 6e 64 6c  65 25 2c 34 34 2c 73 63  |n(Chandle%,44,sc|
000127e0  6f 72 65 25 28 6e 6f 25  29 29 3a f2 73 65 74 5f  |ore%(no%)):.set_|
000127f0  74 6f 70 5f 69 63 6f 6e  28 34 2c 2d 73 63 6f 72  |top_icon(4,-scor|
00012800  65 25 28 6e 6f 25 29 29  0d 66 d0 28 f2 73 65 6c  |e%(no%)).f.(.sel|
00012810  65 63 74 5f 69 63 6f 6e  28 43 68 61 6e 64 6c 65  |ect_icon(Chandle|
00012820  25 2c 34 36 2c 6e 65 78  74 25 28 6e 6f 25 29 29  |%,46,next%(no%))|
00012830  0d 66 da 45 f2 73 65 6c  65 63 74 5f 69 63 6f 6e  |.f.E.select_icon|
00012840  28 43 68 61 6e 64 6c 65  25 2c 34 37 2c 73 74 6f  |(Chandle%,47,sto|
00012850  70 25 28 6e 6f 25 29 29  3a f2 73 65 74 5f 74 6f  |p%(no%)):.set_to|
00012860  70 5f 69 63 6f 6e 28 36  2c 2d 73 74 6f 70 25 28  |p_icon(6,-stop%(|
00012870  6e 6f 25 29 29 0d 66 e4  2b f2 73 65 6c 65 63 74  |no%)).f.+.select|
00012880  5f 69 63 6f 6e 28 43 68  61 6e 64 6c 65 25 2c 34  |_icon(Chandle%,4|
00012890  38 2c 63 6f 6c 6e 61 6d  65 25 28 6e 6f 25 29 29  |8,colname%(no%))|
000128a0  0d 66 ee 2c f2 73 65 6c  65 63 74 5f 69 63 6f 6e  |.f.,.select_icon|
000128b0  28 43 68 61 6e 64 6c 65  25 2c 34 35 2c 65 73 74  |(Chandle%,45,est|
000128c0  69 6d 61 74 65 25 28 6e  6f 25 29 29 0d 66 f8 29  |imate%(no%)).f.)|
000128d0  f2 73 65 6c 65 63 74 5f  69 63 6f 6e 28 43 68 61  |.select_icon(Cha|
000128e0  6e 64 6c 65 25 2c 36 31  2c 73 61 76 65 52 25 28  |ndle%,61,saveR%(|
000128f0  6e 6f 25 29 29 0d 67 02  2b f2 73 65 6c 65 63 74  |no%)).g.+.select|
00012900  5f 69 63 6f 6e 28 43 68  61 6e 64 6c 65 25 2c 36  |_icon(Chandle%,6|
00012910  32 2c 64 65 63 69 6d 61  6c 25 28 6e 6f 25 29 29  |2,decimal%(no%))|
00012920  0d 67 0c 2a f2 73 65 6c  65 63 74 5f 69 63 6f 6e  |.g.*.select_icon|
00012930  28 43 68 61 6e 64 6c 65  25 2c 36 37 2c 73 70 65  |(Chandle%,67,spe|
00012940  65 63 68 25 28 6e 6f 25  29 29 0d 67 16 04 0d 67  |ech%(no%)).g...g|
00012950  20 37 24 6c 65 76 52 62  75 66 66 25 3d c3 20 6e  | 7$levRbuff%=. n|
00012960  65 77 6c 65 76 52 25 28  6e 6f 25 29 3a f2 72 65  |ewlevR%(no%):.re|
00012970  73 65 74 5f 69 63 6f 6e  28 43 68 61 6e 64 6c 65  |set_icon(Chandle|
00012980  25 2c 35 33 29 0d 67 2a  38 24 6c 65 76 57 62 75  |%,53).g*8$levWbu|
00012990  66 66 25 3d c3 20 2d 6e  65 77 6c 65 76 57 25 28  |ff%=. -newlevW%(|
000129a0  6e 6f 25 29 3a f2 72 65  73 65 74 5f 69 63 6f 6e  |no%):.reset_icon|
000129b0  28 43 68 61 6e 64 6c 65  25 2c 35 39 29 0d 67 34  |(Chandle%,59).g4|
000129c0  04 0d 67 3e 15 f2 73 65  74 5f 6f 77 6e 5f 73 75  |..g>..set_own_su|
000129d0  6d 28 6e 6f 25 29 0d 67  48 05 e1 0d 67 52 04 0d  |m(no%).gH...gR..|
000129e0  67 5c 04 0d 67 66 17 dd  20 f2 73 65 74 5f 6f 77  |g\..gf.. .set_ow|
000129f0  6e 5f 73 75 6d 28 6e 6f  25 29 0d 67 70 2a f2 73  |n_sum(no%).gp*.s|
00012a00  65 6c 65 63 74 5f 69 63  6f 6e 28 43 68 61 6e 64  |elect_icon(Chand|
00012a10  6c 65 25 2c 36 33 2c 6f  77 6e 73 75 6d 25 28 6e  |le%,63,ownsum%(n|
00012a20  6f 25 29 29 0d 67 7a 3e  f2 73 68 61 64 65 5f 33  |o%)).gz>.shade_3|
00012a30  69 63 6f 6e 73 28 43 68  61 6e 64 6c 65 25 2c 35  |icons(Chandle%,5|
00012a40  33 2c 28 6f 77 6e 73 75  6d 25 28 6e 6f 25 29 3d  |3,(ownsum%(no%)=|
00012a50  31 20 84 20 61 75 74 6f  25 28 6e 6f 25 29 3d 30  |1 . auto%(no%)=0|
00012a60  29 29 0d 67 84 3e f2 73  68 61 64 65 5f 33 69 63  |)).g.>.shade_3ic|
00012a70  6f 6e 73 28 43 68 61 6e  64 6c 65 25 2c 35 37 2c  |ons(Chandle%,57,|
00012a80  28 6f 77 6e 73 75 6d 25  28 6e 6f 25 29 3d 31 20  |(ownsum%(no%)=1 |
00012a90  84 20 61 75 74 6f 25 28  6e 6f 25 29 3d 30 29 29  |. auto%(no%)=0))|
00012aa0  0d 67 8e 2e f2 73 68 61  64 65 5f 33 69 63 6f 6e  |.g...shade_3icon|
00012ab0  73 28 43 68 61 6e 64 6c  65 25 2c 35 2c 28 6f 77  |s(Chandle%,5,(ow|
00012ac0  6e 73 75 6d 25 28 6e 6f  25 29 3d 31 29 29 0d 67  |nsum%(no%)=1)).g|
00012ad0  98 2e f2 73 68 61 64 65  5f 33 69 63 6f 6e 73 28  |...shade_3icons(|
00012ae0  43 68 61 6e 64 6c 65 25  2c 32 2c 28 6f 77 6e 73  |Chandle%,2,(owns|
00012af0  75 6d 25 28 6e 6f 25 29  3d 31 29 29 0d 67 a2 29  |um%(no%)=1)).g.)|
00012b00  f2 73 68 61 64 65 5f 69  63 6f 6e 28 43 68 61 6e  |.shade_icon(Chan|
00012b10  64 6c 65 25 2c 34 39 2c  6f 77 6e 73 75 6d 25 28  |dle%,49,ownsum%(|
00012b20  6e 6f 25 29 29 0d 67 ac  16 e7 20 6f 77 6e 73 75  |no%)).g... ownsu|
00012b30  6d 25 28 6e 6f 25 29 3d  30 20 8c 0d 67 b6 1a 20  |m%(no%)=0 ..g.. |
00012b40  e7 20 67 61 6d 65 25 3d  30 20 8c 20 73 74 61 72  |. game%=0 . star|
00012b50  74 25 3d 2d 31 0d 67 c0  50 20 e7 20 67 61 6d 65  |t%=-1.g.P . game|
00012b60  25 3e 30 20 8c 20 e7 20  a4 77 69 6e 64 6f 77 5f  |%>0 . . .window_|
00012b70  6f 70 65 6e 28 68 61 6e  64 6c 65 25 28 67 61 6d  |open(handle%(gam|
00012b80  65 25 29 29 3d 30 20 8c  20 f2 6f 70 65 6e 5f 77  |e%))=0 . .open_w|
00012b90  69 6e 64 6f 77 28 68 61  6e 64 6c 65 25 28 67 61  |indow(handle%(ga|
00012ba0  6d 65 25 29 29 0d 67 ca  05 cd 0d 67 d4 05 e1 0d  |me%)).g....g....|
00012bb0  67 de 04 0d 67 e8 04 0d  67 f2 1a dd 20 f2 61 6c  |g...g...g... .al|
00012bc0  6c 6f 77 5f 70 72 69 6e  74 5f 72 65 73 75 6c 74  |low_print_result|
00012bd0  73 0d 67 fc 30 e7 20 64  72 69 76 65 72 25 3d 30  |s.g.0. driver%=0|
00012be0  20 8c 20 e7 20 a4 65 6e  73 75 72 65 5f 50 64 72  | . . .ensure_Pdr|
00012bf0  69 76 65 72 20 8c 20 64  72 69 76 65 72 25 3d 2d  |iver . driver%=-|
00012c00  31 0d 68 06 40 e3 20 6e  25 3d 31 20 b8 20 32 3a  |1.h.@. n%=1 . 2:|
00012c10  f2 73 68 61 64 65 5f 69  74 65 6d 28 72 6d 65 6e  |.shade_item(rmen|
00012c20  75 25 2c 6e 25 2c ac 28  64 72 69 76 65 72 25 3d  |u%,n%,.(driver%=|
00012c30  2d 31 20 80 20 52 63 6e  74 25 3e 3d 34 29 29 3a  |-1 . Rcnt%>=4)):|
00012c40  ed 0d 68 10 05 e1 0d 68  1a 04 0d 68 24 04 0d 68  |..h....h...h$..h|
00012c50  2e 1b dd 20 f2 73 65 74  5f 64 69 66 66 5f 6c 65  |... .set_diff_le|
00012c60  76 65 6c 73 28 6e 6f 25  29 0d 68 38 38 24 6c 65  |vels(no%).h88$le|
00012c70  76 65 6c 5f 62 75 66 66  44 25 3d c3 20 44 6c 65  |vel_buffD%=. Dle|
00012c80  76 65 6c 25 28 6e 6f 25  29 3a f2 72 65 73 65 74  |vel%(no%):.reset|
00012c90  5f 69 63 6f 6e 28 43 68  61 6e 64 6c 65 25 2c 35  |_icon(Chandle%,5|
00012ca0  29 0d 68 42 05 e1 0d 68  4c 04 0d 68 56 04 0d 68  |).hB...hL..hV..h|
00012cb0  60 1d dd 20 f2 73 65 74  5f 64 69 76 69 73 69 6f  |`.. .set_divisio|
00012cc0  6e 5f 74 79 70 65 28 6e  6f 25 29 0d 68 6a 28 44  |n_type(no%).hj(D|
00012cd0  69 76 54 79 70 65 25 3d  2d 28 44 6c 65 76 65 6c  |ivType%=-(Dlevel|
00012ce0  25 28 6e 6f 25 29 3e 3d  4c 6f 6e 67 25 28 6e 6f  |%(no%)>=Long%(no|
00012cf0  25 29 29 0d 68 74 05 e1  0d 68 7e 04 0d 68 88 04  |%)).ht...h~..h..|
00012d00  0d 68 92 1f dd 20 f2 73  65 74 5f 74 6f 70 5f 69  |.h... .set_top_i|
00012d10  63 6f 6e 28 69 63 6f 6e  25 2c 76 61 72 25 29 0d  |con(icon%,var%).|
00012d20  68 9c 27 f2 73 68 61 64  65 5f 69 63 6f 6e 28 68  |h.'.shade_icon(h|
00012d30  61 6e 64 6c 65 25 28 31  29 2c 69 63 6f 6e 25 2c  |andle%(1),icon%,|
00012d40  ac 76 61 72 25 29 0d 68  a6 05 e1 0d 68 b0 04 0d  |.var%).h....h...|
00012d50  68 ba 04 0d 68 c4 13 dd  20 f2 73 65 6c 65 63 74  |h...h... .select|
00012d60  5f 73 63 6f 72 65 0d 68  ce 1e ea 20 69 63 6f 6e  |_score.h... icon|
00012d70  25 2c 72 25 3a 69 63 6f  6e 25 3d 62 6c 6f 63 6b  |%,r%:icon%=block|
00012d80  25 21 31 36 0d 68 d8 3e  e7 20 69 63 6f 6e 25 3d  |%!16.h.>. icon%=|
00012d90  39 20 84 20 69 63 6f 6e  25 3d 31 30 20 84 20 69  |9 . icon%=10 . i|
00012da0  63 6f 6e 25 3d 31 32 20  8c 20 f2 63 6c 6f 73 65  |con%=12 . .close|
00012db0  5f 77 69 6e 64 6f 77 28  53 43 68 61 6e 64 6c 65  |_window(SChandle|
00012dc0  25 29 0d 68 e2 24 e7 20  69 63 6f 6e 25 3d 31 30  |%).h.$. icon%=10|
00012dd0  20 8c 20 f2 62 75 69 6c  64 5f 6e 61 6d 65 5f 77  | . .build_name_w|
00012de0  69 6e 64 6f 77 47 0d 68  ec 20 e7 20 69 63 6f 6e  |indowG.h. . icon|
00012df0  25 3d 31 31 20 8c 20 f2  70 72 69 6e 74 5f 6f 75  |%=11 . .print_ou|
00012e00  74 5f 73 75 6d 73 0d 68  f6 05 e1 0d 69 00 04 0d  |t_sums.h....i...|
00012e10  69 0a 04 0d 69 14 18 dd  20 f2 63 61 6c 63 61 6c  |i...i... .calcal|
00012e20  61 74 6f 72 28 69 63 6f  6e 25 29 0d 69 1e 0a ea  |ator(icon%).i...|
00012e30  20 66 6c 67 25 0d 69 28  44 e7 20 43 43 70 72 65  | flg%.i(D. CCpre|
00012e40  76 25 3d 2d 31 20 80 20  69 63 6f 6e 25 3e 31 30  |v%=-1 . icon%>10|
00012e50  20 80 20 69 63 6f 6e 25  3c 31 36 20 8c 20 43 43  | . icon%<16 . CC|
00012e60  6f 70 25 3d 69 63 6f 6e  25 3a 66 6c 67 25 3d 28  |op%=icon%:flg%=(|
00012e70  69 63 6f 6e 25 3e 31 31  29 0d 69 32 0e e7 20 66  |icon%>11).i2.. f|
00012e80  6c 67 25 20 8c 20 e1 0d  69 3c 11 e7 20 69 63 6f  |lg% . ..i<.. ico|
00012e90  6e 25 3c 3d 31 30 20 8c  0d 69 46 23 20 e7 20 43  |n%<=10 ..iF# . C|
00012ea0  43 6f 70 25 3d 30 20 8c  20 43 43 73 75 6d 3d 30  |Cop%=0 . CCsum=0|
00012eb0  3a 43 43 73 74 61 72 74  25 3d 30 0d 69 50 33 20  |:CCstart%=0.iP3 |
00012ec0  e7 20 69 63 6f 6e 25 3c  31 30 20 80 20 a9 20 43  |. icon%<10 . . C|
00012ed0  43 6e 75 6d 24 3c 38 20  8c 20 43 43 6e 75 6d 24  |Cnum$<8 . CCnum$|
00012ee0  3d 43 43 6e 75 6d 24 2b  c3 69 63 6f 6e 25 0d 69  |=CCnum$+.icon%.i|
00012ef0  5a 23 20 e7 20 69 63 6f  6e 25 3d 31 30 20 8c 20  |Z# . icon%=10 . |
00012f00  43 43 6e 75 6d 24 3d 43  43 6e 75 6d 24 2b 22 2e  |CCnum$=CCnum$+".|
00012f10  22 0d 69 64 1d 20 43 43  6e 75 6d 3d bb 20 43 43  |".id. CCnum=. CC|
00012f20  6e 75 6d 24 3a 43 43 70  72 65 76 25 3d 30 0d 69  |num$:CCprev%=0.i|
00012f30  6e 1e 20 f2 63 61 6c 63  5f 64 69 73 70 6c 61 79  |n. .calc_display|
00012f40  28 43 43 6e 75 6d 24 2c  22 31 22 29 0d 69 78 05  |(CCnum$,"1").ix.|
00012f50  cc 0d 69 82 22 20 43 43  6e 75 6d 24 3d 22 22 3a  |..i." CCnum$="":|
00012f60  43 43 70 72 65 76 25 3d  28 69 63 6f 6e 25 3c 3e  |CCprev%=(icon%<>|
00012f70  31 31 29 0d 69 8c 1a 20  e7 20 69 63 6f 6e 25 3d  |11).i.. . icon%=|
00012f80  31 36 20 8c 20 43 43 6f  70 25 3d 31 36 0d 69 96  |16 . CCop%=16.i.|
00012f90  13 20 e7 20 43 43 73 74  61 72 74 25 3d 30 20 8c  |. . CCstart%=0 .|
00012fa0  0d 69 a0 12 20 20 e7 20  43 43 6f 70 25 3d 31 36  |.i..  . CCop%=16|
00012fb0  20 8c 0d 69 aa 31 20 20  20 43 43 73 75 6d 3d 30  | ..i.1   CCsum=0|
00012fc0  3a 43 43 6f 70 25 3d 30  3a f2 63 61 6c 63 5f 64  |:CCop%=0:.calc_d|
00012fd0  69 73 70 6c 61 79 28 c3  20 43 43 73 75 6d 2c 22  |isplay(. CCsum,"|
00012fe0  32 22 29 0d 69 b4 07 20  20 cc 0d 69 be 2a 20 20  |2").i..  ..i.*  |
00012ff0  20 43 43 6f 70 25 3d 69  63 6f 6e 25 3a 43 43 73  | CCop%=icon%:CCs|
00013000  74 61 72 74 25 3d 2d 31  3a 43 43 73 75 6d 3d 43  |tart%=-1:CCsum=C|
00013010  43 6e 75 6d 0d 69 c8 07  20 20 cd 0d 69 d2 06 20  |Cnum.i..  ..i.. |
00013020  cc 0d 69 dc 10 20 20 c8  8e 20 43 43 6f 70 25 20  |..i..  .. CCop% |
00013030  ca 0d 69 e6 19 20 20 20  c9 20 31 32 3a 43 43 73  |..i..   . 12:CCs|
00013040  75 6d 20 2b 3d 43 43 6e  75 6d 0d 69 f0 19 20 20  |um +=CCnum.i..  |
00013050  20 c9 20 31 33 3a 43 43  73 75 6d 20 2d 3d 43 43  | . 13:CCsum -=CC|
00013060  6e 75 6d 0d 69 fa 1d 20  20 20 c9 20 31 34 3a 43  |num.i..   . 14:C|
00013070  43 73 75 6d 3d 43 43 73  75 6d 2a 43 43 6e 75 6d  |Csum=CCsum*CCnum|
00013080  0d 6a 04 36 20 20 20 c9  20 31 35 3a e7 20 43 43  |.j.6   . 15:. CC|
00013090  6e 75 6d 3c 3e 30 20 8c  20 43 43 73 75 6d 3d 43  |num<>0 . CCsum=C|
000130a0  43 73 75 6d 2f 43 43 6e  75 6d 20 8b 20 43 43 73  |Csum/CCnum . CCs|
000130b0  75 6d 3d 31 45 39 0d 6a  0e 13 20 20 20 c9 20 31  |um=1E9.j..   . 1|
000130c0  36 3a 43 43 73 75 6d 3d  30 0d 6a 18 07 20 20 cb  |6:CCsum=0.j..  .|
000130d0  0d 6a 22 1f 20 20 e7 20  43 43 6f 70 25 3e 3d 31  |.j".  . CCop%>=1|
000130e0  32 20 80 20 43 43 6f 70  25 3c 3d 31 35 20 8c 0d  |2 . CCop%<=15 ..|
000130f0  6a 2c 1b 20 20 20 43 43  73 75 6d 20 2b 3d 32 45  |j,.   CCsum +=2E|
00013100  2d 38 2a b4 20 43 43 73  75 6d 0d 6a 36 1a 20 20  |-8*. CCsum.j6.  |
00013110  20 43 43 73 75 6d 3d bb  20 c0 c3 20 43 43 73 75  | CCsum=. .. CCsu|
00013120  6d 2c 38 29 0d 6a 40 07  20 20 cd 0d 6a 4a 20 20  |m,8).j@.  ..jJ  |
00013130  20 f2 63 61 6c 63 5f 64  69 73 70 6c 61 79 28 c3  | .calc_display(.|
00013140  20 43 43 73 75 6d 2c 22  32 22 29 0d 6a 54 33 20  | CCsum,"2").jT3 |
00013150  20 e7 20 69 63 6f 6e 25  3e 31 31 20 80 20 69 63  | . icon%>11 . ic|
00013160  6f 6e 25 3c 31 36 20 8c  20 43 43 6f 70 25 3d 69  |on%<16 . CCop%=i|
00013170  63 6f 6e 25 20 8b 20 43  43 6f 70 25 3d 30 0d 6a  |con% . CCop%=0.j|
00013180  5e 06 20 cd 0d 6a 68 05  cd 0d 6a 72 05 e1 0d 6a  |^. ..jh...jr...j|
00013190  7c 04 0d 6a 86 04 0d 6a  90 21 dd 20 f2 63 61 6c  ||..j...j.!. .cal|
000131a0  63 5f 64 69 73 70 6c 61  79 28 76 61 72 24 2c 73  |c_display(var$,s|
000131b0  6f 75 72 63 65 24 29 0d  6a 9a 13 e7 20 94 20 bb  |ource$).j... . .|
000131c0  76 61 72 24 3c 31 45 39  20 8c 0d 6a a4 2a 20 e7  |var$<1E9 ..j.* .|
000131d0  20 94 20 bb 76 61 72 24  3c 31 45 2d 38 20 80 20  | . .var$<1E-8 . |
000131e0  94 20 bb 76 61 72 24 3e  30 20 8c 20 76 61 72 24  |. .var$>0 . var$|
000131f0  3d 22 30 22 0d 6a ae 2a  20 e7 20 a7 76 61 72 24  |="0".j.* . .var$|
00013200  2c 22 45 22 29 20 8c 20  76 61 72 24 3d a4 72 65  |,"E") . var$=.re|
00013210  6d 6f 76 65 5f 65 78 70  28 76 61 72 24 29 0d 6a  |move_exp(var$).j|
00013220  b8 12 20 76 61 72 24 3d  c0 76 61 72 24 2c 38 29  |.. var$=.var$,8)|
00013230  0d 6a c2 4b 20 e7 20 c2  76 61 72 24 2c 31 29 3d  |.j.K . .var$,1)=|
00013240  22 30 22 20 80 20 a7 76  61 72 24 2c 22 2e 22 29  |"0" . .var$,".")|
00013250  3e 30 20 80 20 73 6f 75  72 63 65 24 3d 22 32 22  |>0 . source$="2"|
00013260  20 8c 20 76 61 72 24 3d  a4 72 65 6d 6f 76 65 5f  | . var$=.remove_|
00013270  7a 65 72 6f 73 28 76 61  72 24 29 0d 6a cc 12 20  |zeros(var$).j.. |
00013280  24 43 43 62 75 66 66 25  3d 76 61 72 24 0d 6a d6  |$CCbuff%=var$.j.|
00013290  05 cc 0d 6a e0 3a 20 e7  20 bb 76 61 72 24 3e 30  |...j.: . .var$>0|
000132a0  20 8c 20 24 43 43 62 75  66 66 25 3d 22 54 6f 6f  | . $CCbuff%="Too|
000132b0  20 62 69 67 22 20 8b 20  24 43 43 62 75 66 66 25  | big" . $CCbuff%|
000132c0  3d 22 54 6f 6f 20 73 6d  61 6c 6c 22 0d 6a ea 16  |="Too small".j..|
000132d0  20 43 43 73 75 6d 25 3d  30 3a 69 63 6f 6e 25 3d  | CCsum%=0:icon%=|
000132e0  31 36 0d 6a f4 05 cd 0d  6a fe 1d f2 72 65 73 65  |16.j....j...rese|
000132f0  74 5f 69 63 6f 6e 28 43  43 68 61 6e 64 6c 65 25  |t_icon(CChandle%|
00013300  2c 31 37 29 0d 6b 08 05  e1 0d 6b 12 04 0d 6b 1c  |,17).k....k...k.|
00013310  04 0d 6b 26 17 dd 20 a4  72 65 6d 6f 76 65 5f 65  |..k&.. .remove_e|
00013320  78 70 28 76 61 72 24 29  0d 6b 30 0d ea 20 70 25  |xp(var$).k0.. p%|
00013330  2c 73 67 6e 25 0d 6b 3a  1e 70 25 3d bb 20 c2 76  |,sgn%.k:.p%=. .v|
00013340  61 72 24 2c 31 29 3a 73  67 6e 25 3d b4 20 bb 76  |ar$,1):sgn%=. .v|
00013350  61 72 24 0d 6b 44 17 76  61 72 24 3d c0 76 61 72  |ar$.kD.var$=.var|
00013360  24 2c a9 76 61 72 24 2d  33 29 0d 6b 4e 22 e7 20  |$,.var$-3).kN". |
00013370  73 67 6e 25 3c 30 20 8c  20 76 61 72 24 3d c2 76  |sgn%<0 . var$=.v|
00013380  61 72 24 2c a9 76 61 72  24 2d 31 29 0d 6b 58 33  |ar$,.var$-1).kX3|
00013390  e7 20 c1 76 61 72 24 2c  32 2c 31 29 3d 22 2e 22  |. .var$,2,1)="."|
000133a0  20 8c 20 76 61 72 24 3d  c0 76 61 72 24 2c 31 29  | . var$=.var$,1)|
000133b0  2b c2 76 61 72 24 2c a9  76 61 72 24 2d 32 29 0d  |+.var$,.var$-2).|
000133c0  6b 62 1c 76 61 72 24 3d  22 2e 22 2b c4 70 25 2d  |kb.var$="."+.p%-|
000133d0  31 2c 22 30 22 29 2b 76  61 72 24 0d 6b 6c 1c e7  |1,"0")+var$.kl..|
000133e0  20 73 67 6e 25 3c 30 20  8c 20 76 61 72 24 3d 22  | sgn%<0 . var$="|
000133f0  2d 22 2b 76 61 72 24 0d  6b 76 09 3d 76 61 72 24  |-"+var$.kv.=var$|
00013400  0d 6b 80 04 0d 6b 8a 19  dd 20 a4 72 65 6d 6f 76  |.k...k... .remov|
00013410  65 5f 7a 65 72 6f 73 28  76 61 72 24 29 0d 6b 94  |e_zeros(var$).k.|
00013420  13 c8 95 20 c2 76 61 72  24 2c 31 29 3d 22 30 22  |... .var$,1)="0"|
00013430  0d 6b 9e 18 20 76 61 72  24 3d c0 76 61 72 24 2c  |.k.. var$=.var$,|
00013440  a9 76 61 72 24 2d 31 29  0d 6b a8 05 ce 0d 6b b2  |.var$-1).k....k.|
00013450  09 3d 76 61 72 24 0d 6b  bc 04 0d 6b c6 04 0d 6b  |.=var$.k...k...k|
00013460  d0 10 dd 20 f2 6b 65 79  73 5f 63 61 6c 63 0d 6b  |... .keys_calc.k|
00013470  da 14 ea 20 69 63 6f 6e  25 3a 69 63 6f 6e 25 3d  |... icon%:icon%=|
00013480  2d 31 0d 6b e4 13 63 68  61 72 25 3d 62 6c 6f 63  |-1.k..char%=bloc|
00013490  6b 25 21 32 34 0d 6b ee  2c e7 20 63 68 61 72 25  |k%!24.k.,. char%|
000134a0  3e 3d 34 38 20 80 20 63  68 61 72 25 3c 3d 35 37  |>=48 . char%<=57|
000134b0  20 8c 20 69 63 6f 6e 25  3d 63 68 61 72 25 2d 34  | . icon%=char%-4|
000134c0  38 0d 6b f8 19 e7 20 21  62 6c 6f 63 6b 25 3d 43  |8.k... !block%=C|
000134d0  43 68 61 6e 64 6c 65 25  20 8c 0d 6c 02 0f 20 c8  |Chandle% ..l.. .|
000134e0  8e 20 63 68 61 72 25 20  ca 0d 6c 0c 13 20 20 c9  |. char% ..l..  .|
000134f0  20 34 33 3a 69 63 6f 6e  25 3d 31 32 0d 6c 16 13  | 43:icon%=12.l..|
00013500  20 20 c9 20 34 35 3a 69  63 6f 6e 25 3d 31 33 0d  |  . 45:icon%=13.|
00013510  6c 20 13 20 20 c9 20 34  32 3a 69 63 6f 6e 25 3d  |l .  . 42:icon%=|
00013520  31 34 0d 6c 2a 13 20 20  c9 20 34 37 3a 69 63 6f  |14.l*.  . 47:ico|
00013530  6e 25 3d 31 35 0d 6c 34  21 20 20 c9 20 33 35 2c  |n%=15.l4!  . 35,|
00013540  36 37 2c 39 39 2c 31 32  37 2c 26 31 42 3a 69 63  |67,99,127,&1B:ic|
00013550  6f 6e 25 3d 31 36 0d 6c  3e 13 20 20 c9 20 34 36  |on%=16.l>.  . 46|
00013560  3a 69 63 6f 6e 25 3d 31  30 0d 6c 48 16 20 20 c9  |:icon%=10.lH.  .|
00013570  20 31 33 2c 36 31 3a 69  63 6f 6e 25 3d 31 31 0d  | 13,61:icon%=11.|
00013580  6c 52 06 20 cb 0d 6c 5c  05 cd 0d 6c 66 40 e7 20  |lR. ..l\...lf@. |
00013590  69 63 6f 6e 25 3c 3e 2d  31 20 8c 20 f2 63 61 6c  |icon%<>-1 . .cal|
000135a0  63 61 6c 61 74 6f 72 28  69 63 6f 6e 25 29 20 8b  |calator(icon%) .|
000135b0  20 c8 99 22 57 69 6d 70  5f 50 72 6f 63 65 73 73  | .."Wimp_Process|
000135c0  4b 65 79 22 2c 63 68 61  72 25 0d 6c 70 05 e1 0d  |Key",char%.lp...|
000135d0  6c 7a 04 0d 6c 84 04 0d  6c 8e 19 dd 20 f2 62 75  |lz..l...l... .bu|
000135e0  69 6c 64 5f 6e 61 6d 65  5f 77 69 6e 64 6f 77 47  |ild_name_windowG|
000135f0  0d 6c 98 0e ea 20 69 63  6f 6e 25 2c 79 25 0d 6c  |.l... icon%,y%.l|
00013600  a2 34 f2 64 65 6c 65 74  65 5f 69 63 6f 6e 28 4e  |.4.delete_icon(N|
00013610  47 68 61 6e 64 6c 65 25  2c 34 39 2c 28 63 72 65  |Ghandle%,49,(cre|
00013620  61 74 65 25 3c 30 29 29  3a f4 20 6d 65 73 73 61  |ate%<0)):. messa|
00013630  67 65 0d 6c ac 2a f2 64  65 6c 65 74 65 5f 69 63  |ge.l.*.delete_ic|
00013640  6f 6e 28 4e 47 68 61 6e  64 6c 65 25 2c 35 34 2c  |on(NGhandle%,54,|
00013650  28 63 72 65 61 74 65 25  3c 30 29 29 0d 6c b6 34  |(create%<0)).l.4|
00013660  f2 64 65 6c 65 74 65 5f  69 63 6f 6e 28 4e 47 68  |.delete_icon(NGh|
00013670  61 6e 64 6c 65 25 2c 34  36 2c 28 63 72 65 61 74  |andle%,46,(creat|
00013680  65 25 3d 30 29 29 3a f4  20 6d 65 73 73 61 67 65  |e%=0)):. message|
00013690  0d 6c c0 34 f2 64 65 6c  65 74 65 5f 69 63 6f 6e  |.l.4.delete_icon|
000136a0  28 4e 47 68 61 6e 64 6c  65 25 2c 34 37 2c 28 63  |(NGhandle%,47,(c|
000136b0  72 65 61 74 65 25 3d 30  29 29 3a f4 20 6d 65 73  |reate%=0)):. mes|
000136c0  73 61 67 65 0d 6c ca 2a  f2 64 65 6c 65 74 65 5f  |sage.l.*.delete_|
000136d0  69 63 6f 6e 28 4e 47 68  61 6e 64 6c 65 25 2c 35  |icon(NGhandle%,5|
000136e0  30 2c 28 63 72 65 61 74  65 25 3d 30 29 29 0d 6c  |0,(create%=0)).l|
000136f0  d4 2a f2 64 65 6c 65 74  65 5f 69 63 6f 6e 28 4e  |.*.delete_icon(N|
00013700  47 68 61 6e 64 6c 65 25  2c 35 31 2c 28 63 72 65  |Ghandle%,51,(cre|
00013710  61 74 65 25 3d 30 29 29  0d 6c de 2a f2 64 65 6c  |ate%=0)).l.*.del|
00013720  65 74 65 5f 69 63 6f 6e  28 4e 47 68 61 6e 64 6c  |ete_icon(NGhandl|
00013730  65 25 2c 35 32 2c 28 63  72 65 61 74 65 25 3d 30  |e%,52,(create%=0|
00013740  29 29 0d 6c e8 1d e7 20  4e 63 6f 75 6e 74 25 20  |)).l... Ncount% |
00013750  8c 20 f2 63 6c 65 61 72  5f 73 70 61 63 65 73 0d  |. .clear_spaces.|
00013760  6c f2 18 4e 61 6d 65 4e  6f 25 3d 2d 28 4e 63 6f  |l..NameNo%=-(Nco|
00013770  75 6e 74 25 3d 30 29 0d  6c fc 25 f2 73 65 74 5f  |unt%=0).l.%.set_|
00013780  6e 65 77 5f 6e 61 6d 65  5f 6c 65 76 65 6c 73 28  |new_name_levels(|
00013790  4e 63 6f 75 6e 74 25 2b  31 2c 30 29 0d 6d 06 12  |Ncount%+1,0).m..|
000137a0  e3 20 69 63 6f 6e 25 3d  31 20 b8 20 34 32 0d 6d  |. icon%=1 . 42.m|
000137b0  10 24 20 f2 73 65 6c 65  63 74 5f 69 63 6f 6e 28  |.$ .select_icon(|
000137c0  4e 47 68 61 6e 64 6c 65  25 2c 69 63 6f 6e 25 2c  |NGhandle%,icon%,|
000137d0  30 29 0d 6d 1a 3f 20 f2  64 65 6c 65 74 65 5f 69  |0).m.? .delete_i|
000137e0  63 6f 6e 28 4e 47 68 61  6e 64 6c 65 25 2c 69 63  |con(NGhandle%,ic|
000137f0  6f 6e 25 2c 28 69 63 6f  6e 25 3e 4e 63 6f 75 6e  |on%,(icon%>Ncoun|
00013800  74 25 2d 28 4e 63 6f 75  6e 74 25 3c 34 32 29 29  |t%-(Ncount%<42))|
00013810  29 0d 6d 24 05 ed 0d 6d  2e 44 e7 20 4e 63 6f 75  |).m$...m.D. Ncou|
00013820  6e 74 25 3c 34 32 20 8c  20 e7 20 4e 63 6f 75 6e  |nt%<42 . . Ncoun|
00013830  74 25 3d 30 20 8c 20 f2  73 65 6c 65 63 74 5f 69  |t%=0 . .select_i|
00013840  63 6f 6e 28 4e 47 68 61  6e 64 6c 65 25 2c 4e 63  |con(NGhandle%,Nc|
00013850  6f 75 6e 74 25 2b 31 2c  31 29 0d 6d 38 61 e7 20  |ount%+1,1).m8a. |
00013860  63 72 65 61 74 65 25 20  8c 20 24 4e 74 69 74 6c  |create% . $Ntitl|
00013870  65 62 75 66 66 25 3d 24  6c 6f 61 64 62 75 66 66  |ebuff%=$loadbuff|
00013880  25 2b 22 20 65 64 69 74  69 6e 67 20 73 63 72 65  |%+" editing scre|
00013890  65 6e 22 20 8b 20 24 4e  74 69 74 6c 65 62 75 66  |en" . $Ntitlebuf|
000138a0  66 25 3d 24 6c 6f 61 64  62 75 66 66 25 2b 22 20  |f%=$loadbuff%+" |
000138b0  6e 61 6d 65 20 69 6e 70  75 74 22 0d 6d 42 2a 4e  |name input".mB*N|
000138c0  47 68 61 6e 64 6c 65 25  3d a4 63 65 6e 74 72 65  |Ghandle%=.centre|
000138d0  5f 77 69 6e 64 6f 77 28  4e 47 68 61 6e 64 6c 65  |_window(NGhandle|
000138e0  25 2c 22 22 29 0d 6d 4c  1b f2 63 6c 6f 73 65 5f  |%,"").mL..close_|
000138f0  77 69 6e 64 6f 77 28 43  68 61 6e 64 6c 65 25 29  |window(Chandle%)|
00013900  0d 6d 56 3d e7 20 4e 63  6f 75 6e 74 25 3c 34 32  |.mV=. Ncount%<42|
00013910  20 80 20 4e 63 6f 75 6e  74 25 3d 30 20 8c 20 f2  | . Ncount%=0 . .|
00013920  70 6c 61 63 65 5f 6e 61  6d 65 5f 63 61 72 65 74  |place_name_caret|
00013930  28 4e 63 6f 75 6e 74 25  2b 31 2c 30 29 0d 6d 60  |(Ncount%+1,0).m`|
00013940  05 e1 0d 6d 6a 04 0d 6d  74 04 0d 6d 7e 13 dd 20  |...mj..mt..m~.. |
00013950  f2 63 6c 65 61 72 5f 73  70 61 63 65 73 0d 6d 88  |.clear_spaces.m.|
00013960  15 ea 20 6e 65 77 70 6f  73 25 2c 6f 6c 64 70 6f  |.. newpos%,oldpo|
00013970  73 25 0d 6d 92 17 6e 65  77 70 6f 73 25 3d 30 3a  |s%.m..newpos%=0:|
00013980  6f 6c 64 70 6f 73 25 3d  30 0d 6d 9c 05 f5 0d 6d  |oldpos%=0.m....m|
00013990  a6 1c 20 6e 65 77 70 6f  73 25 20 2b 3d 31 3a 6f  |.. newpos% +=1:o|
000139a0  6c 64 70 6f 73 25 20 2b  3d 31 0d 6d b0 2b 20 c8  |ldpos% +=1.m.+ .|
000139b0  95 20 6e 61 6d 65 24 28  6f 6c 64 70 6f 73 25 29  |. name$(oldpos%)|
000139c0  3d 22 22 20 80 20 6f 6c  64 70 6f 73 25 3c 4e 63  |="" . oldpos%<Nc|
000139d0  6f 75 6e 74 25 0d 6d ba  11 20 20 6f 6c 64 70 6f  |ount%.m..  oldpo|
000139e0  73 25 20 2b 3d 31 0d 6d  c4 06 20 ce 0d 6d ce 1b  |s% +=1.m.. ..m..|
000139f0  20 e7 20 6e 61 6d 65 24  28 6f 6c 64 70 6f 73 25  | . name$(oldpos%|
00013a00  29 3c 3e 22 22 20 8c 0d  6d d8 23 20 20 6e 61 6d  |)<>"" ..m.#  nam|
00013a10  65 24 28 6e 65 77 70 6f  73 25 29 3d 6e 61 6d 65  |e$(newpos%)=name|
00013a20  24 28 6f 6c 64 70 6f 73  25 29 0d 6d e2 45 20 20  |$(oldpos%).m.E  |
00013a30  44 6c 65 76 65 6c 25 28  6e 65 77 70 6f 73 25 29  |Dlevel%(newpos%)|
00013a40  3d 44 6c 65 76 65 6c 25  28 6f 6c 64 70 6f 73 25  |=Dlevel%(oldpos%|
00013a50  29 3a 4c 6f 6e 67 25 28  6e 65 77 70 6f 73 25 29  |):Long%(newpos%)|
00013a60  3d 4c 6f 6e 67 25 28 6f  6c 64 70 6f 73 25 29 0d  |=Long%(oldpos%).|
00013a70  6d ec 4b 20 20 4d 48 6c  65 76 65 6c 25 28 6e 65  |m.K  MHlevel%(ne|
00013a80  77 70 6f 73 25 29 3d 4d  48 6c 65 76 65 6c 25 28  |wpos%)=MHlevel%(|
00013a90  6f 6c 64 70 6f 73 25 29  3a 48 6c 65 76 65 6c 25  |oldpos%):Hlevel%|
00013aa0  28 6e 65 77 70 6f 73 25  29 3d 48 6c 65 76 65 6c  |(newpos%)=Hlevel|
00013ab0  25 28 6f 6c 64 70 6f 73  25 29 0d 6d f6 43 20 20  |%(oldpos%).m.C  |
00013ac0  74 72 69 65 73 25 28 6e  65 77 70 6f 73 25 29 3d  |tries%(newpos%)=|
00013ad0  74 72 69 65 73 25 28 6f  6c 64 70 6f 73 25 29 3a  |tries%(oldpos%):|
00013ae0  6d 6f 64 65 25 28 6e 65  77 70 6f 73 25 29 3d 6d  |mode%(newpos%)=m|
00013af0  6f 64 65 25 28 6f 6c 64  70 6f 73 25 29 0d 6e 00  |ode%(oldpos%).n.|
00013b00  43 20 20 66 6f 72 63 65  25 28 6e 65 77 70 6f 73  |C  force%(newpos|
00013b10  25 29 3d 66 6f 72 63 65  25 28 6f 6c 64 70 6f 73  |%)=force%(oldpos|
00013b20  25 29 3a 61 75 74 6f 25  28 6e 65 77 70 6f 73 25  |%):auto%(newpos%|
00013b30  29 3d 61 75 74 6f 25 28  6f 6c 64 70 6f 73 25 29  |)=auto%(oldpos%)|
00013b40  0d 6e 0a 2b 20 20 61 75  74 6f 68 65 6c 70 25 28  |.n.+  autohelp%(|
00013b50  6e 65 77 70 6f 73 25 29  3d 61 75 74 6f 68 65 6c  |newpos%)=autohel|
00013b60  70 25 28 6f 6c 64 70 6f  73 25 29 0d 6e 14 4f 20  |p%(oldpos%).n.O |
00013b70  20 6e 6f 5f 71 75 65 73  74 25 28 6e 65 77 70 6f  | no_quest%(newpo|
00013b80  73 25 29 3d 6e 6f 5f 71  75 65 73 74 25 28 6f 6c  |s%)=no_quest%(ol|
00013b90  64 70 6f 73 25 29 3a 74  69 6d 65 6c 69 6d 25 28  |dpos%):timelim%(|
00013ba0  6e 65 77 70 6f 73 25 29  3d 74 69 6d 65 6c 69 6d  |newpos%)=timelim|
00013bb0  25 28 6f 6c 64 70 6f 73  25 29 0d 6e 1e 47 20 20  |%(oldpos%).n.G  |
00013bc0  4e 6f 74 69 6d 65 72 25  28 6e 65 77 70 6f 73 25  |Notimer%(newpos%|
00013bd0  29 3d 4e 6f 74 69 6d 65  72 25 28 6f 6c 64 70 6f  |)=Notimer%(oldpo|
00013be0  73 25 29 3a 63 61 6c 63  25 28 6e 65 77 70 6f 73  |s%):calc%(newpos|
00013bf0  25 29 3d 63 61 6c 63 25  28 6f 6c 64 70 6f 73 25  |%)=calc%(oldpos%|
00013c00  29 0d 6e 28 43 20 20 73  63 6f 72 65 25 28 6e 65  |).n(C  score%(ne|
00013c10  77 70 6f 73 25 29 3d 73  63 6f 72 65 25 28 6f 6c  |wpos%)=score%(ol|
00013c20  64 70 6f 73 25 29 3a 6e  65 78 74 25 28 6e 65 77  |dpos%):next%(new|
00013c30  70 6f 73 25 29 3d 6e 65  78 74 25 28 6f 6c 64 70  |pos%)=next%(oldp|
00013c40  6f 73 25 29 0d 6e 32 47  20 20 73 74 6f 70 25 28  |os%).n2G  stop%(|
00013c50  6e 65 77 70 6f 73 25 29  3d 73 74 6f 70 25 28 6f  |newpos%)=stop%(o|
00013c60  6c 64 70 6f 73 25 29 3a  63 6f 6c 6e 61 6d 65 25  |ldpos%):colname%|
00013c70  28 6e 65 77 70 6f 73 25  29 3d 63 6f 6c 6e 61 6d  |(newpos%)=colnam|
00013c80  65 25 28 6f 6c 64 70 6f  73 25 29 0d 6e 3c 2b 20  |e%(oldpos%).n<+ |
00013c90  20 65 73 74 69 6d 61 74  65 25 28 6e 65 77 70 6f  | estimate%(newpo|
00013ca0  73 25 29 3d 65 73 74 69  6d 61 74 65 25 28 6f 6c  |s%)=estimate%(ol|
00013cb0  64 70 6f 73 25 29 0d 6e  46 4d 20 20 6e 65 77 6c  |dpos%).nFM  newl|
00013cc0  65 76 52 25 28 6e 65 77  70 6f 73 25 29 3d 6e 65  |evR%(newpos%)=ne|
00013cd0  77 6c 65 76 52 25 28 6f  6c 64 70 6f 73 25 29 3a  |wlevR%(oldpos%):|
00013ce0  6e 65 77 6c 65 76 57 25  28 6e 65 77 70 6f 73 25  |newlevW%(newpos%|
00013cf0  29 3d 6e 65 77 6c 65 76  57 25 28 6f 6c 64 70 6f  |)=newlevW%(oldpo|
00013d00  73 25 29 0d 6e 50 49 20  20 73 61 76 65 52 25 28  |s%).nPI  saveR%(|
00013d10  6e 65 77 70 6f 73 25 29  3d 73 61 76 65 52 25 28  |newpos%)=saveR%(|
00013d20  6f 6c 64 70 6f 73 25 29  3a 64 65 63 69 6d 61 6c  |oldpos%):decimal|
00013d30  25 28 6e 65 77 70 6f 73  25 29 3d 64 65 63 69 6d  |%(newpos%)=decim|
00013d40  61 6c 25 28 6f 6c 64 70  6f 73 25 29 0d 6e 5a 49  |al%(oldpos%).nZI|
00013d50  20 20 6f 77 6e 73 75 6d  25 28 6e 65 77 70 6f 73  |  ownsum%(newpos|
00013d60  25 29 3d 6f 77 6e 73 75  6d 25 28 6f 6c 64 70 6f  |%)=ownsum%(oldpo|
00013d70  73 25 29 3a 73 70 65 65  63 68 25 28 6e 65 77 70  |s%):speech%(newp|
00013d80  6f 73 25 29 3d 73 70 65  65 63 68 25 28 6f 6c 64  |os%)=speech%(old|
00013d90  70 6f 73 25 29 0d 6e 64  06 20 cc 0d 6e 6e 11 20  |pos%).nd. ..nn. |
00013da0  20 6e 65 77 70 6f 73 25  20 2d 3d 31 0d 6e 78 06  | newpos% -=1.nx.|
00013db0  20 cd 0d 6e 82 15 fd 20  6f 6c 64 70 6f 73 25 3d  | ..n... oldpos%=|
00013dc0  4e 63 6f 75 6e 74 25 0d  6e 8c 27 4e 63 6f 75 6e  |Ncount%.n.'Ncoun|
00013dd0  74 25 3d 6e 65 77 70 6f  73 25 3a 6e 61 6d 65 24  |t%=newpos%:name$|
00013de0  28 4e 63 6f 75 6e 74 25  2b 31 29 3d 22 22 0d 6e  |(Ncount%+1)="".n|
00013df0  96 05 e1 0d 6e a0 04 0d  6e aa 04 0d 6e b4 25 dd  |....n...n...n.%.|
00013e00  20 f2 70 6c 61 63 65 5f  6e 61 6d 65 5f 63 61 72  | .place_name_car|
00013e10  65 74 28 70 6f 73 25 2c  72 65 64 72 61 77 25 29  |et(pos%,redraw%)|
00013e20  0d 6e be 08 ea 20 79 25  0d 6e c8 2f 63 61 72 65  |.n... y%.n./care|
00013e30  74 78 25 3d a4 63 61 72  65 74 78 28 70 6f 73 25  |tx%=.caretx(pos%|
00013e40  29 3a 79 25 3d a4 6e 61  6d 65 70 6f 73 79 28 70  |):y%=.nameposy(p|
00013e50  6f 73 25 29 2d 32 38 0d  6e d2 38 c8 99 22 57 69  |os%)-28.n.8.."Wi|
00013e60  6d 70 5f 53 65 74 43 61  72 65 74 50 6f 73 69 74  |mp_SetCaretPosit|
00013e70  69 6f 6e 22 2c 4e 47 68  61 6e 64 6c 65 25 2c 2d  |ion",NGhandle%,-|
00013e80  31 2c 63 61 72 65 74 78  25 2c 79 25 2c 33 32 0d  |1,caretx%,y%,32.|
00013e90  6e dc 22 e7 20 72 65 64  72 61 77 25 20 8c 20 f2  |n.". redraw% . .|
00013ea0  72 65 64 72 61 77 5f 6e  61 6d 65 28 70 6f 73 25  |redraw_name(pos%|
00013eb0  29 0d 6e e6 05 e1 0d 6e  f0 04 0d 6e fa 04 0d 6f  |).n....n...n...o|
00013ec0  04 1d dd 20 f2 70 6c 61  63 65 5f 63 68 61 72 5f  |... .place_char_|
00013ed0  63 61 72 65 74 28 70 6f  73 25 29 0d 6f 0e 0b ea  |caret(pos%).o...|
00013ee0  20 78 25 2c 79 25 0d 6f  18 2e 78 25 3d a4 6e 61  | x%,y%.o..x%=.na|
00013ef0  6d 65 70 6f 73 78 28 70  6f 73 25 29 2d 36 3a 79  |meposx(pos%)-6:y|
00013f00  25 3d a4 6e 61 6d 65 70  6f 73 79 28 70 6f 73 25  |%=.nameposy(pos%|
00013f10  29 2d 32 38 0d 6f 22 19  63 61 72 65 74 78 25 3d  |)-28.o".caretx%=|
00013f20  a4 63 61 72 65 74 78 28  70 6f 73 25 29 0d 6f 2c  |.caretx(pos%).o,|
00013f30  38 c8 99 22 57 69 6d 70  5f 53 65 74 43 61 72 65  |8.."Wimp_SetCare|
00013f40  74 50 6f 73 69 74 69 6f  6e 22 2c 4e 47 68 61 6e  |tPosition",NGhan|
00013f50  64 6c 65 25 2c 2d 31 2c  63 61 72 65 74 78 25 2c  |dle%,-1,caretx%,|
00013f60  79 25 2c 33 32 0d 6f 36  35 c8 99 22 57 69 6d 70  |y%,32.o65.."Wimp|
00013f70  5f 46 6f 72 63 65 52 65  64 72 61 77 22 2c 4e 47  |_ForceRedraw",NG|
00013f80  68 61 6e 64 6c 65 25 2c  78 25 2c 79 25 2c 78 25  |handle%,x%,y%,x%|
00013f90  2b 32 39 38 2c 79 25 2b  33 32 0d 6f 40 05 e1 0d  |+298,y%+32.o@...|
00013fa0  6f 4a 04 0d 6f 54 04 0d  6f 5e 18 dd 20 f2 72 65  |oJ..oT..o^.. .re|
00013fb0  64 72 61 77 5f 6e 61 6d  65 28 70 6f 73 25 29 0d  |draw_name(pos%).|
00013fc0  6f 68 0b ea 20 78 25 2c  79 25 0d 6f 72 2e 78 25  |oh.. x%,y%.or.x%|
00013fd0  3d a4 6e 61 6d 65 70 6f  73 78 28 70 6f 73 25 29  |=.nameposx(pos%)|
00013fe0  2d 36 3a 79 25 3d a4 6e  61 6d 65 70 6f 73 79 28  |-6:y%=.nameposy(|
00013ff0  70 6f 73 25 29 2d 33 32  0d 6f 7c 35 c8 99 22 57  |pos%)-32.o|5.."W|
00014000  69 6d 70 5f 46 6f 72 63  65 52 65 64 72 61 77 22  |imp_ForceRedraw"|
00014010  2c 4e 47 68 61 6e 64 6c  65 25 2c 78 25 2c 79 25  |,NGhandle%,x%,y%|
00014020  2c 78 25 2b 33 30 36 2c  79 25 2b 34 34 0d 6f 86  |,x%+306,y%+44.o.|
00014030  05 e1 0d 6f 90 04 0d 6f  9a 04 0d 6f a4 1c dd 20  |...o...o...o... |
00014040  f2 6e 61 6d 65 5f 69 6e  70 75 74 5f 61 72 65 61  |.name_input_area|
00014050  28 70 6f 73 25 29 0d 6f  ae 2e 78 25 3d a4 6e 61  |(pos%).o..x%=.na|
00014060  6d 65 70 6f 73 78 28 70  6f 73 25 29 2d 36 3a 79  |meposx(pos%)-6:y|
00014070  25 3d a4 6e 61 6d 65 70  6f 73 79 28 70 6f 73 25  |%=.nameposy(pos%|
00014080  29 2d 33 32 0d 6f b8 33  c8 99 22 57 69 6d 70 5f  |)-32.o.3.."Wimp_|
00014090  53 65 74 43 6f 6c 6f 75  72 22 2c 30 3a c8 93 20  |SetColour",0:.. |
000140a0  c8 90 20 6f 78 25 2b 78  25 2c 6f 79 25 2b 79 25  |.. ox%+x%,oy%+y%|
000140b0  2c 33 30 34 2c 34 30 0d  6f c2 30 c8 99 22 57 69  |,304,40.o.0.."Wi|
000140c0  6d 70 5f 53 65 74 43 6f  6c 6f 75 72 22 2c 37 3a  |mp_SetColour",7:|
000140d0  c8 93 20 6f 78 25 2b 78  25 2c 6f 79 25 2b 79 25  |.. ox%+x%,oy%+y%|
000140e0  2c 33 30 34 2c 34 30 0d  6f cc 05 e1 0d 6f d6 04  |,304,40.o....o..|
000140f0  0d 6f e0 04 0d 6f ea 2f  dd 20 a4 6e 61 6d 65 70  |.o...o./. .namep|
00014100  6f 73 78 28 6e 25 29 3d  31 31 30 2d 33 38 34 2a  |osx(n%)=110-384*|
00014110  28 6e 25 3e 31 34 29 2d  33 38 34 2a 28 6e 25 3e  |(n%>14)-384*(n%>|
00014120  32 38 29 0d 6f f4 2d dd  20 a4 63 61 72 65 74 78  |28).o.-. .caretx|
00014130  28 6e 25 29 3d a4 6e 61  6d 65 70 6f 73 78 28 6e  |(n%)=.nameposx(n|
00014140  25 29 2b 31 36 2a a9 6e  61 6d 65 24 28 6e 25 29  |%)+16*.name$(n%)|
00014150  0d 6f fe 36 dd 20 a4 6e  61 6d 65 70 6f 73 79 28  |.o.6. .nameposy(|
00014160  6e 25 29 3d 2d 31 39 36  2d 34 38 2a 6e 25 2d 36  |n%)=-196-48*n%-6|
00014170  37 32 2a 28 6e 25 3e 31  34 29 2d 36 37 32 2a 28  |72*(n%>14)-672*(|
00014180  6e 25 3e 32 38 29 0d 70  08 04 0d 70 12 04 0d 70  |n%>28).p...p...p|
00014190  1c 18 dd 20 f2 72 65 64  72 61 77 5f 63 6c 61 73  |... .redraw_clas|
000141a0  73 5f 6c 69 73 74 0d 70  26 0e ea 20 78 25 2c 79  |s_list.p&.. x%,y|
000141b0  25 2c 6e 25 0d 70 30 69  e7 20 28 63 72 65 61 74  |%,n%.p0i. (creat|
000141c0  65 25 3d 2d 31 20 84 20  4e 61 6d 65 4e 6f 25 3d  |e%=-1 . NameNo%=|
000141d0  4e 63 6f 75 6e 74 25 2b  31 29 20 80 20 a4 69 63  |Ncount%+1) . .ic|
000141e0  6f 6e 5f 73 65 6c 65 63  74 65 64 28 4e 47 68 61  |on_selected(NGha|
000141f0  6e 64 6c 65 25 2c 4e 61  6d 65 4e 6f 25 29 3d 2d  |ndle%,NameNo%)=-|
00014200  31 20 8c 20 f2 6e 61 6d  65 5f 69 6e 70 75 74 5f  |1 . .name_input_|
00014210  61 72 65 61 28 4e 61 6d  65 4e 6f 25 29 0d 70 3a  |area(NameNo%).p:|
00014220  04 0d 70 44 16 e3 20 6e  25 3d 31 20 b8 20 4e 63  |..pD.. n%=1 . Nc|
00014230  6f 75 6e 74 25 2b 31 0d  70 4e 0f 20 e7 20 6e 25  |ount%+1.pN. . n%|
00014240  3c 3d 34 32 20 8c 0d 70  58 27 20 20 78 25 3d a4  |<=42 ..pX'  x%=.|
00014250  6e 61 6d 65 70 6f 73 78  28 6e 25 29 3a 79 25 3d  |nameposx(n%):y%=|
00014260  a4 6e 61 6d 65 70 6f 73  79 28 6e 25 29 0d 70 62  |.nameposy(n%).pb|
00014270  20 20 20 ec 20 6f 78 25  2b 78 25 2c 6f 79 25 2b  |   . ox%+x%,oy%+|
00014280  79 25 3a f1 6e 61 6d 65  24 28 6e 25 29 0d 70 6c  |y%:.name$(n%).pl|
00014290  06 20 cd 0d 70 76 05 ed  0d 70 80 04 0d 70 8a 12  |. ..pv...p...p..|
000142a0  e7 20 4e 63 6f 75 6e 74  25 3c 34 32 20 8c 0d 70  |. Ncount%<42 ..p|
000142b0  94 44 20 e7 20 6e 61 6d  65 24 28 4e 63 6f 75 6e  |.D . name$(Ncoun|
000142c0  74 25 2b 31 29 3d 22 22  20 80 20 a4 69 63 6f 6e  |t%+1)="" . .icon|
000142d0  5f 73 65 6c 65 63 74 65  64 28 4e 47 68 61 6e 64  |_selected(NGhand|
000142e0  6c 65 25 2c 4e 63 6f 75  6e 74 25 2b 31 29 3d 30  |le%,Ncount%+1)=0|
000142f0  20 8c 0d 70 9e 35 20 20  78 25 3d a4 6e 61 6d 65  | ..p.5  x%=.name|
00014300  70 6f 73 78 28 4e 63 6f  75 6e 74 25 2b 31 29 3a  |posx(Ncount%+1):|
00014310  79 25 3d a4 6e 61 6d 65  70 6f 73 79 28 4e 63 6f  |y%=.nameposy(Nco|
00014320  75 6e 74 25 2b 31 29 0d  70 a8 1b 20 20 c8 99 22  |unt%+1).p..  .."|
00014330  57 69 6d 70 5f 53 65 74  43 6f 6c 6f 75 72 22 2c  |Wimp_SetColour",|
00014340  31 31 0d 70 b2 21 20 20  ec 20 6f 78 25 2b 78 25  |11.p.!  . ox%+x%|
00014350  2c 6f 79 25 2b 79 25 3a  f1 20 22 49 27 6d 20 6e  |,oy%+y%:. "I'm n|
00014360  65 77 22 0d 70 bc 06 20  cd 0d 70 c6 05 cd 0d 70  |ew".p.. ..p....p|
00014370  d0 05 e1 0d 70 da 04 0d  70 e4 04 0d 70 ee 16 dd  |....p...p...p...|
00014380  20 f2 6b 65 79 73 5f 6e  61 6d 65 28 70 6f 73 25  | .keys_name(pos%|
00014390  29 0d 70 f8 2e ea 20 63  68 25 2c 76 61 6c 69 64  |).p... ch%,valid|
000143a0  25 2c 6c 65 6e 25 2c 78  25 2c 79 25 2c 66 6c 67  |%,len%,x%,y%,flg|
000143b0  25 3a 63 68 25 3d 62 6c  6f 63 6b 25 21 32 34 0d  |%:ch%=block%!24.|
000143c0  71 02 96 76 61 6c 69 64  25 3d 28 28 63 68 25 3e  |q..valid%=((ch%>|
000143d0  3d 36 35 20 80 20 63 68  25 3c 3d 39 30 20 84 20  |=65 . ch%<=90 . |
000143e0  63 68 25 3e 3d 39 37 20  80 20 63 68 25 3c 3d 31  |ch%>=97 . ch%<=1|
000143f0  32 32 20 84 20 63 68 25  3d 33 32 29 20 80 20 a9  |22 . ch%=32) . .|
00014400  6e 61 6d 65 24 28 70 6f  73 25 29 3c 31 38 20 84  |name$(pos%)<18 .|
00014410  20 28 63 68 25 3d 31 32  37 20 84 20 63 68 25 3d  | (ch%=127 . ch%=|
00014420  31 33 20 84 20 63 68 25  3d 38 20 84 20 63 68 25  |13 . ch%=8 . ch%|
00014430  3d 26 31 38 43 29 20 80  20 6e 61 6d 65 24 28 70  |=&18C) . name$(p|
00014440  6f 73 25 29 3c 3e 22 22  20 80 20 4e 61 6d 65 4e  |os%)<>"" . NameN|
00014450  6f 25 3e 30 29 0d 71 0c  1f e7 20 63 68 25 3d 31  |o%>0).q... ch%=1|
00014460  33 20 8c 20 66 6c 67 25  3d a4 63 68 65 63 6b 5f  |3 . flg%=.check_|
00014470  6e 61 6d 65 0d 71 16 0e  e7 20 66 6c 67 25 20 8c  |name.q... flg% .|
00014480  20 e1 0d 71 17 69 e7 20  70 6f 73 25 3d 4e 63 6f  | ..q.i. pos%=Nco|
00014490  75 6e 74 25 2b 31 20 8c  20 24 44 65 6d 49 63 25  |unt%+1 . $DemIc%|
000144a0  3d 22 63 61 6e 20 74 72  61 63 6b 20 75 70 20 74  |="can track up t|
000144b0  6f 20 34 32 20 63 68 69  6c 64 72 65 6e 2e 22 3a  |o 42 children.":|
000144c0  44 65 6d 68 61 6e 64 6c  65 25 3d a4 63 65 6e 74  |Demhandle%=.cent|
000144d0  72 65 5f 77 69 6e 64 6f  77 28 44 65 6d 68 61 6e  |re_window(Demhan|
000144e0  64 6c 65 25 2c 22 59 22  29 3a e1 0d 71 20 2a e7  |dle%,"Y"):..q *.|
000144f0  20 76 61 6c 69 64 25 3d  30 20 8c 20 c8 99 22 57  | valid%=0 . .."W|
00014500  69 6d 70 5f 50 72 6f 63  65 73 73 4b 65 79 22 2c  |imp_ProcessKey",|
00014510  63 68 25 3a e1 0d 71 2a  1b e7 20 63 68 25 3d 31  |ch%:..q*.. ch%=1|
00014520  33 20 80 20 4e 63 6f 75  6e 74 25 3c 34 32 20 8c  |3 . Ncount%<42 .|
00014530  0d 71 34 10 20 e7 20 63  72 65 61 74 65 25 20 8c  |.q4. . create% .|
00014540  0d 71 3e 18 20 20 e7 20  70 6f 73 25 3c 4e 63 6f  |.q>.  . pos%<Nco|
00014550  75 6e 74 25 2b 31 20 8c  0d 71 48 25 20 20 20 f2  |unt%+1 ..qH%   .|
00014560  73 65 6c 65 63 74 5f 69  63 6f 6e 28 4e 47 68 61  |select_icon(NGha|
00014570  6e 64 6c 65 25 2c 70 6f  73 25 2c 30 29 0d 71 52  |ndle%,pos%,0).qR|
00014580  27 20 20 20 f2 73 65 6c  65 63 74 5f 69 63 6f 6e  |'   .select_icon|
00014590  28 4e 47 68 61 6e 64 6c  65 25 2c 70 6f 73 25 2b  |(NGhandle%,pos%+|
000145a0  31 2c 31 29 0d 71 5c 23  20 20 20 62 6c 6f 63 6b  |1,1).q\#   block|
000145b0  25 21 31 36 3d 70 6f 73  25 2b 31 3a f2 65 64 69  |%!16=pos%+1:.edi|
000145c0  74 5f 6e 61 6d 65 47 0d  71 66 07 20 20 cc 0d 71  |t_nameG.qf.  ..q|
000145d0  70 30 20 20 20 e7 20 70  6f 73 25 3d 4e 63 6f 75  |p0   . pos%=Ncou|
000145e0  6e 74 25 2b 31 20 80 20  6e 61 6d 65 24 28 4e 63  |nt%+1 . name$(Nc|
000145f0  6f 75 6e 74 25 2b 31 29  3c 3e 22 22 20 8c 0d 71  |ount%+1)<>"" ..q|
00014600  7a 2b 20 20 20 20 f2 6e  65 77 5f 6e 61 6d 65 28  |z+    .new_name(|
00014610  2d 31 29 3a f2 72 65 64  72 61 77 5f 6e 61 6d 65  |-1):.redraw_name|
00014620  28 4e 63 6f 75 6e 74 25  29 0d 71 84 08 20 20 20  |(Ncount%).q..   |
00014630  cd 0d 71 8e 07 20 20 cd  0d 71 98 06 20 cc 0d 71  |..q..  ..q.. ..q|
00014640  a2 20 20 20 62 6c 6f 63  6b 25 21 31 36 3d 35 30  |.   block%!16=50|
00014650  3a f2 73 65 6c 65 63 74  5f 6e 61 6d 65 47 0d 71  |:.select_nameG.q|
00014660  ac 06 20 cd 0d 71 b6 05  cd 0d 71 c0 10 e7 20 63  |.. ..q....q... c|
00014670  68 25 3d 31 33 20 8c 20  e1 0d 71 ca 04 0d 71 d4  |h%=13 . ..q...q.|
00014680  27 e7 20 28 63 68 25 3c  3e 31 32 37 20 80 20 63  |'. (ch%<>127 . c|
00014690  68 25 3c 3e 38 20 80 20  63 68 25 3c 3e 26 31 38  |h%<>8 . ch%<>&18|
000146a0  43 29 20 8c 0d 71 de 21  20 6e 61 6d 65 24 28 70  |C) ..q.! name$(p|
000146b0  6f 73 25 29 3d 6e 61 6d  65 24 28 70 6f 73 25 29  |os%)=name$(pos%)|
000146c0  2b bd 63 68 25 0d 71 e8  05 cc 0d 71 f2 19 20 6c  |+.ch%.q....q.. l|
000146d0  65 6e 25 3d a9 20 6e 61  6d 65 24 28 70 6f 73 25  |en%=. name$(pos%|
000146e0  29 2d 31 0d 71 fc 23 20  6e 61 6d 65 24 28 70 6f  |)-1.q.# name$(po|
000146f0  73 25 29 3d c0 6e 61 6d  65 24 28 70 6f 73 25 29  |s%)=.name$(pos%)|
00014700  2c 6c 65 6e 25 29 0d 72  06 05 cd 0d 72 10 04 0d  |,len%).r....r...|
00014710  72 1a 1b f2 70 6c 61 63  65 5f 63 68 61 72 5f 63  |r...place_char_c|
00014720  61 72 65 74 28 70 6f 73  25 29 0d 72 24 05 e1 0d  |aret(pos%).r$...|
00014730  72 2e 04 0d 72 38 04 0d  72 42 24 dd 20 f2 73 65  |r...r8..rB$. .se|
00014740  74 5f 6e 65 77 5f 6e 61  6d 65 5f 6c 65 76 65 6c  |t_new_name_level|
00014750  73 28 6e 6f 25 2c 6e 6f  32 25 29 0d 72 4c 35 44  |s(no%,no2%).rL5D|
00014760  6c 65 76 65 6c 25 28 6e  6f 25 29 3d 44 6c 65 76  |level%(no%)=Dlev|
00014770  65 6c 25 28 6e 6f 32 25  29 3a 4c 6f 6e 67 25 28  |el%(no2%):Long%(|
00014780  6e 6f 25 29 3d 4c 6f 6e  67 25 28 6e 6f 32 25 29  |no%)=Long%(no2%)|
00014790  0d 72 56 3b 4d 48 6c 65  76 65 6c 25 28 6e 6f 25  |.rV;MHlevel%(no%|
000147a0  29 3d 4d 48 6c 65 76 65  6c 25 28 6e 6f 32 25 29  |)=MHlevel%(no2%)|
000147b0  3a 48 6c 65 76 65 6c 25  28 6e 6f 25 29 3d 48 6c  |:Hlevel%(no%)=Hl|
000147c0  65 76 65 6c 25 28 6e 6f  32 25 29 0d 72 60 1c 74  |evel%(no2%).r`.t|
000147d0  72 69 65 73 25 28 6e 6f  25 29 3d 74 72 69 65 73  |ries%(no%)=tries|
000147e0  25 28 6e 6f 32 25 29 0d  72 6a 69 6d 6f 64 65 25  |%(no2%).rjimode%|
000147f0  28 6e 6f 25 29 3d 6d 6f  64 65 25 28 6e 6f 32 25  |(no%)=mode%(no2%|
00014800  29 3a 66 6f 72 63 65 25  28 6e 6f 25 29 3d 66 6f  |):force%(no%)=fo|
00014810  72 63 65 25 28 6e 6f 32  25 29 3a 61 75 74 6f 25  |rce%(no2%):auto%|
00014820  28 6e 6f 25 29 3d 61 75  74 6f 25 28 6e 6f 32 25  |(no%)=auto%(no2%|
00014830  29 3a 61 75 74 6f 68 65  6c 70 25 28 6e 6f 25 29  |):autohelp%(no%)|
00014840  3d 61 75 74 6f 68 65 6c  70 25 28 6e 6f 32 25 29  |=autohelp%(no2%)|
00014850  0d 72 74 d6 6e 6f 5f 71  75 65 73 74 25 28 6e 6f  |.rt.no_quest%(no|
00014860  25 29 3d 6e 6f 5f 71 75  65 73 74 25 28 6e 6f 32  |%)=no_quest%(no2|
00014870  25 29 3a 74 69 6d 65 6c  69 6d 25 28 6e 6f 25 29  |%):timelim%(no%)|
00014880  3d 74 69 6d 65 6c 69 6d  25 28 6e 6f 32 25 29 3a  |=timelim%(no2%):|
00014890  4e 6f 74 69 6d 65 72 25  28 6e 6f 25 29 3d 4e 6f  |Notimer%(no%)=No|
000148a0  74 69 6d 65 72 25 28 6e  6f 25 29 3a 63 61 6c 63  |timer%(no%):calc|
000148b0  25 28 6e 6f 25 29 3d 63  61 6c 63 25 28 6e 6f 32  |%(no%)=calc%(no2|
000148c0  25 29 3a 73 63 6f 72 65  25 28 6e 6f 25 29 3d 73  |%):score%(no%)=s|
000148d0  63 6f 72 65 25 28 6e 6f  32 25 29 3a 6e 65 78 74  |core%(no2%):next|
000148e0  25 28 6e 6f 25 29 3d 6e  65 78 74 25 28 6e 6f 32  |%(no%)=next%(no2|
000148f0  25 29 3a 73 74 6f 70 25  28 6e 6f 25 29 3d 73 74  |%):stop%(no%)=st|
00014900  6f 70 25 28 6e 6f 32 25  29 3a 63 6f 6c 6e 61 6d  |op%(no2%):colnam|
00014910  65 25 28 6e 6f 25 29 3d  63 6f 6c 6e 61 6d 65 25  |e%(no%)=colname%|
00014920  28 6e 6f 32 25 29 0d 72  7e c8 65 73 74 69 6d 61  |(no2%).r~.estima|
00014930  74 65 25 28 6e 6f 25 29  3d 65 73 74 69 6d 61 74  |te%(no%)=estimat|
00014940  65 25 28 6e 6f 32 25 29  3a 6e 65 77 6c 65 76 52  |e%(no2%):newlevR|
00014950  25 28 6e 6f 25 29 3d 6e  65 77 6c 65 76 52 25 28  |%(no%)=newlevR%(|
00014960  6e 6f 32 25 29 3a 6e 65  77 6c 65 76 57 25 28 6e  |no2%):newlevW%(n|
00014970  6f 25 29 3d 6e 65 77 6c  65 76 57 25 28 6e 6f 32  |o%)=newlevW%(no2|
00014980  25 29 3a 73 61 76 65 52  25 28 6e 6f 25 29 3d 73  |%):saveR%(no%)=s|
00014990  61 76 65 52 25 28 6e 6f  32 25 29 3a 64 65 63 69  |aveR%(no2%):deci|
000149a0  6d 61 6c 25 28 6e 6f 25  29 3d 64 65 63 69 6d 61  |mal%(no%)=decima|
000149b0  6c 25 28 6e 6f 32 25 29  3a 6f 77 6e 73 75 6d 25  |l%(no2%):ownsum%|
000149c0  28 6e 6f 25 29 3d 6f 77  6e 73 75 6d 25 28 6e 6f  |(no%)=ownsum%(no|
000149d0  32 25 29 3a 73 70 65 65  63 68 25 28 6e 6f 25 29  |2%):speech%(no%)|
000149e0  3d 73 70 65 65 63 68 25  28 6e 6f 32 25 29 0d 72  |=speech%(no2%).r|
000149f0  88 19 f2 73 65 74 5f 70  72 65 66 65 72 65 6e 63  |...set_preferenc|
00014a00  65 73 28 6e 6f 25 29 0d  72 92 05 e1 0d 72 9c 04  |es(no%).r....r..|
00014a10  0d 72 a6 04 0d 72 b0 18  dd 20 f2 73 74 6f 72 65  |.r...r... .store|
00014a20  5f 6e 61 6d 65 5f 6c 65  76 65 6c 73 0d 72 ba 2d  |_name_levels.r.-|
00014a30  44 6c 65 76 65 6c 25 28  34 33 29 3d 44 6c 65 76  |Dlevel%(43)=Dlev|
00014a40  65 6c 25 28 30 29 3a 4c  6f 6e 67 25 28 34 33 29  |el%(0):Long%(43)|
00014a50  3d 4c 6f 6e 67 25 28 30  29 0d 72 c4 33 4d 48 6c  |=Long%(0).r.3MHl|
00014a60  65 76 65 6c 25 28 34 33  29 3d 4d 48 6c 65 76 65  |evel%(43)=MHleve|
00014a70  6c 25 28 30 29 3a 48 6c  65 76 65 6c 25 28 34 33  |l%(0):Hlevel%(43|
00014a80  29 3d 48 6c 65 76 65 6c  25 28 30 29 0d 72 ce 18  |)=Hlevel%(0).r..|
00014a90  74 72 69 65 73 25 28 34  33 29 3d 74 72 69 65 73  |tries%(43)=tries|
00014aa0  25 28 30 29 0d 72 d8 59  6d 6f 64 65 25 28 34 33  |%(0).r.Ymode%(43|
00014ab0  29 3d 6d 6f 64 65 25 28  30 29 3a 66 6f 72 63 65  |)=mode%(0):force|
00014ac0  25 28 34 33 29 3d 66 6f  72 63 65 25 28 30 29 3a  |%(43)=force%(0):|
00014ad0  61 75 74 6f 25 28 34 33  29 3d 61 75 74 6f 25 28  |auto%(43)=auto%(|
00014ae0  30 29 3a 61 75 74 6f 68  65 6c 70 25 28 34 33 29  |0):autohelp%(43)|
00014af0  3d 61 75 74 6f 68 65 6c  70 25 28 30 29 0d 72 e2  |=autohelp%(0).r.|
00014b00  b7 6e 6f 5f 71 75 65 73  74 25 28 34 33 29 3d 6e  |.no_quest%(43)=n|
00014b10  6f 5f 71 75 65 73 74 25  28 30 29 3a 74 69 6d 65  |o_quest%(0):time|
00014b20  6c 69 6d 25 28 34 33 29  3d 74 69 6d 65 6c 69 6d  |lim%(43)=timelim|
00014b30  25 28 30 29 3a 4e 6f 74  69 6d 65 72 25 28 34 33  |%(0):Notimer%(43|
00014b40  29 3d 4e 6f 74 69 6d 65  72 25 28 30 29 3a 63 61  |)=Notimer%(0):ca|
00014b50  6c 63 25 28 34 33 29 3d  63 61 6c 63 25 28 30 29  |lc%(43)=calc%(0)|
00014b60  3a 73 63 6f 72 65 25 28  34 33 29 3d 73 63 6f 72  |:score%(43)=scor|
00014b70  65 25 28 30 29 3a 6e 65  78 74 25 28 34 33 29 3d  |e%(0):next%(43)=|
00014b80  6e 65 78 74 25 28 30 29  3a 73 74 6f 70 25 28 34  |next%(0):stop%(4|
00014b90  33 29 3d 73 74 6f 70 25  28 30 29 3a 63 6f 6c 6e  |3)=stop%(0):coln|
00014ba0  61 6d 65 25 28 34 33 29  3d 63 6f 6c 6e 61 6d 65  |ame%(43)=colname|
00014bb0  25 28 30 29 0d 72 ec ac  65 73 74 69 6d 61 74 65  |%(0).r..estimate|
00014bc0  25 28 34 33 29 3d 65 73  74 69 6d 61 74 65 25 28  |%(43)=estimate%(|
00014bd0  30 29 3a 6e 65 77 6c 65  76 52 25 28 34 33 29 3d  |0):newlevR%(43)=|
00014be0  6e 65 77 6c 65 76 52 25  28 30 29 3a 6e 65 77 6c  |newlevR%(0):newl|
00014bf0  65 76 57 25 28 34 33 29  3d 6e 65 77 6c 65 76 57  |evW%(43)=newlevW|
00014c00  25 28 30 29 3a 73 61 76  65 52 25 28 34 33 29 3d  |%(0):saveR%(43)=|
00014c10  73 61 76 65 52 25 28 30  29 3a 64 65 63 69 6d 61  |saveR%(0):decima|
00014c20  6c 25 28 34 33 29 3d 64  65 63 69 6d 61 6c 25 28  |l%(43)=decimal%(|
00014c30  30 29 3a 6f 77 6e 73 75  6d 25 28 34 33 29 3d 6f  |0):ownsum%(43)=o|
00014c40  77 6e 73 75 6d 25 28 30  29 3a 73 70 65 65 63 68  |wnsum%(0):speech|
00014c50  25 28 34 33 29 3d 73 70  65 65 63 68 25 28 30 29  |%(43)=speech%(0)|
00014c60  0d 72 f6 05 e1 0d 73 00  04 0d 73 0a 04 0d 73 14  |.r....s...s...s.|
00014c70  16 dd 20 f2 64 65 66 61  75 6c 74 5f 6f 70 74 69  |.. .default_opti|
00014c80  6f 6e 73 0d 73 1e 25 f2  73 65 6c 65 63 74 5f 69  |ons.s.%.select_i|
00014c90  63 6f 6e 28 4e 47 68 61  6e 64 6c 65 25 2c 4e 61  |con(NGhandle%,Na|
00014ca0  6d 65 4e 6f 25 2c 30 29  0d 73 28 27 c8 99 22 57  |meNo%,0).s('.."W|
00014cb0  69 6d 70 5f 53 65 74 43  61 72 65 74 50 6f 73 69  |imp_SetCaretPosi|
00014cc0  74 69 6f 6e 22 2c 4e 47  68 61 6e 64 6c 65 25 0d  |tion",NGhandle%.|
00014cd0  73 32 3f e7 20 4e 61 6d  65 4e 6f 25 20 8c 20 c8  |s2?. NameNo% . .|
00014ce0  99 22 57 69 6d 70 5f 46  6f 72 63 65 52 65 64 72  |."Wimp_ForceRedr|
00014cf0  61 77 22 2c 4e 47 68 61  6e 64 6c 65 25 2c 30 2c  |aw",NGhandle%,0,|
00014d00  2d 39 37 36 2c 31 31 37  36 2c 2d 31 37 30 0d 73  |-976,1176,-170.s|
00014d10  3c 0d 4e 61 6d 65 4e 6f  25 3d 30 0d 73 46 18 f2  |<.NameNo%=0.sF..|
00014d20  73 65 74 5f 63 6f 6e 66  69 67 5f 74 69 74 6c 65  |set_config_title|
00014d30  28 30 29 0d 73 50 17 f2  73 65 74 5f 70 72 65 66  |(0).sP..set_pref|
00014d40  65 72 65 6e 63 65 73 28  30 29 0d 73 5a 1a f2 6f  |erences(0).sZ..o|
00014d50  70 65 6e 5f 77 69 6e 64  6f 77 28 43 68 61 6e 64  |pen_window(Chand|
00014d60  6c 65 25 29 0d 73 64 05  e1 0d 73 6e 04 0d 73 78  |le%).sd...sn..sx|
00014d70  04 0d 73 82 18 dd 20 f2  6e 65 77 5f 6e 61 6d 65  |..s... .new_name|
00014d80  28 72 65 64 72 61 77 25  29 0d 73 8c 34 e7 20 4e  |(redraw%).s.4. N|
00014d90  63 6f 75 6e 74 25 3c 34  31 20 8c 20 f2 73 65 6c  |count%<41 . .sel|
00014da0  65 63 74 5f 69 63 6f 6e  28 4e 47 68 61 6e 64 6c  |ect_icon(NGhandl|
00014db0  65 25 2c 4e 61 6d 65 4e  6f 25 2c 30 29 0d 73 96  |e%,NameNo%,0).s.|
00014dc0  37 4e 63 6f 75 6e 74 25  20 2d 3d 28 4e 63 6f 75  |7Ncount% -=(Ncou|
00014dd0  6e 74 25 3c 34 32 29 3a  4e 61 6d 65 4e 6f 25 3d  |nt%<42):NameNo%=|
00014de0  4e 63 6f 75 6e 74 25 2d  28 4e 63 6f 75 6e 74 25  |Ncount%-(Ncount%|
00014df0  3c 34 32 29 0d 73 a0 14  e7 20 4e 63 6f 75 6e 74  |<42).s... Ncount|
00014e00  25 3d 34 32 20 8c 20 e1  0d 73 aa 27 f2 64 65 6c  |%=42 . ..s.'.del|
00014e10  65 74 65 5f 69 63 6f 6e  28 4e 47 68 61 6e 64 6c  |ete_icon(NGhandl|
00014e20  65 25 2c 4e 63 6f 75 6e  74 25 2b 31 2c 30 29 0d  |e%,Ncount%+1,0).|
00014e30  73 b4 27 f2 73 65 6c 65  63 74 5f 69 63 6f 6e 28  |s.'.select_icon(|
00014e40  4e 47 68 61 6e 64 6c 65  25 2c 4e 63 6f 75 6e 74  |NGhandle%,Ncount|
00014e50  25 2b 31 2c 31 29 0d 73  be 25 f2 73 65 74 5f 6e  |%+1,1).s.%.set_n|
00014e60  65 77 5f 6e 61 6d 65 5f  6c 65 76 65 6c 73 28 4e  |ew_name_levels(N|
00014e70  63 6f 75 6e 74 25 2b 31  2c 30 29 0d 73 c8 2f e7  |count%+1,0).s./.|
00014e80  20 72 65 64 72 61 77 25  20 8c 20 f2 70 6c 61 63  | redraw% . .plac|
00014e90  65 5f 6e 61 6d 65 5f 63  61 72 65 74 28 4e 63 6f  |e_name_caret(Nco|
00014ea0  75 6e 74 25 2b 31 2c 2d  31 29 0d 73 d2 20 f2 73  |unt%+1,-1).s. .s|
00014eb0  65 74 5f 63 6f 6e 66 69  67 5f 74 69 74 6c 65 28  |et_config_title(|
00014ec0  4e 63 6f 75 6e 74 25 2b  31 29 0d 73 dc 05 e1 0d  |Ncount%+1).s....|
00014ed0  73 e6 04 0d 73 f0 04 0d  73 fa 1c dd 20 f2 73 65  |s...s...s... .se|
00014ee0  74 5f 63 6f 6e 66 69 67  5f 74 69 74 6c 65 28 6e  |t_config_title(n|
00014ef0  6f 25 29 0d 74 04 0d e7  20 6e 6f 25 3d 30 20 8c  |o%).t... no%=0 .|
00014f00  0d 74 0e 3f 20 24 74 69  74 6c 65 62 75 66 66 43  |.t.? $titlebuffC|
00014f10  25 3d 22 47 72 6f 75 70  20 27 22 2b a4 67 65 74  |%="Group '"+.get|
00014f20  6c 65 61 66 28 24 73 61  76 65 62 75 66 66 25 2c  |leaf($savebuff%,|
00014f30  30 29 2b 22 27 20 64 65  66 61 75 6c 74 73 22 0d  |0)+"' defaults".|
00014f40  74 18 05 cc 0d 74 22 27  20 24 74 69 74 6c 65 62  |t....t"' $titleb|
00014f50  75 66 66 43 25 3d 22 4f  70 74 69 6f 6e 73 20 22  |uffC%="Options "|
00014f60  2b 6e 61 6d 65 24 28 6e  6f 25 29 0d 74 2c 05 cd  |+name$(no%).t,..|
00014f70  0d 74 36 25 f2 64 65 6c  65 74 65 5f 69 63 6f 6e  |.t6%.delete_icon|
00014f80  28 43 68 61 6e 64 6c 65  25 2c 36 34 2c 28 6e 6f  |(Chandle%,64,(no|
00014f90  25 3e 30 29 29 0d 74 40  25 f2 64 65 6c 65 74 65  |%>0)).t@%.delete|
00014fa0  5f 69 63 6f 6e 28 43 68  61 6e 64 6c 65 25 2c 36  |_icon(Chandle%,6|
00014fb0  36 2c 28 6e 6f 25 3e 30  29 29 0d 74 4a 25 f2 64  |6,(no%>0)).tJ%.d|
00014fc0  65 6c 65 74 65 5f 69 63  6f 6e 28 43 68 61 6e 64  |elete_icon(Chand|
00014fd0  6c 65 25 2c 36 38 2c 28  6e 6f 25 3e 30 29 29 0d  |le%,68,(no%>0)).|
00014fe0  74 54 25 f2 64 65 6c 65  74 65 5f 69 63 6f 6e 28  |tT%.delete_icon(|
00014ff0  43 68 61 6e 64 6c 65 25  2c 36 35 2c 28 6e 6f 25  |Chandle%,65,(no%|
00015000  3d 30 29 29 0d 74 5e 25  f2 64 65 6c 65 74 65 5f  |=0)).t^%.delete_|
00015010  69 63 6f 6e 28 43 68 61  6e 64 6c 65 25 2c 35 31  |icon(Chandle%,51|
00015020  2c 28 6e 6f 25 3d 30 29  29 0d 74 68 26 f2 73 68  |,(no%=0)).th&.sh|
00015030  61 64 65 5f 69 63 6f 6e  28 43 68 61 6e 64 6c 65  |ade_icon(Chandle|
00015040  25 2c 36 35 2c 28 67 61  6d 65 25 3e 30 29 29 0d  |%,65,(game%>0)).|
00015050  74 72 29 e7 20 6e 6f 25  3d 30 20 8c 20 f2 73 74  |tr). no%=0 . .st|
00015060  6f 72 65 5f 6e 61 6d 65  5f 6c 65 76 65 6c 73 3a  |ore_name_levels:|
00015070  61 6c 74 65 72 25 3d 30  0d 74 7c 1e e7 20 a4 77  |alter%=0.t|.. .w|
00015080  69 6e 64 6f 77 5f 6f 70  65 6e 28 43 68 61 6e 64  |indow_open(Chand|
00015090  6c 65 25 29 20 8c 0d 74  86 1c 20 f2 63 6c 6f 73  |le%) ..t.. .clos|
000150a0  65 5f 77 69 6e 64 6f 77  28 43 68 61 6e 64 6c 65  |e_window(Chandle|
000150b0  25 29 0d 74 90 1b 20 f2  6f 70 65 6e 5f 77 69 6e  |%).t.. .open_win|
000150c0  64 6f 77 28 43 68 61 6e  64 6c 65 25 29 0d 74 9a  |dow(Chandle%).t.|
000150d0  05 cd 0d 74 a4 05 e1 0d  74 ae 04 0d 74 b8 04 0d  |...t....t...t...|
000150e0  74 c2 11 dd 20 f2 65 64  69 74 5f 6e 61 6d 65 47  |t... .edit_nameG|
000150f0  0d 74 cc 19 ea 20 69 6e  76 61 6c 69 64 25 2c 69  |.t... invalid%,i|
00015100  63 6f 6e 25 2c 66 6c 67  25 0d 74 d6 21 69 63 6f  |con%,flg%.t.!ico|
00015110  6e 25 3d 62 6c 6f 63 6b  25 21 31 36 3a 6e 6f 74  |n%=block%!16:not|
00015120  73 61 76 65 64 4f 25 3d  2d 31 0d 74 e0 39 e7 20  |savedO%=-1.t.9. |
00015130  69 63 6f 6e 25 3e 3d 31  20 80 20 69 63 6f 6e 25  |icon%>=1 . icon%|
00015140  3c 3d 34 32 20 84 20 69  63 6f 6e 25 3e 3d 35 30  |<=42 . icon%>=50|
00015150  20 8c 20 66 6c 67 25 3d  a4 63 68 65 63 6b 5f 6e  | . flg%=.check_n|
00015160  61 6d 65 0d 74 ea 1d e7  20 66 6c 67 25 3d 2d 31  |ame.t... flg%=-1|
00015170  20 80 20 69 63 6f 6e 25  3e 3d 35 30 20 8c 20 e1  | . icon%>=50 . .|
00015180  0d 74 f4 68 e7 20 69 63  6f 6e 25 3d 4e 63 6f 75  |.t.h. icon%=Ncou|
00015190  6e 74 25 2b 31 20 8c 20  24 44 65 6d 49 63 25 3d  |nt%+1 . $DemIc%=|
000151a0  22 63 61 6e 20 74 72 61  63 6b 20 75 70 20 74 6f  |"can track up to|
000151b0  20 34 32 20 63 68 69 6c  64 72 65 6e 2e 22 3a 44  | 42 children.":D|
000151c0  65 6d 68 61 6e 64 6c 65  25 3d a4 63 65 6e 74 72  |emhandle%=.centr|
000151d0  65 5f 77 69 6e 64 6f 77  28 44 65 6d 68 61 6e 64  |e_window(Demhand|
000151e0  6c 65 25 2c 22 59 22 29  0d 74 f5 04 0d 74 fe 1c  |le%,"Y").t...t..|
000151f0  e7 20 69 63 6f 6e 25 3e  3d 31 20 80 20 69 63 6f  |. icon%>=1 . ico|
00015200  6e 25 3c 3d 34 32 20 8c  0d 75 08 3c 20 e7 20 4e  |n%<=42 ..u.< . N|
00015210  61 6d 65 4e 6f 25 3d 4e  63 6f 75 6e 74 25 2b 31  |ameNo%=Ncount%+1|
00015220  20 80 20 6e 61 6d 65 24  28 4e 61 6d 65 4e 6f 25  | . name$(NameNo%|
00015230  29 3c 3e 22 22 20 80 20  4e 63 6f 75 6e 74 25 3c  |)<>"" . Ncount%<|
00015240  34 31 20 8c 0d 75 12 13  20 20 f4 20 4e 63 6f 75  |41 ..u..  . Ncou|
00015250  6e 74 25 20 2b 3d 31 0d  75 1c 2e 20 20 f4 20 50  |nt% +=1.u..  . P|
00015260  52 4f 43 64 65 6c 65 74  65 5f 69 63 6f 6e 28 4e  |ROCdelete_icon(N|
00015270  47 68 61 6e 64 6c 65 25  2c 4e 63 6f 75 6e 74 25  |Ghandle%,Ncount%|
00015280  2b 31 2c 30 29 0d 75 26  2c 20 20 f4 20 50 52 4f  |+1,0).u&,  . PRO|
00015290  43 73 65 74 5f 6e 65 77  5f 6e 61 6d 65 5f 6c 65  |Cset_new_name_le|
000152a0  76 65 6c 73 28 4e 63 6f  75 6e 74 25 2b 31 2c 30  |vels(Ncount%+1,0|
000152b0  29 0d 75 30 22 20 20 f4  20 50 52 4f 43 72 65 64  |).u0"  . PROCred|
000152c0  72 61 77 5f 6e 61 6d 65  28 4e 63 6f 75 6e 74 25  |raw_name(Ncount%|
000152d0  2b 31 29 0d 75 3a 06 20  cd 0d 75 44 04 0d 75 4e  |+1).u:. ..uD..uN|
000152e0  26 20 e7 20 4e 61 6d 65  4e 6f 25 20 8c 20 f2 72  |& . NameNo% . .r|
000152f0  65 64 72 61 77 5f 6e 61  6d 65 28 4e 61 6d 65 4e  |edraw_name(NameN|
00015300  6f 25 29 0d 75 58 30 20  4e 61 6d 65 4e 6f 25 3d  |o%).uX0 NameNo%=|
00015310  69 63 6f 6e 25 3a f2 70  6c 61 63 65 5f 6e 61 6d  |icon%:.place_nam|
00015320  65 5f 63 61 72 65 74 28  4e 61 6d 65 4e 6f 25 2c  |e_caret(NameNo%,|
00015330  2d 31 29 0d 75 62 1f 20  f2 73 65 74 5f 63 6f 6e  |-1).ub. .set_con|
00015340  66 69 67 5f 74 69 74 6c  65 28 4e 61 6d 65 4e 6f  |fig_title(NameNo|
00015350  25 29 0d 75 6c 56 20 e7  20 4e 61 6d 65 4e 6f 25  |%).ulV . NameNo%|
00015360  3d 4e 63 6f 75 6e 74 25  2b 31 20 8c 20 f2 73 65  |=Ncount%+1 . .se|
00015370  74 5f 6e 65 77 5f 6e 61  6d 65 5f 6c 65 76 65 6c  |t_new_name_level|
00015380  73 28 4e 61 6d 65 4e 6f  25 2c 30 29 20 8b 20 f2  |s(NameNo%,0) . .|
00015390  73 65 74 5f 70 72 65 66  65 72 65 6e 63 65 73 28  |set_preferences(|
000153a0  4e 61 6d 65 4e 6f 25 29  0d 75 76 05 cd 0d 75 80  |NameNo%).uv...u.|
000153b0  04 0d 75 8a 0e c8 8e 20  69 63 6f 6e 25 20 ca 0d  |..u.... icon% ..|
000153c0  75 94 33 20 c9 20 2d 31  3a e7 20 4e 61 6d 65 4e  |u.3 . -1:. NameN|
000153d0  6f 25 20 8c 20 f2 70 6c  61 63 65 5f 6e 61 6d 65  |o% . .place_name|
000153e0  5f 63 61 72 65 74 28 4e  61 6d 65 4e 6f 25 2c 2d  |_caret(NameNo%,-|
000153f0  31 29 0d 75 9e 4c 20 c9  20 35 30 3a f4 20 49 46  |1).u.L . 50:. IF|
00015400  20 4e 63 6f 75 6e 74 25  3c 34 32 20 54 48 45 4e  | Ncount%<42 THEN|
00015410  20 49 46 20 6e 61 6d 65  24 28 4e 63 6f 75 6e 74  | IF name$(Ncount|
00015420  25 2b 31 29 3c 3e 22 22  20 54 48 45 4e 20 50 52  |%+1)<>"" THEN PR|
00015430  4f 43 6e 65 77 5f 6e 61  6d 65 28 2d 31 29 0d 75  |OCnew_name(-1).u|
00015440  a8 34 20 20 20 20 20 20  20 20 20 e7 20 6e 6f 74  |.4         . not|
00015450  73 61 76 65 64 4f 25 20  8c 20 f2 73 61 76 65 5f  |savedO% . .save_|
00015460  66 69 6c 65 28 24 73 61  76 65 62 75 66 66 25 2c  |file($savebuff%,|
00015470  30 29 0d 75 b2 3d 20 20  20 20 20 20 20 20 20 f2  |0).u.=         .|
00015480  63 6c 6f 73 65 5f 77 69  6e 64 6f 77 28 4e 47 68  |close_window(NGh|
00015490  61 6e 64 6c 65 25 29 3a  f2 63 6c 6f 73 65 5f 77  |andle%):.close_w|
000154a0  69 6e 64 6f 77 28 43 68  61 6e 64 6c 65 25 29 0d  |indow(Chandle%).|
000154b0  75 bc 39 20 20 20 20 20  20 20 20 20 63 72 65 61  |u.9         crea|
000154c0  74 65 25 3d 30 3a 4e 61  6d 65 4e 6f 25 3d 30 3a  |te%=0:NameNo%=0:|
000154d0  f2 63 6c 6f 73 65 5f 77  69 6e 64 6f 77 28 45 64  |.close_window(Ed|
000154e0  68 61 6e 64 6c 65 25 29  0d 75 c6 1a 20 c9 20 35  |handle%).u.. . 5|
000154f0  31 3a f2 64 65 66 61 75  6c 74 5f 6f 70 74 69 6f  |1:.default_optio|
00015500  6e 73 0d 75 d0 15 20 c9  20 35 32 3a e7 20 4e 61  |ns.u.. . 52:. Na|
00015510  6d 65 4e 6f 25 20 8c 0d  75 da 42 20 20 20 20 20  |meNo% ..u.B     |
00015520  20 20 20 20 20 f2 73 65  74 5f 63 6f 6e 66 69 67  |     .set_config|
00015530  5f 74 69 74 6c 65 28 4e  61 6d 65 4e 6f 25 29 3a  |_title(NameNo%):|
00015540  f2 73 65 74 5f 70 72 65  66 65 72 65 6e 63 65 73  |.set_preferences|
00015550  28 4e 61 6d 65 4e 6f 25  29 0d 75 e4 24 20 20 20  |(NameNo%).u.$   |
00015560  20 20 20 20 20 20 20 f2  6f 70 65 6e 5f 77 69 6e  |       .open_win|
00015570  64 6f 77 28 43 68 61 6e  64 6c 65 25 29 0d 75 ee  |dow(Chandle%).u.|
00015580  0e 20 20 20 20 20 20 20  20 20 cd 0d 75 f8 05 cb  |.         ..u...|
00015590  0d 76 02 25 f2 73 68 61  64 65 5f 69 74 65 6d 28  |.v.%.shade_item(|
000155a0  6d 65 6e 75 25 2c 31 2c  2d 28 4e 61 6d 65 4e 6f  |menu%,1,-(NameNo|
000155b0  25 3d 30 29 29 0d 76 0c  05 e1 0d 76 16 04 0d 76  |%=0)).v....v...v|
000155c0  20 04 0d 76 2a 11 dd 20  a4 63 68 65 63 6b 5f 6e  | ..v*.. .check_n|
000155d0  61 6d 65 0d 76 34 19 ea  20 6e 25 2c 66 6c 67 25  |ame.v4.. n%,flg%|
000155e0  3a 6e 25 3d 30 3a 66 6c  67 25 3d 30 0d 76 3e 05  |:n%=0:flg%=0.v>.|
000155f0  f5 0d 76 48 0b 20 6e 25  20 2b 3d 31 0d 76 52 4c  |..vH. n% +=1.vRL|
00015600  20 e7 20 6e 61 6d 65 24  28 6e 25 29 3d 6e 61 6d  | . name$(n%)=nam|
00015610  65 24 28 4e 61 6d 65 4e  6f 25 29 20 80 20 6e 25  |e$(NameNo%) . n%|
00015620  3c 3e 4e 61 6d 65 4e 6f  25 20 80 20 6e 61 6d 65  |<>NameNo% . name|
00015630  24 28 4e 61 6d 65 4e 6f  25 29 3c 3e 22 22 20 8c  |$(NameNo%)<>"" .|
00015640  20 66 6c 67 25 3d 2d 31  0d 76 5c 1c fd 20 66 6c  | flg%=-1.v\.. fl|
00015650  67 25 3d 2d 31 20 84 20  6e 25 3d 4e 63 6f 75 6e  |g%=-1 . n%=Ncoun|
00015660  74 25 2b 31 0d 76 66 04  0d 76 70 0c e7 20 66 6c  |t%+1.vf..vp.. fl|
00015670  67 25 20 8c 0d 76 7a 16  20 6e 61 6d 65 24 28 4e  |g% ..vz. name$(N|
00015680  61 6d 65 4e 6f 25 29 3d  22 22 0d 76 84 22 20 f2  |ameNo%)="".v." .|
00015690  70 6c 61 63 65 5f 6e 61  6d 65 5f 63 61 72 65 74  |place_name_caret|
000156a0  28 4e 61 6d 65 4e 6f 25  2c 2d 31 29 0d 76 8e 2c  |(NameNo%,-1).v.,|
000156b0  20 45 64 68 61 6e 64 6c  65 25 3d a4 63 65 6e 74  | Edhandle%=.cent|
000156c0  72 65 5f 77 69 6e 64 6f  77 28 45 64 68 61 6e 64  |re_window(Edhand|
000156d0  6c 65 25 2c 22 59 22 29  0d 76 98 05 cc 0d 76 a2  |le%,"Y").v....v.|
000156e0  1d 20 f2 63 6c 6f 73 65  5f 77 69 6e 64 6f 77 28  |. .close_window(|
000156f0  45 64 68 61 6e 64 6c 65  25 29 0d 76 ac 05 cd 0d  |Edhandle%).v....|
00015700  76 b6 09 3d 66 6c 67 25  0d 76 c0 04 0d 76 ca 04  |v..=flg%.v...v..|
00015710  0d 76 d4 18 dd 20 f2 72  65 73 75 6c 74 73 5f 6e  |.v... .results_n|
00015720  65 78 74 5f 6e 61 6d 65  0d 76 de 38 ea 20 6e 25  |ext_name.v.8. n%|
00015730  2c 6c 65 76 24 2c 4d 6c  65 76 24 2c 44 6c 65 76  |,lev$,Mlev$,Dlev|
00015740  24 2c 68 65 6c 70 24 2c  73 74 24 3a 52 63 6e 74  |$,help$,st$:Rcnt|
00015750  25 20 2b 3d 32 3a 52 63  6e 74 32 25 20 2b 3d 32  |% +=2:Rcnt2% +=2|
00015760  0d 76 e8 04 0d 76 f2 33  e7 20 6d 6f 64 65 25 28  |.v...v.3. mode%(|
00015770  4e 61 6d 65 4e 6f 25 29  20 8c 20 6c 65 76 24 3d  |NameNo%) . lev$=|
00015780  c3 48 65 6c 70 6c 65 76  25 20 8b 20 6c 65 76 24  |.Helplev% . lev$|
00015790  3d 22 4e 6f 6e 65 22 0d  76 fc 40 e7 20 6f 77 6e  |="None".v.@. own|
000157a0  73 75 6d 25 28 4e 61 6d  65 4e 6f 25 29 3d 30 20  |sum%(NameNo%)=0 |
000157b0  8c 20 44 6c 65 76 24 3d  c3 20 44 6c 65 76 65 6c  |. Dlev$=. Dlevel|
000157c0  25 28 4e 61 6d 65 4e 6f  25 29 20 8b 20 44 6c 65  |%(NameNo%) . Dle|
000157d0  76 24 3d 22 20 2d 22 0d  77 06 44 e7 20 61 75 74  |v$=" -".w.D. aut|
000157e0  6f 68 65 6c 70 25 28 4e  61 6d 65 4e 6f 25 29 20  |ohelp%(NameNo%) |
000157f0  8c 20 68 65 6c 70 24 3d  22 20 4d 69 6e 20 68 65  |. help$=" Min he|
00015800  6c 70 3a 22 20 8b 20 68  65 6c 70 24 3d 22 20 48  |lp:" . help$=" H|
00015810  65 6c 70 20 6c 65 76 65  6c 3a 22 0d 77 10 04 0d  |elp level:".w...|
00015820  77 1a 48 73 74 24 3d 22  20 4e 61 6d 65 3a 20 22  |w.Hst$=" Name: "|
00015830  2b 6e 61 6d 65 24 28 4e  61 6d 65 4e 6f 25 29 2b  |+name$(NameNo%)+|
00015840  22 20 20 53 74 61 72 74  20 6c 65 76 65 6c 73 3a  |"  Start levels:|
00015850  20 64 69 76 3a 22 2b 44  6c 65 76 24 2b 68 65 6c  | div:"+Dlev$+hel|
00015860  70 24 2b 6c 65 76 24 0d  77 24 22 52 70 74 72 25  |p$+lev$.w$"Rptr%|
00015870  3d a4 61 64 64 5f 73 74  72 69 6e 67 28 52 70 74  |=.add_string(Rpt|
00015880  72 25 2c 73 74 24 2c 32  29 0d 77 2e 1b f2 73 68  |r%,st$,2).w...sh|
00015890  61 64 65 5f 69 74 65 6d  28 72 6d 65 6e 75 25 2c  |ade_item(rmenu%,|
000158a0  30 2c 30 29 0d 77 38 1b  f2 73 68 61 64 65 5f 69  |0,0).w8..shade_i|
000158b0  74 65 6d 28 72 6d 65 6e  75 25 2c 33 2c 30 29 0d  |tem(rmenu%,3,0).|
000158c0  77 42 05 e1 0d 77 4c 04  0d 77 56 04 0d 77 60 13  |wB...wL..wV..w`.|
000158d0  dd 20 f2 73 65 6c 65 63  74 5f 6e 61 6d 65 47 0d  |. .select_nameG.|
000158e0  77 6a 2f ea 20 69 6e 76  61 6c 69 64 25 2c 69 63  |wj/. invalid%,ic|
000158f0  6f 6e 25 2c 66 6c 67 25  2c 66 6c 67 32 25 3a 69  |on%,flg%,flg2%:i|
00015900  63 6f 6e 25 3d 62 6c 6f  63 6b 25 21 31 36 0d 77  |con%=block%!16.w|
00015910  74 15 66 6c 67 32 25 3d  a4 63 68 65 63 6b 5f 6e  |t.flg2%=.check_n|
00015920  61 6d 65 0d 77 7e 1d e7  20 66 6c 67 32 25 3d 2d  |ame.w~.. flg2%=-|
00015930  31 20 80 20 69 63 6f 6e  25 3d 35 34 20 8c 20 e1  |1 . icon%=54 . .|
00015940  0d 77 88 04 0d 77 92 1c  e7 20 69 63 6f 6e 25 3e  |.w...w... icon%>|
00015950  3d 31 20 80 20 69 63 6f  6e 25 3c 3d 34 32 20 8c  |=1 . icon%<=42 .|
00015960  0d 77 9c 30 20 e7 20 4e  61 6d 65 4e 6f 25 3d 4e  |.w.0 . NameNo%=N|
00015970  63 6f 75 6e 74 25 2b 31  20 8c 20 f2 72 65 64 72  |count%+1 . .redr|
00015980  61 77 5f 6e 61 6d 65 28  4e 61 6d 65 4e 6f 25 29  |aw_name(NameNo%)|
00015990  0d 77 9d 6b 20 e7 20 4e  61 6d 65 4e 6f 25 3d 4e  |.w.k . NameNo%=N|
000159a0  63 6f 75 6e 74 25 2b 31  20 8c 20 24 44 65 6d 49  |count%+1 . $DemI|
000159b0  63 25 3d 22 63 61 6e 20  74 72 61 63 6b 20 75 70  |c%="can track up|
000159c0  20 74 6f 20 34 32 20 63  68 69 6c 64 72 65 6e 2e  | to 42 children.|
000159d0  22 3a 44 65 6d 68 61 6e  64 6c 65 25 3d a4 63 65  |":Demhandle%=.ce|
000159e0  6e 74 72 65 5f 77 69 6e  64 6f 77 28 44 65 6d 68  |ntre_window(Demh|
000159f0  61 6e 64 6c 65 25 2c 22  59 22 29 0d 77 a6 1a 20  |andle%,"Y").w.. |
00015a00  4e 61 6d 65 4e 6f 25 3d  69 63 6f 6e 25 3a 66 6c  |NameNo%=icon%:fl|
00015a10  67 25 3d 2d 31 0d 77 b0  1f 20 f2 73 65 74 5f 63  |g%=-1.w.. .set_c|
00015a20  6f 6e 66 69 67 5f 74 69  74 6c 65 28 4e 61 6d 65  |onfig_title(Name|
00015a30  4e 6f 25 29 0d 77 ba 1e  20 f2 73 65 74 5f 70 72  |No%).w.. .set_pr|
00015a40  65 66 65 72 65 6e 63 65  73 28 4e 61 6d 65 4e 6f  |eferences(NameNo|
00015a50  25 29 0d 77 c4 18 20 e7  20 69 63 6f 6e 25 3d 4e  |%).w.. . icon%=N|
00015a60  63 6f 75 6e 74 25 2b 31  20 8c 0d 77 ce 23 20 20  |count%+1 ..w.#  |
00015a70  f2 70 6c 61 63 65 5f 6e  61 6d 65 5f 63 61 72 65  |.place_name_care|
00015a80  74 28 4e 61 6d 65 4e 6f  25 2c 2d 31 29 0d 77 d8  |t(NameNo%,-1).w.|
00015a90  06 20 cc 0d 77 e2 29 20  20 c8 99 22 57 69 6d 70  |. ..w.)  .."Wimp|
00015aa0  5f 53 65 74 43 61 72 65  74 50 6f 73 69 74 69 6f  |_SetCaretPositio|
00015ab0  6e 22 2c 4e 47 68 61 6e  64 6c 65 25 0d 77 ec 06  |n",NGhandle%.w..|
00015ac0  20 cd 0d 77 f6 9f 20 e7  20 52 70 74 72 25 2b 39  | ..w.. . Rptr%+9|
00015ad0  30 2b 34 35 2a 6e 6f 5f  71 75 65 73 74 25 28 4e  |0+45*no_quest%(N|
00015ae0  61 6d 65 4e 6f 25 29 3e  34 34 30 30 30 20 80 20  |ameNo%)>44000 . |
00015af0  73 61 76 65 52 25 28 4e  61 6d 65 4e 6f 25 29 3d  |saveR%(NameNo%)=|
00015b00  31 20 8c 20 72 65 73 70  25 3d a4 65 72 72 6f 72  |1 . resp%=.error|
00015b10  5f 6d 65 73 73 61 67 65  28 22 54 68 65 20 72 65  |_message("The re|
00015b20  73 75 6c 74 73 20 66 69  6c 65 20 69 73 20 6e 6f  |sults file is no|
00015b30  77 20 66 75 6c 6c 2c 20  70 6c 65 61 73 65 20 74  |w full, please t|
00015b40  65 6c 6c 20 79 6f 75 72  20 74 65 61 63 68 65 72  |ell your teacher|
00015b50  22 2c 22 4d 61 74 68 73  42 6f 6f 6b 22 2c 31 37  |","MathsBook",17|
00015b60  29 0d 78 00 05 cd 0d 78  0a 25 f2 73 68 61 64 65  |).x....x.%.shade|
00015b70  5f 69 74 65 6d 28 6d 65  6e 75 25 2c 31 2c 2d 28  |_item(menu%,1,-(|
00015b80  4e 61 6d 65 4e 6f 25 3d  30 29 29 0d 78 14 0e e7  |NameNo%=0)).x...|
00015b90  20 66 6c 67 25 20 8c 20  e1 0d 78 1e 04 0d 78 28  | flg% . ..x...x(|
00015ba0  68 e7 20 4e 63 6f 75 6e  74 25 3c 34 32 20 8c 20  |h. Ncount%<42 . |
00015bb0  e7 20 69 63 6f 6e 25 3d  2d 31 20 80 20 a4 69 63  |. icon%=-1 . .ic|
00015bc0  6f 6e 5f 73 65 6c 65 63  74 65 64 28 4e 47 68 61  |on_selected(NGha|
00015bd0  6e 64 6c 65 25 2c 4e 63  6f 75 6e 74 25 2b 31 29  |ndle%,Ncount%+1)|
00015be0  3d 2d 31 20 8c 20 f2 70  6c 61 63 65 5f 6e 61 6d  |=-1 . .place_nam|
00015bf0  65 5f 63 61 72 65 74 28  4e 61 6d 65 4e 6f 25 2c  |e_caret(NameNo%,|
00015c00  2d 31 29 3a e1 0d 78 32  59 e7 20 4e 63 6f 75 6e  |-1):..x2Y. Ncoun|
00015c10  74 25 3c 34 32 20 8c 20  e7 20 69 63 6f 6e 25 3d  |t%<42 . . icon%=|
00015c20  35 34 20 80 20 28 4e 61  6d 65 4e 6f 25 3d 4e 63  |54 . (NameNo%=Nc|
00015c30  6f 75 6e 74 25 2b 31 20  84 20 4e 61 6d 65 4e 6f  |ount%+1 . NameNo|
00015c40  25 3d 30 29 20 80 20 6e  61 6d 65 24 28 4e 63 6f  |%=0) . name$(Nco|
00015c50  75 6e 74 25 2b 31 29 3d  22 22 20 8c 20 e1 0d 78  |unt%+1)="" . ..x|
00015c60  3c 10 e7 20 69 63 6f 6e  25 3d 35 34 20 8c 0d 78  |<.. icon%=54 ..x|
00015c70  46 65 20 f4 20 49 46 20  4e 61 6d 65 4e 6f 25 3d  |Fe . IF NameNo%=|
00015c80  4e 63 6f 75 6e 74 25 2b  31 20 41 4e 44 20 6e 61  |Ncount%+1 AND na|
00015c90  6d 65 24 28 4e 61 6d 65  4e 6f 25 29 3c 3e 22 22  |me$(NameNo%)<>""|
00015ca0  20 54 48 45 4e 20 50 52  4f 43 6e 65 77 5f 6e 61  | THEN PROCnew_na|
00015cb0  6d 65 28 30 29 3a 4e 61  6d 65 4e 6f 25 3d 4e 63  |me(0):NameNo%=Nc|
00015cc0  6f 75 6e 74 25 3a 6e 6f  74 73 61 76 65 64 4f 25  |ount%:notsavedO%|
00015cd0  3d 2d 31 0d 78 50 2c 20  24 74 69 74 6c 65 62 75  |=-1.xP, $titlebu|
00015ce0  66 66 31 25 3d 22 44 69  76 69 73 69 6f 6e 20 22  |ff1%="Division "|
00015cf0  2b 6e 61 6d 65 24 28 4e  61 6d 65 4e 6f 25 29 0d  |+name$(NameNo%).|
00015d00  78 5a 2b 20 24 74 69 74  6c 65 62 75 66 66 43 25  |xZ+ $titlebuffC%|
00015d10  3d 22 4f 70 74 69 6f 6e  73 20 22 2b 6e 61 6d 65  |="Options "+name|
00015d20  24 28 4e 61 6d 65 4e 6f  25 29 0d 78 64 0d 20 73  |$(NameNo%).xd. s|
00015d30  74 61 72 74 25 3d 30 0d  78 6e 23 20 e7 20 6f 77  |tart%=0.xn# . ow|
00015d40  6e 73 75 6d 25 28 4e 61  6d 65 4e 6f 25 29 3d 30  |nsum%(NameNo%)=0|
00015d50  20 8c 20 67 61 6d 65 25  3d 31 0d 78 78 1b 20 f2  | . game%=1.xx. .|
00015d60  73 68 61 64 65 5f 69 74  65 6d 28 6d 65 6e 75 25  |shade_item(menu%|
00015d70  2c 32 2c 31 29 0d 78 82  18 20 e7 20 73 61 76 65  |,2,1).x.. . save|
00015d80  52 25 28 4e 61 6d 65 4e  6f 25 29 20 8c 0d 78 8c  |R%(NameNo%) ..x.|
00015d90  3d 20 20 e7 20 52 70 74  72 25 2b 39 30 2b 34 35  |=  . Rptr%+90+45|
00015da0  2a 6e 6f 5f 71 75 65 73  74 25 28 4e 61 6d 65 4e  |*no_quest%(NameN|
00015db0  6f 25 29 3e 34 34 30 30  30 20 8c 20 f2 72 65 73  |o%)>44000 . .res|
00015dc0  65 74 5f 72 65 73 75 6c  74 73 0d 78 96 06 20 cd  |et_results.x.. .|
00015dd0  0d 78 a0 36 20 f2 63 6c  6f 73 65 5f 77 69 6e 64  |.x.6 .close_wind|
00015de0  6f 77 28 4e 47 68 61 6e  64 6c 65 25 29 3a f2 63  |ow(NGhandle%):.c|
00015df0  6c 6f 73 65 5f 77 69 6e  64 6f 77 28 45 64 68 61  |lose_window(Edha|
00015e00  6e 64 6c 65 25 29 0d 78  aa 26 20 e7 20 70 72 69  |ndle%).x.& . pri|
00015e10  6e 74 65 72 25 28 4e 61  6d 65 4e 6f 25 29 3d 30  |nter%(NameNo%)=0|
00015e20  20 8c 20 64 72 69 76 65  72 25 3d 30 0d 78 b4 1d  | . driver%=0.x..|
00015e30  20 f2 73 65 74 5f 74 6f  70 5f 69 63 6f 6e 28 37  | .set_top_icon(7|
00015e40  2c 64 72 69 76 65 72 25  29 0d 78 be 38 20 e7 20  |,driver%).x.8 . |
00015e50  6f 77 6e 73 75 6d 25 28  4e 61 6d 65 4e 6f 25 29  |ownsum%(NameNo%)|
00015e60  3d 30 20 8c 20 f2 6f 70  65 6e 5f 77 69 6e 64 6f  |=0 . .open_windo|
00015e70  77 28 68 61 6e 64 6c 65  25 28 67 61 6d 65 25 29  |w(handle%(game%)|
00015e80  29 0d 78 c8 20 20 f2 73  65 74 5f 64 69 76 69 73  |).x.  .set_divis|
00015e90  69 6f 6e 5f 74 79 70 65  28 4e 61 6d 65 4e 6f 25  |ion_type(NameNo%|
00015ea0  29 0d 78 d2 26 20 f2 72  65 73 65 74 5f 67 61 6d  |).x.& .reset_gam|
00015eb0  65 3a 6e 65 77 52 25 3d  73 61 76 65 52 25 28 4e  |e:newR%=saveR%(N|
00015ec0  61 6d 65 4e 6f 25 29 0d  78 dc 05 cd 0d 78 e6 05  |ameNo%).x....x..|
00015ed0  e1 0d 78 f0 04 0d 78 fa  04 0d 79 04 1d dd 20 f2  |..x...x...y... .|
00015ee0  70 72 69 6e 74 6f 75 74  5f 72 65 73 75 6c 74 73  |printout_results|
00015ef0  28 61 6c 6c 25 29 0d 79  0e 16 ea 20 66 6c 67 25  |(all%).y... flg%|
00015f00  2c 68 65 69 67 68 74 25  2c 63 68 25 0d 79 18 2b  |,height%,ch%.y.+|
00015f10  e7 20 61 6c 6c 25 20 8c  20 68 65 69 67 68 74 25  |. all% . height%|
00015f20  3d 52 63 6e 74 25 20 8b  20 68 65 69 67 68 74 25  |=Rcnt% . height%|
00015f30  3d 52 63 6e 74 32 25 0d  79 22 17 68 65 69 67 68  |=Rcnt2%.y".heigh|
00015f40  74 25 3d 2d 33 32 2a 68  65 69 67 68 74 25 0d 79  |t%=-32*height%.y|
00015f50  2c 07 ea 20 85 0d 79 36  55 ee 20 85 20 ea 3a f7  |,.. ..y6U. . .:.|
00015f60  20 85 3a c8 99 22 50 44  72 69 76 65 72 5f 41 62  | .:.."PDriver_Ab|
00015f70  6f 72 74 4a 6f 62 22 2c  63 68 25 3a d9 23 63 68  |ortJob",ch%:.#ch|
00015f80  25 3a c8 99 22 48 6f 75  72 67 6c 61 73 73 5f 4f  |%:.."Hourglass_O|
00015f90  66 66 22 3a f2 65 72 72  6f 72 28 22 4d 61 74 68  |ff":.error("Math|
00015fa0  73 5f 54 61 73 6b 22 29  3a e1 0d 79 40 04 0d 79  |s_Task"):..y@..y|
00015fb0  4a 21 f2 73 65 74 5f 75  70 5f 70 72 69 6e 74 6f  |J!.set_up_printo|
00015fc0  75 74 28 63 68 25 2c 68  65 69 67 68 74 25 29 0d  |ut(ch%,height%).|
00015fd0  79 54 04 0d 79 5e 1d c8  99 22 43 6f 6c 6f 75 72  |yT..y^..."Colour|
00015fe0  54 72 61 6e 73 5f 53 65  74 47 43 4f 4c 22 2c 30  |Trans_SetGCOL",0|
00015ff0  0d 79 68 2c c8 99 22 50  44 72 69 76 65 72 5f 44  |.yh,.."PDriver_D|
00016000  72 61 77 50 61 67 65 22  2c 31 2c 62 6c 6f 63 6b  |rawPage",1,block|
00016010  25 2c 30 2c 30 20 b8 20  66 6c 67 25 0d 79 72 0b  |%,0,0 . flg%.yr.|
00016020  c8 95 20 66 6c 67 25 0d  79 7c 22 20 f2 73 65 74  |.. flg%.y|" .set|
00016030  5f 72 65 73 75 6c 74 73  5f 77 69 6e 64 6f 77 28  |_results_window(|
00016040  30 2c 30 2c 61 6c 6c 25  29 0d 79 86 2c 20 c8 99  |0,0,all%).y., ..|
00016050  22 50 44 72 69 76 65 72  5f 47 65 74 52 65 63 74  |"PDriver_GetRect|
00016060  61 6e 67 6c 65 22 2c 2c  62 6c 6f 63 6b 25 20 b8  |angle",,block% .|
00016070  20 66 6c 67 25 0d 79 90  05 ce 0d 79 9a 04 0d 79  | flg%.y....y...y|
00016080  a4 16 f2 65 6e 64 5f 70  72 69 6e 74 6f 75 74 28  |...end_printout(|
00016090  63 68 25 29 0d 79 ae 07  f7 20 85 0d 79 b8 05 e1  |ch%).y... ..y...|
000160a0  0d 79 c2 04 0d 79 cc 04  0d 79 d6 27 dd 20 f2 72  |.y...y...y.'. .r|
000160b0  65 73 75 6c 74 73 5f 74  65 78 74 5f 66 69 6c 65  |esults_text_file|
000160c0  28 66 69 6c 65 24 2c 53  6d 6f 70 65 6e 25 29 0d  |(file$,Smopen%).|
000160d0  79 e0 20 ea 20 63 68 25  2c 72 65 73 70 25 3a ea  |y. . ch%,resp%:.|
000160e0  20 85 3a 6e 6f 74 73 61  76 65 64 52 25 3d 30 0d  | .:notsavedR%=0.|
000160f0  79 ea 54 ee 20 85 20 ea  3a f7 20 85 3a 72 65 73  |y.T. . .:. .:res|
00016100  70 25 3d a4 65 72 72 6f  72 5f 6d 65 73 73 61 67  |p%=.error_messag|
00016110  65 28 f6 24 2c 22 4d 61  74 68 73 5f 74 61 73 6b  |e(.$,"Maths_task|
00016120  22 2c 30 29 3a e7 20 ac  28 9f 3d 36 37 37 38 35  |",0):. .(.=67785|
00016130  20 84 20 9f 3d 36 37 37  38 36 29 20 8c 20 d9 23  | . .=67786) . .#|
00016140  63 68 25 0d 79 f4 0f e7  20 72 65 73 70 25 20 8c  |ch%.y... resp% .|
00016150  20 e1 0d 79 fe 0f 63 68  25 3d ae 20 66 69 6c 65  | ..y..ch%=. file|
00016160  24 0d 7a 08 12 e3 20 6e  25 3d 30 20 b8 20 52 70  |$.z... n%=0 . Rp|
00016170  74 72 25 0d 7a 12 19 20  d5 23 63 68 25 2c 3f 28  |tr%.z.. .#ch%,?(|
00016180  72 65 73 75 6c 74 73 25  2b 6e 25 29 0d 7a 1c 05  |results%+n%).z..|
00016190  ed 0d 7a 26 09 d9 23 63  68 25 0d 7a 30 1d ff 20  |..z&..#ch%.z0.. |
000161a0  22 53 65 74 54 79 70 65  20 22 2b 66 69 6c 65 24  |"SetType "+file$|
000161b0  2b 22 20 46 46 46 22 0d  7a 3a 32 24 73 61 76 65  |+" FFF".z:2$save|
000161c0  74 65 78 74 62 75 66 66  25 3d 66 69 6c 65 24 3a  |textbuff%=file$:|
000161d0  f2 72 65 73 65 74 5f 69  63 6f 6e 28 53 56 68 61  |.reset_icon(SVha|
000161e0  6e 64 6c 65 32 25 2c 31  29 0d 7a 3b 27 e7 20 53  |ndle2%,1).z;'. S|
000161f0  6d 6f 70 65 6e 25 20 8c  20 f2 6f 70 65 6e 5f 77  |mopen% . .open_w|
00016200  69 6e 64 6f 77 28 53 6d  68 61 6e 64 6c 65 25 29  |indow(Smhandle%)|
00016210  0d 7a 44 07 f7 20 85 0d  7a 4e 05 e1 0d 7a 58 04  |.zD.. ..zN...zX.|
00016220  0d 7a 62 04 0d 7a 6c 27  dd 20 f2 73 65 74 5f 72  |.zb..zl'. .set_r|
00016230  65 73 75 6c 74 73 5f 77  69 6e 64 6f 77 28 6f 78  |esults_window(ox|
00016240  25 2c 6f 79 25 2c 61 6c  6c 25 29 0d 7a 76 18 ea  |%,oy%,all%).zv..|
00016250  20 58 25 2c 79 25 2c 70  74 72 25 2c 63 68 25 2c  | X%,y%,ptr%,ch%,|
00016260  63 68 24 0d 7a 80 18 58  25 3d 2d 31 3a 79 25 3d  |ch$.z..X%=-1:y%=|
00016270  2d 33 32 3a 70 74 72 25  3d 2d 31 0d 7a 8a 05 f5  |-32:ptr%=-1.z...|
00016280  0d 7a 94 0d 20 70 74 72  25 20 2b 3d 31 0d 7a 9e  |.z.. ptr% +=1.z.|
00016290  22 20 63 68 25 3d 3f 28  72 65 73 75 6c 74 73 25  |" ch%=?(results%|
000162a0  2b 70 74 72 25 29 3a 63  68 24 3d bd 63 68 25 0d  |+ptr%):ch$=.ch%.|
000162b0  7a a8 04 0d 7a b2 19 20  e7 20 63 68 24 3d 22 28  |z...z.. . ch$="(|
000162c0  22 20 80 20 61 6c 6c 25  3d 30 20 8c 0d 7a bc 1d  |" . all%=0 ..z..|
000162d0  20 20 c8 95 20 63 68 25  3c 3e 31 30 20 80 20 70  |  .. ch%<>10 . p|
000162e0  74 72 25 3c 52 70 74 72  25 0d 7a c6 24 20 20 20  |tr%<Rptr%.z.$   |
000162f0  70 74 72 25 20 2b 3d 31  3a 63 68 25 3d 3f 28 72  |ptr% +=1:ch%=?(r|
00016300  65 73 75 6c 74 73 25 2b  70 74 72 25 29 0d 7a d0  |esults%+ptr%).z.|
00016310  07 20 20 ce 0d 7a da 2e  20 20 e7 20 3f 28 72 65  |.  ..z..  . ?(re|
00016320  73 75 6c 74 73 25 2b 70  74 72 25 2b 31 29 3d 31  |sults%+ptr%+1)=1|
00016330  30 20 8c 20 70 74 72 25  20 2b 3d 31 3a 58 25 3d  |0 . ptr% +=1:X%=|
00016340  2d 31 0d 7a e4 06 20 cc  0d 7a ee 11 20 20 e7 20  |-1.z.. ..z..  . |
00016350  63 68 25 3c 3e 31 30 20  8c 0d 7a f8 61 20 20 20  |ch%<>10 ..z.a   |
00016360  e7 20 79 25 2b 6f 79 25  3e 3d 62 6c 6f 63 6b 25  |. y%+oy%>=block%|
00016370  21 33 32 20 80 20 79 25  2b 6f 79 25 3c 3d 62 6c  |!32 . y%+oy%<=bl|
00016380  6f 63 6b 25 21 34 30 2b  33 32 20 84 20 6f 78 25  |ock%!40+32 . ox%|
00016390  3d 30 20 80 20 6f 79 25  3d 30 20 8c 20 58 25 20  |=0 . oy%=0 . X% |
000163a0  2b 3d 31 3a ec 20 6f 78  25 2c 6f 79 25 2b 79 25  |+=1:. ox%,oy%+y%|
000163b0  3a f1 8a 58 25 29 3b 63  68 24 0d 7b 02 07 20 20  |:..X%);ch$.{..  |
000163c0  cc 0d 7b 0c 14 20 20 20  58 25 3d 2d 31 3a 79 25  |..{..   X%=-1:y%|
000163d0  20 2d 3d 33 32 0d 7b 16  07 20 20 cd 0d 7b 20 06  | -=32.{..  ..{ .|
000163e0  20 cd 0d 7b 2a 10 fd 20  70 74 72 25 3d 52 70 74  | ..{*.. ptr%=Rpt|
000163f0  72 25 0d 7b 34 05 e1 0d  7b 3e 04 0d 7b 48 04 0d  |r%.{4...{>..{H..|
00016400  7b 52 12 dd 20 f2 73 65  74 5f 77 69 6e 64 6f 77  |{R.. .set_window|
00016410  73 0d 7b 5c 18 ea 20 6e  25 2c 78 31 25 2c 78 32  |s.{\.. n%,x1%,x2|
00016420  25 2c 79 31 25 2c 79 32  25 0d 7b 66 0f e7 20 73  |%,y1%,y2%.{f.. s|
00016430  63 72 65 65 6e 25 20 8c  0d 7b 70 30 20 68 61 6e  |creen% ..{p0 han|
00016440  64 6c 65 25 28 31 29 3d  a4 77 68 6f 6c 65 5f 73  |dle%(1)=.whole_s|
00016450  63 72 65 65 6e 5f 77 69  6e 64 6f 77 28 68 61 6e  |creen_window(han|
00016460  64 6c 65 25 28 31 29 29  0d 7b 7a 2e 20 4e 47 68  |dle%(1)).{z. NGh|
00016470  61 6e 64 6c 65 25 3d a4  77 68 6f 6c 65 5f 73 63  |andle%=.whole_sc|
00016480  72 65 65 6e 5f 77 69 6e  64 6f 77 28 4e 47 68 61  |reen_window(NGha|
00016490  6e 64 6c 65 25 29 0d 7b  84 2e 20 53 43 68 61 6e  |ndle%).{.. SChan|
000164a0  64 6c 65 25 3d a4 77 68  6f 6c 65 5f 73 63 72 65  |dle%=.whole_scre|
000164b0  65 6e 5f 77 69 6e 64 6f  77 28 53 43 68 61 6e 64  |en_window(SChand|
000164c0  6c 65 25 29 0d 7b 8e 05  cc 0d 7b 98 42 20 68 61  |le%).{....{.B ha|
000164d0  6e 64 6c 65 25 28 31 29  3d a4 6f 72 64 69 6e 61  |ndle%(1)=.ordina|
000164e0  72 79 5f 77 69 6e 64 6f  77 28 68 61 6e 64 6c 65  |ry_window(handle|
000164f0  25 28 31 29 2c 31 32 37  36 2c 39 31 36 2c 22 22  |%(1),1276,916,""|
00016500  2c 26 38 37 30 30 30 30  30 32 29 0d 7b a2 40 20  |,&87000002).{.@ |
00016510  4e 47 68 61 6e 64 6c 65  25 3d a4 6f 72 64 69 6e  |NGhandle%=.ordin|
00016520  61 72 79 5f 77 69 6e 64  6f 77 28 4e 47 68 61 6e  |ary_window(NGhan|
00016530  64 6c 65 25 2c 31 31 37  36 2c 39 31 36 2c 22 22  |dle%,1176,916,""|
00016540  2c 26 42 46 30 30 31 30  30 32 29 0d 7b ac 40 20  |,&BF001002).{.@ |
00016550  53 43 68 61 6e 64 6c 65  25 3d a4 6f 72 64 69 6e  |SChandle%=.ordin|
00016560  61 72 79 5f 77 69 6e 64  6f 77 28 53 43 68 61 6e  |ary_window(SChan|
00016570  64 6c 65 25 2c 37 34 38  2c 38 35 36 2c 22 59 22  |dle%,748,856,"Y"|
00016580  2c 26 38 37 30 30 30 30  31 32 29 0d 7b b6 05 cd  |,&87000012).{...|
00016590  0d 7b c0 05 e1 0d 7b ca  04 0d 7b d4 04 0d 7b de  |.{....{...{...{.|
000165a0  18 dd 20 f2 73 65 74 5f  75 70 5f 73 75 6d 5f 77  |.. .set_up_sum_w|
000165b0  69 6e 64 6f 77 0d 7b e8  3e e7 20 64 65 63 69 6d  |indow.{.>. decim|
000165c0  61 6c 25 28 4e 61 6d 65  4e 6f 25 29 20 8c 20 24  |al%(NameNo%) . $|
000165d0  4f 73 75 6d 31 62 75 66  66 25 3d 22 31 2e 30 30  |Osum1buff%="1.00|
000165e0  22 20 8b 20 24 4f 73 75  6d 31 62 75 66 66 25 3d  |" . $Osum1buff%=|
000165f0  22 30 22 0d 7b f2 13 24  4f 73 75 6d 32 62 75 66  |"0".{..$Osum2buf|
00016600  66 25 3d 22 30 22 0d 7b  fc 33 f2 72 65 73 65 74  |f%="0".{.3.reset|
00016610  5f 69 63 6f 6e 28 4f 68  61 6e 64 6c 65 25 2c 32  |_icon(Ohandle%,2|
00016620  29 3a f2 72 65 73 65 74  5f 69 63 6f 6e 28 4f 68  |):.reset_icon(Oh|
00016630  61 6e 64 6c 65 25 2c 33  29 0d 7c 06 3e 4f 68 61  |andle%,3).|.>Oha|
00016640  6e 64 6c 65 25 3d a4 63  65 6e 74 72 65 5f 77 69  |ndle%=.centre_wi|
00016650  6e 64 6f 77 28 4f 68 61  6e 64 6c 65 25 2c 22 59  |ndow(Ohandle%,"Y|
00016660  22 29 3a 4f 77 69 6e 25  3d 2d 31 3a 73 74 61 72  |"):Owin%=-1:star|
00016670  74 4f 77 6e 25 3d 30 0d  7c 10 37 c8 99 22 57 69  |tOwn%=0.|.7.."Wi|
00016680  6d 70 5f 53 65 74 43 61  72 65 74 50 6f 73 69 74  |mp_SetCaretPosit|
00016690  69 6f 6e 22 2c 4f 68 61  6e 64 6c 65 25 2c 33 2c  |ion",Ohandle%,3,|
000166a0  32 38 36 2c 2d 33 30 36  2c 2d 31 2c 2d 31 0d 7c  |286,-306,-1,-1.||
000166b0  1a 05 e1 0d 7c 24 04 0d  7c 2e 04 0d 7c 38 18 dd  |....|$..|...|8..|
000166c0  20 f2 73 65 6c 65 63 74  5f 73 75 6d 5f 77 69 6e  | .select_sum_win|
000166d0  64 6f 77 0d 7c 42 1b ea  20 69 63 6f 6e 25 3a 69  |dow.|B.. icon%:i|
000166e0  63 6f 6e 25 3d 62 6c 6f  63 6b 25 21 31 36 0d 7c  |con%=block%!16.||
000166f0  4c 0e c8 8e 20 69 63 6f  6e 25 20 ca 0d 7c 56 3d  |L... icon% ..|V=|
00016700  20 c9 20 2d 31 3a c8 99  22 57 69 6d 70 5f 53 65  | . -1:.."Wimp_Se|
00016710  74 43 61 72 65 74 50 6f  73 69 74 69 6f 6e 22 2c  |tCaretPosition",|
00016720  4f 68 61 6e 64 6c 65 25  2c 33 2c 32 38 36 2c 2d  |Ohandle%,3,286,-|
00016730  33 30 36 2c 2d 31 2c 2d  31 0d 7c 60 18 20 c9 20  |306,-1,-1.|`. . |
00016740  37 3a f2 73 65 74 5f 75  70 5f 6f 77 6e 5f 73 75  |7:.set_up_own_su|
00016750  6d 0d 7c 6a 19 20 c9 20  36 3a f2 6d 61 6b 65 5f  |m.|j. . 6:.make_|
00016760  6f 6e 65 5f 66 6f 72 5f  6d 65 0d 7c 74 05 cb 0d  |one_for_me.|t...|
00016770  7c 7e 05 e1 0d 7c 88 04  0d 7c 92 04 0d 7c 9c 16  ||~...|...|...|..|
00016780  dd 20 f2 6d 61 6b 65 5f  6f 6e 65 5f 66 6f 72 5f  |. .make_one_for_|
00016790  6d 65 0d 7c a6 24 ea 20  6c 65 76 65 6c 25 3a 6c  |me.|.$. level%:l|
000167a0  65 76 65 6c 25 3d 44 6c  65 76 65 6c 25 28 4e 61  |evel%=Dlevel%(Na|
000167b0  6d 65 4e 6f 25 29 0d 7c  b0 28 44 69 76 54 79 70  |meNo%).|.(DivTyp|
000167c0  65 25 3d 2d a4 69 63 6f  6e 5f 73 65 6c 65 63 74  |e%=-.icon_select|
000167d0  65 64 28 4f 68 61 6e 64  6c 65 25 2c 38 29 0d 7c  |ed(Ohandle%,8).||
000167e0  ba 26 e7 20 44 69 76 54  79 70 65 25 3d 31 20 80  |.&. DivType%=1 .|
000167f0  20 6c 65 76 65 6c 25 3c  35 20 8c 20 6c 65 76 65  | level%<5 . leve|
00016800  6c 25 3d 35 0d 7c c4 43  e7 20 44 69 76 54 79 70  |l%=5.|.C. DivTyp|
00016810  65 25 3d 30 20 80 20 6c  65 76 65 6c 25 3e 3d 4c  |e%=0 . level%>=L|
00016820  6f 6e 67 25 28 4e 61 6d  65 4e 6f 25 29 20 8c 20  |ong%(NameNo%) . |
00016830  6c 65 76 65 6c 25 3d 4c  6f 6e 67 25 28 4e 61 6d  |level%=Long%(Nam|
00016840  65 4e 6f 25 29 2d 31 0d  7c ce 04 0d 7c d8 15 f2  |eNo%)-1.|...|...|
00016850  6d 61 6b 65 5f 64 69 76  28 6c 65 76 65 6c 25 29  |make_div(level%)|
00016860  0d 7c e2 1b e7 20 64 65  63 69 6d 61 6c 25 28 4e  |.|... decimal%(N|
00016870  61 6d 65 4e 6f 25 29 3d  30 20 8c 0d 7c ec 2a 20  |ameNo%)=0 ..|.* |
00016880  24 4f 73 75 6d 31 62 75  66 66 25 3d c3 6e 75 6d  |$Osum1buff%=.num|
00016890  31 25 3a 24 4f 73 75 6d  32 62 75 66 66 25 3d c3  |1%:$Osum2buff%=.|
000168a0  6e 75 6d 32 25 0d 7c f6  05 cc 0d 7d 00 37 20 24  |num2%.|....}.7 $|
000168b0  4f 73 75 6d 31 62 75 66  66 25 3d a4 73 65 74 5f  |Osum1buff%=.set_|
000168c0  64 65 63 28 c3 6e 75 6d  31 25 2c 36 29 3a 24 4f  |dec(.num1%,6):$O|
000168d0  73 75 6d 32 62 75 66 66  25 3d c3 20 6e 75 6d 32  |sum2buff%=. num2|
000168e0  25 0d 7d 0a 05 cd 0d 7d  14 33 f2 72 65 73 65 74  |%.}....}.3.reset|
000168f0  5f 69 63 6f 6e 28 4f 68  61 6e 64 6c 65 25 2c 32  |_icon(Ohandle%,2|
00016900  29 3a f2 72 65 73 65 74  5f 69 63 6f 6e 28 4f 68  |):.reset_icon(Oh|
00016910  61 6e 64 6c 65 25 2c 33  29 0d 7d 1e 05 e1 0d 7d  |andle%,3).}....}|
00016920  28 04 0d 7d 32 04 0d 7d  3c 13 dd 20 f2 6f 77 6e  |(..}2..}<.. .own|
00016930  5f 73 75 6d 5f 6b 65 79  73 0d 7d 46 12 c8 8e 20  |_sum_keys.}F... |
00016940  62 6c 6f 63 6b 25 21 32  34 20 ca 0d 7d 50 3f 20  |block%!24 ..}P? |
00016950  c9 20 26 31 38 45 3a c8  99 22 57 69 6d 70 5f 53  |. &18E:.."Wimp_S|
00016960  65 74 43 61 72 65 74 50  6f 73 69 74 69 6f 6e 22  |etCaretPosition"|
00016970  2c 4f 68 61 6e 64 6c 65  25 2c 32 2c 31 39 36 2c  |,Ohandle%,2,196,|
00016980  2d 33 30 36 2c 2d 31 2c  2d 31 0d 7d 5a 3f 20 c9  |-306,-1,-1.}Z? .|
00016990  20 26 31 38 46 3a c8 99  22 57 69 6d 70 5f 53 65  | &18F:.."Wimp_Se|
000169a0  74 43 61 72 65 74 50 6f  73 69 74 69 6f 6e 22 2c  |tCaretPosition",|
000169b0  4f 68 61 6e 64 6c 65 25  2c 33 2c 32 38 36 2c 2d  |Ohandle%,3,286,-|
000169c0  33 30 36 2c 2d 31 2c 2d  31 0d 7d 64 05 7f 0d 7d  |306,-1,-1.}d...}|
000169d0  6e 22 20 c8 99 22 57 69  6d 70 5f 50 72 6f 63 65  |n" .."Wimp_Proce|
000169e0  73 73 4b 65 79 22 2c 62  6c 6f 63 6b 25 21 32 34  |ssKey",block%!24|
000169f0  0d 7d 78 05 cb 0d 7d 82  05 e1 0d 7d 8c 04 0d 7d  |.}x...}....}...}|
00016a00  96 04 0d 7d a0 15 dd 20  f2 73 65 74 5f 75 70 5f  |...}... .set_up_|
00016a10  6f 77 6e 5f 73 75 6d 0d  7d aa 17 ea 20 62 75 66  |own_sum.}... buf|
00016a20  66 24 2c 66 6c 67 25 3a  66 6c 67 25 3d 30 0d 7d  |f$,flg%:flg%=0.}|
00016a30  b4 28 44 69 76 54 79 70  65 25 3d 2d a4 69 63 6f  |.(DivType%=-.ico|
00016a40  6e 5f 73 65 6c 65 63 74  65 64 28 4f 68 61 6e 64  |n_selected(Ohand|
00016a50  6c 65 25 2c 38 29 0d 7d  be 21 62 75 66 66 24 3d  |le%,8).}.!buff$=|
00016a60  a4 73 65 74 5f 64 65 63  28 24 4f 73 75 6d 31 62  |.set_dec($Osum1b|
00016a70  75 66 66 25 2c 36 29 0d  7d c8 4c e7 20 62 75 66  |uff%,6).}.L. buf|
00016a80  66 24 3c 3e 24 4f 73 75  6d 31 62 75 66 66 25 20  |f$<>$Osum1buff% |
00016a90  8c 20 24 4f 73 75 6d 31  62 75 66 66 25 3d 62 75  |. $Osum1buff%=bu|
00016aa0  66 66 24 3a f2 72 65 73  65 74 5f 69 63 6f 6e 28  |ff$:.reset_icon(|
00016ab0  4f 68 61 6e 64 6c 65 25  2c 33 29 3a 66 6c 67 25  |Ohandle%,3):flg%|
00016ac0  3d 2d 31 0d 7d d2 24 e7  20 a9 20 24 4f 73 75 6d  |=-1.}.$. . $Osum|
00016ad0  32 62 75 66 66 25 3e 31  20 80 20 44 69 76 54 79  |2buff%>1 . DivTy|
00016ae0  70 65 25 3d 30 20 8c 0d  7d dc 28 20 24 4f 73 75  |pe%=0 ..}.( $Osu|
00016af0  6d 32 62 75 66 66 25 3d  c2 24 4f 73 75 6d 32 62  |m2buff%=.$Osum2b|
00016b00  75 66 66 25 2c 31 29 3a  66 6c 67 25 3d 2d 31 0d  |uff%,1):flg%=-1.|
00016b10  7d e6 1c 20 f2 72 65 73  65 74 5f 69 63 6f 6e 28  |}.. .reset_icon(|
00016b20  4f 68 61 6e 64 6c 65 25  2c 32 29 0d 7d f0 05 cd  |Ohandle%,2).}...|
00016b30  0d 7d fa 11 e7 20 66 6c  67 25 3d 2d 31 20 8c 20  |.}... flg%=-1 . |
00016b40  e1 0d 7e 04 04 0d 7e 0e  17 6e 75 6d 32 25 3d bb  |..~...~..num2%=.|
00016b50  20 24 4f 73 75 6d 32 62  75 66 66 25 0d 7e 18 11  | $Osum2buff%.~..|
00016b60  e7 20 6e 75 6d 32 25 3d  30 20 8c 20 e1 0d 7e 22  |. num2%=0 . ..~"|
00016b70  04 0d 7e 2c 19 e7 20 64  65 63 69 6d 61 6c 25 28  |..~,.. decimal%(|
00016b80  4e 61 6d 65 4e 6f 25 29  20 8c 0d 7e 36 54 20 e7  |NameNo%) ..~6T .|
00016b90  20 a7 24 4f 73 75 6d 31  62 75 66 66 25 2c 22 2e  | .$Osum1buff%,".|
00016ba0  22 29 20 8c 20 6e 75 6d  31 25 3d a4 64 65 63 5f  |") . num1%=.dec_|
00016bb0  76 61 6c 28 24 4f 73 75  6d 31 62 75 66 66 25 29  |val($Osum1buff%)|
00016bc0  20 8b 20 6e 75 6d 31 25  3d bb 20 24 4f 73 75 6d  | . num1%=. $Osum|
00016bd0  31 62 75 66 66 25 3a 66  6c 67 25 3d 2d 31 0d 7e  |1buff%:flg%=-1.~|
00016be0  40 19 20 e7 20 6e 75 6d  31 25 20 83 20 6e 75 6d  |@. . num1% . num|
00016bf0  32 25 3e 30 20 20 8c 0d  7e 4a 21 20 20 6e 75 6d  |2%>0  ..~J!  num|
00016c00  31 25 3d 6e 75 6d 32 25  2a 28 6e 75 6d 31 25 20  |1%=num2%*(num1% |
00016c10  81 20 6e 75 6d 32 25 29  0d 7e 54 20 20 20 24 4f  |. num2%).~T   $O|
00016c20  73 75 6d 31 62 75 66 66  25 3d c3 6e 75 6d 31 25  |sum1buff%=.num1%|
00016c30  3a 66 6c 67 25 3d 2d 31  0d 7e 5e 06 20 cd 0d 7e  |:flg%=-1.~^. ..~|
00016c40  68 28 20 24 4f 73 75 6d  31 62 75 66 66 25 3d a4  |h( $Osum1buff%=.|
00016c50  73 65 74 5f 64 65 63 28  24 4f 73 75 6d 31 62 75  |set_dec($Osum1bu|
00016c60  66 66 25 2c 36 29 0d 7e  72 1c 20 f2 72 65 73 65  |ff%,6).~r. .rese|
00016c70  74 5f 69 63 6f 6e 28 4f  68 61 6e 64 6c 65 25 2c  |t_icon(Ohandle%,|
00016c80  33 29 0d 7e 7c 04 0d 7e  86 05 cc 0d 7e 90 18 20  |3).~|..~....~.. |
00016c90  6e 75 6d 31 25 3d bb 20  24 4f 73 75 6d 31 62 75  |num1%=. $Osum1bu|
00016ca0  66 66 25 0d 7e 9a 05 cd  0d 7e a4 04 0d 7e ae 33  |ff%.~....~...~.3|
00016cb0  e7 20 6e 75 6d 31 25 3d  30 20 84 20 6e 75 6d 32  |. num1%=0 . num2|
00016cc0  25 3c 32 20 84 20 6e 75  6d 32 25 3e 6e 75 6d 31  |%<2 . num2%>num1|
00016cd0  25 20 84 20 66 6c 67 25  3d 2d 31 20 8c 20 e1 0d  |% . flg%=-1 . ..|
00016ce0  7e b8 0b 4f 77 69 6e 25  3d 30 0d 7e c2 34 e7 20  |~..Owin%=0.~.4. |
00016cf0  67 61 6d 65 25 3d 30 20  8c 20 67 61 6d 65 25 3d  |game%=0 . game%=|
00016d00  31 3a f2 6f 70 65 6e 5f  77 69 6e 64 6f 77 28 68  |1:.open_window(h|
00016d10  61 6e 64 6c 65 25 28 67  61 6d 65 25 29 29 0d 7e  |andle%(game%)).~|
00016d20  cc 0c f2 73 65 74 5f 73  75 6d 0d 7e d6 05 e1 0d  |...set_sum.~....|
00016d30  7e e0 04 0d 7e ea 30 dd  20 a4 64 65 63 5f 76 61  |~...~.0. .dec_va|
00016d40  6c 28 76 61 72 24 29 3d  bb 28 c0 76 61 72 24 2c  |l(var$)=.(.var$,|
00016d50  a9 20 76 61 72 24 2d 33  29 2b c2 76 61 72 24 2c  |. var$-3)+.var$,|
00016d60  32 29 29 0d 7e f4 04 0d  7e fe 18 dd 20 a4 73 65  |2)).~...~... .se|
00016d70  74 5f 64 65 63 28 73 74  24 2c 4c 65 6e 25 29 0d  |t_dec(st$,Len%).|
00016d80  7f 08 1b ea 20 70 74 25  2c 6c 65 6e 25 2c 63 75  |.... pt%,len%,cu|
00016d90  74 25 2c 6d 61 78 6c 65  6e 25 0d 7f 12 11 70 74  |t%,maxlen%....pt|
00016da0  25 3d a7 73 74 24 2c 22  2e 22 29 0d 7f 1c 3b e7  |%=.st$,".")...;.|
00016db0  20 bb 20 73 74 24 3c 31  20 80 20 70 74 25 3e 30  | . st$<1 . pt%>0|
00016dc0  20 80 20 64 65 63 69 6d  61 6c 25 28 4e 61 6d 65  | . decimal%(Name|
00016dd0  4e 6f 25 29 3d 31 20 8c  20 73 74 24 3d c3 28 bb  |No%)=1 . st$=.(.|
00016de0  73 74 24 2b 31 29 0d 7f  26 2c 70 74 25 3d a7 73  |st$+1)..&,pt%=.s|
00016df0  74 24 2c 22 2e 22 29 3a  6c 65 6e 25 3d a9 20 73  |t$,"."):len%=. s|
00016e00  74 24 3a 63 75 74 25 3d  6c 65 6e 25 2d 70 74 25  |t$:cut%=len%-pt%|
00016e10  2d 32 0d 7f 30 26 6d 61  78 6c 65 6e 25 3d 4c 65  |-2..0&maxlen%=Le|
00016e20  6e 25 2b 28 64 65 63 69  6d 61 6c 25 28 4e 61 6d  |n%+(decimal%(Nam|
00016e30  65 4e 6f 25 29 3d 30 29  0d 7f 3a 19 e7 20 64 65  |eNo%)=0)..:.. de|
00016e40  63 69 6d 61 6c 25 28 4e  61 6d 65 4e 6f 25 29 20  |cimal%(NameNo%) |
00016e50  8c 0d 7f 44 0c 20 e7 20  70 74 25 20 8c 0d 7f 4e  |...D. . pt% ...N|
00016e60  24 20 20 e7 20 63 75 74  25 3e 30 20 8c 20 73 74  |$  . cut%>0 . st|
00016e70  24 3d c0 73 74 24 2c 6c  65 6e 25 2d 63 75 74 25  |$=.st$,len%-cut%|
00016e80  29 0d 7f 58 1d 20 20 e7  20 63 75 74 25 3d 2d 31  |)..X.  . cut%=-1|
00016e90  20 8c 20 73 74 24 3d 73  74 24 2b 22 30 22 0d 7f  | . st$=st$+"0"..|
00016ea0  62 1e 20 20 e7 20 63 75  74 25 3d 2d 32 20 8c 20  |b.  . cut%=-2 . |
00016eb0  73 74 24 3d 73 74 24 2b  22 30 30 22 0d 7f 6c 06  |st$=st$+"00"..l.|
00016ec0  20 cc 0d 7f 76 10 20 20  e7 20 6c 65 6e 25 3c 33  | ...v.  . len%<3|
00016ed0  20 8c 0d 7f 80 14 20 20  20 73 74 24 3d 73 74 24  | .....   st$=st$|
00016ee0  2b 22 2e 30 30 22 0d 7f  8a 07 20 20 cc 0d 7f 94  |+".00"....  ....|
00016ef0  23 20 20 20 73 74 24 3d  c0 73 74 24 2c 6c 65 6e  |#   st$=.st$,len|
00016f00  25 2d 32 29 2b 22 2e 22  2b c2 73 74 24 2c 32 29  |%-2)+"."+.st$,2)|
00016f10  0d 7f 9e 07 20 20 cd 0d  7f a8 06 20 cd 0d 7f b2  |....  ..... ....|
00016f20  05 cc 0d 7f bc 1c 20 e7  20 70 74 25 20 8c 20 73  |...... . pt% . s|
00016f30  74 24 3d c0 73 74 24 2c  70 74 25 2d 31 29 0d 7f  |t$=.st$,pt%-1)..|
00016f40  c6 17 20 e7 20 73 74 24  3d 22 22 20 8c 20 73 74  |.. . st$="" . st|
00016f50  24 3d 22 30 22 0d 7f d0  05 cd 0d 7f da 0e 6c 65  |$="0".........le|
00016f60  6e 25 3d a9 20 73 74 24  0d 7f e4 26 e7 20 6c 65  |n%=. st$...&. le|
00016f70  6e 25 3e 6d 61 78 6c 65  6e 25 20 8c 20 73 74 24  |n%>maxlen% . st$|
00016f80  3d c2 73 74 24 2c 6d 61  78 6c 65 6e 25 29 0d 7f  |=.st$,maxlen%)..|
00016f90  ee 08 3d 73 74 24 0d 7f  f8 04 0d 80 02 04 0d 80  |..=st$..........|
00016fa0  0c 0f f4 20 3e 77 69 6d  70 5f 6c 69 62 0d 80 16  |... >wimp_lib...|
00016fb0  04 0d 80 20 25 f4 20 2a  2a 2a 2a 2a 2a 2a 2a 2a  |... %. *********|
00016fc0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00016fd0  2a 2a 2a 2a 2a 2a 0d 80  2a 25 f4 20 2a 2a 2a 57  |******..*%. ***W|
00016fe0  49 4d 50 20 41 4e 44 20  44 45 53 4b 54 4f 50 20  |IMP AND DESKTOP |
00016ff0  52 4f 55 54 49 4e 45 53  2a 2a 2a 0d 80 34 25 f4  |ROUTINES***..4%.|
00017000  20 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  | ***************|
00017010  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00017020  0d 80 3e 04 0d 80 48 04  0d 80 52 0b f4 20 49 63  |..>...H...R.. Ic|
00017030  6f 6e 73 0d 80 5c 04 0d  80 66 3e dd 20 a4 69 63  |ons..\...f>. .ic|
00017040  6f 6e 28 77 68 61 6e 64  6c 65 25 2c 78 25 2c 79  |on(whandle%,x%,y|
00017050  25 2c 77 25 2c 68 25 2c  66 6c 67 25 2c 6e 61 6d  |%,w%,h%,flg%,nam|
00017060  65 24 2c 70 74 72 31 25  2c 70 74 72 32 25 2c 70  |e$,ptr1%,ptr2%,p|
00017070  74 72 33 25 29 0d 80 70  2e f4 20 47 65 6e 65 72  |tr3%)..p.. Gener|
00017080  61 6c 20 70 75 72 70 6f  73 65 20 69 63 6f 6e 20  |al purpose icon |
00017090  63 72 65 61 74 69 6f 6e  20 70 72 6f 63 65 64 75  |creation procedu|
000170a0  72 65 2e 0d 80 7a 0d ea  20 68 61 6e 64 6c 65 25  |re...z.. handle%|
000170b0  0d 80 84 14 21 62 6c 6f  63 6b 25 3d 77 68 61 6e  |....!block%=whan|
000170c0  64 6c 65 25 0d 80 8e 3b  62 6c 6f 63 6b 25 21 34  |dle%...;block%!4|
000170d0  3d 78 25 3a 62 6c 6f 63  6b 25 21 38 3d 79 25 3a  |=x%:block%!8=y%:|
000170e0  62 6c 6f 63 6b 25 21 31  32 3d 77 25 2b 78 25 3a  |block%!12=w%+x%:|
000170f0  62 6c 6f 63 6b 25 21 31  36 3d 68 25 2b 79 25 0d  |block%!16=h%+y%.|
00017100  80 98 12 62 6c 6f 63 6b  25 21 32 30 3d 66 6c 67  |...block%!20=flg|
00017110  25 0d 80 a2 04 0d 80 ac  0f e7 20 70 74 72 31 25  |%......... ptr1%|
00017120  3d 30 20 8c 0d 80 b6 17  20 24 28 62 6c 6f 63 6b  |=0 ..... $(block|
00017130  25 2b 32 34 29 3d 6e 61  6d 65 24 0d 80 c0 05 cc  |%+24)=name$.....|
00017140  0d 80 ca 12 20 f4 20 49  6e 64 69 72 65 63 74 65  |.... . Indirecte|
00017150  64 2e 0d 80 d4 11 20 24  70 74 72 31 25 3d 6e 61  |d..... $ptr1%=na|
00017160  6d 65 24 0d 80 de 34 20  62 6c 6f 63 6b 25 21 32  |me$...4 block%!2|
00017170  34 3d 70 74 72 31 25 3a  62 6c 6f 63 6b 25 21 32  |4=ptr1%:block%!2|
00017180  38 3d 70 74 72 32 25 3a  62 6c 6f 63 6b 25 21 33  |8=ptr2%:block%!3|
00017190  32 3d 70 74 72 33 25 0d  80 e8 05 cd 0d 80 f2 04  |2=ptr3%.........|
000171a0  0d 80 fc 29 c8 99 22 57  69 6d 70 5f 43 72 65 61  |...).."Wimp_Crea|
000171b0  74 65 49 63 6f 6e 22 2c  2c 62 6c 6f 63 6b 25 20  |teIcon",,block% |
000171c0  b8 20 68 61 6e 64 6c 65  25 0d 81 06 0c 3d 68 61  |. handle%....=ha|
000171d0  6e 64 6c 65 25 0d 81 10  04 0d 81 1a 04 0d 81 24  |ndle%..........$|
000171e0  1d dd 20 a4 69 63 6f 6e  5f 62 61 72 5f 69 63 6f  |.. .icon_bar_ico|
000171f0  6e 28 73 70 72 69 74 65  24 29 0d 81 2e 2c 3d a4  |n(sprite$)...,=.|
00017200  69 63 6f 6e 28 2d 31 2c  30 2c 30 2c 36 38 2c 36  |icon(-1,0,0,68,6|
00017210  38 2c 26 33 30 30 32 2c  73 70 72 69 74 65 24 2c  |8,&3002,sprite$,|
00017220  30 2c 30 2c 30 29 0d 81  38 04 0d 81 42 04 0d 81  |0,0,0)..8...B...|
00017230  4c 43 f4 20 41 64 64 72  65 73 73 20 6f 66 20 62  |LC. Address of b|
00017240  75 66 66 65 72 20 6f 66  20 61 6e 20 69 6e 64 69  |uffer of an indi|
00017250  72 65 63 74 65 64 20 69  63 6f 6e 20 69 6e 20 77  |rected icon in w|
00017260  69 6e 64 6f 77 20 64 65  66 69 6e 69 74 69 6f 6e  |indow definition|
00017270  2e 0d 81 56 2d dd 20 a4  69 63 6f 6e 5f 62 75 66  |...V-. .icon_buf|
00017280  66 65 72 28 6e 75 6d 25  29 3d 62 6c 6f 63 6b 25  |fer(num%)=block%|
00017290  21 28 31 30 38 2b 33 32  2a 6e 75 6d 25 29 0d 81  |!(108+32*num%)..|
000172a0  60 04 0d 81 6a 04 0d 81  74 40 dd 20 a4 69 6e 63  |`...j...t@. .inc|
000172b0  72 65 6d 65 6e 74 5f 62  75 66 66 65 72 28 77 68  |rement_buffer(wh|
000172c0  61 6e 64 6c 65 25 2c 69  68 61 6e 64 6c 65 25 2c  |andle%,ihandle%,|
000172d0  76 61 72 25 2c 70 74 72  25 2c 69 6e 63 25 2c 72  |var%,ptr%,inc%,r|
000172e0  61 6e 67 65 25 29 0d 81  7e 18 f4 20 49 6e 63 72  |ange%)..~.. Incr|
000172f0  65 6d 65 6e 74 73 20 61  6e 20 69 63 6f 6e 0d 81  |ements an icon..|
00017300  88 19 e7 20 76 61 72 25  3d 72 61 6e 67 65 25 20  |... var%=range% |
00017310  8c 20 3d 76 61 72 25 0d  81 92 1c 76 61 72 25 3d  |. =var%....var%=|
00017320  bb 20 24 70 74 72 25 3a  76 61 72 25 20 2b 3d 69  |. $ptr%:var% +=i|
00017330  6e 63 25 0d 81 9c 0f 24  70 74 72 25 3d c3 76 61  |nc%....$ptr%=.va|
00017340  72 25 0d 81 a6 22 f2 72  65 73 65 74 5f 69 63 6f  |r%...".reset_ico|
00017350  6e 28 77 68 61 6e 64 6c  65 25 2c 69 68 61 6e 64  |n(whandle%,ihand|
00017360  6c 65 25 29 0d 81 b0 09  3d 76 61 72 25 0d 81 ba  |le%)....=var%...|
00017370  04 0d 81 c4 04 0d 81 ce  44 dd 20 a4 69 6e 63 5f  |........D. .inc_|
00017380  62 75 66 66 65 72 28 77  68 61 6e 64 6c 65 25 2c  |buffer(whandle%,|
00017390  69 68 61 6e 64 6c 65 25  2c 76 61 72 25 2c 70 74  |ihandle%,var%,pt|
000173a0  72 25 2c 69 6e 63 25 2c  6c 6f 77 52 25 2c 68 69  |r%,inc%,lowR%,hi|
000173b0  67 68 52 25 2c 75 70 25  29 0d 81 d8 2f e7 20 75  |ghR%,up%).../. u|
000173c0  70 25 20 8c 20 75 70 25  3d 28 62 6c 6f 63 6b 25  |p% . up%=(block%|
000173d0  21 38 3d 34 29 20 8b 20  75 70 25 3d 28 62 6c 6f  |!8=4) . up%=(blo|
000173e0  63 6b 25 21 38 3d 31 29  0d 81 e2 0b e7 20 75 70  |ck%!8=1)..... up|
000173f0  25 20 8c 0d 81 ec 44 20  76 61 72 25 3d a4 69 6e  |% ....D var%=.in|
00017400  63 72 65 6d 65 6e 74 5f  62 75 66 66 65 72 28 77  |crement_buffer(w|
00017410  68 61 6e 64 6c 65 25 2c  69 68 61 6e 64 6c 65 25  |handle%,ihandle%|
00017420  2c 76 61 72 25 2c 70 74  72 25 2c 69 6e 63 25 2c  |,var%,ptr%,inc%,|
00017430  68 69 67 68 52 25 29 0d  81 f6 05 cc 0d 82 00 44  |highR%)........D|
00017440  20 76 61 72 25 3d a4 69  6e 63 72 65 6d 65 6e 74  | var%=.increment|
00017450  5f 62 75 66 66 65 72 28  77 68 61 6e 64 6c 65 25  |_buffer(whandle%|
00017460  2c 69 68 61 6e 64 6c 65  25 2c 76 61 72 25 2c 70  |,ihandle%,var%,p|
00017470  74 72 25 2c 2d 69 6e 63  25 2c 6c 6f 77 52 25 29  |tr%,-inc%,lowR%)|
00017480  0d 82 0a 05 cd 0d 82 14  09 3d 76 61 72 25 0d 82  |.........=var%..|
00017490  1e 04 0d 82 28 04 0d 82  32 04 0d 82 3c 24 dd 20  |....(...2...<$. |
000174a0  f2 72 65 73 65 74 5f 69  63 6f 6e 28 77 68 61 6e  |.reset_icon(whan|
000174b0  64 6c 65 25 2c 69 68 61  6e 64 6c 65 25 29 0d 82  |dle%,ihandle%)..|
000174c0  46 45 f4 20 46 6f 72 20  61 75 74 6f 5f 72 65 64  |FE. For auto_red|
000174d0  72 61 77 20 77 69 6e 64  6f 77 73 2e 20 52 65 73  |raw windows. Res|
000174e0  65 74 73 20 69 63 6f 6e  20 77 68 65 72 65 20 61  |ets icon where a|
000174f0  20 62 75 66 66 65 72 20  69 73 20 61 6c 74 65 72  | buffer is alter|
00017500  65 64 2e 0d 82 50 26 21  62 6c 6f 63 6b 25 3d 77  |ed...P&!block%=w|
00017510  68 61 6e 64 6c 65 25 3a  62 6c 6f 63 6b 25 21 34  |handle%:block%!4|
00017520  3d 69 68 61 6e 64 6c 65  25 0d 82 5a 1a 62 6c 6f  |=ihandle%..Z.blo|
00017530  63 6b 25 21 38 3d 30 3a  62 6c 6f 63 6b 25 21 31  |ck%!8=0:block%!1|
00017540  32 3d 30 0d 82 64 21 c8  99 22 57 69 6d 70 5f 53  |2=0..d!.."Wimp_S|
00017550  65 74 49 63 6f 6e 53 74  61 74 65 22 2c 2c 62 6c  |etIconState",,bl|
00017560  6f 63 6b 25 0d 82 6e 05  e1 0d 82 78 04 0d 82 82  |ock%..n....x....|
00017570  04 0d 82 8c 27 dd 20 a4  69 63 6f 6e 5f 73 65 6c  |....'. .icon_sel|
00017580  65 63 74 65 64 28 77 68  61 6e 64 6c 65 25 2c 69  |ected(whandle%,i|
00017590  68 61 6e 64 6c 65 25 29  0d 82 96 2e f4 20 54 65  |handle%)..... Te|
000175a0  73 74 73 20 69 66 20 72  61 64 69 6f 20 69 63 6f  |sts if radio ico|
000175b0  6e 20 69 73 20 69 6e 20  73 65 6c 65 63 74 65 64  |n is in selected|
000175c0  20 73 74 61 74 65 0d 82  a0 26 21 62 6c 6f 63 6b  | state...&!block|
000175d0  25 3d 77 68 61 6e 64 6c  65 25 3a 62 6c 6f 63 6b  |%=whandle%:block|
000175e0  25 21 34 3d 69 68 61 6e  64 6c 65 25 0d 82 aa 21  |%!4=ihandle%...!|
000175f0  c8 99 22 57 69 6d 70 5f  47 65 74 49 63 6f 6e 53  |.."Wimp_GetIconS|
00017600  74 61 74 65 22 2c 2c 62  6c 6f 63 6b 25 0d 82 b4  |tate",,block%...|
00017610  1a 3d 28 28 62 6c 6f 63  6b 25 3f 32 36 20 80 20  |.=((block%?26 . |
00017620  33 32 29 3d 33 32 29 0d  82 be 04 0d 82 c8 04 0d  |32)=32).........|
00017630  82 d2 31 dd 20 f2 73 65  74 5f 69 63 6f 6e 5f 66  |..1. .set_icon_f|
00017640  6c 61 67 28 77 68 61 6e  64 6c 65 25 2c 69 68 61  |lag(whandle%,iha|
00017650  6e 64 6c 65 25 2c 62 69  74 25 2c 73 65 74 25 29  |ndle%,bit%,set%)|
00017660  0d 82 dc 48 f4 20 41 6c  74 65 72 73 20 61 6e 20  |...H. Alters an |
00017670  69 63 6f 6e 20 66 6c 61  67 2e 20 49 66 20 73 65  |icon flag. If se|
00017680  74 25 20 69 73 20 73 65  74 20 74 68 65 6e 20 73  |t% is set then s|
00017690  65 74 73 20 66 6c 61 67  20 65 6c 73 65 20 75 6e  |ets flag else un|
000176a0  73 65 74 73 20 69 74 2e  0d 82 e6 26 21 62 6c 6f  |sets it....&!blo|
000176b0  63 6b 25 3d 77 68 61 6e  64 6c 65 25 3a 62 6c 6f  |ck%=whandle%:blo|
000176c0  63 6b 25 21 34 3d 69 68  61 6e 64 6c 65 25 0d 82  |ck%!4=ihandle%..|
000176d0  f0 4e e7 20 73 65 74 25  20 8c 20 62 6c 6f 63 6b  |.N. set% . block|
000176e0  25 21 38 3d 31 3c 3c 62  69 74 25 3a 62 6c 6f 63  |%!8=1<<bit%:bloc|
000176f0  6b 25 21 31 32 3d 31 3c  3c 62 69 74 25 20 8b 20  |k%!12=1<<bit% . |
00017700  62 6c 6f 63 6b 25 21 38  3d 30 3a 62 6c 6f 63 6b  |block%!8=0:block|
00017710  25 21 31 32 3d 31 3c 3c  62 69 74 25 0d 82 fa 21  |%!12=1<<bit%...!|
00017720  c8 99 22 57 69 6d 70 5f  53 65 74 49 63 6f 6e 53  |.."Wimp_SetIconS|
00017730  74 61 74 65 22 2c 2c 62  6c 6f 63 6b 25 0d 83 04  |tate",,block%...|
00017740  05 e1 0d 83 0e 04 0d 83  18 04 0d 83 22 31 dd 20  |............"1. |
00017750  f2 61 6c 74 65 72 5f 62  75 74 74 6f 6e 5f 74 79  |.alter_button_ty|
00017760  70 65 28 77 68 61 6e 64  6c 65 25 2c 69 68 61 6e  |pe(whandle%,ihan|
00017770  64 6c 65 25 2c 74 79 70  65 25 29 0d 83 2c 23 f4  |dle%,type%)..,#.|
00017780  20 41 6c 74 65 72 73 20  62 75 74 74 6f 6e 20 74  | Alters button t|
00017790  79 70 65 20 6f 66 20 61  6e 20 69 63 6f 6e 0d 83  |ype of an icon..|
000177a0  36 0b ea 20 4e 25 2c 50  25 0d 83 40 0e e3 20 4e  |6.. N%,P%..@.. N|
000177b0  25 3d 30 20 b8 20 33 0d  83 4a 18 20 50 25 3d 28  |%=0 . 3..J. P%=(|
000177c0  74 79 70 65 25 20 80 20  28 32 5e 4e 25 29 29 0d  |type% . (2^N%)).|
000177d0  83 54 2f 20 f2 73 65 74  5f 69 63 6f 6e 5f 66 6c  |.T/ .set_icon_fl|
000177e0  61 67 28 77 68 61 6e 64  6c 65 25 2c 69 68 61 6e  |ag(whandle%,ihan|
000177f0  64 6c 65 25 2c 31 32 2b  4e 25 2c 50 25 29 0d 83  |dle%,12+N%,P%)..|
00017800  5e 05 ed 0d 83 68 05 e1  0d 83 72 04 0d 83 7c 04  |^....h....r...|.|
00017810  0d 83 86 2a dd 20 f2 73  65 6c 65 63 74 5f 69 63  |...*. .select_ic|
00017820  6f 6e 28 77 68 61 6e 64  6c 65 25 2c 69 68 61 6e  |on(whandle%,ihan|
00017830  64 6c 65 25 2c 73 65 74  25 29 0d 83 90 2d f2 73  |dle%,set%)...-.s|
00017840  65 74 5f 69 63 6f 6e 5f  66 6c 61 67 28 77 68 61  |et_icon_flag(wha|
00017850  6e 64 6c 65 25 2c 69 68  61 6e 64 6c 65 25 2c 32  |ndle%,ihandle%,2|
00017860  31 2c 73 65 74 25 29 0d  83 9a 05 e1 0d 83 a4 04  |1,set%).........|
00017870  0d 83 ae 04 0d 83 b8 29  dd 20 f2 73 68 61 64 65  |.......). .shade|
00017880  5f 69 63 6f 6e 28 77 68  61 6e 64 6c 65 25 2c 69  |_icon(whandle%,i|
00017890  68 61 6e 64 6c 65 25 2c  73 65 74 25 29 0d 83 c2  |handle%,set%)...|
000178a0  2d f2 73 65 74 5f 69 63  6f 6e 5f 66 6c 61 67 28  |-.set_icon_flag(|
000178b0  77 68 61 6e 64 6c 65 25  2c 69 68 61 6e 64 6c 65  |whandle%,ihandle|
000178c0  25 2c 32 32 2c 73 65 74  25 29 0d 83 cc 05 e1 0d  |%,22,set%)......|
000178d0  83 d6 04 0d 83 e0 04 0d  83 ea 2a dd 20 f2 64 65  |..........*. .de|
000178e0  6c 65 74 65 5f 69 63 6f  6e 28 77 68 61 6e 64 6c  |lete_icon(whandl|
000178f0  65 25 2c 69 68 61 6e 64  6c 65 25 2c 73 65 74 25  |e%,ihandle%,set%|
00017900  29 0d 83 f4 2d f2 73 65  74 5f 69 63 6f 6e 5f 66  |)...-.set_icon_f|
00017910  6c 61 67 28 77 68 61 6e  64 6c 65 25 2c 69 68 61  |lag(whandle%,iha|
00017920  6e 64 6c 65 25 2c 32 33  2c 73 65 74 25 29 0d 83  |ndle%,23,set%)..|
00017930  fe 05 e1 0d 84 08 04 0d  84 12 4e 2a 2a 2a 2a 2a  |..........N*****|
00017940  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00017980  2a 2a 2a 2a 2a 0d 84 1c  04 0d 84 26 0d f4 20 57  |*****......&.. W|
00017990  69 6e 64 6f 77 73 0d 84  30 04 0d 84 3a 30 dd 20  |indows..0...:0. |
000179a0  a4 74 65 6d 70 5f 77 69  6e 64 6f 77 28 62 75 66  |.temp_window(buf|
000179b0  66 25 2c 6c 65 6e 25 2c  6e 61 6d 65 25 2c 6e 61  |f%,len%,name%,na|
000179c0  6d 65 24 2c 66 6f 6e 74  25 29 0d 84 44 25 f4 20  |me$,font%)..D%. |
000179d0  4c 6f 61 64 73 20 77 69  6e 64 6f 77 20 66 72 6f  |Loads window fro|
000179e0  6d 20 74 65 6d 70 6c 61  74 65 20 66 69 6c 65 0d  |m template file.|
000179f0  84 4e 1a ea 20 68 61 6e  64 6c 65 25 3a 24 6e 61  |.N.. handle%:$na|
00017a00  6d 65 25 3d 6e 61 6d 65  24 0d 84 58 40 c8 99 22  |me%=name$..X@.."|
00017a10  57 69 6d 70 5f 4c 6f 61  64 54 65 6d 70 6c 61 74  |Wimp_LoadTemplat|
00017a20  65 22 2c 2c 62 6c 6f 63  6b 25 2c 62 75 66 66 25  |e",,block%,buff%|
00017a30  2c 62 75 66 66 25 2b 6c  65 6e 25 2c 66 6f 6e 74  |,buff%+len%,font|
00017a40  25 2c 6e 61 6d 65 25 2c  30 0d 84 62 14 62 6c 6f  |%,name%,0..b.blo|
00017a50  63 6b 25 21 36 34 3d 73  61 72 65 61 25 0d 84 6c  |ck%!64=sarea%..l|
00017a60  2b c8 99 22 57 69 6d 70  5f 43 72 65 61 74 65 57  |+.."Wimp_CreateW|
00017a70  69 6e 64 6f 77 22 2c 2c  62 6c 6f 63 6b 25 20 b8  |indow",,block% .|
00017a80  20 68 61 6e 64 6c 65 25  0d 84 76 0c 3d 68 61 6e  | handle%..v.=han|
00017a90  64 6c 65 25 0d 84 80 04  0d 84 8a 04 0d 84 94 23  |dle%...........#|
00017aa0  dd 20 a4 77 68 6f 6c 65  5f 73 63 72 65 65 6e 5f  |. .whole_screen_|
00017ab0  77 69 6e 64 6f 77 28 68  61 6e 64 6c 65 25 29 0d  |window(handle%).|
00017ac0  84 9e 35 ea 20 77 25 2c  68 25 2c 78 73 68 69 66  |..5. w%,h%,xshif|
00017ad0  74 25 2c 79 73 68 69 66  74 25 2c 6f 70 65 6e 25  |t%,yshift%,open%|
00017ae0  2c 70 72 65 76 25 3a 70  72 65 76 25 3d 68 61 6e  |,prev%:prev%=han|
00017af0  64 6c 65 25 0d 84 a8 26  e7 20 a4 77 69 6e 64 6f  |dle%...&. .windo|
00017b00  77 5f 6f 70 65 6e 28 68  61 6e 64 6c 65 25 29 20  |w_open(handle%) |
00017b10  8c 20 6f 70 65 6e 25 3d  2d 31 0d 84 b2 32 21 62  |. open%=-1...2!b|
00017b20  6c 6f 63 6b 25 3d 68 61  6e 64 6c 65 25 3a c8 99  |lock%=handle%:..|
00017b30  22 57 69 6d 70 5f 47 65  74 57 69 6e 64 6f 77 49  |"Wimp_GetWindowI|
00017b40  6e 66 6f 22 2c 2c 62 6c  6f 63 6b 25 0d 84 bc 1b  |nfo",,block%....|
00017b50  f2 6d 6f 64 65 5f 64 69  6d 65 6e 73 69 6f 6e 73  |.mode_dimensions|
00017b60  28 77 25 2c 68 25 29 0d  84 c6 33 62 6c 6f 63 6b  |(w%,h%)...3block|
00017b70  25 21 34 3d 30 3a 62 6c  6f 63 6b 25 21 38 3d 30  |%!4=0:block%!8=0|
00017b80  3a 62 6c 6f 63 6b 25 21  31 32 3d 77 25 3a 62 6c  |:block%!12=w%:bl|
00017b90  6f 63 6b 25 21 31 36 3d  68 25 0d 84 d0 28 78 73  |ock%!16=h%...(xs|
00017ba0  68 69 66 74 25 3d 28 77  25 2d 28 62 6c 6f 63 6b  |hift%=(w%-(block|
00017bb0  25 21 35 32 2d 62 6c 6f  63 6b 25 21 34 34 29 29  |%!52-block%!44))|
00017bc0  2f 32 0d 84 da 28 79 73  68 69 66 74 25 3d 28 68  |/2...(yshift%=(h|
00017bd0  25 2d 28 62 6c 6f 63 6b  25 21 35 36 2d 62 6c 6f  |%-(block%!56-blo|
00017be0  63 6b 25 21 34 38 29 29  2f 32 0d 84 e4 2b 62 6c  |ck%!48))/2...+bl|
00017bf0  6f 63 6b 25 21 32 30 20  2d 3d 78 73 68 69 66 74  |ock%!20 -=xshift|
00017c00  25 3a 62 6c 6f 63 6b 25  21 32 34 20 2b 3d 79 73  |%:block%!24 +=ys|
00017c10  68 69 66 74 25 0d 84 ee  2b 62 6c 6f 63 6b 25 21  |hift%...+block%!|
00017c20  34 34 20 2d 3d 78 73 68  69 66 74 25 3a 62 6c 6f  |44 -=xshift%:blo|
00017c30  63 6b 25 21 35 32 20 2b  3d 78 73 68 69 66 74 25  |ck%!52 +=xshift%|
00017c40  0d 84 f8 2b 62 6c 6f 63  6b 25 21 35 36 20 2b 3d  |...+block%!56 +=|
00017c50  79 73 68 69 66 74 25 3a  62 6c 6f 63 6b 25 21 34  |yshift%:block%!4|
00017c60  38 20 2d 3d 79 73 68 69  66 74 25 0d 85 02 25 62  |8 -=yshift%...%b|
00017c70  6c 6f 63 6b 25 21 33 32  3d 28 62 6c 6f 63 6b 25  |lock%!32=(block%|
00017c80  21 33 32 20 80 20 26 38  30 46 46 46 46 46 46 29  |!32 . &80FFFFFF)|
00017c90  0d 85 0c 2d c8 99 22 57  69 6d 70 5f 43 72 65 61  |...-.."Wimp_Crea|
00017ca0  74 65 57 69 6e 64 6f 77  22 2c 2c 62 6c 6f 63 6b  |teWindow",,block|
00017cb0  25 2b 34 20 b8 20 68 61  6e 64 6c 65 25 0d 85 16  |%+4 . handle%...|
00017cc0  23 e7 20 6f 70 65 6e 25  20 8c 20 f2 6f 70 65 6e  |#. open% . .open|
00017cd0  5f 77 69 6e 64 6f 77 28  68 61 6e 64 6c 65 25 29  |_window(handle%)|
00017ce0  0d 85 20 2f 21 62 6c 6f  63 6b 25 3d 70 72 65 76  |.. /!block%=prev|
00017cf0  25 3a c8 99 22 57 69 6d  70 5f 44 65 6c 65 74 65  |%:.."Wimp_Delete|
00017d00  57 69 6e 64 6f 77 22 2c  2c 62 6c 6f 63 6b 25 0d  |Window",,block%.|
00017d10  85 2a 0c 3d 68 61 6e 64  6c 65 25 0d 85 34 04 0d  |.*.=handle%..4..|
00017d20  85 3e 04 0d 85 48 2f dd  20 a4 6f 72 64 69 6e 61  |.>...H/. .ordina|
00017d30  72 79 5f 77 69 6e 64 6f  77 28 68 61 6e 64 6c 65  |ry_window(handle|
00017d40  25 2c 77 25 2c 68 25 2c  63 79 24 2c 66 6c 67 73  |%,w%,h%,cy$,flgs|
00017d50  25 29 0d 85 52 35 ea 20  6f 70 65 6e 25 2c 70 72  |%)..R5. open%,pr|
00017d60  65 76 25 2c 56 62 61 72  25 2c 48 62 61 72 25 2c  |ev%,Vbar%,Hbar%,|
00017d70  53 43 77 25 2c 53 43 68  25 3a 70 72 65 76 25 3d  |SCw%,SCh%:prev%=|
00017d80  68 61 6e 64 6c 65 25 0d  85 5c 24 e7 20 28 66 6c  |handle%..\$. (fl|
00017d90  67 73 25 20 80 20 26 31  30 30 30 30 30 30 30 29  |gs% . &10000000)|
00017da0  20 8c 20 56 62 61 72 25  3d 34 34 0d 85 66 24 e7  | . Vbar%=44..f$.|
00017db0  20 28 66 6c 67 73 25 20  80 20 26 34 30 30 30 30  | (flgs% . &40000|
00017dc0  30 30 30 29 20 8c 20 48  62 61 72 25 3d 34 34 0d  |000) . Hbar%=44.|
00017dd0  85 70 1f f2 6d 6f 64 65  5f 64 69 6d 65 6e 73 69  |.p..mode_dimensi|
00017de0  6f 6e 73 28 53 43 77 25  2c 53 43 68 25 29 0d 85  |ons(SCw%,SCh%)..|
00017df0  7a 26 e7 20 a4 77 69 6e  64 6f 77 5f 6f 70 65 6e  |z&. .window_open|
00017e00  28 68 61 6e 64 6c 65 25  29 20 8c 20 6f 70 65 6e  |(handle%) . open|
00017e10  25 3d 2d 31 0d 85 84 32  21 62 6c 6f 63 6b 25 3d  |%=-1...2!block%=|
00017e20  68 61 6e 64 6c 65 25 3a  c8 99 22 57 69 6d 70 5f  |handle%:.."Wimp_|
00017e30  47 65 74 57 69 6e 64 6f  77 49 6e 66 6f 22 2c 2c  |GetWindowInfo",,|
00017e40  62 6c 6f 63 6b 25 0d 85  8e 1e 62 6c 6f 63 6b 25  |block%....block%|
00017e50  21 34 3d 28 53 43 77 25  2d 77 25 2d 56 62 61 72  |!4=(SCw%-w%-Vbar|
00017e60  25 29 2f 32 0d 85 98 37  e7 20 63 79 24 3d 22 59  |%)/2...7. cy$="Y|
00017e70  22 20 8c 20 62 6c 6f 63  6b 25 21 38 3d 28 53 43  |" . block%!8=(SC|
00017e80  68 25 2d 68 25 2d 48 62  61 72 25 29 2f 32 20 8b  |h%-h%-Hbar%)/2 .|
00017e90  20 62 6c 6f 63 6b 25 21  38 3d 30 0d 85 a2 2f 62  | block%!8=0.../b|
00017ea0  6c 6f 63 6b 25 21 31 32  3d 62 6c 6f 63 6b 25 21  |lock%!12=block%!|
00017eb0  34 2b 77 25 3a 62 6c 6f  63 6b 25 21 31 36 3d 62  |4+w%:block%!16=b|
00017ec0  6c 6f 63 6b 25 21 38 2b  68 25 0d 85 ac 1b 62 6c  |lock%!8+h%....bl|
00017ed0  6f 63 6b 25 21 32 30 3d  30 3a 62 6c 6f 63 6b 25  |ock%!20=0:block%|
00017ee0  21 32 34 3d 30 0d 85 b6  36 62 6c 6f 63 6b 25 21  |!24=0...6block%!|
00017ef0  34 34 3d 30 3a 62 6c 6f  63 6b 25 21 34 38 3d 2d  |44=0:block%!48=-|
00017f00  68 25 3a 62 6c 6f 63 6b  25 21 35 32 3d 77 25 3a  |h%:block%!52=w%:|
00017f10  62 6c 6f 63 6b 25 21 35  36 3d 30 0d 85 c0 13 62  |block%!56=0....b|
00017f20  6c 6f 63 6b 25 21 33 32  3d 66 6c 67 73 25 0d 85  |lock%!32=flgs%..|
00017f30  ca 2d c8 99 22 57 69 6d  70 5f 43 72 65 61 74 65  |.-.."Wimp_Create|
00017f40  57 69 6e 64 6f 77 22 2c  2c 62 6c 6f 63 6b 25 2b  |Window",,block%+|
00017f50  34 20 b8 20 68 61 6e 64  6c 65 25 0d 85 d4 23 e7  |4 . handle%...#.|
00017f60  20 6f 70 65 6e 25 20 8c  20 f2 6f 70 65 6e 5f 77  | open% . .open_w|
00017f70  69 6e 64 6f 77 28 68 61  6e 64 6c 65 25 29 0d 85  |indow(handle%)..|
00017f80  de 2f 21 62 6c 6f 63 6b  25 3d 70 72 65 76 25 3a  |./!block%=prev%:|
00017f90  c8 99 22 57 69 6d 70 5f  44 65 6c 65 74 65 57 69  |.."Wimp_DeleteWi|
00017fa0  6e 64 6f 77 22 2c 2c 62  6c 6f 63 6b 25 0d 85 e8  |ndow",,block%...|
00017fb0  0c 3d 68 61 6e 64 6c 65  25 0d 85 f2 04 0d 85 fc  |.=handle%.......|
00017fc0  04 0d 86 06 22 dd 20 a4  70 6c 61 63 65 5f 77 69  |....". .place_wi|
00017fd0  6e 64 6f 77 28 68 61 6e  64 6c 65 25 2c 78 25 2c  |ndow(handle%,x%,|
00017fe0  79 25 29 0d 86 10 11 ea  20 77 25 2c 68 25 2c 70  |y%)..... w%,h%,p|
00017ff0  72 65 76 25 0d 86 1a 11  70 72 65 76 25 3d 68 61  |rev%....prev%=ha|
00018000  6e 64 6c 65 25 0d 86 24  32 21 62 6c 6f 63 6b 25  |ndle%..$2!block%|
00018010  3d 68 61 6e 64 6c 65 25  3a c8 99 22 57 69 6d 70  |=handle%:.."Wimp|
00018020  5f 47 65 74 57 69 6e 64  6f 77 49 6e 66 6f 22 2c  |_GetWindowInfo",|
00018030  2c 62 6c 6f 63 6b 25 0d  86 2e 2f 77 25 3d 62 6c  |,block%.../w%=bl|
00018040  6f 63 6b 25 21 31 32 2d  62 6c 6f 63 6b 25 21 34  |ock%!12-block%!4|
00018050  3a 68 25 3d 62 6c 6f 63  6b 25 21 31 36 2d 62 6c  |:h%=block%!16-bl|
00018060  6f 63 6b 25 21 38 0d 86  38 3b 62 6c 6f 63 6b 25  |ock%!8..8;block%|
00018070  21 34 3d 78 25 3a 62 6c  6f 63 6b 25 21 38 3d 79  |!4=x%:block%!8=y|
00018080  25 3a 62 6c 6f 63 6b 25  21 31 32 3d 78 25 2b 77  |%:block%!12=x%+w|
00018090  25 3a 62 6c 6f 63 6b 25  21 31 36 3d 79 25 2b 68  |%:block%!16=y%+h|
000180a0  25 0d 86 42 2d c8 99 22  57 69 6d 70 5f 43 72 65  |%..B-.."Wimp_Cre|
000180b0  61 74 65 57 69 6e 64 6f  77 22 2c 2c 62 6c 6f 63  |ateWindow",,bloc|
000180c0  6b 25 2b 34 20 b8 20 68  61 6e 64 6c 65 25 0d 86  |k%+4 . handle%..|
000180d0  4c 19 f2 6f 70 65 6e 5f  77 69 6e 64 6f 77 28 68  |L..open_window(h|
000180e0  61 6e 64 6c 65 25 29 0d  86 56 2f 21 62 6c 6f 63  |andle%)..V/!bloc|
000180f0  6b 25 3d 70 72 65 76 25  3a c8 99 22 57 69 6d 70  |k%=prev%:.."Wimp|
00018100  5f 44 65 6c 65 74 65 57  69 6e 64 6f 77 22 2c 2c  |_DeleteWindow",,|
00018110  62 6c 6f 63 6b 25 0d 86  60 0c 3d 68 61 6e 64 6c  |block%..`.=handl|
00018120  65 25 0d 86 6a 04 0d 86  74 04 0d 86 7e 2f dd 20  |e%..j...t...~/. |
00018130  a4 72 65 6c 61 74 69 76  65 5f 77 69 6e 64 6f 77  |.relative_window|
00018140  28 4d 68 61 6e 64 6c 65  25 2c 52 68 61 6e 64 6c  |(Mhandle%,Rhandl|
00018150  65 25 2c 78 25 2c 79 25  29 0d 86 88 0d ea 20 4d  |e%,x%,y%)..... M|
00018160  78 25 2c 4d 79 25 0d 86  92 33 21 62 6c 6f 63 6b  |x%,My%...3!block|
00018170  25 3d 4d 68 61 6e 64 6c  65 25 3a c8 99 22 57 69  |%=Mhandle%:.."Wi|
00018180  6d 70 5f 47 65 74 57 69  6e 64 6f 77 49 6e 66 6f  |mp_GetWindowInfo|
00018190  22 2c 2c 62 6c 6f 63 6b  25 0d 86 9c 1d 4d 78 25  |",,block%....Mx%|
000181a0  3d 62 6c 6f 63 6b 25 21  34 3a 4d 79 25 3d 62 6c  |=block%!4:My%=bl|
000181b0  6f 63 6b 25 21 38 0d 86  a6 2a 3d a4 70 6c 61 63  |ock%!8...*=.plac|
000181c0  65 5f 77 69 6e 64 6f 77  28 52 68 61 6e 64 6c 65  |e_window(Rhandle|
000181d0  25 2c 4d 78 25 2b 78 25  2c 4d 79 25 2b 79 25 29  |%,Mx%+x%,My%+y%)|
000181e0  0d 86 b0 04 0d 86 ba 04  0d 86 c4 21 dd 20 a4 63  |...........!. .c|
000181f0  65 6e 74 72 65 5f 77 69  6e 64 6f 77 28 68 61 6e  |entre_window(han|
00018200  64 6c 65 25 2c 63 79 24  29 0d 86 ce 2d ea 20 53  |dle%,cy$)...-. S|
00018210  43 77 25 2c 53 43 68 25  2c 77 25 2c 68 25 2c 70  |Cw%,SCh%,w%,h%,p|
00018220  72 65 76 25 2c 66 6c 67  73 25 2c 48 62 61 72 25  |rev%,flgs%,Hbar%|
00018230  2c 56 62 61 72 25 0d 86  d8 11 70 72 65 76 25 3d  |,Vbar%....prev%=|
00018240  68 61 6e 64 6c 65 25 0d  86 e2 1f f2 6d 6f 64 65  |handle%.....mode|
00018250  5f 64 69 6d 65 6e 73 69  6f 6e 73 28 53 43 77 25  |_dimensions(SCw%|
00018260  2c 53 43 68 25 29 0d 86  ec 32 21 62 6c 6f 63 6b  |,SCh%)...2!block|
00018270  25 3d 68 61 6e 64 6c 65  25 3a c8 99 22 57 69 6d  |%=handle%:.."Wim|
00018280  70 5f 47 65 74 57 69 6e  64 6f 77 49 6e 66 6f 22  |p_GetWindowInfo"|
00018290  2c 2c 62 6c 6f 63 6b 25  0d 86 f6 13 66 6c 67 73  |,,block%....flgs|
000182a0  25 3d 62 6c 6f 63 6b 25  21 33 32 0d 87 00 24 e7  |%=block%!32...$.|
000182b0  20 28 66 6c 67 73 25 20  80 20 26 31 30 30 30 30  | (flgs% . &10000|
000182c0  30 30 30 29 20 8c 20 56  62 61 72 25 3d 34 34 0d  |000) . Vbar%=44.|
000182d0  87 0a 24 e7 20 28 66 6c  67 73 25 20 80 20 26 34  |..$. (flgs% . &4|
000182e0  30 30 30 30 30 30 30 29  20 8c 20 48 62 61 72 25  |0000000) . Hbar%|
000182f0  3d 34 34 0d 87 14 2f 77  25 3d 62 6c 6f 63 6b 25  |=44.../w%=block%|
00018300  21 31 32 2d 62 6c 6f 63  6b 25 21 34 3a 68 25 3d  |!12-block%!4:h%=|
00018310  62 6c 6f 63 6b 25 21 31  36 2d 62 6c 6f 63 6b 25  |block%!16-block%|
00018320  21 38 0d 87 1e 37 e7 20  63 79 24 3d 22 59 22 20  |!8...7. cy$="Y" |
00018330  8c 20 62 6c 6f 63 6b 25  21 38 3d 28 53 43 68 25  |. block%!8=(SCh%|
00018340  2d 68 25 2d 48 62 61 72  25 29 2f 32 20 8b 20 62  |-h%-Hbar%)/2 . b|
00018350  6c 6f 63 6b 25 21 38 3d  30 0d 87 28 1e 62 6c 6f  |lock%!8=0..(.blo|
00018360  63 6b 25 21 34 3d 28 53  43 77 25 2d 77 25 2d 56  |ck%!4=(SCw%-w%-V|
00018370  62 61 72 25 29 2f 32 0d  87 32 2f 62 6c 6f 63 6b  |bar%)/2..2/block|
00018380  25 21 31 32 3d 62 6c 6f  63 6b 25 21 34 2b 77 25  |%!12=block%!4+w%|
00018390  3a 62 6c 6f 63 6b 25 21  31 36 3d 62 6c 6f 63 6b  |:block%!16=block|
000183a0  25 21 38 2b 68 25 0d 87  3c 2d c8 99 22 57 69 6d  |%!8+h%..<-.."Wim|
000183b0  70 5f 43 72 65 61 74 65  57 69 6e 64 6f 77 22 2c  |p_CreateWindow",|
000183c0  2c 62 6c 6f 63 6b 25 2b  34 20 b8 20 68 61 6e 64  |,block%+4 . hand|
000183d0  6c 65 25 0d 87 46 19 f2  6f 70 65 6e 5f 77 69 6e  |le%..F..open_win|
000183e0  64 6f 77 28 68 61 6e 64  6c 65 25 29 0d 87 50 2f  |dow(handle%)..P/|
000183f0  21 62 6c 6f 63 6b 25 3d  70 72 65 76 25 3a c8 99  |!block%=prev%:..|
00018400  22 57 69 6d 70 5f 44 65  6c 65 74 65 57 69 6e 64  |"Wimp_DeleteWind|
00018410  6f 77 22 2c 2c 62 6c 6f  63 6b 25 0d 87 5a 0c 3d  |ow",,block%..Z.=|
00018420  68 61 6e 64 6c 65 25 0d  87 64 04 0d 87 6e 04 0d  |handle%..d...n..|
00018430  87 78 21 dd 20 f2 6d 6f  64 65 5f 64 69 6d 65 6e  |.x!. .mode_dimen|
00018440  73 69 6f 6e 73 28 f8 20  77 25 2c f8 20 68 25 29  |sions(. w%,. h%)|
00018450  0d 87 82 15 ea 20 72 78  25 2c 72 79 25 2c 65 78  |..... rx%,ry%,ex|
00018460  25 2c 65 79 25 0d 87 8c  29 c8 99 22 4f 53 5f 52  |%,ey%...).."OS_R|
00018470  65 61 64 4d 6f 64 65 56  61 72 69 61 62 6c 65 22  |eadModeVariable"|
00018480  2c 2d 31 2c 31 31 20 b8  20 2c 2c 72 78 25 0d 87  |,-1,11 . ,,rx%..|
00018490  96 28 c8 99 22 4f 53 5f  52 65 61 64 4d 6f 64 65  |.(.."OS_ReadMode|
000184a0  56 61 72 69 61 62 6c 65  22 2c 2d 31 2c 34 20 b8  |Variable",-1,4 .|
000184b0  20 2c 2c 65 78 25 0d 87  a0 29 c8 99 22 4f 53 5f  | ,,ex%...).."OS_|
000184c0  52 65 61 64 4d 6f 64 65  56 61 72 69 61 62 6c 65  |ReadModeVariable|
000184d0  22 2c 2d 31 2c 31 32 20  b8 20 2c 2c 72 79 25 0d  |",-1,12 . ,,ry%.|
000184e0  87 aa 28 c8 99 22 4f 53  5f 52 65 61 64 4d 6f 64  |..(.."OS_ReadMod|
000184f0  65 56 61 72 69 61 62 6c  65 22 2c 2d 31 2c 35 20  |eVariable",-1,5 |
00018500  b8 20 2c 2c 65 79 25 0d  87 b4 25 77 25 3d 28 72  |. ,,ey%...%w%=(r|
00018510  78 25 2b 31 29 2a 32 5e  65 78 25 3a 68 25 3d 28  |x%+1)*2^ex%:h%=(|
00018520  72 79 25 2b 31 29 2a 32  5e 65 79 25 0d 87 be 05  |ry%+1)*2^ey%....|
00018530  e1 0d 87 c8 04 0d 87 d2  04 0d 87 dc 1c dd 20 f2  |.............. .|
00018540  6f 70 65 6e 5f 77 69 6e  64 6f 77 28 77 68 61 6e  |open_window(whan|
00018550  64 6c 65 25 29 0d 87 e6  20 f4 20 4f 70 65 6e 73  |dle%)... . Opens|
00018560  20 77 69 6e 64 6f 77 20  67 69 76 65 6e 20 68 61  | window given ha|
00018570  6e 64 6c 65 2e 0d 87 f0  14 21 62 6c 6f 63 6b 25  |ndle.....!block%|
00018580  3d 77 68 61 6e 64 6c 65  25 0d 87 fa 23 c8 99 22  |=whandle%...#.."|
00018590  57 69 6d 70 5f 47 65 74  57 69 6e 64 6f 77 53 74  |Wimp_GetWindowSt|
000185a0  61 74 65 22 2c 2c 62 6c  6f 63 6b 25 0d 88 04 10  |ate",,block%....|
000185b0  62 6c 6f 63 6b 25 21 32  38 3d 2d 31 0d 88 0e 1f  |block%!28=-1....|
000185c0  c8 99 22 57 69 6d 70 5f  4f 70 65 6e 57 69 6e 64  |.."Wimp_OpenWind|
000185d0  6f 77 22 2c 2c 62 6c 6f  63 6b 25 0d 88 18 05 e1  |ow",,block%.....|
000185e0  0d 88 22 04 0d 88 2c 04  0d 88 36 1d dd 20 f2 63  |.."...,...6.. .c|
000185f0  6c 6f 73 65 5f 77 69 6e  64 6f 77 28 77 68 61 6e  |lose_window(whan|
00018600  64 6c 65 25 29 0d 88 40  21 f4 20 43 6c 6f 73 65  |dle%)..@!. Close|
00018610  73 20 77 69 6e 64 6f 77  20 67 69 76 65 6e 20 68  |s window given h|
00018620  61 6e 64 6c 65 2e 0d 88  4a 14 21 62 6c 6f 63 6b  |andle...J.!block|
00018630  25 3d 77 68 61 6e 64 6c  65 25 0d 88 54 23 c8 99  |%=whandle%..T#..|
00018640  22 57 69 6d 70 5f 47 65  74 57 69 6e 64 6f 77 53  |"Wimp_GetWindowS|
00018650  74 61 74 65 22 2c 2c 62  6c 6f 63 6b 25 0d 88 5e  |tate",,block%..^|
00018660  20 c8 99 22 57 69 6d 70  5f 43 6c 6f 73 65 57 69  | .."Wimp_CloseWi|
00018670  6e 64 6f 77 22 2c 2c 62  6c 6f 63 6b 25 0d 88 68  |ndow",,block%..h|
00018680  05 e1 0d 88 72 04 0d 88  7c 04 0d 88 86 35 dd 20  |....r...|....5. |
00018690  a4 74 6f 70 5f 77 69 6e  64 6f 77 28 77 68 61 6e  |.top_window(whan|
000186a0  64 6c 65 25 29 3d a4 77  69 6e 64 6f 77 5f 66 6c  |dle%)=.window_fl|
000186b0  61 67 73 28 77 68 61 6e  64 6c 65 25 2c 32 29 0d  |ags(whandle%,2).|
000186c0  88 90 36 dd 20 a4 77 69  6e 64 6f 77 5f 6f 70 65  |..6. .window_ope|
000186d0  6e 28 77 68 61 6e 64 6c  65 25 29 3d a4 77 69 6e  |n(whandle%)=.win|
000186e0  64 6f 77 5f 66 6c 61 67  73 28 77 68 61 6e 64 6c  |dow_flags(whandl|
000186f0  65 25 2c 31 29 0d 88 9a  3b dd 20 a4 77 69 6e 64  |e%,1)...;. .wind|
00018700  6f 77 5f 66 75 6c 6c 5f  73 69 7a 65 28 77 68 61  |ow_full_size(wha|
00018710  6e 64 6c 65 25 29 3d a4  77 69 6e 64 6f 77 5f 66  |ndle%)=.window_f|
00018720  6c 61 67 73 28 77 68 61  6e 64 6c 65 25 2c 34 29  |lags(whandle%,4)|
00018730  0d 88 a4 04 0d 88 ae 22  dd 20 a4 77 69 6e 64 6f  |.......". .windo|
00018740  77 5f 66 6c 61 67 73 28  77 68 61 6e 64 6c 65 25  |w_flags(whandle%|
00018750  2c 62 69 74 25 29 0d 88  b8 14 21 62 6c 6f 63 6b  |,bit%)....!block|
00018760  25 3d 77 68 61 6e 64 6c  65 25 0d 88 c2 23 c8 99  |%=whandle%...#..|
00018770  22 57 69 6d 70 5f 47 65  74 57 69 6e 64 6f 77 53  |"Wimp_GetWindowS|
00018780  74 61 74 65 22 2c 2c 62  6c 6f 63 6b 25 0d 88 cc  |tate",,block%...|
00018790  1e 3d 28 28 62 6c 6f 63  6b 25 3f 33 34 20 80 20  |.=((block%?34 . |
000187a0  62 69 74 25 29 3d 62 69  74 25 29 0d 88 d6 04 0d  |bit%)=bit%).....|
000187b0  88 e0 04 0d 88 ea 2e dd  20 a4 75 70 64 61 74 65  |........ .update|
000187c0  5f 77 69 6e 64 6f 77 28  77 68 61 6e 64 6c 65 25  |_window(whandle%|
000187d0  2c 78 31 25 2c 79 31 25  2c 78 32 25 2c 79 32 25  |,x1%,y1%,x2%,y2%|
000187e0  29 0d 88 f4 0b ea 20 66  6c 61 67 25 0d 88 fe 14  |)..... flag%....|
000187f0  21 62 6c 6f 63 6b 25 3d  77 68 61 6e 64 6c 65 25  |!block%=whandle%|
00018800  0d 89 08 39 62 6c 6f 63  6b 25 21 34 3d 78 31 25  |...9block%!4=x1%|
00018810  3a 62 6c 6f 63 6b 25 21  38 3d 79 31 25 3a 62 6c  |:block%!8=y1%:bl|
00018820  6f 63 6b 25 21 31 32 3d  78 32 25 3a 62 6c 6f 63  |ock%!12=x2%:bloc|
00018830  6b 25 21 31 36 3d 79 32  25 0d 89 12 29 c8 99 22  |k%!16=y2%...).."|
00018840  57 69 6d 70 5f 55 70 64  61 74 65 57 69 6e 64 6f  |Wimp_UpdateWindo|
00018850  77 22 2c 2c 62 6c 6f 63  6b 25 20 b8 20 66 6c 61  |w",,block% . fla|
00018860  67 25 0d 89 1c 0a 3d 66  6c 61 67 25 0d 89 26 04  |g%....=flag%..&.|
00018870  0d 89 30 04 0d 89 3a 2d  dd 20 f2 77 6f 72 6b 5f  |..0...:-. .work_|
00018880  61 72 65 61 5f 6f 72 69  67 69 6e 28 77 68 61 6e  |area_origin(whan|
00018890  64 6c 65 25 2c f8 20 6f  78 25 2c f8 20 6f 79 25  |dle%,. ox%,. oy%|
000188a0  29 0d 89 44 14 21 62 6c  6f 63 6b 25 3d 77 68 61  |)..D.!block%=wha|
000188b0  6e 64 6c 65 25 0d 89 4e  23 c8 99 22 57 69 6d 70  |ndle%..N#.."Wimp|
000188c0  5f 47 65 74 57 69 6e 64  6f 77 53 74 61 74 65 22  |_GetWindowState"|
000188d0  2c 2c 62 6c 6f 63 6b 25  0d 89 58 1a 6f 78 25 3d  |,,block%..X.ox%=|
000188e0  62 6c 6f 63 6b 25 21 34  2d 62 6c 6f 63 6b 25 21  |block%!4-block%!|
000188f0  32 30 0d 89 62 1b 6f 79  25 3d 62 6c 6f 63 6b 25  |20..b.oy%=block%|
00018900  21 31 36 2d 62 6c 6f 63  6b 25 21 32 34 0d 89 6c  |!16-block%!24..l|
00018910  05 e1 0d 89 76 04 0d 89  80 04 0d 89 8a 4e 2a 2a  |....v........N**|
00018920  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00018960  2a 2a 2a 2a 2a 2a 2a 2a  0d 89 94 04 0d 89 9e 0b  |********........|
00018970  f4 20 4d 65 6e 75 73 0d  89 a8 04 0d 89 b2 38 dd  |. Menus.......8.|
00018980  20 f2 73 65 74 5f 75 70  5f 6d 65 6e 75 28 74 69  | .set_up_menu(ti|
00018990  74 6c 65 24 2c 61 64 64  72 65 73 73 25 2c 6e 75  |tle$,address%,nu|
000189a0  6d 25 2c 69 74 65 6d 24  28 29 2c 64 61 74 61 25  |m%,item$(),data%|
000189b0  28 29 29 0d 89 bc 3a f4  20 53 65 74 73 20 75 70  |())...:. Sets up|
000189c0  20 6d 65 6e 75 20 62 6c  6f 63 6b 2e 49 74 65 6d  | menu block.Item|
000189d0  20 64 61 74 61 20 69 73  20 72 65 61 64 20 66 72  | data is read fr|
000189e0  6f 6d 20 64 61 74 61 20  6c 69 73 74 2e 0d 89 c6  |om data list....|
000189f0  52 f4 20 44 61 74 61 20  73 75 62 73 63 72 69 70  |R. Data subscrip|
00018a00  74 73 20 2d 20 30 20 6d  65 6e 75 20 66 6c 61 67  |ts - 0 menu flag|
00018a10  73 2c 31 20 73 75 62 70  6f 69 6e 74 65 72 2c 32  |s,1 subpointer,2|
00018a20  20 73 68 61 64 65 2c 33  20 62 75 66 66 65 72 2c  | shade,3 buffer,|
00018a30  34 20 62 75 66 66 65 72  20 6c 65 6e 67 74 68 0d  |4 buffer length.|
00018a40  89 d0 04 0d 89 da 10 ea  20 70 74 72 25 2c 69 74  |........ ptr%,it|
00018a50  65 6d 25 0d 89 e4 27 24  61 64 64 72 65 73 73 25  |em%...'$address%|
00018a60  3d 74 69 74 6c 65 24 3a  77 69 64 74 68 25 3d a9  |=title$:width%=.|
00018a70  20 74 69 74 6c 65 24 20  2d 33 0d 89 ee 33 61 64  | title$ -3...3ad|
00018a80  64 72 65 73 73 25 21 31  32 3d 26 37 30 32 30 37  |dress%!12=&70207|
00018a90  3a 61 64 64 72 65 73 73  25 21 32 30 3d 34 34 3a  |:address%!20=44:|
00018aa0  61 64 64 72 65 73 73 25  21 32 34 3d 30 0d 89 f8  |address%!24=0...|
00018ab0  14 70 74 72 25 3d 61 64  64 72 65 73 73 25 2b 32  |.ptr%=address%+2|
00018ac0  38 0d 8a 02 04 0d 8a 0c  14 e3 20 69 74 65 6d 25  |8......... item%|
00018ad0  3d 30 20 b8 20 6e 75 6d  25 0d 8a 16 40 20 70 74  |=0 . num%...@ pt|
00018ae0  72 25 21 30 3d 64 61 74  61 25 28 69 74 65 6d 25  |r%!0=data%(item%|
00018af0  2c 30 29 3a 70 74 72 25  21 34 3d 64 61 74 61 25  |,0):ptr%!4=data%|
00018b00  28 69 74 65 6d 25 2c 31  29 3a 70 74 72 25 21 38  |(item%,1):ptr%!8|
00018b10  3d 26 37 30 30 30 30 32  31 0d 8a 20 31 20 e7 20  |=&7000021.. 1 . |
00018b20  64 61 74 61 25 28 69 74  65 6d 25 2c 32 29 20 8c  |data%(item%,2) .|
00018b30  20 70 74 72 25 21 38 3d  28 70 74 72 25 21 38 20  | ptr%!8=(ptr%!8 |
00018b40  84 20 26 34 30 30 30 30  30 29 0d 8a 2a 04 0d 8a  |. &400000)..*...|
00018b50  34 17 20 e7 20 64 61 74  61 25 28 69 74 65 6d 25  |4. . data%(item%|
00018b60  2c 33 29 20 8c 0d 8a 3e  1e 20 20 f4 20 49 6e 64  |,3) ...>.  . Ind|
00018b70  69 72 65 63 74 65 64 20  28 6c 65 6e 67 74 68 3e  |irected (length>|
00018b80  31 32 29 0d 8a 48 1c 20  20 70 74 72 25 21 38 3d  |12)..H.  ptr%!8=|
00018b90  28 70 74 72 25 21 38 20  84 20 26 31 30 30 29 0d  |(ptr%!8 . &100).|
00018ba0  8a 52 24 20 20 24 28 64  61 74 61 25 28 69 74 65  |.R$  $(data%(ite|
00018bb0  6d 25 2c 33 29 29 3d 69  74 65 6d 24 28 69 74 65  |m%,3))=item$(ite|
00018bc0  6d 25 29 0d 8a 5c 3e 20  20 70 74 72 25 21 31 32  |m%)..\>  ptr%!12|
00018bd0  3d 64 61 74 61 25 28 69  74 65 6d 25 2c 33 29 3a  |=data%(item%,3):|
00018be0  70 74 72 25 21 31 36 3d  2d 31 3a 70 74 72 25 21  |ptr%!16=-1:ptr%!|
00018bf0  32 30 3d 64 61 74 61 25  28 69 74 65 6d 25 2c 34  |20=data%(item%,4|
00018c00  29 0d 8a 66 06 20 cc 0d  8a 70 1d 20 20 24 28 70  |)..f. ...p.  $(p|
00018c10  74 72 25 2b 31 32 29 3d  69 74 65 6d 24 28 69 74  |tr%+12)=item$(it|
00018c20  65 6d 25 29 0d 8a 7a 06  20 cd 0d 8a 84 04 0d 8a  |em%)..z. .......|
00018c30  8e 10 70 74 72 25 3d 70  74 72 25 2b 32 34 0d 8a  |..ptr%=ptr%+24..|
00018c40  98 52 e7 20 a9 20 69 74  65 6d 24 28 69 74 65 6d  |.R. . item$(item|
00018c50  25 29 3e 77 69 64 74 68  25 20 8c 20 77 69 64 74  |%)>width% . widt|
00018c60  68 25 3d a9 20 69 74 65  6d 24 28 69 74 65 6d 25  |h%=. item$(item%|
00018c70  29 3a f4 20 57 69 64 74  68 20 73 65 74 20 66 72  |):. Width set fr|
00018c80  6f 6d 20 6c 6f 6e 67 65  73 74 20 69 74 65 6d 2e  |om longest item.|
00018c90  0d 8a a2 05 ed 0d 8a ac  04 0d 8a b6 1d 61 64 64  |.............add|
00018ca0  72 65 73 73 25 21 31 36  3d 28 77 69 64 74 68 25  |ress%!16=(width%|
00018cb0  2b 31 29 2a 31 36 0d 8a  c0 05 e1 0d 8a ca 04 0d  |+1)*16..........|
00018cc0  8a d4 04 0d 8a de 21 dd  20 f2 73 68 6f 77 5f 6d  |......!. .show_m|
00018cd0  65 6e 75 28 6d 62 6c 6f  63 6b 25 2c 78 25 2c 6e  |enu(mblock%,x%,n|
00018ce0  75 6d 25 29 0d 8a e8 34  f4 20 46 6f 72 20 73 68  |um%)...4. For sh|
00018cf0  6f 77 69 6e 67 20 61 20  73 74 61 6e 64 61 72 64  |owing a standard|
00018d00  20 6d 65 6e 75 20 66 72  6f 6d 20 74 68 65 20 69  | menu from the i|
00018d10  63 6f 6e 20 62 61 72 2e  0d 8a f2 08 ea 20 79 25  |con bar...... y%|
00018d20  0d 8a fc 1a 78 25 20 2d  3d 36 34 3a 79 25 3d 31  |....x% -=64:y%=1|
00018d30  34 30 2b 34 34 2a 6e 75  6d 25 0d 8b 06 26 c8 99  |40+44*num%...&..|
00018d40  22 57 69 6d 70 5f 43 72  65 61 74 65 4d 65 6e 75  |"Wimp_CreateMenu|
00018d50  22 2c 2c 6d 62 6c 6f 63  6b 25 2c 78 25 2c 79 25  |",,mblock%,x%,y%|
00018d60  0d 8b 10 05 e1 0d 8b 1a  04 0d 8b 24 04 0d 8b 2e  |...........$....|
00018d70  23 dd 20 f2 61 6c 74 65  72 5f 74 69 63 6b 28 6d  |#. .alter_tick(m|
00018d80  65 6e 75 25 2c 69 74 65  6d 25 2c 6e 75 6d 25 29  |enu%,item%,num%)|
00018d90  0d 8b 38 41 f4 20 53 65  74 73 20 74 69 63 6b 20  |..8A. Sets tick |
00018da0  62 69 74 20 66 6f 72 20  69 74 65 6d 20 70 6f 73  |bit for item pos|
00018db0  69 74 69 6f 6e 20 69 74  65 6d 25 20 75 6e 73 65  |ition item% unse|
00018dc0  74 73 20 69 74 20 66 6f  72 20 6f 74 68 65 72 73  |ts it for others|
00018dd0  2e 0d 8b 42 0d ea 20 61  64 64 25 2c 6e 25 0d 8b  |...B.. add%,n%..|
00018de0  4c 11 e3 20 6e 25 3d 30  20 b8 20 6e 75 6d 25 0d  |L.. n%=0 . num%.|
00018df0  8b 56 18 20 61 64 64 25  3d 6d 65 6e 75 25 2b 32  |.V. add%=menu%+2|
00018e00  38 2b 32 34 2a 6e 25 0d  8b 60 39 20 e7 20 6e 25  |8+24*n%..`9 . n%|
00018e10  3d 69 74 65 6d 25 20 8c  20 3f 61 64 64 25 3d 28  |=item% . ?add%=(|
00018e20  3f 61 64 64 25 20 84 20  31 29 20 8b 20 3f 61 64  |?add% . 1) . ?ad|
00018e30  64 25 3d 28 3f 61 64 64  25 20 80 20 32 35 34 29  |d%=(?add% . 254)|
00018e40  0d 8b 6a 05 ed 0d 8b 74  05 e1 0d 8b 7e 04 0d 8b  |..j....t....~...|
00018e50  88 04 0d 8b 92 24 dd 20  f2 73 69 6e 67 6c 65 5f  |.....$. .single_|
00018e60  74 69 63 6b 28 6d 65 6e  75 25 2c 69 74 65 6d 25  |tick(menu%,item%|
00018e70  2c 73 65 74 25 29 0d 8b  9c 0a ea 20 61 64 64 25  |,set%)..... add%|
00018e80  0d 8b a6 1a 61 64 64 25  3d 6d 65 6e 75 25 2b 32  |....add%=menu%+2|
00018e90  38 2b 32 34 2a 69 74 65  6d 25 0d 8b b0 34 e7 20  |8+24*item%...4. |
00018ea0  73 65 74 25 20 8c 20 3f  61 64 64 25 3d 28 3f 61  |set% . ?add%=(?a|
00018eb0  64 64 25 20 84 20 31 29  20 8b 20 3f 61 64 64 25  |dd% . 1) . ?add%|
00018ec0  3d 28 3f 61 64 64 25 20  80 20 32 35 34 29 0d 8b  |=(?add% . 254)..|
00018ed0  ba 05 e1 0d 8b c4 04 0d  8b ce 04 0d 8b d8 23 dd  |..............#.|
00018ee0  20 f2 73 68 61 64 65 5f  69 74 65 6d 28 6d 65 6e  | .shade_item(men|
00018ef0  75 25 2c 69 74 65 6d 25  2c 73 65 74 25 29 0d 8b  |u%,item%,set%)..|
00018f00  e2 0a ea 20 70 74 72 25  0d 8b ec 1a 70 74 72 25  |... ptr%....ptr%|
00018f10  3d 6d 65 6e 75 25 2b 32  38 2b 32 34 2a 69 74 65  |=menu%+28+24*ite|
00018f20  6d 25 0d 8b f6 44 e7 20  73 65 74 25 20 8c 20 70  |m%...D. set% . p|
00018f30  74 72 25 21 38 3d 28 70  74 72 25 21 38 20 84 20  |tr%!8=(ptr%!8 . |
00018f40  26 34 30 30 30 30 30 29  20 8b 20 70 74 72 25 21  |&400000) . ptr%!|
00018f50  38 3d 28 70 74 72 25 21  38 20 80 20 26 46 46 42  |8=(ptr%!8 . &FFB|
00018f60  46 46 46 46 46 29 0d 8c  00 05 e1 0d 8c 0a 04 0d  |FFFFF)..........|
00018f70  8c 14 4e 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |..N*************|
00018f80  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00018fb0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 0d 8c 1e  |*************...|
00018fc0  04 0d 8c 28 17 f4 20 4d  6f 64 65 20 69 6e 64 65  |...(.. Mode inde|
00018fd0  70 65 6e 64 65 6e 63 65  0d 8c 32 04 0d 8c 3c 29  |pendence..2...<)|
00018fe0  dd 20 f2 70 61 6c 65 74  74 65 5f 62 6c 6f 63 6b  |. .palette_block|
00018ff0  28 73 70 72 69 74 65 24  2c 73 61 72 65 61 25 2c  |(sprite$,sarea%,|
00019000  70 61 6c 25 29 0d 8c 46  55 f4 20 54 61 6b 65 73  |pal%)..FU. Takes|
00019010  20 73 70 72 69 74 65 20  70 61 6c 65 74 74 65 20  | sprite palette |
00019020  61 6e 64 20 70 75 74 73  20 69 74 20 69 6e 74 6f  |and puts it into|
00019030  20 61 20 62 6c 6f 63 6b  20 66 6f 72 20 6d 61 6b  | a block for mak|
00019040  69 6e 67 20 74 68 65 20  74 72 61 6e 73 63 6f 6c  |ing the transcol|
00019050  6f 75 72 20 74 61 62 6c  65 2e 0d 8c 50 16 ea 20  |our table...P.. |
00019060  70 74 72 25 2c 63 25 2c  61 64 64 72 65 73 73 25  |ptr%,c%,address%|
00019070  0d 8c 5a 34 c8 99 22 4f  53 5f 53 70 72 69 74 65  |..Z4.."OS_Sprite|
00019080  4f 70 22 2c 26 31 31 38  2c 73 61 72 65 61 25 2c  |Op",&118,sarea%,|
00019090  73 70 72 69 74 65 24 20  b8 20 2c 2c 61 64 64 72  |sprite$ . ,,addr|
000190a0  65 73 73 25 0d 8c 64 14  70 74 72 25 3d 61 64 64  |ess%..d.ptr%=add|
000190b0  72 65 73 73 25 2b 34 34  0d 8c 6e 0f e3 20 63 25  |ress%+44..n.. c%|
000190c0  3d 30 20 b8 20 31 35 0d  8c 78 16 20 70 61 6c 25  |=0 . 15..x. pal%|
000190d0  21 28 63 25 2a 34 29 3d  21 70 74 72 25 0d 8c 82  |!(c%*4)=!ptr%...|
000190e0  10 20 70 74 72 25 3d 70  74 72 25 2b 38 0d 8c 8c  |. ptr%=ptr%+8...|
000190f0  05 ed 0d 8c 96 05 e1 0d  8c a0 04 0d 8c aa 04 0d  |................|
00019100  8c b4 28 dd 20 f2 73 6f  75 72 63 65 5f 6d 6f 64  |..(. .source_mod|
00019110  65 5f 66 61 63 74 6f 72  73 28 6d 6f 64 65 25 2c  |e_factors(mode%,|
00019120  73 63 61 6c 65 25 29 0d  8c be 3d f4 20 43 61 6c  |scale%)...=. Cal|
00019130  63 61 6c 61 74 65 20 74  68 65 20 73 63 61 6c 65  |calate the scale|
00019140  20 66 61 63 74 6f 72 73  20 66 6f 72 20 74 68 65  | factors for the|
00019150  20 73 70 72 69 74 65 73  20 73 6f 75 72 63 65 20  | sprites source |
00019160  6d 6f 64 65 0d 8c c8 2d  c8 99 22 4f 53 5f 52 65  |mode...-.."OS_Re|
00019170  61 64 4d 6f 64 65 56 61  72 69 61 62 6c 65 22 2c  |adModeVariable",|
00019180  6d 6f 64 65 25 2c 34 20  b8 20 2c 2c 78 65 69 67  |mode%,4 . ,,xeig|
00019190  25 0d 8c d2 2d c8 99 22  4f 53 5f 52 65 61 64 4d  |%...-.."OS_ReadM|
000191a0  6f 64 65 56 61 72 69 61  62 6c 65 22 2c 6d 6f 64  |odeVariable",mod|
000191b0  65 25 2c 35 20 b8 20 2c  2c 79 65 69 67 25 0d 8c  |e%,5 . ,,yeig%..|
000191c0  dc 27 73 63 61 6c 65 25  21 30 3d 31 3c 3c 78 65  |.'scale%!0=1<<xe|
000191d0  69 67 25 3a 73 63 61 6c  65 25 21 34 3d 31 3c 3c  |ig%:scale%!4=1<<|
000191e0  79 65 69 67 25 0d 8c e6  05 e1 0d 8c f0 04 0d 8c  |yeig%...........|
000191f0  fa 04 0d 8d 04 23 dd 20  f2 63 75 72 72 65 6e 74  |.....#. .current|
00019200  5f 6d 6f 64 65 5f 66 61  63 74 6f 72 73 28 73 63  |_mode_factors(sc|
00019210  61 6c 65 25 29 0d 8d 0e  34 f4 20 50 72 6f 64 75  |ale%)...4. Produ|
00019220  63 65 20 74 68 65 20 73  63 61 6c 65 20 66 61 63  |ce the scale fac|
00019230  74 6f 72 73 20 66 6f 72  20 74 68 65 20 63 75 72  |tors for the cur|
00019240  72 65 6e 74 20 6d 6f 64  65 0d 8d 18 2a c8 99 22  |rent mode...*.."|
00019250  4f 53 5f 52 65 61 64 4d  6f 64 65 56 61 72 69 61  |OS_ReadModeVaria|
00019260  62 6c 65 22 2c 2d 31 2c  34 20 b8 20 2c 2c 78 65  |ble",-1,4 . ,,xe|
00019270  69 67 25 0d 8d 22 2a c8  99 22 4f 53 5f 52 65 61  |ig%.."*.."OS_Rea|
00019280  64 4d 6f 64 65 56 61 72  69 61 62 6c 65 22 2c 2d  |dModeVariable",-|
00019290  31 2c 35 20 b8 20 2c 2c  79 65 69 67 25 0d 8d 2c  |1,5 . ,,yeig%..,|
000192a0  28 73 63 61 6c 65 25 21  38 3d 31 3c 3c 78 65 69  |(scale%!8=1<<xei|
000192b0  67 25 3a 73 63 61 6c 65  25 21 31 32 3d 31 3c 3c  |g%:scale%!12=1<<|
000192c0  79 65 69 67 25 0d 8d 36  05 e1 0d 8d 40 04 0d 8d  |yeig%..6....@...|
000192d0  4a 04 0d 8d 54 2a dd 20  f2 6f 73 5f 74 6f 5f 70  |J...T*. .os_to_p|
000192e0  69 78 65 6c 73 28 77 4f  53 25 2c 68 4f 53 25 2c  |ixels(wOS%,hOS%,|
000192f0  f8 20 77 50 25 2c f8 20  68 50 25 29 0d 8d 5e 2a  |. wP%,. hP%)..^*|
00019300  f4 20 43 6f 6e 76 65 72  74 73 20 6f 73 20 75 6e  |. Converts os un|
00019310  69 74 73 20 74 6f 20 70  69 78 65 6c 73 20 66 6f  |its to pixels fo|
00019320  72 20 6d 6f 64 65 0d 8d  68 2a c8 99 22 4f 53 5f  |r mode..h*.."OS_|
00019330  52 65 61 64 4d 6f 64 65  56 61 72 69 61 62 6c 65  |ReadModeVariable|
00019340  22 2c 2d 31 2c 34 20 b8  20 2c 2c 78 65 69 67 25  |",-1,4 . ,,xeig%|
00019350  0d 8d 72 2a c8 99 22 4f  53 5f 52 65 61 64 4d 6f  |..r*.."OS_ReadMo|
00019360  64 65 56 61 72 69 61 62  6c 65 22 2c 2d 31 2c 35  |deVariable",-1,5|
00019370  20 b8 20 2c 2c 79 65 69  67 25 0d 8d 7c 25 77 50  | . ,,yeig%..|%wP|
00019380  25 3d 77 4f 53 25 2f 32  5e 78 65 69 67 25 3a 68  |%=wOS%/2^xeig%:h|
00019390  50 25 3d 68 4f 53 25 2f  32 5e 79 65 69 67 25 0d  |P%=hOS%/2^yeig%.|
000193a0  8d 86 05 e1 0d 8d 90 04  0d 8d 9a 04 0d 8d a4 30  |...............0|
000193b0  dd 20 f2 74 72 61 6e 73  74 61 62 6c 65 28 6d 6f  |. .transtable(mo|
000193c0  64 65 25 2c 53 70 61 6c  25 2c 44 70 61 6c 25 2c  |de%,Spal%,Dpal%,|
000193d0  74 72 61 6e 73 74 61 62  6c 65 25 29 0d 8d ae 3b  |transtable%)...;|
000193e0  f4 20 50 72 6f 64 75 63  65 20 63 6f 6c 6f 75 72  |. Produce colour|
000193f0  20 74 72 61 6e 73 6c 61  74 69 6f 6e 20 74 61 62  | translation tab|
00019400  6c 65 20 66 6f 72 20 74  68 65 20 63 75 72 72 65  |le for the curre|
00019410  6e 74 20 6d 6f 64 65 0d  8d b8 40 c8 99 22 43 6f  |nt mode...@.."Co|
00019420  6c 6f 75 72 54 72 61 6e  73 5f 53 65 6c 65 63 74  |lourTrans_Select|
00019430  54 61 62 6c 65 22 2c 6d  6f 64 65 25 2c 53 70 61  |Table",mode%,Spa|
00019440  6c 25 2c 2d 31 2c 44 70  61 6c 25 2c 74 72 61 6e  |l%,-1,Dpal%,tran|
00019450  73 74 61 62 6c 65 25 0d  8d c2 05 e1 0d 8d cc 04  |stable%.........|
00019460  0d 8d d6 04 0d 8d e0 1a  dd 20 f2 73 65 74 5f 47  |......... .set_G|
00019470  43 4f 4c 28 63 6f 6c 25  2c 70 61 6c 25 29 0d 8d  |COL(col%,pal%)..|
00019480  ea 0b ea 20 62 61 63 6b  25 0d 8d f4 30 e7 20 63  |... back%...0. c|
00019490  6f 6c 25 3e 3d 31 32 38  20 8c 20 63 6f 6c 25 20  |ol%>=128 . col% |
000194a0  2d 3d 31 32 38 3a 62 61  63 6b 25 3d 31 32 38 20  |-=128:back%=128 |
000194b0  8b 20 62 61 63 6b 25 3d  30 0d 8d fe 31 c8 99 22  |. back%=0...1.."|
000194c0  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 53 65 74 47  |ColourTrans_SetG|
000194d0  43 4f 4c 22 2c 70 61 6c  25 21 28 34 2a 63 6f 6c  |COL",pal%!(4*col|
000194e0  25 29 2c 62 61 63 6b 25  2c 30 0d 8e 08 05 e1 0d  |%),back%,0......|
000194f0  8e 12 04 0d 8e 1c 04 0d  8e 26 23 dd 20 f2 70 61  |.........&#. .pa|
00019500  6c 66 69 6c 65 5f 74 6f  5f 62 6c 6f 63 6b 28 66  |lfile_to_block(f|
00019510  69 6c 65 24 2c 70 61 6c  25 29 0d 8e 30 10 ea 20  |ile$,pal%)..0.. |
00019520  78 25 2c 63 6f 6c 25 2c  4e 25 0d 8e 3a 0e 78 25  |x%,col%,N%..:.x%|
00019530  3d 8e 20 66 69 6c 65 24  0d 8e 44 11 e3 20 63 6f  |=. file$..D.. co|
00019540  6c 25 3d 30 20 b8 20 31  35 0d 8e 4e 0f 20 e3 20  |l%=0 . 15..N. . |
00019550  4e 25 3d 30 20 b8 20 32  0d 8e 58 16 20 20 cf 23  |N%=0 . 2..X.  .#|
00019560  78 25 3d 36 2a 63 6f 6c  25 2b 33 2b 4e 25 0d 8e  |x%=6*col%+3+N%..|
00019570  62 1d 20 20 70 61 6c 25  3f 28 34 2a 63 6f 6c 25  |b.  pal%?(4*col%|
00019580  2b 4e 25 2b 31 29 3d 9a  23 78 25 0d 8e 6c 06 20  |+N%+1)=.#x%..l. |
00019590  ed 0d 8e 76 05 ed 0d 8e  80 08 d9 23 78 25 0d 8e  |...v.......#x%..|
000195a0  8a 05 e1 0d 8e 94 04 0d  8e 9e 04 0d 8e a8 17 dd  |................|
000195b0  a4 6e 75 6d 62 65 72 5f  6f 66 5f 63 6f 6c 6f 75  |.number_of_colou|
000195c0  72 73 0d 8e b2 28 f4 20  47 69 76 65 73 20 6e 75  |rs...(. Gives nu|
000195d0  6d 62 65 72 20 6f 66 20  63 6f 6c 6f 75 72 73 20  |mber of colours |
000195e0  69 6e 20 61 20 6d 6f 64  65 2e 0d 8e bc 0d ea 20  |in a mode...... |
000195f0  6e 75 6d 63 6f 6c 25 0d  8e c6 2c c8 99 22 4f 53  |numcol%...,.."OS|
00019600  5f 52 65 61 64 4d 6f 64  65 56 61 72 69 61 62 6c  |_ReadModeVariabl|
00019610  65 22 2c 2d 31 2c 33 20  b8 20 2c 2c 6e 75 6d 63  |e",-1,3 . ,,numc|
00019620  6f 6c 25 0d 8e d0 0e 3d  6e 75 6d 63 6f 6c 25 2b  |ol%....=numcol%+|
00019630  31 0d 8e da 04 0d 8e e4  04 0d 8e ee 20 dd f2 73  |1........... ..s|
00019640  63 61 6c 65 5f 74 65 78  74 28 73 78 25 2c 73 79  |cale_text(sx%,sy|
00019650  25 2c 73 63 61 6c 65 25  29 0d 8e f8 22 f4 20 4b  |%,scale%)...". K|
00019660  65 65 70 73 20 74 65 78  74 20 6d 6f 64 65 20 69  |eeps text mode i|
00019670  6e 64 65 70 65 6e 64 65  6e 74 2e 0d 8f 02 0d ea  |ndependent......|
00019680  20 78 73 63 2c 79 73 63  0d 8f 0c 25 78 73 63 3d  | xsc,ysc...%xsc=|
00019690  73 63 61 6c 65 25 21 30  2f 73 63 61 6c 65 25 21  |scale%!0/scale%!|
000196a0  38 3a 73 78 25 3d 73 78  25 2a 78 73 63 0d 8f 16  |8:sx%=sx%*xsc...|
000196b0  26 79 73 63 3d 73 63 61  6c 65 25 21 34 2f 73 63  |&ysc=scale%!4/sc|
000196c0  61 6c 65 25 21 31 32 3a  73 79 25 3d 73 79 25 2a  |ale%!12:sy%=sy%*|
000196d0  79 73 63 0d 8f 20 19 ef  32 33 2c 31 37 2c 37 2c  |ysc.. ..23,17,7,|
000196e0  36 2c 73 78 25 3b 73 79  25 3b 30 3b 0d 8f 2a 05  |6,sx%;sy%;0;..*.|
000196f0  e1 0d 8f 34 04 0d 8f 3e  04 0d 8f 48 4e 2a 2a 2a  |...4...>...HN***|
00019700  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00019740  2a 2a 2a 2a 2a 2a 2a 0d  8f 52 04 0d 8f 5c 14 f4  |*******..R...\..|
00019750  20 45 72 72 6f 72 20 72  6f 75 74 69 6e 65 73 0d  | Error routines.|
00019760  8f 66 04 0d 8f 70 12 dd  f2 65 72 72 6f 72 28 74  |.f...p...error(t|
00019770  61 73 6b 24 29 0d 8f 7a  33 f4 20 44 69 73 70 6c  |ask$)..z3. Displ|
00019780  61 79 73 20 65 72 72 6f  72 20 6d 65 73 73 61 67  |ays error messag|
00019790  65 20 66 72 6f 6d 20 6f  70 65 72 61 74 69 6e 67  |e from operating|
000197a0  20 73 79 73 74 65 6d 2e  0d 8f 84 0f 21 62 6c 6f  | system.....!blo|
000197b0  63 6b 25 3d 32 35 35 0d  8f 8e 10 61 24 3d f6 24  |ck%=255....a$=.$|
000197c0  2b 22 20 22 2b c3 9e 0d  8f 98 15 24 28 62 6c 6f  |+" "+......$(blo|
000197d0  63 6b 25 2b 34 29 3d 61  24 2b bd 30 0d 8f a2 27  |ck%+4)=a$+.0...'|
000197e0  c8 99 22 57 69 6d 70 5f  52 65 70 6f 72 74 45 72  |.."Wimp_ReportEr|
000197f0  72 6f 72 22 2c 62 6c 6f  63 6b 25 2c 31 2c 74 61  |ror",block%,1,ta|
00019800  73 6b 24 0d 8f ac 05 e1  0d 8f b6 04 0d 8f c0 04  |sk$.............|
00019810  0d 8f ca 2b dd 20 a4 65  72 72 6f 72 5f 6d 65 73  |...+. .error_mes|
00019820  73 61 67 65 28 6d 65 73  73 61 67 65 24 2c 74 61  |sage(message$,ta|
00019830  73 6b 24 2c 66 6c 61 67  73 25 29 0d 8f d4 25 f4  |sk$,flags%)...%.|
00019840  20 44 69 73 70 6c 61 79  73 20 70 65 72 73 6f 6e  | Displays person|
00019850  61 6c 20 65 72 72 6f 72  20 6d 65 73 73 61 67 65  |al error message|
00019860  0d 8f de 27 21 62 6c 6f  63 6b 25 3d 32 35 35 3a  |...'!block%=255:|
00019870  24 28 62 6c 6f 63 6b 25  2b 34 29 3d 6d 65 73 73  |$(block%+4)=mess|
00019880  61 67 65 24 2b bd 30 0d  8f e8 39 c8 99 22 57 69  |age$+.0...9.."Wi|
00019890  6d 70 5f 52 65 70 6f 72  74 45 72 72 6f 72 22 2c  |mp_ReportError",|
000198a0  62 6c 6f 63 6b 25 2c 66  6c 61 67 73 25 2c 74 61  |block%,flags%,ta|
000198b0  73 6b 24 20 b8 20 2c 72  65 73 70 6f 6e 73 65 25  |sk$ . ,response%|
000198c0  0d 8f f2 0e 3d 72 65 73  70 6f 6e 73 65 25 0d 8f  |....=response%..|
000198d0  fc 04 0d 90 06 04 0d 90  10 10 dd f2 74 65 73 74  |............test|
000198e0  28 76 61 72 24 29 0d 90  1a 36 f4 20 44 69 73 70  |(var$)...6. Disp|
000198f0  6c 61 79 73 20 76 61 6c  75 65 20 6f 66 20 73 74  |lays value of st|
00019900  72 69 6e 67 20 76 61 72  69 61 62 6c 65 2e 44 65  |ring variable.De|
00019910  62 75 67 67 69 6e 67 20  61 69 64 2e 0d 90 24 0f  |bugging aid...$.|
00019920  21 62 6c 6f 63 6b 25 3d  32 35 35 0d 90 2e 17 24  |!block%=255....$|
00019930  28 62 6c 6f 63 6b 25 2b  34 29 3d 76 61 72 24 2b  |(block%+4)=var$+|
00019940  bd 30 0d 90 38 2e c8 99  22 57 69 6d 70 5f 52 65  |.0..8..."Wimp_Re|
00019950  70 6f 72 74 45 72 72 6f  72 22 2c 62 6c 6f 63 6b  |portError",block|
00019960  25 2c 31 2c 22 70 72 69  6e 74 5f 74 65 78 74 22  |%,1,"print_text"|
00019970  0d 90 42 05 e1 0d 90 4c  04 0d 90 56 04 0d 90 60  |..B....L...V...`|
00019980  15 dd 20 a4 65 6e 73 75  72 65 5f 50 64 72 69 76  |.. .ensure_Pdriv|
00019990  65 72 0d 90 6a 2a f4 20  43 68 65 63 6b 73 20 74  |er..j*. Checks t|
000199a0  68 61 74 20 70 72 69 6e  74 65 72 20 64 72 69 76  |hat printer driv|
000199b0  65 72 20 69 73 20 6c 6f  61 64 65 64 0d 90 74 1c  |er is loaded..t.|
000199c0  ea 20 50 25 2c 70 72 69  6e 74 65 72 25 3a 70 72  |. P%,printer%:pr|
000199d0  69 6e 74 65 72 25 3d 30  0d 90 7e 07 ea 20 85 0d  |inter%=0..~.. ..|
000199e0  90 88 1c ee 20 85 20 ea  3a f7 20 85 3a d9 23 50  |.... . .:. .:.#P|
000199f0  25 3a 3d 70 72 69 6e 74  65 72 25 0d 90 92 14 50  |%:=printer%....P|
00019a00  25 3d ae 28 22 70 72 69  6e 74 65 72 3a 22 29 0d  |%=.("printer:").|
00019a10  90 9c 28 c8 99 22 50 44  72 69 76 65 72 5f 53 65  |..(.."PDriver_Se|
00019a20  6c 65 63 74 4a 6f 62 22  2c 50 25 2c 22 70 72 69  |lectJob",P%,"pri|
00019a30  6e 74 5f 6a 6f 62 22 0d  90 a6 1b c8 99 22 50 44  |nt_job"......"PD|
00019a40  72 69 76 65 72 5f 41 62  6f 72 74 4a 6f 62 22 2c  |river_AbortJob",|
00019a50  50 25 0d 90 b0 0f 70 72  69 6e 74 65 72 25 3d 2d  |P%....printer%=-|
00019a60  31 0d 90 ba 08 d9 23 50  25 0d 90 c4 07 f7 20 85  |1.....#P%..... .|
00019a70  0d 90 ce 0d 3d 70 72 69  6e 74 65 72 25 0d 90 d8  |....=printer%...|
00019a80  04 0d 90 e2 4e 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |....N***********|
00019a90  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00019ac0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 0d  |***************.|
00019ad0  90 ec 04 0d 90 f6 13 44  72 61 67 20 6f 70 65 72  |.......Drag oper|
00019ae0  61 74 69 6f 6e 73 0d 91  00 04 0d 91 0a 2b dd 20  |ations.......+. |
00019af0  f2 64 72 61 67 5f 62 6f  78 28 74 79 70 65 25 2c  |.drag_box(type%,|
00019b00  78 25 2c 79 25 2c 77 69  64 74 68 25 2c 68 65 69  |x%,y%,width%,hei|
00019b10  67 68 74 25 29 0d 91 14  12 62 6c 6f 63 6b 25 21  |ght%)....block%!|
00019b20  34 3d 74 79 70 65 25 0d  91 1e 45 62 6c 6f 63 6b  |4=type%...Eblock|
00019b30  25 21 38 3d 78 25 3a 62  6c 6f 63 6b 25 21 31 32  |%!8=x%:block%!12|
00019b40  3d 79 25 3a 62 6c 6f 63  6b 25 21 31 36 3d 78 25  |=y%:block%!16=x%|
00019b50  2b 77 69 64 74 68 25 3a  62 6c 6f 63 6b 25 21 32  |+width%:block%!2|
00019b60  30 3d 79 25 2b 68 65 69  67 68 74 25 0d 91 28 39  |0=y%+height%..(9|
00019b70  62 6c 6f 63 6b 25 21 32  34 3d 30 3a 62 6c 6f 63  |block%!24=0:bloc|
00019b80  6b 25 21 32 38 3d 30 3a  62 6c 6f 63 6b 25 21 33  |k%!28=0:block%!3|
00019b90  32 3d 31 32 38 30 3a 62  6c 6f 63 6b 25 21 33 36  |2=1280:block%!36|
00019ba0  3d 31 30 32 34 0d 91 32  1c c8 99 22 57 69 6d 70  |=1024..2..."Wimp|
00019bb0  5f 44 72 61 67 42 6f 78  22 2c 2c 62 6c 6f 63 6b  |_DragBox",,block|
00019bc0  25 0d 91 3c 05 e1 0d 91  46 04 0d 91 50 4e 2a 2a  |%..<....F...PN**|
00019bd0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00019c10  2a 2a 2a 2a 2a 2a 2a 2a  0d 91 5a 04 0d 91 64 0b  |********..Z...d.|
00019c20  f4 20 46 6f 6e 74 73 0d  91 6e 04 0d 91 78 1a dd  |. Fonts..n...x..|
00019c30  20 f2 6c 6f 73 65 5f 69  63 6f 6e 5f 66 6f 6e 74  | .lose_icon_font|
00019c40  73 28 66 25 29 0d 91 82  0b ea 20 6e 25 2c 6d 25  |s(f%)..... n%,m%|
00019c50  0d 91 8c 10 e3 20 6e 25  3d 31 20 b8 20 32 35 35  |..... n%=1 . 255|
00019c60  0d 91 96 13 20 e7 20 3f  28 66 25 2b 6e 25 29 3e  |.... . ?(f%+n%)>|
00019c70  30 20 8c 0d 91 a0 13 20  20 6e 75 6d 25 3d 3f 28  |0 .....  num%=?(|
00019c80  66 25 2b 6e 25 29 0d 91  aa 13 20 20 e3 20 6d 25  |f%+n%)....  . m%|
00019c90  3d 31 20 b8 20 6e 75 6d  25 0d 91 b4 1b 20 20 20  |=1 . num%....   |
00019ca0  c8 99 22 46 6f 6e 74 5f  4c 6f 73 65 46 6f 6e 74  |.."Font_LoseFont|
00019cb0  22 2c 6e 25 0d 91 be 07  20 20 ed 0d 91 c8 06 20  |",n%....  ..... |
00019cc0  cd 0d 91 d2 05 ed 0d 91  dc 05 e1 0d 91 e6 04 0d  |................|
00019cd0  91 f0 4e 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |..N*************|
00019ce0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00019d10  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 0d 91 fa  |*************...|
00019d20  04 0d 92 04 18 f4 20 4c  6f 61 64 69 6e 67 20 61  |...... Loading a|
00019d30  6e 64 20 73 61 76 69 6e  67 0d 92 0e 04 0d 92 18  |nd saving.......|
00019d40  29 dd 20 f2 64 72 61 67  5f 69 63 6f 6e 28 77 68  |). .drag_icon(wh|
00019d50  61 6e 64 6c 65 25 2c 69  68 61 6e 64 6c 65 25 2c  |andle%,ihandle%,|
00019d60  74 79 70 65 25 29 0d 92  22 13 ea 20 77 25 2c 68  |type%)..".. w%,h|
00019d70  25 2c 6f 78 25 2c 6f 79  25 0d 92 2c 27 f2 77 6f  |%,ox%,oy%..,'.wo|
00019d80  72 6b 5f 61 72 65 61 5f  6f 72 69 67 69 6e 28 77  |rk_area_origin(w|
00019d90  68 61 6e 64 6c 65 25 2c  6f 78 25 2c 6f 79 25 29  |handle%,ox%,oy%)|
00019da0  0d 92 36 26 21 62 6c 6f  63 6b 25 3d 77 68 61 6e  |..6&!block%=whan|
00019db0  64 6c 65 25 3a 62 6c 6f  63 6b 25 21 34 3d 69 68  |dle%:block%!4=ih|
00019dc0  61 6e 64 6c 65 25 0d 92  40 21 c8 99 22 57 69 6d  |andle%..@!.."Wim|
00019dd0  70 5f 47 65 74 49 63 6f  6e 53 74 61 74 65 22 2c  |p_GetIconState",|
00019de0  2c 62 6c 6f 63 6b 25 0d  92 4a 31 62 6c 6f 63 6b  |,block%..J1block|
00019df0  25 21 38 3d 6f 78 25 2b  62 6c 6f 63 6b 25 21 38  |%!8=ox%+block%!8|
00019e00  3a 62 6c 6f 63 6b 25 21  31 32 3d 6f 79 25 2b 62  |:block%!12=oy%+b|
00019e10  6c 6f 63 6b 25 21 31 32  0d 92 54 33 62 6c 6f 63  |lock%!12..T3bloc|
00019e20  6b 25 21 31 36 3d 6f 78  25 2b 62 6c 6f 63 6b 25  |k%!16=ox%+block%|
00019e30  21 31 36 3a 62 6c 6f 63  6b 25 21 32 30 3d 6f 79  |!16:block%!20=oy|
00019e40  25 2b 62 6c 6f 63 6b 25  21 32 30 0d 92 5e 30 77  |%+block%!20..^0w|
00019e50  25 3d 62 6c 6f 63 6b 25  21 31 36 2d 62 6c 6f 63  |%=block%!16-bloc|
00019e60  6b 25 21 38 3a 68 25 3d  62 6c 6f 63 6b 25 21 32  |k%!8:h%=block%!2|
00019e70  30 2d 62 6c 6f 63 6b 25  21 31 32 0d 92 68 2d f2  |0-block%!12..h-.|
00019e80  64 72 61 67 5f 62 6f 78  28 74 79 70 65 25 2c 62  |drag_box(type%,b|
00019e90  6c 6f 63 6b 25 21 38 2c  62 6c 6f 63 6b 25 21 31  |lock%!8,block%!1|
00019ea0  32 2c 77 25 2c 68 25 29  0d 92 72 05 e1 0d 92 7c  |2,w%,h%)..r....||
00019eb0  04 0d 92 86 04 0d 92 90  2a dd 20 f2 73 61 76 65  |........*. .save|
00019ec0  5f 72 65 71 75 65 73 74  28 74 79 70 65 25 2c 6e  |_request(type%,n|
00019ed0  61 6d 65 62 75 66 66 25  2c 73 69 7a 65 25 29 0d  |amebuff%,size%).|
00019ee0  92 9a 23 c8 99 22 57 69  6d 70 5f 47 65 74 50 6f  |..#.."Wimp_GetPo|
00019ef0  69 6e 74 65 72 49 6e 66  6f 22 2c 2c 62 6c 6f 63  |interInfo",,bloc|
00019f00  6b 25 0d 92 a4 2b 62 6c  6f 63 6b 25 21 32 30 3d  |k%...+block%!20=|
00019f10  62 6c 6f 63 6b 25 21 31  32 3a 62 6c 6f 63 6b 25  |block%!12:block%|
00019f20  21 32 34 3d 62 6c 6f 63  6b 25 21 31 36 0d 92 ae  |!24=block%!16...|
00019f30  29 62 6c 6f 63 6b 25 21  32 38 3d 21 62 6c 6f 63  |)block%!28=!bloc|
00019f40  6b 25 3a 62 6c 6f 63 6b  25 21 33 32 3d 62 6c 6f  |k%:block%!32=blo|
00019f50  63 6b 25 21 31 36 0d 92  b8 2a 62 6c 6f 63 6b 25  |ck%!16...*block%|
00019f60  21 33 36 3d 73 69 7a 65  25 3a 21 62 6c 6f 63 6b  |!36=size%:!block|
00019f70  25 3d 36 34 3a 62 6c 6f  63 6b 25 21 31 32 3d 30  |%=64:block%!12=0|
00019f80  0d 92 c2 1f 62 6c 6f 63  6b 25 21 31 36 3d 31 3a  |....block%!16=1:|
00019f90  62 6c 6f 63 6b 25 21 34  30 3d 74 79 70 65 25 0d  |block%!40=type%.|
00019fa0  92 cc 28 24 28 62 6c 6f  63 6b 25 2b 34 34 29 3d  |..($(block%+44)=|
00019fb0  a4 67 65 74 6c 65 61 66  28 24 6e 61 6d 65 62 75  |.getleaf($namebu|
00019fc0  66 66 25 2c 2d 31 29 0d  92 d6 36 c8 99 22 57 69  |ff%,-1)...6.."Wi|
00019fd0  6d 70 5f 53 65 6e 64 4d  65 73 73 61 67 65 22 2c  |mp_SendMessage",|
00019fe0  31 38 2c 62 6c 6f 63 6b  25 2c 62 6c 6f 63 6b 25  |18,block%,block%|
00019ff0  21 32 30 2c 62 6c 6f 63  6b 25 21 32 34 0d 92 e0  |!20,block%!24...|
0001a000  05 e1 0d 92 ea 04 0d 92  f4 04 0d 92 fe 18 dd 20  |............... |
0001a010  a4 67 65 74 6c 65 61 66  28 61 24 2c 7a 65 72 6f  |.getleaf(a$,zero|
0001a020  25 29 0d 93 08 0f c8 95  20 a7 61 24 2c 22 2e 22  |%)...... .a$,"."|
0001a030  29 0d 93 12 16 61 24 3d  c1 61 24 2c a7 61 24 2c  |)....a$=.a$,.a$,|
0001a040  22 2e 22 29 2b 31 29 0d  93 1c 05 ce 0d 93 26 16  |".")+1).......&.|
0001a050  e7 20 7a 65 72 6f 25 20  8c 20 61 24 3d 61 24 2b  |. zero% . a$=a$+|
0001a060  bd 30 0d 93 30 07 3d 61  24 0d 93 3a 04 0d 93 44  |.0..0.=a$..:...D|
0001a070  04 0d 93 4e 13 dd 20 a4  73 74 72 69 6e 67 28 70  |...N.. .string(p|
0001a080  74 72 25 29 0d 93 58 16  ea 20 6e 61 6d 65 25 3a  |tr%)..X.. name%:|
0001a090  6e 61 6d 65 25 3d 70 74  72 25 0d 93 62 0f c8 95  |name%=ptr%..b...|
0001a0a0  20 3f 70 74 72 25 3c 3e  30 0d 93 6c 0d 20 70 74  | ?ptr%<>0..l. pt|
0001a0b0  72 25 20 2b 3d 31 0d 93  76 05 ce 0d 93 80 0c 3f  |r% +=1..v......?|
0001a0c0  70 74 72 25 3d 31 33 0d  93 8a 0b 3d 24 6e 61 6d  |ptr%=13....=$nam|
0001a0d0  65 25 0d 93 94 04 0d 93  9e 4e 2a 2a 2a 2a 2a 2a  |e%.......N******|
0001a0e0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
0001a120  2a 2a 2a 2a 0d 93 a8 04  0d 93 b2 12 f4 20 4d 69  |****......... Mi|
0001a130  73 63 65 6c 61 6e 65 6f  75 73 0d 93 bc 04 0d 93  |scelaneous......|
0001a140  c6 13 dd 20 f2 70 61 75  73 65 28 74 69 6d 65 25  |... .pause(time%|
0001a150  29 0d 93 d0 0d 74 69 6d  65 25 20 2b 3d 91 0d 93  |)....time% +=...|
0001a160  da 0e c8 95 20 74 69 6d  65 25 3e 91 0d 93 e4 05  |.... time%>.....|
0001a170  ce 0d 93 ee 05 e1 0d ff                           |........|
0001a178